@lark-base-open/base-database-cli 1.4.0 → 1.4.3
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 +63 -0
- package/README.md +118 -15
- package/THIRD_PARTY_LICENSES.json +1662 -0
- package/config-schema.json +64 -3
- package/data/template-hmr-scripts.json +9 -0
- package/data/template-index-html/17e698eef687ece8f1628e3e2c4801da5e7233faa87076b3424acde8df57b825.html +24 -0
- package/dist/agent-tools-guide.d.ts +29 -0
- package/dist/agent-tools-guide.d.ts.map +1 -0
- package/dist/agent-tools-guide.js +169 -0
- package/dist/agent-tools-guide.js.map +1 -0
- package/dist/agent-tools-skill.d.ts +16 -0
- package/dist/agent-tools-skill.d.ts.map +1 -0
- package/dist/agent-tools-skill.js +183 -0
- package/dist/agent-tools-skill.js.map +1 -0
- package/dist/agent-tools.d.ts +20 -0
- package/dist/agent-tools.d.ts.map +1 -0
- package/dist/agent-tools.js +137 -0
- package/dist/agent-tools.js.map +1 -0
- package/dist/ai-functions.d.ts +10 -0
- package/dist/ai-functions.d.ts.map +1 -1
- package/dist/ai-functions.js +264 -212
- package/dist/ai-functions.js.map +1 -1
- package/dist/app-builder/core.d.mts +37 -0
- package/dist/app-builder/core.d.mts.map +1 -0
- package/dist/app-builder/core.mjs +673 -0
- package/dist/app-builder/core.mjs.map +1 -0
- package/dist/app-builder/package.json +1 -0
- package/dist/app-builder/schema.d.ts +4 -0
- package/dist/app-builder/schema.d.ts.map +1 -0
- package/dist/app-builder/schema.js +72 -0
- package/dist/app-builder/schema.js.map +1 -0
- package/dist/archive.d.ts +22 -2
- package/dist/archive.d.ts.map +1 -1
- package/dist/archive.js +311 -74
- package/dist/archive.js.map +1 -1
- package/dist/auth.d.ts +2 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +13 -8
- package/dist/auth.js.map +1 -1
- package/dist/build-server.d.ts +25 -0
- package/dist/build-server.d.ts.map +1 -0
- package/dist/build-server.js +32 -0
- package/dist/build-server.js.map +1 -0
- package/dist/business-update-notice.d.ts +37 -0
- package/dist/business-update-notice.d.ts.map +1 -0
- package/dist/business-update-notice.js +24 -0
- package/dist/business-update-notice.js.map +1 -0
- package/dist/check.d.ts +11 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +85 -15
- package/dist/check.js.map +1 -1
- package/dist/cloud-build-diagnostic.d.ts +9 -0
- package/dist/cloud-build-diagnostic.d.ts.map +1 -0
- package/dist/cloud-build-diagnostic.js +65 -0
- package/dist/cloud-build-diagnostic.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +41 -11
- package/dist/config.js.map +1 -1
- package/dist/contract-extractor.d.ts +21 -0
- package/dist/contract-extractor.d.ts.map +1 -0
- package/dist/contract-extractor.js +260 -0
- package/dist/contract-extractor.js.map +1 -0
- package/dist/contract-worker.d.ts +12 -0
- package/dist/contract-worker.d.ts.map +1 -0
- package/dist/contract-worker.js +90 -0
- package/dist/contract-worker.js.map +1 -0
- package/dist/dependency-policy.d.ts.map +1 -1
- package/dist/dependency-policy.js +6 -1
- package/dist/dependency-policy.js.map +1 -1
- package/dist/deploy.d.ts +20 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +181 -52
- package/dist/deploy.js.map +1 -1
- package/dist/dev-bootstrap.d.ts +5 -0
- package/dist/dev-bootstrap.d.ts.map +1 -0
- package/dist/dev-bootstrap.js +185 -0
- package/dist/dev-bootstrap.js.map +1 -0
- package/dist/dev-events.d.ts +24 -0
- package/dist/dev-events.d.ts.map +1 -0
- package/dist/dev-events.js +67 -0
- package/dist/dev-events.js.map +1 -0
- package/dist/dev-pairing.d.ts +4 -0
- package/dist/dev-pairing.d.ts.map +1 -0
- package/dist/dev-pairing.js +54 -0
- package/dist/dev-pairing.js.map +1 -0
- package/dist/dev-url.d.ts +4 -0
- package/dist/dev-url.d.ts.map +1 -0
- package/dist/dev-url.js +29 -0
- package/dist/dev-url.js.map +1 -0
- package/dist/dev-vite.d.ts +9 -0
- package/dist/dev-vite.d.ts.map +1 -0
- package/dist/dev-vite.js +237 -0
- package/dist/dev-vite.js.map +1 -0
- package/dist/dev-watch.d.ts +33 -0
- package/dist/dev-watch.d.ts.map +1 -0
- package/dist/dev-watch.js +246 -0
- package/dist/dev-watch.js.map +1 -0
- package/dist/dev.d.ts +24 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +244 -0
- package/dist/dev.js.map +1 -0
- package/dist/development-pairing.generated.d.ts +12 -0
- package/dist/development-pairing.generated.d.ts.map +1 -0
- package/dist/development-pairing.generated.js +13 -0
- package/dist/development-pairing.generated.js.map +1 -0
- package/dist/diagnostic-platforms.d.ts +3 -0
- package/dist/diagnostic-platforms.d.ts.map +1 -0
- package/dist/diagnostic-platforms.js +3 -0
- package/dist/diagnostic-platforms.js.map +1 -0
- package/dist/diagnostic-schema.d.ts +151 -0
- package/dist/diagnostic-schema.d.ts.map +1 -0
- package/dist/diagnostic-schema.js +129 -0
- package/dist/diagnostic-schema.js.map +1 -0
- package/dist/diagnostics.d.ts +78 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +333 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/distribution-commands.d.ts.map +1 -1
- package/dist/distribution-commands.js +6 -2
- package/dist/distribution-commands.js.map +1 -1
- package/dist/distribution-npm.d.ts +2 -2
- package/dist/distribution-npm.d.ts.map +1 -1
- package/dist/distribution-npm.js +14 -1
- package/dist/distribution-npm.js.map +1 -1
- package/dist/environment-variables.d.ts.map +1 -1
- package/dist/environment-variables.js +2 -1
- package/dist/environment-variables.js.map +1 -1
- package/dist/function-contracts.d.ts +40 -0
- package/dist/function-contracts.d.ts.map +1 -0
- package/dist/function-contracts.js +357 -0
- package/dist/function-contracts.js.map +1 -0
- package/dist/function-description.d.ts +11 -4
- package/dist/function-description.d.ts.map +1 -1
- package/dist/function-description.js +22 -12
- package/dist/function-description.js.map +1 -1
- package/dist/function-input-types.d.ts +6 -4
- package/dist/function-input-types.d.ts.map +1 -1
- package/dist/function-input-types.js +97 -135
- package/dist/function-input-types.js.map +1 -1
- package/dist/function-params.d.ts +53 -0
- package/dist/function-params.d.ts.map +1 -0
- package/dist/function-params.js +184 -0
- package/dist/function-params.js.map +1 -0
- package/dist/function-schema.d.ts +14 -0
- package/dist/function-schema.d.ts.map +1 -1
- package/dist/function-schema.js +99 -9
- package/dist/function-schema.js.map +1 -1
- package/dist/init-journal.d.ts +1 -0
- package/dist/init-journal.d.ts.map +1 -1
- package/dist/init-journal.js +21 -7
- package/dist/init-journal.js.map +1 -1
- package/dist/init.d.ts +1 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +55 -5
- package/dist/init.js.map +1 -1
- package/dist/lark-cli-error.d.ts +13 -2
- package/dist/lark-cli-error.d.ts.map +1 -1
- package/dist/lark-cli-error.js +54 -13
- package/dist/lark-cli-error.js.map +1 -1
- package/dist/lark-cli-passthrough.d.ts +9 -0
- package/dist/lark-cli-passthrough.d.ts.map +1 -0
- package/dist/lark-cli-passthrough.js +101 -0
- package/dist/lark-cli-passthrough.js.map +1 -0
- package/dist/lark-cli.d.ts +4 -1
- package/dist/lark-cli.d.ts.map +1 -1
- package/dist/lark-cli.js +44 -18
- package/dist/lark-cli.js.map +1 -1
- package/dist/legacy-function-input-renderer.d.ts +6 -0
- package/dist/legacy-function-input-renderer.d.ts.map +1 -0
- package/dist/legacy-function-input-renderer.js +175 -0
- package/dist/legacy-function-input-renderer.js.map +1 -0
- package/dist/link-guard-check.d.ts +12 -0
- package/dist/link-guard-check.d.ts.map +1 -0
- package/dist/link-guard-check.js +138 -0
- package/dist/link-guard-check.js.map +1 -0
- package/dist/managed-agent-docs.d.ts +14 -0
- package/dist/managed-agent-docs.d.ts.map +1 -0
- package/dist/managed-agent-docs.js +172 -0
- package/dist/managed-agent-docs.js.map +1 -0
- package/dist/mutation-schema.d.ts +6 -0
- package/dist/mutation-schema.d.ts.map +1 -1
- package/dist/mutation-schema.js +6 -0
- package/dist/mutation-schema.js.map +1 -1
- package/dist/mutation.d.ts +4 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +17 -2
- package/dist/mutation.js.map +1 -1
- package/dist/npm.d.ts +1 -0
- package/dist/npm.d.ts.map +1 -1
- package/dist/npm.js +28 -0
- package/dist/npm.js.map +1 -1
- package/dist/preview-receipt.d.ts +0 -2
- package/dist/preview-receipt.d.ts.map +1 -1
- package/dist/preview-receipt.js +0 -28
- package/dist/preview-receipt.js.map +1 -1
- package/dist/process.d.ts +1 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +25 -0
- package/dist/process.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +239 -26
- package/dist/program.js.map +1 -1
- package/dist/project-build.d.ts +2 -1
- package/dist/project-build.d.ts.map +1 -1
- package/dist/project-build.js +53 -16
- package/dist/project-build.js.map +1 -1
- package/dist/project-capabilities.d.ts +8 -0
- package/dist/project-capabilities.d.ts.map +1 -0
- package/dist/project-capabilities.js +47 -0
- package/dist/project-capabilities.js.map +1 -0
- package/dist/project-context.d.ts +66 -0
- package/dist/project-context.d.ts.map +1 -1
- package/dist/project-context.js +68 -6
- package/dist/project-context.js.map +1 -1
- package/dist/project-layout.d.ts +11 -0
- package/dist/project-layout.d.ts.map +1 -1
- package/dist/project-layout.js +63 -1
- package/dist/project-layout.js.map +1 -1
- package/dist/public-exports.d.ts +5 -0
- package/dist/public-exports.d.ts.map +1 -0
- package/dist/public-exports.js +76 -0
- package/dist/public-exports.js.map +1 -0
- package/dist/public-sql-error.d.ts +3 -1
- package/dist/public-sql-error.d.ts.map +1 -1
- package/dist/public-sql-error.js +5 -2
- package/dist/public-sql-error.js.map +1 -1
- package/dist/pull.d.ts +1 -0
- package/dist/pull.d.ts.map +1 -1
- package/dist/pull.js +103 -20
- package/dist/pull.js.map +1 -1
- package/dist/sdk-codegen.d.ts +16 -0
- package/dist/sdk-codegen.d.ts.map +1 -0
- package/dist/sdk-codegen.js +181 -0
- package/dist/sdk-codegen.js.map +1 -0
- package/dist/sdk-install.d.ts +4 -0
- package/dist/sdk-install.d.ts.map +1 -0
- package/dist/sdk-install.js +33 -0
- package/dist/sdk-install.js.map +1 -0
- package/dist/skill-frontmatter.d.ts +5 -0
- package/dist/skill-frontmatter.d.ts.map +1 -0
- package/dist/skill-frontmatter.js +28 -0
- package/dist/skill-frontmatter.js.map +1 -0
- package/dist/skill.d.ts +2 -1
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +18 -12
- package/dist/skill.js.map +1 -1
- package/dist/source-format.d.ts +10 -0
- package/dist/source-format.d.ts.map +1 -0
- package/dist/source-format.js +49 -0
- package/dist/source-format.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/unified-functions.d.ts +22 -0
- package/dist/unified-functions.d.ts.map +1 -0
- package/dist/unified-functions.js +114 -0
- package/dist/unified-functions.js.map +1 -0
- package/dist/updates.d.ts +13 -1
- package/dist/updates.d.ts.map +1 -1
- package/dist/updates.js +65 -29
- package/dist/updates.js.map +1 -1
- package/dist/workspace-fingerprint.d.ts.map +1 -1
- package/dist/workspace-fingerprint.js +5 -0
- package/dist/workspace-fingerprint.js.map +1 -1
- package/package.json +17 -5
- package/skills/lark-base-database/SKILL.md +21 -55
- package/skills/lark-base-database/references/agent-tool-design.md +181 -0
- package/skills/lark-base-database/references/agent-tools.md +101 -0
- package/skills/lark-base-database/references/ai-function.md +80 -186
- package/skills/lark-base-database/references/database-function-limitations.md +12 -4
- package/skills/lark-base-database/references/database-function.md +47 -20
- package/skills/lark-base-database/references/development.md +81 -109
- package/skills/lark-base-database/references/environment-variables.md +2 -2
- package/skills/lark-base-database/references/faas.md +43 -16
- package/skills/lark-base-database/references/file-transfer.md +10 -33
- package/skills/lark-base-database/references/frontend-design-guide.md +1 -1
- package/skills/lark-base-database/references/legacy-ai-function.md +120 -0
- package/skills/lark-base-database/references/legacy-development.md +156 -0
- package/skills/lark-base-database/references/legacy-file-transfer.md +68 -0
- package/skills/lark-base-database/references/mutations.md +38 -29
- package/skills/lark-base-database/references/notifications.md +1 -1
- package/skills/lark-base-database/references/permission-design.md +11 -5
- package/skills/lark-base-database/references/release.md +22 -7
- package/skills/lark-base-database/references/verification.md +55 -16
- package/skills/lark-base-database/references/workspace-migration.md +86 -0
- package/skills/lark-base-database/references/workspace.md +54 -45
- package/templates/database-starter/README.md +2 -0
- package/templates/database-starter/database-functions/README.md +2 -2
- package/templates/database-starter/mutations/README.md +2 -2
- package/templates/database-starter/page/README.md +5 -4
- package/templates/database-starter/page/src/examples/ai-function/TextStreamOperation.tsx +6 -6
- package/templates/database-starter/page/src/lib/database-runtime-attachment.test.ts +52 -0
- package/templates/database-starter/page/src/lib/database-runtime.test.ts +2 -2
- package/templates/database-starter/page/src/lib/database-runtime.ts +38 -11
- package/templates/database-starter/server-functions/scripts/run-tsc.mjs +3 -2
- package/templates/database-starter-v2/README.md +25 -0
- package/templates/database-starter-v2/base-app.config.ts +10 -0
- package/templates/database-starter-v2/database-functions/README.md +1 -0
- package/templates/database-starter-v2/gitignore +6 -0
- package/templates/database-starter-v2/mutations/README.md +1 -0
- package/templates/database-starter-v2/package-lock.json +2239 -0
- package/templates/database-starter-v2/package.json +18 -0
- package/templates/database-starter-v2/page/index.html +2 -0
- package/templates/database-starter-v2/page/package.json +25 -0
- package/templates/database-starter-v2/page/src/App.tsx +12 -0
- package/templates/database-starter-v2/page/src/generated/README.md +1 -0
- package/templates/database-starter-v2/page/src/index.css +1 -0
- package/templates/database-starter-v2/page/src/lib/date-time.ts +61 -0
- package/templates/database-starter-v2/page/src/main.tsx +6 -0
- package/templates/database-starter-v2/page/tsconfig.json +19 -0
- package/templates/database-starter-v2/page/vite.config.ts +3 -0
- package/templates/database-starter-v2/prettierignore +3 -0
- package/templates/database-starter-v2/server/functions/README.md +1 -0
- package/templates/database-starter-v2/server/functions/hello/contract.ts +5 -0
- package/templates/database-starter-v2/server/functions/hello/index.ts +7 -0
- package/templates/database-starter-v2/server/functions/hello/meta.json +1 -0
- package/templates/database-starter-v2/server/generated/runtime-profile.ts +5 -0
- package/templates/database-starter-v2/server/package.json +17 -0
- package/templates/database-starter-v2/server/tsconfig.json +14 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { responseData, runLarkCli } from './lark-cli.js';
|
|
2
|
+
export function functionEnv(value = 'preview') {
|
|
3
|
+
if (value !== 'preview' && value !== 'prod')
|
|
4
|
+
throw new Error('env must be preview or prod');
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
export function assertFunctionResults(data, expectedIds) {
|
|
8
|
+
const unknown = () => {
|
|
9
|
+
throw new Error('FUNCTION_RESPONSE_UNKNOWN: incomplete or invalid batch receipt; read back the affected Functions before retrying or publishing');
|
|
10
|
+
};
|
|
11
|
+
if (!Array.isArray(data.results))
|
|
12
|
+
return unknown();
|
|
13
|
+
const expected = new Set(expectedIds);
|
|
14
|
+
if (expected.size !== expectedIds.length)
|
|
15
|
+
return unknown();
|
|
16
|
+
const seen = new Set();
|
|
17
|
+
const deletedFunctionIds = [];
|
|
18
|
+
for (const item of data.results) {
|
|
19
|
+
if (!item ||
|
|
20
|
+
typeof item.functionId !== 'string' ||
|
|
21
|
+
!Number.isSafeInteger(item.code) ||
|
|
22
|
+
seen.has(item.functionId) ||
|
|
23
|
+
(!expected.has(item.functionId) && item.action !== 'delete'))
|
|
24
|
+
return unknown();
|
|
25
|
+
seen.add(item.functionId);
|
|
26
|
+
if (item.action === 'delete')
|
|
27
|
+
deletedFunctionIds.push(item.functionId);
|
|
28
|
+
}
|
|
29
|
+
if (expectedIds.some((id) => !seen.has(id)))
|
|
30
|
+
return unknown();
|
|
31
|
+
const failures = data.results.filter((item) => item.code !== 0);
|
|
32
|
+
if (failures.length)
|
|
33
|
+
throw new Error(`Function batch failed: ${JSON.stringify(failures)}`);
|
|
34
|
+
return deletedFunctionIds;
|
|
35
|
+
}
|
|
36
|
+
export function putFunctions(token, kinds, functions, env, cwd) {
|
|
37
|
+
const data = responseData(runLarkCli([
|
|
38
|
+
'api',
|
|
39
|
+
'PUT',
|
|
40
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(token)}/functions`,
|
|
41
|
+
'--data',
|
|
42
|
+
JSON.stringify({ kinds, functions }),
|
|
43
|
+
], env, cwd));
|
|
44
|
+
const deletedFunctionIds = assertFunctionResults(data, functions.map((item) => item.functionId));
|
|
45
|
+
return { ...data, deletedFunctionIds };
|
|
46
|
+
}
|
|
47
|
+
export function functionPage(data, state) {
|
|
48
|
+
if (data.skillHash === '')
|
|
49
|
+
throw new Error('FUNCTION_RESPONSE_UNKNOWN: 服务端返回了旧协议结果(skillHash 为空),无法确认完整函数列表;请等待服务端协议升级后重试');
|
|
50
|
+
if (++state.pages > 1000 ||
|
|
51
|
+
!Array.isArray(data.functions) ||
|
|
52
|
+
typeof data.hasMore !== 'boolean' ||
|
|
53
|
+
typeof data.skillHash !== 'string' ||
|
|
54
|
+
!((typeof data.versionId === 'number' &&
|
|
55
|
+
Number.isSafeInteger(data.versionId)) ||
|
|
56
|
+
(typeof data.versionId === 'string' && /^\d+$/.test(data.versionId))))
|
|
57
|
+
throw new Error('FUNCTION_RESPONSE_UNKNOWN: invalid or unbounded Function list; read again before writing');
|
|
58
|
+
const snapshot = JSON.stringify([data.versionId, data.skillHash]);
|
|
59
|
+
if (state.snapshot !== undefined && state.snapshot !== snapshot)
|
|
60
|
+
throw new Error('FUNCTION_RESPONSE_UNKNOWN: discovery snapshot changed; read again before writing');
|
|
61
|
+
state.snapshot = snapshot;
|
|
62
|
+
for (const item of data.functions) {
|
|
63
|
+
if (!item ||
|
|
64
|
+
typeof item.functionId !== 'string' ||
|
|
65
|
+
!/^[A-Za-z0-9_-]{1,64}$/.test(item.functionId) ||
|
|
66
|
+
!['sql', 'edge', 'mutation', 'ai'].includes(item.functionType) ||
|
|
67
|
+
state.ids.has(item.functionId))
|
|
68
|
+
throw new Error('FUNCTION_RESPONSE_UNKNOWN: invalid or duplicate function metadata');
|
|
69
|
+
state.ids.add(item.functionId);
|
|
70
|
+
}
|
|
71
|
+
return data.functions;
|
|
72
|
+
}
|
|
73
|
+
export function listFunctions(token, version, env, cwd) {
|
|
74
|
+
const functions = [];
|
|
75
|
+
const seen = new Set();
|
|
76
|
+
let pageToken = '';
|
|
77
|
+
const state = { pages: 0, ids: new Set() };
|
|
78
|
+
do {
|
|
79
|
+
const data = responseData(runLarkCli([
|
|
80
|
+
'api',
|
|
81
|
+
'GET',
|
|
82
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(token)}/functions`,
|
|
83
|
+
'--params',
|
|
84
|
+
JSON.stringify({
|
|
85
|
+
env: functionEnv(version),
|
|
86
|
+
includeInternal: true,
|
|
87
|
+
pageSize: 20,
|
|
88
|
+
...(pageToken ? { pageToken } : {}),
|
|
89
|
+
}),
|
|
90
|
+
], env, cwd));
|
|
91
|
+
functions.push(...functionPage(data, state));
|
|
92
|
+
if (!data.hasMore)
|
|
93
|
+
return functions;
|
|
94
|
+
if (typeof data.pageToken !== 'string' ||
|
|
95
|
+
!data.pageToken ||
|
|
96
|
+
seen.has(data.pageToken))
|
|
97
|
+
throw new Error('Function list returned an empty or repeated pageToken');
|
|
98
|
+
pageToken = data.pageToken;
|
|
99
|
+
seen.add(pageToken);
|
|
100
|
+
} while (true);
|
|
101
|
+
}
|
|
102
|
+
export function getFunction(token, key, version, env, cwd) {
|
|
103
|
+
const data = responseData(runLarkCli([
|
|
104
|
+
'api',
|
|
105
|
+
'GET',
|
|
106
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(token)}/functions/${encodeURIComponent(key)}`,
|
|
107
|
+
'--params',
|
|
108
|
+
JSON.stringify({ env: functionEnv(version), includeInternal: true }),
|
|
109
|
+
], env, cwd));
|
|
110
|
+
if (!data.function || typeof data.function !== 'object')
|
|
111
|
+
throw new Error('Function detail is missing function');
|
|
112
|
+
return data.function;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=unified-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-functions.js","sourceRoot":"","sources":["../src/unified-functions.ts"],"names":[],"mappings":"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"}
|
package/dist/updates.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export { businessUpdateNotice } from './business-update-notice.js';
|
|
3
|
+
export declare function checkUpdate(skillDirectory?: string, timeoutMs?: number): Promise<{
|
|
2
4
|
current: string;
|
|
3
5
|
skill: {
|
|
4
6
|
directory: string | undefined;
|
|
@@ -6,6 +8,15 @@ export declare function checkUpdate(skillDirectory?: string): Promise<{
|
|
|
6
8
|
status: string;
|
|
7
9
|
};
|
|
8
10
|
status: string;
|
|
11
|
+
} | {
|
|
12
|
+
current: string;
|
|
13
|
+
skill: {
|
|
14
|
+
directory: string | undefined;
|
|
15
|
+
version: string | undefined;
|
|
16
|
+
status: string;
|
|
17
|
+
};
|
|
18
|
+
status: string;
|
|
19
|
+
cached: boolean;
|
|
9
20
|
} | {
|
|
10
21
|
current: string;
|
|
11
22
|
skill: {
|
|
@@ -17,4 +28,5 @@ export declare function checkUpdate(skillDirectory?: string): Promise<{
|
|
|
17
28
|
latest: string;
|
|
18
29
|
cached: boolean;
|
|
19
30
|
}>;
|
|
31
|
+
export declare function enableBusinessUpdateNotices(program: Command): void;
|
|
20
32
|
//# sourceMappingURL=updates.d.ts.map
|
package/dist/updates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,wBAAsB,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,SAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkH1E;AAKD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqBlE"}
|
package/dist/updates.js
CHANGED
|
@@ -4,7 +4,9 @@ import { join, resolve } from 'node:path';
|
|
|
4
4
|
import semver from 'semver';
|
|
5
5
|
import { cliPackage, npm } from './distribution-npm.js';
|
|
6
6
|
import { readSkillVersion } from './skill.js';
|
|
7
|
-
|
|
7
|
+
import { businessChecks } from './business-update-notice.js';
|
|
8
|
+
export { businessUpdateNotice } from './business-update-notice.js';
|
|
9
|
+
export async function checkUpdate(skillDirectory, timeoutMs = 5000) {
|
|
8
10
|
const current = cliPackage.version;
|
|
9
11
|
const recordedVersion = skillDirectory
|
|
10
12
|
? readSkillVersion(resolve(skillDirectory))
|
|
@@ -22,12 +24,33 @@ export async function checkUpdate(skillDirectory) {
|
|
|
22
24
|
: 'mismatch',
|
|
23
25
|
};
|
|
24
26
|
const local = { current, skill };
|
|
25
|
-
if (
|
|
26
|
-
process.env.BASE_SITE_BUILDER_WORKSPACE_SOURCE ||
|
|
27
|
-
process.env.BASE_SITE_BUILDER_SITE_TOKEN) {
|
|
27
|
+
if (process.env.CI && process.env.CI !== 'false') {
|
|
28
28
|
return { ...local, status: 'skipped' };
|
|
29
29
|
}
|
|
30
|
-
const
|
|
30
|
+
const statePath = join(homedir(), '.base-database-cli', 'update-state.json');
|
|
31
|
+
let previous;
|
|
32
|
+
try {
|
|
33
|
+
previous = JSON.parse(readFileSync(statePath, 'utf8'));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Missing or damaged cache does not prevent a fresh query.
|
|
37
|
+
}
|
|
38
|
+
const age = typeof previous?.checkedAt === 'string'
|
|
39
|
+
? Date.now() - Date.parse(previous.checkedAt)
|
|
40
|
+
: Number.NaN;
|
|
41
|
+
if (previous?.status === 'unavailable' && age >= 0 && age < 3_600_000) {
|
|
42
|
+
return { ...local, status: 'unavailable', cached: true };
|
|
43
|
+
}
|
|
44
|
+
const saveState = (state) => {
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(join(homedir(), '.base-database-cli'), { recursive: true });
|
|
47
|
+
writeFileSync(statePath, JSON.stringify({ ...state, checkedAt: new Date().toISOString() }, null, 2) + '\n');
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Optional cache writes must not affect business commands.
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const deadline = Date.now() + timeoutMs;
|
|
31
54
|
const query = (args) => {
|
|
32
55
|
const remaining = deadline - Date.now();
|
|
33
56
|
if (remaining <= 0)
|
|
@@ -47,21 +70,15 @@ export async function checkUpdate(skillDirectory) {
|
|
|
47
70
|
// Do not persist credentials if a custom registry URL contains them.
|
|
48
71
|
const url = new URL(registry);
|
|
49
72
|
const cacheable = !url.username && !url.password && !url.search;
|
|
50
|
-
const statePath = join(homedir(), '.base-database-cli', 'update-state.json');
|
|
51
73
|
let latest;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
latest = cached.latest;
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
/* A missing or damaged cache is disposable. */
|
|
64
|
-
}
|
|
74
|
+
if (cacheable &&
|
|
75
|
+
(previous?.status === 'latest' || previous?.status === undefined) &&
|
|
76
|
+
previous?.registry === registry &&
|
|
77
|
+
age >= 0 &&
|
|
78
|
+
age < 86_400_000 &&
|
|
79
|
+
typeof previous?.latest === 'string' &&
|
|
80
|
+
semver.valid(previous.latest))
|
|
81
|
+
latest = previous.latest;
|
|
65
82
|
const cached = Boolean(latest);
|
|
66
83
|
if (!latest) {
|
|
67
84
|
latest = JSON.parse(await query([
|
|
@@ -73,15 +90,8 @@ export async function checkUpdate(skillDirectory) {
|
|
|
73
90
|
]));
|
|
74
91
|
if (!latest || !semver.valid(latest))
|
|
75
92
|
throw new Error('npm returned an invalid latest version');
|
|
76
|
-
if (cacheable)
|
|
77
|
-
|
|
78
|
-
mkdirSync(join(homedir(), '.base-database-cli'), { recursive: true });
|
|
79
|
-
writeFileSync(statePath, JSON.stringify({ registry, latest, checkedAt: new Date().toISOString() }, null, 2) + '\n');
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
/* Cache writes must not block business commands. */
|
|
83
|
-
}
|
|
84
|
-
}
|
|
93
|
+
if (cacheable)
|
|
94
|
+
saveState({ status: 'latest', registry, latest });
|
|
85
95
|
}
|
|
86
96
|
return {
|
|
87
97
|
...local,
|
|
@@ -92,7 +102,33 @@ export async function checkUpdate(skillDirectory) {
|
|
|
92
102
|
}
|
|
93
103
|
catch {
|
|
94
104
|
// npm diagnostics may contain private registry details; availability is optional.
|
|
95
|
-
|
|
105
|
+
saveState({ status: 'unavailable' });
|
|
106
|
+
return { ...local, status: 'unavailable', cached: false };
|
|
96
107
|
}
|
|
97
108
|
}
|
|
109
|
+
// Only the public executable installs this hook. Bound all npm queries together
|
|
110
|
+
// to 500 ms; business actions may use synchronous child processes, so finish
|
|
111
|
+
// the optional check first rather than letting them stall its deadline timers.
|
|
112
|
+
export function enableBusinessUpdateNotices(program) {
|
|
113
|
+
program.hook('preAction', async (_root, action) => {
|
|
114
|
+
let top = action;
|
|
115
|
+
while (top.parent && top.parent !== program)
|
|
116
|
+
top = top.parent;
|
|
117
|
+
if ([
|
|
118
|
+
'doctor',
|
|
119
|
+
'init',
|
|
120
|
+
'pull',
|
|
121
|
+
'deploy',
|
|
122
|
+
'deployments',
|
|
123
|
+
'ai-functions',
|
|
124
|
+
'environment-variables',
|
|
125
|
+
'env-vars',
|
|
126
|
+
].includes(top.name())) {
|
|
127
|
+
businessChecks.set(program, await checkUpdate(undefined, 500));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
businessChecks.delete(program);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
98
134
|
//# sourceMappingURL=updates.js.map
|
package/dist/updates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-fingerprint.d.ts","sourceRoot":"","sources":["../src/workspace-fingerprint.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qCAAqC,2BAA2B,CAAC;AAC9E,eAAO,MAAM,8CAA8C,oCACxB,CAAC;AACpC,eAAO,MAAM,sCAAsC,+BACrB,CAAC;AAC/B,eAAO,MAAM,+CAA+C,wCACrB,CAAC;AACxC,eAAO,MAAM,6CAA6C,+BAC5B,CAAC;AAC/B,eAAO,MAAM,sDAAsD,wCAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-fingerprint.d.ts","sourceRoot":"","sources":["../src/workspace-fingerprint.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qCAAqC,2BAA2B,CAAC;AAC9E,eAAO,MAAM,8CAA8C,oCACxB,CAAC;AACpC,eAAO,MAAM,sCAAsC,+BACrB,CAAC;AAC/B,eAAO,MAAM,+CAA+C,wCACrB,CAAC;AACxC,eAAO,MAAM,6CAA6C,+BAC5B,CAAC;AAC/B,eAAO,MAAM,sDAAsD,wCAC5B,CAAC;AAkCxC,MAAM,WAAW,yBAAyB;IACxC,SAAS,EACL,OAAO,qCAAqC,GAC5C,OAAO,sCAAsC,GAC7C,OAAO,6CAA6C,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EACL,OAAO,qCAAqC,GAC5C,OAAO,8CAA8C,GACrD,OAAO,sCAAsC,GAC7C,OAAO,+CAA+C,GACtD,OAAO,6CAA6C,GACpD,OAAO,sDAAsD,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AA2GD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAW3B;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAc3B;AAED,0EAA0E;AAC1E,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAc3B;AAED,kFAAkF;AAClF,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,GAChB,iCAAiC,CAMnC;AAED,4EAA4E;AAC5E,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,MAAM,GAChB,iCAAiC,CAMnC;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,MAAM,GAChB,iCAAiC,CAMnC"}
|
|
@@ -20,6 +20,11 @@ const LEGACY_DEPLOYMENT_INPUT_ROOTS = new Set([
|
|
|
20
20
|
const DEPLOYMENT_INPUT_ROOTS = new Set([
|
|
21
21
|
...LEGACY_DEPLOYMENT_INPUT_ROOTS,
|
|
22
22
|
'README.md',
|
|
23
|
+
'server',
|
|
24
|
+
'agent-tools.json',
|
|
25
|
+
'package.json',
|
|
26
|
+
'package-lock.json',
|
|
27
|
+
'base-app.config.ts',
|
|
23
28
|
]);
|
|
24
29
|
const EXCLUDED_DIRECTORIES = new Set([
|
|
25
30
|
'.base-database-cli',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-fingerprint.js","sourceRoot":"","sources":["../src/workspace-fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;AAC9E,MAAM,CAAC,MAAM,8CAA8C,GACzD,iCAAiC,CAAC;AACpC,MAAM,CAAC,MAAM,sCAAsC,GACjD,4BAA4B,CAAC;AAC/B,MAAM,CAAC,MAAM,+CAA+C,GAC1D,qCAAqC,CAAC;AACxC,MAAM,CAAC,MAAM,6CAA6C,GACxD,4BAA4B,CAAC;AAC/B,MAAM,CAAC,MAAM,sDAAsD,GACjE,qCAAqC,CAAC;AAExC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC5C,IAAI;IACJ,qBAAqB;IACrB,oBAAoB;IACpB,WAAW;IACX,MAAM;IACN,kBAAkB;IAClB,KAAK;CACN,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,GAAG,6BAA6B;IAChC,WAAW;
|
|
1
|
+
{"version":3,"file":"workspace-fingerprint.js","sourceRoot":"","sources":["../src/workspace-fingerprint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-base-open/base-database-cli",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "CLI and Agent Skill for building database applications on Lark Base.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
+
"data/*.json",
|
|
12
|
+
"data/template-index-html/*.html",
|
|
11
13
|
"config-schema.json",
|
|
12
14
|
"skills/lark-base-database/SKILL.md",
|
|
13
15
|
"skills/lark-base-database/references",
|
|
14
16
|
"templates",
|
|
15
17
|
"README.md",
|
|
16
18
|
"CHANGELOG.md",
|
|
17
|
-
"changelog"
|
|
19
|
+
"changelog",
|
|
20
|
+
"THIRD_PARTY_LICENSES.json"
|
|
18
21
|
],
|
|
19
22
|
"publishConfig": {
|
|
20
23
|
"access": "public"
|
|
@@ -23,35 +26,44 @@
|
|
|
23
26
|
"node": ">=20.19.0"
|
|
24
27
|
},
|
|
25
28
|
"scripts": {
|
|
26
|
-
"build": "node scripts/clean.mjs && tsc -p tsconfig.json",
|
|
29
|
+
"build": "node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/copy-builder-version.mjs",
|
|
27
30
|
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{js,mjs,ts,tsx}\" \"templates/**/*.{js,mjs,ts,tsx}\"",
|
|
28
31
|
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{js,mjs,ts,tsx}\" \"templates/**/*.{js,mjs,ts,tsx}\"",
|
|
29
32
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
30
33
|
"validate": "pnpm format:check && pnpm check && node scripts/validate.mjs",
|
|
31
|
-
"test": "tsx --test test/**/*.test.ts && npm run test:behavior-harness",
|
|
34
|
+
"test": "node scripts/sync-builder.mjs --check && node scripts/sync-development-pairing.mjs --check && node scripts/check-template-hmr.mjs && node --test scripts/skill-review/*.test.mjs && tsx --test --test-concurrency=4 test/**/*.test.ts && npm run test:behavior-harness",
|
|
32
35
|
"install:skill": "pnpm build && node dist/cli.js skill install",
|
|
33
36
|
"prepack": "pnpm build && pnpm validate && pnpm test && pnpm validate:starter-dependencies",
|
|
34
37
|
"validate:starter-dependencies": "node scripts/check-starter-dependencies.mjs",
|
|
35
38
|
"test:behavior-harness": "node scripts/skill-behavior-eval/run-tests.mjs"
|
|
36
39
|
},
|
|
37
40
|
"dependencies": {
|
|
41
|
+
"@babel/parser": "7.28.5",
|
|
42
|
+
"@babel/traverse": "7.28.5",
|
|
38
43
|
"ajv": "8.17.1",
|
|
39
44
|
"archiver": "8.0.0",
|
|
40
45
|
"commander": "14.0.3",
|
|
41
46
|
"crc-32": "1.2.2",
|
|
47
|
+
"esbuild": "0.28.2",
|
|
42
48
|
"jsonc-parser": "3.3.1",
|
|
43
49
|
"npm": "10.9.2",
|
|
50
|
+
"parse5": "7.3.0",
|
|
44
51
|
"re2js": "2.8.6",
|
|
45
52
|
"semver": "7.7.3",
|
|
53
|
+
"yaml": "2.9.1",
|
|
46
54
|
"yauzl": "3.2.0"
|
|
47
55
|
},
|
|
48
56
|
"devDependencies": {
|
|
49
57
|
"@types/archiver": "8.0.0",
|
|
58
|
+
"@types/babel__traverse": "7.28.0",
|
|
50
59
|
"@types/node": "24.1.0",
|
|
51
60
|
"@types/semver": "7.7.1",
|
|
52
61
|
"@types/yauzl": "2.10.3",
|
|
62
|
+
"json-schema-to-typescript": "16.0.0",
|
|
53
63
|
"prettier": "3.6.2",
|
|
54
64
|
"tsx": "4.23.1",
|
|
55
|
-
"typescript": "7.0.2"
|
|
65
|
+
"typescript": "7.0.2",
|
|
66
|
+
"vite": "8.1.4",
|
|
67
|
+
"zod": "4.6.5"
|
|
56
68
|
}
|
|
57
69
|
}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-base-database
|
|
3
|
-
description:
|
|
3
|
+
description: 以飞书多维表格为业务数据后端,规划、搭建、修改、恢复、发布、验收或排查带页面与业务逻辑的 Base Database 网站、工作台或管理系统;支持从零或基于已有 Base 建站。仅管理多维表格的表、字段、记录、视图时使用 lark-base。
|
|
4
4
|
metadata:
|
|
5
|
-
compatibility: 需要 Node.js 20.19
|
|
5
|
+
compatibility: CLI/存量 classic 需要 Node.js 20.19+;新建 workspace 与契约生成需要 Node.js 22+;需要 npm/npx、lark-cli 及目标平台访问权限;优先使用本机安装的 Base Database CLI。
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Lark Base Database
|
|
9
9
|
|
|
10
10
|
将业务需求实现为基于真实 Base 数据、可维护且可验证的应用。先选择任务路径,再读取所需协议;不要在任务开始时读取全部 reference。同一文件在首次进入相关阶段时读取,内容或任务范围变化后再补读。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
本 Skill 面向开发者 Agent,用于搭建、修改和发布应用;`skill install` 安装这份随 CLI 分发的开发者 Skill。让外部 Agent 使用某个已发布站点的业务功能时,使用 `agent-tools skill install` 安装该站点的 Skill,见[外部 Agent 工具策略](references/agent-tools.md#安装到本地-agent)。
|
|
13
|
+
|
|
14
|
+
新建 init 仅生成 workspace;存量 classic 的 SDK 接入和工程迁移按[工程与环境](references/workspace.md)与[Page 开发](references/development.md)执行。工程迁移按[迁移指南](references/workspace-migration.md)由 coding agent 执行;`dev` 仅在用户选择时使用。
|
|
13
15
|
|
|
14
16
|
账号选择遵守[工程与环境的 profile 约定](references/workspace.md#账号选择);直接调用原生 lark-cli 时也使用同一个 profile。
|
|
15
17
|
`lark-cli` 的账号管理和文档命令按环境提供,不是所有宿主的必备能力;首次选择入口及缺少命令时按[环境与依赖](references/workspace.md#环境与依赖)处理。
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
本地公开环境首次使用时,先确认依赖再进入任务路由;托管环境使用宿主已提供的 CLI 与凭证,跳过本节。
|
|
20
|
-
|
|
21
|
-
1. 确认 `lark-cli` 与 `base-database-cli` 都可执行;任一缺失时按[环境与依赖](references/workspace.md#环境与依赖)中的安装命令或回退入口处理,不猜测包名或全盘搜索。
|
|
22
|
-
2. 执行 `base-database-cli doctor`。返回未配置或未登录(`not_configured`、`token_missing`、`need_user_authorization`)时执行 `base-database-cli auth login`,由用户在浏览器完成授权后重新执行 `doctor`;`ok` 为 `true` 后再执行 `init`。`init`、`pull` 不会自动触发登录。
|
|
23
|
-
|
|
24
|
-
### Base Database 权限不足时重新授权
|
|
25
|
-
|
|
26
|
-
CLI 明确报告 `app_scope_not_applied`、`missing_scopes` 等 scope 权限不足错误时,向用户说明原因,并使用本任务已选定的 CLI 入口和同一 profile 执行 `base-database-cli auth login`,申请构建应用所需的权限。若错误另有应用权限开通或额外 scope 的处理要求,按错误提示处理。用户完成授权后只重试原命令一次;仍失败时停止并保留原错误,不循环授权。其他错误按其原因处理。AI Function 管理命令或 `deploy` 返回 `800004011`(`ai function feature is not enabled`)不是 scope 问题,`auth login` 无效;按[未开通 AI Function](references/ai-function.md#未开通-ai-function-时) 降级处理。
|
|
27
|
-
|
|
28
|
-
### 公开 CLI 版本预检
|
|
29
|
-
|
|
30
|
-
本地使用 `@lark-base-open/base-database-cli` 时,在本会话首次业务操作前按[工程与环境](references/workspace.md#公开-cli-版本预检)确认入口与版本;托管 Builder 和 CI 跳过。预检失败或旧 CLI 不支持时继续当前任务,升级及覆盖 Skill 须取得相应授权。
|
|
19
|
+
开始前:本地公开环境首次使用时,按[环境与依赖](references/workspace.md#环境与依赖)确认 CLI、登录和版本。命令报告认证或 scope 错误时,按[认证与重新授权](references/workspace.md#认证与重新授权)处理,授权后只重试原命令一次。
|
|
31
20
|
|
|
32
21
|
## 任务路由
|
|
33
22
|
|
|
34
23
|
| 用户任务 | 执行路径 | 主要命令 | 进入阶段前读取 |
|
|
35
24
|
| ------------------------ | ------------------------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
36
25
|
| 新建系统 | 明确需求与访问模型 → 确定 Base 来源 → 初始化 → 开发 → Preview 交付 | `init` → `deploy` | [工程与环境](references/workspace.md)、[权限设计](references/permission-design.md) |
|
|
37
|
-
| 修改已有系统 | 确认现有工程 → 判断影响范围 → 增量修改 → 验证与交付 | 按影响范围修改,必要时 `deploy` | [
|
|
26
|
+
| 修改已有系统 | 确认现有工程 → 判断影响范围 → 增量修改 → 验证与交付 | 按影响范围修改,必要时 `deploy` | [增量修改与追加绑定](references/workspace.md#增量修改与追加绑定),再读取受影响的协议 |
|
|
38
27
|
| 恢复远端工程 | 确认本地状态和应用 → 恢复源码与 Catalog → 继续原任务 | 按来源选择 `pull` 或 `init` | [工程与环境](references/workspace.md) |
|
|
39
28
|
| 设计或评审 | 按评审范围分析并输出,不创建资源或发布 | 只读分析 | [工程质量](references/style-guide.md),涉及权限、查询或视觉时读取对应专项 |
|
|
40
29
|
| 排查故障 | 收集证据 → 定位失败阶段 → 按用户要求诊断或修复 | `deployments status`、`doctor` 或项目级 `lark-cli -- ...` | [诊断与验收](references/verification.md),再读取失败链路的协议 |
|
|
@@ -42,22 +31,25 @@ CLI 明确报告 `app_scope_not_applied`、`missing_scopes` 等 scope 权限不
|
|
|
42
31
|
| 专项验收 | 确定检查范围 → 执行已授权检查 → 报告证据与未验证项 | 按契约调用 Database Function 或执行已授权检查 | [诊断与验收](references/verification.md) |
|
|
43
32
|
| 发布当前工程或已验证版本 | 检查工程、制品及授权 → 发布 → 必要收尾 → 交付 | `deploy`;确认后 `deploy --production --yes` | [发布与交付](references/release.md) |
|
|
44
33
|
|
|
45
|
-
表格和 references 的示例默认使用本机 `base-database-cli
|
|
34
|
+
表格和 references 的示例默认使用本机 `base-database-cli`;需要回退时只替换命令前缀,保留其余参数。完整参数见对应 reference。
|
|
46
35
|
|
|
47
36
|
新建默认创建 Base;用户明确指定已有 Base 时复用,不额外询问数据来源选择题。只有目标资源、数据所有权、权限或核心流程存在实质歧义时才询问。用户提供的工程、技术选择和已明确授权在后续步骤中持续有效。
|
|
48
37
|
|
|
49
38
|
## 开发阶段路由
|
|
50
39
|
|
|
51
|
-
新增或修改 Database Function、Mutation、FaaS
|
|
40
|
+
新增或修改 Database Function、Mutation、FaaS 时,先按[面向 Agent 的函数与参数设计](references/agent-tool-design.md)写函数说明和参数声明(`name`、`description`、可选 `enum`),使[外部 Agent](#术语) 能选对函数并填对参数;按[外部 Agent 工具策略](references/agent-tools.md)确定需要排除的内部函数。
|
|
52
41
|
|
|
53
42
|
| 需要完成的工作 | 必读协议 |
|
|
54
43
|
| ----------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
55
44
|
| 首次实现页面、整体视觉改版或视觉评审 | [前端设计指南](references/frontend-design-guide.md) |
|
|
56
45
|
| 修改布局、颜色、排版或控件样式 | 上述设计指导的相关章节,沿用现有设计系统;与视觉无关的修改不重读 |
|
|
57
|
-
| Page runtime、组件接入或 Function 调用 | [Page 开发](references/development.md)
|
|
46
|
+
| 本地 dev、Page runtime、组件接入或 Function 调用 | [Page 开发](references/development.md);执行 dev 前须安装 SDK 且页面入口经 `startBaseApp` 启动,classic 旧工程先按该 reference 接入 SDK |
|
|
58
47
|
| AI 对话、生成、分类、总结、文生图、文生视频或模型调用 | [AI Function](references/ai-function.md),并结合 [Page 开发](references/development.md) |
|
|
59
48
|
| AI Function 使用本地图片或 Base 附件作为参考图 | 同时读取 [AI Function](references/ai-function.md) 与 [文件传输](references/file-transfer.md),先得到模型可访问的 URL 或 Data URL,再传入 `input.image` |
|
|
60
49
|
| Database Function 查询、参数和结果解析 | [Database Function](references/database-function.md) |
|
|
50
|
+
| 函数说明、参数 `name`/`description`/`enum` 声明,或处理 `functionHints` | [面向 Agent 的函数与参数设计](references/agent-tool-design.md) |
|
|
51
|
+
| 通过 `lark-cli api` 发现、读取说明或调用已发布函数 | [调用站点函数](references/agent-tools.md#调用站点函数) |
|
|
52
|
+
| 决定哪些函数不向外部 Agent 开放,或修改 `agent-tools.json` | [外部 Agent 工具策略](references/agent-tools.md) |
|
|
61
53
|
| 日期表单、到期日、事件时间或时间筛选 | [日期与时区](references/development.md#日期与时区) |
|
|
62
54
|
| 判断查询支持集之外的形态或处理兼容错误 | [查询能力边界](references/database-function-limitations.md) |
|
|
63
55
|
| FaaS 引用自定义环境变量,或用户要求查询、配置环境变量或第三方凭证 | [第三方 Agent 环境变量](references/environment-variables.md) |
|
|
@@ -71,33 +63,16 @@ CLI 明确报告 `app_scope_not_applied`、`missing_scopes` 等 scope 权限不
|
|
|
71
63
|
|
|
72
64
|
新建或整体改版先在内部规划中确定视觉方案,再实现设计变量和组件。业务建模与通用工程取舍按[工程质量](references/style-guide.md)执行;默认不创建额外设计文件。新建站点或修改业务能力时,按[站点 README](references/release.md#站点-readme)维护随源码制品上传的项目说明;用户要求其他文档时按要求交付。
|
|
73
65
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
需要模型参与当前页面业务流程时,AI Function 是默认选择。例如点餐系统根据口味、预算、用餐人数和菜单生成点餐推荐,应建模为 AI Function,不创建 FaaS 模型代理。
|
|
77
|
-
|
|
78
|
-
**AI Function 是按需可选能力,不是建站或发布的前置条件。** 用户需求未涉及 AI 对话、生成、分类、总结、文生图或文生视频时,不创建 `ai/` 目录、不调用任何 `ai-functions` 命令,也不要求或提示用户开通 AI 能力;普通 `deploy` 在空 `ai/` 时自动跳过 AI Function 同步,Page/Database Function/FaaS 照常发布,不因此阻塞。
|
|
79
|
-
|
|
80
|
-
远端 AI Function 的恢复与保护由 CLI 完成,不需要 Agent 判断:`pull` 会把远端 AI Function 草稿写回 `ai/`(当前账号未开通时不落 `ai/`);`deploy` 时空 `ai/` 会跳过 AI Function 同步(`no_local_ai_functions`),本地全集非空时先核对远端已有 key 都在本地,缺任何一个就拒绝发布而不是静默删除,通过后按全量覆盖写入草稿;需要让本次 deploy 完全跳过 AI Function 同步时使用显式参数 `deploy --skip-ai-functions`,并按[诊断与验收](references/verification.md)在报告中说明 AI Function 未同步、未验证。`ai-functions sync` 不管本地是否为空都立即全量覆盖,因此显式 `sync` 空集合会把远端 AI Function 全部删除。创建、配置、调用、调试 AI Function 的完整流程见 [AI Function](references/ai-function.md)。
|
|
81
|
-
|
|
82
|
-
### 增量绑定新 Table
|
|
83
|
-
|
|
84
|
-
修改已有应用时需要使用当前已绑定 Base 中的新 Table,不重新执行 `init` 或 `pull`。先用 `lark-cli base +table-list/get` 的真实返回取得 Table ID,再在项目根目录执行:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
base-database-cli lark-cli -- api POST /open-apis/base/v3/sites/Prjxxxxxxxx/bind_base --data '{"baseToken":"basxxxxxxxx","tableIds":["tbl_new"]}' --json
|
|
88
|
-
base-database-cli lark-cli -- api GET /open-apis/base/v3/sites/Prjxxxxxxxx/catalog --json
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
`bind_base` 只向同一 Base 追加并去重 Table ID,不覆盖原绑定。成功后把 Catalog 返回 envelope 的 `data` 对象写入 `catalog.json`,并在 `base-database.jsonc` 保留原 binding 的前提下把新 ID 合并进 `tableIds`。删除本地 Table ID 不会触发远程解绑;解绑须另行调用 unbind 接口并先取得用户授权。
|
|
66
|
+
恢复已有 AI Function 时先读[恢复协议](references/ai-function.md#恢复已有-ai-function),配置与调用按[AI Function](references/ai-function.md)执行。AI 与其他函数的发布顺序、skip 行为、显式 sync 的删除边界及失败恢复统一见[发布参考](references/release.md#function-发布顺序与错误边界)。
|
|
92
67
|
|
|
93
68
|
## 关键约束
|
|
94
69
|
|
|
95
|
-
1. 应用资源与发布优先使用本机 `base-database-cli`;原生 Base 配置使用 `lark-cli base
|
|
70
|
+
1. 应用资源与发布优先使用本机 `base-database-cli`;原生 Base 配置使用 `lark-cli base +...`。命令选择与工程恢复见[工程与环境](references/workspace.md)。
|
|
96
71
|
2. Base 是业务数据事实源,`catalog.json` 是已绑定表的 schema 事实源。表、字段、ID、类型、选项和关系来自真实结果,不由名称或建模输入猜测。
|
|
97
|
-
3. **权限边界**:应用以 owner 身份访问 Base。访问者通过已发布 Function 使用业务能力;浏览器直接记录 CRUD 已关闭,固定写入由 Mutation 声明约束。FaaS
|
|
98
|
-
4. Page 读取走 Database Function;普通单表创建、按记录 ID 更新和删除(含批量及附件写入)优先使用 Mutation;需要声明之外的服务端业务校验、计算或编排时使用 FaaS,边界见[写入方式选择](references/mutations.md#写入方式选择)。Database Function 必须引用至少一个已绑定 Catalog 真实表;纯常量与无表依赖计算按[SQL 外实现放在哪](#sql-外实现放在哪)
|
|
72
|
+
3. **权限边界**:应用以 owner 身份访问 Base。访问者通过已发布 Function 使用业务能力;浏览器直接记录 CRUD 已关闭,固定写入由 Mutation 声明约束。FaaS 通过[固定记录写入路由](references/faas.md#应用记录写入协议)写入,不受 Mutation 声明约束,须在 FaaS 内校验输入与调用者身份。读取身份通过 Database Function 中的 `CURRENT_USER_ID()` 获取,Mutation 使用服务端 `current_user`。自定义角色和统一行列权限尚未接入。绑定与权限设计必须遵守[权限边界](references/permission-design.md)。
|
|
73
|
+
4. Page 读取走 Database Function;普通单表创建、按记录 ID 更新和删除(含批量及附件写入)优先使用 Mutation;需要声明之外的服务端业务校验、计算或编排时使用 FaaS,边界见[写入方式选择](references/mutations.md#写入方式选择)。Database Function 必须引用至少一个已绑定 Catalog 真实表;纯常量与无表依赖计算按[SQL 外实现放在哪](references/database-function-limitations.md#sql-外实现放在哪)选择位置。SQL 无法表达的计算,不得把查看者无权看到的明细发给 Page 处理,拿不准时放 FaaS。输入只能进入声明的业务参数,不能决定查询语句、URL、method、Base token、table ID、字段名、Function ID 或凭证。
|
|
99
74
|
5. Database Function、Mutation 与 FaaS 的参数、返回值不同。Page 使用 `invokeDatabaseFunction<TData>`,`TData` 只描述顶层 `data`,不二次解包;协议见[Page 开发](references/development.md#function-调用契约)。部分成功与重试按 [Mutation 结果](references/mutations.md#调用与结果)或 [FaaS 记录协议](references/faas.md#应用记录写入协议)处理。
|
|
100
|
-
6. AI
|
|
75
|
+
6. AI 对话、生成、分类、总结、文生图或文生视频,使用 Page 侧 AI Function,不建 FaaS 模型代理、不直连模型域名。AI 是按需能力:需求不涉及时不创建 `ai/`、不调用 `ai-functions` 命令,也不提示用户开通。详见 [AI Function](references/ai-function.md)。
|
|
101
76
|
7. 修改保留需求外源码、Base schema、metadata、bindings 和 Function。Functions 更新为全量覆盖,不能以只提交本次新增 Function 的方式更新已有应用。
|
|
102
77
|
8. 保留 starter 的 ready 上报及宿主组件接入。附件能力取决于目标环境的父页面、所选写入方式和服务端协议;按[文件传输](references/file-transfer.md)实现,不以模拟成功代替真实能力。
|
|
103
78
|
9. 第三方 npm 依赖必须使用目标应用的服务端依赖策略判断;普通 registry 版本默认可用,受限来源只有被 `allowedValues` 中某条正则完整匹配时可用。详见[第三方依赖策略](references/development.md#第三方依赖策略)。
|
|
@@ -123,21 +98,12 @@ workflow 启停及失败补偿按[通知集成](references/notifications.md#状
|
|
|
123
98
|
- **部分完成**:已有成果可交付,但存在已知功能缺失、违反需求的实现、平台不支持的要求,或约定验证、外部配置未完成;即使 Preview 发布成功,也逐项列出缺口。
|
|
124
99
|
- **阻塞**:必需步骤受认证、权限、平台能力或缺失输入等外部条件限制,记录阻塞及恢复条件。
|
|
125
100
|
|
|
126
|
-
|
|
101
|
+
默认按[交付结果](references/release.md#交付结果)提供访问链接、业务变更、体验步骤、实际验证结果和影响使用的限制;有开放函数时一并介绍本地 Agent 业务用法与站点 Skill 安装方式。仅使用发布命令返回的顶层 `baseAppUrl` 作为应用访问入口;不猜测地址或展示内部静态资源 `staticUrl`。技术清单与诊断信息按研发、排障或审计需要提供;不输出凭证,也不要求普通业务用户检查协议字段。
|
|
127
102
|
|
|
128
103
|
## 术语
|
|
129
104
|
|
|
130
105
|
- **Database Function**:通过固定查询语句读取 Base 数据的函数;查询定义位于 `database-functions/<functionId>/main.sql`。
|
|
131
|
-
- **应用 appToken**:应用标识;协议字段 `appToken`、FaaS 的 `projectId` 与示例中的工程常量 `PROJECT_ID` 在相应入口指向该应用,不是 Base token。`PROJECT_ID` 由示例调用方定义,不是 starter
|
|
106
|
+
- **应用 appToken**:应用标识;协议字段 `appToken`、FaaS 的 `projectId` 与示例中的工程常量 `PROJECT_ID` 在相应入口指向该应用,不是 Base token。`PROJECT_ID` 由示例调用方定义,不是 starter 提供的标识。服务端路径 `/sites/<app-token>`、SDK 的 `siteToken` 都指同一个应用 token,原样使用,不改写外部协议。
|
|
132
107
|
- **Catalog**:已绑定数据表的 schema;本地快照为 `catalog.json`,更新从应用 catalog 接口获取。Base 的业务记录不保存在 Catalog。
|
|
133
108
|
- **operation**:业务动作及其固定输入输出契约,例如查询任务或审批申请;不是任意 URL 或查询语句的代理。
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
## SQL 外实现放在哪
|
|
138
|
-
|
|
139
|
-
原则:SQL 无法等价表达时,在消费查询结果的代码中完成计算;选择位置首先看数据可见性,再看规模与复用需求。
|
|
140
|
-
|
|
141
|
-
判定:只有计算仅影响查看者本就有权看到的行的展示、结果集小且无需跨页面复用时,才适合放在 Page。若计算需要查看者不应看到的明细、数据量大、需要跨页面复用或写回,则放在 FaaS(SQL 报错中的 “Edge Function” 即指 FaaS),并沿用既有身份、权限和参数边界;FaaS 仍需在服务端校验调用者权限,只返回允许公开的结果。不能先把无权查看的明细发给浏览器,再靠 Page 过滤或隐藏。
|
|
142
|
-
|
|
143
|
-
默认:拿不准时选 FaaS。把应在服务端处理的计算放到 Page,可能泄露数据;多一道服务端调用通常更容易纠正。SQL 报错中的“SQL 外实现”不等于一律新建 FaaS,也不构成绕过现有权限模型的授权。
|
|
109
|
+
- **外部 Agent**:不经过页面、通过 `lark-cli api` 发现并调用本站点已发布函数的 Agent,例如站点成员在对话或本地 Agent 中使用的助手。它看不到页面源码,只依据函数的 `name`、`description` 和服务端生成的参数说明判断何时调用、如何传参。
|