@dp-bohrium/widget-cli 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +13 -5
- package/CHANGELOG.md +9 -0
- package/assets/toolchain.json +6 -6
- package/dist/cli.mjs +116 -15
- package/dist/core.d.mts +16 -14
- package/dist/core.mjs +1 -1
- package/dist/{dsh-BkPMTfZ_.mjs → dsh-BlpXm2Bv.mjs} +10051 -10236
- package/llms.txt +2 -2
- package/package.json +8 -11
- package/assets/licenses/widget-contracts.LICENSE +0 -21
package/AGENTS.md
CHANGED
|
@@ -61,7 +61,7 @@ bohr-widget help [<命令路径>]
|
|
|
61
61
|
## 执行顺序
|
|
62
62
|
|
|
63
63
|
1. `create` 创建工程后检查返回的 `projectRoot`、`manifestPath`、`packagePath`、`profile`、`name` 和可选
|
|
64
|
-
`panelId
|
|
64
|
+
`panelId`。Panel ID 可自定义;如需文件浏览面板预设,可使用 `--panel-id workspace-files`,CLI 会补齐三项只读文件能力。
|
|
65
65
|
`warnings` 说明目录名不是合法标识符时 `manifest.name` 已回退为 `widget-<hash>`。
|
|
66
66
|
将 `widget-toolchain.json` 与包管理器 lockfile 一起提交;不手改 profile 绕过版本检查。
|
|
67
67
|
`--extensions` 只用于 file-preview,填写不带前导点的小写扩展名;`--tool` 将默认激活信号替换为
|
|
@@ -140,8 +140,8 @@ bohr-widget help [<命令路径>]
|
|
|
140
140
|
|
|
141
141
|
## 在 Panel 中编辑工作区文件
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
开发文件树面板时,可用 `create --template panel --panel-id workspace-files` 选择文件浏览预设。
|
|
144
|
+
需要保存文件时,在作者 Manifest 的 `capabilities.files` 中加上 `write: true`(模板默认只有 list/metadata/read),并确认目标工作台支持写入。
|
|
145
145
|
|
|
146
146
|
- 文件引用只取自 `content.data.root` 和 `files.list` 结果中 `kind: "file"` 的项;不拼路径,不自造 id。
|
|
147
147
|
- 运行时没有 `files.write` grant 时保持只读并说明原因;较早的 Host 只向 file-preview 签发写权限。
|
|
@@ -173,8 +173,8 @@ profile。`ready` 在此基础上还要求
|
|
|
173
173
|
旧工程直接声明 contracts 或 CLI 时会失败;先在独立候选中改用 SDK 出口并移除旧包,
|
|
174
174
|
重新安装、构建和验收。锁和 receipt 为 v2,integration 与 toolchain 为 v3;不自动回选旧执行器。
|
|
175
175
|
保留已有作者源码、跨 profile 升级或准备候选工程时,先读[准备迁移候选](https://dev.dp.tech/bohrium-widget-sdk/guides/migration),按指南完成候选审阅、plan/apply 和后续验收。
|
|
176
|
-
Host
|
|
177
|
-
|
|
176
|
+
Host 或控制面统一使用 SDK 的 `/contracts`、Schema 和 conformance 入口;固定与目标 SDK 配套的
|
|
177
|
+
精确版本,不混用不同版本的协议资产。
|
|
178
178
|
|
|
179
179
|
## 宿主兼容声明
|
|
180
180
|
|
|
@@ -227,6 +227,14 @@ SDK package.json 或 `unknown` 解释为线上平台已兼容。
|
|
|
227
227
|
`/core` 是模板、compiler、校验和打包的底层 API;直接调用它时,调用方负责工程锁定、实际依赖
|
|
228
228
|
和宿主兼容策略。完整预检由上述命令提供。`sdkVersion` 不能用来伪造另一代 compiler 的版本。
|
|
229
229
|
|
|
230
|
+
仓库内部的工程发现、检查、资源收集、ZIP 与摘要实现在 `src/project/`,供命令、维护脚本和
|
|
231
|
+
Demo 服务端复用;纯 Manifest 编译由 SDK 维护。Gallery 路由、展示状态和 Render 投影归 Demo,
|
|
232
|
+
不进入通用工程模块;Demo 浏览器通过服务端导出 ZIP,不导入 Node 工程实现。
|
|
233
|
+
|
|
234
|
+
仓库构建由中央准备器生成私有 SDK 工具输入和共享 Node 产物,再组装 CLI 的 `dist/assets`。
|
|
235
|
+
CLI 完整构建不调用 SDK 完整构建,也不要求 SDK 最终 `dist` 已存在。SDK 内嵌命令与 CLI
|
|
236
|
+
共用 Node 实现,但各自读取安装位置的工具链身份;私有 `.build` 不进入发布物。
|
|
237
|
+
|
|
230
238
|
`--open` 优先协商 Widget Development Host v1,旧宿主才回落 legacy profile 并告警。
|
|
231
239
|
legacy profile 已废弃,目标 Host 应升级到当前协议。
|
|
232
240
|
descriptor、status、events、control、一次性 claim 和 session token 都通过命令返回的 URL
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# `@dp-bohrium/widget-cli` 变更记录
|
|
2
2
|
|
|
3
|
+
## 0.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 75c4148: 创建 Panel 时不再将自定义 ID 作为警告,成功输出明确说明 ID 可自定义。同步帮助和 Agent 指引,将 `workspace-files` 说明为可选的文件浏览面板预设。
|
|
8
|
+
- 0578f90: 破坏性变更:将独立 Contracts 包合入 SDK,统一通过 SDK 的 `/contracts`、`/schemas/*.json` 和
|
|
9
|
+
`/conformance/*` 入口提供协议类型、Schema 与校验语料,不再独立发行 Contracts。
|
|
10
|
+
- 75c4148: 创建 Widget 工程时生成简短的 AGENTS.md,并在 README 与命令输出中直接提供固定 SDK 版本、公开文档、Agent 阅读入口和后续命令。开发前先确认目标工作台能力,安装依赖后使用工程内命令构建、校验和打包,再完成真实 Host 验收。
|
|
11
|
+
|
|
3
12
|
## 0.5.0
|
|
4
13
|
|
|
5
14
|
### Minor Changes
|
package/assets/toolchain.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"formatVersion": 3,
|
|
3
3
|
"packageName": "@dp-bohrium/widget-cli",
|
|
4
|
-
"cli": "0.5.
|
|
4
|
+
"cli": "0.5.1",
|
|
5
5
|
"profile": {
|
|
6
|
-
"id": "widget-sdk-0.
|
|
7
|
-
"sdk": "0.
|
|
6
|
+
"id": "widget-sdk-0.8.0",
|
|
7
|
+
"sdk": "0.8.0"
|
|
8
8
|
},
|
|
9
9
|
"protocol": {
|
|
10
10
|
"schemaVersion": 1,
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"llms": "https://dev.dp.tech/bohrium-widget-sdk/llms.txt"
|
|
21
21
|
},
|
|
22
22
|
"digests": {
|
|
23
|
-
"compiler": "sha256:
|
|
24
|
-
"validators": "sha256:
|
|
23
|
+
"compiler": "sha256:92822832e958aa5448312194de3d1d4e8515721be2862d978abaefe2143c9c71",
|
|
24
|
+
"validators": "sha256:47f6793e099e0b4c56da28f42e6ea0c79aecd9cc8915e1746fbd24f999bf05d9",
|
|
25
25
|
"schemas": "sha256:ee3023e337559bbf83c096365fe1eb49ce6809a880a5e5d65e2a2f6fd53a7ddb",
|
|
26
|
-
"templates": "sha256:
|
|
26
|
+
"templates": "sha256:87cf4085fb2769b1b874e9f331258c024f5826c31d0937a6e046b5511b5567c9"
|
|
27
27
|
}
|
|
28
28
|
}
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as normalizeArchivePath, c as compileAuthorManifest, i as prepareWidgetPackage, n as scaffoldDshWidget, o as checkWidgetProject, s as resolveWidgetProjects, t as auditDshPlugin } from "./dsh-
|
|
2
|
+
import { a as normalizeArchivePath, c as compileAuthorManifest, i as prepareWidgetPackage, n as scaffoldDshWidget, o as checkWidgetProject, s as resolveWidgetProjects, t as auditDshPlugin } from "./dsh-BlpXm2Bv.mjs";
|
|
3
3
|
import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
|
|
4
4
|
import { constants, existsSync, lstatSync, readFileSync, readdirSync, realpathSync, statSync, watch } from "node:fs";
|
|
5
5
|
import { chmod, lstat, mkdir, mkdtemp, open, readFile, readdir, realpath, rename, rm, rmdir, stat, writeFile } from "node:fs/promises";
|
|
@@ -1269,13 +1269,14 @@ function commandTopics(context) {
|
|
|
1269
1269
|
options: [
|
|
1270
1270
|
"--template <模板> panel 或 file-preview(默认 panel)",
|
|
1271
1271
|
"--ui <模式> vanilla 或 react(默认 vanilla)",
|
|
1272
|
-
"--panel-id <id>
|
|
1272
|
+
"--panel-id <id> 自定义面板标识,仅用于 panel;默认取规范化后的工程名",
|
|
1273
1273
|
"--extensions <列表> 仅用于 file-preview;逗号分隔扩展名(默认 txt)",
|
|
1274
1274
|
"--tool <名称> 按指定工具成功结果激活,不注册工具卡片",
|
|
1275
1275
|
HOST_OPTION,
|
|
1276
1276
|
JSON_OPTION
|
|
1277
1277
|
],
|
|
1278
1278
|
examples: [
|
|
1279
|
+
"bohr-widget create my-widget --ui react --panel-id my-widget",
|
|
1279
1280
|
"bohr-widget create workspace-browser --ui react --panel-id workspace-files",
|
|
1280
1281
|
"bohr-widget create text-preview --template file-preview --extensions txt,csv --ui vanilla --json",
|
|
1281
1282
|
"bohr-widget create search-panel --tool ScholarSearch --json"
|
|
@@ -1283,8 +1284,9 @@ function commandTopics(context) {
|
|
|
1283
1284
|
notes: [
|
|
1284
1285
|
`默认组合为 panel + vanilla;生成工程的构建环境要求 Node.js ${context.generatedProjectNode}。`,
|
|
1285
1286
|
"不会自动安装依赖;创建后进入目录,运行 pnpm install 或 npm install。",
|
|
1286
|
-
"
|
|
1287
|
-
"
|
|
1287
|
+
"Panel ID 可自定义,用于工作台识别面板;打包后按目标工作台的安装流程加载。",
|
|
1288
|
+
"workspace-files 是可选的文件浏览面板预设,会补齐 files.list、files.metadata、files.read 和目录引用样例;文件树界面与逻辑需自行实现。",
|
|
1289
|
+
"生成 README.md 和 AGENTS.md;先读取项目指引与公开文档,再安装依赖和执行工程命令。",
|
|
1288
1290
|
"将 widget-toolchain.json 与包管理器 lockfile 一起保存。"
|
|
1289
1291
|
],
|
|
1290
1292
|
quickStart: true
|
|
@@ -1519,7 +1521,7 @@ SDK ${sdk}(协议与执行工具链均由 SDK 内置)
|
|
|
1519
1521
|
CLI 要求 Node.js >=20;默认生成工程要求 Node.js ${generatedProjectNode}。
|
|
1520
1522
|
|
|
1521
1523
|
典型开发流程:
|
|
1522
|
-
pnpm dlx ${packageName} create my-widget --
|
|
1524
|
+
pnpm dlx ${packageName} create my-widget --template panel --ui react
|
|
1523
1525
|
cd my-widget
|
|
1524
1526
|
pnpm install
|
|
1525
1527
|
pnpm exec bohr-widget build .
|
|
@@ -1554,7 +1556,7 @@ function renderHelp(path = [], context) {
|
|
|
1554
1556
|
/**
|
|
1555
1557
|
* 作者清单(VS Code 风格 `contributes` 清单)的本地静态检查。
|
|
1556
1558
|
*
|
|
1557
|
-
*
|
|
1559
|
+
* SDK 的 host schema 只在 `compileAuthorManifest` 之后生效,
|
|
1558
1560
|
* 而编译只保留宿主运行时需要的字段:作者的 `version`、`displayName` 和未知顶层键会被
|
|
1559
1561
|
* 静默丢弃,于是"清单写错但 check 全绿"。这里只补下游永远看不到的作者侧约束,报错文案
|
|
1560
1562
|
* 直接指向作者填的字段名。
|
|
@@ -1812,7 +1814,7 @@ async function validateProjectToolchain(projectRoot, toolchain, { requireInstall
|
|
|
1812
1814
|
]) for (const name of ["@dp-bohrium/widget-contracts", "@dp-bohrium/widget-cli"]) if (pkg[section]?.[name] !== void 0) throw failure("PROJECT_SDK_MISMATCH", "作者工程仍直接声明 contracts 或 CLI,需统一使用 SDK 入口", {
|
|
1813
1815
|
projectRoot: root,
|
|
1814
1816
|
package: name
|
|
1815
|
-
}, ["作者工程统一依赖 SDK
|
|
1817
|
+
}, ["作者工程统一依赖 SDK;协议从 SDK 的 /contracts 与 /schemas 出口读取。保留作者源码,在独立候选中移除重复依赖、重新安装和构建。"]);
|
|
1816
1818
|
const declared = {};
|
|
1817
1819
|
const installed = {};
|
|
1818
1820
|
for (const [key, name] of Object.entries(PACKAGES)) {
|
|
@@ -2413,11 +2415,35 @@ function projectPackage({ name, ui, sdkVersion }) {
|
|
|
2413
2415
|
}
|
|
2414
2416
|
};
|
|
2415
2417
|
}
|
|
2416
|
-
function
|
|
2418
|
+
function projectAgentGuide({ sdkVersion, sourceFile, hostFile, documentation, agentSetupUrl }) {
|
|
2419
|
+
return `# 项目开发指引
|
|
2420
|
+
|
|
2421
|
+
创建时 SDK:\`@dp-bohrium/widget-sdk@${sdkVersion}\`。
|
|
2422
|
+
|
|
2423
|
+
以下路径均相对于本工程根目录:
|
|
2424
|
+
|
|
2425
|
+
- \`${sourceFile}\`:本工程的 Widget 界面与业务逻辑,通常在这里修改功能。
|
|
2426
|
+
- \`${hostFile}\`:本工程的启动文件,调用 SDK 的 \`runWidgetHost\` 启动 Widget。
|
|
2427
|
+
- \`manifest.json\`:本工程的 Widget 声明。
|
|
2428
|
+
- \`samples/default.json\`:本工程的样例输入。
|
|
2429
|
+
|
|
2430
|
+
本工程的依赖版本与工具链记录在 \`package.json\`、\`widget-toolchain.json\` 和包管理器 lockfile 中。
|
|
2431
|
+
|
|
2432
|
+
阅读入口:
|
|
2433
|
+
|
|
2434
|
+
- [README.md](./README.md):本工程的环境、安装、命令和验收说明。
|
|
2435
|
+
- [开发 Agent 引导](${agentSetupUrl}):通用的能力选型与开发阅读路径。
|
|
2436
|
+
- [文档索引](${documentation.llms}):按当前任务查找指南、API 和示例。
|
|
2437
|
+
`;
|
|
2438
|
+
}
|
|
2439
|
+
function projectReadme({ name, template, ui, sourceFile, hostFile, sdkVersion, documentation, agentSetupUrl }) {
|
|
2417
2440
|
return `# ${name}
|
|
2418
2441
|
|
|
2419
2442
|
Bohrium Widget ${template} 插件工程(${ui})。
|
|
2420
2443
|
|
|
2444
|
+
创建时 SDK:\`@dp-bohrium/widget-sdk@${sdkVersion}\`。项目上下文与 Agent 阅读入口见 [AGENTS.md](./AGENTS.md);安装依赖前即可读取[开发 Agent 引导](${agentSetupUrl})、[文档索引](${documentation.llms})和[快速开始](${documentation.quickStart})。
|
|
2445
|
+
文档独立更新;接口以本工程固定 SDK 和目标 Host 实际支持为准。
|
|
2446
|
+
|
|
2421
2447
|
默认构建器要求 Node.js \`${GENERATED_PROJECT_NODE}\`,高于执行器自身的 Node.js 20 要求。
|
|
2422
2448
|
工程已经精确依赖提供命令的 \`${PROJECT_EXECUTOR_PACKAGE}\`;在本目录安装后使用本地命令,无需全局安装或源码仓库。
|
|
2423
2449
|
|
|
@@ -2431,7 +2457,7 @@ pnpm run widget:pack --json
|
|
|
2431
2457
|
使用 npm 时,安装后可执行 \`npm run build\`、\`npm run check\`、\`npm run widget:pack\`;需要构建 receipt 时执行 \`npx --no-install bohr-widget build .\`。
|
|
2432
2458
|
Widget ZIP 使用 \`pnpm run widget:pack\` 或 \`npm run widget:pack\`;\`pnpm pack\` 是制作 npm \`.tgz\` 包的内置命令。
|
|
2433
2459
|
|
|
2434
|
-
-
|
|
2460
|
+
- Widget 界面与业务逻辑在 ${sourceFile} 中;本工程的 ${hostFile} 调用 SDK 的 runWidgetHost 启动 Widget。
|
|
2435
2461
|
- 高度链、布局与滚动策略直接写在 ${sourceFile} 中,样式随 activate 安装并在释放时清理;JSON 展示元素单独处理换行。
|
|
2436
2462
|
- manifest.json 是作者清单,打包时由 CLI 编译为宿主清单。
|
|
2437
2463
|
- 提交 widget-toolchain.json 与依赖 lockfile;dist/widget.js 与生成的 ZIP 不提交。
|
|
@@ -2983,6 +3009,17 @@ async function commandCreate(directory, options) {
|
|
|
2983
3009
|
await writeFile(join(root, "samples/default.json"), `${JSON.stringify(sample, null, 2)}\n`);
|
|
2984
3010
|
const sourceFile = options.ui === "react" ? "src/widget.tsx" : "src/widget.ts";
|
|
2985
3011
|
const hostFile = "src/widget-host.ts";
|
|
3012
|
+
const documentation = getDocumentation();
|
|
3013
|
+
const agentSetupUrl = new URL("agent-setup/prompt.md", documentation.url).href;
|
|
3014
|
+
const projectGuidance = {
|
|
3015
|
+
sdkVersion: sdkPackage.version,
|
|
3016
|
+
sourceFile,
|
|
3017
|
+
hostFile,
|
|
3018
|
+
documentation,
|
|
3019
|
+
agentSetupUrl
|
|
3020
|
+
};
|
|
3021
|
+
const readmePath = join(root, "README.md");
|
|
3022
|
+
const agentGuidePath = join(root, "AGENTS.md");
|
|
2986
3023
|
const source = options.ui === "react" && template.reactSource ? template.reactSource({ name }) : typeof template.source === "function" ? template.source({
|
|
2987
3024
|
ui: options.ui,
|
|
2988
3025
|
name
|
|
@@ -2991,13 +3028,13 @@ async function commandCreate(directory, options) {
|
|
|
2991
3028
|
await writeFile(join(root, hostFile), template.hostSource({ sourceFile }));
|
|
2992
3029
|
await writeFile(join(root, "scripts/rename-iife.mjs"), `import { rename } from "node:fs/promises";\n\nawait rename("dist/widget.iife.js", "dist/widget.js");\n`);
|
|
2993
3030
|
await writeFile(join(root, ".gitignore"), "node_modules/\ndist/\n.artifacts/\n.widget-build-receipt.json\n*.zip\n");
|
|
2994
|
-
await writeFile(
|
|
3031
|
+
await writeFile(readmePath, projectReadme({
|
|
3032
|
+
...projectGuidance,
|
|
2995
3033
|
name,
|
|
2996
3034
|
template: options.template,
|
|
2997
|
-
ui: options.ui
|
|
2998
|
-
sourceFile,
|
|
2999
|
-
hostFile
|
|
3035
|
+
ui: options.ui
|
|
3000
3036
|
}));
|
|
3037
|
+
await writeFile(agentGuidePath, projectAgentGuide(projectGuidance));
|
|
3001
3038
|
await writeFile(join(root, "tsconfig.json"), `${JSON.stringify({
|
|
3002
3039
|
compilerOptions: {
|
|
3003
3040
|
target: "ES2022",
|
|
@@ -3021,7 +3058,60 @@ async function commandCreate(directory, options) {
|
|
|
3021
3058
|
const warnings = [];
|
|
3022
3059
|
await writeProjectToolchain(root, toolchain);
|
|
3023
3060
|
if (name !== directoryName) warnings.push(`目录名 "${directoryName}" 不是合法标识符,manifest 的 name 已取 "${name}";需要其他取值请直接编辑 manifest.json。`);
|
|
3024
|
-
|
|
3061
|
+
const nextSteps = [
|
|
3062
|
+
{
|
|
3063
|
+
cwd: root,
|
|
3064
|
+
command: "pnpm",
|
|
3065
|
+
args: ["install"]
|
|
3066
|
+
},
|
|
3067
|
+
{
|
|
3068
|
+
cwd: root,
|
|
3069
|
+
command: "pnpm",
|
|
3070
|
+
args: [
|
|
3071
|
+
"exec",
|
|
3072
|
+
"bohr-widget",
|
|
3073
|
+
"integration",
|
|
3074
|
+
"--project",
|
|
3075
|
+
".",
|
|
3076
|
+
"--json"
|
|
3077
|
+
]
|
|
3078
|
+
},
|
|
3079
|
+
{
|
|
3080
|
+
cwd: root,
|
|
3081
|
+
command: "pnpm",
|
|
3082
|
+
args: [
|
|
3083
|
+
"exec",
|
|
3084
|
+
"bohr-widget",
|
|
3085
|
+
"build",
|
|
3086
|
+
".",
|
|
3087
|
+
"--json"
|
|
3088
|
+
]
|
|
3089
|
+
},
|
|
3090
|
+
{
|
|
3091
|
+
cwd: root,
|
|
3092
|
+
command: "pnpm",
|
|
3093
|
+
args: [
|
|
3094
|
+
"exec",
|
|
3095
|
+
"bohr-widget",
|
|
3096
|
+
"check",
|
|
3097
|
+
".",
|
|
3098
|
+
"--json"
|
|
3099
|
+
]
|
|
3100
|
+
},
|
|
3101
|
+
{
|
|
3102
|
+
cwd: root,
|
|
3103
|
+
command: "pnpm",
|
|
3104
|
+
args: [
|
|
3105
|
+
"exec",
|
|
3106
|
+
"bohr-widget",
|
|
3107
|
+
"pack",
|
|
3108
|
+
".",
|
|
3109
|
+
"--out",
|
|
3110
|
+
"artifacts/my-widget.zip",
|
|
3111
|
+
"--json"
|
|
3112
|
+
]
|
|
3113
|
+
}
|
|
3114
|
+
];
|
|
3025
3115
|
const result = {
|
|
3026
3116
|
ok: true,
|
|
3027
3117
|
command: "create",
|
|
@@ -3033,6 +3123,11 @@ async function commandCreate(directory, options) {
|
|
|
3033
3123
|
...panelId ? { panelId } : {},
|
|
3034
3124
|
manifestPath: join(root, "manifest.json"),
|
|
3035
3125
|
packagePath: join(root, "package.json"),
|
|
3126
|
+
readmePath,
|
|
3127
|
+
agentGuidePath,
|
|
3128
|
+
documentation,
|
|
3129
|
+
agentSetupUrl,
|
|
3130
|
+
nextSteps,
|
|
3036
3131
|
profile: toolchain.profile,
|
|
3037
3132
|
hostCompatibility,
|
|
3038
3133
|
...warnings.length === 0 ? {} : { warnings }
|
|
@@ -3040,8 +3135,14 @@ async function commandCreate(directory, options) {
|
|
|
3040
3135
|
if (options.json) console.log(JSON.stringify(result, null, 2));
|
|
3041
3136
|
else {
|
|
3042
3137
|
console.log(`已创建 Widget 工程:${root}(manifest name: ${name})`);
|
|
3138
|
+
if (panelId) console.log(`Panel ID:${panelId}(可自定义)`);
|
|
3139
|
+
console.log(`创建时 SDK:@dp-bohrium/widget-sdk@${sdkPackage.version}`);
|
|
3140
|
+
console.log(`项目说明:${readmePath}\nAgent 指引:${agentGuidePath}`);
|
|
3141
|
+
console.log(`文档站:${documentation.url}\nAgent 阅读入口:${agentSetupUrl}`);
|
|
3142
|
+
console.log(`文档索引:${documentation.llms}`);
|
|
3043
3143
|
for (const warning of warnings) console.warn(`提示:${warning}`);
|
|
3044
|
-
console.log(
|
|
3144
|
+
console.log(`先读取项目指引和公开文档,再进入工程目录:${root}`);
|
|
3145
|
+
console.log(`依次执行:\n${nextSteps.map((step) => [step.command, ...step.args].join(" ")).join("\n")}`);
|
|
3045
3146
|
}
|
|
3046
3147
|
return result;
|
|
3047
3148
|
}
|
package/dist/core.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
|
-
//#region ../
|
|
2
|
+
//#region ../widget-sdk/src/protocol/generated-runtime-contracts.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 完整渲染请求联合:tool-result(内部)/ file-preview / panel。
|
|
5
5
|
*/
|
|
@@ -347,7 +347,7 @@ interface PanelContent {
|
|
|
347
347
|
data: JsonValue;
|
|
348
348
|
}
|
|
349
349
|
//#endregion
|
|
350
|
-
//#region ../
|
|
350
|
+
//#region ../widget-sdk/src/protocol/generated-manifest.d.ts
|
|
351
351
|
/** GENERATED FILE. Do not edit directly. */
|
|
352
352
|
/**
|
|
353
353
|
* 构建该 Widget 时使用的 SDK 精确 SemVer 版本,不接受范围。
|
|
@@ -538,7 +538,7 @@ interface RuntimeOptions$1 {
|
|
|
538
538
|
webAssembly?: boolean;
|
|
539
539
|
}
|
|
540
540
|
//#endregion
|
|
541
|
-
//#region ../
|
|
541
|
+
//#region ../widget-sdk/src/protocol/generated-plugin-manifest.d.ts
|
|
542
542
|
/** GENERATED FILE. Do not edit directly. */
|
|
543
543
|
/**
|
|
544
544
|
* Host 可用于启动 Widget 的公开激活信号。多个值表示任一信号命中即可激活;它们不授予 events.read 权限。工具名形式为 tool-call-<阶段>:<工具名>。
|
|
@@ -713,7 +713,7 @@ interface RuntimeOptions {
|
|
|
713
713
|
webAssembly?: boolean;
|
|
714
714
|
}
|
|
715
715
|
//#endregion
|
|
716
|
-
//#region ../
|
|
716
|
+
//#region ../widget-sdk/src/protocol/plugin-manifest.d.ts
|
|
717
717
|
/** 工具调用事件阶段;用于拼出 `tool-call-<phase>:<toolName>` 形式的激活事件。 */
|
|
718
718
|
type WidgetToolPhase = "generating" | "waiting" | "running" | "result" | "error";
|
|
719
719
|
/**
|
|
@@ -734,7 +734,7 @@ type WidgetPluginManifest = Omit<WidgetPluginManifest$1, "activationEvents"> & {
|
|
|
734
734
|
readonly activationEvents?: WidgetActivationEvents;
|
|
735
735
|
};
|
|
736
736
|
//#endregion
|
|
737
|
-
//#region
|
|
737
|
+
//#region src/project/project.d.mts
|
|
738
738
|
/** 工程检查摘要;Gallery 状态和终端输出只依赖这些字段。 */
|
|
739
739
|
interface CheckResult {
|
|
740
740
|
ok: boolean;
|
|
@@ -810,7 +810,17 @@ interface WidgetProjectCheckFailure extends WidgetProjectCheckDetails {
|
|
|
810
810
|
}
|
|
811
811
|
type WidgetProjectCheckResult = WidgetProjectCheckSuccess | WidgetProjectCheckFailure;
|
|
812
812
|
//#endregion
|
|
813
|
-
//#region
|
|
813
|
+
//#region src/project/check.d.mts
|
|
814
|
+
declare function checkWidgetProject(projectRoot: string, options?: CheckWidgetProjectOptions): Promise<WidgetProjectCheckResult>;
|
|
815
|
+
declare function resolveWidgetProjects(input: string, root?: string): string[];
|
|
816
|
+
//#endregion
|
|
817
|
+
//#region src/project/manifest.d.mts
|
|
818
|
+
declare function compileAuthorManifest(manifest: unknown, options?: ManifestCompilerOptions & {
|
|
819
|
+
sdkVersion?: string;
|
|
820
|
+
compiler?: WidgetManifestCompiler;
|
|
821
|
+
}): unknown;
|
|
822
|
+
//#endregion
|
|
823
|
+
//#region src/project/packaging.d.mts
|
|
814
824
|
/** 打包只依赖工程位置与已编译清单,不依赖 Gallery 的路由或展示状态。 */
|
|
815
825
|
interface WidgetPackageInput {
|
|
816
826
|
projectRoot: string;
|
|
@@ -824,14 +834,6 @@ interface WidgetPackageOptions {
|
|
|
824
834
|
/** 保留旧的同步 ZIP 返回值。 */
|
|
825
835
|
declare function buildWidgetPackage(project: WidgetPackageInput, options?: WidgetPackageOptions): Buffer;
|
|
826
836
|
//#endregion
|
|
827
|
-
//#region ../widget-project/src/index.d.mts
|
|
828
|
-
declare function compileAuthorManifest(manifest: unknown, options?: ManifestCompilerOptions & {
|
|
829
|
-
sdkVersion?: string;
|
|
830
|
-
compiler?: WidgetManifestCompiler;
|
|
831
|
-
}): unknown;
|
|
832
|
-
declare function checkWidgetProject(projectRoot: string, options?: CheckWidgetProjectOptions): Promise<WidgetProjectCheckResult>;
|
|
833
|
-
declare function resolveWidgetProjects(input: string, root?: string): string[];
|
|
834
|
-
//#endregion
|
|
835
837
|
//#region src/core.d.mts
|
|
836
838
|
interface WidgetTemplateContext {
|
|
837
839
|
readonly name: string;
|
package/dist/core.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as compileAuthorManifest, n as scaffoldDshWidget, o as checkWidgetProject, r as buildWidgetPackage, s as resolveWidgetProjects, t as auditDshPlugin } from "./dsh-
|
|
1
|
+
import { c as compileAuthorManifest, n as scaffoldDshWidget, o as checkWidgetProject, r as buildWidgetPackage, s as resolveWidgetProjects, t as auditDshPlugin } from "./dsh-BlpXm2Bv.mjs";
|
|
2
2
|
//#region src/core.mjs
|
|
3
3
|
/** Validate a community template before registering it in a custom CLI. */
|
|
4
4
|
function defineWidgetTemplate(template) {
|