@lark-base-open/base-database-cli 1.4.0 → 1.4.5
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 +74 -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 +30 -0
- package/dist/agent-tools-guide.d.ts.map +1 -0
- package/dist/agent-tools-guide.js +172 -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 +209 -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 +51 -19
- 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 +123 -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 +103 -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
package/config-schema.json
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
"title": "Base Database CLI configuration",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"additionalProperties": false,
|
|
6
|
-
"required": [
|
|
6
|
+
"required": [
|
|
7
|
+
"configVersion",
|
|
8
|
+
"appToken"
|
|
9
|
+
],
|
|
7
10
|
"properties": {
|
|
8
11
|
"$schema": {
|
|
9
12
|
"type": "string"
|
|
@@ -29,6 +32,64 @@
|
|
|
29
32
|
"type": "string",
|
|
30
33
|
"minLength": 1
|
|
31
34
|
},
|
|
32
|
-
"bindings": {}
|
|
33
|
-
|
|
35
|
+
"bindings": {},
|
|
36
|
+
"template": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"required": [
|
|
40
|
+
"name",
|
|
41
|
+
"version"
|
|
42
|
+
],
|
|
43
|
+
"properties": {
|
|
44
|
+
"name": {
|
|
45
|
+
"const": "database-starter"
|
|
46
|
+
},
|
|
47
|
+
"version": {
|
|
48
|
+
"enum": [
|
|
49
|
+
1,
|
|
50
|
+
2
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"description": "Starter layout version. Omitted in legacy database-starter version 1 projects."
|
|
55
|
+
},
|
|
56
|
+
"managedAgentDocs": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": true,
|
|
59
|
+
"description": "Maintain the base-app managed section in AGENTS.md and the CLAUDE.md reference. Set false to opt out."
|
|
60
|
+
},
|
|
61
|
+
"functionInputs": {
|
|
62
|
+
"enum": [
|
|
63
|
+
"named",
|
|
64
|
+
"positional"
|
|
65
|
+
],
|
|
66
|
+
"description": "Classic Page/helper input contract; defaults to positional when omitted. Workspace and SDK clients use named inputs."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"allOf": [
|
|
70
|
+
{
|
|
71
|
+
"if": {
|
|
72
|
+
"required": [
|
|
73
|
+
"template"
|
|
74
|
+
],
|
|
75
|
+
"properties": {
|
|
76
|
+
"template": {
|
|
77
|
+
"properties": {
|
|
78
|
+
"version": {
|
|
79
|
+
"const": 2
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"type": "object"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"then": {
|
|
87
|
+
"properties": {
|
|
88
|
+
"functionInputs": {
|
|
89
|
+
"const": "named"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
34
95
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"scripts": [
|
|
4
|
+
{
|
|
5
|
+
"sha256": "6e07b18ba1e30eca8bcaf3c99393e174d404d43e3f3ae31568d0075473d6bee2",
|
|
6
|
+
"code": "\n if (import.meta.hot?.on) {\n import.meta.hot.on('vite:error', (error) => {\n if (error.err) {\n console.error(\n [error.err.message, error.err.frame].filter(Boolean).join('\\n'),\n )\n }\n })\n }\n "
|
|
7
|
+
}
|
|
8
|
+
]
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title></title>
|
|
8
|
+
<script type="module">
|
|
9
|
+
if (import.meta.hot?.on) {
|
|
10
|
+
import.meta.hot.on('vite:error', (error) => {
|
|
11
|
+
if (error.err) {
|
|
12
|
+
console.error(
|
|
13
|
+
[error.err.message, error.err.frame].filter(Boolean).join('\n'),
|
|
14
|
+
)
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<div id="root"></div>
|
|
22
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
23
|
+
</body>
|
|
24
|
+
</html>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RuntimeProfile } from './environment.js';
|
|
2
|
+
export declare function recordSiteSkillInstallation(workspace: string, appToken: string, runtime: string, bundle: {
|
|
3
|
+
hash: string;
|
|
4
|
+
files: Record<string, string>;
|
|
5
|
+
}, directories: string[]): void;
|
|
6
|
+
export interface ExternalAgentGuide {
|
|
7
|
+
environment: 'preview' | 'prod';
|
|
8
|
+
installation: {
|
|
9
|
+
available: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
command: string;
|
|
12
|
+
};
|
|
13
|
+
skillCommand?: string;
|
|
14
|
+
functionsCommand?: string;
|
|
15
|
+
memberInstallation?: {
|
|
16
|
+
siteUrl: string;
|
|
17
|
+
command: string;
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
handoff?: {
|
|
21
|
+
markdown: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Prod Skill availability is optional and must never fail a completed publication. */
|
|
25
|
+
export declare function externalAgentGuide(workspace: string, appToken: string, runtime: RuntimeProfile, environment: 'preview' | 'prod', env: NodeJS.ProcessEnv, baseAppUrl?: string): ExternalAgentGuide;
|
|
26
|
+
export declare function deploymentNextAction(workspace: string, appToken: string, runtime: RuntimeProfile, environment: 'preview' | 'prod', env: NodeJS.ProcessEnv, baseAppUrl?: string): {
|
|
27
|
+
delivery: string;
|
|
28
|
+
externalAgent: ExternalAgentGuide;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=agent-tools-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools-guide.d.ts","sourceRoot":"","sources":["../src/agent-tools-guide.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsCvD,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EACvD,WAAW,EAAE,MAAM,EAAE,GACpB,IAAI,CA2BN;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,SAAS,GAAG,MAAM,EAC/B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,kBAAkB,CAgHpB;AAsBD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,SAAS,GAAG,MAAM,EAC/B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM;;;EA4BpB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { responseData, runLarkCli } from './lark-cli.js';
|
|
5
|
+
import { LarkCliError, safeDiagnostic } from './lark-cli-error.js';
|
|
6
|
+
const receiptPath = (workspace) => join(workspace, '.base-database-cli/state/agent-tools-skill.json');
|
|
7
|
+
const digest = (content) => createHash('sha256').update(content).digest('hex');
|
|
8
|
+
function readReceipt(workspace, appToken, runtime) {
|
|
9
|
+
try {
|
|
10
|
+
const receipt = JSON.parse(readFileSync(receiptPath(workspace), 'utf8'));
|
|
11
|
+
return receipt.appToken === appToken &&
|
|
12
|
+
receipt.runtime === runtime &&
|
|
13
|
+
Array.isArray(receipt.installations)
|
|
14
|
+
? receipt.installations
|
|
15
|
+
: [];
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Keep server hash and exact installed bytes together; never infer an installation from its name.
|
|
22
|
+
export function recordSiteSkillInstallation(workspace, appToken, runtime, bundle, directories) {
|
|
23
|
+
const installations = readReceipt(workspace, appToken, runtime).filter((item) => !directories.includes(item.directory));
|
|
24
|
+
const files = Object.fromEntries(Object.entries(bundle.files).map(([path, content]) => [
|
|
25
|
+
path,
|
|
26
|
+
digest(content),
|
|
27
|
+
]));
|
|
28
|
+
installations.push(...directories.map((directory) => ({
|
|
29
|
+
directory,
|
|
30
|
+
hash: bundle.hash,
|
|
31
|
+
files,
|
|
32
|
+
})));
|
|
33
|
+
const path = receiptPath(workspace);
|
|
34
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
35
|
+
writeFileSync(path, JSON.stringify({ appToken, runtime, installations }, null, 2) + '\n');
|
|
36
|
+
}
|
|
37
|
+
/** Prod Skill availability is optional and must never fail a completed publication. */
|
|
38
|
+
export function externalAgentGuide(workspace, appToken, runtime, environment, env, baseAppUrl) {
|
|
39
|
+
const cli = runtime.deployCommand.replace(/ deploy$/, '');
|
|
40
|
+
const command = `${cli} agent-tools skill install`;
|
|
41
|
+
const projectUpdate = '工程安装(不带 --site)如目标目录已存在,请先核对目标,在用户授权下加 --force 重新安装。';
|
|
42
|
+
if (environment === 'preview') {
|
|
43
|
+
return {
|
|
44
|
+
environment,
|
|
45
|
+
installation: {
|
|
46
|
+
available: false,
|
|
47
|
+
message: 'Preview 站点 Skill 当前不能安装;最终回复附上 handoff.markdown,其中说明正式版发布后可安装与分发。该步骤不授权 Prod 发布或调用。' +
|
|
48
|
+
projectUpdate,
|
|
49
|
+
command,
|
|
50
|
+
},
|
|
51
|
+
handoff: {
|
|
52
|
+
markdown: `发布正式版后外部 Agent 才能安装使用并分发本站 Skill。开发者安装命令:\n\n\`${command}\`\n\n${projectUpdate}`,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const path = `/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/skill`;
|
|
57
|
+
const skillCommand = `${cli} lark-cli -- api GET ${path} --as user`;
|
|
58
|
+
const functionsCommand = `${cli} lark-cli -- api GET /open-apis/base/v3/sites/${encodeURIComponent(appToken)}/functions --params '{"apiVersion":2,"env":"prod"}' --as user`;
|
|
59
|
+
try {
|
|
60
|
+
// Only confirm availability: do not parse SKILL.md or compare hashes.
|
|
61
|
+
runLarkCli(['api', 'GET', path], env, workspace);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const logId = error instanceof LarkCliError ? error.details.logId : undefined;
|
|
65
|
+
const diagnostic = logId
|
|
66
|
+
? ` (LogID: ${safeDiagnostic(logId, env).replace(/[\r\n\u2028\u2029]+/g, ' ')})`
|
|
67
|
+
: '';
|
|
68
|
+
process.stderr.write(`Warning: Publication succeeded, but the site Skill is temporarily unavailable${diagnostic}.\n`);
|
|
69
|
+
return {
|
|
70
|
+
environment,
|
|
71
|
+
installation: {
|
|
72
|
+
available: false,
|
|
73
|
+
message: '发布已成功,站点 Skill 暂不可获取;稍后通过 skillCommand 重试读取。' +
|
|
74
|
+
projectUpdate,
|
|
75
|
+
command,
|
|
76
|
+
},
|
|
77
|
+
skillCommand,
|
|
78
|
+
functionsCommand,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const memberInstallation = baseAppUrl
|
|
82
|
+
? {
|
|
83
|
+
siteUrl: baseAppUrl,
|
|
84
|
+
command: `${command} --site ${shellQuote(baseAppUrl)}`,
|
|
85
|
+
message: 'Prod 成员分发内容由 handoff.markdown 生成;最终回复原样附上该交付块。',
|
|
86
|
+
}
|
|
87
|
+
: undefined;
|
|
88
|
+
let publishedSiteName;
|
|
89
|
+
if (baseAppUrl) {
|
|
90
|
+
try {
|
|
91
|
+
const project = responseData(runLarkCli([
|
|
92
|
+
'api',
|
|
93
|
+
'GET',
|
|
94
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/get`,
|
|
95
|
+
'--params',
|
|
96
|
+
JSON.stringify({ env: environment }),
|
|
97
|
+
], env, workspace)).project;
|
|
98
|
+
if (project &&
|
|
99
|
+
typeof project === 'object' &&
|
|
100
|
+
'name' in project &&
|
|
101
|
+
typeof project.name === 'string' &&
|
|
102
|
+
project.name.trim())
|
|
103
|
+
publishedSiteName = project.name.trim();
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Site name is optional; never substitute a local directory name.
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const handoff = [
|
|
110
|
+
`开发者:在包含 base-database.jsonc 的工程目录执行 \`${command}\`。需要我现在在工程目录执行,安装到当前用户的 Codex Skill 目录吗?${projectUpdate}`,
|
|
111
|
+
...(memberInstallation
|
|
112
|
+
? [
|
|
113
|
+
'',
|
|
114
|
+
'> 转发给团队成员',
|
|
115
|
+
publishedSiteName
|
|
116
|
+
? `> 站点:${markdownText(publishedSiteName)}(${markdownUrl(baseAppUrl)})`
|
|
117
|
+
: `> 站点链接:${markdownUrl(baseAppUrl)}`,
|
|
118
|
+
`> 安装命令:\`${memberInstallation.command}\``,
|
|
119
|
+
'> 能力随个人站点权限提供。站点更新后,成员重新执行上述 --site 安装命令即可更新同一站点已记录的安装。',
|
|
120
|
+
]
|
|
121
|
+
: []),
|
|
122
|
+
].join('\n');
|
|
123
|
+
return {
|
|
124
|
+
environment,
|
|
125
|
+
installation: {
|
|
126
|
+
available: true,
|
|
127
|
+
message: '最终回复附上 handoff.markdown;仅在用户同意后执行工程目录安装命令,不自动安装。' +
|
|
128
|
+
projectUpdate,
|
|
129
|
+
command,
|
|
130
|
+
},
|
|
131
|
+
skillCommand,
|
|
132
|
+
functionsCommand,
|
|
133
|
+
...(memberInstallation ? { memberInstallation } : {}),
|
|
134
|
+
handoff: { markdown: handoff },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function markdownText(value) {
|
|
138
|
+
return value
|
|
139
|
+
.replace(/[\r\n\t\u2028\u2029]+/g, ' ')
|
|
140
|
+
.replace(/[\p{Cc}\p{Cf}]/gu, '')
|
|
141
|
+
.replace(/ +/g, ' ')
|
|
142
|
+
.trim()
|
|
143
|
+
.replace(/[\\`*_{}\[\]()#+\-.!|<>~&]/g, '\\$&');
|
|
144
|
+
}
|
|
145
|
+
function markdownUrl(value) {
|
|
146
|
+
return value
|
|
147
|
+
.replaceAll('\\', '\\\\')
|
|
148
|
+
.replaceAll('`', '\\`')
|
|
149
|
+
.replaceAll('|', '\\|');
|
|
150
|
+
}
|
|
151
|
+
function shellQuote(value) {
|
|
152
|
+
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
153
|
+
}
|
|
154
|
+
export function deploymentNextAction(workspace, appToken, runtime, environment, env, baseAppUrl) {
|
|
155
|
+
const externalAgent = externalAgentGuide(workspace, appToken, runtime, environment, env, baseAppUrl);
|
|
156
|
+
const delivery = environment === 'preview'
|
|
157
|
+
? 'Complete the agreed Preview sample-data readback and notification follow-up before sharing baseAppUrl for user review. Publishing to Prod requires confirmation for this same artifact. Preview publication does not authorize production Function calls.'
|
|
158
|
+
: 'Complete the agreed production verification and notification follow-up before sharing baseAppUrl.';
|
|
159
|
+
const capabilities = environment === 'prod'
|
|
160
|
+
? ` Read the live function list using \`${externalAgent.functionsCommand}\` (externalAgent.functionsCommand). Require numeric data.apiVersion=2 on every page and follow hasMore/pageToken with the same parameters until all pages are read. Add “可用能力” in business language using only the name/description of functions with agentTool=true. Only if a successful list response does not report data.apiVersion=2, use \`${externalAgent.skillCommand}\` (externalAgent.skillCommand) to read the SKILL.md function list instead. Do not infer capabilities from local source. If the selected source cannot be read, report the failure and omit the capability list. installation.available controls only the Skill installation guide, not function discovery.`
|
|
161
|
+
: '';
|
|
162
|
+
return {
|
|
163
|
+
delivery: delivery +
|
|
164
|
+
capabilities +
|
|
165
|
+
(externalAgent.handoff
|
|
166
|
+
? ' Include the complete externalAgent.handoff.markdown verbatim, preserving every line and Markdown format. Later follow-up replies may answer the question briefly or point to the delivery already provided.'
|
|
167
|
+
: ' State that publication succeeded but the site Skill is temporarily unavailable.') +
|
|
168
|
+
' Do not install or publish Prod automatically; follow user authorization for either action.',
|
|
169
|
+
externalAgent,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=agent-tools-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools-guide.js","sourceRoot":"","sources":["../src/agent-tools-guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type RuntimeProfile } from './environment.js';
|
|
2
|
+
import { type SkillInstallOptions } from './skill.js';
|
|
3
|
+
interface SiteSkillBundle {
|
|
4
|
+
skillName: string;
|
|
5
|
+
hash: string;
|
|
6
|
+
files: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function validateSiteSkillBundle(value: unknown): SiteSkillBundle;
|
|
9
|
+
export declare function installAgentToolsSkill(options: SkillInstallOptions, runtime?: RuntimeProfile, site?: string, explicitProfile?: string): Promise<{
|
|
10
|
+
ok: boolean;
|
|
11
|
+
installed: string[];
|
|
12
|
+
skillName: string;
|
|
13
|
+
hash: string;
|
|
14
|
+
}>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=agent-tools-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools-skill.d.ts","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAMD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA8BvE;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,cAAuC,EAChD,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,MAAM;;;;;GAgKzB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { LarkCliError, safeDiagnostic } from './lark-cli-error.js';
|
|
2
|
+
import { skillFrontmatter } from './skill-frontmatter.js';
|
|
3
|
+
import { recordSiteSkillInstallation } from './agent-tools-guide.js';
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
6
|
+
import { homedir, tmpdir } from 'node:os';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { readConfig } from './config.js';
|
|
9
|
+
import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
|
|
10
|
+
import { responseData, resolveLarkProfileEnvironment, runLarkCli, } from './lark-cli.js';
|
|
11
|
+
import { installSkillDirectory, skillDestinations, } from './skill.js';
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
export function validateSiteSkillBundle(value) {
|
|
16
|
+
if (!isRecord(value))
|
|
17
|
+
throw new Error('Invalid site Skill bundle');
|
|
18
|
+
const { skillName, hash, files } = value;
|
|
19
|
+
if (typeof skillName !== 'string' ||
|
|
20
|
+
skillName.length > 64 ||
|
|
21
|
+
!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(skillName))
|
|
22
|
+
throw new Error('Invalid site Skill bundle: illegal skillName');
|
|
23
|
+
if (typeof hash !== 'string' || hash.trim() === '')
|
|
24
|
+
throw new Error('Invalid site Skill bundle: hash is required');
|
|
25
|
+
if (!isRecord(files) || typeof files['SKILL.md'] !== 'string')
|
|
26
|
+
throw new Error('Invalid site Skill bundle: SKILL.md is required');
|
|
27
|
+
for (const [path, content] of Object.entries(files)) {
|
|
28
|
+
if (path !== 'SKILL.md' &&
|
|
29
|
+
!/^references\/[^/\\\u0000-\u001f<>:"|?*]+\.md$/.test(path))
|
|
30
|
+
throw new Error(`Invalid site Skill bundle path: ${path}; only SKILL.md and references/*.md are allowed`);
|
|
31
|
+
if (typeof content !== 'string')
|
|
32
|
+
throw new Error(`Invalid site Skill bundle content: ${path}`);
|
|
33
|
+
}
|
|
34
|
+
const header = skillFrontmatter(files['SKILL.md']);
|
|
35
|
+
if (header.value.name !== skillName)
|
|
36
|
+
throw new Error('Invalid site Skill bundle: SKILL.md frontmatter name must match skillName');
|
|
37
|
+
return { skillName, hash, files: files };
|
|
38
|
+
}
|
|
39
|
+
export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_PROFILE, site, explicitProfile) {
|
|
40
|
+
const workspace = process.cwd();
|
|
41
|
+
const config = site ? undefined : readConfig(workspace);
|
|
42
|
+
if (config)
|
|
43
|
+
assertProjectRuntimeProfile(config.runtimeProfile, runtime);
|
|
44
|
+
const siteToken = site ? parseSiteToken(site) : config.appToken;
|
|
45
|
+
const { env } = resolveLarkProfileEnvironment(await runtime.commandEnvironment(), explicitProfile, config?.larkProfile, runtime);
|
|
46
|
+
let rawBundle;
|
|
47
|
+
try {
|
|
48
|
+
rawBundle = responseData(runLarkCli([
|
|
49
|
+
'api',
|
|
50
|
+
'GET',
|
|
51
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(siteToken)}/skill`,
|
|
52
|
+
], env, config ? workspace : homedir()));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
56
|
+
const logId = safeDiagnostic((error instanceof LarkCliError ? error.details.logId : undefined) ??
|
|
57
|
+
/LogID:\s*([A-Za-z0-9_-]+)[).\s]*$/.exec(message)?.[1], env, 128);
|
|
58
|
+
const failure = (text) => {
|
|
59
|
+
const failure = new LarkCliError({
|
|
60
|
+
...(error instanceof LarkCliError
|
|
61
|
+
? error.details
|
|
62
|
+
: { kind: 'api' }),
|
|
63
|
+
message: text,
|
|
64
|
+
...(logId ? { logId } : {}),
|
|
65
|
+
});
|
|
66
|
+
failure.cause = error;
|
|
67
|
+
return failure;
|
|
68
|
+
};
|
|
69
|
+
if (/This site has not been published to prod|No published version is available/i.test(message))
|
|
70
|
+
throw failure('This site has no published version to install. Parameter: site. Fix: Ask the site owner to publish the site, then retry the installation.');
|
|
71
|
+
if (/current account does not have access|not visible to the current caller|ErrPermNotAllow/i.test(message))
|
|
72
|
+
throw failure('The current account cannot access this site Skill. Parameter: site. Fix: Ask a site administrator to add you to the site, then retry the installation.');
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
const bundle = validateSiteSkillBundle(rawBundle);
|
|
76
|
+
// Validate the whole bundle before creating files or touching any installation.
|
|
77
|
+
const temporary = mkdtempSync(join(tmpdir(), 'base-database-site-skill-'));
|
|
78
|
+
try {
|
|
79
|
+
for (const [path, content] of Object.entries(bundle.files)) {
|
|
80
|
+
const target = join(temporary, path);
|
|
81
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
82
|
+
writeFileSync(target, content);
|
|
83
|
+
}
|
|
84
|
+
let installName = bundle.skillName;
|
|
85
|
+
let tracked = [];
|
|
86
|
+
const receiptFile = userReceiptPath();
|
|
87
|
+
if (site) {
|
|
88
|
+
tracked = readUserReceipt(receiptFile);
|
|
89
|
+
const destinations = skillDestinations(options, installName);
|
|
90
|
+
const conflicts = destinations.some((directory) => existsSync(directory) &&
|
|
91
|
+
tracked.some((item) => item.directory === directory && item.siteToken !== siteToken));
|
|
92
|
+
if (conflicts) {
|
|
93
|
+
installName = `${bundle.skillName.slice(0, 57).replace(/-+$/, '')}-${createHash('sha256').update(siteToken).digest('hex').slice(0, 6)}`;
|
|
94
|
+
process.stderr.write(`Warning: Another site already uses this Skill name in the destination. Will use ${installName} to preserve that installation. After installation succeeds, use the new name to access this site.\n`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const installBundle = installName === bundle.skillName
|
|
98
|
+
? bundle
|
|
99
|
+
: {
|
|
100
|
+
...bundle,
|
|
101
|
+
skillName: installName,
|
|
102
|
+
files: {
|
|
103
|
+
...bundle.files,
|
|
104
|
+
'SKILL.md': skillFrontmatter(bundle.files['SKILL.md']).rename(installName),
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
validateSiteSkillBundle(installBundle);
|
|
108
|
+
if (installBundle !== bundle) {
|
|
109
|
+
for (const [path, content] of Object.entries(installBundle.files)) {
|
|
110
|
+
const target = join(temporary, path);
|
|
111
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
112
|
+
writeFileSync(target, content);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const installed = installSkillDirectory(temporary, installName, options, (directory) => Boolean(site) &&
|
|
116
|
+
tracked.some((item) => item.directory === directory &&
|
|
117
|
+
item.siteToken === siteToken &&
|
|
118
|
+
item.runtime === runtime.name));
|
|
119
|
+
try {
|
|
120
|
+
if (site)
|
|
121
|
+
writeUserReceipt(receiptFile, tracked, siteToken, runtime.name, installBundle, installed);
|
|
122
|
+
else
|
|
123
|
+
recordSiteSkillInstallation(workspace, siteToken, runtime.name, bundle, installed);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
process.stderr.write(site
|
|
127
|
+
? 'Warning: The Skill was installed, but its user-level installation record could not be saved. Fix: Check write access to the user CLI state directory and verify the destination site before reinstalling; name-conflict protection cannot reliably identify the existing site.\n'
|
|
128
|
+
: 'Warning: The Skill was installed, but its project installation record could not be saved. Fix: Check write access to the project CLI state directory before updating the installation.\n');
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
ok: true,
|
|
132
|
+
installed,
|
|
133
|
+
skillName: installName,
|
|
134
|
+
hash: bundle.hash,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
rmSync(temporary, { recursive: true, force: true });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function userReceiptPath() {
|
|
142
|
+
return join(homedir(), '.base-database-cli/state/agent-tools-skills.json');
|
|
143
|
+
}
|
|
144
|
+
function readUserReceipt(path) {
|
|
145
|
+
try {
|
|
146
|
+
const value = JSON.parse(readFileSync(path, 'utf8'));
|
|
147
|
+
return Array.isArray(value.installations)
|
|
148
|
+
? value.installations.filter((item) => isRecord(item) &&
|
|
149
|
+
typeof item.siteToken === 'string' &&
|
|
150
|
+
typeof item.runtime === 'string' &&
|
|
151
|
+
typeof item.directory === 'string' &&
|
|
152
|
+
typeof item.hash === 'string' &&
|
|
153
|
+
isRecord(item.files) &&
|
|
154
|
+
Object.values(item.files).every((hash) => typeof hash === 'string'))
|
|
155
|
+
: [];
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return [];
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function writeUserReceipt(path, existing, siteToken, runtime, bundle, directories) {
|
|
162
|
+
const files = Object.fromEntries(Object.entries(bundle.files).map(([name, content]) => [
|
|
163
|
+
name,
|
|
164
|
+
createHash('sha256').update(content).digest('hex'),
|
|
165
|
+
]));
|
|
166
|
+
const installations = existing.filter((item) => !directories.includes(item.directory));
|
|
167
|
+
installations.push(...directories.map((directory) => ({
|
|
168
|
+
siteToken,
|
|
169
|
+
runtime,
|
|
170
|
+
directory,
|
|
171
|
+
hash: bundle.hash,
|
|
172
|
+
files,
|
|
173
|
+
})));
|
|
174
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
175
|
+
writeFileSync(path, JSON.stringify({ installations }, null, 2) + '\n');
|
|
176
|
+
}
|
|
177
|
+
function parseSiteToken(value) {
|
|
178
|
+
const input = value.trim();
|
|
179
|
+
let token = input;
|
|
180
|
+
if (/^https?:\/\//i.test(input)) {
|
|
181
|
+
let url;
|
|
182
|
+
try {
|
|
183
|
+
url = new URL(input);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
throw new LarkCliError({
|
|
187
|
+
kind: 'invalid_response',
|
|
188
|
+
code: 'SITE_SKILL_INVALID_SITE',
|
|
189
|
+
message: 'Invalid site URL. Parameter: --site. Fix: Copy the full application URL from a successful publication, or provide its site token.',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
const parts = url.pathname.split('/').filter(Boolean);
|
|
193
|
+
token = parts.at(-1) ?? '';
|
|
194
|
+
if (!parts.some((part) => /^(?:app|baseapp)$/i.test(part)))
|
|
195
|
+
throw new LarkCliError({
|
|
196
|
+
kind: 'invalid_response',
|
|
197
|
+
code: 'SITE_SKILL_INVALID_SITE',
|
|
198
|
+
message: 'The URL is not an application link. Parameter: --site. Fix: Use the application URL returned by publication, with an /app/ or /baseapp/ path.',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
if (!/^[A-Za-z0-9_-]{1,256}$/.test(token))
|
|
202
|
+
throw new LarkCliError({
|
|
203
|
+
kind: 'invalid_response',
|
|
204
|
+
code: 'SITE_SKILL_INVALID_SITE',
|
|
205
|
+
message: 'Invalid site token. Parameter: --site. Fix: Provide a site token of 1 to 256 letters, digits, underscores or hyphens, or the full application URL.',
|
|
206
|
+
});
|
|
207
|
+
return token;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=agent-tools-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools-skill.js","sourceRoot":"","sources":["../src/agent-tools-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const AGENT_TOOLS_FILE = "agent-tools.json";
|
|
2
|
+
export interface AgentTools {
|
|
3
|
+
present: boolean;
|
|
4
|
+
exclude: string[];
|
|
5
|
+
tools: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class AgentToolsValidationError extends Error {
|
|
8
|
+
readonly code = "AGENT_TOOLS_INVALID";
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
export declare const AI_AGENT_TOOLS_SKIPPED = "AI_AGENT_TOOLS_SKIPPED";
|
|
12
|
+
/** Validate the local inventory first, then project the policy for this operation. */
|
|
13
|
+
export declare function readAgentTools(workspace: string, options?: {
|
|
14
|
+
skipAIFunctions?: boolean;
|
|
15
|
+
onWarning?: (message: string) => void;
|
|
16
|
+
}): AgentTools;
|
|
17
|
+
/** Do not infer unsupported routes from a generic resource NotFound or transport failure. */
|
|
18
|
+
export declare function isAgentToolsUnsupported(error: unknown): boolean;
|
|
19
|
+
export declare function updateAgentTools(workspace: string, appToken: string, policy: AgentTools, env: NodeJS.ProcessEnv): void;
|
|
20
|
+
//# sourceMappingURL=agent-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../src/agent-tools.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,yBAAyB;IACtC,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,sFAAsF;AACtF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,GACL,UAAU,CA0FZ;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAoB/D;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,IAAI,CA6BN"}
|