@lark-base-open/base-database-cli 1.0.0 → 1.1.1
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/CHANGELOG.md +24 -0
- package/README.md +89 -29
- package/config-schema.json +6 -0
- package/dist/agent-guide.d.ts +1 -0
- package/dist/agent-guide.d.ts.map +1 -1
- package/dist/agent-guide.js +3 -2
- package/dist/agent-guide.js.map +1 -1
- package/dist/auth.d.ts +7 -4
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +57 -17
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -1
- package/dist/config.js.map +1 -1
- package/dist/database-skill.d.ts +4 -2
- package/dist/database-skill.d.ts.map +1 -1
- package/dist/database-skill.js +23 -10
- package/dist/database-skill.js.map +1 -1
- package/dist/deploy.d.ts +3 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +16 -10
- package/dist/deploy.js.map +1 -1
- package/dist/distribution-commands.d.ts +3 -0
- package/dist/distribution-commands.d.ts.map +1 -0
- package/dist/distribution-commands.js +64 -0
- package/dist/distribution-commands.js.map +1 -0
- package/dist/distribution-npm.d.ts +23 -0
- package/dist/distribution-npm.d.ts.map +1 -0
- package/dist/distribution-npm.js +133 -0
- package/dist/distribution-npm.js.map +1 -0
- package/dist/environment.d.ts +1 -0
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +1 -1
- package/dist/environment.js.map +1 -1
- package/dist/init.d.ts +2 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +27 -4
- package/dist/init.js.map +1 -1
- package/dist/install.d.ts +31 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +150 -0
- package/dist/install.js.map +1 -0
- package/dist/lark-cli.d.ts +7 -1
- package/dist/lark-cli.d.ts.map +1 -1
- package/dist/lark-cli.js +289 -21
- package/dist/lark-cli.js.map +1 -1
- package/dist/preview-receipt.d.ts +5 -4
- package/dist/preview-receipt.d.ts.map +1 -1
- package/dist/preview-receipt.js +12 -3
- package/dist/preview-receipt.js.map +1 -1
- package/dist/profile-name.d.ts +2 -0
- package/dist/profile-name.d.ts.map +1 -0
- package/dist/profile-name.js +10 -0
- package/dist/profile-name.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +19 -11
- package/dist/program.js.map +1 -1
- package/dist/pull.d.ts +2 -0
- package/dist/pull.d.ts.map +1 -1
- package/dist/pull.js +4 -2
- package/dist/pull.js.map +1 -1
- package/dist/skill.d.ts +9 -2
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +128 -11
- package/dist/skill.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/updates.d.ts +20 -0
- package/dist/updates.d.ts.map +1 -0
- package/dist/updates.js +98 -0
- package/dist/updates.js.map +1 -0
- package/package.json +6 -4
- package/skills/lark-base-database/SKILL.md +73 -273
- package/skills/lark-base-database/references/base-capability-routing.md +12 -20
- package/skills/lark-base-database/references/base-sql-unsupported.md +2 -2
- package/skills/lark-base-database/references/database-capability-skill.md +27 -11
- package/skills/lark-base-database/references/development.md +26 -553
- package/skills/lark-base-database/references/faas.md +563 -0
- package/skills/lark-base-database/references/file-transfer.md +62 -199
- package/skills/lark-base-database/references/frontend-design-guide.md +97 -0
- package/skills/lark-base-database/references/notifications.md +48 -0
- package/skills/lark-base-database/references/permission-design.md +32 -38
- package/skills/lark-base-database/references/release.md +53 -45
- package/skills/lark-base-database/references/sql-function.md +17 -4
- package/skills/lark-base-database/references/style-guide.md +6 -8
- package/skills/lark-base-database/references/verification.md +57 -0
- package/skills/lark-base-database/references/workspace.md +170 -0
- package/templates/database-capability/SKILL.md.tmpl +28 -11
- package/templates/database-starter/README.md +1 -1
- package/templates/database-starter/page/src/lib/database-runtime-attachment.test.ts +43 -40
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.1.1] - 2026-09-10
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- 应用搭建优先使用本地已安装的 CLI,未安装时仍可直接运行。
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 修复含自关联或相互关联数据表的应用初始化失败。
|
|
12
|
+
- 修复部分宿主环境下的账号识别与身份检查失败。
|
|
13
|
+
- 修复部分宿主环境下的应用部署和文件上传失败。
|
|
14
|
+
|
|
15
|
+
## [1.1.0] - 2026-09-10
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- 支持多账号切换,并记住每个应用使用的账号。
|
|
20
|
+
- 支持一键安装 CLI 和 Agent Skill。
|
|
21
|
+
- 支持检查新版本,并同步更新 CLI 和多个 Agent 中已安装的 Skill。
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- 完善应用新建、恢复、修改、故障诊断和验收的操作指引。
|
|
26
|
+
|
|
3
27
|
## [1.0.0] - 2026-09-08
|
|
4
28
|
|
|
5
29
|
### Added
|
package/README.md
CHANGED
|
@@ -5,40 +5,89 @@ Skill 和配套 CLI,用于基于飞书多维表格创建、开发并发布数
|
|
|
5
5
|
负责初始化 Base 与应用、生成项目、校验和构建 Functions,以及发布 Preview
|
|
6
6
|
和正式版本。
|
|
7
7
|
|
|
8
|
-
## 安装 Agent Skill
|
|
8
|
+
## 安装 CLI 和 Agent Skill
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
需要 Node.js 20.19 或更新版本,以及可用的 npm。首次安装到 Codex:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
|
|
13
|
+
npm install -g @lark-base-open/base-database-cli@latest
|
|
14
|
+
base-database-cli install --target codex
|
|
14
15
|
```
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
安装器将自身版本安装到 npm 全局目录,再从全局包安装 Skill;已有同版本 CLI 时只安装 Skill。支持 `--target codex|claude|agents|all` 或 `--dir <skills 根目录>`。安装器也会同步上述受支持用户目录中可确认来源的公开版 Lark Base Database Skill,避免 Agent 读取另一份旧副本;自动发现跳过内部版和来源不明的副本,不会为未安装的 Agent 新建副本。任一目标已有内容时需显式添加 `--force`,否则在更改 CLI 前停止。单独的 `skill install` 仍只处理所选目标。Codex 使用 `CODEX_HOME/skills`,未设置时使用 `~/.codex/skills`。
|
|
18
|
+
|
|
19
|
+
若已安装的 CLI 文件损坏,先用 `npm install -g @lark-base-open/base-database-cli@<精确版本>` 重装,再执行 `base-database-cli update --version <同一精确版本> --yes` 同步已安装的 Skills。测试或私有 registry 环境需在重装时保留对应 npm registry 配置。
|
|
20
|
+
|
|
21
|
+
成功结果包含 CLI 版本、实际入口和 Skill 目录。PATH 不通时输出需加入的目录及可直接运行的 Node/CLI 参数;命令入口缺失时提示检查 npm 的 bin-links 配置。不修改 shell 配置、npm prefix 或 Node 安装。npm 失败时保留错误并停止后续步骤。重新加载 Skill 后,日常直接运行 `base-database-cli …`。
|
|
22
|
+
|
|
23
|
+
已有全局 CLI、只需给另一个 Agent 安装 Skill 时:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
base-database-cli skill install --target claude
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 检查和更新
|
|
30
|
+
|
|
31
|
+
Agent 每个会话首次业务操作前检查一次;检查只返回 JSON,不读取 stdin、不安装内容。示例路径需替换为当前实际加载的 Skill 目录:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
base-database-cli check-update --json --skill-dir "/Users/alice/.codex/skills/lark-base-database"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
无新版或查询失败时静默继续。有新版时询问用户,拒绝后本会话不再询问;下个会话仍会比较当前 CLI 与缓存中的最新版本。用户同意更新 CLI 及已安装的用户级 Skill 后,使用刚确认的精确版本(以下 1.0.1 仅为示例):
|
|
17
38
|
|
|
18
39
|
```bash
|
|
19
|
-
|
|
40
|
+
base-database-cli update --version 1.0.1 --skill-dir "/Users/alice/.codex/skills/lark-base-database" --yes
|
|
20
41
|
```
|
|
21
42
|
|
|
22
|
-
|
|
23
|
-
|
|
43
|
+
更新先现场检查已支持的用户级目录:Codex(遵循 `CODEX_HOME`)、Claude(遵循 `CLAUDE_CONFIG_DIR`,默认 `~/.claude/skills`)、`~/.agents/skills`,再调用 npm 安装指定版本,并由全局 CLI 同步其中可确认来源的公开版 `lark-base-database` 副本。显式传入的 `--skill-dir` 不受公开版来源筛选限制,仍须是包含同名 Skill 的 `lark-base-database` 目录;没有自定义目录时可省略。合法共享 Skill 的符号链接会保留,但真实目标是 CLI 源目录、用户目录、Agent 根目录或工程根时会在安装前拒绝覆盖。没有安装的目录不补装,不保存历史路径清单,不搜索项目目录或任意手动副本。Skill 版本差异仅提示,不阻塞业务。
|
|
44
|
+
|
|
45
|
+
npm 的权限、网络和环境错误直接报告,不预先探测或自动修复用户环境,也不覆盖用户的 npm engine-strict 配置。CLI 升级成功但部分 Skill 失败时返回 `skill-update-failed`,分别列出成功目录、失败目录及各自的修复参数;继续处理其他目录,不自动整体回滚。切换 npm/Node 环境后,应使用该环境中的全局 CLI。
|
|
46
|
+
|
|
47
|
+
CLI 版本来自包内 `package.json`;每份 Skill 的 `base-database-version.json` 记录其来源版本;用户目录下 `.base-database-cli/update-state.json` 仅缓存 registry、latest 和 checkedAt,24 小时有效。查询与全局安装使用相同的 npm 全局配置,忽略项目级 registry;在线查询总预算 3 秒;缓存不可写不影响检查。CI 和托管 Builder 跳过公开更新。
|
|
24
48
|
|
|
25
49
|
## 创建、恢复并发布数据库应用
|
|
26
50
|
|
|
51
|
+
### 复用 lark-cli profile
|
|
52
|
+
|
|
53
|
+
CLI 复用本机已有的 lark-cli profile,不另存应用密钥或用户 token。通过全局
|
|
54
|
+
`--profile <name>` 选择账号;品牌和鉴权由该 profile 对应的 lark-cli 配置决定:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
base-database-cli --profile my-lark doctor
|
|
58
|
+
base-database-cli --profile my-lark init ./todo-database \
|
|
59
|
+
--base-token basxxxxxxxx --name 'Todo 管理' --description '管理个人任务'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`init` 和 `pull` 会将实际选中的名称保存为 `base-database.jsonc` 的 `larkProfile`。
|
|
63
|
+
后续项目命令的优先级为:`--profile` → 项目 `larkProfile` →
|
|
64
|
+
`LARKSUITE_CLI_PROFILE` → lark-cli 默认 profile。显式覆盖只影响本次命令,
|
|
65
|
+
不修改项目绑定或 lark-cli 默认配置。项目目录内的 `auth` 和 `doctor` 也遵守此规则。
|
|
66
|
+
`--profile` 选择账号,`--env` 选择运行环境,两者互不替代。
|
|
67
|
+
运行时未配置所选品牌的路由时会停止,不跨环境发送请求。
|
|
68
|
+
|
|
69
|
+
不存在的 profile 会报错,不回退或自动创建。已选 profile 与环境注入的凭证、
|
|
70
|
+
AUTH_PROXY 等更高优先级凭证来源同时存在时会报冲突,避免静默换账号;
|
|
71
|
+
没有选择 profile 的托管环境继续使用宿主凭证,不保存 `larkProfile`。
|
|
72
|
+
跨设备时须在目标设备配置并授权对应 profile,不能复制凭证。
|
|
73
|
+
|
|
27
74
|
### 新建数据库应用
|
|
28
75
|
|
|
29
76
|
新建工程时,`init` 支持两种 Base 来源。需要从零建数据模型时,Agent 根据 Skill 写出完整 `base-schema.json`,再用一条命令创建 Base、全部 table、应用与 binding,并生成 hello-world 工程和 Catalog:
|
|
30
77
|
|
|
31
78
|
```bash
|
|
32
|
-
|
|
79
|
+
base-database-cli init ./todo-database \
|
|
33
80
|
--schema ./base-schema.json \
|
|
34
81
|
--name 'Todo 管理' \
|
|
35
82
|
--env online
|
|
36
83
|
```
|
|
37
84
|
|
|
85
|
+
CLI 会先创建每张表的主字段,再在所有表都取得真实 ID 后按原顺序创建其余字段,因此 Schema 可以包含自关联和跨表关联字段。
|
|
86
|
+
|
|
38
87
|
已有 Base 时,不创建或修改 Base。CLI 会读取其中的全部 table,直接创建绑定该 Base 的新应用,获取 Catalog,并生成同样的工程:
|
|
39
88
|
|
|
40
89
|
```bash
|
|
41
|
-
|
|
90
|
+
base-database-cli init ./todo-database \
|
|
42
91
|
--base-token basxxxxxxxx \
|
|
43
92
|
--name 'Todo 管理' \
|
|
44
93
|
--env online
|
|
@@ -47,7 +96,7 @@ npx @lark-base-open/base-database-cli init ./todo-database \
|
|
|
47
96
|
`--schema` 与 `--base-token` 必须且只能选择一个。宿主已经创建目标应用时,额外传入 `--app-token`;CLI 会把选中的 Base 绑定到该应用,而不会再调用应用创建接口:
|
|
48
97
|
|
|
49
98
|
```bash
|
|
50
|
-
|
|
99
|
+
base-database-cli init ./todo-database \
|
|
51
100
|
--schema ./base-schema.json \
|
|
52
101
|
--app-token PrjExistingToken \
|
|
53
102
|
--name 'Todo 管理' \
|
|
@@ -63,7 +112,7 @@ npx @lark-base-open/base-database-cli init ./todo-database \
|
|
|
63
112
|
已有数据库应用存在源码制品时,使用 `pull` 恢复可编辑工程,不要重新执行 `init`。目标目录必须为空;CLI 会下载当前 `page/`、`server-functions/` 和 `sql/` 源码,读取应用 Catalog,并重建 `base-database.jsonc` 与 `catalog.json`,不会创建或修改 Base、应用元信息和 binding:
|
|
64
113
|
|
|
65
114
|
```bash
|
|
66
|
-
|
|
115
|
+
base-database-cli pull ./todo-database \
|
|
67
116
|
--app-token PrjExistingToken \
|
|
68
117
|
--env online
|
|
69
118
|
```
|
|
@@ -76,18 +125,20 @@ npx @lark-base-open/base-database-cli pull ./todo-database \
|
|
|
76
125
|
|
|
77
126
|
```bash
|
|
78
127
|
cd todo-database
|
|
79
|
-
|
|
128
|
+
base-database-cli deploy
|
|
80
129
|
```
|
|
81
130
|
|
|
82
131
|
部署结果只返回当前环境用户可访问的顶层 `baseAppUrl`。Agent 把链接交给用户后停止;用户体验并明确回复“部署正式版”后,把同一制品发布到 Prod:
|
|
83
132
|
|
|
84
133
|
```bash
|
|
85
|
-
|
|
134
|
+
base-database-cli deploy --production --yes
|
|
86
135
|
```
|
|
87
136
|
|
|
88
137
|
Preview 回执会记录生成该制品时的工作区输入指纹。Preview 之后只要源码、配置或
|
|
89
138
|
文件结构发生变化,Production 发布就会在任何远端请求前停止,并要求重新运行
|
|
90
139
|
普通 `deploy` 生成和验证新的 Preview;旧版回执缺少输入指纹时同样不会放行。
|
|
140
|
+
Preview 回执同时绑定有效的 lark-cli profile;切换 profile 或旧回执没有 profile
|
|
141
|
+
而当前使用本地 profile 时,需要重新发布 Preview,不能直接推广为正式版。
|
|
91
142
|
|
|
92
143
|
### 部署后的应用能力 Skill
|
|
93
144
|
|
|
@@ -98,13 +149,14 @@ Skill 按需读取正式版的 Function 和参数 Schema,不依赖应用工程
|
|
|
98
149
|
需要单独修复安装或指定其他 Agent 的用户技能目录时:
|
|
99
150
|
|
|
100
151
|
```bash
|
|
101
|
-
|
|
152
|
+
base-database-cli --profile <profile-name> database-skill install --app-token <app-token> --title '<应用名称>' --dir <skills-root>
|
|
102
153
|
```
|
|
103
154
|
|
|
104
155
|
只更新本工具管理的该应用 `SKILL.md`,不删除其他文件;安装失败会单独返回,不影响已经成功的应用发布。
|
|
105
156
|
|
|
106
157
|
能力 Skill 使用 `base-database-<hash>` 名称,通过 `database-skill` 命令安装和使用。
|
|
107
|
-
|
|
158
|
+
同一应用、环境和 profile 使用固定目录,每次部署更新本工具管理的 `SKILL.md`,保留附加文件。
|
|
159
|
+
生成的发现和调用命令显式携带 profile,不跟随 lark-cli 默认账号变化;托管凭证模式不写入 profile。
|
|
108
160
|
目标目录不受本工具管理或存在符号链接冲突时报告错误,不自动覆盖。
|
|
109
161
|
|
|
110
162
|
## 环境
|
|
@@ -114,13 +166,18 @@ CLI 只支持 `online`,`--env` 默认且仅接受 `online`。保留该参数
|
|
|
114
166
|
需要登录或诊断时:
|
|
115
167
|
|
|
116
168
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
169
|
+
base-database-cli auth login --env online
|
|
170
|
+
base-database-cli doctor --env online
|
|
119
171
|
```
|
|
120
172
|
|
|
121
|
-
`auth login`
|
|
173
|
+
`auth login` 使用上述规则选中的 lark-cli profile,并申请 Base 用户权限。仅未指定
|
|
174
|
+
profile 且 lark-cli 尚未配置时,才自动启动首次 `config init --new`;指定的 profile
|
|
175
|
+
不存在时直接报错,不创建或覆盖配置。
|
|
176
|
+
|
|
177
|
+
Base Database CLI 按 `PATH` 顺序选择第一个可识别的 `lark-cli`。可通过 `BASE_DATABASE_LARK_CLI_PATH` 指定已确认的可执行文件绝对路径;显式路径优先于 PATH。
|
|
178
|
+
|
|
179
|
+
宿主入口缺少 `config` 且未选择 profile 时,CLI 保留宿主认证上下文,不生成虚构的本地 profile;指定 profile 却无法核验时仍报错。缺少 `auth` 时,`doctor` 和 `auth whoami` 使用当前用户只读接口核验身份,`doctor` 还检查应用列表接口;认证失败和权限错误不会按命令缺失跳过。宿主登录、退出仍由宿主提供,不模拟成功。Skill 文档命令 `skills read` 缺失时可直接读取已安装文件,不影响业务执行。
|
|
122
180
|
|
|
123
|
-
Base Database CLI 会按 `PATH` 顺序探测全部 `lark-cli`,读取各自的 `--version`,并跳过版本号中带构建 hash 的定制版本,默认使用第一个不带构建 hash 的 release 版本。如果没有可用的 release 版本,命令会明确失败而不会回退到定制版本。需要显式覆盖自动选择时,可将 `BASE_DATABASE_LARK_CLI_PATH` 设置为目标可执行文件的绝对路径;显式设置不会应用版本过滤。
|
|
124
181
|
|
|
125
182
|
## 项目配置
|
|
126
183
|
|
|
@@ -146,24 +203,27 @@ Base Database CLI 会按 `PATH` 顺序探测全部 `lark-cli`,读取各自的
|
|
|
146
203
|
## CLI 命令
|
|
147
204
|
|
|
148
205
|
```text
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
206
|
+
base-database-cli install
|
|
207
|
+
base-database-cli check-update
|
|
208
|
+
base-database-cli update
|
|
209
|
+
base-database-cli skill install
|
|
210
|
+
base-database-cli auth login|logout|whoami
|
|
211
|
+
base-database-cli doctor
|
|
212
|
+
base-database-cli init
|
|
213
|
+
base-database-cli pull
|
|
214
|
+
base-database-cli deploy
|
|
215
|
+
base-database-cli deployments status
|
|
216
|
+
base-database-cli lark-cli -- <arguments...>
|
|
157
217
|
```
|
|
158
218
|
|
|
159
219
|
`deploy` 在一次调用内先生成 Function metadata 并完成全部 SQL validate,通过后再检查依赖指纹、执行必要的依赖安装、Page/FaaS build、archive、Functions sync、Artifact upload、Preview publish 和状态轮询。CLI 会汇总全部未通过的 SQL Function 后一次性报错;存在任一 SQL 校验失败时不会安装依赖或执行 build。依赖指纹未变化且对应 `node_modules` 仍存在时,默认跳过该子项目的 `npm ci`;`--force-install` 强制重装,`--no-install` 无条件跳过安装。build 仍会在每次 Preview deploy 中执行。正常应用开发不单独运行这些步骤;FaaS 子项目仍保留 `npm run build`,因为平台镜像打包器直接调用它。
|
|
160
220
|
|
|
161
221
|
初始化结果保留所绑定多维表格的 `baseUrl`。发布完成后,CLI 只读取成功态 `publish_status` 返回的 `result.baseAppUrl`,不再使用 `catalog.json` 或 OpenAPI GetProject 兜底;成功态缺少该字段时会明确报错。Preview 发布返回的顶层 `baseAppUrl` 会保留原有查询参数并设置 `mode=edit`,Production 发布返回的顶层 `baseAppUrl` 会移除 `mode`。命令结果不再包含应用管理后台 URL、旧 Preview URL、`preview`/`production` URL 对象或静态资源 `appUrl`/`staticUrl`;静态资源地址只保存在内部 Preview 回执。
|
|
162
222
|
|
|
163
|
-
`lark-cli` 子命令仅用于调试。先进入包含 `base-database.jsonc`
|
|
223
|
+
`lark-cli` 子命令仅用于调试。先进入包含 `base-database.jsonc` 的项目根目录;命令只读取当前目录,不接受额外项目路径。普通 JSON API 响应会统一输出到 stdout,兼容宿主将 JSON 正文落盘的行为;显式 `--output`、`--jq`、`--page-all`、非 JSON 格式及其他原生命令保留透传行为。正常初始化和发布无需调用:
|
|
164
224
|
|
|
165
225
|
```bash
|
|
166
|
-
|
|
226
|
+
base-database-cli lark-cli -- \
|
|
167
227
|
api GET /open-apis/base/v3/sites/list \
|
|
168
228
|
--params '{"pageSize":1}' --json
|
|
169
229
|
```
|
package/config-schema.json
CHANGED
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
"type": "string",
|
|
20
20
|
"minLength": 1
|
|
21
21
|
},
|
|
22
|
+
"larkProfile": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"maxLength": 64,
|
|
26
|
+
"description": "Name of an existing lark-cli profile; credentials stay in lark-cli."
|
|
27
|
+
},
|
|
22
28
|
"appToken": {
|
|
23
29
|
"type": "string",
|
|
24
30
|
"minLength": 1
|
package/dist/agent-guide.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { RuntimeProfile } from './environment.js';
|
|
|
2
2
|
export declare function deploymentAgentGuide(appToken: string, target: 'preview' | 'prod', options: {
|
|
3
3
|
workspace: string;
|
|
4
4
|
profile: RuntimeProfile;
|
|
5
|
+
larkProfile?: string;
|
|
5
6
|
}): {
|
|
6
7
|
target: 'prod';
|
|
7
8
|
availability: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../src/agent-guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,MAAM,EAC1B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../src/agent-guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,MAAM,EAC1B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;YAiBnE,MAAM;;;;;;;gBALJ,QAAQ;;;;EAgBrB"}
|
package/dist/agent-guide.js
CHANGED
|
@@ -8,6 +8,7 @@ export function deploymentAgentGuide(appToken, target, options) {
|
|
|
8
8
|
appToken,
|
|
9
9
|
title: validatePageTitle(options.workspace),
|
|
10
10
|
profile: options.profile,
|
|
11
|
+
larkProfile: options.larkProfile,
|
|
11
12
|
});
|
|
12
13
|
}
|
|
13
14
|
catch (error) {
|
|
@@ -20,11 +21,11 @@ export function deploymentAgentGuide(appToken, target, options) {
|
|
|
20
21
|
target: 'prod',
|
|
21
22
|
availability: target === 'prod'
|
|
22
23
|
? '正式版发布成功;实际发现结果以服务端接口及开关状态为准,尚未自动验证。'
|
|
23
|
-
: '
|
|
24
|
+
: '本次仅发布预览版;本应用 Skill 只发现正式版,不代表本次 Preview。不要因安装而额外发现或调用正式版能力;本次约定的 Preview 数据验证与通知收尾仍须完成。',
|
|
24
25
|
skill,
|
|
25
26
|
message: skill.status === 'failed'
|
|
26
27
|
? '应用发布成功,但专属 Skill 安装失败;向用户报告原因,不要重新发布应用来修复安装。'
|
|
27
|
-
: `已${skill.status === 'installed' ? '安装' : '更新'}本应用 Skill。请告知用户可直接让 Agent 使用本应用能力,或使用 $${skill.name}
|
|
28
|
+
: `已${skill.status === 'installed' ? '安装' : '更新'}本应用 Skill。请告知用户可直接让 Agent 使用本应用能力,或使用 $${skill.name};先确认安装路径属于目标客户端的发现目录,再按客户端方式刷新;仅重开会话不能修复目录不匹配。安装不代表业务操作授权。`,
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=agent-guide.js.map
|
package/dist/agent-guide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../src/agent-guide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,MAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../src/agent-guide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,MAA0B,EAC1B,OAA6E;IAE7E,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,oBAAoB,CAAC;YAC3B,QAAQ;YACR,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,GAAG;YACN,MAAM,EAAE,QAAiB;YACzB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAe;QACvB,YAAY,EACV,MAAM,KAAK,MAAM;YACf,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,yFAAyF;QAC/F,KAAK;QACL,OAAO,EACL,KAAK,CAAC,MAAM,KAAK,QAAQ;YACvB,CAAC,CAAC,8CAA8C;YAChD,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,0CAA0C,KAAK,CAAC,IAAI,4DAA4D;KACrK,CAAC;AACJ,CAAC"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { type RuntimeProfile } from './environment.js';
|
|
2
2
|
import { runCommand } from './process.js';
|
|
3
|
+
import type { CommandResult } from './types.js';
|
|
3
4
|
export declare function ensureConfiguration(env: NodeJS.ProcessEnv, runner?: typeof runCommand): void;
|
|
4
|
-
export declare function login(profile?: RuntimeProfile): Promise<void>;
|
|
5
|
-
export declare function logout(profile?: RuntimeProfile): Promise<void>;
|
|
6
|
-
export declare function whoami(profile?: RuntimeProfile): Promise<
|
|
7
|
-
export declare function doctor(profile?: RuntimeProfile): Promise<{
|
|
5
|
+
export declare function login(profile?: RuntimeProfile, larkProfile?: string): Promise<void>;
|
|
6
|
+
export declare function logout(profile?: RuntimeProfile, larkProfile?: string): Promise<void>;
|
|
7
|
+
export declare function whoami(profile?: RuntimeProfile, larkProfile?: string): Promise<CommandResult>;
|
|
8
|
+
export declare function doctor(profile?: RuntimeProfile, selectedLarkProfile?: string): Promise<{
|
|
8
9
|
ok: true;
|
|
9
10
|
environment: string;
|
|
11
|
+
larkProfile?: string | undefined;
|
|
10
12
|
node: string;
|
|
11
13
|
user: {
|
|
12
14
|
status: unknown;
|
|
13
15
|
available: unknown;
|
|
14
16
|
verified: unknown;
|
|
17
|
+
source?: {} | undefined;
|
|
15
18
|
};
|
|
16
19
|
}>;
|
|
17
20
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmDhD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,MAAM,oBAAa,GAClB,IAAI,CAaN;AAED,wBAAsB,KAAK,CACzB,OAAO,GAAE,cAAuC,EAChD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,MAAM,CAC1B,OAAO,GAAE,cAAuC,EAChD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,MAAM,CAC1B,OAAO,GAAE,cAAuC,EAChD,WAAW,CAAC,EAAE,MAAM,0BASrB;AAED,wBAAsB,MAAM,CAC1B,OAAO,GAAE,cAAuC,EAChD,mBAAmB,CAAC,EAAE,MAAM;;;;;;;;;;;GAqC7B"}
|
package/dist/auth.js
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { CONFIG_FILE_NAME, readConfig } from './config.js';
|
|
3
|
+
import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
|
|
4
|
+
import { resolveLarkCliExecutable, runLarkCli, selectLarkProfileEnvironment, resolveLarkProfileEnvironment, isMissingLarkCommand, responseData, } from './lark-cli.js';
|
|
3
5
|
import { runCommand } from './process.js';
|
|
6
|
+
function verifiedUserIdentity(env) {
|
|
7
|
+
try {
|
|
8
|
+
return runLarkCli(['auth', 'status', '--verify'], env);
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (!isMissingLarkCommand(error, 'auth'))
|
|
12
|
+
throw error;
|
|
13
|
+
}
|
|
14
|
+
const response = runLarkCli(['api', 'GET', '/open-apis/authen/v1/user_info'], env);
|
|
15
|
+
const user = responseData(response);
|
|
16
|
+
if ((user.code !== undefined && user.code !== 0) ||
|
|
17
|
+
typeof user.open_id !== 'string' ||
|
|
18
|
+
!user.open_id.trim()) {
|
|
19
|
+
throw new Error('Current-user API did not return a verified user identity');
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
ok: true,
|
|
23
|
+
data: {
|
|
24
|
+
identities: {
|
|
25
|
+
user: {
|
|
26
|
+
status: 'active',
|
|
27
|
+
available: true,
|
|
28
|
+
verified: true,
|
|
29
|
+
source: 'user_info',
|
|
30
|
+
open_id: user.open_id,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function authEnvironment(profile, larkProfile) {
|
|
37
|
+
const config = existsSync(CONFIG_FILE_NAME) ? readConfig() : undefined;
|
|
38
|
+
if (config)
|
|
39
|
+
assertProjectRuntimeProfile(config.runtimeProfile, profile);
|
|
40
|
+
return selectLarkProfileEnvironment(await profile.commandEnvironment(), larkProfile, config?.larkProfile);
|
|
41
|
+
}
|
|
4
42
|
function isNotConfigured(error) {
|
|
5
43
|
const message = error instanceof Error ? error.message : String(error);
|
|
6
44
|
return /"subtype"\s*:\s*"not_configured"/.test(message);
|
|
@@ -11,35 +49,35 @@ export function ensureConfiguration(env, runner = runCommand) {
|
|
|
11
49
|
runner(executable, ['config', 'show'], { env, capture: true });
|
|
12
50
|
}
|
|
13
51
|
catch (error) {
|
|
52
|
+
// A dangling named profile is not permission to replace the default configuration.
|
|
53
|
+
if (env.LARKSUITE_CLI_PROFILE)
|
|
54
|
+
throw error;
|
|
14
55
|
if (!isNotConfigured(error))
|
|
15
56
|
throw error;
|
|
16
57
|
process.stderr.write('lark-cli is not configured for this environment; starting first-time setup...\n');
|
|
17
58
|
runner(executable, ['config', 'init', '--new'], { env });
|
|
18
59
|
}
|
|
19
60
|
}
|
|
20
|
-
export async function login(profile = ONLINE_RUNTIME_PROFILE) {
|
|
21
|
-
const
|
|
22
|
-
ensureConfiguration(
|
|
61
|
+
export async function login(profile = ONLINE_RUNTIME_PROFILE, larkProfile) {
|
|
62
|
+
const selected = await authEnvironment(profile, larkProfile);
|
|
63
|
+
ensureConfiguration(selected);
|
|
64
|
+
const { env } = resolveLarkProfileEnvironment(selected, undefined, undefined, profile);
|
|
23
65
|
runCommand(resolveLarkCliExecutable(env), ['auth', 'login', '--domain', 'base'], { env });
|
|
24
66
|
}
|
|
25
|
-
export async function logout(profile = ONLINE_RUNTIME_PROFILE) {
|
|
26
|
-
const env = await profile
|
|
67
|
+
export async function logout(profile = ONLINE_RUNTIME_PROFILE, larkProfile) {
|
|
68
|
+
const { env } = resolveLarkProfileEnvironment(await authEnvironment(profile, larkProfile), undefined, undefined, profile);
|
|
27
69
|
runCommand(resolveLarkCliExecutable(env), ['auth', 'logout'], { env });
|
|
28
70
|
}
|
|
29
|
-
export async function whoami(profile = ONLINE_RUNTIME_PROFILE) {
|
|
30
|
-
const env = await profile
|
|
31
|
-
return
|
|
71
|
+
export async function whoami(profile = ONLINE_RUNTIME_PROFILE, larkProfile) {
|
|
72
|
+
const { env } = resolveLarkProfileEnvironment(await authEnvironment(profile, larkProfile), undefined, undefined, profile);
|
|
73
|
+
return verifiedUserIdentity(env);
|
|
32
74
|
}
|
|
33
|
-
export async function doctor(profile = ONLINE_RUNTIME_PROFILE) {
|
|
75
|
+
export async function doctor(profile = ONLINE_RUNTIME_PROFILE, selectedLarkProfile) {
|
|
34
76
|
const major = Number(process.versions.node.split('.')[0]);
|
|
35
77
|
if (major < 20)
|
|
36
78
|
throw new Error('Node.js 20 or newer is required');
|
|
37
|
-
const env = await profile
|
|
38
|
-
|
|
39
|
-
env,
|
|
40
|
-
capture: true,
|
|
41
|
-
});
|
|
42
|
-
const identity = runLarkCli(['auth', 'status', '--verify'], env);
|
|
79
|
+
const { env, larkProfile } = resolveLarkProfileEnvironment(await authEnvironment(profile, selectedLarkProfile), undefined, undefined, profile);
|
|
80
|
+
const identity = verifiedUserIdentity(env);
|
|
43
81
|
runLarkCli([
|
|
44
82
|
'api',
|
|
45
83
|
'GET',
|
|
@@ -52,11 +90,13 @@ export async function doctor(profile = ONLINE_RUNTIME_PROFILE) {
|
|
|
52
90
|
return {
|
|
53
91
|
ok: true,
|
|
54
92
|
environment: profile.name,
|
|
93
|
+
...(larkProfile ? { larkProfile } : {}),
|
|
55
94
|
node: process.version,
|
|
56
95
|
user: {
|
|
57
96
|
status: user?.status,
|
|
58
97
|
available: user?.available,
|
|
59
98
|
verified: user?.verified,
|
|
99
|
+
...(user?.source ? { source: user.source } : {}),
|
|
60
100
|
},
|
|
61
101
|
};
|
|
62
102
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { addDistributionCommands } from './distribution-commands.js';
|
|
5
6
|
import { ONLINE_RUNTIME_PROFILE } from './environment.js';
|
|
6
7
|
import { createBaseDatabaseProgram, runBaseDatabaseProgram, } from './program.js';
|
|
7
8
|
const packageRoot = join(dirname(fileURLToPath(import.meta.url)), '..');
|
|
8
9
|
const packageJson = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8'));
|
|
9
|
-
runBaseDatabaseProgram(createBaseDatabaseProgram({
|
|
10
|
+
runBaseDatabaseProgram(addDistributionCommands(createBaseDatabaseProgram({
|
|
10
11
|
commandName: 'base-database-cli',
|
|
11
12
|
description: 'Build and deploy database applications on Lark Base',
|
|
12
13
|
version: packageJson.version,
|
|
13
14
|
runtimeProfiles: [ONLINE_RUNTIME_PROFILE],
|
|
14
|
-
}));
|
|
15
|
+
})));
|
|
15
16
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACjC,CAAC;AAEzB,sBAAsB,CACpB,yBAAyB,CAAC;IACxB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,qDAAqD;IAClE,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,eAAe,EAAE,CAAC,sBAAsB,CAAC;CAC1C,CAAC,CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACjC,CAAC;AAEzB,sBAAsB,CACpB,uBAAuB,CACrB,yBAAyB,CAAC;IACxB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,qDAAqD;IAClE,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,eAAe,EAAE,CAAC,sBAAsB,CAAC;CAC1C,CAAC,CACH,CACF,CAAC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQrD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,wBAAgB,UAAU,CAAC,SAAS,SAAgB,GAAG,kBAAkB,CAgCxE;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAWR"}
|
package/dist/config.js
CHANGED
|
@@ -3,6 +3,7 @@ import { dirname, join, resolve } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import Ajv2020 from 'ajv/dist/2020.js';
|
|
5
5
|
import { parse, printParseErrorCode } from 'jsonc-parser';
|
|
6
|
+
import { validateLarkProfile } from './profile-name.js';
|
|
6
7
|
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
7
8
|
const schema = JSON.parse(readFileSync(join(packageRoot, 'config-schema.json'), 'utf8'));
|
|
8
9
|
const validate = new Ajv2020({ allErrors: true }).compile(schema);
|
|
@@ -34,7 +35,10 @@ export function readConfig(workspace = process.cwd()) {
|
|
|
34
35
|
.join('; ');
|
|
35
36
|
throw new Error(`Invalid ${configPath}: ${detail}`);
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
const config = value;
|
|
39
|
+
if (config.larkProfile !== undefined)
|
|
40
|
+
validateLarkProfile(config.larkProfile);
|
|
41
|
+
return config;
|
|
38
42
|
}
|
|
39
43
|
export function writeConfig(workspace, config) {
|
|
40
44
|
if (!validate(config)) {
|
|
@@ -43,6 +47,8 @@ export function writeConfig(workspace, config) {
|
|
|
43
47
|
.join('; ');
|
|
44
48
|
throw new Error(`Cannot write invalid Base Database config: ${detail}`);
|
|
45
49
|
}
|
|
50
|
+
if (config.larkProfile !== undefined)
|
|
51
|
+
validateLarkProfile(config.larkProfile);
|
|
46
52
|
const path = join(resolve(workspace), CONFIG_FILE_NAME);
|
|
47
53
|
writeFileSync(path, `${JSON.stringify(config, null, 2)}\n`);
|
|
48
54
|
return path;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAmB,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/database-skill.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { RuntimeProfile } from './environment.js';
|
|
2
|
-
export declare function databaseSkillName(token: string, environment: string): string;
|
|
2
|
+
export declare function databaseSkillName(token: string, environment: string, larkProfile?: string): string;
|
|
3
3
|
export declare function databaseSkillCommandPrefix(profile: RuntimeProfile): string;
|
|
4
4
|
export declare function renderDatabaseSkill(options: {
|
|
5
|
+
larkProfile?: string;
|
|
5
6
|
appToken: string;
|
|
6
7
|
title: string;
|
|
7
8
|
profile: RuntimeProfile;
|
|
8
9
|
}): string;
|
|
9
10
|
export declare function installDatabaseSkill(options: {
|
|
11
|
+
larkProfile?: string;
|
|
10
12
|
appToken: string;
|
|
11
13
|
title: string;
|
|
12
14
|
profile: RuntimeProfile;
|
|
@@ -18,5 +20,5 @@ export declare function installDatabaseSkill(options: {
|
|
|
18
20
|
};
|
|
19
21
|
export declare function discoveryArgs(appToken: string, pageSize: number, pageToken?: string): string[];
|
|
20
22
|
export declare function invocationArgs(appToken: string, functionId: string, params: string): string[];
|
|
21
|
-
export declare function runDatabaseSkillRequest(profile: RuntimeProfile, args: string[]): Promise<import("./types.js").CommandResult>;
|
|
23
|
+
export declare function runDatabaseSkillRequest(profile: RuntimeProfile, args: string[], larkProfile?: string): Promise<import("./types.js").CommandResult>;
|
|
22
24
|
//# sourceMappingURL=database-skill.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-skill.d.ts","sourceRoot":"","sources":["../src/database-skill.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"database-skill.d.ts","sourceRoot":"","sources":["../src/database-skill.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAWR;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,MAAM,CAoCT;AAoCD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;;;EAgCA;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,EAAE,CAgBV;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAgBV;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,MAAM,+CASrB"}
|