@lark-base-open/base-database-cli 1.8.0 → 1.9.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 (105) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +7 -5
  3. package/dist/agent-tools-guide.js +1 -1
  4. package/dist/agent-tools-guide.js.map +1 -1
  5. package/dist/agent-tools-skill.d.ts +1 -7
  6. package/dist/agent-tools-skill.d.ts.map +1 -1
  7. package/dist/agent-tools-skill.js +90 -87
  8. package/dist/agent-tools-skill.js.map +1 -1
  9. package/dist/author-skill-hash.d.ts +6 -0
  10. package/dist/author-skill-hash.d.ts.map +1 -0
  11. package/dist/author-skill-hash.js +42 -0
  12. package/dist/author-skill-hash.js.map +1 -0
  13. package/dist/author-skill-pack.d.ts +24 -0
  14. package/dist/author-skill-pack.d.ts.map +1 -0
  15. package/dist/author-skill-pack.js +77 -0
  16. package/dist/author-skill-pack.js.map +1 -0
  17. package/dist/author-skill.d.ts +42 -0
  18. package/dist/author-skill.d.ts.map +1 -0
  19. package/dist/author-skill.js +226 -0
  20. package/dist/author-skill.js.map +1 -0
  21. package/dist/check.d.ts +19 -2
  22. package/dist/check.d.ts.map +1 -1
  23. package/dist/check.js +41 -9
  24. package/dist/check.js.map +1 -1
  25. package/dist/deploy.d.ts.map +1 -1
  26. package/dist/deploy.js +11 -0
  27. package/dist/deploy.js.map +1 -1
  28. package/dist/distribution-commands.d.ts.map +1 -1
  29. package/dist/distribution-commands.js +3 -3
  30. package/dist/distribution-commands.js.map +1 -1
  31. package/dist/draft-publication.d.ts.map +1 -1
  32. package/dist/draft-publication.js +9 -1
  33. package/dist/draft-publication.js.map +1 -1
  34. package/dist/draft-state.d.ts +1 -0
  35. package/dist/draft-state.d.ts.map +1 -1
  36. package/dist/draft-state.js +3 -0
  37. package/dist/draft-state.js.map +1 -1
  38. package/dist/draft-submit.d.ts +5 -0
  39. package/dist/draft-submit.d.ts.map +1 -1
  40. package/dist/draft-submit.js +19 -3
  41. package/dist/draft-submit.js.map +1 -1
  42. package/dist/install.d.ts.map +1 -1
  43. package/dist/install.js +9 -11
  44. package/dist/install.js.map +1 -1
  45. package/dist/lark-base-database-tools-call.d.ts +8 -0
  46. package/dist/lark-base-database-tools-call.d.ts.map +1 -0
  47. package/dist/lark-base-database-tools-call.js +18 -0
  48. package/dist/lark-base-database-tools-call.js.map +1 -0
  49. package/dist/managed-agent-docs.js +1 -1
  50. package/dist/managed-agent-docs.js.map +1 -1
  51. package/dist/program.d.ts.map +1 -1
  52. package/dist/program.js +30 -9
  53. package/dist/program.js.map +1 -1
  54. package/dist/pull.d.ts.map +1 -1
  55. package/dist/pull.js +1 -0
  56. package/dist/pull.js.map +1 -1
  57. package/dist/site-capabilities.d.ts +7 -0
  58. package/dist/site-capabilities.d.ts.map +1 -0
  59. package/dist/site-capabilities.js +11 -0
  60. package/dist/site-capabilities.js.map +1 -0
  61. package/dist/site-skill-bundle.d.ts +9 -0
  62. package/dist/site-skill-bundle.d.ts.map +1 -0
  63. package/dist/site-skill-bundle.js +55 -0
  64. package/dist/site-skill-bundle.js.map +1 -0
  65. package/dist/skill-install-transaction.d.ts +13 -0
  66. package/dist/skill-install-transaction.d.ts.map +1 -0
  67. package/dist/skill-install-transaction.js +279 -0
  68. package/dist/skill-install-transaction.js.map +1 -0
  69. package/dist/skill.d.ts +22 -2
  70. package/dist/skill.d.ts.map +1 -1
  71. package/dist/skill.js +192 -28
  72. package/dist/skill.js.map +1 -1
  73. package/dist/source-archive-inputs.d.ts.map +1 -1
  74. package/dist/source-archive-inputs.js +2 -1
  75. package/dist/source-archive-inputs.js.map +1 -1
  76. package/dist/updates.js +2 -2
  77. package/dist/updates.js.map +1 -1
  78. package/dist/workspace-fingerprint.d.ts.map +1 -1
  79. package/dist/workspace-fingerprint.js +1 -0
  80. package/dist/workspace-fingerprint.js.map +1 -1
  81. package/package.json +6 -2
  82. package/resources/author-skill-rules.json +19 -0
  83. package/skills/lark-base-database/SKILL.md +2 -0
  84. package/skills/lark-base-database/references/agent-tool-design.md +4 -2
  85. package/skills/lark-base-database/references/agent-tools.md +22 -29
  86. package/skills/lark-base-database/references/database-function.md +2 -2
  87. package/skills/lark-base-database/references/development.md +14 -4
  88. package/skills/lark-base-database/references/frontend-design-guide.md +1 -1
  89. package/skills/lark-base-database/references/notifications.md +2 -2
  90. package/skills/lark-base-database/references/workspace.md +6 -0
  91. package/skills/lark-base-database-tools-call/SKILL.md +13 -0
  92. package/skills/lark-base-database-tools-call/references/call.md +131 -0
  93. package/templates/author-skill/SKILL.md +10 -0
  94. package/templates/author-skill/references/reimburse.md +10 -0
  95. package/templates/database-starter/page/package-lock.json +4 -4
  96. package/templates/database-starter/page/package.json +1 -1
  97. package/templates/database-starter/page/src/main.test.ts +7 -3
  98. package/templates/database-starter/page/src/main.tsx +16 -5
  99. package/templates/database-starter-v2/base-app.config.ts +2 -0
  100. package/templates/database-starter-v2/package-lock.json +9 -9
  101. package/templates/database-starter-v2/page/package.json +1 -1
  102. package/templates/database-starter-v2/page/src/App.tsx +1 -1
  103. package/templates/database-starter-v2/page/src/index.css +29 -1
  104. package/templates/database-starter-v2/page/src/main.tsx +5 -1
  105. package/templates/database-starter-v2/server/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.0] - 2026-10-31
4
+
5
+ ### Added
6
+
7
+ - 支持站点作者 Skill:工程内的 `skill/` 会随 `check`、`deploy` 校验和发布,`pull` 可恢复。删除本地 `skill/` 不会清除已发布的作者 Skill,如需替换,请发布一份新的最小 `skill/`。
8
+ - 新增 `skill pack`,用已发布站点的身份把本地作者 Skill 打成成员可安装的站点 Skill 包,可指定 Preview 版本。
9
+ - 站点提供通用调用协议时,安装站点 Skill 会一并安装 `lark-base-database-tools-call`,统一函数发现、契约读取、调用与分页流程。
10
+ - 多页面应用使用 hash 路由时,可同步为可分享的子页面深链接。
11
+
12
+ ### Changed
13
+
14
+ - 新建工程的 Page 和 Server SDK 升级到 `0.5.2`,classic 模板的 Channel 升级到 `0.2.1`;存量工程保留原依赖,升级需用户显式授权。
15
+ - `install`、`skill install` 和 `agent-tools skill install` 的默认目标由 `codex` 改为 `all`,默认安装到所有 Agent。
16
+
17
+ ### Fixed
18
+
19
+ - 业务命令的更新检查等待时间放宽到 2 秒,减少检查超时。
20
+
21
+ ## [1.8.1] - 2026-10-29
22
+
23
+ ### Fixed
24
+
25
+ - 修复新建工程的默认浅色主题与业务配色,避免页面明暗不一致。
26
+ - 完善主题切换指引,按工程实际安装的 SDK 判断可用能力。
27
+
3
28
  ## [1.8.0] - 2026-10-29
4
29
 
5
30
  ### Added
package/README.md CHANGED
@@ -24,7 +24,7 @@ npx @lark-base-open/base-database-cli@latest install --target all
24
24
  在 WorkBuddy 对话框中粘贴时,如果包名中的 `@` 被识别为引用标签,改为直接在系统终端执行;
25
25
  输入框中的标签展示、任务取消都不能作为安装成功或失败的回执。
26
26
 
27
- 安装器将自身版本安装到 npm 全局目录,再从全局包安装 Skill;已有同版本 CLI 时只安装 Skill。支持 `--target codex|claude|agents|workbuddy|all` 或 `--dir <skills 根目录>`,默认目标为 Codex。
27
+ 安装器将自身版本安装到 npm 全局目录,再从全局包安装 Skill;已有同版本 CLI 时只安装 Skill。支持 `--target codex|claude|agents|workbuddy|all` 或 `--dir <skills 根目录>`,默认目标为所有支持的 Agent 目录。
28
28
 
29
29
  | 目标 | Skill 根目录 |
30
30
  | --- | --- |
@@ -34,7 +34,8 @@ npx @lark-base-open/base-database-cli@latest install --target all
34
34
  | `workbuddy` | `~/.codebuddy/skills` |
35
35
  | `all` | 以上全部目录 |
36
36
 
37
- 每个目标中安装 `lark-base-database/` 完整目录,包含 `SKILL.md` 和 references。
37
+ 每个目标中安装 `lark-base-database/` 完整目录,包含 `SKILL.md` 和 references;
38
+ 同时安装或更新通用调用 Skill `lark-base-database-tools-call/`。
38
39
  WorkBuddy 在代码开发时兼容用户级 `.codebuddy` 配置,项目级安装可使用
39
40
  `--dir <项目根目录>/.codebuddy/skills`,项目级同名 Skill 优先。
40
41
  目录加载不等于技能管理界面已完成导入;需通过界面安装时,在 WorkBuddy 的
@@ -75,7 +76,7 @@ base-database-cli update --version 1.0.1 --skill-dir "/Users/alice/.codex/skills
75
76
 
76
77
  npm 的权限、网络和环境错误直接报告,不预先探测或自动修复用户环境,也不覆盖用户的 npm engine-strict 配置。CLI 升级成功但部分 Skill 失败时返回 `skill-update-failed`,分别列出成功目录、失败目录及各自的修复参数;继续处理其他目录,不自动整体回滚。切换 npm/Node 环境后,应使用该环境中的全局 CLI。
77
78
 
78
- CLI 版本来自包内 `package.json`;每份 Skill 的 `base-database-version.json` 记录其来源版本;用户目录下 `.base-database-cli/update-state.json` 按状态区分成功查询与 `unavailable`:成功结果缓存 24 小时,失败结果缓存 1 小时,负缓存有效期间不再发起查询。查询与全局安装使用相同的 npm 全局配置,忽略项目级 registry;手动 `check-update` 在线查询总预算 5 秒,`doctor`、`init`、`pull`、`deploy` 等业务命令的更新查询预算为 500 ms,有新版时在输出附带 `update` 字段(普通文本错误在 stderr 附带该字段);检查失败与缓存不可写不影响业务结果。CI 跳过公开更新。
79
+ CLI 版本来自包内 `package.json`;每份 Skill 的 `base-database-version.json` 记录其来源版本;用户目录下 `.base-database-cli/update-state.json` 按状态区分成功查询与 `unavailable`:成功结果缓存 24 小时,失败结果缓存 1 小时,负缓存有效期间不再发起查询。查询与全局安装使用相同的 npm 全局配置,忽略项目级 registry;手动 `check-update` 在线查询总预算 5 秒,`doctor`、`init`、`pull`、`deploy` 等业务命令的更新查询预算为 2 秒,有新版时在输出附带 `update` 字段(普通文本错误在 stderr 附带该字段);检查失败与缓存不可写不影响业务结果。CI 跳过公开更新。
79
80
 
80
81
  ## 创建、恢复并发布数据库应用
81
82
 
@@ -179,7 +180,7 @@ base-database-cli init ./todo-database \
179
180
 
180
181
  ### 恢复并修改已有数据库应用
181
182
 
182
- 已有数据库应用存在源码制品时,使用 `pull` 恢复可编辑工程,不要重新执行 `init`。目标目录必须为空;`pull` 会按制品模板布局恢复 Page、Database Function、Mutation、FaaS 和 AI Function 的本地声明(见[工程目录](skills/lark-base-database/references/workspace.md#工程目录与构建模式)),读取应用 Catalog,并重建 `base-database.jsonc` 与 `catalog.json`,不会创建或修改 Base、应用元信息和 binding:
183
+ 已有数据库应用存在源码制品时,使用 `pull` 恢复可编辑工程,不要重新执行 `init`。目标目录必须为空;`pull` 会按制品模板布局恢复 Page、Database Function、Mutation、FaaS 和 AI Function,以及作者 Skill 的 `skill/` 的本地声明(见[工程目录](skills/lark-base-database/references/workspace.md#工程目录与构建模式)),读取应用 Catalog,并重建 `base-database.jsonc` 与 `catalog.json`,不会创建或修改 Base、应用元信息和 binding:
183
184
 
184
185
  旧制品中的 `sql/` 会在恢复时迁移为 `database-functions/`。本地旧工程仍可直接检查和发布,但不能同时保留两个目录。
185
186
 
@@ -275,6 +276,7 @@ base-database-cli install
275
276
  base-database-cli check-update
276
277
  base-database-cli update
277
278
  base-database-cli skill install
279
+ base-database-cli skill pack --output <directory> [--env prod|preview]
278
280
  base-database-cli auth login|logout|whoami
279
281
  base-database-cli doctor
280
282
  base-database-cli init
@@ -294,7 +296,7 @@ base-database-cli lark-cli -- <arguments...>
294
296
 
295
297
  `deploy` 发布 Preview 时先解析账号环境、获取目标应用依赖策略并校验 package.json 来源,失败时不安装。策略通过后安装依赖,再提取 SDK 契约、校验声明与查询,之后构建和发布;查询校验失败不会继续 build,但依赖可能已安装。依赖指纹未变化且 node_modules 有效时可跳过 npm ci;`--force-install` 强制重装,`--no-install` 要求依赖已就绪。各类 Function 的发布顺序及错误边界见[发布参考](skills/lark-base-database/references/release.md#function-发布顺序与错误边界)。
296
298
 
297
- `pull` 从 `source_code` 一次恢复 Page、Database Function、Mutation、FaaS 和 AI Function;恢复来源与兼容边界见[工程与环境](skills/lark-base-database/references/workspace.md#先选择工程来源)。Preview deploy 按本地完整声明统一覆盖各类 Function;AI 的配置、Page 调用和显式跳过边界见[AI Function](skills/lark-base-database/references/ai-function.md)。
299
+ `pull` 从 `source_code` 一次恢复 Page、Database Function、Mutation、FaaS 和 AI Function,以及作者 Skill 的 `skill/`;恢复来源与兼容边界见[工程与环境](skills/lark-base-database/references/workspace.md#先选择工程来源)。Preview deploy 按本地完整声明统一覆盖各类 Function;AI 的配置、Page 调用和显式跳过边界见[AI Function](skills/lark-base-database/references/ai-function.md)。
298
300
 
299
301
  Preview deploy 按草稿基线原子提交源码、Function、工具策略及新增绑定;远端修订变化时整次拒绝覆盖。缺少基线或发生冲突时,按[远端更新与冲突恢复](skills/lark-base-database/references/workspace.md#远端更新与冲突恢复)对齐。
300
302
 
@@ -108,7 +108,7 @@ export function externalAgentGuide(workspace, appToken, runtime, environment, en
108
108
  }
109
109
  }
110
110
  const handoff = [
111
- `开发者:在包含 base-database.jsonc 的工程目录执行 \`${command}\`。需要我现在在工程目录执行,安装到当前用户的 Codex Skill 目录吗?${projectUpdate}`,
111
+ `开发者:在包含 base-database.jsonc 的工程目录执行 \`${command}\`。需要我现在在工程目录执行,安装到当前用户所有支持的 Agent Skill 目录(Codex、Agents、Claude、WorkBuddy)吗?${projectUpdate}`,
112
112
  ...(memberInstallation
113
113
  ? [
114
114
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tools-guide.js","sourceRoot":"","sources":["../src/agent-tools-guide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tools-guide.js","sourceRoot":"","sources":["../src/agent-tools-guide.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,10 @@
1
+ export { validateSiteSkillBundle } from './site-skill-bundle.js';
1
2
  import { type RuntimeProfile } from './environment.js';
2
3
  import { type SkillInstallOptions } from './skill.js';
3
- interface SiteSkillBundle {
4
- skillName: string;
5
- hash: string;
6
- files: Record<string, string>;
7
- }
8
- export declare function validateSiteSkillBundle(value: unknown): SiteSkillBundle;
9
4
  export declare function installAgentToolsSkill(options: SkillInstallOptions, runtime?: RuntimeProfile, site?: string, explicitProfile?: string): Promise<{
10
5
  ok: boolean;
11
6
  installed: string[];
12
7
  skillName: string;
13
8
  hash: string;
14
9
  }>;
15
- export {};
16
10
  //# sourceMappingURL=agent-tools-skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tools-skill.d.ts","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAMD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA8BvE;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,cAAuC,EAChD,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,MAAM;;;;;GAgKzB"}
1
+ {"version":3,"file":"agent-tools-skill.d.ts","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAOjE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAMpB,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,cAAuC,EAChD,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,MAAM;;;;;GAoMzB"}
@@ -1,42 +1,22 @@
1
1
  import { LarkCliError, safeDiagnostic } from './lark-cli-error.js';
2
2
  import { skillFrontmatter } from './skill-frontmatter.js';
3
- import { recordSiteSkillInstallation } from './agent-tools-guide.js';
3
+ import { fileHashes, withSkillInstallLock, } from './skill-install-transaction.js';
4
+ import { bundledLarkBaseDatabaseToolsCall } from './lark-base-database-tools-call.js';
5
+ import { validateSiteSkillBundle } from './site-skill-bundle.js';
6
+ export { validateSiteSkillBundle } from './site-skill-bundle.js';
4
7
  import { createHash } from 'node:crypto';
5
- import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
6
- import { homedir, tmpdir } from 'node:os';
8
+ import { existsSync, readFileSync } from 'node:fs';
9
+ import { homedir } from 'node:os';
7
10
  import { dirname, join } from 'node:path';
8
11
  import { readConfig } from './config.js';
9
12
  import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
10
13
  import { responseData, resolveLarkProfileEnvironment, runLarkCli, } from './lark-cli.js';
11
- import { installSkillDirectory, skillDestinations, } from './skill.js';
14
+ import { assertSkillDestination, installSkillTransaction, installedLarkBaseDatabaseToolsVersion, skillDestinations, } from './skill.js';
12
15
  function isRecord(value) {
13
16
  return value !== null && typeof value === 'object' && !Array.isArray(value);
14
17
  }
15
- export function validateSiteSkillBundle(value) {
16
- if (!isRecord(value))
17
- throw new Error('Invalid site Skill bundle');
18
- const { skillName, hash, files } = value;
19
- if (typeof skillName !== 'string' ||
20
- skillName.length > 64 ||
21
- !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(skillName))
22
- throw new Error('Invalid site Skill bundle: illegal skillName');
23
- if (typeof hash !== 'string' || hash.trim() === '')
24
- throw new Error('Invalid site Skill bundle: hash is required');
25
- if (!isRecord(files) || typeof files['SKILL.md'] !== 'string')
26
- throw new Error('Invalid site Skill bundle: SKILL.md is required');
27
- for (const [path, content] of Object.entries(files)) {
28
- if (path !== 'SKILL.md' &&
29
- !/^references\/[^/\\\u0000-\u001f<>:"|?*]+\.md$/.test(path))
30
- throw new Error(`Invalid site Skill bundle path: ${path}; only SKILL.md and references/*.md are allowed`);
31
- if (typeof content !== 'string')
32
- throw new Error(`Invalid site Skill bundle content: ${path}`);
33
- }
34
- const header = skillFrontmatter(files['SKILL.md']);
35
- if (header.value.name !== skillName)
36
- throw new Error('Invalid site Skill bundle: SKILL.md frontmatter name must match skillName');
37
- return { skillName, hash, files: files };
38
- }
39
18
  export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_PROFILE, site, explicitProfile) {
19
+ withSkillInstallLock(() => { });
40
20
  const workspace = process.cwd();
41
21
  const config = site ? undefined : readConfig(workspace);
42
22
  if (config)
@@ -49,6 +29,8 @@ export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_P
49
29
  'api',
50
30
  'GET',
51
31
  `/open-apis/base/v3/sites/${encodeURIComponent(siteToken)}/skill`,
32
+ '--params',
33
+ JSON.stringify({ layout: 'split' }),
52
34
  ], env, config ? workspace : homedir()));
53
35
  }
54
36
  catch (error) {
@@ -72,20 +54,20 @@ export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_P
72
54
  throw failure('The current account cannot access this site Skill. Parameter: site. Fix: Ask a site administrator to add you to the site, then retry the installation.');
73
55
  throw error;
74
56
  }
75
- const bundle = validateSiteSkillBundle(rawBundle);
76
- // Validate the whole bundle before creating files or touching any installation.
77
- const temporary = mkdtempSync(join(tmpdir(), 'base-database-site-skill-'));
78
- try {
79
- for (const [path, content] of Object.entries(bundle.files)) {
80
- const target = join(temporary, path);
81
- mkdirSync(dirname(target), { recursive: true });
82
- writeFileSync(target, content);
57
+ return withSkillInstallLock(() => {
58
+ const bundle = validateSiteSkillBundle(rawBundle);
59
+ const common = bundle.layout === 'split'
60
+ ? bundledLarkBaseDatabaseToolsCall(runtime)
61
+ : undefined;
62
+ if (common && common.protocolVersion < bundle.protocolVersion) {
63
+ throw new Error(`This site requires lark-base-database-tools-call protocolVersion ${bundle.protocolVersion}; this CLI bundles ${common.protocolVersion}. Upgrade the CLI and retry. No new installation was started.`);
83
64
  }
84
65
  let installName = bundle.skillName;
85
- let tracked = [];
86
- const receiptFile = userReceiptPath();
66
+ const receiptFile = site
67
+ ? userReceiptPath()
68
+ : join(workspace, '.base-database-cli/state/agent-tools-skill.json');
69
+ const tracked = readUserReceipt(receiptFile, site ? undefined : { appToken: siteToken, runtime: runtime.name });
87
70
  if (site) {
88
- tracked = readUserReceipt(receiptFile);
89
71
  const destinations = skillDestinations(options, installName);
90
72
  const conflicts = destinations.some((directory) => existsSync(directory) &&
91
73
  tracked.some((item) => item.directory === directory && item.siteToken !== siteToken));
@@ -104,50 +86,87 @@ export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_P
104
86
  'SKILL.md': skillFrontmatter(bundle.files['SKILL.md']).rename(installName),
105
87
  },
106
88
  };
107
- validateSiteSkillBundle(installBundle);
108
- if (installBundle !== bundle) {
109
- for (const [path, content] of Object.entries(installBundle.files)) {
110
- const target = join(temporary, path);
111
- mkdirSync(dirname(target), { recursive: true });
112
- writeFileSync(target, content);
113
- }
89
+ const directories = skillDestinations(options, installName);
90
+ const hashes = (files) => Object.fromEntries(Object.entries(files).map(([name, content]) => [
91
+ name,
92
+ createHash('sha256').update(content).digest('hex'),
93
+ ]));
94
+ const files = hashes(installBundle.files);
95
+ for (const directory of directories) {
96
+ assertSkillDestination(directory);
97
+ const trackedSite = Boolean(site) &&
98
+ tracked.some((item) => item.directory === directory &&
99
+ item.siteToken === siteToken &&
100
+ item.runtime === runtime.name);
101
+ if (existsSync(directory) && !options.force && !trackedSite)
102
+ throw new Error(`${directory} already exists; pass --force to replace it`);
114
103
  }
115
- const installed = installSkillDirectory(temporary, installName, options, (directory) => Boolean(site) &&
116
- tracked.some((item) => item.directory === directory &&
117
- item.siteToken === siteToken &&
118
- item.runtime === runtime.name));
119
- try {
120
- if (site)
121
- writeUserReceipt(receiptFile, tracked, siteToken, runtime.name, installBundle, installed);
122
- else
123
- recordSiteSkillInstallation(workspace, siteToken, runtime.name, bundle, installed);
124
- }
125
- catch {
126
- process.stderr.write(site
127
- ? 'Warning: The Skill was installed, but its user-level installation record could not be saved. Fix: Check write access to the user CLI state directory and verify the destination site before reinstalling; name-conflict protection cannot reliably identify the existing site.\n'
128
- : 'Warning: The Skill was installed, but its project installation record could not be saved. Fix: Check write access to the project CLI state directory before updating the installation.\n');
129
- }
130
- return {
104
+ const roots = [...new Set(directories.map(dirname))];
105
+ const commonDirectories = common
106
+ ? roots.map((root) => join(root, common.skillName))
107
+ : [];
108
+ const installations = tracked.filter((item) => ![...directories, ...commonDirectories].includes(item.directory));
109
+ installations.push(...directories.map((directory) => ({
110
+ directory,
111
+ siteToken,
112
+ runtime: runtime.name,
113
+ hash: bundle.hash,
114
+ files,
115
+ })));
116
+ if (common)
117
+ for (const directory of commonDirectories) {
118
+ const existingVersion = installedLarkBaseDatabaseToolsVersion(directory);
119
+ const retain = existingVersion !== undefined &&
120
+ existingVersion > common.protocolVersion;
121
+ installations.push({
122
+ directory,
123
+ siteToken,
124
+ runtime: runtime.name,
125
+ hash: `protocol:${retain ? existingVersion : common.protocolVersion}`,
126
+ files: retain ? fileHashes(directory) : hashes(common.files),
127
+ });
128
+ }
129
+ const receipt = site
130
+ ? { installations }
131
+ : {
132
+ appToken: siteToken,
133
+ runtime: runtime.name,
134
+ installations: installations.map(({ directory, hash, files }) => ({
135
+ directory,
136
+ hash,
137
+ files,
138
+ })),
139
+ };
140
+ return installSkillTransaction({
141
+ packages: [
142
+ { name: installName, files: installBundle.files },
143
+ ...(common ? [{ name: common.skillName, files: common.files }] : []),
144
+ ],
145
+ destinations: roots,
146
+ receiptPath: receiptFile,
147
+ receiptContent: JSON.stringify(receipt, null, 2) + '\n',
148
+ }).then(() => ({
131
149
  ok: true,
132
- installed,
150
+ installed: directories,
133
151
  skillName: installName,
134
152
  hash: bundle.hash,
135
- };
136
- }
137
- finally {
138
- rmSync(temporary, { recursive: true, force: true });
139
- }
153
+ }));
154
+ });
140
155
  }
141
156
  function userReceiptPath() {
142
157
  return join(homedir(), '.base-database-cli/state/agent-tools-skills.json');
143
158
  }
144
- function readUserReceipt(path) {
159
+ function readUserReceipt(path, project) {
145
160
  try {
146
161
  const value = JSON.parse(readFileSync(path, 'utf8'));
162
+ if (project &&
163
+ (value.appToken !== project.appToken || value.runtime !== project.runtime))
164
+ return [];
147
165
  return Array.isArray(value.installations)
148
166
  ? value.installations.filter((item) => isRecord(item) &&
149
- typeof item.siteToken === 'string' &&
150
- typeof item.runtime === 'string' &&
167
+ (Boolean(project) ||
168
+ (typeof item.siteToken === 'string' &&
169
+ typeof item.runtime === 'string')) &&
151
170
  typeof item.directory === 'string' &&
152
171
  typeof item.hash === 'string' &&
153
172
  isRecord(item.files) &&
@@ -158,22 +177,6 @@ function readUserReceipt(path) {
158
177
  return [];
159
178
  }
160
179
  }
161
- function writeUserReceipt(path, existing, siteToken, runtime, bundle, directories) {
162
- const files = Object.fromEntries(Object.entries(bundle.files).map(([name, content]) => [
163
- name,
164
- createHash('sha256').update(content).digest('hex'),
165
- ]));
166
- const installations = existing.filter((item) => !directories.includes(item.directory));
167
- installations.push(...directories.map((directory) => ({
168
- siteToken,
169
- runtime,
170
- directory,
171
- hash: bundle.hash,
172
- files,
173
- })));
174
- mkdirSync(dirname(path), { recursive: true });
175
- writeFileSync(path, JSON.stringify({ installations }, null, 2) + '\n');
176
- }
177
180
  function parseSiteToken(value) {
178
181
  const input = value.trim();
179
182
  let token = input;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tools-skill.js","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tools-skill.js","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function hashWithVersion(files: Record<string, string>, version: string, excludedFields?: string[]): string;
2
+ export declare function splitHash(files: Record<string, string>): string;
3
+ export declare function siteSkillName(name: string, token: string): string;
4
+ /** Match Go encoding/json with SetEscapeHTML(false), including JavaScript separators. */
5
+ export declare function skillScalar(value: string): string;
6
+ //# sourceMappingURL=author-skill-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-skill-hash.d.ts","sourceRoot":"","sources":["../src/author-skill-hash.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,cAAc,WAAgB,GAC7B,MAAM,CAyBR;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE/D;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASjE;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD"}
@@ -0,0 +1,42 @@
1
+ import { createHash } from 'node:crypto';
2
+ export function hashWithVersion(files, version, excludedFields = ['skillHash']) {
3
+ const hash = createHash('sha256').update(version).update('\0');
4
+ for (const path of Object.keys(files).sort((a, b) => Buffer.compare(Buffer.from(a), Buffer.from(b)))) {
5
+ let content = files[path];
6
+ if (path === 'SKILL.md' && content.startsWith('---\n')) {
7
+ const end = content.indexOf('\n---\n', 4);
8
+ if (end >= 0) {
9
+ content =
10
+ '---\n' +
11
+ content
12
+ .slice(4, end)
13
+ .split('\n')
14
+ .filter((line) => !excludedFields.some((field) => line.startsWith(`${field}: `)))
15
+ .join('\n') +
16
+ content.slice(end);
17
+ }
18
+ }
19
+ hash.update(path).update('\0').update(content).update('\0');
20
+ }
21
+ return hash.digest('hex');
22
+ }
23
+ export function splitHash(files) {
24
+ return hashWithVersion(files, 'split-v1', ['skillHash', 'siteEnv']);
25
+ }
26
+ export function siteSkillName(name, token) {
27
+ const slug = [...name]
28
+ .map((char) => [...char.toLowerCase()][0])
29
+ .join('')
30
+ .replace(/[^a-z0-9]+/g, '-')
31
+ .replace(/^-|-$/g, '')
32
+ .slice(0, 24)
33
+ .replace(/-$/g, '');
34
+ return `site-${slug ? slug + '-' : ''}${createHash('sha256').update(token).digest('hex').slice(0, 8)}`;
35
+ }
36
+ /** Match Go encoding/json with SetEscapeHTML(false), including JavaScript separators. */
37
+ export function skillScalar(value) {
38
+ return JSON.stringify(value)
39
+ .replace(/\u2028/g, '\\u2028')
40
+ .replace(/\u2029/g, '\\u2029');
41
+ }
42
+ //# sourceMappingURL=author-skill-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-skill-hash.js","sourceRoot":"","sources":["../src/author-skill-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,eAAe,CAC7B,KAA6B,EAC7B,OAAe,EACf,cAAc,GAAG,CAAC,WAAW,CAAC;IAE9B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/C,EAAE,CAAC;QACF,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO;wBACP,OAAO;6BACJ,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;6BACb,KAAK,CAAC,IAAI,CAAC;6BACX,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CACjE;6BACA,IAAI,CAAC,IAAI,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,KAA6B;IACrD,OAAO,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;SACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,EAAE,CAAC;SACR,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACzB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type RuntimeProfile } from './environment.js';
2
+ import { type AuthorSkill } from './author-skill.js';
3
+ export declare function renderSplit(project: {
4
+ name: string;
5
+ token: string;
6
+ description: string;
7
+ }, author: AuthorSkill | undefined, env: 'prod' | 'preview'): {
8
+ skillName: string;
9
+ hash: string;
10
+ files: {
11
+ 'SKILL.md': string;
12
+ };
13
+ };
14
+ /** Uses current deployment metadata. Rename requires redeploy, then repack, to match GET /skill. */
15
+ export declare function packAuthorSkill(options: {
16
+ directory: string;
17
+ output: string;
18
+ env: 'prod' | 'preview';
19
+ }, runtime: RuntimeProfile): Promise<{
20
+ skillName: string;
21
+ hash: string;
22
+ files: Record<string, string>;
23
+ }>;
24
+ //# sourceMappingURL=author-skill-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-skill-pack.d.ts","sourceRoot":"","sources":["../src/author-skill-pack.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAG3B,wBAAgB,WAAW,CACzB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAC7D,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,MAAM,GAAG,SAAS;;;;;;EA8BxB;AACD,oGAAoG;AACpG,wBAAsB,eAAe,CACnC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACvE,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA2E7E"}
@@ -0,0 +1,77 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { readConfig } from './config.js';
4
+ import { assertProjectRuntimeProfile, } from './environment.js';
5
+ import { responseData, runLarkCli, resolveLarkProfileEnvironment, } from './lark-cli.js';
6
+ import { readRemoteDraft } from './draft-state.js';
7
+ import { readAgentTools } from './agent-tools.js';
8
+ import { buildLocalFunctionWriteRequest } from './function-write-request.js';
9
+ import { authorSkillZip, authorSkillError, readAuthorSkill, validateAuthorReferences, validateSkillDynamicCommands, finalSkillFunctions, } from './author-skill.js';
10
+ import { siteSkillName, splitHash, skillScalar } from './author-skill-hash.js';
11
+ export function renderSplit(project, author, env) {
12
+ if (env !== 'prod' && env !== 'preview')
13
+ throw new Error('Invalid site environment');
14
+ const singleLine = (s) => s.replace(/\p{White_Space}+/gu, ' ').replace(/^ | $/g, '');
15
+ const name = singleLine(project.name) || project.token;
16
+ const description = author?.description ??
17
+ `查询或操作站点应用「${singleLine(name)}」的数据时使用。${singleLine(project.description)}`;
18
+ const body = author?.body ??
19
+ `# ${singleLine(name)
20
+ .replace(/&/g, '&amp;')
21
+ .replace(/</g, '&lt;')
22
+ .replace(/>/g, '&gt;')
23
+ .replace(/"/g, '&#34;')
24
+ .replace(/'/g, '&#39;')
25
+ .replace(/[\\\x60\[\]*_#]/g, '\\$&')}\n\n${singleLine(project.description)}\n\n调用前先加载 lark-base-database-tools-call。通过实时函数发现接口了解当前开放能力,再读取 detail 后调用。\n`;
26
+ const skillName = siteSkillName(project.name, project.token);
27
+ const header = (hash) => `---\nname: ${skillName}\ndescription: ${skillScalar(description)}\nskillHash: ${hash}\nsiteToken: ${skillScalar(project.token)}\nsiteEnv: ${env}\n---\n${body}`;
28
+ const files = { ...author?.files, 'SKILL.md': header('') };
29
+ validateSkillDynamicCommands(files);
30
+ const hash = splitHash(files);
31
+ files['SKILL.md'] = header(hash);
32
+ return { skillName, hash, files };
33
+ }
34
+ /** Uses current deployment metadata. Rename requires redeploy, then repack, to match GET /skill. */
35
+ export async function packAuthorSkill(options, runtime) {
36
+ const workspace = resolve(options.directory);
37
+ const config = readConfig(workspace);
38
+ assertProjectRuntimeProfile(config.runtimeProfile, runtime);
39
+ const author = readAuthorSkill(workspace);
40
+ if (!author)
41
+ throw authorSkillError('SKILL_FILE_TYPE_INVALID', 'skill/SKILL.md is required for author pack');
42
+ await authorSkillZip(author);
43
+ const { env, larkProfile } = resolveLarkProfileEnvironment(await runtime.commandEnvironment(), undefined, config.larkProfile, runtime);
44
+ const data = responseData(runLarkCli([
45
+ 'api',
46
+ 'GET',
47
+ `/open-apis/base/v3/sites/${encodeURIComponent(config.appToken)}/get`,
48
+ ], env, workspace)).project;
49
+ if (!data ||
50
+ typeof data.name !== 'string' ||
51
+ typeof data.description !== 'string')
52
+ throw new Error('Site metadata is missing name or description');
53
+ const draft = readRemoteDraft({ appToken: config.appToken, environment: runtime.name, larkProfile }, env, workspace, true);
54
+ const request = buildLocalFunctionWriteRequest(workspace);
55
+ const agentTools = readAgentTools(workspace);
56
+ const remoteAIIds = new Set(draft.sources?.functions
57
+ .filter((fn) => fn.functionType === 'ai')
58
+ .map((fn) => fn.functionId));
59
+ const exclude = [
60
+ ...agentTools.exclude,
61
+ ...(!request.kinds.includes('ai')
62
+ ? (draft.sources?.agentTools.exclude.filter((id) => remoteAIIds.has(id)) ?? [])
63
+ : []),
64
+ ];
65
+ validateAuthorReferences(author, finalSkillFunctions(request, draft.sources?.functions), exclude, draft.sources?.functions);
66
+ const bundle = renderSplit({ name: data.name, description: data.description, token: config.appToken }, author, options.env);
67
+ const output = resolve(options.output);
68
+ // Output must be new: avoid mixing stale references with the packed bundle.
69
+ mkdirSync(output, { recursive: false });
70
+ for (const [path, content] of Object.entries(bundle.files)) {
71
+ const target = join(output, path);
72
+ mkdirSync(dirname(target), { recursive: true });
73
+ writeFileSync(target, content, { flag: 'wx' });
74
+ }
75
+ return bundle;
76
+ }
77
+ //# sourceMappingURL=author-skill-pack.js.map