cardbuddy 0.11.0 → 0.12.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.
Files changed (313) hide show
  1. package/README.md +46 -5
  2. package/dist/cli.js +51 -1
  3. package/dist/config.js +51 -16
  4. package/dist/core.js +2 -2
  5. package/dist/init.js +425 -0
  6. package/dist/preview-editor/assets/index-CHuGGIR3.js +276 -0
  7. package/dist/preview-editor/assets/{index-B4VZgNSK.css → index-CQScMhyg.css} +1 -1
  8. package/dist/preview-editor/index.html +2 -2
  9. package/dist/standalone.js +8 -0
  10. package/dist/vendored/mcp/client.mjs +537 -0
  11. package/dist/vendored/mcp/tools.mjs +268 -0
  12. package/dist/vendored/preview/assets/default-image.png +0 -0
  13. package/dist/{server-core → vendored/server/core}/ai-chat.js +82 -38
  14. package/dist/{server-core → vendored/server/core}/browser.js +1 -1
  15. package/dist/{server-core → vendored/server/core}/cardSave.js +8 -3
  16. package/dist/{server-core → vendored/server/core}/cardSync.js +6 -14
  17. package/dist/{server-core → vendored/server/core}/cardValidate.js +11 -8
  18. package/dist/{server-core → vendored/server/core}/index.js +5 -3
  19. package/dist/vendored/server/core/skillPaths.js +124 -0
  20. package/dist/{server-core → vendored/server/core}/sliceUpload.js +5 -8
  21. package/dist/vendored/skills/README.md +93 -0
  22. package/dist/vendored/skills/card-doctor/SKILL.md +52 -0
  23. package/dist/vendored/skills/card-skill-trainer/SKILL.md +312 -0
  24. package/dist/vendored/skills/card-skill-trainer/baselines/v3-r038n.json +43 -0
  25. package/dist/vendored/skills/card-skill-trainer/baselines/v3-r039n.json +47 -0
  26. package/dist/vendored/skills/card-skill-trainer/baselines/v3-r050n.json +48 -0
  27. package/dist/vendored/skills/card-skill-trainer/scripts/build_dataset.py +472 -0
  28. package/dist/vendored/skills/card-skill-trainer/scripts/build_sample.mjs +162 -0
  29. package/dist/vendored/skills/card-skill-trainer/scripts/diagnose_case.mjs +241 -0
  30. package/dist/vendored/skills/card-skill-trainer/scripts/lib/scoring.mjs +525 -0
  31. package/dist/vendored/skills/card-skill-trainer/scripts/round_diff.mjs +133 -0
  32. package/dist/vendored/skills/card-skill-trainer/scripts/run_round.mjs +1043 -0
  33. package/dist/vendored/skills/card-skill-trainer/scripts/score_round.mjs +195 -0
  34. package/dist/vendored/skills/card-skill-trainer/scripts/test_missing_slice.py +122 -0
  35. package/dist/vendored/skills/dsl-card-ai/SKILL.md +191 -0
  36. package/dist/vendored/skills/dsl-card-generator/SKILL.md +480 -0
  37. package/dist/vendored/skills/dsl-card-generator/config/render-contract.json +11 -0
  38. package/dist/vendored/skills/dsl-card-generator/references/amount_formatting.md +138 -0
  39. package/dist/vendored/skills/dsl-card-generator/references/card_index.json +1597 -0
  40. package/dist/vendored/skills/dsl-card-generator/references/card_templates.json +384 -0
  41. package/dist/vendored/skills/dsl-card-generator/references/card_to_summary.md +56 -0
  42. package/dist/vendored/skills/dsl-card-generator/references/component_rules.md +76 -0
  43. package/dist/vendored/skills/dsl-card-generator/references/component_specs.md +393 -0
  44. package/dist/vendored/skills/dsl-card-generator/references/dsl_structure.md +208 -0
  45. package/dist/vendored/skills/dsl-card-generator/references/event_patterns.md +287 -0
  46. package/dist/vendored/skills/dsl-card-generator/references/expression_engine.md +121 -0
  47. package/dist/vendored/skills/dsl-card-generator/references/field_name_dict.json +34 -0
  48. package/dist/vendored/skills/dsl-card-generator/references/field_naming.md +101 -0
  49. package/dist/vendored/skills/dsl-card-generator/references/generation_pitfalls.md +928 -0
  50. package/dist/vendored/skills/dsl-card-generator/references/handcrafted/README.md +69 -0
  51. package/dist/vendored/skills/dsl-card-generator/references/handcrafted/examples_index.json +2967 -0
  52. package/dist/vendored/skills/dsl-card-generator/references/handcrafted/patterns.json +2835 -0
  53. package/dist/vendored/skills/dsl-card-generator/references/handcrafted/recipes_v2.json +648 -0
  54. package/dist/vendored/skills/dsl-card-generator/references/handcrafted/recipes_v2_schema.md +295 -0
  55. package/dist/vendored/skills/dsl-card-generator/references/image_diff.md +48 -0
  56. package/dist/vendored/skills/dsl-card-generator/references/image_to_card.md +129 -0
  57. package/dist/vendored/skills/dsl-card-generator/references/ir-format.md +212 -0
  58. package/dist/vendored/skills/dsl-card-generator/references/message-center-pattern.md +149 -0
  59. package/dist/vendored/skills/dsl-card-generator/references/platform_jsapi.md +196 -0
  60. package/dist/vendored/skills/dsl-card-generator/references/previewer_contract.md +54 -0
  61. package/dist/vendored/skills/dsl-card-generator/references/quickref.md +197 -0
  62. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/absolute-badge.json +84 -0
  63. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/accordion-group-toggle.json +18 -0
  64. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/alertCard-pair.json +12 -0
  65. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/alertDialog-call.json +12 -0
  66. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-countdown.json +15 -0
  67. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-donut.json +15 -0
  68. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-gauge-score.json +11 -0
  69. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-radar.json +10 -0
  70. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-title-head.json +13 -0
  71. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/globalSet.json +12 -0
  72. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/label-col-modes.json +21 -0
  73. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/list-expand-collapse.json +17 -0
  74. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/money-format.json +11 -0
  75. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/opacity-switch.json +130 -0
  76. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/progress-bar.json +25 -0
  77. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/tab-billMode.json +15 -0
  78. package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/title-underline-overlay.json +21 -0
  79. package/dist/vendored/skills/dsl-card-generator/references/recipes.md +797 -0
  80. package/dist/vendored/skills/dsl-card-generator/references/rules.md +235 -0
  81. package/dist/vendored/skills/dsl-card-generator/references/slices_convention.md +177 -0
  82. package/dist/vendored/skills/dsl-card-generator/references/spec_to_schema_patterns.md +609 -0
  83. package/dist/vendored/skills/dsl-card-generator/references/ui_fidelity_rules.md +131 -0
  84. package/dist/vendored/skills/dsl-card-generator/scripts/add_component.mjs +118 -0
  85. package/dist/vendored/skills/dsl-card-generator/scripts/analyze_component_usage.mjs +153 -0
  86. package/dist/vendored/skills/dsl-card-generator/scripts/apply_opacity_pattern.mjs +343 -0
  87. package/dist/vendored/skills/dsl-card-generator/scripts/build_card_index.mjs +108 -0
  88. package/dist/vendored/skills/dsl-card-generator/scripts/build_card_templates.mjs +190 -0
  89. package/dist/vendored/skills/dsl-card-generator/scripts/check_fidelity.mjs +257 -0
  90. package/dist/vendored/skills/dsl-card-generator/scripts/check_magic_values.mjs +79 -0
  91. package/dist/vendored/skills/dsl-card-generator/scripts/crop_slices.mjs +98 -0
  92. package/dist/vendored/skills/dsl-card-generator/scripts/describe_card.mjs +265 -0
  93. package/dist/vendored/skills/dsl-card-generator/scripts/diff_bands.mjs +257 -0
  94. package/dist/vendored/skills/dsl-card-generator/scripts/diff_card.mjs +316 -0
  95. package/dist/vendored/skills/dsl-card-generator/scripts/expand_ir.mjs +873 -0
  96. package/dist/vendored/skills/dsl-card-generator/scripts/extract_handcrafted.py +1199 -0
  97. package/dist/vendored/skills/dsl-card-generator/scripts/extract_subtree.mjs +191 -0
  98. package/dist/vendored/skills/dsl-card-generator/scripts/generate_cards.mjs +389 -0
  99. package/dist/vendored/skills/dsl-card-generator/scripts/inventory_schemas.py +160 -0
  100. package/dist/vendored/skills/dsl-card-generator/scripts/iterate.mjs +700 -0
  101. package/dist/vendored/skills/dsl-card-generator/scripts/lib/design_image.mjs +56 -0
  102. package/dist/vendored/skills/dsl-card-generator/scripts/lib/design_sample.mjs +328 -0
  103. package/dist/vendored/skills/dsl-card-generator/scripts/lib/layout-tokens.mjs +79 -0
  104. package/dist/vendored/skills/dsl-card-generator/scripts/lib/paths.mjs +103 -0
  105. package/dist/vendored/skills/dsl-card-generator/scripts/lib/scaffold.mjs +575 -0
  106. package/dist/vendored/skills/dsl-card-generator/scripts/lib/slicePath.mjs +81 -0
  107. package/dist/vendored/skills/dsl-card-generator/scripts/lib/slice_dedupe.mjs +147 -0
  108. package/dist/vendored/skills/dsl-card-generator/scripts/lint_autofix.mjs +363 -0
  109. package/dist/vendored/skills/dsl-card-generator/scripts/lint_card.mjs +1399 -0
  110. package/dist/vendored/skills/dsl-card-generator/scripts/preflight.mjs +249 -0
  111. package/dist/vendored/skills/dsl-card-generator/scripts/register_card_template.mjs +208 -0
  112. package/dist/vendored/skills/dsl-card-generator/scripts/render_baseline.mjs +231 -0
  113. package/dist/vendored/skills/dsl-card-generator/scripts/render_card.mjs +801 -0
  114. package/dist/vendored/skills/dsl-card-generator/scripts/render_diff.mjs +239 -0
  115. package/dist/vendored/skills/dsl-card-generator/scripts/resolve_card_template.mjs +73 -0
  116. package/dist/vendored/skills/dsl-card-generator/scripts/route_input.mjs +447 -0
  117. package/dist/vendored/skills/dsl-card-generator/scripts/scaffold_card.mjs +81 -0
  118. package/dist/vendored/skills/dsl-card-generator/scripts/slices_normalize.mjs +316 -0
  119. package/dist/vendored/skills/dsl-card-generator/scripts/spec_audit.mjs +462 -0
  120. package/dist/vendored/skills/dsl-card-generator/scripts/spec_to_schema_v3.mjs +7735 -0
  121. package/dist/vendored/skills/dsl-card-generator/scripts/spec_tree.mjs +355 -0
  122. package/dist/vendored/skills/dsl-card-generator/scripts/validate_all_schemas.py +71 -0
  123. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/default-image-wzZYQ86K.png +0 -0
  124. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-C9k-07y7.css +1 -0
  125. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-oFRM4f4V.js +55 -0
  126. package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/svg-symbols-B2exBrAr.svg +118 -0
  127. package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/component-meta.json +2714 -0
  128. package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/directive-meta.json +40 -0
  129. package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/style-meta.json +1086 -0
  130. package/dist/vendored/{standalone.html → skills/dsl-card-generator/vendor/preview/standalone.html} +2 -1
  131. package/dist/vendored/skills/finmall-card-sync/SKILL.md +262 -0
  132. package/dist/vendored/skills/finmall-session-navigator/SKILL.md +169 -0
  133. package/dist/vendored/skills/finmall-session-navigator/scripts/finmall_login.mjs +882 -0
  134. package/dist/vendored/skills/finmall-session-navigator/scripts/package-lock.json +59 -0
  135. package/dist/vendored/skills/finmall-session-navigator/scripts/package.json +10 -0
  136. package/dist/vendored/skills/finmall-session-navigator/scripts/session-manager.mjs +96 -0
  137. package/dist/vendored/skills/shared/README.md +55 -0
  138. package/dist/vendored/skills/shared/auth-model.md +79 -0
  139. package/dist/vendored/skills/sketch-spec-to-card/SKILL.md +329 -0
  140. package/dist/vendored/skills/sketch-spec-to-card/references/boundary.json +14 -0
  141. package/dist/vendored/skills/sketch-spec-to-card/references/card_refs.json +13 -0
  142. package/dist/vendored/skills/sketch-spec-to-card/references/spec-schema.md +103 -0
  143. package/dist/vendored/skills/sketch-spec-to-card/scripts/build_prompt.py +797 -0
  144. package/dist/vendored/skills/sketch-spec-to-card/scripts/card_refs.py +94 -0
  145. package/dist/vendored/skills/sketch-spec-to-card/scripts/cluster_states.py +706 -0
  146. package/dist/vendored/skills/sketch-spec-to-card/scripts/parse_meaxure.py +1781 -0
  147. package/dist/vendored/skills/sketch-spec-to-card/scripts/png_utils.py +318 -0
  148. package/dist/vendored/skills/sketch-spec-to-card/scripts/vision.py +1118 -0
  149. package/dist/vendored/templates/helloCard/data.json +10 -0
  150. package/dist/vendored/templates/helloCard/schema.json +238 -0
  151. package/dist/vendored/tools/link-skills.mjs +485 -0
  152. package/package.json +2 -1
  153. package/dist/preview-editor/assets/index-jl4YJzKv.js +0 -180
  154. package/dist/vendored/App.vue +0 -2858
  155. package/dist/vendored/ansi.js +0 -185
  156. package/dist/vendored/assets/apple-touch-icon.png +0 -0
  157. package/dist/vendored/assets/default-image.png +0 -0
  158. package/dist/vendored/assets/favicon-16.png +0 -0
  159. package/dist/vendored/assets/favicon-32.png +0 -0
  160. package/dist/vendored/assets/site-icon.png +0 -0
  161. package/dist/vendored/assets/svgIcons/icons.svg +0 -87
  162. package/dist/vendored/assets/svgIcons/index.js +0 -39
  163. package/dist/vendored/components/AiSettings.vue +0 -392
  164. package/dist/vendored/components/AlertCardInstance.vue +0 -58
  165. package/dist/vendored/components/AlertCardLayer.vue +0 -59
  166. package/dist/vendored/components/ApiCallPanel.vue +0 -127
  167. package/dist/vendored/components/ApiPayloadTree.vue +0 -201
  168. package/dist/vendored/components/AppToast.vue +0 -37
  169. package/dist/vendored/components/CardGallery.vue +0 -291
  170. package/dist/vendored/components/CardPreview.vue +0 -72
  171. package/dist/vendored/components/CardSelect.vue +0 -206
  172. package/dist/vendored/components/ChatComposer.vue +0 -413
  173. package/dist/vendored/components/ChatMessage.vue +0 -383
  174. package/dist/vendored/components/ChatPanel.vue +0 -937
  175. package/dist/vendored/components/ComponentPalette.vue +0 -301
  176. package/dist/vendored/components/ConfirmDialog.vue +0 -54
  177. package/dist/vendored/components/DatePickerOverlay.vue +0 -345
  178. package/dist/vendored/components/DebugPanel.vue +0 -1734
  179. package/dist/vendored/components/DeviceOverlay.vue +0 -70
  180. package/dist/vendored/components/Dropdown.vue +0 -193
  181. package/dist/vendored/components/EventEditor.vue +0 -273
  182. package/dist/vendored/components/HoverGuides.vue +0 -122
  183. package/dist/vendored/components/JsonTree.vue +0 -547
  184. package/dist/vendored/components/LogValue.vue +0 -52
  185. package/dist/vendored/components/MarkdownBody.vue +0 -64
  186. package/dist/vendored/components/NewCardDialog.vue +0 -132
  187. package/dist/vendored/components/NodeInspector.vue +0 -295
  188. package/dist/vendored/components/NumberStepper.vue +0 -125
  189. package/dist/vendored/components/PickerOverlay.vue +0 -131
  190. package/dist/vendored/components/PropControl.vue +0 -245
  191. package/dist/vendored/components/PropTree.vue +0 -128
  192. package/dist/vendored/components/RemotePreview.vue +0 -173
  193. package/dist/vendored/components/SelectionOverlay.vue +0 -105
  194. package/dist/vendored/components/StructureTree.vue +0 -1002
  195. package/dist/vendored/components/Switch.vue +0 -38
  196. package/dist/vendored/components/setters/SetBgPosition.vue +0 -64
  197. package/dist/vendored/components/setters/SetBgSize.vue +0 -90
  198. package/dist/vendored/components/setters/SetCode.vue +0 -198
  199. package/dist/vendored/components/setters/SetColor.vue +0 -244
  200. package/dist/vendored/components/setters/SetCustomSelect.vue +0 -58
  201. package/dist/vendored/components/setters/SetExpr.vue +0 -107
  202. package/dist/vendored/components/setters/SetGradient.vue +0 -125
  203. package/dist/vendored/components/setters/SetGrid9.vue +0 -68
  204. package/dist/vendored/components/setters/SetIconSelect.vue +0 -67
  205. package/dist/vendored/components/setters/SetIfForm.vue +0 -61
  206. package/dist/vendored/components/setters/SetImage.vue +0 -43
  207. package/dist/vendored/components/setters/SetList.vue +0 -139
  208. package/dist/vendored/components/setters/SetNumber.vue +0 -118
  209. package/dist/vendored/components/setters/SetNumberStyle.vue +0 -113
  210. package/dist/vendored/components/setters/SetPadding.vue +0 -77
  211. package/dist/vendored/components/setters/SetSegment.vue +0 -160
  212. package/dist/vendored/components/setters/SetSelect.vue +0 -51
  213. package/dist/vendored/components/setters/SetSwitch.vue +0 -49
  214. package/dist/vendored/components/setters/SetText.vue +0 -52
  215. package/dist/vendored/components/setters/props.js +0 -23
  216. package/dist/vendored/fidelity/baseline-messageOverview.json +0 -87
  217. package/dist/vendored/fidelity/calibration.json +0 -29
  218. package/dist/vendored/fidelity/fidelity-messageOverview-after.html +0 -114
  219. package/dist/vendored/fidelity/fidelity-messageOverview-after.json +0 -272
  220. package/dist/vendored/fidelity/fidelity-messageOverview.html +0 -185
  221. package/dist/vendored/fidelity/fidelity-messageOverview.json +0 -336
  222. package/dist/vendored/fidelity/fidelity-messageOverview_v2.html +0 -262
  223. package/dist/vendored/fidelity/fidelity-messageOverview_v2.json +0 -502
  224. package/dist/vendored/fidelity/fidelity-messageOverview_v3.html +0 -201
  225. package/dist/vendored/fidelity/fidelity-messageOverview_v3.json +0 -417
  226. package/dist/vendored/fidelity/fidelity-messageOverview_visual.html +0 -125
  227. package/dist/vendored/fidelity/fidelity-messageOverview_visual.json +0 -338
  228. package/dist/vendored/index.html +0 -16
  229. package/dist/vendored/main.js +0 -37
  230. package/dist/vendored/runtime/ai-api.js +0 -165
  231. package/dist/vendored/runtime/alert-card.js +0 -125
  232. package/dist/vendored/runtime/app-toast.js +0 -33
  233. package/dist/vendored/runtime/clipboard-node.js +0 -78
  234. package/dist/vendored/runtime/clipboard.js +0 -29
  235. package/dist/vendored/runtime/event-model.js +0 -300
  236. package/dist/vendored/runtime/hoverGuide.js +0 -31
  237. package/dist/vendored/runtime/jsapi-mock.js +0 -256
  238. package/dist/vendored/runtime/markdown.js +0 -140
  239. package/dist/vendored/runtime/node-model.js +0 -217
  240. package/dist/vendored/skills/.manifest.json +0 -1101
  241. package/dist/vendored/standalone-main.js +0 -36
  242. package/dist/vendored/styles/ai-chat.css +0 -1850
  243. package/dist/vendored/styles/app.css +0 -3648
  244. package/dist/vendored/styles/card-gallery.css +0 -285
  245. package/dist/vendored/styles/card-select.css +0 -288
  246. package/dist/vendored/styles/components.css +0 -383
  247. package/dist/vendored/styles/dropdown.css +0 -324
  248. package/dist/vendored/styles/json-tree.css +0 -308
  249. package/dist/vendored/styles/node-inspector.css +0 -800
  250. package/dist/vendored/styles/setters.css +0 -1050
  251. package/dist/vendored/styles/standalone.css +0 -27
  252. package/dist/vendored/styles/structure-tree.css +0 -460
  253. /package/dist/vendored/{api.js → preview/api.js} +0 -0
  254. /package/dist/vendored/{assets → preview/assets}/svg-symbols.svg +0 -0
  255. /package/dist/vendored/{components → preview/components}/AbsoluteLayout.vue +0 -0
  256. /package/dist/vendored/{components → preview/components}/Button.vue +0 -0
  257. /package/dist/vendored/{components → preview/components}/Canvas.vue +0 -0
  258. /package/dist/vendored/{components → preview/components}/CheckGroup.vue +0 -0
  259. /package/dist/vendored/{components → preview/components}/Column.vue +0 -0
  260. /package/dist/vendored/{components → preview/components}/CustomPlaceholder.vue +0 -0
  261. /package/dist/vendored/{components → preview/components}/Divider.vue +0 -0
  262. /package/dist/vendored/{components → preview/components}/GridLayout.vue +0 -0
  263. /package/dist/vendored/{components → preview/components}/Icon.vue +0 -0
  264. /package/dist/vendored/{components → preview/components}/Image.vue +0 -0
  265. /package/dist/vendored/{components → preview/components}/Input.vue +0 -0
  266. /package/dist/vendored/{components → preview/components}/ListLayout.vue +0 -0
  267. /package/dist/vendored/{components → preview/components}/Map.vue +0 -0
  268. /package/dist/vendored/{components → preview/components}/MultiColumn.vue +0 -0
  269. /package/dist/vendored/{components → preview/components}/MultiText.vue +0 -0
  270. /package/dist/vendored/{components → preview/components}/ProgressSlider.vue +0 -0
  271. /package/dist/vendored/{components → preview/components}/RadioButton.vue +0 -0
  272. /package/dist/vendored/{components → preview/components}/RenderTree.vue +0 -0
  273. /package/dist/vendored/{components → preview/components}/Root.vue +0 -0
  274. /package/dist/vendored/{components → preview/components}/Row.vue +0 -0
  275. /package/dist/vendored/{components → preview/components}/SvgCode.vue +0 -0
  276. /package/dist/vendored/{components → preview/components}/SvgSymbols.vue +0 -0
  277. /package/dist/vendored/{components → preview/components}/Text.vue +0 -0
  278. /package/dist/vendored/{components → preview/components}/Video.vue +0 -0
  279. /package/dist/vendored/{components → preview/components}/ViewContainer.vue +0 -0
  280. /package/dist/vendored/{components → preview/components}/base.js +0 -0
  281. /package/dist/vendored/{components → preview/components}/icons.js +0 -0
  282. /package/dist/vendored/{components → preview/components}/index.js +0 -0
  283. /package/dist/vendored/{meta → preview/meta}/component-meta.json +0 -0
  284. /package/dist/vendored/{meta → preview/meta}/directive-meta.json +0 -0
  285. /package/dist/vendored/{meta → preview/meta}/style-meta.json +0 -0
  286. /package/dist/vendored/{runtime → preview/runtime}/StyleParser.js +0 -0
  287. /package/dist/vendored/{runtime → preview/runtime}/adapter.js +0 -0
  288. /package/dist/vendored/{runtime → preview/runtime}/assets.js +0 -0
  289. /package/dist/vendored/{runtime → preview/runtime}/canvas-context.js +0 -0
  290. /package/dist/vendored/{runtime → preview/runtime}/card-runtime.js +0 -0
  291. /package/dist/vendored/{runtime → preview/runtime}/evaluate.js +0 -0
  292. /package/dist/vendored/{runtime → preview/runtime}/property.js +0 -0
  293. /package/dist/vendored/{runtime → preview/runtime}/selectionOverlay.js +0 -0
  294. /package/dist/vendored/{runtime → preview/runtime}/toPreview.js +0 -0
  295. /package/dist/{server-core → vendored/server/core}/assetProxy.js +0 -0
  296. /package/dist/{server-core → vendored/server/core}/bbox.js +0 -0
  297. /package/dist/{server-core → vendored/server/core}/buildDataFromSchema.js +0 -0
  298. /package/dist/{server-core → vendored/server/core}/cardFiles.js +0 -0
  299. /package/dist/{server-core → vendored/server/core}/cardHistory.js +0 -0
  300. /package/dist/{server-core → vendored/server/core}/cardImage.js +0 -0
  301. /package/dist/{server-core → vendored/server/core}/cardImportMeta.js +0 -0
  302. /package/dist/{server-core → vendored/server/core}/cardListCache.js +0 -0
  303. /package/dist/{server-core → vendored/server/core}/cardOpenFolder.js +0 -0
  304. /package/dist/{server-core → vendored/server/core}/cardSidecar.js +0 -0
  305. /package/dist/{server-core → vendored/server/core}/codeBridge.js +0 -0
  306. /package/dist/{server-core → vendored/server/core}/logStream.js +0 -0
  307. /package/dist/{server-core → vendored/server/core}/logger.js +0 -0
  308. /package/dist/{server-core → vendored/server/core}/nodeModels.js +0 -0
  309. /package/dist/{server-core → vendored/server/core}/renderStatus.js +0 -0
  310. /package/dist/{server-core → vendored/server/core}/screenshot.js +0 -0
  311. /package/dist/{server-core → vendored/server/core}/sliceStatic.js +0 -0
  312. /package/dist/vendored/{meta → skills/dsl-card-generator/vendor/preview/meta}/action-meta.json +0 -0
  313. /package/dist/{server-core/_vendor → vendored/tools}/finmall-env.mjs +0 -0
package/README.md CHANGED
@@ -30,6 +30,37 @@ cardbuddy
30
30
 
31
31
  ---
32
32
 
33
+ ## 初始化一个新工程(`cardbuddy init`)
34
+
35
+ 没有现成的卡片工程时,一条命令生成「立刻能开发调试」的最小实例:
36
+
37
+ ```bash
38
+ npx cardbuddy init my-cards # 目录不存在会自动创建;省略目录名则在当前目录初始化
39
+ cd my-cards
40
+ npm install
41
+ npm run preview # 本地服务(8787) + 内置编辑器前端 + 自动开浏览器
42
+ ```
43
+
44
+ 生成内容(**增量、幂等**:已存在的文件一律保留,加 `--force` 才覆盖):
45
+
46
+ | 产物 | 说明 |
47
+ | --- | --- |
48
+ | `src/cards/` | 卡片目录骨架(后端与编辑器的约定落点) |
49
+ | `src/cards/helloCard/` | 示例卡(`schema.json` + `data.json`,构建期已过校验)——起服务即有卡可看可改 |
50
+ | `skills/` | 随包发布的全量技能库:校验 / 同步 / 保存 / 切图上传 / 建卡管线脚本与工作流文档 |
51
+ | `tools/link-skills.mjs` | `npm run link:skills`:把 `skills/` 链到 Codex / Claude / WorkBuddy 等 AI 工具的项目级技能目录 |
52
+ | `.env.cb` | 共享配置模板(端口、FinMall 远端基址、AI 网关占位;密钥请写 `.env.cb.local`) |
53
+ | `package.json` | 声明 `cardbuddy` 依赖 + `dev` / `start` / `preview` / `link:skills` 脚本 |
54
+ | `.gitignore` | 只追加缺失条目:`node_modules/`、`.env.cb.local`、`.cache/`、`skills/*/.local/` 等 |
55
+ | `README.md` | 上手说明 |
56
+
57
+ 参数:`--force` 覆盖已存在文件 · `--dry-run` 只报告不落盘 · `--no-skills` 不释放技能库(项目已自带)· `--no-sample` 不生成示例卡。
58
+
59
+ > 本命令取代了 dsl-card 仓库里旧的 `npm run gen:demo`:脚手架随 npm 包发布,无需检出仓库,
60
+ > 且版本天然与所装 `cardbuddy` 一致(旧方案生成的 `demo/` 会随主干漂移)。
61
+
62
+ ---
63
+
33
64
  ## Preview 模式(本地独立调试)
34
65
 
35
66
  ```bash
@@ -151,14 +182,24 @@ DSL_DEV_HTTPS=1 cardbuddy
151
182
 
152
183
  ---
153
184
 
154
- ## 依赖:FinMall skill
185
+ ## 依赖:技能库(skills/)
186
+
187
+ 远端读写与校验类端点(`/__sync` `/__save` `/__preview` `/__validate`)以及 AI 助手的
188
+ `skill_read` / `skill_exec`,都通过动态 `import` / 子进程调用技能脚本:
189
+
190
+ - `finmall-card-sync`(sync / save / preview / 切图上传)
191
+ - `dsl-card-generator`(validate / autofix / 建卡管线)
192
+ - `finmall-session-navigator`(FinMall 登录会话;凭据落 `skills/finmall-session-navigator/.local/credentials.json`)
155
193
 
156
- 远端读写相关端点(`/__sync` `/__save` `/__preview` `/__validate`)通过动态 `import` 调用你项目里的 skill 脚本:
194
+ **解析顺序**(见 `server/core/skillPaths.js`,全后端统一):
157
195
 
158
- - `finmall-card-sync`(sync / save / preview)
159
- - `dsl-card-generator`(validate)
196
+ 1. `DSL_SKILLS_ROOT` 显式指定;
197
+ 2. 项目根 `skills/` —— 跑过 `cardbuddy init` 即有,**推荐**:可写(凭据、审计、缓存都落在项目内)、随项目走;
198
+ 3. 包内快照 `dist/vendored/skills/` —— 随 npm 包发布的全量技能库,没跑 `init` 也能只读兜底。
160
199
 
161
- 请确保项目根下存在 `skills/finmall-card-sync/scripts/api_batch_sync.mjs` 等,且 `.env.cb` 已配置 `FINMALL_BASE_URL` 等。
200
+ > 远端能力(同步 / 保存 / 切图上传)还需要 `.env.cb` 里的 `FINMALL_BASE_URL` 等配置,
201
+ > 以及 `playwright`(本包 optionalDependency,默认会装)与一次 FinMall 登录。
202
+ > 写入类文件(凭据等)**永远落项目根**,不会写进 `node_modules`。
162
203
 
163
204
  ---
164
205
 
package/dist/cli.js CHANGED
@@ -14,6 +14,8 @@ import dotenv from 'dotenv'
14
14
  import chalk from 'chalk'
15
15
  import { startServer } from './standalone.js'
16
16
  import { installLogMirror } from './core.js'
17
+ import { loadConfig } from './config.js'
18
+ import { runInit } from './init.js'
17
19
 
18
20
  // 尽早镜像 stdout/stderr:让启动期日志(配置解析、端口占用提示等)也进入
19
21
  // 编辑器底部「服务日志」面板的环形缓冲。幂等,CARDBUDDY_STREAM_LOGS=0 时自动跳过。
@@ -44,12 +46,22 @@ if (args.includes('--help') || args.includes('-h')) {
44
46
 
45
47
  用法:
46
48
  cardbuddy [--preview] [--help]
49
+ cardbuddy init [目标目录] [--force] [--dry-run] [--no-skills] [--no-sample]
50
+
51
+ 命令:
52
+ init 生成「立刻能开发调试」的卡片工程最小实例(增量、幂等,不覆盖已存在文件):
53
+ src/cards/ + 示例卡 helloCard + 全量 skills/(校验/同步/建卡管线脚本与文档)
54
+ + .env.cb 模板 + package.json + tools/link-skills.mjs + .gitignore + README.md
55
+ --force 覆盖已存在的文件
56
+ --dry-run 只报告将要做的事,不落盘
57
+ --no-skills 不释放技能库(项目已自带 skills/ 时)
58
+ --no-sample 不生成示例卡
59
+ 典型用法:npx cardbuddy init my-cards && cd my-cards && npm i && npm run preview
47
60
 
48
61
  选项:
49
62
  --preview, -p 同时托管打包后的编辑器前端(本地预览),替代线上地址,并自动打开浏览器
50
63
  旧名 --offline / -o 仍可用,已废弃
51
64
  --help, -h 显示帮助
52
- init 初始化项目骨架:创建 src/cards/ 目录,释放内置技能脚本到 skills/,生成模板 .env.cb
53
65
 
54
66
  环境变量:
55
67
  DSL_CARD_ROOT 卡片仓库根目录(默认 cwd)
@@ -67,6 +79,44 @@ if (args.includes('--help') || args.includes('-h')) {
67
79
  process.exit(0)
68
80
  }
69
81
 
82
+ // 未知子命令:非 flag 的位置参数只有 init 合法(避免 `cardbuddy inti` 静默起服务)
83
+ const subCommand = args.find((a) => !a.startsWith('-'))
84
+ if (subCommand && subCommand !== 'init') {
85
+ console.error(srcTag + chalk.red(`未知命令:${subCommand}(可用:init;或直接启动服务,见 --help)`))
86
+ process.exit(1)
87
+ }
88
+
89
+ // init 子命令:只脚手架,不起服务(端口 / TLS / Vite 全都不碰)。
90
+ // 顶层 await + process.exit:确保脚手架跑完就退出,绝不落到下面的启动路径。
91
+ if (subCommand === 'init') {
92
+ const rest = args.slice(args.indexOf('init') + 1)
93
+ const flags = new Set(rest.filter((a) => a.startsWith('-')))
94
+ const positional = rest.filter((a) => !a.startsWith('-'))
95
+ if (positional.length > 1) {
96
+ console.error(srcTag + chalk.red('init 只接受一个目标目录参数(收到:' + positional.join(' ') + ')'))
97
+ process.exit(1)
98
+ }
99
+ const knownFlags = ['--force', '--dry-run', '--no-skills', '--no-sample']
100
+ const unknown = [...flags].filter((f) => !knownFlags.includes(f))
101
+ if (unknown.length) {
102
+ console.error(srcTag + chalk.red(`init 不支持的参数:${unknown.join(' ')}(可用:${knownFlags.join(' ')})`))
103
+ process.exit(1)
104
+ }
105
+ try {
106
+ process.exit(await runInit({
107
+ targetDir: positional[0] || '.',
108
+ force: flags.has('--force'),
109
+ dryRun: flags.has('--dry-run'),
110
+ skipSkills: flags.has('--no-skills'),
111
+ skipSample: flags.has('--no-sample'),
112
+ config: loadConfig(),
113
+ }))
114
+ } catch (e) {
115
+ console.error(srcTag + chalk.red('init 失败:') + (e && e.stack ? e.stack : e))
116
+ process.exit(1)
117
+ }
118
+ }
119
+
70
120
  const previewFlag = args.includes('--preview') || args.includes('-p')
71
121
  const legacyOfflineFlag = args.includes('--offline') || args.includes('-o')
72
122
  if (legacyOfflineFlag) {
package/dist/config.js CHANGED
@@ -15,11 +15,34 @@ import { fileURLToPath } from 'node:url'
15
15
 
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url))
17
17
 
18
+ /**
19
+ * 取「真实环境变量」的值:排除 cli.js 用 dotenv 从 .env / .env.cb / .env.cb.local 灌进来的那份。
20
+ * 没有这层区分,工程里 .env.cb 写了 FINMALL_CARD_PORT=8787 时,命令行的
21
+ * `DSL_DEV_PORT=9000 cardbuddy` 会被文件值静默顶掉(实测踩过)——显式命令行覆盖必须赢。
22
+ * @param {Record<string,string|undefined>} env
23
+ * @param {string} key
24
+ * @returns {string}
25
+ */
26
+ function realEnvValue(env, key) {
27
+ const value = env[key]
28
+ if (value === undefined || value === '') return ''
29
+ const injected = globalThis.__cardbuddyDotenvInjected
30
+ return injected && injected[key] === value ? '' : String(value)
31
+ }
32
+
18
33
  export function loadConfig(env = process.env) {
19
34
  const root = env.DSL_CARD_ROOT
20
35
  ? path.resolve(env.DSL_CARD_ROOT)
21
36
  : process.cwd()
22
- const port = Number(env.FINMALL_CARD_PORT || env.DSL_DEV_PORT || 8787)
37
+ // 端口优先级:真实环境变量(DSL_DEV_PORT > FINMALL_CARD_PORT)> .env 文件值
38
+ // (FINMALL_CARD_PORT > DSL_DEV_PORT,文件层以 FINMALL_CARD_PORT 为单一真值)> 默认 8787。
39
+ const port = Number(
40
+ realEnvValue(env, 'DSL_DEV_PORT') ||
41
+ realEnvValue(env, 'FINMALL_CARD_PORT') ||
42
+ env.FINMALL_CARD_PORT ||
43
+ env.DSL_DEV_PORT ||
44
+ 8787
45
+ )
23
46
  const editorUrl = env.EDITOR_URL || 'http://127.0.0.1:5180'
24
47
  const https = env.DSL_DEV_HTTPS === '1' || env.DSL_DEV_HTTPS === 'true'
25
48
  const token = env.DSL_DEV_TOKEN || ''
@@ -41,9 +64,16 @@ export function loadConfig(env = process.env) {
41
64
  // 注入到本进程 env;缺省空串表示不回源(/minio 等只走占位图兜底)。
42
65
  const upstream = env.FINMALL_BASE_URL || ''
43
66
 
44
-
45
- const repoSkillsDir = path.resolve(process.cwd(), 'skills')
46
- const vendoredSkillsDir = path.resolve(__dirname, 'vendored', 'skills')
67
+ // 包内「迷你仓库快照」根:build.mjs 把 SSR 运行时、server/core、tools、mcp、全量 skills
68
+ // 按仓库原布局内联到 dist/vendored/ 下,使快照内的相对 import(如 ai-chat.js 的
69
+ // `../../mcp/tools.mjs`、client.mjs 的 `../server/core/*`)在发布态原样成立。
70
+ // - 源码运行(src/cli.js,__dirname=.../src):指向 .../src/vendored(不存在)→ 全部走仓库回退,
71
+ // 仓库内开发无需先 build。
72
+ // - 发布运行(dist/cli.js,__dirname=.../dist):指向 .../dist/vendored(build 产出)→ 真正自包含。
73
+ const vendorRoot = path.resolve(__dirname, 'vendored')
74
+ const vendoredSkillsDir = path.join(vendorRoot, 'skills')
75
+ // 项目自身的技能库(跑过 `cardbuddy init` 后由包内快照释放而来);仓库内开发即 <repo>/skills。
76
+ const projectSkillsDir = path.join(root, 'skills')
47
77
 
48
78
  return {
49
79
  root,
@@ -56,26 +86,31 @@ export function loadConfig(env = process.env) {
56
86
  previewRoot,
57
87
  upstream,
58
88
  portTakeover,
59
- // 包内 vendored 运行时快照(build 阶段从 preview/ 复制到 dist/vendored):SSR 端点
60
- // 所需的编辑器运行时(components/* + runtime/*)全量快照,使发布后无需消费者持有编辑器源码。
61
- // - 源码运行(src/cli.js,__dirname=.../src):此处指向 .../src/vendored(不存在)→
62
- // 走 repoPreviewDir 回退,仓库内开发无需先 build。
63
- // - 发布运行(dist/cli.js,__dirname=.../dist):此处指向 .../dist/vendored(build 产出)→
64
- // 命中 vendored,真正自包含。
65
- vendoredRuntimeDir: path.resolve(__dirname, 'vendored'),
89
+ // 迷你仓库快照根(发布态 = dist/vendored)
90
+ vendorRoot,
91
+ // 内嵌 Vite 的 SSR 根:build 阶段按「SSR 模块闭包」从 preview/ 精选复制(components/* +
92
+ // runtime/* + meta/* + 被引用的少量 assets + api.js),不含编辑器 UI(App.vue / styles /
93
+ // fidelity)—— 那些只存在于已构建好的 preview-editor 静态产物里。
94
+ vendoredRuntimeDir: path.join(vendorRoot, 'preview'),
66
95
  // 仓库内开发回退:从仓库根运行时(cwd=仓库根)能直接命中 preview/,无需先 build。
67
96
  repoPreviewDir: path.resolve(process.cwd(), 'preview'),
68
- // 包内 vendored 技能脚本(build 阶段从 skills/ 复制到 dist/vendored/skills):运行时回退
97
+ // 包内技能快照(build 阶段从仓库 skills/ 全量内联,排除 .local / node_modules / __pycache__):
98
+ // 既是运行时的只读回退,也是 `cardbuddy init` 释放到项目根的源。
69
99
  vendoredSkillsDir,
70
- // 仓库内 skills/ 目录(开发期直接命中)
71
- repoSkillsDir,
100
+ // 项目自身的 skills/ 目录(开发期即仓库 skills/;消费者项目由 init 释放)
101
+ projectSkillsDir,
72
102
  // 发布态包内自带的预览编辑器构建产物(build.mjs 从 ../../dist 复制到 dist/preview-editor)。
73
103
  previewEditorDir: path.resolve(__dirname, 'preview-editor'),
74
104
  // 兼容旧包布局(<= 0.5.x 的 dist/offline-editor):存在时作为回退,避免升级后 --preview 找不到前端。
75
105
  legacyOfflineEditorDir: path.resolve(__dirname, 'offline-editor'),
76
106
  // 仓库内开发回退:根目录 npm run build 的产物 dist/。
77
107
  repoDistDir: path.resolve(process.cwd(), 'dist'),
78
- // 技能脚本根目录:优先用户项目 skills/,否则回退包内 vendored
79
- skillsRoot: fs.existsSync(repoSkillsDir) ? repoSkillsDir : (fs.existsSync(vendoredSkillsDir) ? vendoredSkillsDir : null),
108
+ // 技能库根:项目内 skills/ 优先(可写、随项目走),否则回退包内快照(只读)。
109
+ // 与 server/core/skillPaths.js 的解析顺序一致,供 CLI / init 复用。
110
+ skillsRoot: fs.existsSync(projectSkillsDir)
111
+ ? projectSkillsDir
112
+ : fs.existsSync(vendoredSkillsDir)
113
+ ? vendoredSkillsDir
114
+ : null,
80
115
  }
81
116
  }
package/dist/core.js CHANGED
@@ -1,2 +1,2 @@
1
- // 发布态 core 桥:指向 build 阶段内联进 dist/server-core 的中间件(自包含)。
2
- export * from './server-core/index.js'
1
+ // 发布态 core 桥:指向构建期内联进 dist/vendored/server/core 的中间件(自包含)。
2
+ export * from './vendored/server/core/index.js'