cardbuddy 0.22.0 → 0.23.0

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.
Files changed (69) hide show
  1. package/README.md +11 -11
  2. package/dist/cli.js +2 -2
  3. package/dist/config.js +3 -3
  4. package/dist/init.js +13 -13
  5. package/dist/mcp.js +1 -1
  6. package/dist/preview-editor/assets/{index-CU8zVA2P.css → index-7RzNd7tf.css} +1 -1
  7. package/dist/preview-editor/assets/{index-CPpLZZyi.js → index-C7N5n_qW.js} +80 -80
  8. package/dist/preview-editor/index.html +2 -2
  9. package/dist/skills-upgrade.js +1 -1
  10. package/dist/standalone.js +2 -2
  11. package/dist/vendored/card-editor/runtime/adapter.js +10 -11
  12. package/dist/vendored/mcp/client.mjs +50 -13
  13. package/dist/vendored/mcp/tools.mjs +13 -7
  14. package/dist/vendored/server/core/ai-chat.js +540 -183
  15. package/dist/vendored/server/core/assetProxy.js +1 -1
  16. package/dist/vendored/server/core/browser.js +1 -1
  17. package/dist/vendored/server/core/cardDigest.js +324 -0
  18. package/dist/vendored/server/core/cardExport.js +5 -5
  19. package/dist/vendored/server/core/cardFiles.js +1 -1
  20. package/dist/vendored/server/core/cardHistoryRemote.js +1 -1
  21. package/dist/vendored/server/core/cardImportMeta.js +1 -1
  22. package/dist/vendored/server/core/cardListCache.js +92 -10
  23. package/dist/vendored/server/core/cardPublish.js +11 -6
  24. package/dist/vendored/server/core/cardPublishVersions.js +8 -8
  25. package/dist/vendored/server/core/cardSave.js +14 -10
  26. package/dist/vendored/server/core/cardSidecar.js +3 -3
  27. package/dist/vendored/server/core/cardSync.js +35 -23
  28. package/dist/vendored/server/core/cardVersion.js +1 -1
  29. package/dist/vendored/server/core/index.js +6 -6
  30. package/dist/vendored/server/core/logger.js +1 -1
  31. package/dist/vendored/server/core/remoteCard.js +5 -5
  32. package/dist/vendored/server/core/skillPaths.js +1 -1
  33. package/dist/vendored/server/core/sliceUpload.js +4 -4
  34. package/dist/vendored/skills/README.md +13 -13
  35. package/dist/vendored/skills/card-doctor/SKILL.md +2 -2
  36. package/dist/vendored/skills/dsl-card-ai/SKILL.md +4 -4
  37. package/dist/vendored/skills/dsl-card-generator/SKILL.md +2 -2
  38. package/dist/vendored/skills/dsl-card-generator/references/amount_formatting.md +1 -1
  39. package/dist/vendored/skills/dsl-card-generator/references/build_protocol.md +54 -0
  40. package/dist/vendored/skills/dsl-card-generator/references/component_rules.md +2 -2
  41. package/dist/vendored/skills/dsl-card-generator/references/converge_protocol.md +36 -0
  42. package/dist/vendored/skills/dsl-card-generator/references/event_patterns.md +1 -1
  43. package/dist/vendored/skills/dsl-card-generator/references/generation_pitfalls.md +1 -1
  44. package/dist/vendored/skills/dsl-card-generator/references/image_to_card.md +1 -1
  45. package/dist/vendored/skills/dsl-card-generator/references/quickref.md +1 -1
  46. package/dist/vendored/skills/dsl-card-generator/references/recipes.md +4 -4
  47. package/dist/vendored/skills/dsl-card-generator/references/rules.md +1 -1
  48. package/dist/vendored/skills/dsl-card-generator/references/slices_convention.md +6 -6
  49. package/dist/vendored/skills/dsl-card-generator/scripts/inventory_schemas.py +1 -1
  50. package/dist/vendored/skills/dsl-card-generator/scripts/lib/scaffold.mjs +1 -1
  51. package/dist/vendored/skills/dsl-card-generator/scripts/lib/slice_dedupe.mjs +2 -2
  52. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-CeVX_y-M.js +137 -0
  53. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-DiEiY59H.css +1 -0
  54. package/dist/vendored/skills/dsl-card-generator/vendor/preview/standalone.html +2 -2
  55. package/dist/vendored/skills/{finmall-card-sync → platform-card-sync}/SKILL.md +26 -26
  56. package/dist/vendored/skills/{finmall-card-sync → platform-card-sync}/scripts/api_batch_sync.mjs +184 -162
  57. package/dist/vendored/skills/{finmall-card-sync → platform-card-sync}/scripts/slice_upload.mjs +48 -29
  58. package/dist/vendored/skills/{finmall-session-navigator → platform-session-navigator}/SKILL.md +13 -13
  59. package/dist/vendored/skills/{finmall-session-navigator → platform-session-navigator}/scripts/package-lock.json +2 -2
  60. package/dist/vendored/skills/{finmall-session-navigator → platform-session-navigator}/scripts/package.json +2 -2
  61. package/dist/vendored/skills/{finmall-session-navigator/scripts/finmall_login.mjs → platform-session-navigator/scripts/platform_login.mjs} +41 -31
  62. package/dist/vendored/skills/{finmall-session-navigator → platform-session-navigator}/scripts/session-manager.mjs +17 -17
  63. package/dist/vendored/skills/shared/README.md +21 -21
  64. package/dist/vendored/skills/shared/auth-model.md +8 -10
  65. package/dist/vendored/skills/shared/{finmall-config.mjs → platform-config.mjs} +10 -10
  66. package/dist/vendored/tools/{finmall-env.mjs → platform-env.mjs} +13 -13
  67. package/package.json +1 -1
  68. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-BCLshIzC.css +0 -1
  69. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-pP5kTKiI.js +0 -88
package/README.md CHANGED
@@ -49,7 +49,7 @@ npm run preview # 本地服务(8787) + 内置编辑器前端 +
49
49
  | `src/cards/helloCard/` | 示例卡(`schema.json` + `data.json`,构建期已过校验)——起服务即有卡可看可改 |
50
50
  | `skills/` | 随包发布的全量技能库:校验 / 同步 / 保存 / 切图上传 / 建卡管线脚本与工作流文档 |
51
51
  | `tools/link-skills.mjs` | `npm run link:skills`:把 `skills/` 链到 Codex / Claude / WorkBuddy 等 AI 工具的项目级技能目录 |
52
- | `.env.cb` | 共享配置模板(端口、FinMall 远端基址、AI 网关占位;密钥请写 `.env.cb.local`) |
52
+ | `.env.cb` | 共享配置模板(端口、远端基址、AI 网关占位;密钥请写 `.env.cb.local`) |
53
53
  | `package.json` | 声明 `cardbuddy` 依赖 + `dev` / `start` / `preview` / `link:skills` 脚本 |
54
54
  | `.gitignore` | 只追加缺失条目:`node_modules/`、`.env.cb.local`、`.cache/`、`skills/*/.local/` 等 |
55
55
  | `README.md` | 上手说明 |
@@ -173,7 +173,7 @@ agent 侧配置(`cwd` 必须是卡片工程根,读写才落在 `src/cards/`
173
173
  | 优先服务,连不上自动降级为直接读写盘(`validate` 跑 Python 校验器) | `card_list` `card_read` `card_write` `card_validate` `card_history` `card_rollback` |
174
174
  | 优先服务,降级到包内独立离线渲染器 | `card_screenshot` |
175
175
  | **必须**另起一个 `cardbuddy` | `card_render_status` `card_node_models` `card_import_meta` |
176
- | **必须**另起服务 **且**已登录 FinMall | `card_sync` `card_save` `card_slice_upload` |
176
+ | **必须**另起服务 **且**已登录远端 | `card_sync` `card_save` `card_slice_upload` |
177
177
 
178
178
  > **别直接跑包内 `dist/vendored/mcp/server.mjs`。** `mcp/client.mjs` 在**模块顶层**就 resolve
179
179
  > `CARD_ROOT` / `CARD_API_BASE`(不是每次调用时读),绕过 CLI 包装层时前者会落到包内快照目录
@@ -241,9 +241,9 @@ DSL_DEV_HTTPS=1 cardbuddy
241
241
  | --- | --- | --- |
242
242
  | `GET /__cards` | 自包含 | 卡片列表 |
243
243
  | `GET /__card/:id` | 自包含 | 单卡 schema/data 读取 |
244
- | `POST /__sync` | 本地服务代理 | 同步远端 FinMall(依赖 `finmall-card-sync` skill) |
245
- | `POST /__save` | 本地服务代理 | 保存到远端 FinMall(依赖 `finmall-card-sync` skill);成功后自动截图并上传远端预览图(IDC10014) |
246
- | `GET /__preview` | 本地服务代理 | 远端取卡(IDC10015,依赖 `finmall-card-sync` skill) |
244
+ | `POST /__sync` | 本地服务代理 | 同步远端(依赖 `platform-card-sync` skill) |
245
+ | `POST /__save` | 本地服务代理 | 保存到远端(依赖 `platform-card-sync` skill);成功后自动截图并上传远端预览图(IDC10014) |
246
+ | `GET /__preview` | 本地服务代理 | 远端取卡(IDC10015,依赖 `platform-card-sync` skill) |
247
247
  | `POST /__validate` | 本地服务代理 | 契约校验(依赖 `dsl-card-generator` skill) |
248
248
  | `GET /__render-status/:id` | 自包含 + 内嵌 Vite SSR | 渲染自检 |
249
249
  | `GET /__node-models/:id` | 自包含 + 内嵌 Vite SSR | 节点 Property 树模型 |
@@ -256,7 +256,7 @@ DSL_DEV_HTTPS=1 cardbuddy
256
256
  | `POST /__code-bridge/:id/heartbeat` | 自包含 | 代码桥:会话心跳(前端 5s 一次) |
257
257
  | `DELETE /__code-bridge/:id` | 自包含 | 代码桥:结束会话并删除临时文件 |
258
258
 
259
- > **FinMall 凭据只在本机**:`/__sync` `/__save` `/__preview` 由本地服务代理 FinMall,凭据存于本机 `skills/finmall-card-sync` 与 `.env.cb`,公网前端永不接触。
259
+ > **远端凭据只在本机**:`/__sync` `/__save` `/__preview` 由本地服务代理远端,凭据存于本机 `skills/platform-card-sync` 与 `.env.cb`,公网前端永不接触。
260
260
 
261
261
  ### VSCode 代码桥(事件面板代码编辑区)
262
262
 
@@ -281,9 +281,9 @@ DSL_DEV_HTTPS=1 cardbuddy
281
281
  远端读写与校验类端点(`/__sync` `/__save` `/__preview` `/__validate`)以及 AI 助手的
282
282
  `skill_read` / `skill_exec`,都通过动态 `import` / 子进程调用技能脚本:
283
283
 
284
- - `finmall-card-sync`(sync / save / preview / 切图上传)
284
+ - `platform-card-sync`(sync / save / preview / 切图上传)
285
285
  - `dsl-card-generator`(validate / autofix / 建卡管线)
286
- - `finmall-session-navigator`(FinMall 登录会话;凭据落 `skills/finmall-session-navigator/.local/credentials.json`)
286
+ - `platform-session-navigator`(远端登录会话;凭据落 `skills/platform-session-navigator/.local/credentials.json`)
287
287
 
288
288
  **解析顺序**(见 `server/core/skillPaths.js`,全后端统一):
289
289
 
@@ -291,8 +291,8 @@ DSL_DEV_HTTPS=1 cardbuddy
291
291
  2. 项目根 `skills/` —— 跑过 `cardbuddy init` 即有,**推荐**:可写(凭据、审计、缓存都落在项目内)、随项目走;
292
292
  3. 包内快照 `dist/vendored/skills/` —— 随 npm 包发布的全量技能库,没跑 `init` 也能只读兜底。
293
293
 
294
- > 远端能力(同步 / 保存 / 切图上传)还需要 `.env.cb` 里的 `FINMALL_BASE_URL` 等配置,
295
- > 以及 `playwright`(本包 optionalDependency,默认会装)与一次 FinMall 登录。
294
+ > 远端能力(同步 / 保存 / 切图上传)还需要 `.env.cb` 里的 `PLATFORM_BASE_URL` 等配置,
295
+ > 以及 `playwright`(本包 optionalDependency,默认会装)与一次远端登录。
296
296
  > 写入类文件(凭据等)**永远落项目根**,不会写进 `node_modules`。
297
297
 
298
298
  ---
@@ -369,7 +369,7 @@ npm run dev:prod
369
369
 
370
370
  ### 前置条件
371
371
 
372
- - `.env.cb` 已存在(含 `FINMALL_BASE_URL` 远端基址、`CARDBUDDY_DEV_PORT`)。缺它编辑器仍能起,只是远端资源代理会告警。
372
+ - `.env.cb` 已存在(含 `PLATFORM_BASE_URL` 远端基址、`CARDBUDDY_DEV_PORT`)。缺它编辑器仍能起,只是远端资源代理会告警。
373
373
  - 首次跑前先 `npm install`(仓库根)。
374
374
 
375
375
  ### 服务侧单独起(调试 8787 本身)
package/dist/cli.js CHANGED
@@ -51,7 +51,7 @@ function guardProcessAlive() {
51
51
  guardProcessAlive()
52
52
 
53
53
  // 加载环境(与 skills 同套约定:.env.cb 为共享配置,.env.cb.local 为个人覆盖层)。
54
- // dotenv 默认不覆盖已存在变量,故主仓库由启动器注入的 DSL_DEV_PORT / FINMALL_BASE_URL 仍优先。
54
+ // dotenv 默认不覆盖已存在变量,故主仓库由启动器注入的 DSL_DEV_PORT / PLATFORM_BASE_URL 仍优先。
55
55
  // 同时登记「dotenv 注入值」:server/core/ai-chat.js 据此区分「启动时灌进 process.env 的文件值」
56
56
  // 与「真实环境变量覆盖」,否则磁盘上改了 .env.cb.local 也会被启动快照遮挡。
57
57
  for (const p of ['.env', '.env.cb', '.env.cb.local']) {
@@ -117,7 +117,7 @@ if (args.includes('--help') || args.includes('-h')) {
117
117
  本命令自身不起服务,工具按依赖分档:route_input / scaffold / add_component 纯本地;
118
118
  list / read / write / validate / history / rollback 降级为直接读写盘;screenshot
119
119
  降级到包内离线渲染器;render_status / node_models / import_meta 必须另起一个
120
- cardbuddy;sync / save / slice_upload 还必须已登录 FinMall。
120
+ cardbuddy;sync / save / slice_upload 还必须已登录远端。
121
121
  --version, -v 打印版本号后退出(只输出版本号,便于脚本取值)
122
122
  --help, -h 显示帮助
123
123
 
package/dist/config.js CHANGED
@@ -59,10 +59,10 @@ export function loadConfig(env = process.env) {
59
59
  // 退回原生 EADDRINUSE 行为。
60
60
  const takeover = String(env.DSL_DEV_PORT_TAKEOVER || 'auto').toLowerCase()
61
61
  const portTakeover = ['auto', 'force', 'off'].includes(takeover) ? takeover : 'auto'
62
- // FinMall 远端站点基址:资源代理(createAssetProxyMiddleware)回源用。
63
- // 由 .env.cb 的 FINMALL_BASE_URL 经启动器(tools/dev.mjs / prod-preview.mjs)
62
+ // 远端站点基址:资源代理(createAssetProxyMiddleware)回源用。
63
+ // 由 .env.cb 的 PLATFORM_BASE_URL 经启动器(tools/dev.mjs / prod-preview.mjs)
64
64
  // 注入到本进程 env;缺省空串表示不回源(/minio 等只走占位图兜底)。
65
- const upstream = env.FINMALL_BASE_URL || ''
65
+ const upstream = env.PLATFORM_BASE_URL || ''
66
66
 
67
67
  // 包内「迷你仓库快照」根:build.mjs 把 SSR 运行时、server/core、tools、mcp、全量 skills
68
68
  // 按仓库原布局内联到 dist/vendored/ 下,使快照内的相对 import(如 ai-chat.js 的
package/dist/init.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * src/cards/helloCard/ 示例卡(schema.json + data.json,构建期已过校验)—— 起服务即有卡可看
7
7
  * skills/ 随包发布的技能库全量释放:/__validate、/__sync、/__save、切图上传
8
8
  * 与 AI 的 skill_read / skill_exec 都按「项目根 skills/ 优先」解析,
9
- * 释放后既跑得快也写得了(FinMall 凭据落在项目内,不进 node_modules)
9
+ * 释放后既跑得快也写得了(远端凭据落在项目内,不进 node_modules)
10
10
  * tools/link-skills.mjs 把 skills/ 链到 Codex / Claude / WorkBuddy 等 AI 工具的项目级技能目录
11
11
  * .env.cb 共享配置模板(端口 / 远端基址 / AI 网关占位;密钥写 .env.cb.local)
12
12
  * package.json 声明 cardbuddy 依赖与 dev / preview / mcp / link:skills 脚本
@@ -30,16 +30,16 @@ const SAMPLE_CARD_ID = 'helloCard'
30
30
 
31
31
  /** 模板 .env.cb:只放非机密的共享配置,密钥类一律注释占位(个人覆盖写 .env.cb.local) */
32
32
  const ENV_TEMPLATE = `# CardBuddy 本地开发服务配置(共享层,可入库)
33
- # 个人机密(AI_API_KEY / FinMall 凭据等)请写 .env.cb.local,它覆盖本文件且不入库。
33
+ # 个人机密(AI_API_KEY / 远端凭据等)请写 .env.cb.local,它覆盖本文件且不入库。
34
34
 
35
35
  # cardbuddy 本地服务端口(单一真值;编辑器前端也读它)
36
36
  CARDBUDDY_CARD_PORT=8787
37
37
 
38
- # FinMall 远端站点基址(资源代理回源 / 同步 / 保存 / 切图上传用)
39
- FINMALL_BASE_URL=https://uat-pkg.finmall.com
40
- FINMALL_APP_ID=100001
41
- FINMALL_WORKSPACE_ID=dev
42
- # Chrome 远程调试端口(复用已登录的 FinMall 会话)
38
+ # 远端站点基址(资源代理回源 / 同步 / 保存 / 切图上传用)
39
+ PLATFORM_BASE_URL=https://uat-pkg.finmall.com
40
+ PLATFORM_APP_ID=100001
41
+ PLATFORM_WORKSPACE_ID=dev
42
+ # Chrome 远程调试端口(复用已登录的远端会话)
43
43
  CARDBUDDY_CDP_PORT=9222
44
44
 
45
45
  # ---- AI 开发助手(自带网关,OpenAI 兼容 /chat/completions)----
@@ -70,7 +70,7 @@ const GITIGNORE_ENTRIES = [
70
70
  'node_modules/',
71
71
  '.env.cb.local',
72
72
  '.env.local',
73
- '.env.finmall.local',
73
+ '.env.platform.local',
74
74
  '.cache/',
75
75
  '.local/',
76
76
  'skills/*/.local/',
@@ -210,7 +210,7 @@ npx cardbuddy skills upgrade --dry-run # 先看会动哪些文件(四类:
210
210
  \`\`\`
211
211
 
212
212
  该命令**只动 \`skills/\`**,绝不碰 \`.env.cb\` / \`package.json\` / \`README.md\`
213
- (那得用 \`init --force\`,有冲掉端口 / FinMall 配置 / AI 网关占位的风险)。
213
+ (那得用 \`init --force\`,有冲掉端口 / 远端配置 / AI 网关占位的风险)。
214
214
 
215
215
  ## 把卡片工具挂给外部 AI agent(MCP,可选)
216
216
 
@@ -241,7 +241,7 @@ npx cardbuddy skills upgrade --dry-run # 先看会动哪些文件(四类:
241
241
  | 优先服务,连不上自动降级为直接读写盘(\`validate\` 跑 Python 校验器) | \`card_list\` \`card_read\` \`card_write\` \`card_validate\` \`card_history\` \`card_rollback\` |
242
242
  | 优先服务,降级到包内独立离线渲染器 | \`card_screenshot\` |
243
243
  | **必须**另起一个 \`npm run dev\` | \`card_render_status\` \`card_node_models\` \`card_import_meta\` |
244
- | **必须**另起服务 **且**已登录 FinMall | \`card_sync\` \`card_save\` \`card_slice_upload\` |
244
+ | **必须**另起服务 **且**已登录远端 | \`card_sync\` \`card_save\` \`card_slice_upload\` |
245
245
 
246
246
  \`--mcp\` 会自动把 \`CARD_ROOT\` 指到本工程根、\`CARD_API_BASE\` 指到 \`.env.cb\` 的
247
247
  \`CARDBUDDY_CARD_PORT\`(默认 8787)。**别直接跑包内 \`vendored/mcp/server.mjs\`**:那样
@@ -249,11 +249,11 @@ npx cardbuddy skills upgrade --dry-run # 先看会动哪些文件(四类:
249
249
  5180(\`card_render_status\` 直接报 \`dev-server-required\`)。排查时可设
250
250
  \`CARDBUDDY_MCP_VERBOSE=1\` 让启动信息打到 stderr。
251
251
 
252
- ## FinMall 远端能力(可选)
252
+ ## 远端能力(可选)
253
253
 
254
- 同步 / 保存 / 切图上传需要已登录的 FinMall 会话与 \`playwright\`
254
+ 同步 / 保存 / 切图上传需要已登录的远端会话与 \`playwright\`
255
255
  (cardbuddy 的 optionalDependency,装包时默认会装)。凭据只落在本机
256
- \`skills/finmall-session-navigator/.local/credentials.json\`,已被 .gitignore 忽略。
256
+ \`skills/platform-session-navigator/.local/credentials.json\`,已被 .gitignore 忽略。
257
257
  `
258
258
  }
259
259
 
package/dist/mcp.js CHANGED
@@ -24,7 +24,7 @@
24
24
  * 本地服务没起也能用大部分:route_input / scaffold / add_component 纯本地;list / read / write /
25
25
  * validate / history / rollback 降级为直接读写盘(validate 跑 Python 校验器);screenshot 降级到
26
26
  * 包内独立离线渲染器。只有上述 6 个必须另起一个 cardbuddy(sync / save / slice_upload 还需已登录
27
- * FinMall)。完整分档表见 README「MCP:把 card_* 工具挂给外部 AI agent」一节。
27
+ * 远端)。完整分档表见 README「MCP:把 card_* 工具挂给外部 AI agent」一节。
28
28
  */
29
29
  import fs from 'node:fs'
30
30
  import { pathToFileURL } from 'node:url'