Files
Arcrun/registry/components/google_sheets/component.contract.yaml
T
Leo e630fca2df fix(arcrun): address PR #2 review findings
Security:
- init.ts: remove cf_api_token from POST /register (only email sent to arcrun.dev)
- cf-api.ts: remove base64 fallback in encryptCredential, throw clear error if key missing

Correctness:
- submitComponent.ts: replace KBDB dependency with SUBMISSIONS_KV + R2 (standalone)
- registry/types.ts: remove KBDB_URL/KBDB_INTERNAL_TOKEN, add SUBMISSIONS_KV/ANALYTICS_KV
- webhooks.ts: add waitUntil(writeExecutionVerdict) for fire-and-forget analytics
- execution-logger.ts: create missing module (was imported but didn't exist)
- cypher-executor/types.ts + wrangler.toml: add ANALYTICS_KV binding
- gmail/telegram/google_sheets/line_notify/http_request: no_network_syscall false (api category)
- init.ts: replace require() with await import() for ES module compatibility

Cleanup:
- Remove arcrun/builtins/ (dead code — initComponents used old HTTP endpoint model,
  all 21 components now in TinyGo WASM under registry/components/)

Docs:
- tasks.md: update to reflect completed work and remaining items

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 13:07:28 +08:00

66 lines
1.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
canonical_id: "google_sheets"
display_name: "Google 試算表"
category: "api"
version: "v1"
wasi_target: "preview1"
stability: "floating"
runtime_compat:
- "cf-workers"
- "workerd"
- "wazero"
constraints:
max_size_kb: 2048
max_cold_start_ms: 50
no_network_syscall: false
no_filesystem_syscall: true
io_model: "stdin_stdout_json"
input_schema:
type: object
required: [spreadsheet_id, range, access_token]
properties:
spreadsheet_id:
type: string
range:
type: string
description: 如 Sheet1!A1:B10
action:
type: string
enum: [read, write]
default: read
values:
type: array
description: write 時的資料(二維陣列)
access_token:
type: string
description: Google OAuth access token
output_schema:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
values: {}
range:
type: string
gherkin_tests:
- scenario: "缺少 access_token"
given: '{"spreadsheet_id":"abc","range":"Sheet1!A1"}'
then_contains: '{"success":false'
- scenario: "缺少 spreadsheet_id"
given: '{"range":"Sheet1!A1","access_token":"token"}'
then_contains: '{"success":false'
tags: [integration, google, sheets, oauth]
description: "讀取或寫入 Google 試算表。透過 host function 呼叫 Google Sheets API,需要 OAuth access_token。"
credentials_required:
- key: google_oauth
type: google_oauth
description: "Google OAuth access tokenspreadsheets scope"
inject_as: access_token
config_example: |
read_sheet: # 節點名稱(可自訂)
spreadsheet_id: "" # 試算表 ID(必填)
range: "" # 範圍,如 Sheet1!A1:B10(必填)
# access_token 由 credentials.yaml 的 google_oauth 自動注入