@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 CHANGED
@@ -61,7 +61,7 @@ bohr-widget help [<命令路径>]
61
61
  ## 执行顺序
62
62
 
63
63
  1. `create` 创建工程后检查返回的 `projectRoot`、`manifestPath`、`packagePath`、`profile`、`name` 和可选
64
- `panelId`;工作区文件面板固定使用 `--panel-id workspace-files`,CLI 会补齐三项只读文件能力。
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
- 用户要在文件树面板里直接保存时,用 `create --template panel --panel-id workspace-files` 创建工程,
144
- 再在作者 Manifest 的 `capabilities.files` 中加上 `write: true`(模板默认只有 list/metadata/read)。
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 或控制面可使用 `@dp-bohrium/widget-contracts`,也可使用 SDK 的协议、Schema 和 conformance
177
- 入口;固定与目标 SDK 配套的精确版本,不混用不同版本的协议资产。
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
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "formatVersion": 3,
3
3
  "packageName": "@dp-bohrium/widget-cli",
4
- "cli": "0.5.0",
4
+ "cli": "0.5.1",
5
5
  "profile": {
6
- "id": "widget-sdk-0.7.0",
7
- "sdk": "0.7.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:6b6ac1585a3f2bc0f8b2717b2475584a502a9026045b840337547528b7a063b0",
24
- "validators": "sha256:8712fb004d9decf1eeae56c1e7057092a8abc0eeae1093c29546bb56e3261922",
23
+ "compiler": "sha256:92822832e958aa5448312194de3d1d4e8515721be2862d978abaefe2143c9c71",
24
+ "validators": "sha256:47f6793e099e0b4c56da28f42e6ea0c79aecd9cc8915e1746fbd24f999bf05d9",
25
25
  "schemas": "sha256:ee3023e337559bbf83c096365fe1eb49ce6809a880a5e5d65e2a2f6fd53a7ddb",
26
- "templates": "sha256:60f555788f33fb38d707525f571d13b6fa78875be7d2d87cb864db6926a52ccb"
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-BkPMTfZ_.mjs";
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> 仅用于 panel;默认取规范化后的工程名",
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
- "workspace-files 会补齐 files.list、files.metadata、files.read 和目录引用样例;文件树逻辑与夹具需自行实现。",
1287
- "其他 Panel id 需要 Host 预先注册和绑定;更改 id 不会自动接管宿主界面。",
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 --ui react --panel-id workspace-files
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
- * `@dp-bohrium/widget-contracts` 的 host schema 只在 `compileAuthorManifest` 之后生效,
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;独立 CLI 请在工具目录或通过 npx 使用,Contracts 独立包供 Host 等消费者使用。保留作者源码,在独立候选中移除重复依赖、重新安装和构建。"]);
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 projectReadme({ name, template, ui, sourceFile, hostFile }) {
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
- - 源码入口:${sourceFile},由 ${hostFile} 调用 SDK 的 runWidgetHost 启动。
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(join(root, "README.md"), projectReadme({
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
- if (options.template === "panel" && panelId !== "workspace-files") warnings.push(`Panel id "${panelId}" 需要 Host 预先注册并绑定;工作区文件面板请使用 --panel-id workspace-files。`);
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(`下一步:cd ${JSON.stringify(root)},执行 pnpm install,再执行 pnpm exec bohr-widget build . --json 和 pnpm exec bohr-widget check . --json。`);
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 ../contracts/dist/generated-runtime-contracts.d.ts
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 ../contracts/dist/generated-manifest.d.ts
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 ../contracts/dist/generated-plugin-manifest.d.ts
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 ../contracts/dist/plugin-manifest.d.ts
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 ../widget-project/src/project.d.mts
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 ../widget-project/src/packaging.d.mts
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-BkPMTfZ_.mjs";
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) {