arcrun 1.0.9 → 1.3.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.
Files changed (66) hide show
  1. package/dist/commands/auth-recipe.d.ts +11 -0
  2. package/dist/commands/auth-recipe.d.ts.map +1 -0
  3. package/dist/commands/auth-recipe.js +180 -0
  4. package/dist/commands/auth-recipe.js.map +1 -0
  5. package/dist/commands/config.d.ts +4 -0
  6. package/dist/commands/config.d.ts.map +1 -0
  7. package/dist/commands/config.js +39 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/init.d.ts +5 -2
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +147 -19
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/install-harness.d.ts +2 -0
  14. package/dist/commands/install-harness.d.ts.map +1 -0
  15. package/dist/commands/install-harness.js +122 -0
  16. package/dist/commands/install-harness.js.map +1 -0
  17. package/dist/commands/mcp-setup.d.ts +12 -0
  18. package/dist/commands/mcp-setup.d.ts.map +1 -0
  19. package/dist/commands/mcp-setup.js +42 -0
  20. package/dist/commands/mcp-setup.js.map +1 -0
  21. package/dist/commands/parts.d.ts.map +1 -1
  22. package/dist/commands/parts.js +48 -2
  23. package/dist/commands/parts.js.map +1 -1
  24. package/dist/commands/push.d.ts.map +1 -1
  25. package/dist/commands/push.js +13 -0
  26. package/dist/commands/push.js.map +1 -1
  27. package/dist/commands/recipe.d.ts.map +1 -1
  28. package/dist/commands/recipe.js +63 -1
  29. package/dist/commands/recipe.js.map +1 -1
  30. package/dist/commands/update.d.ts +13 -0
  31. package/dist/commands/update.d.ts.map +1 -0
  32. package/dist/commands/update.js +89 -0
  33. package/dist/commands/update.js.map +1 -0
  34. package/dist/commands/validate.js +2 -2
  35. package/dist/commands/validate.js.map +1 -1
  36. package/dist/index.js +58 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/api-recipe-seeds.d.ts +32 -0
  39. package/dist/lib/api-recipe-seeds.d.ts.map +1 -0
  40. package/dist/lib/api-recipe-seeds.js +108 -0
  41. package/dist/lib/api-recipe-seeds.js.map +1 -0
  42. package/dist/lib/cf-api.d.ts +22 -0
  43. package/dist/lib/cf-api.d.ts.map +1 -1
  44. package/dist/lib/cf-api.js +58 -0
  45. package/dist/lib/cf-api.js.map +1 -1
  46. package/dist/lib/config.d.ts +34 -1
  47. package/dist/lib/config.d.ts.map +1 -1
  48. package/dist/lib/config.js +123 -8
  49. package/dist/lib/config.js.map +1 -1
  50. package/dist/lib/deploy.d.ts +56 -0
  51. package/dist/lib/deploy.d.ts.map +1 -0
  52. package/dist/lib/deploy.js +239 -0
  53. package/dist/lib/deploy.js.map +1 -0
  54. package/dist/lib/exposure-warning.d.ts +25 -0
  55. package/dist/lib/exposure-warning.d.ts.map +1 -0
  56. package/dist/lib/exposure-warning.js +92 -0
  57. package/dist/lib/exposure-warning.js.map +1 -0
  58. package/dist/lib/yaml-parser.d.ts.map +1 -1
  59. package/dist/lib/yaml-parser.js +7 -1
  60. package/dist/lib/yaml-parser.js.map +1 -1
  61. package/harness/CLAUDE.block.md +15 -0
  62. package/harness/commands/arcrun.md +29 -0
  63. package/harness/hooks/arcrun-guard.sh +54 -0
  64. package/harness/settings.fragment.json +16 -0
  65. package/harness/skills/arcrun-mindset/SKILL.md +78 -0
  66. package/package.json +5 -4
@@ -0,0 +1,89 @@
1
+ /**
2
+ * acr update — 拉新 GitHub release,重新部署零件/引擎到用戶自己的 Cloudflare。
3
+ *
4
+ * 與 acr init --self-hosted 走同一條「下載 release → 注入 KV id → wrangler deploy」的路,
5
+ * 差別只在:init 是首次(建 KV/R2 + 寫 config),update 是沿用既有 config 重部署變動的 Worker。
6
+ *
7
+ * 對應 SDD:.agents/specs/arcrun/sdk-and-website/self-hosted-init.md §3「acr update」
8
+ *
9
+ * 誠實限制(mindset §7 / SDD §6):部署依賴 GitHub release(含預編譯 wasm),
10
+ * release 產製管道補上前,誠實回報未實作,不假裝更新成功。
11
+ */
12
+ import chalk from 'chalk';
13
+ import { loadConfig } from '../lib/config.js';
14
+ import { CfAccountClient } from '../lib/cf-api.js';
15
+ import { wranglerAvailable, downloadAndDeploy, REQUIRED_KV_NAMESPACES, } from '../lib/deploy.js';
16
+ export async function cmdUpdate() {
17
+ const config = loadConfig();
18
+ if (config.mode !== 'self-hosted') {
19
+ console.log(chalk.yellow('\n acr update 只用於 self-hosted 模式(部署在你自己的 Cloudflare)。'));
20
+ console.log(chalk.gray(' 目前模式:' + config.mode + '。如要 self-host,先跑 acr init --self-hosted。\n'));
21
+ process.exit(1);
22
+ }
23
+ if (!config.cloudflare_account_id || !config.cf_api_token) {
24
+ console.log(chalk.yellow('\n config 缺 cloudflare_account_id / cf_api_token,無法部署。'));
25
+ console.log(chalk.gray(' 請重新跑 acr init --self-hosted。\n'));
26
+ process.exit(1);
27
+ }
28
+ if (!wranglerAvailable()) {
29
+ console.log(chalk.yellow('\n ✗ 找不到 wrangler(Cloudflare CLI)。請先 npm i -g wrangler。\n'));
30
+ process.exit(1);
31
+ }
32
+ console.log(chalk.bold('\n acr update — 拉新 release 並重新部署\n'));
33
+ // 重新解析「全部」KV namespace id(冪等:已存在則重用),不只 config 存的兩個。
34
+ // 壓測 §4.1.3:舊版 update 只注入 WEBHOOKS+CREDENTIALS_KV,其餘 6 個注入成空字串 →
35
+ // 重部署反而可能弄壞需要 RECIPES/EXEC_CONTEXT/... 的 worker。改為與 init 同樣全建妥。
36
+ const cf = new CfAccountClient(config.cloudflare_account_id, config.cf_api_token);
37
+ const kvNamespaceIds = {};
38
+ try {
39
+ const existing = await cf.listKvNamespaces();
40
+ for (const title of REQUIRED_KV_NAMESPACES) {
41
+ kvNamespaceIds[title] = await cf.ensureKvNamespace(title, existing);
42
+ }
43
+ }
44
+ catch (e) {
45
+ console.log(chalk.yellow(`\n ✗ 解析 KV namespace 失敗:${e instanceof Error ? e.message : e}\n`));
46
+ process.exit(1);
47
+ }
48
+ const ctx = {
49
+ accountId: config.cloudflare_account_id,
50
+ apiToken: config.cf_api_token,
51
+ workerSubdomain: extractSubdomain(config.cypher_executor_url),
52
+ kvNamespaceIds,
53
+ };
54
+ const result = await downloadAndDeploy(ctx);
55
+ if (result.implemented) {
56
+ console.log(chalk.green('\n ✓ 部署完成'));
57
+ // 重跑 seed(薄殼:呼叫 API /init/seed;冪等,覆寫既有)。
58
+ // 修壓測 §4.1.3「update 不做 seed,但 init 提示說 update 會重試 seed」的矛盾。
59
+ const cypherUrl = config.cypher_executor_url
60
+ ?? result.cypherExecutorUrl
61
+ ?? (ctx.workerSubdomain ? `https://arcrun-cypher-executor.${ctx.workerSubdomain}.workers.dev` : '');
62
+ if (cypherUrl) {
63
+ process.stdout.write(chalk.gray(' → 重新 seed recipe(API + auth,由 API 灌入)...'));
64
+ try {
65
+ const res = await fetch(`${cypherUrl}/init/seed`, { method: 'POST' });
66
+ const body = await res.json().catch(() => null);
67
+ console.log(res.ok && body?.success
68
+ ? chalk.green(` ✓ ${body.message ?? ''}`)
69
+ : chalk.yellow(` ⚠ ${body?.message ?? `HTTP ${res.status}`}`));
70
+ }
71
+ catch (e) {
72
+ console.log(chalk.yellow(` ⚠ seed 失敗(${e instanceof Error ? e.message : e})`));
73
+ }
74
+ }
75
+ console.log('');
76
+ }
77
+ else {
78
+ console.log(chalk.yellow(' ⚠ 更新尚未自動化:'));
79
+ console.log(chalk.gray(' ' + result.message.split('\n').join('\n ')) + '\n');
80
+ }
81
+ }
82
+ /** 從 cypher_executor_url(https://arcrun-cypher-executor.<sub>.workers.dev)抽 subdomain。*/
83
+ function extractSubdomain(url) {
84
+ if (!url)
85
+ return '';
86
+ const m = url.match(/arcrun-cypher-executor\.([^.]+)\.workers\.dev/);
87
+ return m?.[1] ?? '';
88
+ }
89
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -78,11 +78,11 @@ export async function cmdValidate(filePath, options = {}) {
78
78
  if (res.ok) {
79
79
  const data = await res.json();
80
80
  if (data.missing.length > 0) {
81
- check('零件存在性', false, `WASM_BUCKET 中找不到:${data.missing.join(', ')}`);
81
+ check('零件存在性', false, `registry 中找不到零件:${data.missing.join(', ')}`);
82
82
  allPassed = false;
83
83
  }
84
84
  else {
85
- check('零件存在性', true, '所有零件均已在 WASM_BUCKET');
85
+ check('零件存在性', true, '所有零件均已在 registry');
86
86
  }
87
87
  }
88
88
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,7 +7,11 @@
7
7
  * 使用:acr <指令>
8
8
  */
9
9
  import { Command } from 'commander';
10
+ import { readFileSync } from 'node:fs';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { dirname, join } from 'node:path';
10
13
  import { cmdInit } from './commands/init.js';
14
+ import { cmdConfig } from './commands/config.js';
11
15
  import { cmdCredsPush } from './commands/creds.js';
12
16
  import { cmdPush } from './commands/push.js';
13
17
  import { cmdRun } from './commands/run.js';
@@ -16,18 +20,41 @@ import { cmdParts, cmdPartsScaffold, cmdPartsPublish } from './commands/parts.js
16
20
  import { cmdRecipePush, cmdRecipeList, cmdRecipeDelete } from './commands/recipe.js';
17
21
  import { cmdList } from './commands/list.js';
18
22
  import { cmdLogs } from './commands/logs.js';
23
+ import { cmdUpdate } from './commands/update.js';
24
+ import { cmdInstallHarness } from './commands/install-harness.js';
25
+ import { cmdMcpSetup } from './commands/mcp-setup.js';
26
+ import { cmdAuthRecipeList, cmdAuthRecipeInfo, cmdAuthRecipeScaffold } from './commands/auth-recipe.js';
19
27
  const program = new Command();
28
+ // 版本從 package.json 動態讀(dist/index.js 旁的 ../package.json),不 hardcode → 永不漂移。
29
+ // 之前 hardcode '1.1.0' 與 package.json '1.2.0' 不一致,正是「忘了改」的反例。
30
+ function readVersion() {
31
+ try {
32
+ const here = dirname(fileURLToPath(import.meta.url));
33
+ return JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8')).version ?? '0.0.0';
34
+ }
35
+ catch {
36
+ return '0.0.0';
37
+ }
38
+ }
20
39
  program
21
40
  .name('acr')
22
41
  .description('arcrun — AI Workflow CLI for Cloudflare Workers + WASM')
23
- .version('1.0.9');
24
- // acr init [--self-hosted]
42
+ .version(readVersion());
43
+ // acr init [--self-hosted] [--account-id <id>] [--api-token <token>]
25
44
  program
26
45
  .command('init')
27
46
  .description('互動式初始化設定(建立 ~/.arcrun/config.yaml)')
28
47
  .option('--local', '本機模式:不需要 Cloudflare 帳號,直接在本機測試 workflow')
29
48
  .option('--self-hosted', '完全 Self-hosted 模式:自行部署所有 Cloudflare Worker')
49
+ .option('--account-id <id>', 'self-hosted:CF Account ID(非互動;亦可用 CLOUDFLARE_ACCOUNT_ID env)')
50
+ .option('--api-token <token>', 'self-hosted:CF API Token(非互動;亦可用 CLOUDFLARE_API_TOKEN env)')
30
51
  .action((options) => cmdInit(options));
52
+ // acr config [--where]:印出目前生效的設定與每個值的來源層(env / 專案層 / 全域)
53
+ program
54
+ .command('config')
55
+ .description('顯示目前生效的設定與來源層(避免在錯的資料夾用錯帳號)')
56
+ .option('--where', '顯示每個設定值來自哪一層(env > 專案層 .arcrun.yaml > 全域)')
57
+ .action((options) => cmdConfig(options));
31
58
  // acr creds push [credentials.yaml]
32
59
  const credsCmd = program.command('creds').description('Credential 管理');
33
60
  credsCmd
@@ -80,6 +107,20 @@ recipeCmd
80
107
  .command('delete <id>')
81
108
  .description('刪除 recipe(canonical_id 或 rec_hash)')
82
109
  .action((id) => cmdRecipeDelete(id));
110
+ // acr auth-recipe list / info / scaffold
111
+ const authRecipeCmd = program.command('auth-recipe').description('第三方服務認證 Recipe(新增服務整合)');
112
+ authRecipeCmd
113
+ .command('list')
114
+ .description('列出所有平台預建的服務整合(Notion、Slack、GitHub 等)')
115
+ .action(() => cmdAuthRecipeList());
116
+ authRecipeCmd
117
+ .command('info <service>')
118
+ .description('顯示服務 recipe 詳情(需要哪些 credential)')
119
+ .action((service) => cmdAuthRecipeInfo(service));
120
+ authRecipeCmd
121
+ .command('scaffold <service>')
122
+ .description('輸出 credentials.yaml 範本 + workflow.yaml 使用範例')
123
+ .action((service) => cmdAuthRecipeScaffold(service));
83
124
  // acr list
84
125
  program
85
126
  .command('list')
@@ -90,5 +131,20 @@ program
90
131
  .command('logs <workflow>')
91
132
  .description('顯示 workflow 最近執行記錄')
92
133
  .action((workflow) => cmdLogs(workflow));
134
+ // acr update(self-hosted:拉新 release 重新部署零件/引擎)
135
+ program
136
+ .command('update')
137
+ .description('self-hosted:拉新 release 並重新部署到你的 Cloudflare')
138
+ .action(() => cmdUpdate());
139
+ // acr install-harness(把 arcrun 的 CC harness 裝進當前專案)
140
+ program
141
+ .command('install-harness')
142
+ .description('把 arcrun 的 CC harness(mindset/提醒/防做歪 hook/指令)裝進當前專案')
143
+ .action(() => cmdInstallHarness());
144
+ // acr mcp-setup(依 config 解析的 mcp_url 寫專案 .mcp.json,讓 Claude Code 連對的 MCP)
145
+ program
146
+ .command('mcp-setup')
147
+ .description('在目前資料夾寫 .mcp.json 連對的 arcrun MCP(依 config 的 mcp_url;接案切資料夾自動切)')
148
+ .action(() => cmdMcpSetup());
93
149
  program.parse(process.argv);
94
150
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * api-recipe-seeds.ts
3
+ *
4
+ * 現役 API recipe 的種子定義。self-host 新帳號 init 時把這些灌進空的 RECIPES KV
5
+ * (透過 cypher-executor 的 POST /recipes,或 CF KV REST API 直接寫)。
6
+ *
7
+ * API recipe = http_request + 固定設定(endpoint/method 模板)。
8
+ * 不需 deploy Worker,cypher-executor 執行時直接 fetch(見 cypher-executor/src/routes/recipes.ts)。
9
+ *
10
+ * 放在 CLI 端而非 cypher-executor/src:
11
+ * - seed 資料是「installer 要灌進用戶 KV 的種子」,本就屬 CLI 職責(SDD self-hosted-init.md §4)。
12
+ * - rule 02 §2.2 hook 擋 cypher-executor TS hard-code API endpoint;seed 的 endpoint 是資料欄位,
13
+ * 放 CLI 端避開誤判,也更符合職責切分。
14
+ *
15
+ * 來源:2026-06-01 從 prod cypher.arcrun.dev/recipes 逐一查得的現役定義。
16
+ * 對應 SDD:.agents/specs/arcrun/sdk-and-website/self-hosted-init.md §5
17
+ *
18
+ * KBDB recipe(kbdb_*)採 Supabase 模式(richblack 2026-06-02):
19
+ * 進 seed = 展示能力(引子)。使用者要用 → 去 arcrun 取統一 API Key 當 credential。
20
+ * FOLLOW-UP(KBDB 端):endpoint 現為 kbdb.finally.click,KBDB 應改用統一對外網址;
21
+ * KBDB 改網址後同步更新此處。seed 先照現況進。
22
+ */
23
+ export interface ApiRecipeSeed {
24
+ canonical_id: string;
25
+ display_name: string;
26
+ description?: string;
27
+ endpoint: string;
28
+ method: string;
29
+ auth_service?: string;
30
+ }
31
+ export declare const API_RECIPE_SEEDS: ApiRecipeSeed[];
32
+ //# sourceMappingURL=api-recipe-seeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-recipe-seeds.d.ts","sourceRoot":"","sources":["../../src/lib/api-recipe-seeds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAsF3C,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * api-recipe-seeds.ts
3
+ *
4
+ * 現役 API recipe 的種子定義。self-host 新帳號 init 時把這些灌進空的 RECIPES KV
5
+ * (透過 cypher-executor 的 POST /recipes,或 CF KV REST API 直接寫)。
6
+ *
7
+ * API recipe = http_request + 固定設定(endpoint/method 模板)。
8
+ * 不需 deploy Worker,cypher-executor 執行時直接 fetch(見 cypher-executor/src/routes/recipes.ts)。
9
+ *
10
+ * 放在 CLI 端而非 cypher-executor/src:
11
+ * - seed 資料是「installer 要灌進用戶 KV 的種子」,本就屬 CLI 職責(SDD self-hosted-init.md §4)。
12
+ * - rule 02 §2.2 hook 擋 cypher-executor TS hard-code API endpoint;seed 的 endpoint 是資料欄位,
13
+ * 放 CLI 端避開誤判,也更符合職責切分。
14
+ *
15
+ * 來源:2026-06-01 從 prod cypher.arcrun.dev/recipes 逐一查得的現役定義。
16
+ * 對應 SDD:.agents/specs/arcrun/sdk-and-website/self-hosted-init.md §5
17
+ *
18
+ * KBDB recipe(kbdb_*)採 Supabase 模式(richblack 2026-06-02):
19
+ * 進 seed = 展示能力(引子)。使用者要用 → 去 arcrun 取統一 API Key 當 credential。
20
+ * FOLLOW-UP(KBDB 端):endpoint 現為 kbdb.finally.click,KBDB 應改用統一對外網址;
21
+ * KBDB 改網址後同步更新此處。seed 先照現況進。
22
+ */
23
+ export const API_RECIPE_SEEDS = [
24
+ // ── KBDB(Supabase 模式,auth_service=kbdb static_key)──
25
+ {
26
+ canonical_id: 'kbdb_get',
27
+ display_name: 'KBDB Get',
28
+ description: 'GET 讀取 block / 查詢。_path 帶查詢路徑。auth: kbdb static_key。',
29
+ endpoint: 'https://kbdb.finally.click{{_path}}',
30
+ method: 'GET',
31
+ auth_service: 'kbdb',
32
+ },
33
+ {
34
+ canonical_id: 'kbdb_create_block',
35
+ display_name: 'KBDB Create Block',
36
+ description: 'POST /blocks 建立 block。body 帶 block 欄位(content/type/page_name/source/user_id 等)。auth: kbdb static_key。',
37
+ endpoint: 'https://kbdb.finally.click/blocks',
38
+ method: 'POST',
39
+ auth_service: 'kbdb',
40
+ },
41
+ {
42
+ canonical_id: 'kbdb_patch_block',
43
+ display_name: 'KBDB Patch Block',
44
+ description: 'PATCH /blocks/:id 局部更新。_path 帶 /blocks/{id},body 帶要改的欄位。auth: kbdb static_key。',
45
+ endpoint: 'https://kbdb.finally.click{{_path}}',
46
+ method: 'PATCH',
47
+ auth_service: 'kbdb',
48
+ },
49
+ {
50
+ canonical_id: 'kbdb_delete',
51
+ display_name: 'KBDB Delete',
52
+ description: 'DELETE /blocks/:id 刪除 block。_path 帶 /blocks/{id}。auth: kbdb static_key。',
53
+ endpoint: 'https://kbdb.finally.click{{_path}}',
54
+ method: 'DELETE',
55
+ auth_service: 'kbdb',
56
+ },
57
+ {
58
+ canonical_id: 'kbdb_ingest',
59
+ display_name: 'KBDB Ingest',
60
+ description: 'POST /blocks/ingest 批次寫入。body 帶 input。auth: kbdb static_key。',
61
+ endpoint: 'https://kbdb.finally.click/blocks/ingest',
62
+ method: 'POST',
63
+ auth_service: 'kbdb',
64
+ },
65
+ // ── Google(service_account)──
66
+ {
67
+ canonical_id: 'gmail_send',
68
+ display_name: 'Gmail Send',
69
+ description: '寄 Gmail。POST messages/send,body 帶 raw(base64url MIME)。auth: google service_account。',
70
+ endpoint: 'https://gmail.googleapis.com/gmail/v1/users/me/messages/send',
71
+ method: 'POST',
72
+ auth_service: 'google_gmail_sa',
73
+ },
74
+ {
75
+ canonical_id: 'google_sheets_append',
76
+ display_name: 'Google Sheets Append',
77
+ description: '寫 Sheets。PUT values?valueInputOption=RAW,body 帶 values。auth: google service_account。',
78
+ endpoint: 'https://sheets.googleapis.com{{_path}}',
79
+ method: 'PUT',
80
+ auth_service: 'google_sheets_sa',
81
+ },
82
+ {
83
+ canonical_id: 'google_sheets_read',
84
+ display_name: 'Google Sheets Read',
85
+ description: '讀 Sheets。GET values。_path 帶完整路徑。auth: google service_account。',
86
+ endpoint: 'https://sheets.googleapis.com{{_path}}',
87
+ method: 'GET',
88
+ auth_service: 'google_sheets_sa',
89
+ },
90
+ // ── 訊息(static_key)──
91
+ {
92
+ canonical_id: 'telegram_send',
93
+ display_name: 'Telegram Send',
94
+ description: 'Telegram sendMessage。token 在 URL path({{auth.bot_token}}),body 帶 chat_id+text。auth: static_key path 注入。',
95
+ endpoint: 'https://api.telegram.org/bot{{auth.bot_token}}/sendMessage',
96
+ method: 'POST',
97
+ auth_service: 'telegram',
98
+ },
99
+ {
100
+ canonical_id: 'line_notify_send',
101
+ display_name: 'LINE Notify',
102
+ description: 'LINE Notify 推訊息。POST notify,body 帶 message(form-urlencoded)。auth: static_key Bearer line token。',
103
+ endpoint: 'https://notify-api.line.me/api/notify',
104
+ method: 'POST',
105
+ auth_service: 'line_notify',
106
+ },
107
+ ];
108
+ //# sourceMappingURL=api-recipe-seeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-recipe-seeds.js","sourceRoot":"","sources":["../../src/lib/api-recipe-seeds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,sDAAsD;IACtD;QACE,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,qCAAqC;QAC/C,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,MAAM;KACrB;IACD;QACE,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,mBAAmB;QACjC,WAAW,EAAE,uGAAuG;QACpH,QAAQ,EAAE,mCAAmC;QAC7C,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,MAAM;KACrB;IACD;QACE,YAAY,EAAE,kBAAkB;QAChC,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,gFAAgF;QAC7F,QAAQ,EAAE,qCAAqC;QAC/C,MAAM,EAAE,OAAO;QACf,YAAY,EAAE,MAAM;KACrB;IACD;QACE,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,yEAAyE;QACtF,QAAQ,EAAE,qCAAqC;QAC/C,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,MAAM;KACrB;IACD;QACE,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,0CAA0C;QACpD,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,MAAM;KACrB;IAED,+BAA+B;IAC/B;QACE,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,qFAAqF;QAClG,QAAQ,EAAE,8DAA8D;QACxE,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,iBAAiB;KAChC;IACD;QACE,YAAY,EAAE,sBAAsB;QACpC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,sFAAsF;QACnG,QAAQ,EAAE,wCAAwC;QAClD,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,kBAAkB;KACjC;IACD;QACE,YAAY,EAAE,oBAAoB;QAClC,YAAY,EAAE,oBAAoB;QAClC,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,EAAE,wCAAwC;QAClD,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,kBAAkB;KACjC;IAED,sBAAsB;IACtB;QACE,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,yGAAyG;QACtH,QAAQ,EAAE,4DAA4D;QACtE,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,UAAU;KACzB;IACD;QACE,YAAY,EAAE,kBAAkB;QAChC,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,iGAAiG;QAC9G,QAAQ,EAAE,uCAAuC;QACjD,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,aAAa;KAC5B;CACF,CAAC"}
@@ -20,6 +20,28 @@ export declare class CfKvClient {
20
20
  }>>;
21
21
  delete(key: string): Promise<void>;
22
22
  }
23
+ /**
24
+ * Cloudflare Account-level API wrapper(self-hosted installer 用)。
25
+ *
26
+ * 負責 acr init --self-hosted 的資源建立:驗 token、建/列 KV namespace、查 workers.dev subdomain。
27
+ * (不建 R2:R2 是 dead storage 且綁卡違背開源免費;見 init.ts step 2 + registry-canon Phase 1.5。)
28
+ * 與 CfKvClient(綁單一 namespace 的 KV 操作)職責不同——這個是帳號層級的資源管理。
29
+ * 對應 SDD:.agents/specs/arcrun/sdk-and-website/self-hosted-init.md §3 step 1-2
30
+ */
31
+ export declare class CfAccountClient {
32
+ private accountBase;
33
+ private headers;
34
+ constructor(accountId: string, apiToken: string);
35
+ private cf;
36
+ /** 驗證 token 能存取此 account(權限不足會在後續建立操作報錯,這裡先確認 account 可達)。*/
37
+ verifyAccess(): Promise<void>;
38
+ /** 列出現有 KV namespace(冪等用:已存在就重用,不重建)。回傳 title → id 對照。*/
39
+ listKvNamespaces(): Promise<Map<string, string>>;
40
+ /** 建立 KV namespace(若同名已存在則回傳既有 id,冪等)。*/
41
+ ensureKvNamespace(title: string, existing?: Map<string, string>): Promise<string>;
42
+ /** 查 workers.dev subdomain(cypher-executor WORKER_SUBDOMAIN 用,組對內 component URL)。*/
43
+ getWorkersSubdomain(): Promise<string>;
44
+ }
23
45
  /** AES-GCM 加密 credential(與 cypher-executor credential-injector 解密邏輯對應)*/
24
46
  export declare function encryptCredential(value: string, encryptionKey: string): Promise<string>;
25
47
  //# sourceMappingURL=cf-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cf-api.d.ts","sourceRoot":"","sources":["../../src/lib/cf-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAyB;gBAE5B,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,iBAAiB;IAQ7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYxC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAgBhG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUzC;AAED,yEAAyE;AACzE,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB7F"}
1
+ {"version":3,"file":"cf-api.d.ts","sourceRoot":"","sources":["../../src/lib/cf-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAyB;gBAE5B,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,iBAAiB;IAQ7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYxC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAgBhG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUzC;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;YAQjC,EAAE;IAehB,6DAA6D;IACvD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,yDAAyD;IACnD,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAStD,yCAAyC;IACnC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAYvF,oFAAoF;IAC9E,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI7C;AAED,yEAAyE;AACzE,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB7F"}
@@ -60,6 +60,64 @@ export class CfKvClient {
60
60
  }
61
61
  }
62
62
  }
63
+ /**
64
+ * Cloudflare Account-level API wrapper(self-hosted installer 用)。
65
+ *
66
+ * 負責 acr init --self-hosted 的資源建立:驗 token、建/列 KV namespace、查 workers.dev subdomain。
67
+ * (不建 R2:R2 是 dead storage 且綁卡違背開源免費;見 init.ts step 2 + registry-canon Phase 1.5。)
68
+ * 與 CfKvClient(綁單一 namespace 的 KV 操作)職責不同——這個是帳號層級的資源管理。
69
+ * 對應 SDD:.agents/specs/arcrun/sdk-and-website/self-hosted-init.md §3 step 1-2
70
+ */
71
+ export class CfAccountClient {
72
+ accountBase;
73
+ headers;
74
+ constructor(accountId, apiToken) {
75
+ this.accountBase = `${CF_API_BASE}/accounts/${accountId}`;
76
+ this.headers = {
77
+ 'Authorization': `Bearer ${apiToken}`,
78
+ 'Content-Type': 'application/json',
79
+ };
80
+ }
81
+ async cf(path, init) {
82
+ const res = await fetch(`${this.accountBase}${path}`, {
83
+ ...init,
84
+ headers: { ...this.headers, ...(init?.headers ?? {}) },
85
+ });
86
+ const data = await res.json().catch(() => null);
87
+ if (!res.ok || !data?.success) {
88
+ const msg = data?.errors?.map(e => e.message).join('; ') ?? `HTTP ${res.status}`;
89
+ throw new Error(`CF API ${path} 失敗:${msg}`);
90
+ }
91
+ return data.result;
92
+ }
93
+ /** 驗證 token 能存取此 account(權限不足會在後續建立操作報錯,這裡先確認 account 可達)。*/
94
+ async verifyAccess() {
95
+ // GET /accounts/{id} 能通 = token 有此 account 的基本讀權限
96
+ await this.cf('');
97
+ }
98
+ /** 列出現有 KV namespace(冪等用:已存在就重用,不重建)。回傳 title → id 對照。*/
99
+ async listKvNamespaces() {
100
+ const result = await this.cf('/storage/kv/namespaces?per_page=100');
101
+ const map = new Map();
102
+ for (const ns of result)
103
+ map.set(ns.title, ns.id);
104
+ return map;
105
+ }
106
+ /** 建立 KV namespace(若同名已存在則回傳既有 id,冪等)。*/
107
+ async ensureKvNamespace(title, existing) {
108
+ const known = existing ?? (await this.listKvNamespaces());
109
+ const found = known.get(title);
110
+ if (found)
111
+ return found;
112
+ const result = await this.cf('/storage/kv/namespaces', { method: 'POST', body: JSON.stringify({ title }) });
113
+ return result.id;
114
+ }
115
+ /** 查 workers.dev subdomain(cypher-executor WORKER_SUBDOMAIN 用,組對內 component URL)。*/
116
+ async getWorkersSubdomain() {
117
+ const result = await this.cf('/workers/subdomain');
118
+ return result.subdomain;
119
+ }
120
+ }
63
121
  /** AES-GCM 加密 credential(與 cypher-executor credential-injector 解密邏輯對應)*/
64
122
  export async function encryptCredential(value, encryptionKey) {
65
123
  if (!encryptionKey || encryptionKey.length < 64) {
@@ -1 +1 @@
1
- {"version":3,"file":"cf-api.js","sourceRoot":"","sources":["../../src/lib/cf-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cf-api.js","sourceRoot":"","sources":["../../src/lib/cf-api.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,44 @@ export interface ArcrunConfig {
8
8
  cypher_executor_url?: string;
9
9
  credentials_kv_namespace_id?: string;
10
10
  webhooks_kv_namespace_id?: string;
11
- wasm_bucket?: string;
11
+ mcp_url?: string;
12
12
  multi_tenant?: boolean;
13
+ exposure_consented?: Record<string, {
14
+ confirmed_at: string;
15
+ suppress_future?: boolean;
16
+ }>;
13
17
  }
18
+ /** 專案層設定檔名(就近往上找)。含憑證 → 必須 gitignore(見 createCredentialsYamlIfMissing)。*/
19
+ export declare const PROJECT_CONFIG_NAME = ".arcrun.yaml";
20
+ /** 設定來源層級(acr config --where 用,讓使用者知道每個值來自哪一層,避免用錯帳號)。*/
21
+ export type ConfigSource = 'env' | 'project' | 'global' | 'default';
22
+ /**
23
+ * 平台預設 MCP URL(mcp_url 未設時的 fallback,SaaS 用戶用)。
24
+ * MCP 搬進 arcrun 主庫後改用 arcrun.dev zone(mcp/wrangler.toml route = mcp.arcrun.dev)。
25
+ */
26
+ export declare const DEFAULT_MCP_URL = "https://mcp.arcrun.dev";
14
27
  export declare function configExists(): boolean;
28
+ /** 從 startDir 就近往上逐層找專案層 .arcrun.yaml,回傳第一個命中的路徑(停在檔案系統根)。*/
29
+ export declare function findProjectConfig(startDir?: string): string | undefined;
30
+ /**
31
+ * 三層分層解析:全域 → 疊專案層 → 疊 env(欄位級 merge,高層只覆蓋它提供的欄位)。
32
+ * 任一層都沒有 mode 時 fallback 'local',讓 validate --offline 等在無設定下可運作。
33
+ */
15
34
  export declare function loadConfig(): ArcrunConfig;
35
+ /** 解析每個關鍵欄位的最終值與來源層(acr config --where 用)。*/
36
+ export declare function resolveConfigSources(): Array<{
37
+ field: keyof ArcrunConfig;
38
+ value: string;
39
+ source: ConfigSource;
40
+ }>;
41
+ /** 回傳本次解析實際採用的專案層設定檔路徑(無則 undefined)。acr config --where 顯示用。*/
42
+ export declare function activeProjectConfigPath(): string | undefined;
16
43
  export declare function saveConfig(config: ArcrunConfig): void;
17
44
  export declare function getCypherExecutorUrl(config: ArcrunConfig): string;
45
+ /**
46
+ * 取得 MCP server URL(薄殼原則:與 cypher_url 同一份 config 解析)。
47
+ * config 有 mcp_url(env/專案/全域 任一層)→ 用它;否則 fallback 平台預設。
48
+ * acr mcp-setup 用此決定要寫進專案 .mcp.json 的 URL → 切資料夾自動切 MCP。
49
+ */
50
+ export declare function getMcpUrl(config: ArcrunConfig): string;
18
51
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;IAE3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAKD,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,UAAU,IAAI,YAAY,CAOzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAGrD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAKjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;IAE3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAOlC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1F;AAKD,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAapE;;;GAGG;AACH,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAatF;AA4BD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAQzC;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CAoBhH;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAGrD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAKjE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEtD"}