@lark-base-open/base-database-cli 1.3.9 → 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 +75 -0
- package/README.md +119 -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 +5 -2
- package/dist/lark-cli.d.ts.map +1 -1
- package/dist/lark-cli.js +96 -29
- 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 +49 -21
- 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 +55 -44
- 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/attachment-image.tsx +19 -5
- package/templates/database-starter/page/src/lib/database-runtime-attachment.test.ts +124 -5
- package/templates/database-starter/page/src/lib/database-runtime.test.ts +2 -2
- package/templates/database-starter/page/src/lib/database-runtime.ts +77 -13
- 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,29 @@
|
|
|
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
|
+
memberInstallation?: {
|
|
15
|
+
siteUrl: string;
|
|
16
|
+
command: string;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
handoff?: {
|
|
20
|
+
markdown: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Prod Skill availability is optional and must never fail a completed publication. */
|
|
24
|
+
export declare function externalAgentGuide(workspace: string, appToken: string, runtime: RuntimeProfile, environment: 'preview' | 'prod', env: NodeJS.ProcessEnv, baseAppUrl?: string): ExternalAgentGuide;
|
|
25
|
+
export declare function deploymentNextAction(workspace: string, appToken: string, runtime: RuntimeProfile, environment: 'preview' | 'prod', env: NodeJS.ProcessEnv, baseAppUrl?: string): {
|
|
26
|
+
delivery: string;
|
|
27
|
+
externalAgent: ExternalAgentGuide;
|
|
28
|
+
};
|
|
29
|
+
//# 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,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,CA6GpB;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,169 @@
|
|
|
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
|
+
try {
|
|
59
|
+
// Only confirm availability: do not parse SKILL.md or compare hashes.
|
|
60
|
+
runLarkCli(['api', 'GET', path], env, workspace);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const logId = error instanceof LarkCliError ? error.details.logId : undefined;
|
|
64
|
+
const diagnostic = logId
|
|
65
|
+
? ` (LogID: ${safeDiagnostic(logId, env).replace(/[\r\n\u2028\u2029]+/g, ' ')})`
|
|
66
|
+
: '';
|
|
67
|
+
process.stderr.write(`Warning: Publication succeeded, but the site Skill is temporarily unavailable${diagnostic}.\n`);
|
|
68
|
+
return {
|
|
69
|
+
environment,
|
|
70
|
+
installation: {
|
|
71
|
+
available: false,
|
|
72
|
+
message: '发布已成功,站点 Skill 暂不可获取;稍后通过 skillCommand 重试读取。' +
|
|
73
|
+
projectUpdate,
|
|
74
|
+
command,
|
|
75
|
+
},
|
|
76
|
+
skillCommand,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const memberInstallation = baseAppUrl
|
|
80
|
+
? {
|
|
81
|
+
siteUrl: baseAppUrl,
|
|
82
|
+
command: `${command} --site ${shellQuote(baseAppUrl)}`,
|
|
83
|
+
message: 'Prod 成员分发内容由 handoff.markdown 生成;最终回复原样附上该交付块。',
|
|
84
|
+
}
|
|
85
|
+
: undefined;
|
|
86
|
+
let publishedSiteName;
|
|
87
|
+
if (baseAppUrl) {
|
|
88
|
+
try {
|
|
89
|
+
const project = responseData(runLarkCli([
|
|
90
|
+
'api',
|
|
91
|
+
'GET',
|
|
92
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/get`,
|
|
93
|
+
'--params',
|
|
94
|
+
JSON.stringify({ env: environment }),
|
|
95
|
+
], env, workspace)).project;
|
|
96
|
+
if (project &&
|
|
97
|
+
typeof project === 'object' &&
|
|
98
|
+
'name' in project &&
|
|
99
|
+
typeof project.name === 'string' &&
|
|
100
|
+
project.name.trim())
|
|
101
|
+
publishedSiteName = project.name.trim();
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Site name is optional; never substitute a local directory name.
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const handoff = [
|
|
108
|
+
`开发者:在包含 base-database.jsonc 的工程目录执行 \`${command}\`。需要我现在在工程目录执行,安装到当前用户的 Codex Skill 目录吗?${projectUpdate}`,
|
|
109
|
+
...(memberInstallation
|
|
110
|
+
? [
|
|
111
|
+
'',
|
|
112
|
+
'> 转发给团队成员',
|
|
113
|
+
publishedSiteName
|
|
114
|
+
? `> 站点:${markdownText(publishedSiteName)}(${markdownUrl(baseAppUrl)})`
|
|
115
|
+
: `> 站点链接:${markdownUrl(baseAppUrl)}`,
|
|
116
|
+
`> 安装命令:\`${memberInstallation.command}\``,
|
|
117
|
+
'> 能力随个人站点权限提供。站点更新后,成员重新执行上述 --site 安装命令即可更新同一站点已记录的安装。',
|
|
118
|
+
]
|
|
119
|
+
: []),
|
|
120
|
+
].join('\n');
|
|
121
|
+
return {
|
|
122
|
+
environment,
|
|
123
|
+
installation: {
|
|
124
|
+
available: true,
|
|
125
|
+
message: '最终回复附上 handoff.markdown;仅在用户同意后执行工程目录安装命令,不自动安装。' +
|
|
126
|
+
projectUpdate,
|
|
127
|
+
command,
|
|
128
|
+
},
|
|
129
|
+
skillCommand,
|
|
130
|
+
...(memberInstallation ? { memberInstallation } : {}),
|
|
131
|
+
handoff: { markdown: handoff },
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function markdownText(value) {
|
|
135
|
+
return value
|
|
136
|
+
.replace(/[\r\n\t\u2028\u2029]+/g, ' ')
|
|
137
|
+
.replace(/[\p{Cc}\p{Cf}]/gu, '')
|
|
138
|
+
.replace(/ +/g, ' ')
|
|
139
|
+
.trim()
|
|
140
|
+
.replace(/[\\`*_{}\[\]()#+\-.!|<>~&]/g, '\\$&');
|
|
141
|
+
}
|
|
142
|
+
function markdownUrl(value) {
|
|
143
|
+
return value
|
|
144
|
+
.replaceAll('\\', '\\\\')
|
|
145
|
+
.replaceAll('`', '\\`')
|
|
146
|
+
.replaceAll('|', '\\|');
|
|
147
|
+
}
|
|
148
|
+
function shellQuote(value) {
|
|
149
|
+
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
150
|
+
}
|
|
151
|
+
export function deploymentNextAction(workspace, appToken, runtime, environment, env, baseAppUrl) {
|
|
152
|
+
const externalAgent = externalAgentGuide(workspace, appToken, runtime, environment, env, baseAppUrl);
|
|
153
|
+
const delivery = environment === 'preview'
|
|
154
|
+
? '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.'
|
|
155
|
+
: 'Complete the agreed production verification and notification follow-up before sharing baseAppUrl.';
|
|
156
|
+
const capabilities = environment === 'prod' && externalAgent.installation.available
|
|
157
|
+
? ` Read the SKILL.md function list using \`${externalAgent.skillCommand}\` (externalAgent.skillCommand), and add “可用能力” to the delivery in business language. Describe only capabilities actually present in that list; do not infer capabilities. If reading fails, state that the site Skill is temporarily unavailable and omit the capability list.`
|
|
158
|
+
: '';
|
|
159
|
+
return {
|
|
160
|
+
delivery: delivery +
|
|
161
|
+
capabilities +
|
|
162
|
+
(externalAgent.handoff
|
|
163
|
+
? ' 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.'
|
|
164
|
+
: ' State that publication succeeded but the site Skill is temporarily unavailable.') +
|
|
165
|
+
' Do not install or publish Prod automatically; follow user authorization for either action.',
|
|
166
|
+
externalAgent,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# 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":"AAeA,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;;;;;GAiJzB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { skillFrontmatter } from './skill-frontmatter.js';
|
|
2
|
+
import { recordSiteSkillInstallation } from './agent-tools-guide.js';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
5
|
+
import { homedir, tmpdir } from 'node:os';
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { readConfig } from './config.js';
|
|
8
|
+
import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
|
|
9
|
+
import { responseData, resolveLarkProfileEnvironment, runLarkCli, } from './lark-cli.js';
|
|
10
|
+
import { installSkillDirectory, skillDestinations, } from './skill.js';
|
|
11
|
+
function isRecord(value) {
|
|
12
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
export function validateSiteSkillBundle(value) {
|
|
15
|
+
if (!isRecord(value))
|
|
16
|
+
throw new Error('Invalid site Skill bundle');
|
|
17
|
+
const { skillName, hash, files } = value;
|
|
18
|
+
if (typeof skillName !== 'string' ||
|
|
19
|
+
skillName.length > 64 ||
|
|
20
|
+
!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(skillName))
|
|
21
|
+
throw new Error('Invalid site Skill bundle: illegal skillName');
|
|
22
|
+
if (typeof hash !== 'string' || hash.trim() === '')
|
|
23
|
+
throw new Error('Invalid site Skill bundle: hash is required');
|
|
24
|
+
if (!isRecord(files) || typeof files['SKILL.md'] !== 'string')
|
|
25
|
+
throw new Error('Invalid site Skill bundle: SKILL.md is required');
|
|
26
|
+
for (const [path, content] of Object.entries(files)) {
|
|
27
|
+
if (path !== 'SKILL.md' &&
|
|
28
|
+
!/^references\/[^/\\\u0000-\u001f<>:"|?*]+\.md$/.test(path))
|
|
29
|
+
throw new Error(`Invalid site Skill bundle path: ${path}; only SKILL.md and references/*.md are allowed`);
|
|
30
|
+
if (typeof content !== 'string')
|
|
31
|
+
throw new Error(`Invalid site Skill bundle content: ${path}`);
|
|
32
|
+
}
|
|
33
|
+
const header = skillFrontmatter(files['SKILL.md']);
|
|
34
|
+
if (header.value.name !== skillName)
|
|
35
|
+
throw new Error('Invalid site Skill bundle: SKILL.md frontmatter name must match skillName');
|
|
36
|
+
return { skillName, hash, files: files };
|
|
37
|
+
}
|
|
38
|
+
export async function installAgentToolsSkill(options, runtime = ONLINE_RUNTIME_PROFILE, site, explicitProfile) {
|
|
39
|
+
const workspace = process.cwd();
|
|
40
|
+
const config = site ? undefined : readConfig(workspace);
|
|
41
|
+
if (config)
|
|
42
|
+
assertProjectRuntimeProfile(config.runtimeProfile, runtime);
|
|
43
|
+
const siteToken = site ? parseSiteToken(site) : config.appToken;
|
|
44
|
+
const { env } = resolveLarkProfileEnvironment(await runtime.commandEnvironment(), explicitProfile, config?.larkProfile, runtime);
|
|
45
|
+
let rawBundle;
|
|
46
|
+
try {
|
|
47
|
+
rawBundle = responseData(runLarkCli([
|
|
48
|
+
'api',
|
|
49
|
+
'GET',
|
|
50
|
+
`/open-apis/base/v3/sites/${encodeURIComponent(siteToken)}/skill`,
|
|
51
|
+
], env, config ? workspace : homedir()));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
if (/This site has not been published to prod|No published version is available/i.test(message))
|
|
56
|
+
throw new Error('该站点尚未发布正式版,正式版发布后才能安装站点 Skill。', { cause: error });
|
|
57
|
+
if (/current account does not have access|not visible to the current caller|ErrPermNotAllow/i.test(message))
|
|
58
|
+
throw new Error('当前登录用户无权访问该站点 Skill,请确认你已加入站点并具有访问权限。', { cause: error });
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
const bundle = validateSiteSkillBundle(rawBundle);
|
|
62
|
+
// Validate the whole bundle before creating files or touching any installation.
|
|
63
|
+
const temporary = mkdtempSync(join(tmpdir(), 'base-database-site-skill-'));
|
|
64
|
+
try {
|
|
65
|
+
for (const [path, content] of Object.entries(bundle.files)) {
|
|
66
|
+
const target = join(temporary, path);
|
|
67
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
68
|
+
writeFileSync(target, content);
|
|
69
|
+
}
|
|
70
|
+
let installName = bundle.skillName;
|
|
71
|
+
let tracked = [];
|
|
72
|
+
const receiptFile = userReceiptPath();
|
|
73
|
+
if (site) {
|
|
74
|
+
tracked = readUserReceipt(receiptFile);
|
|
75
|
+
const destinations = skillDestinations(options, installName);
|
|
76
|
+
const conflicts = destinations.some((directory) => existsSync(directory) &&
|
|
77
|
+
tracked.some((item) => item.directory === directory && item.siteToken !== siteToken));
|
|
78
|
+
if (conflicts) {
|
|
79
|
+
installName = `${bundle.skillName.slice(0, 57).replace(/-+$/, '')}-${createHash('sha256').update(siteToken).digest('hex').slice(0, 6)}`;
|
|
80
|
+
process.stderr.write(`目标目录已有其他站点的同名 Skill;本次使用 ${installName} 避免覆盖。\n`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const installBundle = installName === bundle.skillName
|
|
84
|
+
? bundle
|
|
85
|
+
: {
|
|
86
|
+
...bundle,
|
|
87
|
+
skillName: installName,
|
|
88
|
+
files: {
|
|
89
|
+
...bundle.files,
|
|
90
|
+
'SKILL.md': skillFrontmatter(bundle.files['SKILL.md']).rename(installName),
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
validateSiteSkillBundle(installBundle);
|
|
94
|
+
if (installBundle !== bundle) {
|
|
95
|
+
for (const [path, content] of Object.entries(installBundle.files)) {
|
|
96
|
+
const target = join(temporary, path);
|
|
97
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
98
|
+
writeFileSync(target, content);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const installed = installSkillDirectory(temporary, installName, options, (directory) => Boolean(site) &&
|
|
102
|
+
tracked.some((item) => item.directory === directory &&
|
|
103
|
+
item.siteToken === siteToken &&
|
|
104
|
+
item.runtime === runtime.name));
|
|
105
|
+
try {
|
|
106
|
+
if (site)
|
|
107
|
+
writeUserReceipt(receiptFile, tracked, siteToken, runtime.name, installBundle, installed);
|
|
108
|
+
else
|
|
109
|
+
recordSiteSkillInstallation(workspace, siteToken, runtime.name, bundle, installed);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
process.stderr.write(site
|
|
113
|
+
? 'Warning: Skill 已安装,但无法保存用户级站点摘要;跨站同名保护无法可靠判断安装来源。\n'
|
|
114
|
+
: 'Warning: Skill 已安装,但无法保存本地安装摘要。\n');
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
ok: true,
|
|
118
|
+
installed,
|
|
119
|
+
skillName: installName,
|
|
120
|
+
hash: bundle.hash,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
rmSync(temporary, { recursive: true, force: true });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function userReceiptPath() {
|
|
128
|
+
return join(homedir(), '.base-database-cli/state/agent-tools-skills.json');
|
|
129
|
+
}
|
|
130
|
+
function readUserReceipt(path) {
|
|
131
|
+
try {
|
|
132
|
+
const value = JSON.parse(readFileSync(path, 'utf8'));
|
|
133
|
+
return Array.isArray(value.installations)
|
|
134
|
+
? value.installations.filter((item) => isRecord(item) &&
|
|
135
|
+
typeof item.siteToken === 'string' &&
|
|
136
|
+
typeof item.runtime === 'string' &&
|
|
137
|
+
typeof item.directory === 'string' &&
|
|
138
|
+
typeof item.hash === 'string' &&
|
|
139
|
+
isRecord(item.files) &&
|
|
140
|
+
Object.values(item.files).every((hash) => typeof hash === 'string'))
|
|
141
|
+
: [];
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function writeUserReceipt(path, existing, siteToken, runtime, bundle, directories) {
|
|
148
|
+
const files = Object.fromEntries(Object.entries(bundle.files).map(([name, content]) => [
|
|
149
|
+
name,
|
|
150
|
+
createHash('sha256').update(content).digest('hex'),
|
|
151
|
+
]));
|
|
152
|
+
const installations = existing.filter((item) => !directories.includes(item.directory));
|
|
153
|
+
installations.push(...directories.map((directory) => ({
|
|
154
|
+
siteToken,
|
|
155
|
+
runtime,
|
|
156
|
+
directory,
|
|
157
|
+
hash: bundle.hash,
|
|
158
|
+
files,
|
|
159
|
+
})));
|
|
160
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
161
|
+
writeFileSync(path, JSON.stringify({ installations }, null, 2) + '\n');
|
|
162
|
+
}
|
|
163
|
+
function parseSiteToken(value) {
|
|
164
|
+
const input = value.trim();
|
|
165
|
+
let token = input;
|
|
166
|
+
if (/^https?:\/\//i.test(input)) {
|
|
167
|
+
let url;
|
|
168
|
+
try {
|
|
169
|
+
url = new URL(input);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
throw new Error('无效的站点链接');
|
|
173
|
+
}
|
|
174
|
+
const parts = url.pathname.split('/').filter(Boolean);
|
|
175
|
+
token = parts.at(-1) ?? '';
|
|
176
|
+
if (!parts.some((part) => /^(?:app|baseapp)$/i.test(part)))
|
|
177
|
+
throw new Error('站点链接应为 baseAppUrl 格式');
|
|
178
|
+
}
|
|
179
|
+
if (!/^[A-Za-z0-9_-]{1,256}$/.test(token))
|
|
180
|
+
throw new Error('站点 token 格式无效');
|
|
181
|
+
return token;
|
|
182
|
+
}
|
|
183
|
+
//# 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"}
|