@commandable/integration-data 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials-index.d.ts +2 -7
- package/dist/credentials-index.d.ts.map +1 -1
- package/dist/credentials-index.js +11 -684
- package/dist/credentials-index.js.map +1 -1
- package/dist/generated/registry.d.ts +3 -0
- package/dist/generated/registry.d.ts.map +1 -0
- package/dist/generated/registry.js +11907 -0
- package/dist/generated/registry.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +1 -122
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +81 -178
- package/dist/loader.js.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/types.d.ts +92 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +6 -4
- package/integrations/README.md +0 -52
- package/integrations/__tests__/liveHarness.ts +0 -97
- package/integrations/__tests__/usageParity.ts +0 -54
- package/integrations/airtable/.env.test.example +0 -11
- package/integrations/airtable/README.md +0 -27
- package/integrations/airtable/__tests__/get_handlers.test.ts +0 -187
- package/integrations/airtable/__tests__/usage_parity.test.ts +0 -9
- package/integrations/airtable/__tests__/write_and_admin_handlers.test.ts +0 -116
- package/integrations/airtable/credentials.json +0 -26
- package/integrations/airtable/credentials_hint.md +0 -4
- package/integrations/airtable/handlers/create_record.js +0 -12
- package/integrations/airtable/handlers/delete_record.js +0 -7
- package/integrations/airtable/handlers/get_record.js +0 -4
- package/integrations/airtable/handlers/get_table_schema.js +0 -6
- package/integrations/airtable/handlers/list_bases.js +0 -4
- package/integrations/airtable/handlers/list_records.js +0 -25
- package/integrations/airtable/handlers/list_table_fields.js +0 -6
- package/integrations/airtable/handlers/list_tables.js +0 -4
- package/integrations/airtable/handlers/list_views.js +0 -6
- package/integrations/airtable/handlers/search_records.js +0 -6
- package/integrations/airtable/handlers/update_record.js +0 -11
- package/integrations/airtable/manifest.json +0 -84
- package/integrations/airtable/schemas/create_record.json +0 -12
- package/integrations/airtable/schemas/delete_record.json +0 -11
- package/integrations/airtable/schemas/empty.json +0 -6
- package/integrations/airtable/schemas/get_record.json +0 -11
- package/integrations/airtable/schemas/id_base.json +0 -9
- package/integrations/airtable/schemas/id_base_table.json +0 -10
- package/integrations/airtable/schemas/list_records.json +0 -26
- package/integrations/airtable/schemas/search_records.json +0 -12
- package/integrations/airtable/schemas/update_record.json +0 -13
- package/integrations/confluence/.env.test.example +0 -36
- package/integrations/confluence/README.md +0 -28
- package/integrations/confluence/__tests__/get_handlers.test.ts +0 -121
- package/integrations/confluence/__tests__/usage_parity.test.ts +0 -14
- package/integrations/confluence/__tests__/write_handlers.test.ts +0 -131
- package/integrations/confluence/credentials.json +0 -39
- package/integrations/confluence/credentials_hint.md +0 -4
- package/integrations/confluence/credentials_hint_api_token.md +0 -9
- package/integrations/confluence/credentials_hint_oauth_token.md +0 -8
- package/integrations/confluence/handlers/add_comment.js +0 -19
- package/integrations/confluence/handlers/add_label.js +0 -16
- package/integrations/confluence/handlers/create_page.js +0 -22
- package/integrations/confluence/handlers/delete_page.js +0 -17
- package/integrations/confluence/handlers/get_comments.js +0 -33
- package/integrations/confluence/handlers/get_page_children.js +0 -30
- package/integrations/confluence/handlers/get_space.js +0 -22
- package/integrations/confluence/handlers/list_spaces.js +0 -39
- package/integrations/confluence/handlers/read_page.js +0 -49
- package/integrations/confluence/handlers/search_pages.js +0 -42
- package/integrations/confluence/handlers/update_page.js +0 -42
- package/integrations/confluence/manifest.json +0 -85
- package/integrations/confluence/prompt.md +0 -55
- package/integrations/confluence/schemas/add_comment.json +0 -22
- package/integrations/confluence/schemas/add_label.json +0 -19
- package/integrations/confluence/schemas/create_page.json +0 -33
- package/integrations/confluence/schemas/delete_page.json +0 -23
- package/integrations/confluence/schemas/empty.json +0 -6
- package/integrations/confluence/schemas/get_comments.json +0 -24
- package/integrations/confluence/schemas/get_page_children.json +0 -28
- package/integrations/confluence/schemas/get_space.json +0 -18
- package/integrations/confluence/schemas/list_spaces.json +0 -36
- package/integrations/confluence/schemas/read_page.json +0 -28
- package/integrations/confluence/schemas/search_pages.json +0 -26
- package/integrations/confluence/schemas/update_page.json +0 -31
- package/integrations/github/.env.test.example +0 -17
- package/integrations/github/README.md +0 -75
- package/integrations/github/__tests__/get_handlers.test.ts +0 -305
- package/integrations/github/__tests__/usage_parity.test.ts +0 -22
- package/integrations/github/__tests__/write_handlers.test.ts +0 -496
- package/integrations/github/credentials.json +0 -47
- package/integrations/github/credentials_hint.md +0 -7
- package/integrations/github/credentials_hint_classic_pat.md +0 -8
- package/integrations/github/credentials_hint_fine_grained_pat.md +0 -9
- package/integrations/github/handlers/add_labels_to_issue.js +0 -12
- package/integrations/github/handlers/close_issue.js +0 -5
- package/integrations/github/handlers/comment_on_issue.js +0 -5
- package/integrations/github/handlers/create_branch.js +0 -33
- package/integrations/github/handlers/create_commit.js +0 -84
- package/integrations/github/handlers/create_file.js +0 -46
- package/integrations/github/handlers/create_issue.js +0 -10
- package/integrations/github/handlers/create_or_update_file.js +0 -21
- package/integrations/github/handlers/create_pull_request.js +0 -16
- package/integrations/github/handlers/create_pull_request_review.js +0 -10
- package/integrations/github/handlers/create_release.js +0 -14
- package/integrations/github/handlers/create_repo.js +0 -11
- package/integrations/github/handlers/delete_branch.js +0 -8
- package/integrations/github/handlers/delete_file.js +0 -22
- package/integrations/github/handlers/delete_repo.js +0 -6
- package/integrations/github/handlers/edit_file.js +0 -52
- package/integrations/github/handlers/edit_files.js +0 -107
- package/integrations/github/handlers/fork_repo.js +0 -10
- package/integrations/github/handlers/get_commit.js +0 -8
- package/integrations/github/handlers/get_file_contents.js +0 -21
- package/integrations/github/handlers/get_issue.js +0 -4
- package/integrations/github/handlers/get_job_logs.js +0 -6
- package/integrations/github/handlers/get_latest_release.js +0 -4
- package/integrations/github/handlers/get_me.js +0 -4
- package/integrations/github/handlers/get_pull_request.js +0 -4
- package/integrations/github/handlers/get_pull_request_diff.js +0 -8
- package/integrations/github/handlers/get_repo.js +0 -4
- package/integrations/github/handlers/get_repo_tree.js +0 -12
- package/integrations/github/handlers/get_workflow_run.js +0 -4
- package/integrations/github/handlers/list_branches.js +0 -9
- package/integrations/github/handlers/list_commits.js +0 -11
- package/integrations/github/handlers/list_issue_comments.js +0 -8
- package/integrations/github/handlers/list_issues.js +0 -11
- package/integrations/github/handlers/list_labels.js +0 -8
- package/integrations/github/handlers/list_pull_request_comments.js +0 -8
- package/integrations/github/handlers/list_pull_request_files.js +0 -8
- package/integrations/github/handlers/list_pull_requests.js +0 -13
- package/integrations/github/handlers/list_releases.js +0 -8
- package/integrations/github/handlers/list_repos_install.js +0 -4
- package/integrations/github/handlers/list_repos_user.js +0 -16
- package/integrations/github/handlers/list_tags.js +0 -8
- package/integrations/github/handlers/list_workflow_runs.js +0 -11
- package/integrations/github/handlers/merge_pull_request.js +0 -14
- package/integrations/github/handlers/request_pull_request_reviewers.js +0 -10
- package/integrations/github/handlers/search_code.js +0 -8
- package/integrations/github/handlers/search_issues.js +0 -8
- package/integrations/github/handlers/search_pull_requests.js +0 -8
- package/integrations/github/handlers/search_repos.js +0 -10
- package/integrations/github/handlers/update_issue.js +0 -15
- package/integrations/github/handlers/update_pull_request.js +0 -13
- package/integrations/github/manifest.json +0 -92
- package/integrations/github/prompt.md +0 -36
- package/integrations/github/schemas/add_labels_to_issue.json +0 -12
- package/integrations/github/schemas/close_issue.json +0 -10
- package/integrations/github/schemas/comment_on_issue.json +0 -11
- package/integrations/github/schemas/create_branch.json +0 -12
- package/integrations/github/schemas/create_commit.json +0 -25
- package/integrations/github/schemas/create_file.json +0 -13
- package/integrations/github/schemas/create_issue.json +0 -13
- package/integrations/github/schemas/create_or_update_file.json +0 -15
- package/integrations/github/schemas/create_pull_request.json +0 -15
- package/integrations/github/schemas/create_pull_request_review.json +0 -17
- package/integrations/github/schemas/create_release.json +0 -16
- package/integrations/github/schemas/create_repo.json +0 -12
- package/integrations/github/schemas/delete_branch.json +0 -10
- package/integrations/github/schemas/delete_file.json +0 -13
- package/integrations/github/schemas/delete_repo.json +0 -10
- package/integrations/github/schemas/edit_file.json +0 -26
- package/integrations/github/schemas/edit_files.json +0 -39
- package/integrations/github/schemas/empty.json +0 -5
- package/integrations/github/schemas/fork_repo.json +0 -11
- package/integrations/github/schemas/get_commit.json +0 -12
- package/integrations/github/schemas/get_file_contents.json +0 -11
- package/integrations/github/schemas/get_issue.json +0 -10
- package/integrations/github/schemas/get_job_logs.json +0 -10
- package/integrations/github/schemas/get_pull_request.json +0 -10
- package/integrations/github/schemas/get_pull_request_diff.json +0 -10
- package/integrations/github/schemas/get_repo.json +0 -9
- package/integrations/github/schemas/get_repo_tree.json +0 -12
- package/integrations/github/schemas/get_workflow_run.json +0 -10
- package/integrations/github/schemas/list_branches.json +0 -12
- package/integrations/github/schemas/list_commits.json +0 -14
- package/integrations/github/schemas/list_issue_comments.json +0 -12
- package/integrations/github/schemas/list_issues.json +0 -14
- package/integrations/github/schemas/list_labels.json +0 -11
- package/integrations/github/schemas/list_pull_request_comments.json +0 -12
- package/integrations/github/schemas/list_pull_request_files.json +0 -12
- package/integrations/github/schemas/list_pull_requests.json +0 -16
- package/integrations/github/schemas/list_releases.json +0 -11
- package/integrations/github/schemas/list_tags.json +0 -11
- package/integrations/github/schemas/list_workflow_runs.json +0 -18
- package/integrations/github/schemas/merge_pull_request.json +0 -14
- package/integrations/github/schemas/owner_repo.json +0 -9
- package/integrations/github/schemas/request_pull_request_reviewers.json +0 -20
- package/integrations/github/schemas/search_code.json +0 -10
- package/integrations/github/schemas/search_issues.json +0 -10
- package/integrations/github/schemas/search_pull_requests.json +0 -10
- package/integrations/github/schemas/search_repos.json +0 -12
- package/integrations/github/schemas/update_issue.json +0 -15
- package/integrations/github/schemas/update_pull_request.json +0 -15
- package/integrations/google-calendar/.env.test.example +0 -11
- package/integrations/google-calendar/README.md +0 -41
- package/integrations/google-calendar/__tests__/get_handlers.test.ts +0 -120
- package/integrations/google-calendar/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-calendar/__tests__/write_and_admin_handlers.test.ts +0 -155
- package/integrations/google-calendar/credentials.json +0 -59
- package/integrations/google-calendar/credentials_hint.md +0 -9
- package/integrations/google-calendar/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-calendar/credentials_hint_service_account.md +0 -10
- package/integrations/google-calendar/handlers/create_event.js +0 -6
- package/integrations/google-calendar/handlers/delete_acl.js +0 -6
- package/integrations/google-calendar/handlers/delete_event.js +0 -7
- package/integrations/google-calendar/handlers/freebusy_query.js +0 -4
- package/integrations/google-calendar/handlers/get_acl.js +0 -5
- package/integrations/google-calendar/handlers/get_calendar.js +0 -4
- package/integrations/google-calendar/handlers/get_event.js +0 -9
- package/integrations/google-calendar/handlers/insert_acl.js +0 -6
- package/integrations/google-calendar/handlers/list_acl.js +0 -5
- package/integrations/google-calendar/handlers/list_calendars.js +0 -4
- package/integrations/google-calendar/handlers/list_colors.js +0 -4
- package/integrations/google-calendar/handlers/list_events.js +0 -23
- package/integrations/google-calendar/handlers/list_settings.js +0 -4
- package/integrations/google-calendar/handlers/move_event.js +0 -6
- package/integrations/google-calendar/handlers/patch_event.js +0 -5
- package/integrations/google-calendar/handlers/quick_add.js +0 -6
- package/integrations/google-calendar/handlers/update_acl.js +0 -7
- package/integrations/google-calendar/manifest.json +0 -36
- package/integrations/google-calendar/prompt.md +0 -68
- package/integrations/google-calendar/schemas/create_event.json +0 -34
- package/integrations/google-calendar/schemas/delete_acl.json +0 -9
- package/integrations/google-calendar/schemas/empty.json +0 -1
- package/integrations/google-calendar/schemas/freebusy_query.json +0 -13
- package/integrations/google-calendar/schemas/get_acl.json +0 -9
- package/integrations/google-calendar/schemas/id_calendar.json +0 -8
- package/integrations/google-calendar/schemas/id_calendar_event.json +0 -11
- package/integrations/google-calendar/schemas/insert_acl.json +0 -18
- package/integrations/google-calendar/schemas/list_events.json +0 -17
- package/integrations/google-calendar/schemas/move_event.json +0 -10
- package/integrations/google-calendar/schemas/patch_event.json +0 -10
- package/integrations/google-calendar/schemas/quick_add.json +0 -9
- package/integrations/google-calendar/schemas/update_acl.json +0 -10
- package/integrations/google-docs/README.md +0 -30
- package/integrations/google-docs/__tests__/get_handlers.test.ts +0 -83
- package/integrations/google-docs/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-docs/__tests__/write_handlers.test.ts +0 -238
- package/integrations/google-docs/credentials.json +0 -59
- package/integrations/google-docs/credentials_hint.md +0 -9
- package/integrations/google-docs/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-docs/credentials_hint_service_account.md +0 -10
- package/integrations/google-docs/handlers/append_text.js +0 -12
- package/integrations/google-docs/handlers/batch_update.js +0 -13
- package/integrations/google-docs/handlers/create_document.js +0 -9
- package/integrations/google-docs/handlers/delete_first_match.js +0 -50
- package/integrations/google-docs/handlers/insert_inline_image_after_first_match.js +0 -41
- package/integrations/google-docs/handlers/insert_page_break_after_first_match.js +0 -49
- package/integrations/google-docs/handlers/insert_table_after_first_match.js +0 -49
- package/integrations/google-docs/handlers/insert_text_after_first_match.js +0 -51
- package/integrations/google-docs/handlers/read_document.js +0 -189
- package/integrations/google-docs/handlers/replace_all_text.js +0 -8
- package/integrations/google-docs/handlers/style_first_match.js +0 -42
- package/integrations/google-docs/handlers/update_document_style.js +0 -8
- package/integrations/google-docs/handlers/update_paragraph_style_for_first_match.js +0 -48
- package/integrations/google-docs/manifest.json +0 -44
- package/integrations/google-docs/prompt.md +0 -49
- package/integrations/google-docs/schemas/append_text.json +0 -10
- package/integrations/google-docs/schemas/apply_text_style.json +0 -13
- package/integrations/google-docs/schemas/batch_update.json +0 -16
- package/integrations/google-docs/schemas/create_document.json +0 -8
- package/integrations/google-docs/schemas/delete_content_range.json +0 -11
- package/integrations/google-docs/schemas/delete_first_match.json +0 -10
- package/integrations/google-docs/schemas/insert_inline_image.json +0 -12
- package/integrations/google-docs/schemas/insert_inline_image_after_first_match.json +0 -12
- package/integrations/google-docs/schemas/insert_page_break.json +0 -10
- package/integrations/google-docs/schemas/insert_page_break_after_first_match.json +0 -11
- package/integrations/google-docs/schemas/insert_table.json +0 -12
- package/integrations/google-docs/schemas/insert_table_after_first_match.json +0 -13
- package/integrations/google-docs/schemas/insert_text_after_first_match.json +0 -12
- package/integrations/google-docs/schemas/insert_text_at.json +0 -11
- package/integrations/google-docs/schemas/read_document.json +0 -12
- package/integrations/google-docs/schemas/replace_all_text.json +0 -12
- package/integrations/google-docs/schemas/style_first_match.json +0 -12
- package/integrations/google-docs/schemas/update_document_style.json +0 -11
- package/integrations/google-docs/schemas/update_paragraph_style.json +0 -13
- package/integrations/google-docs/schemas/update_paragraph_style_for_first_match.json +0 -12
- package/integrations/google-docs/todo.md +0 -18
- package/integrations/google-drive/README.md +0 -26
- package/integrations/google-drive/__tests__/handlers.test.ts +0 -145
- package/integrations/google-drive/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-drive/credentials.json +0 -59
- package/integrations/google-drive/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-drive/credentials_hint_service_account.md +0 -10
- package/integrations/google-drive/handlers/create_file.js +0 -15
- package/integrations/google-drive/handlers/create_folder.js +0 -15
- package/integrations/google-drive/handlers/delete_file.js +0 -14
- package/integrations/google-drive/handlers/get_file.js +0 -5
- package/integrations/google-drive/handlers/get_file_content.js +0 -41
- package/integrations/google-drive/handlers/list_files.js +0 -15
- package/integrations/google-drive/handlers/move_file.js +0 -12
- package/integrations/google-drive/handlers/search_files.js +0 -20
- package/integrations/google-drive/handlers/share_file.js +0 -20
- package/integrations/google-drive/manifest.json +0 -70
- package/integrations/google-drive/prompt.md +0 -59
- package/integrations/google-drive/schemas/create_file.json +0 -12
- package/integrations/google-drive/schemas/create_folder.json +0 -11
- package/integrations/google-drive/schemas/delete_file.json +0 -10
- package/integrations/google-drive/schemas/get_file.json +0 -10
- package/integrations/google-drive/schemas/get_file_content.json +0 -11
- package/integrations/google-drive/schemas/list_files.json +0 -12
- package/integrations/google-drive/schemas/move_file.json +0 -12
- package/integrations/google-drive/schemas/search_files.json +0 -14
- package/integrations/google-drive/schemas/share_file.json +0 -23
- package/integrations/google-gmail/.env.test.example +0 -11
- package/integrations/google-gmail/README.md +0 -49
- package/integrations/google-gmail/__tests__/get_handlers.test.ts +0 -134
- package/integrations/google-gmail/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-gmail/__tests__/write_and_admin_handlers.test.ts +0 -211
- package/integrations/google-gmail/credentials.json +0 -59
- package/integrations/google-gmail/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-gmail/credentials_hint_service_account.md +0 -10
- package/integrations/google-gmail/handlers/create_draft_email.js +0 -27
- package/integrations/google-gmail/handlers/create_label.js +0 -12
- package/integrations/google-gmail/handlers/delete_draft.js +0 -13
- package/integrations/google-gmail/handlers/delete_label.js +0 -13
- package/integrations/google-gmail/handlers/delete_message.js +0 -13
- package/integrations/google-gmail/handlers/delete_thread.js +0 -13
- package/integrations/google-gmail/handlers/get_draft.js +0 -6
- package/integrations/google-gmail/handlers/get_label.js +0 -6
- package/integrations/google-gmail/handlers/get_message.js +0 -14
- package/integrations/google-gmail/handlers/get_profile.js +0 -5
- package/integrations/google-gmail/handlers/get_thread.js +0 -14
- package/integrations/google-gmail/handlers/list_drafts.js +0 -15
- package/integrations/google-gmail/handlers/list_labels.js +0 -5
- package/integrations/google-gmail/handlers/list_messages.js +0 -19
- package/integrations/google-gmail/handlers/list_threads.js +0 -19
- package/integrations/google-gmail/handlers/modify_message.js +0 -11
- package/integrations/google-gmail/handlers/modify_thread.js +0 -11
- package/integrations/google-gmail/handlers/read_email.js +0 -56
- package/integrations/google-gmail/handlers/send_draft.js +0 -15
- package/integrations/google-gmail/handlers/send_email.js +0 -22
- package/integrations/google-gmail/handlers/trash_message.js +0 -6
- package/integrations/google-gmail/handlers/trash_thread.js +0 -6
- package/integrations/google-gmail/handlers/untrash_message.js +0 -6
- package/integrations/google-gmail/handlers/untrash_thread.js +0 -6
- package/integrations/google-gmail/handlers/update_label.js +0 -15
- package/integrations/google-gmail/manifest.json +0 -45
- package/integrations/google-gmail/prompt.md +0 -52
- package/integrations/google-gmail/schemas/create_draft_email.json +0 -16
- package/integrations/google-gmail/schemas/create_label.json +0 -26
- package/integrations/google-gmail/schemas/get_message.json +0 -20
- package/integrations/google-gmail/schemas/get_profile.json +0 -11
- package/integrations/google-gmail/schemas/get_thread.json +0 -20
- package/integrations/google-gmail/schemas/id_draft.json +0 -16
- package/integrations/google-gmail/schemas/id_label.json +0 -16
- package/integrations/google-gmail/schemas/id_message.json +0 -16
- package/integrations/google-gmail/schemas/id_thread.json +0 -16
- package/integrations/google-gmail/schemas/list_drafts.json +0 -30
- package/integrations/google-gmail/schemas/list_labels.json +0 -11
- package/integrations/google-gmail/schemas/list_messages.json +0 -35
- package/integrations/google-gmail/schemas/list_threads.json +0 -35
- package/integrations/google-gmail/schemas/modify_message.json +0 -24
- package/integrations/google-gmail/schemas/modify_thread.json +0 -24
- package/integrations/google-gmail/schemas/read_email.json +0 -10
- package/integrations/google-gmail/schemas/send_draft.json +0 -29
- package/integrations/google-gmail/schemas/send_email.json +0 -17
- package/integrations/google-gmail/schemas/update_label.json +0 -33
- package/integrations/google-sheet/README.md +0 -27
- package/integrations/google-sheet/__tests__/get_handlers.test.ts +0 -76
- package/integrations/google-sheet/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-sheet/__tests__/write_handlers.test.ts +0 -153
- package/integrations/google-sheet/credentials.json +0 -59
- package/integrations/google-sheet/credentials_hint.md +0 -9
- package/integrations/google-sheet/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-sheet/credentials_hint_service_account.md +0 -10
- package/integrations/google-sheet/handlers/append_values.js +0 -18
- package/integrations/google-sheet/handlers/batch_clear_values.js +0 -6
- package/integrations/google-sheet/handlers/batch_update.js +0 -14
- package/integrations/google-sheet/handlers/batch_update_values.js +0 -16
- package/integrations/google-sheet/handlers/clear_values.js +0 -6
- package/integrations/google-sheet/handlers/copy_to_spreadsheet.js +0 -6
- package/integrations/google-sheet/handlers/create_spreadsheet.js +0 -5
- package/integrations/google-sheet/handlers/get_spreadsheet.js +0 -14
- package/integrations/google-sheet/handlers/read_sheet.js +0 -75
- package/integrations/google-sheet/handlers/update_values.js +0 -16
- package/integrations/google-sheet/manifest.json +0 -77
- package/integrations/google-sheet/prompt.md +0 -49
- package/integrations/google-sheet/schemas/append_values.json +0 -16
- package/integrations/google-sheet/schemas/batch_clear_values.json +0 -10
- package/integrations/google-sheet/schemas/batch_update.json +0 -13
- package/integrations/google-sheet/schemas/batch_update_values.json +0 -25
- package/integrations/google-sheet/schemas/clear_values.json +0 -10
- package/integrations/google-sheet/schemas/copy_to_spreadsheet.json +0 -11
- package/integrations/google-sheet/schemas/create_spreadsheet.json +0 -11
- package/integrations/google-sheet/schemas/get_spreadsheet.json +0 -16
- package/integrations/google-sheet/schemas/read_sheet.json +0 -21
- package/integrations/google-sheet/schemas/update_values.json +0 -15
- package/integrations/google-slides/README.md +0 -28
- package/integrations/google-slides/__tests__/get_handlers.test.ts +0 -74
- package/integrations/google-slides/__tests__/usage_parity.test.ts +0 -9
- package/integrations/google-slides/__tests__/write_handlers.test.ts +0 -131
- package/integrations/google-slides/credentials.json +0 -59
- package/integrations/google-slides/credentials_hint.md +0 -9
- package/integrations/google-slides/credentials_hint_oauth_token.md +0 -8
- package/integrations/google-slides/credentials_hint_service_account.md +0 -10
- package/integrations/google-slides/handlers/append_text_to_title_of_first_slide.js +0 -17
- package/integrations/google-slides/handlers/batch_update.js +0 -15
- package/integrations/google-slides/handlers/create_presentation.js +0 -8
- package/integrations/google-slides/handlers/create_slide_after_first_match.js +0 -20
- package/integrations/google-slides/handlers/get_page_thumbnail.js +0 -12
- package/integrations/google-slides/handlers/insert_image_after_first_match.js +0 -19
- package/integrations/google-slides/handlers/insert_shape_after_first_match.js +0 -21
- package/integrations/google-slides/handlers/read_presentation.js +0 -51
- package/integrations/google-slides/handlers/replace_text_first_match.js +0 -9
- package/integrations/google-slides/handlers/set_background_color_for_slide_index.js +0 -15
- package/integrations/google-slides/handlers/style_text_first_match.js +0 -48
- package/integrations/google-slides/manifest.json +0 -42
- package/integrations/google-slides/prompt.md +0 -56
- package/integrations/google-slides/schemas/append_text_to_title_of_first_slide.json +0 -11
- package/integrations/google-slides/schemas/batch_update.json +0 -13
- package/integrations/google-slides/schemas/create_presentation.json +0 -8
- package/integrations/google-slides/schemas/create_slide_after_first_match.json +0 -11
- package/integrations/google-slides/schemas/get_page_thumbnail.json +0 -12
- package/integrations/google-slides/schemas/get_presentation.json +0 -9
- package/integrations/google-slides/schemas/insert_image_after_first_match.json +0 -13
- package/integrations/google-slides/schemas/insert_shape_after_first_match.json +0 -13
- package/integrations/google-slides/schemas/replace_text_first_match.json +0 -12
- package/integrations/google-slides/schemas/set_background_color_for_slide_index.json +0 -11
- package/integrations/google-slides/schemas/style_text_first_match.json +0 -12
- package/integrations/hubspot/.env.test.example +0 -20
- package/integrations/hubspot/README.md +0 -48
- package/integrations/hubspot/__tests__/get_handlers.test.ts +0 -151
- package/integrations/hubspot/__tests__/usage_parity.test.ts +0 -10
- package/integrations/hubspot/__tests__/write_handlers.test.ts +0 -244
- package/integrations/hubspot/credentials.json +0 -50
- package/integrations/hubspot/credentials_hint.md +0 -20
- package/integrations/hubspot/credentials_hint_oauth_token.md +0 -16
- package/integrations/hubspot/handlers/archive_company.js +0 -13
- package/integrations/hubspot/handlers/archive_contact.js +0 -13
- package/integrations/hubspot/handlers/archive_deal.js +0 -13
- package/integrations/hubspot/handlers/archive_ticket.js +0 -13
- package/integrations/hubspot/handlers/create_association.js +0 -18
- package/integrations/hubspot/handlers/create_company.js +0 -13
- package/integrations/hubspot/handlers/create_contact.js +0 -14
- package/integrations/hubspot/handlers/create_deal.js +0 -16
- package/integrations/hubspot/handlers/create_note.js +0 -44
- package/integrations/hubspot/handlers/create_task.js +0 -48
- package/integrations/hubspot/handlers/create_ticket.js +0 -15
- package/integrations/hubspot/handlers/get_associations.js +0 -14
- package/integrations/hubspot/handlers/get_company.js +0 -18
- package/integrations/hubspot/handlers/get_contact.js +0 -18
- package/integrations/hubspot/handlers/get_deal.js +0 -18
- package/integrations/hubspot/handlers/get_ticket.js +0 -20
- package/integrations/hubspot/handlers/list_owners.js +0 -12
- package/integrations/hubspot/handlers/list_pipelines.js +0 -5
- package/integrations/hubspot/handlers/list_properties.js +0 -11
- package/integrations/hubspot/handlers/remove_association.js +0 -22
- package/integrations/hubspot/handlers/search_companies.js +0 -43
- package/integrations/hubspot/handlers/search_contacts.js +0 -43
- package/integrations/hubspot/handlers/search_deals.js +0 -43
- package/integrations/hubspot/handlers/search_notes.js +0 -43
- package/integrations/hubspot/handlers/search_tasks.js +0 -43
- package/integrations/hubspot/handlers/search_tickets.js +0 -43
- package/integrations/hubspot/handlers/update_company.js +0 -13
- package/integrations/hubspot/handlers/update_contact.js +0 -14
- package/integrations/hubspot/handlers/update_deal.js +0 -16
- package/integrations/hubspot/handlers/update_task.js +0 -17
- package/integrations/hubspot/handlers/update_ticket.js +0 -15
- package/integrations/hubspot/manifest.json +0 -231
- package/integrations/hubspot/prompt.md +0 -69
- package/integrations/hubspot/schemas/archive_company.json +0 -13
- package/integrations/hubspot/schemas/archive_contact.json +0 -13
- package/integrations/hubspot/schemas/archive_deal.json +0 -9
- package/integrations/hubspot/schemas/archive_ticket.json +0 -9
- package/integrations/hubspot/schemas/create_association.json +0 -24
- package/integrations/hubspot/schemas/create_company.json +0 -14
- package/integrations/hubspot/schemas/create_contact.json +0 -15
- package/integrations/hubspot/schemas/create_deal.json +0 -20
- package/integrations/hubspot/schemas/create_note.json +0 -37
- package/integrations/hubspot/schemas/create_task.json +0 -51
- package/integrations/hubspot/schemas/create_ticket.json +0 -16
- package/integrations/hubspot/schemas/empty.json +0 -6
- package/integrations/hubspot/schemas/get_associations.json +0 -30
- package/integrations/hubspot/schemas/get_company.json +0 -27
- package/integrations/hubspot/schemas/get_contact.json +0 -27
- package/integrations/hubspot/schemas/get_deal.json +0 -20
- package/integrations/hubspot/schemas/get_ticket.json +0 -20
- package/integrations/hubspot/schemas/list_owners.json +0 -25
- package/integrations/hubspot/schemas/list_pipelines.json +0 -13
- package/integrations/hubspot/schemas/list_properties.json +0 -17
- package/integrations/hubspot/schemas/remove_association.json +0 -24
- package/integrations/hubspot/schemas/search_companies.json +0 -56
- package/integrations/hubspot/schemas/search_contacts.json +0 -56
- package/integrations/hubspot/schemas/search_deals.json +0 -43
- package/integrations/hubspot/schemas/search_notes.json +0 -43
- package/integrations/hubspot/schemas/search_tasks.json +0 -43
- package/integrations/hubspot/schemas/search_tickets.json +0 -43
- package/integrations/hubspot/schemas/update_company.json +0 -20
- package/integrations/hubspot/schemas/update_contact.json +0 -21
- package/integrations/hubspot/schemas/update_deal.json +0 -19
- package/integrations/hubspot/schemas/update_task.json +0 -31
- package/integrations/hubspot/schemas/update_ticket.json +0 -18
- package/integrations/jira/.env.test.example +0 -41
- package/integrations/jira/README.md +0 -46
- package/integrations/jira/__tests__/get_handlers.test.ts +0 -193
- package/integrations/jira/__tests__/usage_parity.test.ts +0 -14
- package/integrations/jira/__tests__/write_handlers.test.ts +0 -157
- package/integrations/jira/credentials.json +0 -39
- package/integrations/jira/credentials_hint.md +0 -4
- package/integrations/jira/credentials_hint_api_token.md +0 -6
- package/integrations/jira/credentials_hint_oauth_token.md +0 -6
- package/integrations/jira/handlers/add_comment.js +0 -9
- package/integrations/jira/handlers/assign_issue.js +0 -11
- package/integrations/jira/handlers/create_issue.js +0 -37
- package/integrations/jira/handlers/create_sprint.js +0 -19
- package/integrations/jira/handlers/delete_issue.js +0 -10
- package/integrations/jira/handlers/get_backlog_issues.js +0 -13
- package/integrations/jira/handlers/get_board.js +0 -6
- package/integrations/jira/handlers/get_issue.js +0 -63
- package/integrations/jira/handlers/get_issue_comments.js +0 -31
- package/integrations/jira/handlers/get_myself.js +0 -14
- package/integrations/jira/handlers/get_project.js +0 -28
- package/integrations/jira/handlers/get_sprint.js +0 -5
- package/integrations/jira/handlers/get_sprint_issues.js +0 -13
- package/integrations/jira/handlers/get_transitions.js +0 -23
- package/integrations/jira/handlers/list_boards.js +0 -34
- package/integrations/jira/handlers/list_projects.js +0 -29
- package/integrations/jira/handlers/list_sprints.js +0 -29
- package/integrations/jira/handlers/move_issues_to_sprint.js +0 -11
- package/integrations/jira/handlers/search_issues.js +0 -43
- package/integrations/jira/handlers/search_users.js +0 -21
- package/integrations/jira/handlers/transition_issue.js +0 -44
- package/integrations/jira/handlers/update_issue.js +0 -40
- package/integrations/jira/handlers/update_sprint.js +0 -20
- package/integrations/jira/manifest.json +0 -204
- package/integrations/jira/prompt.md +0 -80
- package/integrations/jira/schemas/add_comment.json +0 -16
- package/integrations/jira/schemas/assign_issue.json +0 -16
- package/integrations/jira/schemas/create_issue.json +0 -49
- package/integrations/jira/schemas/create_sprint.json +0 -29
- package/integrations/jira/schemas/delete_issue.json +0 -12
- package/integrations/jira/schemas/empty.json +0 -6
- package/integrations/jira/schemas/get_backlog_issues.json +0 -33
- package/integrations/jira/schemas/get_board.json +0 -13
- package/integrations/jira/schemas/get_issue.json +0 -23
- package/integrations/jira/schemas/get_issue_comments.json +0 -23
- package/integrations/jira/schemas/get_project.json +0 -17
- package/integrations/jira/schemas/get_sprint.json +0 -13
- package/integrations/jira/schemas/get_sprint_issues.json +0 -33
- package/integrations/jira/schemas/get_transitions.json +0 -12
- package/integrations/jira/schemas/list_boards.json +0 -27
- package/integrations/jira/schemas/list_projects.json +0 -22
- package/integrations/jira/schemas/list_sprints.json +0 -29
- package/integrations/jira/schemas/move_issues_to_sprint.json +0 -19
- package/integrations/jira/schemas/search_issues.json +0 -28
- package/integrations/jira/schemas/search_users.json +0 -18
- package/integrations/jira/schemas/transition_issue.json +0 -38
- package/integrations/jira/schemas/update_issue.json +0 -47
- package/integrations/jira/schemas/update_sprint.json +0 -33
- package/integrations/new_integration_prompt.md +0 -216
- package/integrations/notion/.env.test.example +0 -13
- package/integrations/notion/README.md +0 -42
- package/integrations/notion/__tests__/get_handlers.test.ts +0 -156
- package/integrations/notion/__tests__/usage_parity.test.ts +0 -9
- package/integrations/notion/__tests__/write_and_admin_handlers.test.ts +0 -186
- package/integrations/notion/credentials.json +0 -27
- package/integrations/notion/credentials_hint.md +0 -5
- package/integrations/notion/handlers/append_block_children.js +0 -7
- package/integrations/notion/handlers/create_comment.js +0 -10
- package/integrations/notion/handlers/create_database.js +0 -11
- package/integrations/notion/handlers/create_page.js +0 -13
- package/integrations/notion/handlers/delete_block.js +0 -8
- package/integrations/notion/handlers/get_me.js +0 -4
- package/integrations/notion/handlers/list_block_children.js +0 -10
- package/integrations/notion/handlers/list_comments.js +0 -14
- package/integrations/notion/handlers/list_users.js +0 -10
- package/integrations/notion/handlers/query_database.js +0 -10
- package/integrations/notion/handlers/retrieve_block.js +0 -4
- package/integrations/notion/handlers/retrieve_database.js +0 -4
- package/integrations/notion/handlers/retrieve_page.js +0 -4
- package/integrations/notion/handlers/retrieve_page_property_item.js +0 -10
- package/integrations/notion/handlers/retrieve_user.js +0 -4
- package/integrations/notion/handlers/search.js +0 -11
- package/integrations/notion/handlers/update_block.js +0 -7
- package/integrations/notion/handlers/update_database.js +0 -10
- package/integrations/notion/handlers/update_page_properties.js +0 -10
- package/integrations/notion/manifest.json +0 -169
- package/integrations/notion/prompt.md +0 -26
- package/integrations/notion/schemas/append_block_children.json +0 -10
- package/integrations/notion/schemas/create_comment.json +0 -18
- package/integrations/notion/schemas/create_database.json +0 -18
- package/integrations/notion/schemas/create_page.json +0 -22
- package/integrations/notion/schemas/delete_block.json +0 -9
- package/integrations/notion/schemas/empty.json +0 -6
- package/integrations/notion/schemas/id_block.json +0 -9
- package/integrations/notion/schemas/id_database.json +0 -9
- package/integrations/notion/schemas/id_page.json +0 -9
- package/integrations/notion/schemas/id_user.json +0 -9
- package/integrations/notion/schemas/list_block_children.json +0 -11
- package/integrations/notion/schemas/list_comments.json +0 -15
- package/integrations/notion/schemas/list_users.json +0 -9
- package/integrations/notion/schemas/query_database.json +0 -13
- package/integrations/notion/schemas/retrieve_page_property_item.json +0 -12
- package/integrations/notion/schemas/search.json +0 -27
- package/integrations/notion/schemas/update_block.json +0 -10
- package/integrations/notion/schemas/update_database.json +0 -13
- package/integrations/notion/schemas/update_page_properties.json +0 -13
- package/integrations/trello/.env.test.example +0 -9
- package/integrations/trello/README.md +0 -50
- package/integrations/trello/__tests__/get_handlers.test.ts +0 -225
- package/integrations/trello/__tests__/usage_parity.test.ts +0 -9
- package/integrations/trello/__tests__/write_and_admin_handlers.test.ts +0 -171
- package/integrations/trello/credentials.json +0 -32
- package/integrations/trello/credentials_hint.md +0 -4
- package/integrations/trello/handlers/add_checklist_to_card.js +0 -5
- package/integrations/trello/handlers/add_member_to_card.js +0 -5
- package/integrations/trello/handlers/archive_list.js +0 -5
- package/integrations/trello/handlers/close_board.js +0 -6
- package/integrations/trello/handlers/create_board.js +0 -11
- package/integrations/trello/handlers/create_card.js +0 -13
- package/integrations/trello/handlers/create_list.js +0 -7
- package/integrations/trello/handlers/delete_board.js +0 -13
- package/integrations/trello/handlers/delete_card.js +0 -9
- package/integrations/trello/handlers/get_board.js +0 -4
- package/integrations/trello/handlers/get_board_cards.js +0 -4
- package/integrations/trello/handlers/get_board_custom_fields.js +0 -4
- package/integrations/trello/handlers/get_board_labels.js +0 -4
- package/integrations/trello/handlers/get_board_lists.js +0 -4
- package/integrations/trello/handlers/get_board_members.js +0 -4
- package/integrations/trello/handlers/get_board_memberships.js +0 -4
- package/integrations/trello/handlers/get_card.js +0 -4
- package/integrations/trello/handlers/get_card_actions.js +0 -4
- package/integrations/trello/handlers/get_card_attachments.js +0 -4
- package/integrations/trello/handlers/get_card_checklists.js +0 -4
- package/integrations/trello/handlers/get_card_custom_field_items.js +0 -4
- package/integrations/trello/handlers/get_card_members.js +0 -4
- package/integrations/trello/handlers/get_list.js +0 -4
- package/integrations/trello/handlers/get_list_cards.js +0 -4
- package/integrations/trello/handlers/get_member.js +0 -4
- package/integrations/trello/handlers/get_member_boards.js +0 -4
- package/integrations/trello/handlers/get_member_organizations.js +0 -4
- package/integrations/trello/handlers/get_organization.js +0 -4
- package/integrations/trello/handlers/get_organization_boards.js +0 -4
- package/integrations/trello/handlers/move_card_to_list.js +0 -5
- package/integrations/trello/handlers/remove_member_from_card.js +0 -9
- package/integrations/trello/handlers/search.js +0 -5
- package/integrations/trello/handlers/update_card.js +0 -19
- package/integrations/trello/handlers/update_list.js +0 -11
- package/integrations/trello/manifest.json +0 -245
- package/integrations/trello/schemas/add_checklist_to_card.json +0 -10
- package/integrations/trello/schemas/add_member_to_card.json +0 -10
- package/integrations/trello/schemas/archive_list.json +0 -9
- package/integrations/trello/schemas/close_board.json +0 -10
- package/integrations/trello/schemas/create_board.json +0 -12
- package/integrations/trello/schemas/create_card.json +0 -13
- package/integrations/trello/schemas/create_list.json +0 -11
- package/integrations/trello/schemas/delete_board.json +0 -10
- package/integrations/trello/schemas/delete_card.json +0 -9
- package/integrations/trello/schemas/display_trello_cards.json +0 -45
- package/integrations/trello/schemas/empty.json +0 -5
- package/integrations/trello/schemas/get_member.json +0 -5
- package/integrations/trello/schemas/id_board.json +0 -8
- package/integrations/trello/schemas/id_card.json +0 -8
- package/integrations/trello/schemas/id_list.json +0 -8
- package/integrations/trello/schemas/id_org.json +0 -8
- package/integrations/trello/schemas/move_card_to_list.json +0 -10
- package/integrations/trello/schemas/remove_member_from_card.json +0 -10
- package/integrations/trello/schemas/search.json +0 -8
- package/integrations/trello/schemas/update_card.json +0 -16
- package/integrations/trello/schemas/update_list.json +0 -12
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
|
|
2
|
-
import { createCredentialStore, createIntegrationNode, createProxy, createToolbox, hasEnv, safeCleanup } from '../../__tests__/liveHarness.js'
|
|
3
|
-
|
|
4
|
-
// LIVE Google Sheets read tests using credentials
|
|
5
|
-
// Required env vars:
|
|
6
|
-
// - Either GOOGLE_TOKEN, OR GOOGLE_SERVICE_ACCOUNT_JSON
|
|
7
|
-
|
|
8
|
-
const suite = (hasEnv('GOOGLE_TOKEN') || hasEnv('GOOGLE_SERVICE_ACCOUNT_JSON'))
|
|
9
|
-
? describe
|
|
10
|
-
: describe.skip
|
|
11
|
-
|
|
12
|
-
suite('google-sheet read handlers (live)', () => {
|
|
13
|
-
let sheets: ReturnType<typeof createToolbox>
|
|
14
|
-
let drive: ReturnType<typeof createToolbox>
|
|
15
|
-
let sheetTitle: string | undefined
|
|
16
|
-
let folderId: string | undefined
|
|
17
|
-
let spreadsheetId: string | undefined
|
|
18
|
-
|
|
19
|
-
beforeAll(async () => {
|
|
20
|
-
const env = process.env as Record<string, string | undefined>
|
|
21
|
-
const credentialStore = createCredentialStore(async () => ({
|
|
22
|
-
token: env.GOOGLE_TOKEN || '',
|
|
23
|
-
serviceAccountJson: env.GOOGLE_SERVICE_ACCOUNT_JSON || '',
|
|
24
|
-
subject: env.GOOGLE_IMPERSONATE_SUBJECT || '',
|
|
25
|
-
}))
|
|
26
|
-
const proxy = createProxy(credentialStore)
|
|
27
|
-
sheets = createToolbox('google-sheet', proxy, createIntegrationNode('google-sheet', { label: 'Google Sheets', credentialId: 'google-sheet-creds' }))
|
|
28
|
-
drive = createToolbox('google-drive', proxy, createIntegrationNode('google-drive', { label: 'Google Drive', credentialId: 'google-drive-creds' }))
|
|
29
|
-
|
|
30
|
-
// Create dedicated folder + spreadsheet for this run
|
|
31
|
-
const folder = await drive.write('create_folder')({ name: `CmdTest Sheets ${Date.now()}` })
|
|
32
|
-
folderId = folder?.id
|
|
33
|
-
expect(folderId).toBeTruthy()
|
|
34
|
-
|
|
35
|
-
const created = await drive.write('create_file')({
|
|
36
|
-
name: `CmdTest Sheet ${Date.now()}`,
|
|
37
|
-
mimeType: 'application/vnd.google-apps.spreadsheet',
|
|
38
|
-
parentId: folderId,
|
|
39
|
-
})
|
|
40
|
-
spreadsheetId = created?.id
|
|
41
|
-
expect(spreadsheetId).toBeTruthy()
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
const get_spreadsheet = sheets.read('get_spreadsheet')
|
|
45
|
-
const meta = await get_spreadsheet({ spreadsheetId })
|
|
46
|
-
sheetTitle = meta?.sheets?.[0]?.properties?.title
|
|
47
|
-
}
|
|
48
|
-
catch {}
|
|
49
|
-
}, 60000)
|
|
50
|
-
|
|
51
|
-
afterAll(async () => {
|
|
52
|
-
if (!folderId)
|
|
53
|
-
return
|
|
54
|
-
await safeCleanup(async () => spreadsheetId ? drive.write('delete_file')({ fileId: spreadsheetId }) : Promise.resolve())
|
|
55
|
-
await safeCleanup(async () => drive.write('delete_file')({ fileId: folderId }))
|
|
56
|
-
}, 60000)
|
|
57
|
-
|
|
58
|
-
it('get_spreadsheet returns metadata', async () => {
|
|
59
|
-
if (!spreadsheetId)
|
|
60
|
-
return expect(true).toBe(true)
|
|
61
|
-
const handler = sheets.read('get_spreadsheet')
|
|
62
|
-
const result = await handler({ spreadsheetId })
|
|
63
|
-
expect(result?.spreadsheetId || result?.sheets).toBeTruthy()
|
|
64
|
-
}, 30000)
|
|
65
|
-
|
|
66
|
-
it('read_sheet returns markdown with A1 coordinates', async () => {
|
|
67
|
-
if (!spreadsheetId)
|
|
68
|
-
return expect(true).toBe(true)
|
|
69
|
-
const handler = sheets.read('read_sheet')
|
|
70
|
-
const range = sheetTitle ? `${sheetTitle}!A1:B5` : 'A1:B5'
|
|
71
|
-
const result = await handler({ spreadsheetId, range, valueRenderOption: 'FORMATTED_VALUE' })
|
|
72
|
-
expect(result?.range).toBeTruthy()
|
|
73
|
-
expect(typeof result?.markdown).toBe('string')
|
|
74
|
-
expect(result?.columnCount >= 1).toBe(true)
|
|
75
|
-
}, 30000)
|
|
76
|
-
})
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import { getMissingToolUsages } from '../../__tests__/usageParity.js'
|
|
3
|
-
|
|
4
|
-
describe('google-sheet static usage parity', () => {
|
|
5
|
-
it('every manifest tool is referenced in tests', () => {
|
|
6
|
-
const missing = getMissingToolUsages({ integrationName: 'google-sheet', importMetaUrl: import.meta.url })
|
|
7
|
-
expect(missing, `Missing handler usages in tests: ${missing.join(', ')}`).toEqual([])
|
|
8
|
-
})
|
|
9
|
-
})
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
|
|
2
|
-
import { createCredentialStore, createIntegrationNode, createProxy, createToolbox, hasEnv, safeCleanup } from '../../__tests__/liveHarness.js'
|
|
3
|
-
|
|
4
|
-
// LIVE Google Sheets write tests using credentials
|
|
5
|
-
// Required env vars:
|
|
6
|
-
// - Either GOOGLE_TOKEN, OR GOOGLE_SERVICE_ACCOUNT_JSON
|
|
7
|
-
// - GOOGLE_SHEETS_TEST_SPREADSHEET_ID (target spreadsheet ID with write access)
|
|
8
|
-
|
|
9
|
-
interface Ctx {
|
|
10
|
-
spreadsheetId?: string
|
|
11
|
-
folderId?: string
|
|
12
|
-
destSpreadsheetId?: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const suite = (hasEnv('GOOGLE_TOKEN') || hasEnv('GOOGLE_SERVICE_ACCOUNT_JSON'))
|
|
16
|
-
? describe
|
|
17
|
-
: describe.skip
|
|
18
|
-
|
|
19
|
-
suite('google-sheet write handlers (live)', () => {
|
|
20
|
-
const ctx: Ctx = {}
|
|
21
|
-
let sheets: ReturnType<typeof createToolbox>
|
|
22
|
-
let drive: ReturnType<typeof createToolbox>
|
|
23
|
-
let sheetTitle: string | undefined
|
|
24
|
-
|
|
25
|
-
beforeAll(async () => {
|
|
26
|
-
const env = process.env as Record<string, string | undefined>
|
|
27
|
-
const credentialStore = createCredentialStore(async () => ({
|
|
28
|
-
token: env.GOOGLE_TOKEN || '',
|
|
29
|
-
serviceAccountJson: env.GOOGLE_SERVICE_ACCOUNT_JSON || '',
|
|
30
|
-
subject: env.GOOGLE_IMPERSONATE_SUBJECT || '',
|
|
31
|
-
}))
|
|
32
|
-
const proxy = createProxy(credentialStore)
|
|
33
|
-
sheets = createToolbox('google-sheet', proxy, createIntegrationNode('google-sheet', { label: 'Google Sheets', credentialId: 'google-sheet-creds' }))
|
|
34
|
-
drive = createToolbox('google-drive', proxy, createIntegrationNode('google-drive', { label: 'Google Drive', credentialId: 'google-drive-creds' }))
|
|
35
|
-
|
|
36
|
-
const folder = await drive.write('create_folder')({ name: `CmdTest Sheets Write ${Date.now()}` })
|
|
37
|
-
ctx.folderId = folder?.id
|
|
38
|
-
expect(ctx.folderId).toBeTruthy()
|
|
39
|
-
|
|
40
|
-
const created = await drive.write('create_file')({
|
|
41
|
-
name: `CmdTest Sheet ${Date.now()}`,
|
|
42
|
-
mimeType: 'application/vnd.google-apps.spreadsheet',
|
|
43
|
-
parentId: ctx.folderId,
|
|
44
|
-
})
|
|
45
|
-
ctx.spreadsheetId = created?.id
|
|
46
|
-
expect(ctx.spreadsheetId).toBeTruthy()
|
|
47
|
-
|
|
48
|
-
const createdDest = await drive.write('create_file')({
|
|
49
|
-
name: `CmdTest Sheet Dest ${Date.now()}`,
|
|
50
|
-
mimeType: 'application/vnd.google-apps.spreadsheet',
|
|
51
|
-
parentId: ctx.folderId,
|
|
52
|
-
})
|
|
53
|
-
ctx.destSpreadsheetId = createdDest?.id
|
|
54
|
-
expect(ctx.destSpreadsheetId).toBeTruthy()
|
|
55
|
-
|
|
56
|
-
// Try to detect a default sheet title
|
|
57
|
-
if (ctx.spreadsheetId) {
|
|
58
|
-
try {
|
|
59
|
-
const get_spreadsheet = sheets.read('get_spreadsheet')
|
|
60
|
-
const meta = await get_spreadsheet({ spreadsheetId: ctx.spreadsheetId })
|
|
61
|
-
sheetTitle = meta?.sheets?.[0]?.properties?.title
|
|
62
|
-
}
|
|
63
|
-
catch {}
|
|
64
|
-
}
|
|
65
|
-
}, 60000)
|
|
66
|
-
|
|
67
|
-
afterAll(async () => {
|
|
68
|
-
await safeCleanup(async () => {
|
|
69
|
-
const delete_file = drive.write('delete_file')
|
|
70
|
-
if (ctx.spreadsheetId)
|
|
71
|
-
await delete_file({ fileId: ctx.spreadsheetId })
|
|
72
|
-
if (ctx.destSpreadsheetId)
|
|
73
|
-
await delete_file({ fileId: ctx.destSpreadsheetId })
|
|
74
|
-
})
|
|
75
|
-
await safeCleanup(async () => ctx.folderId ? drive.write('delete_file')({ fileId: ctx.folderId }) : Promise.resolve())
|
|
76
|
-
}, 60_000)
|
|
77
|
-
|
|
78
|
-
it('append_values appends then clear_values clears', async () => {
|
|
79
|
-
if (!ctx.spreadsheetId)
|
|
80
|
-
return expect(true).toBe(true)
|
|
81
|
-
|
|
82
|
-
const append_values = sheets.write('append_values')
|
|
83
|
-
const aTitle = sheetTitle || 'Sheet1'
|
|
84
|
-
const appendRes = await append_values({ spreadsheetId: ctx.spreadsheetId, range: `${aTitle}!A1`, values: [[`CmdTest ${Date.now()}`]], valueInputOption: 'USER_ENTERED' })
|
|
85
|
-
expect(appendRes?.updates || appendRes?.tableRange || appendRes?.spreadsheetId).toBeTruthy()
|
|
86
|
-
|
|
87
|
-
const clear_values = sheets.write('clear_values')
|
|
88
|
-
const clearRes = await clear_values({ spreadsheetId: ctx.spreadsheetId, range: `${aTitle}!A1:A10` })
|
|
89
|
-
expect(clearRes?.clearedRange || clearRes?.spreadsheetId).toBeTruthy()
|
|
90
|
-
}, 60000)
|
|
91
|
-
|
|
92
|
-
it('update_values updates a range', async () => {
|
|
93
|
-
if (!ctx.spreadsheetId)
|
|
94
|
-
return expect(true).toBe(true)
|
|
95
|
-
const aTitle = sheetTitle || 'Sheet1'
|
|
96
|
-
const update_values = sheets.write('update_values')
|
|
97
|
-
const res = await update_values({ spreadsheetId: ctx.spreadsheetId, range: `${aTitle}!B1:B1`, values: [[`CmdTestU ${Date.now()}`]], valueInputOption: 'USER_ENTERED' })
|
|
98
|
-
expect(res?.updatedRange || res?.spreadsheetId).toBeTruthy()
|
|
99
|
-
}, 60000)
|
|
100
|
-
|
|
101
|
-
it('batch_update_values updates multiple ranges', async () => {
|
|
102
|
-
if (!ctx.spreadsheetId)
|
|
103
|
-
return expect(true).toBe(true)
|
|
104
|
-
const aTitle = sheetTitle || 'Sheet1'
|
|
105
|
-
const batch_update_values = sheets.write('batch_update_values')
|
|
106
|
-
const res = await batch_update_values({ spreadsheetId: ctx.spreadsheetId, data: [
|
|
107
|
-
{ range: `${aTitle}!C1:C1`, values: [[`CmdTestB1 ${Date.now()}`]] },
|
|
108
|
-
{ range: `${aTitle}!C2:C2`, values: [[`CmdTestB2 ${Date.now()}`]] },
|
|
109
|
-
], valueInputOption: 'USER_ENTERED', includeValuesInResponse: true })
|
|
110
|
-
expect(res?.totalUpdatedCells >= 0 || res?.spreadsheetId).toBeTruthy()
|
|
111
|
-
}, 60000)
|
|
112
|
-
|
|
113
|
-
it('batch_clear_values clears multiple ranges', async () => {
|
|
114
|
-
if (!ctx.spreadsheetId)
|
|
115
|
-
return expect(true).toBe(true)
|
|
116
|
-
const aTitle = sheetTitle || 'Sheet1'
|
|
117
|
-
const batch_clear_values = sheets.write('batch_clear_values')
|
|
118
|
-
const res = await batch_clear_values({ spreadsheetId: ctx.spreadsheetId, ranges: [`${aTitle}!A1:A2`, `${aTitle}!B1:B2`] })
|
|
119
|
-
expect(Boolean(res?.spreadsheetId) || Array.isArray(res?.clearedRanges)).toBe(true)
|
|
120
|
-
}, 60000)
|
|
121
|
-
|
|
122
|
-
it('batch_update handles a trivial request (no-op findReplace)', async () => {
|
|
123
|
-
if (!ctx.spreadsheetId)
|
|
124
|
-
return expect(true).toBe(true)
|
|
125
|
-
const aTitle = sheetTitle || 'Sheet1'
|
|
126
|
-
const batch_update = sheets.write('batch_update')
|
|
127
|
-
const res = await batch_update({ spreadsheetId: ctx.spreadsheetId, requests: [
|
|
128
|
-
{ findReplace: { find: '___unlikely___', replacement: '___unlikely___', matchCase: true, searchByRegex: false, includeFormulas: false, range: { sheetId: 0 } } },
|
|
129
|
-
], includeSpreadsheetInResponse: false })
|
|
130
|
-
expect(res?.spreadsheetId).toBeTruthy()
|
|
131
|
-
}, 60000)
|
|
132
|
-
|
|
133
|
-
it('copy_to_spreadsheet copies a sheet when destination provided', async () => {
|
|
134
|
-
if (!ctx.spreadsheetId || !ctx.destSpreadsheetId)
|
|
135
|
-
return expect(true).toBe(true)
|
|
136
|
-
const copy_to_spreadsheet = sheets.write('copy_to_spreadsheet')
|
|
137
|
-
// Attempt to copy sheet with id 0 (typical for first sheet). If it fails, skip.
|
|
138
|
-
try {
|
|
139
|
-
const res = await copy_to_spreadsheet({ spreadsheetId: ctx.spreadsheetId, sheetId: 0, destinationSpreadsheetId: ctx.destSpreadsheetId })
|
|
140
|
-
expect(res?.sheetId !== undefined || res?.spreadsheetId).toBeTruthy()
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
expect(true).toBe(true)
|
|
144
|
-
}
|
|
145
|
-
}, 60000)
|
|
146
|
-
|
|
147
|
-
it('create_spreadsheet creates a spreadsheet (self-cleaning)', async () => {
|
|
148
|
-
const created = await sheets.write('create_spreadsheet')({ properties: { title: `CmdTest Sheet Tool ${Date.now()}` } })
|
|
149
|
-
const id = created?.spreadsheetId
|
|
150
|
-
expect(typeof id).toBe('string')
|
|
151
|
-
await safeCleanup(async () => id ? drive.write('delete_file')({ fileId: id }) : Promise.resolve())
|
|
152
|
-
}, 60000)
|
|
153
|
-
})
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"variants": {
|
|
3
|
-
"service_account": {
|
|
4
|
-
"label": "Service Account (recommended)",
|
|
5
|
-
"schema": {
|
|
6
|
-
"type": "object",
|
|
7
|
-
"properties": {
|
|
8
|
-
"serviceAccountJson": {
|
|
9
|
-
"type": "string",
|
|
10
|
-
"title": "Service Account JSON",
|
|
11
|
-
"description": "Full service account key JSON (contents of the downloaded JSON file from Google Cloud)."
|
|
12
|
-
},
|
|
13
|
-
"subject": {
|
|
14
|
-
"type": "string",
|
|
15
|
-
"title": "Subject / impersonated user (optional)",
|
|
16
|
-
"description": "Optional user email to impersonate when using Google Workspace domain-wide delegation."
|
|
17
|
-
},
|
|
18
|
-
"scopes": {
|
|
19
|
-
"type": "array",
|
|
20
|
-
"title": "OAuth scopes (optional)",
|
|
21
|
-
"description": "Optional override for OAuth scopes. Defaults to spreadsheets.",
|
|
22
|
-
"items": { "type": "string" }
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"required": ["serviceAccountJson"],
|
|
26
|
-
"additionalProperties": false
|
|
27
|
-
},
|
|
28
|
-
"injection": {
|
|
29
|
-
"headers": {
|
|
30
|
-
"Authorization": "Bearer {{token}}"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"preprocess": "google_service_account",
|
|
34
|
-
"healthCheck": { "notViable": true }
|
|
35
|
-
},
|
|
36
|
-
"oauth_token": {
|
|
37
|
-
"label": "OAuth Access Token (short-lived)",
|
|
38
|
-
"schema": {
|
|
39
|
-
"type": "object",
|
|
40
|
-
"properties": {
|
|
41
|
-
"token": {
|
|
42
|
-
"type": "string",
|
|
43
|
-
"title": "OAuth Access Token",
|
|
44
|
-
"description": "Short-lived Google OAuth access token with spreadsheets scope."
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"required": ["token"],
|
|
48
|
-
"additionalProperties": false
|
|
49
|
-
},
|
|
50
|
-
"injection": {
|
|
51
|
-
"headers": {
|
|
52
|
-
"Authorization": "Bearer {{token}}"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"healthCheck": { "notViable": true }
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
"default": "service_account"
|
|
59
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
Recommended: use a Google service account.
|
|
2
|
-
|
|
3
|
-
- Create a service account in Google Cloud
|
|
4
|
-
- Download a JSON key
|
|
5
|
-
- Paste the JSON into `serviceAccountJson`
|
|
6
|
-
- Share your test spreadsheet with the service account `client_email`
|
|
7
|
-
|
|
8
|
-
You can also paste a short-lived OAuth access token into `token`, but it will expire.
|
|
9
|
-
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
Obtain a short-lived Google OAuth access token:
|
|
2
|
-
|
|
3
|
-
1. Use the Google OAuth 2.0 Playground (`https://developers.google.com/oauthplayground/`) or your own OAuth flow
|
|
4
|
-
2. Select the scope: `https://www.googleapis.com/auth/spreadsheets`
|
|
5
|
-
3. Exchange the authorization code for an access token
|
|
6
|
-
4. Paste the access token here
|
|
7
|
-
|
|
8
|
-
Note: OAuth access tokens are short-lived (typically 1 hour). For long-running use, prefer the Service Account variant.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
Set up a Google Cloud Service Account:
|
|
2
|
-
|
|
3
|
-
1. Open the [Google Cloud Console](https://console.cloud.google.com/)
|
|
4
|
-
2. Enable the **Google Sheets API** for your project
|
|
5
|
-
3. Go to **IAM & Admin → Service Accounts** and create a new service account
|
|
6
|
-
4. Under **Keys**, click **Add Key → Create new key → JSON** and download the file
|
|
7
|
-
5. Paste the full contents of the JSON file here
|
|
8
|
-
6. Share your target spreadsheets with the service account's `client_email`
|
|
9
|
-
|
|
10
|
-
For Google Workspace users: optionally configure domain-wide delegation and set `subject` to the user's email.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, range, values, valueInputOption, insertDataOption, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption } = input
|
|
3
|
-
const params = new URLSearchParams()
|
|
4
|
-
if (valueInputOption)
|
|
5
|
-
params.set('valueInputOption', valueInputOption)
|
|
6
|
-
if (insertDataOption)
|
|
7
|
-
params.set('insertDataOption', insertDataOption)
|
|
8
|
-
if (includeValuesInResponse !== undefined)
|
|
9
|
-
params.set('includeValuesInResponse', String(includeValuesInResponse))
|
|
10
|
-
if (responseValueRenderOption)
|
|
11
|
-
params.set('responseValueRenderOption', responseValueRenderOption)
|
|
12
|
-
if (responseDateTimeRenderOption)
|
|
13
|
-
params.set('responseDateTimeRenderOption', responseDateTimeRenderOption)
|
|
14
|
-
const qs = params.toString()
|
|
15
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/values/${encodeURIComponent(range)}:append${qs ? `?${qs}` : ''}`
|
|
16
|
-
const res = await integration.fetch(path, { method: 'POST', body: { values } })
|
|
17
|
-
return await res.json()
|
|
18
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, requests, includeSpreadsheetInResponse, responseRanges, responseIncludeGridData } = input
|
|
3
|
-
const params = new URLSearchParams()
|
|
4
|
-
if (includeSpreadsheetInResponse !== undefined)
|
|
5
|
-
params.set('includeSpreadsheetInResponse', String(includeSpreadsheetInResponse))
|
|
6
|
-
if (Array.isArray(responseRanges))
|
|
7
|
-
responseRanges.forEach(r => params.append('responseRanges', String(r)))
|
|
8
|
-
if (responseIncludeGridData !== undefined)
|
|
9
|
-
params.set('responseIncludeGridData', String(responseIncludeGridData))
|
|
10
|
-
const qs = params.toString()
|
|
11
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}:batchUpdate${qs ? `?${qs}` : ''}`
|
|
12
|
-
const res = await integration.fetch(path, { method: 'POST', body: { requests } })
|
|
13
|
-
return await res.json()
|
|
14
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, data, valueInputOption, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption } = input
|
|
3
|
-
const params = new URLSearchParams()
|
|
4
|
-
if (valueInputOption)
|
|
5
|
-
params.set('valueInputOption', valueInputOption)
|
|
6
|
-
if (includeValuesInResponse !== undefined)
|
|
7
|
-
params.set('includeValuesInResponse', String(includeValuesInResponse))
|
|
8
|
-
if (responseValueRenderOption)
|
|
9
|
-
params.set('responseValueRenderOption', responseValueRenderOption)
|
|
10
|
-
if (responseDateTimeRenderOption)
|
|
11
|
-
params.set('responseDateTimeRenderOption', responseDateTimeRenderOption)
|
|
12
|
-
const qs = params.toString()
|
|
13
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/values:batchUpdate${qs ? `?${qs}` : ''}`
|
|
14
|
-
const res = await integration.fetch(path, { method: 'POST', body: { data } })
|
|
15
|
-
return await res.json()
|
|
16
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, range } = input
|
|
3
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/values/${encodeURIComponent(range)}:clear`
|
|
4
|
-
const res = await integration.fetch(path, { method: 'POST', body: {} })
|
|
5
|
-
return await res.json()
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, sheetId, destinationSpreadsheetId } = input
|
|
3
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/sheets/${encodeURIComponent(sheetId)}:copyTo`
|
|
4
|
-
const res = await integration.fetch(path, { method: 'POST', body: { destinationSpreadsheetId } })
|
|
5
|
-
return await res.json()
|
|
6
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, includeGridData, ranges } = input
|
|
3
|
-
const params = new URLSearchParams()
|
|
4
|
-
if (includeGridData !== undefined)
|
|
5
|
-
params.set('includeGridData', String(includeGridData))
|
|
6
|
-
if (Array.isArray(ranges))
|
|
7
|
-
ranges.forEach(r => params.append('ranges', String(r)))
|
|
8
|
-
if (input.fields)
|
|
9
|
-
params.set('fields', input.fields)
|
|
10
|
-
const qs = params.toString()
|
|
11
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}${qs ? `?${qs}` : ''}`
|
|
12
|
-
const res = await integration.fetch(path)
|
|
13
|
-
return await res.json()
|
|
14
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const toColumnName = (index) => {
|
|
3
|
-
let n = index + 1
|
|
4
|
-
let out = ''
|
|
5
|
-
while (n > 0) {
|
|
6
|
-
const rem = (n - 1) % 26
|
|
7
|
-
out = String.fromCharCode(65 + rem) + out
|
|
8
|
-
n = Math.floor((n - 1) / 26)
|
|
9
|
-
}
|
|
10
|
-
return out
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const columnNameToIndex = (name) => {
|
|
14
|
-
let value = 0
|
|
15
|
-
for (const ch of name.toUpperCase()) {
|
|
16
|
-
const code = ch.charCodeAt(0)
|
|
17
|
-
if (code < 65 || code > 90) continue
|
|
18
|
-
value = value * 26 + (code - 64)
|
|
19
|
-
}
|
|
20
|
-
return Math.max(0, value - 1)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const parseResolvedRange = (resolvedRange) => {
|
|
24
|
-
// Examples: "Sheet1!A1:D5", "Sheet1!B:B", "Sheet1!2:9"
|
|
25
|
-
const a1 = String(resolvedRange || '').split('!')[1] || ''
|
|
26
|
-
const [start = 'A1'] = a1.split(':')
|
|
27
|
-
const letters = (start.match(/[A-Za-z]+/) || ['A'])[0]
|
|
28
|
-
const rowDigits = (start.match(/\d+/) || ['1'])[0]
|
|
29
|
-
return {
|
|
30
|
-
startColumn: columnNameToIndex(letters),
|
|
31
|
-
startRow: Math.max(1, parseInt(rowDigits, 10) || 1),
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const escapeCell = (value) =>
|
|
36
|
-
String(value ?? '')
|
|
37
|
-
.replace(/\|/g, '\\|')
|
|
38
|
-
.replace(/\r?\n/g, '<br>')
|
|
39
|
-
|
|
40
|
-
const spreadsheetId = input.spreadsheetId
|
|
41
|
-
const range = input.range || 'A1:Z1000'
|
|
42
|
-
const params = new URLSearchParams()
|
|
43
|
-
if (input.valueRenderOption) params.set('valueRenderOption', input.valueRenderOption)
|
|
44
|
-
|
|
45
|
-
const qs = params.toString()
|
|
46
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/values/${encodeURIComponent(range)}${qs ? `?${qs}` : ''}`
|
|
47
|
-
const res = await integration.fetch(path)
|
|
48
|
-
const payload = await res.json()
|
|
49
|
-
|
|
50
|
-
const values = Array.isArray(payload?.values) ? payload.values : []
|
|
51
|
-
const resolvedRange = payload?.range || range
|
|
52
|
-
const { startColumn, startRow } = parseResolvedRange(resolvedRange)
|
|
53
|
-
|
|
54
|
-
const width = Math.max(1, ...values.map((row) => (Array.isArray(row) ? row.length : 0)))
|
|
55
|
-
const headerCells = Array.from({ length: width }, (_, i) => toColumnName(startColumn + i))
|
|
56
|
-
const lines = [
|
|
57
|
-
`| | ${headerCells.join(' | ')} |`,
|
|
58
|
-
`|---|${Array(width).fill('---').join('|')}|`,
|
|
59
|
-
]
|
|
60
|
-
|
|
61
|
-
for (let i = 0; i < values.length; i += 1) {
|
|
62
|
-
const row = Array.isArray(values[i]) ? values[i] : []
|
|
63
|
-
const padded = [...row, ...Array(width - row.length).fill('')]
|
|
64
|
-
const escaped = padded.map((cell) => escapeCell(cell))
|
|
65
|
-
lines.push(`| ${startRow + i} | ${escaped.join(' | ')} |`)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return {
|
|
69
|
-
spreadsheetId,
|
|
70
|
-
range: resolvedRange,
|
|
71
|
-
rowCount: values.length,
|
|
72
|
-
columnCount: width,
|
|
73
|
-
markdown: lines.join('\n'),
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
async (input) => {
|
|
2
|
-
const { spreadsheetId, range, values, valueInputOption, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption } = input
|
|
3
|
-
const params = new URLSearchParams()
|
|
4
|
-
if (valueInputOption)
|
|
5
|
-
params.set('valueInputOption', valueInputOption)
|
|
6
|
-
if (includeValuesInResponse !== undefined)
|
|
7
|
-
params.set('includeValuesInResponse', String(includeValuesInResponse))
|
|
8
|
-
if (responseValueRenderOption)
|
|
9
|
-
params.set('responseValueRenderOption', responseValueRenderOption)
|
|
10
|
-
if (responseDateTimeRenderOption)
|
|
11
|
-
params.set('responseDateTimeRenderOption', responseDateTimeRenderOption)
|
|
12
|
-
const qs = params.toString()
|
|
13
|
-
const path = `/spreadsheets/${encodeURIComponent(spreadsheetId)}/values/${encodeURIComponent(range)}${qs ? `?${qs}` : ''}`
|
|
14
|
-
const res = await integration.fetch(path, { method: 'PUT', body: { values } })
|
|
15
|
-
return await res.json()
|
|
16
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "google-sheet",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"baseUrl": "https://sheets.googleapis.com/v4",
|
|
5
|
-
"tools": [
|
|
6
|
-
{
|
|
7
|
-
"name": "get_spreadsheet",
|
|
8
|
-
"description": "Retrieve spreadsheet metadata including all sheet names, IDs, and properties. Set includeGridData=false (the default) to get only metadata without cell values. Use read_sheet for cell content. Use the 'fields' parameter to limit the response (e.g. fields='sheets.properties' to get only sheet names and IDs). The spreadsheetId appears in the URL: https://docs.google.com/spreadsheets/d/{spreadsheetId}/.",
|
|
9
|
-
"inputSchema": "schemas/get_spreadsheet.json",
|
|
10
|
-
"handler": "handlers/get_spreadsheet.js",
|
|
11
|
-
"scope": "read"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"name": "read_sheet",
|
|
15
|
-
"description": "Read cell values from a sheet range and return as a Markdown table with A1 column headers and row numbers. Use this to read and understand spreadsheet data -- the coordinates in the output can be used directly with update_values and append_values for writes. Supports optional valueRenderOption for formulas or raw numbers. Use get_spreadsheet first to discover sheet names.",
|
|
16
|
-
"inputSchema": "schemas/read_sheet.json",
|
|
17
|
-
"handler": "handlers/read_sheet.js",
|
|
18
|
-
"scope": "read"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "create_spreadsheet",
|
|
22
|
-
"description": "Create a new Google Spreadsheet. Accepts a full spreadsheet resource body, allowing you to specify the title, initial sheets, and cell data. Minimum: provide {title: 'My Spreadsheet'}. Returns the created spreadsheet including its spreadsheetId.",
|
|
23
|
-
"inputSchema": "schemas/create_spreadsheet.json",
|
|
24
|
-
"handler": "handlers/create_spreadsheet.js",
|
|
25
|
-
"scope": "write"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"name": "update_values",
|
|
29
|
-
"description": "Write values to a specific A1 range, replacing existing content. Use valueInputOption='USER_ENTERED' to parse values as the user would type them (supports formulas, dates, currency). Use 'RAW' to store values as literal strings. Provide values as a 2D array (rows of columns).",
|
|
30
|
-
"inputSchema": "schemas/update_values.json",
|
|
31
|
-
"handler": "handlers/update_values.js",
|
|
32
|
-
"scope": "write"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "append_values",
|
|
36
|
-
"description": "Append rows of values after the last row of existing data in a range. Useful for adding new rows to a table without knowing the exact next row number. Uses USER_ENTERED valueInputOption by default. The range determines which sheet to append to.",
|
|
37
|
-
"inputSchema": "schemas/append_values.json",
|
|
38
|
-
"handler": "handlers/append_values.js",
|
|
39
|
-
"scope": "write"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"name": "batch_update_values",
|
|
43
|
-
"description": "Write values to multiple A1 ranges in a single API call. More efficient than calling update_values multiple times. Provide a data array where each item has range and values. Use valueInputOption='USER_ENTERED' for formulas and dates.",
|
|
44
|
-
"inputSchema": "schemas/batch_update_values.json",
|
|
45
|
-
"handler": "handlers/batch_update_values.js",
|
|
46
|
-
"scope": "write"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "clear_values",
|
|
50
|
-
"description": "Clear all values (but not formatting) in the specified A1 range. The cells remain but their content is removed. To clear formatting as well, use batch_update with a repeatCell request.",
|
|
51
|
-
"inputSchema": "schemas/clear_values.json",
|
|
52
|
-
"handler": "handlers/clear_values.js",
|
|
53
|
-
"scope": "write"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "batch_clear_values",
|
|
57
|
-
"description": "Clear values from multiple A1 ranges in a single API call. More efficient than calling clear_values multiple times.",
|
|
58
|
-
"inputSchema": "schemas/batch_clear_values.json",
|
|
59
|
-
"handler": "handlers/batch_clear_values.js",
|
|
60
|
-
"scope": "write"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"name": "batch_update",
|
|
64
|
-
"description": "Send a spreadsheets.batchUpdate request for structural changes such as addSheet, deleteSheet, duplicateSheet, insertDimension, deleteDimension, mergeCells, sortRange, addConditionalFormatRule, and more. Accepts a requests array. Use update_values or batch_update_values for writing cell data.",
|
|
65
|
-
"inputSchema": "schemas/batch_update.json",
|
|
66
|
-
"handler": "handlers/batch_update.js",
|
|
67
|
-
"scope": "write"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "copy_to_spreadsheet",
|
|
71
|
-
"description": "Copy a specific sheet (tab) from one spreadsheet to another. Provide the source spreadsheetId, the sheetId (integer, from get_spreadsheet), and the destination spreadsheetId. Returns the copied sheet's properties in the destination spreadsheet.",
|
|
72
|
-
"inputSchema": "schemas/copy_to_spreadsheet.json",
|
|
73
|
-
"handler": "handlers/copy_to_spreadsheet.js",
|
|
74
|
-
"scope": "write"
|
|
75
|
-
}
|
|
76
|
-
]
|
|
77
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
## A1 notation
|
|
2
|
-
|
|
3
|
-
Ranges use A1 notation: `SheetName!StartCell:EndCell`
|
|
4
|
-
|
|
5
|
-
Examples:
|
|
6
|
-
- `Sheet1!A1:D10` — cells A1 to D10 on Sheet1
|
|
7
|
-
- `Sheet1!A:A` — entire column A
|
|
8
|
-
- `Sheet1!1:5` — rows 1 through 5
|
|
9
|
-
- `Sheet1` — entire sheet (all data)
|
|
10
|
-
- `A1:D10` — if the spreadsheet has only one sheet, sheet name can be omitted
|
|
11
|
-
- `'My Sheet'!A1:B5` — sheet names with spaces must be quoted with single quotes
|
|
12
|
-
|
|
13
|
-
Use `get_spreadsheet` with `fields='sheets.properties'` first to discover all sheet names and their IDs.
|
|
14
|
-
|
|
15
|
-
## valueInputOption
|
|
16
|
-
|
|
17
|
-
Controls how input values are interpreted in `update_values`, `append_values`, and `batch_update_values`:
|
|
18
|
-
|
|
19
|
-
- `USER_ENTERED` *(recommended)* — values are parsed as if a user typed them. Supports formulas (`=SUM(A1:A10)`), dates (`1/15/2024`), currency (`$1,234.56`), and percentages (`50%`)
|
|
20
|
-
- `RAW` — values are stored as literal strings, no parsing. Use when you want exact string storage
|
|
21
|
-
|
|
22
|
-
## valueRenderOption
|
|
23
|
-
|
|
24
|
-
Controls how values are returned in `read_sheet`:
|
|
25
|
-
|
|
26
|
-
- `FORMATTED_VALUE` *(default)* — returns values as displayed in the UI (e.g. `"$1,234.56"`, `"50%"`)
|
|
27
|
-
- `UNFORMATTED_VALUE` — returns raw numbers (e.g. `1234.56`, `0.5`)
|
|
28
|
-
- `FORMULA` — returns formulas as strings (e.g. `"=SUM(A1:A10)"`)
|
|
29
|
-
|
|
30
|
-
## Recommended workflow
|
|
31
|
-
|
|
32
|
-
1. Call `get_spreadsheet` with `fields='sheets.properties'` to get sheet names and sheetIds
|
|
33
|
-
2. Use `read_sheet` with an A1 range to read data as markdown plus explicit row/column coordinates
|
|
34
|
-
3. Use the coordinates from `read_sheet` output (e.g. `B3`) with `update_values` or `append_values` for writes
|
|
35
|
-
|
|
36
|
-
## Structural changes
|
|
37
|
-
|
|
38
|
-
For adding/removing sheets, inserting/deleting rows or columns, or formatting cells, use `batch_update` with the appropriate request types:
|
|
39
|
-
- `addSheet` — add a new tab
|
|
40
|
-
- `deleteSheet` — remove a tab (requires sheetId, not name)
|
|
41
|
-
- `insertDimension` — insert rows or columns
|
|
42
|
-
- `deleteDimension` — delete rows or columns
|
|
43
|
-
- `repeatCell` — apply formatting to a range
|
|
44
|
-
|
|
45
|
-
## Large spreadsheets
|
|
46
|
-
|
|
47
|
-
Avoid calling `get_spreadsheet` with `includeGridData=true` on large spreadsheets -- it can return megabytes of data. Instead:
|
|
48
|
-
- Use `read_sheet` with specific ranges
|
|
49
|
-
- Use `get_spreadsheet` with `fields='sheets.properties'` to get sheet metadata only
|