@lark-base-open/base-database-cli 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +4 -0
- package/dist/agent-tools.d.ts +1 -0
- package/dist/agent-tools.d.ts.map +1 -1
- package/dist/agent-tools.js +3 -1
- package/dist/agent-tools.js.map +1 -1
- package/dist/app-builder/core.d.mts.map +1 -1
- package/dist/app-builder/core.mjs +8 -4
- package/dist/app-builder/core.mjs.map +1 -1
- package/dist/app-builder/package.json +1 -1
- package/dist/base-binding.d.ts +12 -0
- package/dist/base-binding.d.ts.map +1 -0
- package/dist/base-binding.js +62 -0
- package/dist/base-binding.js.map +1 -0
- package/dist/bot-handoff.d.ts +16 -0
- package/dist/bot-handoff.d.ts.map +1 -0
- package/dist/bot-handoff.js +165 -0
- package/dist/bot-handoff.js.map +1 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +25 -2
- package/dist/check.js.map +1 -1
- package/dist/contract-conversion.d.ts +1 -0
- package/dist/contract-conversion.d.ts.map +1 -1
- package/dist/contract-conversion.js +11 -0
- package/dist/contract-conversion.js.map +1 -1
- package/dist/contract-dependencies.d.ts +16 -0
- package/dist/contract-dependencies.d.ts.map +1 -0
- package/dist/contract-dependencies.js +52 -0
- package/dist/contract-dependencies.js.map +1 -0
- package/dist/deploy.d.ts +2 -8
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +15 -98
- package/dist/deploy.js.map +1 -1
- package/dist/distribution-commands.d.ts.map +1 -1
- package/dist/distribution-commands.js +10 -5
- package/dist/distribution-commands.js.map +1 -1
- package/dist/function-contracts.d.ts.map +1 -1
- package/dist/function-contracts.js +10 -15
- package/dist/function-contracts.js.map +1 -1
- package/dist/init-journal.d.ts +10 -0
- package/dist/init-journal.d.ts.map +1 -1
- package/dist/init-journal.js +5 -2
- package/dist/init-journal.js.map +1 -1
- package/dist/init.d.ts +29 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +201 -19
- package/dist/init.js.map +1 -1
- package/dist/lark-cli.d.ts +7 -0
- package/dist/lark-cli.d.ts.map +1 -1
- package/dist/lark-cli.js +113 -17
- package/dist/lark-cli.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +28 -1
- package/dist/program.js.map +1 -1
- package/dist/sdk-codegen.d.ts +3 -1
- package/dist/sdk-codegen.d.ts.map +1 -1
- package/dist/sdk-codegen.js +37 -13
- package/dist/sdk-codegen.js.map +1 -1
- package/dist/sdk-compatibility.js +1 -1
- package/dist/sdk-compatibility.js.map +1 -1
- package/dist/tables-add.d.ts +15 -0
- package/dist/tables-add.d.ts.map +1 -0
- package/dist/tables-add.js +94 -0
- package/dist/tables-add.js.map +1 -0
- package/dist/unified-functions.d.ts +4 -2
- package/dist/unified-functions.d.ts.map +1 -1
- package/dist/unified-functions.js +60 -17
- package/dist/unified-functions.js.map +1 -1
- package/package.json +1 -1
- package/skills/lark-base-database/SKILL.md +3 -1
- package/skills/lark-base-database/references/base-table-design.md +37 -0
- package/skills/lark-base-database/references/collaborator-handoff.md +62 -0
- package/skills/lark-base-database/references/database-function.md +3 -1
- package/skills/lark-base-database/references/development.md +13 -1
- package/skills/lark-base-database/references/faas.md +7 -3
- package/skills/lark-base-database/references/mutations.md +34 -0
- package/skills/lark-base-database/references/permission-design.md +1 -0
- package/skills/lark-base-database/references/release.md +1 -1
- package/skills/lark-base-database/references/style-guide.md +1 -1
- package/skills/lark-base-database/references/workspace.md +27 -10
- package/templates/database-starter-v2/README.md +1 -1
- package/templates/database-starter-v2/package-lock.json +5 -5
- package/templates/database-starter-v2/page/package.json +1 -1
- package/templates/database-starter-v2/server/package.json +1 -1
|
@@ -221,7 +221,7 @@ workspace 的输入类型与 `DatabaseFunctionParameterOptions` 统一生成在
|
|
|
221
221
|
|
|
222
222
|
- `SDK_BEHIND_CLI` 是非阻断的版本提醒。默认保留 SDK,读取警告 `packagePath` 所在包的 docs 和示例,不套用标注较新适用版本的 Skill 示例。
|
|
223
223
|
- `SDK_VERSION_INVALID` 表示已安装 SDK 的包信息损坏,先修复工程依赖。`doctor` 将此错误记录在 `sdkCompatibility` 中(`severity: error`),继续检查登录、scope 和服务;`check`、`contracts generate`、`deploy` 则停止并报告该错误。
|
|
224
|
-
- 用户已授权升级 SDK 时,执行警告给出的 `upgradeCommand`。读取目标 SDK `CHANGELOG.md`
|
|
224
|
+
- 用户已授权升级 SDK 时,执行警告给出的 `upgradeCommand`。读取目标 SDK `CHANGELOG.md` 及包内 docs 的升级与兼容说明,核对跨过的每个不兼容版本:确认会坏什么、定位受影响调用、按步骤修改源码。涉及默认写后读行为时,按目标包 `docs/page.md` 和[写后读指引](mutations.md#写后读)处理同步中状态。然后依次运行 `base-database-cli contracts generate`、`base-database-cli check --json` 和工程 build;失败时按诊断继续迁移,不用 `as` 强转或自行指定返回泛型绕过迁移错误。
|
|
225
225
|
|
|
226
226
|
CLI 不自动升级依赖或改写业务代码。工程结构和 helper 改动由 coding agent 按[工程迁移指南](workspace-migration.md)执行;结构迁移另需用户授权,不因 SDK 警告擅自进行。
|
|
227
227
|
|
|
@@ -231,6 +231,18 @@ CLI 不自动升级依赖或改写业务代码。工程结构和 helper 改动
|
|
|
231
231
|
|
|
232
232
|
## Check 与契约生成
|
|
233
233
|
|
|
234
|
+
workspace 或 SDK 工程修改 Function 声明后,在项目根目录执行:
|
|
235
|
+
|
|
236
|
+
<!-- example: prepare-workspace-contracts -->
|
|
237
|
+
```bash
|
|
238
|
+
base-database-cli contracts generate
|
|
239
|
+
base-database-cli check --json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
`contracts generate` 默认校验依赖声明与锁文件,复用 check/deploy 的安装缓存;依赖缺失或安装指纹变化时,使用 CLI 自带 npm 按现有锁文件执行 npm ci,再生成契约。workspace 使用根依赖,classic SDK 工程分别准备 Page 和服务端依赖;无 SDK 的 classic 保留原有输入类型生成,不安装依赖。仅改页面且不影响契约时直接 check。
|
|
243
|
+
|
|
244
|
+
已准备好依赖、需要保留当前安装现场或独立管理安装步骤时,可执行 `base-database-cli contracts generate --no-install`;该选项直接使用现有依赖,不运行 npm ci、不更新安装缓存,缺少生成所需依赖时仍会报错。`CONTRACT_DEPENDENCIES_FAILED` 表示安装前的锁文件校验或依赖安装失败,按具体诊断修复后重试同一命令;不删除锁文件或切换 SDK 版本。`SDK_CODEGEN_UNAVAILABLE` 表示生成入口不可用,实际安装包缺少 codegen 能力时按[SDK 升级](#工程迁移与-sdk-升级)取得授权后处理。
|
|
245
|
+
|
|
234
246
|
`check` 先在本地读取全部 Function 声明,按需安装依赖、核对 Function 契约,再用与 deploy 相同的本次 kind 集合调用统一 `/functions/validate`,最后构建 Page/FaaS。payload 始终声明 `sql/edge/mutation`;存在 `ai/` 根时还声明 ai kind,其中空根表示明确校验空集合。Validate 不修改 binding、draft、Artifact 或发布状态。workspace 或 SDK 工程的契约发生变化时会报告 `CONTRACT_STALE`;先在项目根显式执行 `base-database-cli contracts generate`,再运行 `base-database-cli check --json`,不要反复 check 或手改生成物。
|
|
235
247
|
|
|
236
248
|
只有无 App SDK 的 classic 使用本地 metadata 自动更新输入类型。生成形态仍按[Function 调用契约](#function-调用契约)选择;check 的自动生成不改变 helper 路由。`--no-install` 要求依赖已经就绪,不能绕过契约核对。只有明确没有应用 API 访问条件的离线检查才使用 `--local-only`;结果中的 `serverValidation.status=not_run` 表示 SQL 编译、Catalog、AI model profile 和其他服务端语义均未验证。显式 `--skip-ai-functions` 时,AI 声明不进入本次校验 payload,结果中的 AI 数量为 0,不能报告 AI 已校验。旧工程缺少整个 `ai/` 根时同样不声明 ai kind,但结果会给出 `AI_FUNCTION_ROOT_ABSENT_PRESERVED`,表示远端 AI 被保留且未校验、未同步;先用公共 `pull` 恢复,而不是把缺失根当成空集合。
|
|
@@ -105,6 +105,7 @@ function parseCreateTask(value: unknown): CreateTaskInput {
|
|
|
105
105
|
- 同表多条创建、更新或删除合并到一个 batch 请求,单批不超过 200 条。
|
|
106
106
|
- 原始 Promise 仍可能 reject 且需要知道每一路结果时使用 `Promise.allSettled`;helper 已把异常归一化为结构化结果时可以使用 `Promise.all`。
|
|
107
107
|
- 写前调用 Database Function 只用于服务端必须确认的权限、关键状态或其他可信数据;写后 Database Function 回读用于验收或明确要求的业务校验,不作为每次生产写入的默认步骤。
|
|
108
|
+
- FaaS(Edge 函数)只通过 context 读写 Base:写记录用 `context.fetch` 调五个固定写路由(见[应用记录写入协议](#应用记录写入协议)),读用 `context.invokeFunction` 调 Database Function。不用自带 fetch、lark SDK 或其他域名直连 Base——站点对 Base 的读写只经固定写路由与 Database Function 两个入口,权限与写后读都只在这两个入口上成立。
|
|
108
109
|
- 用户身份、权限、租户隔离、支付、库存、额度等关键约束必须由服务端可信数据确认,不得信任页面传值。
|
|
109
110
|
- 多路写入返回值区分全部成功、部分成功和全部失败,并携带已取得的 record ID 与安全错误信息。非幂等创建结果未知时不自动整体重试;只有底层存在可靠幂等原语时才承诺严格幂等。
|
|
110
111
|
|
|
@@ -161,13 +162,16 @@ type DownstreamOutcome<T> =
|
|
|
161
162
|
|
|
162
163
|
FaaS 使用 `context.fetch` 调用固定的批量写入路由;只使用线上 origin:
|
|
163
164
|
|
|
164
|
-
|
|
|
165
|
+
| 环境/品牌 | Origin |
|
|
165
166
|
|---|---|
|
|
166
|
-
| Online | `https://open.feishu.cn` |
|
|
167
|
+
| Online 飞书 | `https://open.feishu.cn` |
|
|
168
|
+
| Online Lark(海外) | `https://open.larksuite.com` |
|
|
169
|
+
|
|
170
|
+
使用 SDK 的 `ctx.records` 时,地址由 SDK 自动选择,无需手动配置。后文的 `context.fetch` 示例以飞书为例,Lark 使用上表对应的地址,路径及请求体相同。
|
|
167
171
|
|
|
168
172
|
#### 应用记录写入协议
|
|
169
173
|
|
|
170
|
-
|
|
174
|
+
站点记录与附件写入使用以下五个固定路由,均为 `POST`,请求头为
|
|
171
175
|
`Content-Type: application/json; charset=utf-8`:
|
|
172
176
|
|
|
173
177
|
```http
|
|
@@ -301,6 +301,40 @@ if (result.data.record_ids.length !== 2) {
|
|
|
301
301
|
|
|
302
302
|
workspace 从已安装 SDK `/page` 导入两个 helper,并按包内 docs 核对 API;classic 按[helper 契约与导入](legacy-development.md#function-调用契约)选择实际形态。返回 `{code, data?, msg?}`。先检查顶层业务码,再检查 `data` 中的部分结果,不重复解包。
|
|
303
303
|
|
|
304
|
+
### 写后读
|
|
305
|
+
|
|
306
|
+
Page 示例适用版本:SDK 0.4.0 起(workspace 工程的默认写后读、`DataNotReadyError` 与 `readYourWrites: false` 选项)。先读已安装 SDK 的 `package.json` 版本;未满足时按[SDK 升级流程](development.md#工程迁移与-sdk-升级)处理,升级前页面的读按普通查询发起。
|
|
307
|
+
|
|
308
|
+
Page 的读默认读到本会话此前的写入,包括写后由刷新结果联动触发的查询;数据尚未追上时由服务端等待、SDK 重试。
|
|
309
|
+
|
|
310
|
+
SDK 重试用尽时抛 `DataNotReadyError`:它表示数据同步中、写入已成功:页面代码渲染“数据同步中”并提供重新查询入口,重新查询只重发这一轮读。提示按最近一轮刷新的结果设置:这一轮任一查询抛 `DataNotReadyError` 时显示,重新查询这一轮全部成功后清除。提示组件由页面自行实现。写调用本身超时或结果异常按上文只读核对。
|
|
311
|
+
|
|
312
|
+
可接受旧数据且在意延迟的读传 `{ readYourWrites: false }`,例如高频轮询、统计面板;这类读按普通查询立即返回。
|
|
313
|
+
|
|
314
|
+
```ts
|
|
315
|
+
import { DataNotReadyError, invokeDatabaseFunction, invokeDatabaseMutationBatch } from '@lark-base-open/base-database-app-sdk/page'
|
|
316
|
+
|
|
317
|
+
const result = await invokeDatabaseMutationBatch('createTask', [{ title: '准备评审' }])
|
|
318
|
+
if (result.code !== 0) throw new Error(result.msg || '写入失败')
|
|
319
|
+
if (!result.data) throw new Error('写入结果缺失,请刷新核对')
|
|
320
|
+
assertComplete(result.data)
|
|
321
|
+
|
|
322
|
+
try {
|
|
323
|
+
await invokeDatabaseFunction('listTasks', { status: '待处理' })
|
|
324
|
+
} catch (error) {
|
|
325
|
+
if (error instanceof DataNotReadyError) {
|
|
326
|
+
// SDK 已重试用尽、写入已成功:页面渲染“数据同步中”和重新查询入口,重新查询只重发读
|
|
327
|
+
} else {
|
|
328
|
+
throw error
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// 高频轮询:可接受旧数据、在意延迟
|
|
333
|
+
await invokeDatabaseFunction('listTasks', { status: '待处理' }, { readYourWrites: false })
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
参数名与错误类按原样写,签名细节以 SDK 包内文档为准。
|
|
337
|
+
|
|
304
338
|
CLI 调用使用项目级路由,按[调用站点函数](agent-tools.md#调用站点函数)先读取函数说明,再按参数名传对象:
|
|
305
339
|
|
|
306
340
|
```bash
|
|
@@ -130,6 +130,7 @@ FaaS 调用 Database Function 与写入的协议见[FaaS 协议](faas.md#faas-
|
|
|
130
130
|
- 对外分发或扩大分享范围前,提醒用户核对应用文档的分享设置——该设置决定访问准入,不能由页面代码代替。
|
|
131
131
|
- Preview 可验证已授权管理者的行为,不能据此证明普通成员/访客的行为;身份和覆盖边界见[Preview 与 Prod 准入](#preview-与-prod-准入)。普通成员多角色验收在已授权的 Prod 任务中用真实账号完成。
|
|
132
132
|
- 修改原生 Base 角色或高级权限、删除 binding 属于危险操作,按 [Skill 主流程](../SKILL.md#外部操作与授权)核对具体目标和影响范围的授权。
|
|
133
|
+
- 以机器人(bot)身份搭建的 Base 与应用属主是机器人;init 只把本次新建的资源交给当前 CLI 用户及 `--grant-admin` 追加指定的人,结果与补救见[bot 建站与交接](collaborator-handoff.md)。加管理员不改变运行态数据边界。
|
|
133
134
|
|
|
134
135
|
## Preview 与 Prod 准入
|
|
135
136
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 站点 README
|
|
6
6
|
|
|
7
|
-
新建站点时,先从用户原始建站 Prompt 的主要自然语言确定 README 语言:支持中文、日文、英文;其他语言或无法判断主要语言时使用英文。用户明确指定 README 使用这三种语言之一时按其指定语言填写;指定其他语言时仍使用英文。读取初始化生成的项目根目录 `README.md
|
|
7
|
+
新建站点时,先从用户原始建站 Prompt 的主要自然语言确定 README 语言:支持中文、日文、英文;其他语言或无法判断主要语言时使用英文。用户明确指定 README 使用这三种语言之一时按其指定语言填写;指定其他语言时仍使用英文。读取初始化生成的项目根目录 `README.md`,按选定语言重写业务标题与正文,并移除实际存在的占位内容;不需要的问候 Function 按[清理初始化示例](workspace.md#清理初始化示例)处理。命令、路径和代码标识符保留原样。修改已有站点时沿用现有 README 语言,除非用户明确要求切换。README 是生成时确定的源码文档,不随 Site 运行时的宿主或浏览器语言变化。
|
|
8
8
|
|
|
9
9
|
四个必要章节使用下表中所选语言的标题;CLI 接受这三组标题,并只检查结构、占位符和章节是否非空,不判断正文语言或业务描述是否属实:
|
|
10
10
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
1. 先明确用户、目标、核心流程、状态变化和失败路径,再设计表与页面。
|
|
8
8
|
2. 具有独立生命周期、权限或统计需求的业务事实使用独立表,并明确数据所有权、归档和追溯要求。
|
|
9
|
-
3.
|
|
9
|
+
3. 每张表有可读主字段;存在独立生命周期时设计状态,存在责任分配时设计负责人,按业务与审计需求配置时间、标识和关系。底表也会被 Base 协作者直接打开浏览,表结构按[底表设计](base-table-design.md)执行。
|
|
10
10
|
4. 状态使用受控单选并定义合法转换;关系、金额、日期、人员使用对应 Base 字段。
|
|
11
11
|
5. 页面围绕用户任务组织,不按表机械生成 CRUD。
|
|
12
12
|
6. 每个 operation 定义固定输入、输出、权限、失败语义和影响范围。
|
|
@@ -17,7 +17,7 @@ CLI/存量 classic 使用 Node.js 20.19+;新建 workspace 与契约生成使
|
|
|
17
17
|
|
|
18
18
|
`skill install` 安装用于搭建、修改和发布应用的开发者 Skill;外部 Agent 使用已发布业务功能时,按[站点 Skill 安装](agent-tools.md#安装到本地-agent)运行 `agent-tools skill install`。
|
|
19
19
|
|
|
20
|
-
公开 CLI 只使用 `online` 环境;`init`、`pull` 等支持环境参数的命令显式传 `--env online`,`deploy` 不接受该参数。CLI、OpenAPI、Accounts、应用和 Page runtime
|
|
20
|
+
公开 CLI 只使用 `online` 环境;`init`、`pull` 等支持环境参数的命令显式传 `--env online`,`deploy` 不接受该参数。CLI、OpenAPI、Accounts、应用和 Page runtime 必须处于同一环境;原生资源操作默认使用 `--as user`;以机器人(bot)身份搭建时按 [bot 建站与交接](collaborator-handoff.md) 显式声明身份。
|
|
21
21
|
|
|
22
22
|
首次使用 `lark-cli` 时读取当前入口的 `--help`,本会话复用已确认的命令能力;不只按版本号判断。
|
|
23
23
|
|
|
@@ -103,12 +103,14 @@ CLI 自动保存 init、pull 和提交成功后的草稿基线。`REMOTE_SOURCE_
|
|
|
103
103
|
|
|
104
104
|
### 从零创建 Base
|
|
105
105
|
|
|
106
|
-
编写 schema
|
|
106
|
+
编写 schema 前,按已确认的文档入口读取字段规范:先执行 `lark-cli skills list lark-base/references` 获取当前 reference 路径列表,再用 `lark-cli skills read <reference-path>` 读取其中的字段定义文档;`<reference-path>` 使用列表返回的完整路径,不猜测或固定文件名。命令不可用时,直接读取环境中 lark-base 的对应 reference,并用 `lark-cli base +table-create --help` 核对当前命令契约,不再尝试已知缺失的入口。不要猜测属性。`tables[].fields` 使用与 `lark-cli base +base-create/+table-create --fields` 相同的字段定义;init 会先创建每张表的主字段,取得全部真实表 ID 后再按原顺序创建其余字段。
|
|
107
107
|
|
|
108
108
|
- 用户所在地或需求明确了时区时,`init --schema` 追加 `--time-zone <IANA 时区>`(例如 `Asia/Tokyo`);未指定时由服务端按租户默认时区创建。
|
|
109
|
+
- 表结构先按[底表设计](base-table-design.md)完成两层设计。
|
|
109
110
|
- 首个字段成为表的主字段,优先采用可读的文本标识;其他类型先核对主字段限制。
|
|
110
111
|
- 单选和多选都用 `select`,多选显式设置 `"multiple": true`,选项按字段规范声明。
|
|
111
112
|
- `link` 字段必须提供 `link_table`,且名称与本次 Schema 中的目标表完全一致;自关联和跨表关联会在所有表创建后补建,不需要按关联依赖调整表顺序。
|
|
113
|
+
- Schema 包含 `formula` 或 `lookup` 时,编写表达式或引用条件前先读取当前 lark-base 中对应类型的指南;字段结构校验不能代替该步骤。
|
|
112
114
|
- `datetime.style.format` 使用当前 Base 支持的固定枚举,不能自行增加秒级展示格式;底层时间精度与展示格式分别处理。
|
|
113
115
|
- 创建字段的 schema、查询类型与记录 CellValue 是不同协议,不互相替代。
|
|
114
116
|
|
|
@@ -126,9 +128,9 @@ CLI 自动保存 init、pull 和提交成功后的草稿基线。`REMOTE_SOURCE_
|
|
|
126
128
|
"name": "状态",
|
|
127
129
|
"multiple": false,
|
|
128
130
|
"options": [
|
|
129
|
-
{ "name": "待处理" },
|
|
130
|
-
{ "name": "进行中" },
|
|
131
|
-
{ "name": "已完成" }
|
|
131
|
+
{ "name": "待处理", "hue": "Gray" },
|
|
132
|
+
{ "name": "进行中", "hue": "Blue" },
|
|
133
|
+
{ "name": "已完成", "hue": "Green" }
|
|
132
134
|
]
|
|
133
135
|
},
|
|
134
136
|
{
|
|
@@ -191,6 +193,17 @@ package-lock.json # 唯一根依赖锁
|
|
|
191
193
|
|
|
192
194
|
只从 `catalog.json` 读取表名、字段名、ID、选项和查询类型,不根据建表输入猜测 Catalog 结果。
|
|
193
195
|
|
|
196
|
+
### 清理初始化示例
|
|
197
|
+
|
|
198
|
+
初始化生成的 `server/functions/hello/` 是问候示例。业务不使用它时,在首次生成契约和 check 前删除整个目录,包括 `index.ts`、`contract.ts`、`meta.json`,不要只删除文件后留下空目录。在项目根目录执行:
|
|
199
|
+
|
|
200
|
+
<!-- example: remove-starter-hello -->
|
|
201
|
+
```bash
|
|
202
|
+
node -e "require('node:fs').rmSync('server/functions/hello', { recursive: true, force: true })"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
该命令也可清理逐文件删除后留下的空目录;已改为业务用途的 hello 和其他需求外 Function 保留。同步移除页面中实际存在的示例调用,再按[Check 与契约生成](development.md#check-与契约生成)生成契约并检查。CLI 仍将非完整的 Function 目录视为错误,不会把残缺声明静默排除。
|
|
206
|
+
|
|
194
207
|
### 初始化失败与阶段回执
|
|
195
208
|
|
|
196
209
|
`--schema` 路径会在首个远端创建前校验整份 schema;按返回的字段路径修正。本地预检通过不代表权限、配额或服务端语义检查通过。
|
|
@@ -209,18 +222,22 @@ package-lock.json # 唯一根依赖锁
|
|
|
209
222
|
|
|
210
223
|
先读取 `base-database.jsonc`、`catalog.json`、相关源码和本地修改。按需求决定是否需要远端发布状态或最新 schema;只改 UI 不重复拉取全部远端资源。修改保留需求外 Function:Database Function、Mutation、FaaS,以及存在 `ai/` 根时的 AI Function,以本地项目声明全量覆盖远端草稿;AI 的声明目录是 `ai/*/meta.json`,空根表示权威空集合。旧工程缺少整个 `ai/` 根时不覆盖远端 AI,先用公共 `pull` 恢复声明。新增、修改或删除任何 Function 都先改本地事实源,再走公共 check/deploy 流程。
|
|
211
224
|
|
|
212
|
-
需要绑定同一 Base
|
|
225
|
+
需要绑定同一 Base 中的新表时,先从 `lark-cli base +table-list/get` 的真实结果取得 ID,再在项目根目录执行:
|
|
213
226
|
|
|
214
227
|
```bash
|
|
215
|
-
base-database-cli
|
|
216
|
-
base-database-cli lark-cli -- api GET /open-apis/base/v3/sites/<app-token>/catalog --json
|
|
228
|
+
base-database-cli tables add <table-id>
|
|
217
229
|
```
|
|
218
230
|
|
|
219
|
-
|
|
231
|
+
加表仅验证候选表的读取范围;部署时仍会检查 Base 版本准入和额度。
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
命令只读查询候选表的 Catalog,并更新本地 binding 和 `catalog.json`;保留原有别名、配置注释和业务源码,不修改远端绑定或草稿基线。继续 check/deploy,新增绑定与源码在同一次草稿提交中生效。删除本地 ID 不会触发远程解绑;真实解绑遵守[外部操作与授权](../SKILL.md#外部操作与授权)。
|
|
235
|
+
|
|
236
|
+
查询失败时按错误修正表 ID、权限或服务可用性,再重跑命令;不先调用绑定接口。deploy 遇到远端冲突时仍按[远端更新与冲突恢复](#远端更新与冲突恢复)处理,不直接修改基线文件。
|
|
220
237
|
|
|
221
238
|
## 开发期调用边界
|
|
222
239
|
|
|
223
|
-
项目级 `base-database-cli lark-cli -- ...`
|
|
240
|
+
项目级 `base-database-cli lark-cli -- ...` 用于应用控制面诊断,以及新建 Base 的示例数据写入和 Database Function 回读验证;需在含 `base-database.jsonc` 的目录执行。其他原生 Base 发现和配置直接使用 `lark-cli base +...`。这些 CLI 操作不进入 Page/FaaS 运行时代码。
|
|
224
241
|
|
|
225
242
|
普通 `api` 请求(默认 JSON、`--json` 或 `--format json`)会将宿主自动落盘的 JSON 响应恢复为 stdout JSON,并清理本次临时文件,上传请求同样适用。真实文件下载显式使用 `--output`;该模式以及 `--jq`、`--page-all`、非 JSON 格式、标准输入请求、帮助和 dry-run 保留宿主原始行为。
|
|
226
243
|
|
|
@@ -20,6 +20,6 @@ workspace 工程结构。
|
|
|
20
20
|
|
|
21
21
|
## Local project
|
|
22
22
|
|
|
23
|
-
workspace 使用唯一根 npm workspace(page、server)和根 package-lock.json;Database Function、Mutation、FaaS 与可选的 AI Function 声明分别位于 `database-functions/`、`mutations/`、`server/functions/` 与 `ai/<functionKey>/meta.json`。SDK 版本由 page、server 的 package.json 精确固定,需提供 codegen
|
|
23
|
+
workspace 使用唯一根 npm workspace(page、server)和根 package-lock.json;Database Function、Mutation、FaaS 与可选的 AI Function 声明分别位于 `database-functions/`、`mutations/`、`server/functions/` 与 `ai/<functionKey>/meta.json`。SDK 版本由 page、server 的 package.json 精确固定,需提供 codegen 入口;不可用时按 CLI 报错给出的恢复步骤处理,保留当前 SDK 版本,升级需用户授权。依赖准备与 contracts generate 的选项见随 CLI Skill 的 development.md「Check 与契约生成」;生成后运行 check。各类 Function 的恢复、校验和发布统一使用项目级 pull/check/deploy 流程。默认 `check` 完整解析全部 Function 并调用统一服务端 Validate;明确离线时才使用 `--local-only`。
|
|
24
24
|
|
|
25
25
|
安装后阅读 node_modules/@lark-base-open/base-database-app-sdk/docs/README.md。运行 contracts generate → check;本地 check 使用 CLI 内置平台构建器。云端根 npm ci 后直接调用平台构建器,Page 执行 npm run build --workspace page,不从工程脚本调用 CLI。classic 仅保留存量兼容。
|
|
@@ -133,9 +133,9 @@
|
|
|
133
133
|
"license": "MIT"
|
|
134
134
|
},
|
|
135
135
|
"node_modules/@lark-base-open/base-database-app-sdk": {
|
|
136
|
-
"version": "0.
|
|
137
|
-
"resolved": "https://registry.npmjs.org/@lark-base-open/base-database-app-sdk/-/base-database-app-sdk-0.
|
|
138
|
-
"integrity": "sha512-
|
|
136
|
+
"version": "0.4.2",
|
|
137
|
+
"resolved": "https://registry.npmjs.org/@lark-base-open/base-database-app-sdk/-/base-database-app-sdk-0.4.2.tgz",
|
|
138
|
+
"integrity": "sha512-owQolTJLCN6yPtu/o0LNO+E82nZ0r1fYLXfo+cnMjcyasFJdEgPRW4YcUuY/4+jiRXNxX0s3yG53k0s11vLFAQ==",
|
|
139
139
|
"dependencies": {
|
|
140
140
|
"@lark-base-open/base-site-channel": "0.1.6",
|
|
141
141
|
"@radix-ui/react-popover": "1.2.0",
|
|
@@ -2210,7 +2210,7 @@
|
|
|
2210
2210
|
"page": {
|
|
2211
2211
|
"version": "0.0.0",
|
|
2212
2212
|
"dependencies": {
|
|
2213
|
-
"@lark-base-open/base-database-app-sdk": "0.
|
|
2213
|
+
"@lark-base-open/base-database-app-sdk": "0.4.2",
|
|
2214
2214
|
"@tanstack/react-query": "5.104.1",
|
|
2215
2215
|
"react": "19.2.7",
|
|
2216
2216
|
"react-dom": "19.2.7"
|
|
@@ -2227,7 +2227,7 @@
|
|
|
2227
2227
|
"server": {
|
|
2228
2228
|
"version": "0.0.0",
|
|
2229
2229
|
"dependencies": {
|
|
2230
|
-
"@lark-base-open/base-database-app-sdk": "0.
|
|
2230
|
+
"@lark-base-open/base-database-app-sdk": "0.4.2",
|
|
2231
2231
|
"zod": "4.6.5"
|
|
2232
2232
|
},
|
|
2233
2233
|
"devDependencies": {
|