@opengsd/gsd-pi 1.1.1-dev.b2556262 → 1.2.0-dev.844675c9
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/dist/project-sessions.js +4 -2
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +17 -9
- package/dist/resources/extensions/gsd/auto/contracts.js +8 -1
- package/dist/resources/extensions/gsd/auto/orchestrator.js +659 -57
- package/dist/resources/extensions/gsd/auto-prompts.js +110 -1
- package/dist/resources/extensions/gsd/auto-runtime-state.js +3 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +5 -0
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +29 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +24 -17
- package/dist/resources/extensions/gsd/auto.js +62 -464
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +4 -1
- package/dist/resources/extensions/gsd/debug-logger.js +10 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +7 -2
- package/dist/resources/extensions/gsd/guided-flow.js +2 -2
- package/dist/resources/extensions/gsd/markdown-renderer.js +31 -32
- package/dist/resources/extensions/gsd/mcp-filter.js +6 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +45 -0
- package/dist/resources/extensions/gsd/prompts/discuss.md +6 -7
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -5
- package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/research-milestone.md +2 -2
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
- package/dist/resources/extensions/gsd/schemas/parsers.js +6 -1
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +21 -1
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +169 -20
- package/dist/resources/extensions/gsd/user-input-boundary.js +42 -4
- package/dist/tsconfig.extensions.tsbuildinfo +1 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +8 -8
- package/dist/web/standalone/.next/server/chunks/5047.js +2 -0
- package/dist/web/standalone/.next/server/chunks/5124.js +1 -0
- package/dist/web/standalone/.next/server/chunks/8357.js +2 -2
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/container.js +26 -18
- package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +47 -14
- package/dist/web/standalone/node_modules/postcss/lib/declaration.js +4 -4
- package/dist/web/standalone/node_modules/postcss/lib/fromJSON.js +3 -3
- package/dist/web/standalone/node_modules/postcss/lib/input.js +54 -29
- package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +47 -37
- package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +26 -9
- package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +57 -55
- package/dist/web/standalone/node_modules/postcss/lib/node.js +99 -31
- package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/parser.js +10 -9
- package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
- package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +30 -11
- package/dist/web/standalone/node_modules/postcss/lib/processor.js +7 -7
- package/dist/web/standalone/node_modules/postcss/lib/result.js +5 -5
- package/dist/web/standalone/node_modules/postcss/lib/rule.js +6 -6
- package/dist/web/standalone/node_modules/postcss/lib/stringifier.js +69 -28
- package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +6 -2
- package/dist/web/standalone/node_modules/postcss/package.json +48 -48
- package/package.json +16 -11
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +0 -34
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +12 -46
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +11 -3
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/scripts/install/deps.js +10 -0
- package/scripts/link-workspace-packages.cjs +7 -40
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +18 -8
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +2 -2
- package/src/resources/extensions/gsd/auto/contracts.ts +8 -119
- package/src/resources/extensions/gsd/auto/orchestrator.ts +794 -58
- package/src/resources/extensions/gsd/auto-prompts.ts +114 -1
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -0
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +5 -0
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +33 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +24 -16
- package/src/resources/extensions/gsd/auto.ts +81 -500
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +4 -0
- package/src/resources/extensions/gsd/debug-logger.ts +11 -0
- package/src/resources/extensions/gsd/doctor-proactive.ts +8 -2
- package/src/resources/extensions/gsd/guided-flow.ts +2 -2
- package/src/resources/extensions/gsd/markdown-renderer.ts +38 -19
- package/src/resources/extensions/gsd/mcp-filter.ts +7 -0
- package/src/resources/extensions/gsd/native-git-bridge.ts +48 -0
- package/src/resources/extensions/gsd/prompts/discuss.md +6 -7
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -5
- package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/research-milestone.md +2 -2
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
- package/src/resources/extensions/gsd/schemas/parsers.ts +6 -1
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +31 -10
- package/src/resources/extensions/gsd/tests/artifact-db-drift-memo.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/auto-dispatch-baseline-harness.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +590 -855
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +38 -10
- package/src/resources/extensions/gsd/tests/debug-logger.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +64 -1
- package/src/resources/extensions/gsd/tests/integration/merge-strategy-regular.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/native-merge-regular.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +127 -0
- package/src/resources/extensions/gsd/tests/parse-project-milestone-bridge.test.ts +77 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +29 -2
- package/src/resources/extensions/gsd/tests/research-milestone-composer.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +19 -5
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +24 -0
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +15 -3
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +183 -21
- package/src/resources/extensions/gsd/user-input-boundary.ts +37 -5
- package/dist/web/standalone/.next/server/chunks/678.js +0 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +0 -213
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts +0 -28
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js +0 -249
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js +0 -797
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js.map +0 -1
- package/scripts/ensure-workspace-builds.cjs +0 -129
- /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → Qbr81pQ-pbQXP4bq2VXLv}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → Qbr81pQ-pbQXP4bq2VXLv}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-design-prototype.js","sourceRoot":"","sources":["../../../../../src/modes/interactive/components/__prototype__/transcript-design-prototype.ts"],"names":[],"mappings":"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","sourcesContent":["// PROTOTYPE — throwaway design explorations for chat/tool transcript layout.\n// Run: npm run prototype:tui-design [-- all|<id>]\n\nimport { alignRight, padRight, style, truncateToWidth, visibleWidth } from \"@gsd/pi-tui\";\nimport { theme, type ThemeColor } from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport type { StatusTone } from \"../transcript-design.js\";\nimport { buildTreePrefix } from \"../tree-render-utils.js\";\nimport {\n\tDENSITY_VARIANTS,\n\ttype DensityVariant,\n\tgetVariant as getDensityVariant,\n\tlineStats,\n\trenderSampleTranscript as renderDensitySample,\n} from \"./transcript-density-prototype.js\";\n\nexport { lineStats };\n\nexport interface DesignPrototype {\n\tid: string;\n\tlabel: string;\n\ttagline: string;\n\tinspiration: string;\n\trender: (width: number) => string[];\n}\n\n// ── Shared sample data (mirrors real session flow) ──────────────────────────\n\nconst USER_TEXT = \"tighten up the tool cards in the transcript\";\nconst USER_LABEL = \"YOU\";\n\nfunction headerLabel(text: string): string {\n\treturn text.toUpperCase();\n}\n\nfunction styledHeader(text: string, color: ThemeColor = \"borderAccent\"): string {\n\treturn theme.fg(color, theme.bold(headerLabel(text)));\n}\nconst ASSISTANT_TEXT =\n\t\"I'll kill the background servers and checkpoint the database before saving the assessment summary.\";\nconst COLLAPSED_TOOLS = [\n\t{ title: \"Background Shell\", target: \"bg_shell kill [87ad363a]\", status: \"success · 340ms\" },\n\t{ title: \"Background Shell\", target: \"bg_shell kill [87ad363a]\", status: \"success · 340ms\" },\n\t{ title: \"Background Shell\", target: \"bg_shell kill [87ad363a]\", status: \"success · 340ms\" },\n] as const;\n\ntype WorkItem =\n\t| { kind: \"rule\"; title: string; target?: string; status: string; tone?: StatusTone }\n\t| { kind: \"expanded\"; title: string; command: string; result: string; status: string; tone?: StatusTone }\n\t| { kind: \"body\"; title: string; lines: string[]; status: string; tone?: StatusTone };\n\n/** Post-assistant work sequence — used for connector prototypes. */\nconst SHELL_WORK: WorkItem[] = [\n\t...COLLAPSED_TOOLS.map(\n\t\t(t): WorkItem => ({\n\t\t\tkind: \"rule\",\n\t\t\ttitle: t.title,\n\t\t\ttarget: t.target,\n\t\t\tstatus: t.status,\n\t\t\ttone: \"success\",\n\t\t}),\n\t),\n\t{\n\t\tkind: \"expanded\",\n\t\ttitle: \"Background Shell\",\n\t\tcommand: \"bg_shell kill [87ad363a]\",\n\t\tresult: \"Killed 87ad363a python3 -m http.server 3005\",\n\t\tstatus: \"success · 340ms\",\n\t\ttone: \"success\",\n\t},\n];\n\nconst FINALIZE_WORK: WorkItem[] = [\n\t{\n\t\tkind: \"rule\",\n\t\ttitle: \"Save Summary\",\n\t\ttarget: \"summary_save ASSESSMENT M002/S02\",\n\t\tstatus: \"success · 120ms\",\n\t\ttone: \"success\",\n\t},\n\t{\n\t\tkind: \"body\",\n\t\ttitle: \"Checkpoint GSD Database\",\n\t\tlines: [\n\t\t\t\"WAL checkpoint complete — database is safe to stage with git.\",\n\t\t\t\"Checkpoint at .planning/state/gsd.sqlite-wal\",\n\t\t],\n\t\tstatus: \"success · 89ms\",\n\t\ttone: \"success\",\n\t},\n];\n\n/** Visual hierarchy for flow/connectors (body lines use spaces only — copy-clean). */\nconst FLOW_INDENT: { phase: number; work: number; body: number; bridge: number } = {\n\tphase: 2,\n\twork: 4,\n\tbody: 7,\n\tbridge: 6,\n};\n\nfunction indentSpaces(cols: number): string {\n\treturn cols > 0 ? \" \".repeat(cols) : \"\";\n}\n\nfunction indentLine(content: string, cols: number, width: number): string {\n\tif (cols <= 0) return padLine(content, width);\n\tconst budget = Math.max(1, width - cols);\n\treturn padLine(indentSpaces(cols) + truncateToWidth(content, budget, \"\"), width);\n}\n\n// ── Low-level helpers ───────────────────────────────────────────────────────\n\nfunction toneColor(tone: StatusTone): ThemeColor {\n\tswitch (tone) {\n\t\tcase \"running\":\n\t\t\treturn \"toolRunning\";\n\t\tcase \"success\":\n\t\t\treturn \"border\";\n\t\tcase \"error\":\n\t\t\treturn \"toolError\";\n\t\tcase \"warning\":\n\t\t\treturn \"warning\";\n\t\tcase \"muted\":\n\t\tdefault:\n\t\t\treturn \"toolMuted\";\n\t}\n}\n\nfunction padLine(line: string, width: number): string {\n\treturn padRight(truncateToWidth(line, width, \"\"), width);\n}\n\nfunction openRule(title: string, right: string, width: number, tone: ThemeColor, bottomRule = false): string[] {\n\tlet surface = style()\n\t\t.border(\"open\")\n\t\t.borderColor((text) => theme.fg(tone, text))\n\t\t.title(title);\n\tif (right) surface = surface.titleRight(right);\n\tif (!bottomRule) surface = surface.bottomRule(false);\n\treturn surface.render([], Math.max(20, width));\n}\n\nfunction openBlock(\n\tbody: string[],\n\twidth: number,\n\topts: { title: string; titleColor?: ThemeColor; titlePrefix?: string; right?: string; tone: StatusTone },\n\tbottomRule = false,\n): string[] {\n\tconst tc = toneColor(opts.tone);\n\tconst titleText = (opts.titlePrefix ?? \"\") + styledHeader(opts.title, opts.titleColor ?? \"borderAccent\");\n\tlet surface = style()\n\t\t.border(\"open\")\n\t\t.borderColor((text) => theme.fg(tc, text))\n\t\t.title(titleText);\n\tif (opts.right) surface = surface.titleRight(theme.fg(tc, opts.right));\n\tif (!bottomRule) surface = surface.bottomRule(false);\n\treturn surface.render(body, Math.max(20, width));\n}\n\nfunction statusDot(tone: StatusTone): string {\n\tconst color = tone === \"success\" ? \"success\" : tone === \"error\" ? \"error\" : tone === \"running\" ? \"toolRunning\" : \"dim\";\n\treturn theme.fg(color, \"●\");\n}\n\nfunction chip(label: string, color: ThemeColor = \"borderAccent\"): string {\n\treturn theme.fg(color, theme.bold(` ${headerLabel(label)} `));\n}\n\nfunction dimRule(width: number, fraction = 0.35): string[] {\n\tconst w = Math.max(12, Math.floor(width * fraction));\n\treturn [padLine(theme.fg(\"dim\", \"─\".repeat(w)), width)];\n}\n\n/** Connectors on rule/spine rows only — body lines use space indent (copy-clean). */\nfunction spineGapLine(width: number, indentCols: number = FLOW_INDENT.work): string {\n\treturn indentLine(theme.fg(\"dim\", \"│\"), indentCols, width);\n}\n\nfunction branchPrefix(isLast: boolean, indentCols: number = FLOW_INDENT.work): string {\n\treturn theme.fg(\"dim\", indentSpaces(indentCols) + (isLast ? \"└─ \" : \"├─ \"));\n}\n\nfunction prefixRuleLine(prefix: string, ruleLine: string, width: number): string {\n\tconst budget = Math.max(20, width - visibleWidth(prefix));\n\treturn padLine(prefix + truncateToWidth(ruleLine, budget, \"\"), width);\n}\n\nfunction renderIndentedWorkBlock(\n\trendered: string[],\n\twidth: number,\n\topts: { branchPrefix: string; bodyIndent: number },\n): string[] {\n\tif (rendered.length === 0) return [];\n\tconst out = [prefixRuleLine(opts.branchPrefix, rendered[0]!, width)];\n\tfor (let j = 1; j < rendered.length; j++) {\n\t\tout.push(indentLine(rendered[j]!, opts.bodyIndent, width));\n\t}\n\treturn out;\n}\n\nfunction indentOpenBodyLines(lines: string[], width: number, bodyIndent = FLOW_INDENT.body): string[] {\n\tif (lines.length <= 1) return lines;\n\treturn [lines[0]!, ...lines.slice(1).map((line) => indentLine(line.trimEnd(), bodyIndent, width))];\n}\n\nfunction renderCollapsedRuleLine(\n\ttitle: string,\n\ttarget: string | undefined,\n\tstatus: string,\n\twidth: number,\n\ttone: StatusTone,\n\tinnerWidth?: number,\n): string {\n\tconst w = innerWidth ?? width;\n\tconst tc = toneColor(tone);\n\tconst titleText = `${theme.fg(\"borderAccent\", headerLabel(title))}${target ? ` ${theme.fg(\"text\", target)}` : \"\"}`;\n\tconst right = theme.fg(tone === \"success\" ? \"success\" : tc, status);\n\treturn openRule(titleText, right, w, tc, false)[0]!;\n}\n\nfunction renderWorkItem(item: WorkItem, width: number, innerWidth?: number): string[] {\n\tconst w = innerWidth ?? width;\n\tconst tone = item.tone ?? \"success\";\n\tswitch (item.kind) {\n\t\tcase \"rule\":\n\t\t\treturn [renderCollapsedRuleLine(item.title, item.target, item.status, width, tone, w)];\n\t\tcase \"expanded\":\n\t\t\treturn openBlock(\n\t\t\t\t[theme.fg(\"dim\", item.command), `${theme.fg(\"success\", \"✓\")} ${item.result}`],\n\t\t\t\tw,\n\t\t\t\t{ title: item.title, right: item.status, tone },\n\t\t\t\tfalse,\n\t\t\t);\n\t\tcase \"body\":\n\t\t\treturn openBlock(\n\t\t\t\titem.lines.map((line, i) => (i === item.lines.length - 1 ? theme.fg(\"dim\", line) : line)),\n\t\t\t\tw,\n\t\t\t\t{ title: item.title, right: item.status, tone },\n\t\t\t\tfalse,\n\t\t\t);\n\t}\n}\n\nfunction renderUserTurn(width: number): string[] {\n\treturn openBlock([USER_TEXT], width, { title: USER_LABEL, titleColor: \"border\", tone: \"muted\" }, false);\n}\n\nfunction workflowBridgeLine(label: string, width: number): string {\n\tconst lead = theme.fg(\"borderAccent\", \" ╰─ \") + styledHeader(label, \"borderAccent\");\n\tconst fill = Math.max(4, width - visibleWidth(lead) - 2);\n\treturn padLine(lead + theme.fg(\"dim\", \" \" + \"─\".repeat(fill)), width);\n}\n\nfunction renderAssistantTurn(width: number, bridgeLabel?: string): string[] {\n\tconst out = openBlock([ASSISTANT_TEXT], width, {\n\t\ttitle: \"GSD\",\n\t\ttitleColor: \"borderAccent\",\n\t\tright: theme.fg(\"dim\", \"gpt-test · 1.2s\"),\n\t\ttone: \"success\",\n\t}, false);\n\tif (bridgeLabel) {\n\t\tout.push(workflowBridgeLine(bridgeLabel, width));\n\t}\n\treturn out;\n}\n\n/** Vertical spine + tree branch prefixes on rule rows; body lines indented under branch. */\nfunction renderConnectedWork(\n\titems: WorkItem[],\n\twidth: number,\n\topts: { workIndent?: number; bodyIndent?: number } = {},\n): string[] {\n\tconst workIndent = opts.workIndent ?? FLOW_INDENT.work;\n\tconst bodyIndent = opts.bodyIndent ?? FLOW_INDENT.body;\n\tconst innerWidth = Math.max(20, width - workIndent - 3);\n\tconst out: string[] = [];\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst isLast = i === items.length - 1;\n\t\tconst rendered = renderWorkItem(items[i]!, width, innerWidth);\n\t\tout.push(\n\t\t\t...renderIndentedWorkBlock(rendered, width, {\n\t\t\t\tbranchPrefix: theme.fg(\"dim\", indentSpaces(workIndent) + buildTreePrefix([], isLast, 1)),\n\t\t\t\tbodyIndent,\n\t\t\t}),\n\t\t);\n\t}\n\treturn out;\n}\n\n/** Continuous │ spine between rule rows; nested body content indented. */\nfunction renderSpineLinkedWork(\n\titems: WorkItem[],\n\twidth: number,\n\topts: { workIndent?: number; bodyIndent?: number } = {},\n): string[] {\n\tconst workIndent = opts.workIndent ?? FLOW_INDENT.work;\n\tconst bodyIndent = opts.bodyIndent ?? FLOW_INDENT.body;\n\tconst innerWidth = Math.max(20, width - workIndent - 3);\n\tconst out: string[] = [];\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst isLast = i === items.length - 1;\n\t\tif (i > 0) {\n\t\t\tout.push(spineGapLine(width, workIndent));\n\t\t}\n\t\tconst rendered = renderWorkItem(items[i]!, width, innerWidth);\n\t\tout.push(\n\t\t\t...renderIndentedWorkBlock(rendered, width, {\n\t\t\t\tbranchPrefix: branchPrefix(isLast, workIndent),\n\t\t\t\tbodyIndent,\n\t\t\t}),\n\t\t);\n\t}\n\treturn out;\n}\n\nfunction renderPhaseHeader(label: string, meta: string, width: number, indentCols: number = FLOW_INDENT.phase): string[] {\n\tconst innerWidth = Math.max(20, width - indentCols);\n\tconst title = styledHeader(label, \"borderAccent\");\n\tconst right = theme.fg(\"dim\", meta);\n\tconst rule = openRule(title, right, innerWidth, \"borderAccent\", false)[0]!;\n\treturn [indentLine(rule, indentCols, width)];\n}\n\n// ── Rethink: unified design system ───────────────────────────────────────────\n\ninterface WorkGroup {\n\tlabel: string;\n\tmeta: string;\n\titems: WorkItem[];\n\t/** Use ╰─ bridge from assistant instead of phase header rule */\n\tbridged?: boolean;\n}\n\nfunction renderCompactTurn(\n\trole: \"You\" | \"GSD\",\n\tbody: string,\n\twidth: number,\n\topts: { meta?: string; tone?: StatusTone; titleColor?: ThemeColor } = {},\n): string[] {\n\tconst titleColor = opts.titleColor ?? (role === \"You\" ? \"border\" : \"borderAccent\");\n\tconst displayRole = role === \"You\" ? USER_LABEL : headerLabel(role);\n\treturn openBlock([body], width, {\n\t\ttitle: displayRole,\n\t\ttitleColor,\n\t\tright: opts.meta ? theme.fg(\"dim\", opts.meta) : undefined,\n\t\ttone: opts.tone ?? (role === \"You\" ? \"muted\" : \"success\"),\n\t}, false);\n}\n\nfunction renderWorkGroup(group: WorkGroup, width: number): string[] {\n\tconst bridged = group.bridged ?? false;\n\tconst workIndent = bridged ? FLOW_INDENT.bridge : FLOW_INDENT.work;\n\tconst bodyIndent = workIndent + 3;\n\tconst out: string[] = [];\n\n\tif (bridged) {\n\t\tout.push(workflowBridgeLine(group.label, width));\n\t\tout.push(spineGapLine(width, workIndent));\n\t} else {\n\t\tout.push(...renderPhaseHeader(group.label, group.meta, width));\n\t\tout.push(spineGapLine(width, workIndent));\n\t}\n\tout.push(...renderSpineLinkedWork(group.items, width, { workIndent, bodyIndent }));\n\treturn out;\n}\n\n/** ★ Recommended — open turns, bridged work groups, spine-linked actions. */\nfunction renderGsdFlow(width: number): string[] {\n\treturn [\n\t\t...renderCompactTurn(\"You\", USER_TEXT, width),\n\t\t...renderCompactTurn(\"GSD\", ASSISTANT_TEXT, width, { meta: \"gpt-test · 1.2s\" }),\n\t\t...renderWorkGroup({\n\t\t\tlabel: \"shell cleanup\",\n\t\t\tmeta: \"4 actions · 1.4s\",\n\t\t\titems: SHELL_WORK.map((item) =>\n\t\t\t\titem.kind === \"expanded\"\n\t\t\t\t\t? { ...item, status: `${item.status} · ctrl+o collapse` }\n\t\t\t\t\t: { ...item, status: `${item.status} · ctrl+o expand` },\n\t\t\t),\n\t\t\tbridged: true,\n\t\t}, width),\n\t\t\"\",\n\t\t...renderWorkGroup({ label: \"finalize\", meta: \"2 actions · 209ms\", items: FINALIZE_WORK, bridged: true }, width),\n\t];\n}\n\n/** Document mode — Glamour-style sections, no tree connectors. */\nfunction renderGsdDocument(width: number): string[] {\n\tconst section = (title: string, meta: string, lines: string[], titleColor: ThemeColor = \"mdHeading\") => {\n\t\tconst headIndent = 0;\n\t\tconst bodyIndent = 2;\n\t\tconst listIndent = 4;\n\t\tconst out = [\n\t\t\tindentLine(styledHeader(title, titleColor), headIndent, width),\n\t\t\tindentLine(theme.fg(\"dim\", meta), bodyIndent, width),\n\t\t];\n\t\tfor (const line of lines) {\n\t\t\tout.push(indentLine(line, line.startsWith(\"•\") ? listIndent : bodyIndent, width));\n\t\t}\n\t\tout.push(\"\");\n\t\treturn out;\n\t};\n\n\treturn [\n\t\t...section(USER_LABEL, \"12:34:01\", [USER_TEXT], \"border\"),\n\t\t...section(\"GSD\", \"gpt-test · 1.2s\", [ASSISTANT_TEXT], \"borderAccent\"),\n\t\t...section(\n\t\t\t\"Shell cleanup\",\n\t\t\t\"4 actions · 1.4s\",\n\t\t\t[\n\t\t\t\t...COLLAPSED_TOOLS.map(\n\t\t\t\t\t(t) => `${theme.fg(\"mdListBullet\", \"•\")} ${t.target} ${theme.fg(\"success\", t.status)}`,\n\t\t\t\t),\n\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t\t\t],\n\t\t\t\"toolTitle\",\n\t\t),\n\t\t...section(\n\t\t\t\"Finalization\",\n\t\t\t\"2 actions · 209ms\",\n\t\t\t[\n\t\t\t\t`${theme.fg(\"success\", \"✓\")} ASSESSMENT M002/S02 saved`,\n\t\t\t\t\"WAL checkpoint complete — database is safe to stage with git.\",\n\t\t\t\ttheme.fg(\"dim\", \"Checkpoint at .planning/state/gsd.sqlite-wal\"),\n\t\t\t],\n\t\t\t\"customMessageLabel\",\n\t\t),\n\t];\n}\n\n/** Stream mode — minimal prompts, flat indented work list. */\nfunction renderGsdStream(width: number): string[] {\n\tconst prompt = (mark: string, text: string, color: ThemeColor = \"text\") =>\n\t\tpadLine(`${theme.fg(\"dim\", mark)} ${theme.fg(color, text)}`, width);\n\tconst workLine = (label: string, detail: string, status: string) =>\n\t\tindentLine(\n\t\t\t`${styledHeader(label, \"borderAccent\")} ${theme.fg(\"dim\", detail)} ${theme.fg(\"success\", status)}`,\n\t\t\tFLOW_INDENT.work,\n\t\t\twidth,\n\t\t);\n\n\treturn [\n\t\tprompt(\"›\", USER_TEXT, \"userMessageText\"),\n\t\tprompt(\"◆\", ASSISTANT_TEXT, \"assistantMessageText\"),\n\t\tindentLine(theme.fg(\"dim\", headerLabel(\"shell cleanup\")), FLOW_INDENT.work, width),\n\t\t...COLLAPSED_TOOLS.map((t) => workLine(t.title, t.target, t.status)),\n\t\tworkLine(\"Background Shell\", \"Killed 87ad363a python3 -m http.server 3005\", \"340ms\"),\n\t\t\"\",\n\t\tindentLine(theme.fg(\"dim\", headerLabel(\"finalize\")), FLOW_INDENT.work, width),\n\t\tworkLine(\"Save Summary\", \"ASSESSMENT M002/S02\", \"120ms\"),\n\t\tworkLine(\"Checkpoint\", \"WAL checkpoint complete\", \"89ms\"),\n\t];\n}\n\n/** Connected rail cards — matches GSD step-complete / auto-status-message.ts. */\nconst CONNECTED_INDENT = 4;\n\nfunction connectedRuleFill(width: number, indent = CONNECTED_INDENT): string {\n\treturn \"─\".repeat(Math.max(16, Math.min(40, width - indent - 1)));\n}\n\n/** Bridge from an indented user turn down to a left-pegged GSD turn. */\nfunction renderChatTurnBridge(width: number, fromIndent = CONNECTED_INDENT): string[] {\n\tconst bridge = indentSpaces(fromIndent + 2) + \"╰──────╮\";\n\treturn [padLine(theme.fg(\"borderAccent\", bridge), width)];\n}\n\nfunction renderConnectedCard(\n\twidth: number,\n\ttitle: string,\n\tbodyLines: string[],\n\topts: { indent?: number; titleRight?: string; railColor?: ThemeColor; titleColor?: ThemeColor } = {},\n): string[] {\n\tconst indent = opts.indent ?? CONNECTED_INDENT;\n\tconst prefix = indentSpaces(indent);\n\tconst railColor = opts.railColor ?? \"borderAccent\";\n\tconst rail = (text: string) => theme.fg(railColor, text);\n\tconst resolvedTitleColor =\n\t\topts.titleColor ??\n\t\t(title.includes(\"✕\") ? \"error\" : title.includes(\"✓\") ? \"success\" : railColor);\n\tconst titleStyled = theme.fg(resolvedTitleColor, theme.bold(headerLabel(title)));\n\tconst lead = prefix + rail(\"╭─ \") + titleStyled;\n\tlet topLine = lead;\n\tif (opts.titleRight) {\n\t\tconst fill = Math.max(4, width - visibleWidth(lead) - visibleWidth(opts.titleRight) - 1);\n\t\ttopLine = lead + rail(\" \" + \"─\".repeat(fill) + \" \") + opts.titleRight;\n\t}\n\tconst out = [padLine(topLine, width)];\n\tfor (const line of bodyLines) {\n\t\tout.push(padLine(prefix + \" \" + line, width));\n\t}\n\tout.push(padLine(prefix + rail(\"╰\" + connectedRuleFill(width, indent)), width));\n\treturn out;\n}\n\nfunction renderConnectedDetail(label: string, value: string): string {\n\treturn `${theme.fg(\"dim\", `${headerLabel(label)}:`)} ${theme.fg(\"accent\", value)}`;\n}\n\nfunction renderConnectedToolLine(target: string, status: string): string {\n\treturn `${theme.fg(\"text\", target)} ${theme.fg(\"success\", status)}`;\n}\n\n/** Connected rail applied to full transcript — the step-complete look you liked. */\nfunction renderGsdConnected(width: number): string[] {\n\tconst shellBody = [\n\t\t...COLLAPSED_TOOLS.map((t) => renderConnectedToolLine(t.target, t.status)),\n\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t];\n\n\treturn [\n\t\t...renderConnectedCard(width, USER_LABEL, [USER_TEXT], { railColor: \"border\", titleColor: \"border\" }),\n\t\t...renderChatTurnBridge(width),\n\t\t...renderConnectedCard(width, \"GSD\", [ASSISTANT_TEXT], {\n\t\t\tindent: 0,\n\t\t\ttitleRight: theme.fg(\"dim\", \"gpt-test · 1.2s\"),\n\t\t}),\n\t\t\"\",\n\t\t...renderConnectedCard(width, \"✓ Shell cleanup\", shellBody),\n\t\t\"\",\n\t\t...renderConnectedCard(width, \"✓ Finalization\", [\n\t\t\trenderConnectedDetail(\"Save Summary\", \"ASSESSMENT M002/S02 · success · 120ms\"),\n\t\t\trenderConnectedDetail(\"Checkpoint\", \"WAL checkpoint complete · 89ms\"),\n\t\t]),\n\t\t\"\",\n\t\t...renderConnectedCard(width, \"✓ GSD Step Complete\", [\n\t\t\trenderConnectedDetail(\"Completed\", \"planning M003-mx79kt/S01\"),\n\t\t]),\n\t];\n}\n\n// ── Design: current (re-export density baseline) ─────────────────────────────\n\nfunction renderCurrent(width: number): string[] {\n\treturn renderDensitySample(width, getDensityVariant(\"current\"));\n}\n\n// ── Design: open-unified (ADR-019 everywhere) ────────────────────────────────\n\nfunction renderOpenUnified(width: number): string[] {\n\tconst out: string[] = [];\n\tout.push(\n\t\t...openBlock([USER_TEXT], width, { title: USER_LABEL, titleColor: \"border\", tone: \"muted\" }, false),\n\t);\n\tout.push(\n\t\t...openBlock([ASSISTANT_TEXT], width, {\n\t\t\ttitle: \"GSD\",\n\t\t\tright: theme.fg(\"dim\", \"gpt-test · 1.2s\"),\n\t\t\ttone: \"success\",\n\t\t}, false),\n\t);\n\tfor (const tool of COLLAPSED_TOOLS) {\n\t\tconst title = `${theme.fg(\"borderAccent\", headerLabel(tool.title))} ${theme.fg(\"text\", tool.target)}`;\n\t\tconst right = theme.fg(\"success\", `${tool.status} · ctrl+o expand`);\n\t\tout.push(...openRule(title, right, width, \"border\", false).map((line) => indentLine(line, FLOW_INDENT.work, width)));\n\t}\n\tout.push(\n\t\t...indentOpenBodyLines(\n\t\t\topenBlock(\n\t\t\t\t[\n\t\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t\t\t\t],\n\t\t\t\twidth,\n\t\t\t\t{\n\t\t\t\t\ttitle: \"Background Shell\",\n\t\t\t\t\tright: theme.fg(\"success\", \"success · 340ms · ctrl+o collapse\"),\n\t\t\t\t\ttone: \"success\",\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t),\n\t\t\twidth,\n\t\t),\n\t);\n\tout.push(\n\t\t...openRule(\n\t\t\t`${theme.fg(\"borderAccent\", headerLabel(\"Save Summary\"))} ${theme.fg(\"text\", \"summary_save ASSESSMENT M002/S02\")}`,\n\t\t\ttheme.fg(\"success\", \"success · 120ms\"),\n\t\t\twidth,\n\t\t\t\"border\",\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...indentOpenBodyLines(\n\t\t\topenBlock(\n\t\t\t\t[\n\t\t\t\t\t\"WAL checkpoint complete — database is safe to stage with git.\",\n\t\t\t\t\ttheme.fg(\"dim\", \"Checkpoint at .planning/state/gsd.sqlite-wal\"),\n\t\t\t\t],\n\t\t\t\twidth,\n\t\t\t\t{ title: \"Checkpoint GSD Database\", right: \"success · 89ms\", tone: \"success\" },\n\t\t\t\tfalse,\n\t\t\t),\n\t\t\twidth,\n\t\t),\n\t);\n\treturn out;\n}\n\n// ── Design: glamour-flow (document / Glamour stylesheet) ─────────────────────\n\nfunction renderGlamourFlow(width: number): string[] {\n\tconst contentIndent = 2;\n\tconst listIndent = 4;\n\tconst heading = (text: string, color: ThemeColor = \"mdHeading\") => padLine(styledHeader(text, color), width);\n\tconst meta = (text: string) => indentLine(theme.fg(\"dim\", text), contentIndent, width);\n\tconst body = (text: string, indent = contentIndent) => indentLine(text, indent, width);\n\n\treturn [\n\t\theading(USER_LABEL, \"border\"),\n\t\tmeta(\"12:34:01\"),\n\t\tbody(USER_TEXT),\n\t\t\"\",\n\t\theading(\"GSD\", \"borderAccent\"),\n\t\tmeta(\"gpt-test · 1.2s\"),\n\t\tbody(ASSISTANT_TEXT),\n\t\t\"\",\n\t\theading(\"Background Shell\", \"toolTitle\"),\n\t\tmeta(\"3 actions · shell cleanup\"),\n\t\t...COLLAPSED_TOOLS.map((t) =>\n\t\t\tbody(`${theme.fg(\"mdListBullet\", \"•\")} ${t.target} ${theme.fg(\"success\", t.status)}`, listIndent),\n\t\t),\n\t\t\"\",\n\t\theading(\"Background Shell\", \"toolTitle\"),\n\t\tmeta(\"expanded · success · 340ms\"),\n\t\tbody(theme.fg(\"dim\", \"bg_shell kill [87ad363a]\"), listIndent),\n\t\tbody(`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`, listIndent),\n\t\t\"\",\n\t\theading(\"Save Summary\", \"toolTitle\"),\n\t\tbody(`${theme.fg(\"success\", \"✓\")} ASSESSMENT M002/S02 saved`, contentIndent),\n\t\t\"\",\n\t\theading(\"Checkpoint GSD Database\", \"customMessageLabel\"),\n\t\tmeta(\"success · 89ms\"),\n\t\tbody(\"WAL checkpoint complete — database is safe to stage with git.\", contentIndent),\n\t\tbody(theme.fg(\"dim\", \"Checkpoint at .planning/state/gsd.sqlite-wal\"), contentIndent),\n\t];\n}\n\n// ── Design: charm-minimal (Lip Gloss semantic badges) ────────────────────────\n\nfunction renderCharmMinimal(width: number): string[] {\n\tconst out: string[] = [];\n\tout.push(padLine(`${chip(USER_LABEL, \"border\")} ${USER_TEXT}`, width));\n\tout.push(padLine(`${chip(\"GSD\", \"borderAccent\")} ${ASSISTANT_TEXT}`, width));\n\tout.push(padLine(theme.fg(\"dim\", ` ${\"─\".repeat(Math.min(40, width - 4))}`), width));\n\tfor (const tool of COLLAPSED_TOOLS) {\n\t\tconst title = `${statusDot(\"success\")} ${styledHeader(tool.title, \"borderAccent\")} ${theme.fg(\"dim\", tool.target)}`;\n\t\tout.push(...openRule(title, theme.fg(\"success\", tool.status), width, \"border\", false));\n\t}\n\tout.push(\n\t\t...indentOpenBodyLines(\n\t\t\topenBlock(\n\t\t\t\t[\n\t\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t\t`${theme.fg(\"success\", \"✓\")} ${theme.fg(\"text\", \"Killed 87ad363a python3 -m http.server 3005\")}`,\n\t\t\t\t],\n\t\t\t\twidth,\n\t\t\t\t{\n\t\t\t\t\ttitle: \"Background Shell\",\n\t\t\t\t\ttitlePrefix: `${statusDot(\"success\")} `,\n\t\t\t\t\tright: theme.fg(\"success\", \"success · 340ms\"),\n\t\t\t\t\ttone: \"success\",\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t),\n\t\t\twidth,\n\t\t),\n\t);\n\tout.push(\n\t\t...openRule(\n\t\t\t`${statusDot(\"success\")} ${styledHeader(\"Save Summary\", \"borderAccent\")} ${theme.fg(\"dim\", \"M002/S02\")}`,\n\t\t\ttheme.fg(\"success\", \"120ms\"),\n\t\t\twidth,\n\t\t\t\"border\",\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\"WAL checkpoint complete — database is safe to stage with git.\"],\n\t\t\twidth,\n\t\t\t{\n\t\t\t\ttitle: \"Checkpoint\",\n\t\t\t\ttitlePrefix: `${statusDot(\"success\")} `,\n\t\t\t\ttitleColor: \"customMessageLabel\",\n\t\t\t\tright: theme.fg(\"success\", \"89ms\"),\n\t\t\t\ttone: \"success\",\n\t\t\t},\n\t\t\tfalse,\n\t\t),\n\t);\n\treturn out;\n}\n\n// ── Design: timeline (log stream) ────────────────────────────────────────────\n\nfunction renderTimeline(width: number): string[] {\n\tconst stamp = (t: string) => theme.fg(\"dim\", t);\n\tconst out: string[] = [];\n\tout.push(\n\t\t...openBlock([USER_TEXT], width, {\n\t\t\ttitle: USER_LABEL,\n\t\t\ttitleColor: \"border\",\n\t\t\tright: stamp(\"12:34:01\"),\n\t\t\ttone: \"muted\",\n\t\t}, false),\n\t);\n\tout.push(\n\t\t...openBlock([ASSISTANT_TEXT], width, {\n\t\t\ttitle: \"GSD\",\n\t\t\tright: stamp(\"12:34:02 · gpt-test\"),\n\t\t\ttone: \"success\",\n\t\t}, false),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\n\t\t\t\t...COLLAPSED_TOOLS.map(\n\t\t\t\t\t(t, i) =>\n\t\t\t\t\t\t`${stamp(String(12 + i).padStart(2, \"0\") + \":34:0\" + (3 + i))} ${t.target} ${theme.fg(\"success\", t.status)}`,\n\t\t\t\t),\n\t\t\t],\n\t\t\twidth,\n\t\t\t{\n\t\t\t\ttitle: \"Phase · Shell cleanup\",\n\t\t\t\tright: stamp(\"3 actions · 1.02s\"),\n\t\t\t\ttone: \"success\",\n\t\t\t},\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\n\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t\t\t],\n\t\t\twidth,\n\t\t\t{\n\t\t\t\ttitle: \"Background Shell\",\n\t\t\t\tright: stamp(\"12:34:06 · expanded\"),\n\t\t\t\ttone: \"success\",\n\t\t\t},\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openRule(\n\t\t\t`${theme.fg(\"borderAccent\", headerLabel(\"Save Summary\"))} ${theme.fg(\"text\", \"ASSESSMENT M002/S02\")}`,\n\t\t\tstamp(\"12:34:07 · 120ms\"),\n\t\t\twidth,\n\t\t\t\"border\",\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\"WAL checkpoint complete — database is safe to stage with git.\"],\n\t\t\twidth,\n\t\t\t{ title: \"Checkpoint GSD Database\", right: stamp(\"12:34:08 · 89ms\"), tone: \"success\" },\n\t\t\tfalse,\n\t\t),\n\t);\n\treturn out;\n}\n\n// ── Design: phase-rollup (batch repetitive tools) ────────────────────────────\n\nfunction renderPhaseRollup(width: number): string[] {\n\tconst out: string[] = [];\n\tout.push(\n\t\t...openBlock([USER_TEXT], width, { title: USER_LABEL, titleColor: \"border\", tone: \"muted\" }, false),\n\t);\n\tout.push(\n\t\t...openBlock([ASSISTANT_TEXT], width, {\n\t\t\ttitle: \"GSD\",\n\t\t\tright: theme.fg(\"dim\", \"gpt-test · 1.2s\"),\n\t\t\ttone: \"success\",\n\t\t}, false),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\tCOLLAPSED_TOOLS.map((t) =>\n\t\t\t\talignRight(t.target, theme.fg(\"success\", t.status), Math.max(20, width - FLOW_INDENT.body)),\n\t\t\t),\n\t\t\twidth,\n\t\t\t{\n\t\t\t\ttitle: \"Shell cleanup\",\n\t\t\t\tright: theme.fg(\"success\", \"3 actions · 1.02s · ctrl+o expand\"),\n\t\t\t\ttone: \"success\",\n\t\t\t},\n\t\t\tfalse,\n\t\t).map((line, i) => (i === 0 ? line : indentLine(line.trimEnd(), FLOW_INDENT.body, width))),\n\t);\n\tout.push(\n\t\t...indentOpenBodyLines(\n\t\t\topenBlock(\n\t\t\t\t[\n\t\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t\t\t\t],\n\t\t\t\twidth,\n\t\t\t\t{\n\t\t\t\t\ttitle: \"Background Shell\",\n\t\t\t\t\tright: theme.fg(\"success\", \"success · 340ms\"),\n\t\t\t\t\ttone: \"success\",\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t),\n\t\t\twidth,\n\t\t),\n\t);\n\tout.push(\n\t\t...openRule(\n\t\t\t`${theme.fg(\"borderAccent\", headerLabel(\"Save Summary\"))} ${theme.fg(\"text\", \"ASSESSMENT M002/S02\")}`,\n\t\t\ttheme.fg(\"success\", \"success · 120ms\"),\n\t\t\twidth,\n\t\t\t\"border\",\n\t\t\tfalse,\n\t\t).map((line) => indentLine(line, FLOW_INDENT.work, width)),\n\t);\n\tout.push(\n\t\t...indentOpenBodyLines(\n\t\t\topenBlock(\n\t\t\t\t[\n\t\t\t\t\t\"WAL checkpoint complete — database is safe to stage with git.\",\n\t\t\t\t\ttheme.fg(\"dim\", \".planning/state/gsd.sqlite-wal\"),\n\t\t\t\t],\n\t\t\t\twidth,\n\t\t\t\t{ title: \"Checkpoint GSD Database\", right: \"success · 89ms\", tone: \"success\" },\n\t\t\t\tfalse,\n\t\t\t),\n\t\t\twidth,\n\t\t),\n\t);\n\treturn out;\n}\n\n// ── Design: whisper (ultra-minimal) ──────────────────────────────────────────\n\nfunction renderWhisper(width: number): string[] {\n\tconst prompt = (p: string, text: string) =>\n\t\tpadLine(`${theme.fg(\"dim\", p)} ${theme.fg(\"text\", text)}`, width);\n\tconst tool = (label: string, detail: string, status: string) =>\n\t\tpadLine(`${theme.fg(\"dim\", \" \")}${styledHeader(label, \"borderAccent\")} ${theme.fg(\"muted\", detail)} ${theme.fg(\"success\", status)}`, width);\n\n\treturn [\n\t\tprompt(\"›\", USER_TEXT),\n\t\t...dimRule(width, 0.25),\n\t\tprompt(\"◆\", ASSISTANT_TEXT),\n\t\t...dimRule(width, 0.25),\n\t\tpadLine(theme.fg(\"dim\", ` ${headerLabel(\"tools\")}`), width),\n\t\t...COLLAPSED_TOOLS.map((t) => tool(t.title, t.target, t.status)),\n\t\ttool(\"Background Shell\", \"Killed 87ad363a python3 -m http.server 3005\", \"340ms\"),\n\t\ttool(\"Save Summary\", \"ASSESSMENT M002/S02\", \"120ms\"),\n\t\ttool(\"Checkpoint\", \"WAL checkpoint complete\", \"89ms\"),\n\t];\n}\n\n// ── Design: flow connectors (linked work sets) ───────────────────────────────\n\nfunction renderFlowTree(width: number): string[] {\n\treturn [\n\t\t...renderUserTurn(width),\n\t\t...renderAssistantTurn(width),\n\t\t...renderConnectedWork(SHELL_WORK, width),\n\t\tindentLine(theme.fg(\"dim\", \"─\".repeat(Math.min(28, width - FLOW_INDENT.work - 4))), FLOW_INDENT.work, width),\n\t\t...renderConnectedWork(FINALIZE_WORK, width),\n\t];\n}\n\nfunction renderFlowSpine(width: number): string[] {\n\treturn [\n\t\t...renderUserTurn(width),\n\t\t...renderAssistantTurn(width),\n\t\t...renderSpineLinkedWork(SHELL_WORK, width),\n\t\t\"\",\n\t\t...renderPhaseHeader(\"Finalization\", \"2 actions\", width),\n\t\tspineGapLine(width, FLOW_INDENT.work),\n\t\t...renderSpineLinkedWork(FINALIZE_WORK, width),\n\t];\n}\n\nfunction renderFlowBridge(width: number): string[] {\n\tconst bridged = { workIndent: FLOW_INDENT.bridge, bodyIndent: FLOW_INDENT.bridge + 3 };\n\treturn [\n\t\t...renderUserTurn(width),\n\t\t...renderAssistantTurn(width, \"shell cleanup\"),\n\t\tspineGapLine(width, FLOW_INDENT.bridge),\n\t\t...renderSpineLinkedWork(SHELL_WORK, width, bridged),\n\t\t\"\",\n\t\tworkflowBridgeLine(\"finalize\", width),\n\t\tspineGapLine(width, FLOW_INDENT.bridge),\n\t\t...renderSpineLinkedWork(FINALIZE_WORK, width, bridged),\n\t];\n}\n\nfunction renderFlowPhases(width: number): string[] {\n\treturn [\n\t\t...renderUserTurn(width),\n\t\t...renderAssistantTurn(width),\n\t\t...renderPhaseHeader(\"Shell cleanup\", \"4 actions · 1.4s\", width),\n\t\tspineGapLine(width, FLOW_INDENT.work),\n\t\t...renderSpineLinkedWork(SHELL_WORK, width),\n\t\t\"\",\n\t\t...renderPhaseHeader(\"Finalization\", \"2 actions · 209ms\", width),\n\t\tspineGapLine(width, FLOW_INDENT.work),\n\t\t...renderSpineLinkedWork(FINALIZE_WORK, width),\n\t];\n}\n\n// ── Design: lipgloss-panel (rounded messages, open tools) ───────────────────\n\nfunction renderLipglossPanel(width: number): string[] {\n\tconst userPanel = style()\n\t\t.border(\"rounded\")\n\t\t.borderColor((text) => theme.fg(\"border\", text))\n\t\t.paddingX(1)\n\t\t.paddingY(0)\n\t\t.title(styledHeader(USER_LABEL, \"border\"))\n\t\t.render([USER_TEXT], width);\n\n\tconst assistantPanel = style()\n\t\t.border(\"rounded\")\n\t\t.borderColor((text) => theme.fg(\"borderAccent\", text))\n\t\t.paddingX(1)\n\t\t.paddingY(0)\n\t\t.title(styledHeader(\"GSD\", \"borderAccent\"))\n\t\t.titleRight(theme.fg(\"dim\", \"gpt-test · 1.2s\"))\n\t\t.render([ASSISTANT_TEXT], width);\n\n\tconst out = [...userPanel, \"\", ...assistantPanel, \"\"];\n\tfor (const tool of COLLAPSED_TOOLS) {\n\t\tconst title = `${styledHeader(tool.title, \"borderAccent\")} ${theme.fg(\"text\", tool.target)}`;\n\t\tout.push(...openRule(title, theme.fg(\"success\", tool.status), width, \"border\", false));\n\t}\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\n\t\t\t\ttheme.fg(\"dim\", \"bg_shell kill [87ad363a]\"),\n\t\t\t\t`${theme.fg(\"success\", \"✓\")} Killed 87ad363a python3 -m http.server 3005`,\n\t\t\t],\n\t\t\twidth,\n\t\t\t{ title: \"Background Shell\", right: \"success · 340ms\", tone: \"success\" },\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openRule(\n\t\t\t`${styledHeader(\"Save Summary\", \"borderAccent\")} ${theme.fg(\"text\", \"ASSESSMENT M002/S02\")}`,\n\t\t\ttheme.fg(\"success\", \"120ms\"),\n\t\t\twidth,\n\t\t\t\"border\",\n\t\t\tfalse,\n\t\t),\n\t);\n\tout.push(\n\t\t...openBlock(\n\t\t\t[\"WAL checkpoint complete — database is safe to stage with git.\"],\n\t\t\twidth,\n\t\t\t{ title: \"Checkpoint GSD Database\", right: \"success · 89ms\", tone: \"success\" },\n\t\t\tfalse,\n\t\t),\n\t);\n\treturn out;\n}\n\n// ── Density variants (prior exploration) ─────────────────────────────────────\n\nfunction wrapDensity(variant: DensityVariant): DesignPrototype {\n\treturn {\n\t\tid: variant.id,\n\t\tlabel: variant.label,\n\t\ttagline: variant.tagline,\n\t\tinspiration: \"Density tuning (prior prototype)\",\n\t\trender: (width) => renderDensitySample(width, variant),\n\t};\n}\n\n// ── Registry ─────────────────────────────────────────────────────────────────\n\n/** Default comparison set — the rethink. */\nexport const RETHINK_PROTOTYPES: DesignPrototype[] = [\n\t{\n\t\tid: \"current\",\n\t\tlabel: \"0 · Current\",\n\t\ttagline: \"Production today — rounded bubbles, spaced tool cards\",\n\t\tinspiration: \"Baseline (before)\",\n\t\trender: renderCurrent,\n\t},\n\t{\n\t\tid: \"gsd-flow\",\n\t\tlabel: \"★ GSD Flow\",\n\t\ttagline: \"Recommended — open turns, bridged work groups, spine tree, tight\",\n\t\tinspiration: \"ADR-019 + flow-phases + flow-bridge synthesis\",\n\t\trender: renderGsdFlow,\n\t},\n\t{\n\t\tid: \"gsd-document\",\n\t\tlabel: \"GSD Document\",\n\t\ttagline: \"Glamour-style sections — prose-first, bullet tools, no connectors\",\n\t\tinspiration: \"Charm Glamour / readable long sessions\",\n\t\trender: renderGsdDocument,\n\t},\n\t{\n\t\tid: \"gsd-stream\",\n\t\tlabel: \"GSD Stream\",\n\t\ttagline: \"Ultra-compact — prompt chars, flat indented work list\",\n\t\tinspiration: \"Claude Code brevity + maximum density\",\n\t\trender: renderGsdStream,\n\t},\n\t{\n\t\tid: \"gsd-connected\",\n\t\tlabel: \"★ GSD Connected\",\n\t\ttagline: \"Connected rail cards — the step-complete look applied to the full flow\",\n\t\tinspiration: \"auto-status-message.ts formatConnectedStepStack\",\n\t\trender: renderGsdConnected,\n\t},\n];\n\n/** Prior exploration variants — npm run prototype:tui-design -- explore */\nexport const LEGACY_PROTOTYPES: DesignPrototype[] = [\n\t{\n\t\tid: \"open-unified\",\n\t\tlabel: \"Open unified\",\n\t\ttagline: \"ADR-019 everywhere — horizontal rules only\",\n\t\tinspiration: \"ADR-019\",\n\t\trender: renderOpenUnified,\n\t},\n\t{\n\t\tid: \"glamour-flow\",\n\t\tlabel: \"Glamour flow\",\n\t\ttagline: \"Document headings + bullet tools\",\n\t\tinspiration: \"Glamour\",\n\t\trender: renderGlamourFlow,\n\t},\n\t{\n\t\tid: \"charm-minimal\",\n\t\tlabel: \"Charm minimal\",\n\t\ttagline: \"Chips, dots, semantic rule colors\",\n\t\tinspiration: \"Lip Gloss\",\n\t\trender: renderCharmMinimal,\n\t},\n\t{\n\t\tid: \"timeline\",\n\t\tlabel: \"Timeline\",\n\t\ttagline: \"Timestamp log stream\",\n\t\tinspiration: \"Structured logging\",\n\t\trender: renderTimeline,\n\t},\n\t{\n\t\tid: \"phase-rollup\",\n\t\tlabel: \"Phase rollup\",\n\t\ttagline: \"Batch repetitive tools\",\n\t\tinspiration: \"Batch UX\",\n\t\trender: renderPhaseRollup,\n\t},\n\t{\n\t\tid: \"whisper\",\n\t\tlabel: \"Whisper\",\n\t\ttagline: \"Prompt chars + half-width separators\",\n\t\tinspiration: \"Minimal shell\",\n\t\trender: renderWhisper,\n\t},\n\t{\n\t\tid: \"lipgloss-panel\",\n\t\tlabel: \"Lipgloss panel\",\n\t\ttagline: \"Rounded message panels + open tools\",\n\t\tinspiration: \"Lip Gloss rounded\",\n\t\trender: renderLipglossPanel,\n\t},\n\t{\n\t\tid: \"flow-tree\",\n\t\tlabel: \"Flow tree\",\n\t\ttagline: \"Tree branches per action\",\n\t\tinspiration: \"tree-render-utils\",\n\t\trender: renderFlowTree,\n\t},\n\t{\n\t\tid: \"flow-spine\",\n\t\tlabel: \"Flow spine\",\n\t\ttagline: \"Vertical spine between rules\",\n\t\tinspiration: \"Timeline spine\",\n\t\trender: renderFlowSpine,\n\t},\n\t{\n\t\tid: \"flow-bridge\",\n\t\tlabel: \"Flow bridge\",\n\t\ttagline: \"╰─ bridge from assistant\",\n\t\tinspiration: \"Connected rail\",\n\t\trender: renderFlowBridge,\n\t},\n\t{\n\t\tid: \"flow-phases\",\n\t\tlabel: \"Flow phases\",\n\t\ttagline: \"Named phases + spine\",\n\t\tinspiration: \"ToolPhaseSummary\",\n\t\trender: renderFlowPhases,\n\t},\n\t...DENSITY_VARIANTS.filter((v) => ![\"current\"].includes(v.id)).map(wrapDensity),\n];\n\nexport const DESIGN_PROTOTYPES: DesignPrototype[] = [...RETHINK_PROTOTYPES, ...LEGACY_PROTOTYPES];\n\nexport function getDesignPrototype(id: string): DesignPrototype {\n\tconst resolved = id === \"rethink\" ? \"gsd-flow\" : id;\n\tconst found = DESIGN_PROTOTYPES.find((p) => p.id === resolved);\n\tif (!found) {\n\t\tthrow new Error(\n\t\t\t`Unknown prototype \"${id}\". Rethink: ${RETHINK_PROTOTYPES.map((p) => p.id).join(\", \")} · legacy: npm run prototype:tui-design -- explore`,\n\t\t);\n\t}\n\treturn found;\n}\n\nexport function resolvePrototypeSet(mode: string): DesignPrototype[] {\n\tif (mode === \"explore\") return DESIGN_PROTOTYPES;\n\tif (mode === \"all\" || mode === \"rethink\") return RETHINK_PROTOTYPES;\n\treturn [getDesignPrototype(mode)];\n}\n\nexport function renderPrototypeBanner(prototype: DesignPrototype, width: number): string[] {\n\tconst label = `${prototype.label} — ${prototype.tagline}`;\n\tconst inspo = theme.fg(\"dim\", `inspired by: ${prototype.inspiration}`);\n\tconst rule = theme.fg(\"borderAccent\", \"═\".repeat(Math.max(20, width)));\n\treturn [\"\", rule, truncateToWidth(theme.fg(\"text\", label), width, \"\"), truncateToWidth(inspo, width, \"\"), rule, \"\"];\n}\n\nexport function listPrototypeIds(): string[] {\n\treturn DESIGN_PROTOTYPES.map((p) => p.id);\n}\n"]}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* ensure-workspace-builds.cjs
|
|
4
|
-
*
|
|
5
|
-
* Checks whether workspace packages have been compiled (dist/ exists with
|
|
6
|
-
* index.js) and that the build is not stale (no src/ file newer than dist/).
|
|
7
|
-
* If any are missing or stale, runs the build for those packages.
|
|
8
|
-
*
|
|
9
|
-
* Designed for the postinstall hook so that `pnpm install` in a fresh clone
|
|
10
|
-
* produces a working runtime without a manual `pnpm run build` step. Also
|
|
11
|
-
* catches the common case where `git pull` updates package sources but the
|
|
12
|
-
* old dist/ remains, causing TypeScript type errors.
|
|
13
|
-
*
|
|
14
|
-
* Skipped in CI (where the full build pipeline handles this) and when
|
|
15
|
-
* installing as an end-user dependency (no packages/ directory).
|
|
16
|
-
*/
|
|
17
|
-
const { existsSync, statSync, readdirSync } = require('fs')
|
|
18
|
-
const { resolve, join } = require('path')
|
|
19
|
-
const { execSync } = require('child_process')
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Returns the most recent mtime (ms) of any .ts file under dir, recursively.
|
|
23
|
-
* Returns 0 if no .ts files found.
|
|
24
|
-
*/
|
|
25
|
-
function newestSrcMtime(dir) {
|
|
26
|
-
if (!existsSync(dir)) return 0
|
|
27
|
-
let newest = 0
|
|
28
|
-
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
29
|
-
if (entry.name === 'node_modules') continue
|
|
30
|
-
const full = join(dir, entry.name)
|
|
31
|
-
if (entry.isDirectory()) {
|
|
32
|
-
newest = Math.max(newest, newestSrcMtime(full))
|
|
33
|
-
} else if (entry.isFile() && entry.name.endsWith('.ts')) {
|
|
34
|
-
newest = Math.max(newest, statSync(full).mtimeMs)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return newest
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Detects workspace packages whose dist/ is missing or stale.
|
|
42
|
-
*
|
|
43
|
-
* Missing dist/index.js is always reported (the package won't work at all).
|
|
44
|
-
*
|
|
45
|
-
* Staleness (src/ newer than dist/) is ONLY checked when a .git directory
|
|
46
|
-
* exists at root — indicating a development clone. In npm tarball installs,
|
|
47
|
-
* file timestamps are unreliable (npm sets all files to a canonical date,
|
|
48
|
-
* but extraction ordering can cause src/ to appear 1-2 seconds newer than
|
|
49
|
-
* dist/). Attempting to rebuild in that scenario is dangerous: devDependencies
|
|
50
|
-
* (including TypeScript) are not installed, and any globally-installed tsc
|
|
51
|
-
* may produce broken output that overwrites the known-good dist/.
|
|
52
|
-
*
|
|
53
|
-
* @param {string} root Project root directory
|
|
54
|
-
* @param {string[]} packages Package directory names to check
|
|
55
|
-
* @returns {string[]} Package names that need rebuilding
|
|
56
|
-
*/
|
|
57
|
-
function detectStalePackages(root, packages) {
|
|
58
|
-
const packagesDir = join(root, 'packages')
|
|
59
|
-
const isDevClone = existsSync(join(root, '.git'))
|
|
60
|
-
|
|
61
|
-
const stale = []
|
|
62
|
-
for (const pkg of packages) {
|
|
63
|
-
const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
|
|
64
|
-
if (!existsSync(distIndex)) {
|
|
65
|
-
stale.push(pkg)
|
|
66
|
-
continue
|
|
67
|
-
}
|
|
68
|
-
// Only check src vs dist timestamps in development clones.
|
|
69
|
-
// In npm tarball installs, timestamps are unreliable and rebuilding
|
|
70
|
-
// without devDependencies can corrupt the pre-built dist/ (#2877).
|
|
71
|
-
if (isDevClone) {
|
|
72
|
-
const distMtime = statSync(distIndex).mtimeMs
|
|
73
|
-
const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
|
|
74
|
-
if (srcMtime > distMtime) {
|
|
75
|
-
stale.push(pkg)
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return stale
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (require.main === module) {
|
|
83
|
-
const root = resolve(__dirname, '..')
|
|
84
|
-
const packagesDir = join(root, 'packages')
|
|
85
|
-
|
|
86
|
-
// Skip if packages/ doesn't exist (published tarball / end-user install)
|
|
87
|
-
if (!existsSync(packagesDir)) process.exit(0)
|
|
88
|
-
|
|
89
|
-
// Skip in CI — the pipeline runs `pnpm run build` explicitly
|
|
90
|
-
if (process.env.CI === 'true' || process.env.CI === '1') process.exit(0)
|
|
91
|
-
|
|
92
|
-
// Workspace packages that need dist/index.js at runtime.
|
|
93
|
-
// Order matters: dependencies must build before dependents.
|
|
94
|
-
const WORKSPACE_PACKAGES = [
|
|
95
|
-
'native',
|
|
96
|
-
'pi-tui',
|
|
97
|
-
'pi-ai',
|
|
98
|
-
'pi-agent-core',
|
|
99
|
-
'pi-coding-agent',
|
|
100
|
-
'gsd-agent-core',
|
|
101
|
-
'gsd-agent-modes',
|
|
102
|
-
'rpc-client',
|
|
103
|
-
'mcp-server',
|
|
104
|
-
]
|
|
105
|
-
|
|
106
|
-
const stale = detectStalePackages(root, WORKSPACE_PACKAGES)
|
|
107
|
-
|
|
108
|
-
if (stale.length === 0) process.exit(0)
|
|
109
|
-
|
|
110
|
-
process.stderr.write(` Building ${stale.length} workspace package(s) with stale or missing dist/: ${stale.join(', ')}\n`)
|
|
111
|
-
|
|
112
|
-
for (const pkg of stale) {
|
|
113
|
-
const pkgDir = join(packagesDir, pkg)
|
|
114
|
-
const distIndex = join(pkgDir, 'dist', 'index.js')
|
|
115
|
-
try {
|
|
116
|
-
// execSync is safe here: the command is a hardcoded string, not user input
|
|
117
|
-
execSync('pnpm run build', { cwd: pkgDir, stdio: 'pipe' })
|
|
118
|
-
if (!existsSync(distIndex)) {
|
|
119
|
-
throw new Error('build finished but dist/index.js is missing (stale TypeScript incremental cache?)')
|
|
120
|
-
}
|
|
121
|
-
process.stderr.write(` ✓ ${pkg}\n`)
|
|
122
|
-
} catch (err) {
|
|
123
|
-
process.stderr.write(` ✗ ${pkg} build failed: ${err.message}\n`)
|
|
124
|
-
// Non-fatal — the user can run `pnpm run build` manually
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
module.exports = { newestSrcMtime, detectStalePackages }
|
|
File without changes
|
|
File without changes
|