@xiaobuyu/nodesign 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +156 -106
- package/bin/nodesign.js +0 -0
- package/package.json +1 -1
- package/server/api/README.md +45 -45
- package/server/api/_guard.js +75 -75
- package/server/api/admin.js +187 -187
- package/server/api/assets/docx-page.js +103 -103
- package/server/api/assets/helpers.js +42 -22
- package/server/api/assets/notes.js +194 -144
- package/server/api/assets.js +891 -896
- package/server/api/board.js +134 -57
- package/server/api/browse.js +138 -138
- package/server/api/canvas.js +444 -444
- package/server/api/chatai.js +324 -324
- package/server/api/exports/build-standalone.js +980 -980
- package/server/api/exports/cards.js +118 -118
- package/server/api/exports/docx-pdf.js +46 -46
- package/server/api/exports/export-page.js +142 -142
- package/server/api/exports/handoff.js +147 -147
- package/server/api/exports.js +690 -690
- package/server/api/instruction.js +75 -75
- package/server/api/me.js +116 -116
- package/server/api/memory.js +185 -185
- package/server/api/pending-changes.js +366 -366
- package/server/api/plugins.js +164 -164
- package/server/api/projects.js +220 -220
- package/server/api/publish.js +64 -64
- package/server/api/recent.js +73 -73
- package/server/api/sessions.js +589 -589
- package/server/api/skills.js +77 -77
- package/server/api/standalone-fit.js +168 -168
- package/server/api/turn-compose.js +180 -180
- package/server/api/turn-inflight.js +44 -44
- package/server/auth/README.md +17 -17
- package/server/auth/middleware.js +138 -138
- package/server/auth/origin-guard.js +71 -71
- package/server/auth/session.js +108 -108
- package/server/auth/tier.js +113 -113
- package/server/auth/users-store.js +348 -348
- package/server/edit/README.md +29 -29
- package/server/engine/README.md +113 -113
- package/server/engine/agent/agent-shared.js +550 -550
- package/server/engine/agent/auto-mode-default-hard-deny.txt +4 -4
- package/server/engine/agent/auto-mode-rules.js +78 -78
- package/server/engine/agent/context.js +418 -418
- package/server/engine/agent/events.js +465 -464
- package/server/engine/agent/hooks/canvas-validate.js +199 -199
- package/server/engine/agent/hooks/failure.js +120 -120
- package/server/engine/agent/hooks/file-events.js +75 -75
- package/server/engine/agent/hooks/lifecycle.js +233 -233
- package/server/engine/agent/hooks/post-canvas-focus.js +80 -80
- package/server/engine/agent/hooks/post-guidance.js +206 -206
- package/server/engine/agent/hooks/post-subagent-report.js +104 -104
- package/server/engine/agent/hooks/post-trim.js +58 -58
- package/server/engine/agent/hooks/pre-board-neighborhood.js +34 -34
- package/server/engine/agent/hooks/pre-defaults.js +84 -84
- package/server/engine/agent/hooks/pre-injectors.js +277 -277
- package/server/engine/agent/hooks/pre-performance-log-guard.js +78 -78
- package/server/engine/agent/hooks/pre-starter-files.js +61 -61
- package/server/engine/agent/hooks/pre-workspace-scope-guard.js +78 -78
- package/server/engine/agent/hooks/site-validate.js +94 -94
- package/server/engine/agent/hooks/tool-prompts.js +31 -31
- package/server/engine/agent/hooks/turn-state-memory.js +56 -56
- package/server/engine/agent/hooks/user-prompt-submit.js +258 -215
- package/server/engine/agent/hooks.js +354 -354
- package/server/engine/agent/init-contract.js +69 -69
- package/server/engine/agent/isolation.js +159 -159
- package/server/engine/agent/model-table.js +292 -292
- package/server/engine/agent/plugin-loader.js +266 -266
- package/server/engine/agent/prompts/nodesign-prelude.md +388 -336
- package/server/engine/agent/prompts/tools/ask-user-question-protocol.md +71 -71
- package/server/engine/agent/prompts/tools/direct-edit-protocol.md +98 -98
- package/server/engine/agent/prompts/tools/generate-image-cookbook.gemini-gateway.md +583 -583
- package/server/engine/agent/prompts/tools/generate-image-cookbook.md +483 -483
- package/server/engine/agent/prompts/tools/hybrid-reference.md +100 -100
- package/server/engine/agent/prompts/tools/paint-still-cookbook.md +270 -270
- package/server/engine/agent/prompts/tools/roll-film-cookbook.md +70 -70
- package/server/engine/agent/prompts/tools/site-reference.md +106 -106
- package/server/engine/agent/prompts/tools/tweaks-syntax.md +125 -125
- package/server/engine/agent/prompts/tools/vision-checker-dispatch.md +48 -48
- package/server/engine/agent/session-loop.js +1035 -1024
- package/server/engine/agent/session-model.js +164 -164
- package/server/engine/agent/skill.js +204 -204
- package/server/engine/agent/task-events.js +78 -78
- package/server/engine/agents/ds-extractor.md +132 -132
- package/server/engine/agents/explorer.md +190 -190
- package/server/engine/agents/index.js +230 -230
- package/server/engine/agents/schemas/design-system.json +156 -156
- package/server/engine/agents/schemas/tweak-schema.json +113 -113
- package/server/engine/agents/tweak-proposer.md +127 -127
- package/server/engine/agents/vision-checker.md +254 -254
- package/server/engine/browse/capture.js +422 -422
- package/server/engine/browse/card.js +137 -137
- package/server/engine/browse/handover.js +59 -59
- package/server/engine/browse/page-digest.js +119 -119
- package/server/engine/browse/refs.js +196 -196
- package/server/engine/browse/registry.js +307 -307
- package/server/engine/browse/screencast.js +170 -170
- package/server/engine/browse/state.js +121 -121
- package/server/engine/chatai/chat-log.js +79 -79
- package/server/engine/chatai/index.js +193 -193
- package/server/engine/chatai/openai-compat.js +152 -152
- package/server/engine/chatai/orchestrate.js +309 -309
- package/server/engine/chatai/perform.js +40 -40
- package/server/engine/chatai/summarize.js +79 -79
- package/server/engine/mcp/capability-gate.js +52 -52
- package/server/engine/mcp/index.js +351 -339
- package/server/engine/mcp/param-sanitizer.js +142 -142
- package/server/engine/mcp/tools/arrange-on-board.js +124 -124
- package/server/engine/mcp/tools/artifact-session.js +278 -278
- package/server/engine/mcp/tools/browse-computer.js +421 -421
- package/server/engine/mcp/tools/browse-find-batch.js +183 -183
- package/server/engine/mcp/tools/browse-screenshot.js +157 -157
- package/server/engine/mcp/tools/browse.js +480 -480
- package/server/engine/mcp/tools/build-docx.js +101 -101
- package/server/engine/mcp/tools/clear-pending-changes.js +99 -99
- package/server/engine/mcp/tools/create-on-board.js +152 -155
- package/server/engine/mcp/tools/crystallize-skill.js +168 -168
- package/server/engine/mcp/tools/edit-sketch.js +167 -0
- package/server/engine/mcp/tools/explain-style.js +237 -237
- package/server/engine/mcp/tools/export-handoff.js +133 -133
- package/server/engine/mcp/tools/expose-tweaks.js +149 -149
- package/server/engine/mcp/tools/generate-image.js +842 -842
- package/server/engine/mcp/tools/get-computed-styles.js +164 -164
- package/server/engine/mcp/tools/get-pending-changes.js +205 -205
- package/server/engine/mcp/tools/h3box-ssh.js +84 -84
- package/server/engine/mcp/tools/helpers/acquire-page.js +82 -82
- package/server/engine/mcp/tools/helpers/motion-lab.js +554 -554
- package/server/engine/mcp/tools/helpers/motion-scroll.js +112 -112
- package/server/engine/mcp/tools/helpers/perception-page.js +215 -215
- package/server/engine/mcp/tools/helpers/reference-download.js +103 -103
- package/server/engine/mcp/tools/helpers/rembg-bridge.py +80 -80
- package/server/engine/mcp/tools/helpers/shot-pipeline.js +280 -280
- package/server/engine/mcp/tools/highlight.js +68 -68
- package/server/engine/mcp/tools/list-pages.js +222 -222
- package/server/engine/mcp/tools/look-at-board.js +124 -0
- package/server/engine/mcp/tools/lookup-tags.js +59 -59
- package/server/engine/mcp/tools/navigate-to-page.js +60 -60
- package/server/engine/mcp/tools/organize-board.js +64 -64
- package/server/engine/mcp/tools/paint-still.js +434 -434
- package/server/engine/mcp/tools/pin-to-board.js +130 -130
- package/server/engine/mcp/tools/preview-deck.js +130 -130
- package/server/engine/mcp/tools/profile-scroll.js +305 -305
- package/server/engine/mcp/tools/publish-site.js +102 -102
- package/server/engine/mcp/tools/query-elements.js +195 -195
- package/server/engine/mcp/tools/read-board.js +190 -103
- package/server/engine/mcp/tools/read-document.js +93 -93
- package/server/engine/mcp/tools/read-page.js +264 -264
- package/server/engine/mcp/tools/read-tavern-json.js +143 -143
- package/server/engine/mcp/tools/read-user-view.js +59 -0
- package/server/engine/mcp/tools/record-decision.js +140 -140
- package/server/engine/mcp/tools/relate-on-board.js +112 -110
- package/server/engine/mcp/tools/report-issue.js +115 -115
- package/server/engine/mcp/tools/roll-film.js +266 -266
- package/server/engine/mcp/tools/screenshot-docx.js +138 -138
- package/server/engine/mcp/tools/screenshot-url.js +195 -195
- package/server/engine/mcp/tools/screenshot.js +583 -583
- package/server/engine/mcp/tools/sketch-on-board.js +337 -0
- package/server/engine/mcp/tools/tier-gate.js +96 -96
- package/server/engine/mcp/tools/trace-motion.js +215 -215
- package/server/engine/mcp/tools/web-search.js +548 -548
- package/server/engine/mcp/tools/write-on-board.js +130 -0
- package/server/engine/motion/inventory.js +349 -349
- package/server/engine/perception/session.js +235 -235
- package/server/engine/plugins/nodesign/.claude-plugin/plugin.json +5 -5
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/SKILL.md +199 -192
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/canvas.template.html +667 -667
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/hybrid-grid.md +22 -22
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/image-led-cover.md +25 -25
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/portrait.md +23 -23
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/quote-backdrop.md +21 -21
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/section-divider.md +23 -23
- package/server/engine/plugins/nodesign/skills/deskskill-engine-mini/patterns/text-led.md +21 -21
- package/server/engine/plugins/nodesign/skills/docx-craft/SKILL.md +169 -162
- package/server/engine/plugins/nodesign/skills/docx-craft/references/token-schema.md +407 -407
- package/server/engine/plugins/nodesign/skills/docx-craft//346/226/207/346/241/243.template.json +80 -80
- package/server/engine/plugins/nodesign/skills/rp-craft/SKILL.md +235 -228
- package/server/engine/plugins/nodesign/skills/rp-craft/patterns//346/274/224/345/207/272/351/241/265-/346/234/200/345/260/217/345/256/236/347/216/260.html +78 -78
- package/server/engine/plugins/nodesign/skills/rp-craft//346/274/224/345/207/272.template.js +268 -268
- package/server/engine/plugins/nodesign/skills/site-craft/SKILL.md +330 -323
- package/server/engine/plugins/nodesign/skills/site-craft/patterns/build-lane.md +134 -134
- package/server/engine/plugins/nodesign/skills/site-craft/patterns/cutout-collage.md +61 -61
- package/server/engine/plugins/nodesign/skills/site-craft/patterns/mock-app.md +163 -163
- package/server/engine/plugins/nodesign/skills/site-craft/patterns/page-transitions.md +86 -86
- package/server/engine/runs/active-runs.js +698 -698
- package/server/engine/runs/board-tasklist.js +130 -0
- package/server/engine/runs/live-turn.js +252 -252
- package/server/engine/runs/store.js +364 -364
- package/server/engine/runs/turn-relay.js +217 -217
- package/server/engine/runtime/workspace.js +164 -164
- package/server/index.js +3 -0
- package/server/lib/artifact-file-path.js +80 -80
- package/server/lib/artifact-target.js +284 -284
- package/server/lib/asset-refs.js +239 -239
- package/server/lib/async-queue.js +104 -104
- package/server/lib/auto-relations.js +130 -130
- package/server/lib/binding-types.js +72 -60
- package/server/lib/board-graph-export.js +191 -0
- package/server/lib/board-groups.js +167 -0
- package/server/lib/board-hero.js +76 -0
- package/server/lib/board-kind-sizes.js +85 -62
- package/server/lib/board-relations.js +133 -133
- package/server/lib/browse-proxy.js +180 -180
- package/server/lib/canvas-id.js +36 -36
- package/server/lib/chalk.js +121 -0
- package/server/lib/cover.js +227 -227
- package/server/lib/danbooru-tags.js +291 -291
- package/server/lib/doc-extract.js +156 -156
- package/server/lib/docx/build-from-source.js +260 -260
- package/server/lib/docx/build.js +490 -490
- package/server/lib/docx/dump-styles.js +287 -287
- package/server/lib/docx/fonts/nodesign-cjk.conf +164 -164
- package/server/lib/docx/merge-runs.js +129 -129
- package/server/lib/docx/numbering.js +218 -218
- package/server/lib/docx/order.js +152 -152
- package/server/lib/docx/rawzip.js +172 -172
- package/server/lib/docx/render.js +92 -92
- package/server/lib/docx/text-lint.js +225 -225
- package/server/lib/docx/tokens.js +335 -335
- package/server/lib/docx/units.js +29 -29
- package/server/lib/docx/xml.js +291 -291
- package/server/lib/docx-pages.js +187 -187
- package/server/lib/export-collect.js +289 -289
- package/server/lib/export-package.js +210 -210
- package/server/lib/html-srcset.js +145 -145
- package/server/lib/image-variant.js +460 -460
- package/server/lib/ingress/forward-openai-chat.js +305 -305
- package/server/lib/ingress/openai-chat.js +491 -491
- package/server/lib/ingress/session-notice.js +66 -66
- package/server/lib/ingress/session-routes.js +68 -68
- package/server/lib/ingress/slot-probe.js +130 -130
- package/server/lib/ingress/upstream-billing.js +52 -52
- package/server/lib/ingress/upstream-fail-streak.js +72 -72
- package/server/lib/ingress/upstream-truncation.js +48 -48
- package/server/lib/issues-store.js +182 -182
- package/server/lib/kinds/deck.js +72 -72
- package/server/lib/kinds/docx.js +283 -283
- package/server/lib/kinds/file-kinds.js +113 -113
- package/server/lib/kinds/index.js +202 -202
- package/server/lib/kinds/site.js +161 -161
- package/server/lib/model-ingress.js +543 -543
- package/server/lib/moderation.js +255 -255
- package/server/lib/notice-store.js +103 -103
- package/server/lib/plugin-install.js +104 -104
- package/server/lib/plugin-validator.js +721 -721
- package/server/lib/publish-store.js +115 -115
- package/server/lib/quick-summary.js +52 -52
- package/server/lib/quota.js +270 -270
- package/server/lib/rate-window.js +29 -29
- package/server/lib/reference-assets.js +92 -92
- package/server/lib/region-shot.js +135 -135
- package/server/lib/safe-path.js +73 -73
- package/server/lib/sdk-session.js +33 -33
- package/server/lib/showcase-store.js +92 -92
- package/server/lib/site-publish.js +465 -465
- package/server/lib/sketch-layout.js +277 -0
- package/server/lib/ssrf-guard.js +432 -432
- package/server/lib/task-scan.js +158 -158
- package/server/lib/tavern-json.js +154 -154
- package/server/lib/video-variant.js +237 -237
- package/server/lib/workspace-path.js +33 -33
- package/server/ops/fix-sdk-musl.mjs +40 -40
- package/server/ops/install-macos-fonts.sh +114 -114
- package/server/ops/macos-fonts.conf +336 -336
- package/server/ops/sandbox-shim/bwrap +57 -57
- package/server/projects/assets-summary.js +119 -119
- package/server/projects/auto-name.js +53 -53
- package/server/projects/board-limits.js +12 -0
- package/server/projects/board-sanitize.js +252 -0
- package/server/projects/board-store.js +507 -640
- package/server/projects/move-entry.js +103 -103
- package/server/projects/store.js +270 -270
- package/server/projects/ui-config.js +60 -54
- package/server/projects/viewpoint-store.js +78 -0
- package/server/projects/workspace-templates.js +53 -53
- package/server/projects/workspace.js +1025 -1025
- package/server/runtime/local-config.js +177 -177
- package/server/runtime/profile.js +72 -72
- package/server/services/rembg-service.py +334 -334
- package/server/shared/README.md +25 -25
- package/server/shared/deck.js +54 -54
- package/server/shared/time.js +49 -49
- package/server/style-pipeline/README.md +53 -53
- package/server/ws/broker.js +39 -36
- package/server/ws/browse-channel.js +177 -177
- package/server/ws/index.js +386 -386
- package/web/README.md +89 -89
- package/web/dist/assets/BrowserWindow-P_vIdh-G.js +11 -0
- package/web/dist/assets/{DeckWindow-4G0xX7P3.js → DeckWindow-BpLv5082.js} +3 -3
- package/web/dist/assets/{DocxWindow-BXQsoPkh.js → DocxWindow-DSAU1-tD.js} +4 -4
- package/web/dist/assets/MermaidBlock-DR1GikCv.js +313 -0
- package/web/dist/assets/SiteWindow-92uBuRRR.js +18 -0
- package/web/dist/assets/abnfDiagram-VCTEODGH-uA8Esix4.js +1 -0
- package/web/dist/assets/arc-D_khH_xN.js +1 -0
- package/web/dist/assets/architectureDiagram-5GKGNRK7-DydJHqOt.js +36 -0
- package/web/dist/assets/blockDiagram-NRAW4CY4-B7wBbKiW.js +129 -0
- package/web/dist/assets/c4Diagram-UCG6FXSJ-6mrH0x7Y.js +38 -0
- package/web/dist/assets/channel-DGkccMO1.js +1 -0
- package/web/dist/assets/chunk-2Q5K7J3B-Cuikho5Q.js +1 -0
- package/web/dist/assets/chunk-5VM5RSS4-3-KZ5AUz.js +15 -0
- package/web/dist/assets/chunk-F27PBJKO-Bkwq2gGU.js +1 -0
- package/web/dist/assets/chunk-G27WJ6UU-BLyQzdGE.js +231 -0
- package/web/dist/assets/chunk-JWPE2WC7-B7HxxQds.js +1 -0
- package/web/dist/assets/chunk-LCL6LL3I-CtXrnUwF.js +206 -0
- package/web/dist/assets/chunk-POPQ4Y6H-dxddZlXt.js +1 -0
- package/web/dist/assets/chunk-SVP7TREG-DpkmrgHn.js +88 -0
- package/web/dist/assets/chunk-XXDRQBXY-BwZ7RbpQ.js +1 -0
- package/web/dist/assets/classDiagram-DTDB5LWJ-BGscw3OD.js +1 -0
- package/web/dist/assets/classDiagram-v2-JRS7N3AN-BGscw3OD.js +1 -0
- package/web/dist/assets/cose-bilkent-JH36ORCC-DGFOsMUt.js +1 -0
- package/web/dist/assets/cynefin-OW5HDTMX-DUwn3ehS.js +178 -0
- package/web/dist/assets/cynefinDiagram-5FMLGOSQ-DlLAOZ9x.js +62 -0
- package/web/dist/assets/cytoscape.esm-BjAbmLdb.js +331 -0
- package/web/dist/assets/dagre-3AP2YEHR-CyourLfz.js +4 -0
- package/web/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/web/dist/assets/diagram-S7CK7UJ4-BTMbx2np.js +30 -0
- package/web/dist/assets/diagram-UQ7AKVKN-UK94_1-P.js +41 -0
- package/web/dist/assets/diagram-VSXAHHWV-C7zS-v9v.js +3 -0
- package/web/dist/assets/diagram-VX7I27RA-DKJRa6CK.js +24 -0
- package/web/dist/assets/diagram-Z3DM3KII-kUbAfGAp.js +24 -0
- package/web/dist/assets/ebnfDiagram-PWID7BFC-CVW16_vb.js +1 -0
- package/web/dist/assets/erDiagram-SSCWMZ5O-BRQMFQ5y.js +99 -0
- package/web/dist/assets/flowDiagram-A5DVABFB-S34LpLtK.js +168 -0
- package/web/dist/assets/ganttDiagram-EL5Y4UJY-BFiqk1-G.js +292 -0
- package/web/dist/assets/gitGraphDiagram-WWUBYQGX-LZsrdyyv.js +106 -0
- package/web/dist/assets/index-GAamh1p4.js +2152 -0
- package/web/dist/assets/infoDiagram-RXCK75RN-0DvN6KIp.js +2 -0
- package/web/dist/assets/init-Gi6I4Gst.js +1 -0
- package/web/dist/assets/ishikawaDiagram-5VMMS53U-CaY3A-Bx.js +70 -0
- package/web/dist/assets/journeyDiagram-EYS64GPL-BBeiaCrj.js +139 -0
- package/web/dist/assets/kanban-definition-3QL26DDD-ux42DRXQ.js +89 -0
- package/web/dist/assets/layout-CnXiF_NB.js +1 -0
- package/web/dist/assets/linear-BMW0u6G6.js +1 -0
- package/web/dist/assets/mindmap-definition-FBJOCRG2-hUxSpdKn.js +96 -0
- package/web/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/web/dist/assets/pegDiagram-XKGWAZYB-aCaQPH0w.js +1 -0
- package/web/dist/assets/{pending-edit-apply-DTjo2geW.js → pending-edit-apply-AcdOQ9Ij.js} +6 -6
- package/web/dist/assets/pieDiagram-E7YTZNPT-CmOEZ8zg.js +39 -0
- package/web/dist/assets/quadrantDiagram-AXDQQJYC-VW6fAhsV.js +7 -0
- package/web/dist/assets/railroadDiagram-O6MQD6OU-CKJ7Ba5K.js +1 -0
- package/web/dist/assets/requirementDiagram-EFPCY7ZU-pNGkq9Vw.js +84 -0
- package/web/dist/assets/{rotate-cw-LMT3x1Zj.js → rotate-cw-KAfChbGV.js} +1 -1
- package/web/dist/assets/sankeyDiagram-P5KCCOFB-BIMmDTfZ.js +40 -0
- package/web/dist/assets/sequenceDiagram-WJ2MYXX4-BBW7wzKY.js +162 -0
- package/web/dist/assets/sizeCapture-X5ZJPWSS-DdkXmLYR.js +1 -0
- package/web/dist/assets/{square-dashed-mouse-pointer-CBoAkfhi.js → square-dashed-mouse-pointer-CDUlhUP7.js} +1 -1
- package/web/dist/assets/stateDiagram-HBIQ2CUA-W313Uz16.js +1 -0
- package/web/dist/assets/stateDiagram-v2-4QOOHH4V-DDhJBZzf.js +1 -0
- package/web/dist/assets/swimlanes-XN3QIQJK-C29TL26K.js +1 -0
- package/web/dist/assets/swimlanesDiagram-VK2B7HYN-BfN-Xdmu.js +8 -0
- package/web/dist/assets/timeline-definition-24CTP7MA-CF0JMObX.js +120 -0
- package/web/dist/assets/vennDiagram-4TSXK5OY-DrDFsaH3.js +34 -0
- package/web/dist/assets/wardleyDiagram-VM6X3IG4-CVrnRIS_.js +78 -0
- package/web/dist/assets/xychartDiagram-S5SC5T6Z-BvkN1zsT.js +7 -0
- package/web/dist/index.html +17 -17
- package/web/dist/assets/BrowserWindow-Dc7J7CYc.js +0 -11
- package/web/dist/assets/SiteWindow-D6eS-2gM.js +0 -18
- package/web/dist/assets/index-Cbl3ATvp.js +0 -2125
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* server/projects/viewpoint-store.js —— 用户视点(2026-08-23 黑板)
|
|
3
|
+
*
|
|
4
|
+
* 服务端在这之前对「用户此刻看着哪里」一无所知:相机在哪、哪扇窗开着、选中了
|
|
5
|
+
* 谁,全在前端。agent 于是只能猜「这个」「这里」指什么。前端按节流上报一份
|
|
6
|
+
* 视点,这里存**每个项目最近一份**(进程内存,不落盘 —— 它是"此刻",重启即作废)。
|
|
7
|
+
*
|
|
8
|
+
* 读者:read_board(小地图画视口框 + 列视口里有什么)、UserPromptSubmit 注入
|
|
9
|
+
* (只报变化)、read_user_view 工具。
|
|
10
|
+
*
|
|
11
|
+
* 只存最近一份而不是按用户存:一个项目同时几个人看是例外不是常态,而 agent
|
|
12
|
+
* 要的是"跟它说话的那个人在看哪"——发消息的人上一拍上报的视点就是它。
|
|
13
|
+
* 写入带 userId,以后要拆按用户拆读法就行。
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const TTL_MS = 10 * 60 * 1000; // 十分钟没上报就当离开了
|
|
17
|
+
const store = new Map(); // pid → viewpoint
|
|
18
|
+
|
|
19
|
+
function num(v, min, max) {
|
|
20
|
+
const n = Number(v);
|
|
21
|
+
return Number.isFinite(n) ? Math.min(max, Math.max(min, n)) : null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function sanitizeViewpoint(raw, userId) {
|
|
25
|
+
if (!raw || typeof raw !== 'object') return null;
|
|
26
|
+
const cam = raw.camera && typeof raw.camera === 'object' ? raw.camera : null;
|
|
27
|
+
const camera = cam ? {
|
|
28
|
+
x: num(cam.x, -1e6, 1e6), y: num(cam.y, -1e6, 1e6),
|
|
29
|
+
w: num(cam.w, 1, 1e5), h: num(cam.h, 1, 1e5),
|
|
30
|
+
} : null;
|
|
31
|
+
if (camera && Object.values(camera).some(v => v === null)) return null;
|
|
32
|
+
const str = (v, n) => (typeof v === 'string' && v.length <= n ? v : null);
|
|
33
|
+
return {
|
|
34
|
+
userId: userId || null,
|
|
35
|
+
camera,
|
|
36
|
+
zoom: num(raw.zoom, 0.01, 100),
|
|
37
|
+
layer: str(raw.layer, 300) || '',
|
|
38
|
+
openWindow: str(raw.openWindow, 300),
|
|
39
|
+
openPage: str(raw.openPage, 120),
|
|
40
|
+
selected: Array.isArray(raw.selected) ? raw.selected.filter(s => typeof s === 'string' && s.length <= 300).slice(0, 24) : [],
|
|
41
|
+
at: Date.now(),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function setViewpoint(pid, raw, userId = null) {
|
|
46
|
+
const v = sanitizeViewpoint(raw, userId);
|
|
47
|
+
if (!v) return null;
|
|
48
|
+
store.set(pid, v);
|
|
49
|
+
return v;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function getViewpoint(pid) {
|
|
53
|
+
const v = store.get(pid);
|
|
54
|
+
if (!v) return null;
|
|
55
|
+
if (Date.now() - v.at > TTL_MS) { store.delete(pid); return null; }
|
|
56
|
+
return v;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** 一行人话(注入/工具共用一份措辞)。rects 可选:给了就报视口里有什么 */
|
|
60
|
+
export function describeViewpoint(v, rects = null) {
|
|
61
|
+
if (!v) return null;
|
|
62
|
+
const bits = [];
|
|
63
|
+
if (v.layer) bits.push(`在文件夹「${v.layer}」里`);
|
|
64
|
+
if (v.camera) {
|
|
65
|
+
bits.push(`视口 (${Math.round(v.camera.x)},${Math.round(v.camera.y)}) ${Math.round(v.camera.w)}x${Math.round(v.camera.h)}${v.zoom ? ` 缩放 ${Number(v.zoom).toFixed(2)}` : ''}`);
|
|
66
|
+
if (rects) {
|
|
67
|
+
const c = v.camera;
|
|
68
|
+
const inside = rects.filter(r => !(r.x + r.w < c.x || r.x > c.x + c.w || r.y + r.h < c.y || r.y > c.y + c.h)).map(r => r.id);
|
|
69
|
+
if (inside.length) bits.push(`视口里有 ${inside.length} 件:${inside.slice(0, 10).join('、')}${inside.length > 10 ? ' 等' : ''}`);
|
|
70
|
+
else bits.push('视口里是空地');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (v.openWindow) bits.push(`开着窗:${v.openWindow}${v.openPage ? `(${v.openPage})` : ''}`);
|
|
74
|
+
if (v.selected?.length) bits.push(`选中:${v.selected.slice(0, 8).join('、')}${v.selected.length > 8 ? ' 等' : ''}`);
|
|
75
|
+
return bits.join(';') || null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function _resetViewpoints() { store.clear(); }
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 新工作区的起手模板(2026-08-15 从 workspace.js 拆出 —— 行数棘轮;
|
|
3
|
-
* 这几坨是纯数据,跟工作区的逻辑没有耦合)。
|
|
4
|
-
*
|
|
5
|
-
* ⚠️ DEFAULT_GITIGNORE 是**按行合并**进已有项目的(workspace.js 的
|
|
6
|
-
* ensureGitignore),所以往里加一行,全站老项目下次开会话都会补上。
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export const DEFAULT_GITIGNORE = `node_modules/
|
|
10
|
-
.DS_Store
|
|
11
|
-
*.log
|
|
12
|
-
.tmp/
|
|
13
|
-
# SDK 转录:一个会话一个 jsonl,一轮几百 KB,不进项目历史
|
|
14
|
-
.claude/projects/
|
|
15
|
-
# 会话私档(压缩摘要 / plan 弧)——属于对话不属于产物
|
|
16
|
-
.nd/
|
|
17
|
-
# generate_image 产物 — 通常很大且能从 spec.json 的 prompt 重生
|
|
18
|
-
assets/generated/
|
|
19
|
-
# 参考素材(web-search 下载的图 + browser_capture 从参照站带回来的)—— 同理:
|
|
20
|
-
# 大、可再取、而且不是"你做出了什么"。⚠️ 2026-08-18 加这条时线上已有 8 个项目
|
|
21
|
-
# 共 205 文件 / 76MB references 全被 track 进了 per-project git(.git 最大 95M)。
|
|
22
|
-
# 这条只管新写入;存量要清得手动 git rm --cached(没做,列进欠账)。
|
|
23
|
-
assets/references/
|
|
24
|
-
# 画布布局 —— 属于"你怎么摆的",不属于"你做出了什么"。
|
|
25
|
-
# 进历史的坏处是具体的:每拖一次卡就弄脏工作区,而且 revertWorkspace
|
|
26
|
-
# 会连着把画布布局一起回退(卡片弹回旧位置、清掉的死 id 复活)。
|
|
27
|
-
board.json
|
|
28
|
-
# 演出记录(RP)—— 用户的台词是隐私不是产物:不进项目历史,回滚也不该动它。
|
|
29
|
-
# 顺带一层防误食:Grep 走 ripgrep,默认跳过被 gitignore 的文件。
|
|
30
|
-
对话.jsonl
|
|
31
|
-
摘要.json
|
|
32
|
-
`;
|
|
33
|
-
|
|
34
|
-
export const DEFAULT_SPEC_JSON = JSON.stringify(
|
|
35
|
-
{ version: '0.1', meta: {}, designTokens: {}, outline: [] },
|
|
36
|
-
null, 2,
|
|
37
|
-
) + '\n';
|
|
38
|
-
|
|
39
|
-
export const DEFAULT_CLAUDE_MD = `# Project Instructions
|
|
40
|
-
|
|
41
|
-
This file is read by the AI agent at the start of every session as part of its
|
|
42
|
-
system prompt. Write project-specific guidance here — design intent,
|
|
43
|
-
constraints, vocabulary, must-do / must-not-do.
|
|
44
|
-
|
|
45
|
-
The agent will see this verbatim. Keep it concise and actionable.
|
|
46
|
-
|
|
47
|
-
## Examples
|
|
48
|
-
- Design tone: minimal, editorial, generous whitespace
|
|
49
|
-
- Hard constraints: never use red as a primary color
|
|
50
|
-
- Vocabulary: refer to the user as "the team"
|
|
51
|
-
|
|
52
|
-
(Edit this file from the NoDesign UI — the agent picks up changes on next session.)
|
|
53
|
-
`;
|
|
1
|
+
/**
|
|
2
|
+
* 新工作区的起手模板(2026-08-15 从 workspace.js 拆出 —— 行数棘轮;
|
|
3
|
+
* 这几坨是纯数据,跟工作区的逻辑没有耦合)。
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ DEFAULT_GITIGNORE 是**按行合并**进已有项目的(workspace.js 的
|
|
6
|
+
* ensureGitignore),所以往里加一行,全站老项目下次开会话都会补上。
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const DEFAULT_GITIGNORE = `node_modules/
|
|
10
|
+
.DS_Store
|
|
11
|
+
*.log
|
|
12
|
+
.tmp/
|
|
13
|
+
# SDK 转录:一个会话一个 jsonl,一轮几百 KB,不进项目历史
|
|
14
|
+
.claude/projects/
|
|
15
|
+
# 会话私档(压缩摘要 / plan 弧)——属于对话不属于产物
|
|
16
|
+
.nd/
|
|
17
|
+
# generate_image 产物 — 通常很大且能从 spec.json 的 prompt 重生
|
|
18
|
+
assets/generated/
|
|
19
|
+
# 参考素材(web-search 下载的图 + browser_capture 从参照站带回来的)—— 同理:
|
|
20
|
+
# 大、可再取、而且不是"你做出了什么"。⚠️ 2026-08-18 加这条时线上已有 8 个项目
|
|
21
|
+
# 共 205 文件 / 76MB references 全被 track 进了 per-project git(.git 最大 95M)。
|
|
22
|
+
# 这条只管新写入;存量要清得手动 git rm --cached(没做,列进欠账)。
|
|
23
|
+
assets/references/
|
|
24
|
+
# 画布布局 —— 属于"你怎么摆的",不属于"你做出了什么"。
|
|
25
|
+
# 进历史的坏处是具体的:每拖一次卡就弄脏工作区,而且 revertWorkspace
|
|
26
|
+
# 会连着把画布布局一起回退(卡片弹回旧位置、清掉的死 id 复活)。
|
|
27
|
+
board.json
|
|
28
|
+
# 演出记录(RP)—— 用户的台词是隐私不是产物:不进项目历史,回滚也不该动它。
|
|
29
|
+
# 顺带一层防误食:Grep 走 ripgrep,默认跳过被 gitignore 的文件。
|
|
30
|
+
对话.jsonl
|
|
31
|
+
摘要.json
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
export const DEFAULT_SPEC_JSON = JSON.stringify(
|
|
35
|
+
{ version: '0.1', meta: {}, designTokens: {}, outline: [] },
|
|
36
|
+
null, 2,
|
|
37
|
+
) + '\n';
|
|
38
|
+
|
|
39
|
+
export const DEFAULT_CLAUDE_MD = `# Project Instructions
|
|
40
|
+
|
|
41
|
+
This file is read by the AI agent at the start of every session as part of its
|
|
42
|
+
system prompt. Write project-specific guidance here — design intent,
|
|
43
|
+
constraints, vocabulary, must-do / must-not-do.
|
|
44
|
+
|
|
45
|
+
The agent will see this verbatim. Keep it concise and actionable.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
- Design tone: minimal, editorial, generous whitespace
|
|
49
|
+
- Hard constraints: never use red as a primary color
|
|
50
|
+
- Vocabulary: refer to the user as "the team"
|
|
51
|
+
|
|
52
|
+
(Edit this file from the NoDesign UI — the agent picks up changes on next session.)
|
|
53
|
+
`;
|