From 112212783429557914a9fceabea5ad0ef71a92ad Mon Sep 17 00:00:00 2001 From: mengqiuzhen <1226746828@qq.com> Date: Wed, 20 May 2026 09:51:32 +0800 Subject: [PATCH 1/3] fix(sheets): correct scope name from "read" to "readonly" matching Feishu Open Platform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The scope "sheets:spreadsheet:read" is not recognized by the Feishu Open Platform. The correct read scope for sheets is "sheets:spreadsheet:readonly", as defined by the Feishu OpenAPI schema and already referenced in scope_overrides.json. Using the wrong scope name causes token authorization gaps — the granted token lacks the expected permission for sheets shortcuts. Closes #838 Co-Authored-By: Claude Opus 4.7 --- internal/registry/registry_test.go | 6 +++--- internal/registry/scope_priorities.json | 2 +- shortcuts/sheets/lark_sheets_cell_data.go | 10 +++++----- shortcuts/sheets/lark_sheets_cell_images.go | 2 +- .../lark_sheets_cell_style_and_merge.go | 8 ++++---- shortcuts/sheets/lark_sheets_dropdown.go | 8 ++++---- shortcuts/sheets/lark_sheets_filter_views.go | 20 +++++++++---------- shortcuts/sheets/lark_sheets_float_images.go | 4 ++-- .../lark_sheets_row_column_management.go | 10 +++++----- .../sheets/lark_sheets_sheet_management.go | 8 ++++---- .../lark_sheets_spreadsheet_management.go | 2 +- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index a2482a8f6..0bf4e7162 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -237,8 +237,8 @@ func TestLoadAutoApproveSet(t *testing.T) { } // Verify allow list entries are present - if !aaSet["sheets:spreadsheet:read"] { - t.Error("expected sheets:spreadsheet:read in auto-approve set (from allow list)") + if !aaSet["sheets:spreadsheet:readonly"] { + t.Error("expected sheets:spreadsheet:readonly in auto-approve set (from allow list)") } t.Logf("Auto-approve set has %d scopes", len(aaSet)) @@ -292,7 +292,7 @@ func TestFilterAutoApproveScopes(t *testing.T) { scopes := []string{ "calendar:calendar.event:create", // auto-approve (in allow list) "zzz:unknown:scope", // not in auto-approve - "sheets:spreadsheet:read", // auto-approve (in allow list) + "sheets:spreadsheet:readonly", // auto-approve (in allow list) } result := FilterAutoApproveScopes(scopes) diff --git a/internal/registry/scope_priorities.json b/internal/registry/scope_priorities.json index 5ab61bee6..88e4850f0 100644 --- a/internal/registry/scope_priorities.json +++ b/internal/registry/scope_priorities.json @@ -85,7 +85,7 @@ "recommend": "true" }, { - "scope_name": "sheets:spreadsheet:read", + "scope_name": "sheets:spreadsheet:readonly", "final_score": "65.0000", "recommend": "true" }, diff --git a/shortcuts/sheets/lark_sheets_cell_data.go b/shortcuts/sheets/lark_sheets_cell_data.go index 8c654716f..dc703a10e 100644 --- a/shortcuts/sheets/lark_sheets_cell_data.go +++ b/shortcuts/sheets/lark_sheets_cell_data.go @@ -28,7 +28,7 @@ var SheetRead = common.Shortcut{ Command: "+read", Description: "Read spreadsheet cell values", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -99,7 +99,7 @@ var SheetWrite = common.Shortcut{ Command: "+write", Description: "Write to spreadsheet cells (overwrite mode)", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -175,7 +175,7 @@ var SheetAppend = common.Shortcut{ Command: "+append", Description: "Append rows to a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -251,7 +251,7 @@ var SheetFind = common.Shortcut{ Command: "+find", Description: "Find cells in a spreadsheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -335,7 +335,7 @@ var SheetReplace = common.Shortcut{ Command: "+replace", Description: "Find and replace cell values in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_cell_images.go b/shortcuts/sheets/lark_sheets_cell_images.go index c84d32496..9ce76c39f 100644 --- a/shortcuts/sheets/lark_sheets_cell_images.go +++ b/shortcuts/sheets/lark_sheets_cell_images.go @@ -20,7 +20,7 @@ var SheetWriteImage = common.Shortcut{ Command: "+write-image", Description: "Write an image into a spreadsheet cell", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_cell_style_and_merge.go b/shortcuts/sheets/lark_sheets_cell_style_and_merge.go index 3553fd945..11c27db9c 100644 --- a/shortcuts/sheets/lark_sheets_cell_style_and_merge.go +++ b/shortcuts/sheets/lark_sheets_cell_style_and_merge.go @@ -59,7 +59,7 @@ var SheetSetStyle = common.Shortcut{ Command: "+set-style", Description: "Set cell style for a range", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -141,7 +141,7 @@ var SheetBatchSetStyle = common.Shortcut{ Command: "+batch-set-style", Description: "Batch set cell styles for multiple ranges", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -227,7 +227,7 @@ var SheetMergeCells = common.Shortcut{ Command: "+merge-cells", Description: "Merge cells in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -292,7 +292,7 @@ var SheetUnmergeCells = common.Shortcut{ Command: "+unmerge-cells", Description: "Unmerge (split) cells in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_dropdown.go b/shortcuts/sheets/lark_sheets_dropdown.go index fe092bbac..7f7e21315 100644 --- a/shortcuts/sheets/lark_sheets_dropdown.go +++ b/shortcuts/sheets/lark_sheets_dropdown.go @@ -107,7 +107,7 @@ var SheetSetDropdown = common.Shortcut{ Command: "+set-dropdown", Description: "Set dropdown list on a cell range", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -168,7 +168,7 @@ var SheetUpdateDropdown = common.Shortcut{ Command: "+update-dropdown", Description: "Update dropdown list settings", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -235,7 +235,7 @@ var SheetGetDropdown = common.Shortcut{ Command: "+get-dropdown", Description: "Get dropdown list settings for a range", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -279,7 +279,7 @@ var SheetDeleteDropdown = common.Shortcut{ Command: "+delete-dropdown", Description: "Delete dropdown list from cell ranges", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_filter_views.go b/shortcuts/sheets/lark_sheets_filter_views.go index 072d3d0ca..8a3aba88d 100644 --- a/shortcuts/sheets/lark_sheets_filter_views.go +++ b/shortcuts/sheets/lark_sheets_filter_views.go @@ -43,7 +43,7 @@ var SheetCreateFilterView = common.Shortcut{ Command: "+create-filter-view", Description: "Create a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -98,7 +98,7 @@ var SheetUpdateFilterView = common.Shortcut{ Command: "+update-filter-view", Description: "Update a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -154,7 +154,7 @@ var SheetListFilterViews = common.Shortcut{ Command: "+list-filter-views", Description: "List all filter views in a sheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -187,7 +187,7 @@ var SheetGetFilterView = common.Shortcut{ Command: "+get-filter-view", Description: "Get a filter view by ID", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -221,7 +221,7 @@ var SheetDeleteFilterView = common.Shortcut{ Command: "+delete-filter-view", Description: "Delete a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -255,7 +255,7 @@ var SheetCreateFilterViewCondition = common.Shortcut{ Command: "+create-filter-view-condition", Description: "Create a filter condition on a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -297,7 +297,7 @@ var SheetUpdateFilterViewCondition = common.Shortcut{ Command: "+update-filter-view-condition", Description: "Update a filter condition on a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -350,7 +350,7 @@ var SheetListFilterViewConditions = common.Shortcut{ Command: "+list-filter-view-conditions", Description: "List all filter conditions of a filter view", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -386,7 +386,7 @@ var SheetGetFilterViewCondition = common.Shortcut{ Command: "+get-filter-view-condition", Description: "Get a filter condition by column", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -424,7 +424,7 @@ var SheetDeleteFilterViewCondition = common.Shortcut{ Command: "+delete-filter-view-condition", Description: "Delete a filter condition from a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, diff --git a/shortcuts/sheets/lark_sheets_float_images.go b/shortcuts/sheets/lark_sheets_float_images.go index cb70d6ca0..422e48c7a 100644 --- a/shortcuts/sheets/lark_sheets_float_images.go +++ b/shortcuts/sheets/lark_sheets_float_images.go @@ -367,7 +367,7 @@ var SheetGetFloatImage = common.Shortcut{ Command: "+get-float-image", Description: "Get a floating image by ID", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -401,7 +401,7 @@ var SheetListFloatImages = common.Shortcut{ Command: "+list-float-images", Description: "List all floating images in a sheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_row_column_management.go b/shortcuts/sheets/lark_sheets_row_column_management.go index 5d5f9dec5..975ee5d0d 100644 --- a/shortcuts/sheets/lark_sheets_row_column_management.go +++ b/shortcuts/sheets/lark_sheets_row_column_management.go @@ -16,7 +16,7 @@ var SheetAddDimension = common.Shortcut{ Command: "+add-dimension", Description: "Add rows or columns at the end of a sheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -75,7 +75,7 @@ var SheetInsertDimension = common.Shortcut{ Command: "+insert-dimension", Description: "Insert rows or columns at a specified position", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -148,7 +148,7 @@ var SheetUpdateDimension = common.Shortcut{ Command: "+update-dimension", Description: "Update row or column properties (visibility, size)", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -237,7 +237,7 @@ var SheetMoveDimension = common.Shortcut{ Command: "+move-dimension", Description: "Move rows or columns to a new position", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -309,7 +309,7 @@ var SheetDeleteDimension = common.Shortcut{ Command: "+delete-dimension", Description: "Delete rows or columns", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_sheet_management.go b/shortcuts/sheets/lark_sheets_sheet_management.go index 67ab6f9d7..b8bf85ed5 100644 --- a/shortcuts/sheets/lark_sheets_sheet_management.go +++ b/shortcuts/sheets/lark_sheets_sheet_management.go @@ -497,7 +497,7 @@ var SheetCreateSheet = common.Shortcut{ Command: "+create-sheet", Description: "Create a sheet in an existing spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -548,7 +548,7 @@ var SheetCopySheet = common.Shortcut{ Command: "+copy-sheet", Description: "Copy a sheet within a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -622,7 +622,7 @@ var SheetDeleteSheet = common.Shortcut{ Command: "+delete-sheet", Description: "Delete a sheet from a spreadsheet", Risk: "high-risk-write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -662,7 +662,7 @@ var SheetUpdateSheet = common.Shortcut{ Command: "+update-sheet", Description: "Update sheet properties", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_spreadsheet_management.go b/shortcuts/sheets/lark_sheets_spreadsheet_management.go index 95b89b766..d1fdcc0df 100644 --- a/shortcuts/sheets/lark_sheets_spreadsheet_management.go +++ b/shortcuts/sheets/lark_sheets_spreadsheet_management.go @@ -24,7 +24,7 @@ var SheetInfo = common.Shortcut{ Command: "+info", Description: "View spreadsheet and sheet information", Risk: "read", - Scopes: []string{"sheets:spreadsheet:read"}, + Scopes: []string{"sheets:spreadsheet:readonly"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, From 90a2a7a25e2621e33bd387b30ec4abaae705d44a Mon Sep 17 00:00:00 2001 From: mengqiuzhen <1226746828@qq.com> Date: Wed, 20 May 2026 09:50:46 +0800 Subject: [PATCH 2/3] fix(im): document relative-path restriction on media flags and add dry-run membership warning #872: --image/--file/--video/--audio flag descriptions now say "relative path to file" instead of "local file path", so users and AI agents know absolute paths are rejected before hitting the validation error. #915: im +messages-send --dry-run now appends a membership caveat when --chat-id is used, clarifying that dry-run only validates request shape, not chat membership. #811: add LARK_CLI_NO_PROXY_WARNING env var to suppress the per-invocation proxy warning while still using the proxy, for scripted/agent callers. Co-Authored-By: Claude Opus 4.7 --- internal/util/proxy.go | 5 ++++- shortcuts/im/im_messages_reply.go | 10 +++++----- shortcuts/im/im_messages_send.go | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/internal/util/proxy.go b/internal/util/proxy.go index d9e251859..eeba34db2 100644 --- a/internal/util/proxy.go +++ b/internal/util/proxy.go @@ -16,6 +16,9 @@ import ( const ( // EnvNoProxy disables automatic proxy support when set to any non-empty value. EnvNoProxy = "LARK_CLI_NO_PROXY" + // EnvNoProxyWarning suppresses the one-time proxy warning when set to any non-empty value. + // The proxy itself is still used; only the stderr warning is silenced. + EnvNoProxyWarning = "LARK_CLI_NO_PROXY_WARNING" ) // proxyEnvKeys lists environment variables that Go's ProxyFromEnvironment reads. @@ -60,7 +63,7 @@ func redactProxyURL(raw string) string { // are redacted. Safe to call multiple times; only the first call prints. func WarnIfProxied(w io.Writer) { proxyWarningOnce.Do(func() { - if os.Getenv(EnvNoProxy) != "" { + if os.Getenv(EnvNoProxy) != "" || os.Getenv(EnvNoProxyWarning) != "" { return } key, val := DetectProxyEnv() diff --git a/shortcuts/im/im_messages_reply.go b/shortcuts/im/im_messages_reply.go index 806ee739c..33c36ca55 100644 --- a/shortcuts/im/im_messages_reply.go +++ b/shortcuts/im/im_messages_reply.go @@ -29,11 +29,11 @@ var ImMessagesReply = common.Shortcut{ {Name: "content", Desc: "(one of --content/--text/--markdown/--image/--file/--video/--audio required) message content JSON"}, {Name: "text", Desc: "plain text message (auto-wrapped as JSON)"}, {Name: "markdown", Desc: "markdown text (auto-wrapped as post format with style optimization; image URLs auto-resolved)"}, - {Name: "image", Desc: "image_key, local file path"}, - {Name: "file", Desc: "file_key, local file path"}, - {Name: "video", Desc: "video file_key, local file path; must be used together with --video-cover"}, - {Name: "video-cover", Desc: "video cover image_key, local file path; required when using --video"}, - {Name: "audio", Desc: "audio file_key, local file path"}, + {Name: "image", Desc: "image_key or relative path to file"}, + {Name: "file", Desc: "file_key or relative path to file"}, + {Name: "video", Desc: "video file_key or relative path to file; must be used together with --video-cover"}, + {Name: "video-cover", Desc: "video cover image_key or relative path to file; required when using --video"}, + {Name: "audio", Desc: "audio file_key or relative path to file"}, {Name: "reply-in-thread", Type: "bool", Desc: "reply in thread (message appears in thread stream instead of main chat)"}, {Name: "idempotency-key", Desc: "idempotency key (prevents duplicate sends)"}, }, diff --git a/shortcuts/im/im_messages_send.go b/shortcuts/im/im_messages_send.go index efaa54852..fb7a94451 100644 --- a/shortcuts/im/im_messages_send.go +++ b/shortcuts/im/im_messages_send.go @@ -33,11 +33,11 @@ var ImMessagesSend = common.Shortcut{ {Name: "text", Desc: "plain text message (auto-wrapped as JSON)"}, {Name: "markdown", Desc: "markdown text (auto-wrapped as post format with style optimization; image URLs auto-resolved)"}, {Name: "idempotency-key", Desc: "idempotency key (prevents duplicate sends)"}, - {Name: "image", Desc: "image_key, local file path"}, - {Name: "file", Desc: "file_key, local file path"}, - {Name: "video", Desc: "video file_key, local file path; must be used together with --video-cover"}, - {Name: "video-cover", Desc: "video cover image_key, local file path; required when using --video"}, - {Name: "audio", Desc: "audio file_key, local file path"}, + {Name: "image", Desc: "image_key or relative path to file"}, + {Name: "file", Desc: "file_key or relative path to file"}, + {Name: "video", Desc: "video file_key or relative path to file; must be used together with --video-cover"}, + {Name: "video-cover", Desc: "video cover image_key or relative path to file; required when using --video"}, + {Name: "audio", Desc: "audio file_key or relative path to file"}, }, DryRun: func(ctx context.Context, runtime *common.RuntimeContext) *common.DryRunAPI { chatFlag := runtime.Str("chat-id") @@ -81,10 +81,16 @@ var ImMessagesSend = common.Shortcut{ if desc != "" { d.Desc(desc) } - return d. + d = d. POST("/open-apis/im/v1/messages"). Params(map[string]interface{}{"receive_id_type": receiveIdType}). Body(body) + + if chatFlag != "" { + d.Desc("dry-run validates request shape only — it does not verify that the selected identity is a member of the target chat; a real send can still fail with \"Bot/User can NOT be out of the chat\"") + } + + return d }, Validate: func(ctx context.Context, runtime *common.RuntimeContext) error { chatFlag := runtime.Str("chat-id") From 421a3331daf046b921f14b1117c5f2843bfaced9 Mon Sep 17 00:00:00 2001 From: mengqiuzhen <1226746828@qq.com> Date: Wed, 20 May 2026 10:32:24 +0800 Subject: [PATCH 3/3] Revert "fix(sheets): correct scope name from "read" to "readonly" matching Feishu Open Platform" This reverts commit 112212783429557914a9fceabea5ad0ef71a92ad. --- internal/registry/registry_test.go | 6 +++--- internal/registry/scope_priorities.json | 2 +- shortcuts/sheets/lark_sheets_cell_data.go | 10 +++++----- shortcuts/sheets/lark_sheets_cell_images.go | 2 +- .../lark_sheets_cell_style_and_merge.go | 8 ++++---- shortcuts/sheets/lark_sheets_dropdown.go | 8 ++++---- shortcuts/sheets/lark_sheets_filter_views.go | 20 +++++++++---------- shortcuts/sheets/lark_sheets_float_images.go | 4 ++-- .../lark_sheets_row_column_management.go | 10 +++++----- .../sheets/lark_sheets_sheet_management.go | 8 ++++---- .../lark_sheets_spreadsheet_management.go | 2 +- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index 0bf4e7162..a2482a8f6 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -237,8 +237,8 @@ func TestLoadAutoApproveSet(t *testing.T) { } // Verify allow list entries are present - if !aaSet["sheets:spreadsheet:readonly"] { - t.Error("expected sheets:spreadsheet:readonly in auto-approve set (from allow list)") + if !aaSet["sheets:spreadsheet:read"] { + t.Error("expected sheets:spreadsheet:read in auto-approve set (from allow list)") } t.Logf("Auto-approve set has %d scopes", len(aaSet)) @@ -292,7 +292,7 @@ func TestFilterAutoApproveScopes(t *testing.T) { scopes := []string{ "calendar:calendar.event:create", // auto-approve (in allow list) "zzz:unknown:scope", // not in auto-approve - "sheets:spreadsheet:readonly", // auto-approve (in allow list) + "sheets:spreadsheet:read", // auto-approve (in allow list) } result := FilterAutoApproveScopes(scopes) diff --git a/internal/registry/scope_priorities.json b/internal/registry/scope_priorities.json index 88e4850f0..5ab61bee6 100644 --- a/internal/registry/scope_priorities.json +++ b/internal/registry/scope_priorities.json @@ -85,7 +85,7 @@ "recommend": "true" }, { - "scope_name": "sheets:spreadsheet:readonly", + "scope_name": "sheets:spreadsheet:read", "final_score": "65.0000", "recommend": "true" }, diff --git a/shortcuts/sheets/lark_sheets_cell_data.go b/shortcuts/sheets/lark_sheets_cell_data.go index dc703a10e..8c654716f 100644 --- a/shortcuts/sheets/lark_sheets_cell_data.go +++ b/shortcuts/sheets/lark_sheets_cell_data.go @@ -28,7 +28,7 @@ var SheetRead = common.Shortcut{ Command: "+read", Description: "Read spreadsheet cell values", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -99,7 +99,7 @@ var SheetWrite = common.Shortcut{ Command: "+write", Description: "Write to spreadsheet cells (overwrite mode)", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -175,7 +175,7 @@ var SheetAppend = common.Shortcut{ Command: "+append", Description: "Append rows to a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -251,7 +251,7 @@ var SheetFind = common.Shortcut{ Command: "+find", Description: "Find cells in a spreadsheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -335,7 +335,7 @@ var SheetReplace = common.Shortcut{ Command: "+replace", Description: "Find and replace cell values in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_cell_images.go b/shortcuts/sheets/lark_sheets_cell_images.go index 9ce76c39f..c84d32496 100644 --- a/shortcuts/sheets/lark_sheets_cell_images.go +++ b/shortcuts/sheets/lark_sheets_cell_images.go @@ -20,7 +20,7 @@ var SheetWriteImage = common.Shortcut{ Command: "+write-image", Description: "Write an image into a spreadsheet cell", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_cell_style_and_merge.go b/shortcuts/sheets/lark_sheets_cell_style_and_merge.go index 11c27db9c..3553fd945 100644 --- a/shortcuts/sheets/lark_sheets_cell_style_and_merge.go +++ b/shortcuts/sheets/lark_sheets_cell_style_and_merge.go @@ -59,7 +59,7 @@ var SheetSetStyle = common.Shortcut{ Command: "+set-style", Description: "Set cell style for a range", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -141,7 +141,7 @@ var SheetBatchSetStyle = common.Shortcut{ Command: "+batch-set-style", Description: "Batch set cell styles for multiple ranges", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -227,7 +227,7 @@ var SheetMergeCells = common.Shortcut{ Command: "+merge-cells", Description: "Merge cells in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -292,7 +292,7 @@ var SheetUnmergeCells = common.Shortcut{ Command: "+unmerge-cells", Description: "Unmerge (split) cells in a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_dropdown.go b/shortcuts/sheets/lark_sheets_dropdown.go index 7f7e21315..fe092bbac 100644 --- a/shortcuts/sheets/lark_sheets_dropdown.go +++ b/shortcuts/sheets/lark_sheets_dropdown.go @@ -107,7 +107,7 @@ var SheetSetDropdown = common.Shortcut{ Command: "+set-dropdown", Description: "Set dropdown list on a cell range", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -168,7 +168,7 @@ var SheetUpdateDropdown = common.Shortcut{ Command: "+update-dropdown", Description: "Update dropdown list settings", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -235,7 +235,7 @@ var SheetGetDropdown = common.Shortcut{ Command: "+get-dropdown", Description: "Get dropdown list settings for a range", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -279,7 +279,7 @@ var SheetDeleteDropdown = common.Shortcut{ Command: "+delete-dropdown", Description: "Delete dropdown list from cell ranges", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_filter_views.go b/shortcuts/sheets/lark_sheets_filter_views.go index 8a3aba88d..072d3d0ca 100644 --- a/shortcuts/sheets/lark_sheets_filter_views.go +++ b/shortcuts/sheets/lark_sheets_filter_views.go @@ -43,7 +43,7 @@ var SheetCreateFilterView = common.Shortcut{ Command: "+create-filter-view", Description: "Create a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -98,7 +98,7 @@ var SheetUpdateFilterView = common.Shortcut{ Command: "+update-filter-view", Description: "Update a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -154,7 +154,7 @@ var SheetListFilterViews = common.Shortcut{ Command: "+list-filter-views", Description: "List all filter views in a sheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -187,7 +187,7 @@ var SheetGetFilterView = common.Shortcut{ Command: "+get-filter-view", Description: "Get a filter view by ID", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -221,7 +221,7 @@ var SheetDeleteFilterView = common.Shortcut{ Command: "+delete-filter-view", Description: "Delete a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -255,7 +255,7 @@ var SheetCreateFilterViewCondition = common.Shortcut{ Command: "+create-filter-view-condition", Description: "Create a filter condition on a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -297,7 +297,7 @@ var SheetUpdateFilterViewCondition = common.Shortcut{ Command: "+update-filter-view-condition", Description: "Update a filter condition on a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -350,7 +350,7 @@ var SheetListFilterViewConditions = common.Shortcut{ Command: "+list-filter-view-conditions", Description: "List all filter conditions of a filter view", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -386,7 +386,7 @@ var SheetGetFilterViewCondition = common.Shortcut{ Command: "+get-filter-view-condition", Description: "Get a filter condition by column", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, @@ -424,7 +424,7 @@ var SheetDeleteFilterViewCondition = common.Shortcut{ Command: "+delete-filter-view-condition", Description: "Delete a filter condition from a filter view", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL (required if --spreadsheet-token is not set)"}, diff --git a/shortcuts/sheets/lark_sheets_float_images.go b/shortcuts/sheets/lark_sheets_float_images.go index 422e48c7a..cb70d6ca0 100644 --- a/shortcuts/sheets/lark_sheets_float_images.go +++ b/shortcuts/sheets/lark_sheets_float_images.go @@ -367,7 +367,7 @@ var SheetGetFloatImage = common.Shortcut{ Command: "+get-float-image", Description: "Get a floating image by ID", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -401,7 +401,7 @@ var SheetListFloatImages = common.Shortcut{ Command: "+list-float-images", Description: "List all floating images in a sheet", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_row_column_management.go b/shortcuts/sheets/lark_sheets_row_column_management.go index 975ee5d0d..5d5f9dec5 100644 --- a/shortcuts/sheets/lark_sheets_row_column_management.go +++ b/shortcuts/sheets/lark_sheets_row_column_management.go @@ -16,7 +16,7 @@ var SheetAddDimension = common.Shortcut{ Command: "+add-dimension", Description: "Add rows or columns at the end of a sheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -75,7 +75,7 @@ var SheetInsertDimension = common.Shortcut{ Command: "+insert-dimension", Description: "Insert rows or columns at a specified position", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -148,7 +148,7 @@ var SheetUpdateDimension = common.Shortcut{ Command: "+update-dimension", Description: "Update row or column properties (visibility, size)", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -237,7 +237,7 @@ var SheetMoveDimension = common.Shortcut{ Command: "+move-dimension", Description: "Move rows or columns to a new position", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -309,7 +309,7 @@ var SheetDeleteDimension = common.Shortcut{ Command: "+delete-dimension", Description: "Delete rows or columns", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_sheet_management.go b/shortcuts/sheets/lark_sheets_sheet_management.go index b8bf85ed5..67ab6f9d7 100644 --- a/shortcuts/sheets/lark_sheets_sheet_management.go +++ b/shortcuts/sheets/lark_sheets_sheet_management.go @@ -497,7 +497,7 @@ var SheetCreateSheet = common.Shortcut{ Command: "+create-sheet", Description: "Create a sheet in an existing spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -548,7 +548,7 @@ var SheetCopySheet = common.Shortcut{ Command: "+copy-sheet", Description: "Copy a sheet within a spreadsheet", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -622,7 +622,7 @@ var SheetDeleteSheet = common.Shortcut{ Command: "+delete-sheet", Description: "Delete a sheet from a spreadsheet", Risk: "high-risk-write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, @@ -662,7 +662,7 @@ var SheetUpdateSheet = common.Shortcut{ Command: "+update-sheet", Description: "Update sheet properties", Risk: "write", - Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:write_only", "sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"}, diff --git a/shortcuts/sheets/lark_sheets_spreadsheet_management.go b/shortcuts/sheets/lark_sheets_spreadsheet_management.go index d1fdcc0df..95b89b766 100644 --- a/shortcuts/sheets/lark_sheets_spreadsheet_management.go +++ b/shortcuts/sheets/lark_sheets_spreadsheet_management.go @@ -24,7 +24,7 @@ var SheetInfo = common.Shortcut{ Command: "+info", Description: "View spreadsheet and sheet information", Risk: "read", - Scopes: []string{"sheets:spreadsheet:readonly"}, + Scopes: []string{"sheets:spreadsheet:read"}, AuthTypes: []string{"user", "bot"}, Flags: []common.Flag{ {Name: "url", Desc: "spreadsheet URL"},