@opengsd/gsd-pi 1.1.1-dev.b2556262 → 1.2.0-dev.4813ead6

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 (500) hide show
  1. package/dist/cli-web-branch.d.ts +2 -0
  2. package/dist/cli-web-branch.js +9 -2
  3. package/dist/help-text.js +5 -0
  4. package/dist/project-sessions.js +4 -2
  5. package/dist/resources/.managed-resources-content-hash +1 -1
  6. package/dist/resources/extensions/ask-user-questions.js +78 -23
  7. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +101 -237
  8. package/dist/resources/extensions/claude-code-cli/turn-assembler.js +224 -0
  9. package/dist/resources/extensions/github-sync/templates.js +3 -3
  10. package/dist/resources/extensions/gsd/artifact-projection.js +14 -0
  11. package/dist/resources/extensions/gsd/auto/contracts.js +8 -1
  12. package/dist/resources/extensions/gsd/auto/loop.js +74 -56
  13. package/dist/resources/extensions/gsd/auto/orchestrator.js +763 -63
  14. package/dist/resources/extensions/gsd/auto/phases.js +28 -3
  15. package/dist/resources/extensions/gsd/auto/run-unit.js +2 -1
  16. package/dist/resources/extensions/gsd/auto/session.js +3 -0
  17. package/dist/resources/extensions/gsd/auto-dashboard.js +16 -4
  18. package/dist/resources/extensions/gsd/auto-dispatch.js +6 -5
  19. package/dist/resources/extensions/gsd/auto-model-selection.js +8 -0
  20. package/dist/resources/extensions/gsd/auto-post-unit.js +4 -3
  21. package/dist/resources/extensions/gsd/auto-prompts.js +191 -9
  22. package/dist/resources/extensions/gsd/auto-recovery.js +48 -49
  23. package/dist/resources/extensions/gsd/auto-runtime-state.js +17 -0
  24. package/dist/resources/extensions/gsd/auto-start.js +12 -23
  25. package/dist/resources/extensions/gsd/auto-timers.js +16 -2
  26. package/dist/resources/extensions/gsd/auto-tool-tracking.js +37 -0
  27. package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +33 -29
  28. package/dist/resources/extensions/gsd/auto-verification.js +7 -7
  29. package/dist/resources/extensions/gsd/auto-worktree.js +45 -36
  30. package/dist/resources/extensions/gsd/auto.js +73 -471
  31. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +28 -37
  32. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +11 -37
  33. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +2 -2
  34. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +103 -138
  35. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +63 -4
  36. package/dist/resources/extensions/gsd/closeout-consistency-gate.js +21 -4
  37. package/dist/resources/extensions/gsd/codebase-generator.js +8 -4
  38. package/dist/resources/extensions/gsd/commands/handlers/auto.js +3 -0
  39. package/dist/resources/extensions/gsd/commands-handlers.js +20 -0
  40. package/dist/resources/extensions/gsd/commands-inspect.js +4 -8
  41. package/dist/resources/extensions/gsd/commands-maintenance.js +61 -41
  42. package/dist/resources/extensions/gsd/commands-ship.js +2 -2
  43. package/dist/resources/extensions/gsd/commands-verdict.js +12 -2
  44. package/dist/resources/extensions/gsd/db-workspace.js +103 -0
  45. package/dist/resources/extensions/gsd/debug-logger.js +10 -0
  46. package/dist/resources/extensions/gsd/delegation-policy.js +2 -10
  47. package/dist/resources/extensions/gsd/discussion-handoff.js +218 -0
  48. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -0
  49. package/dist/resources/extensions/gsd/doctor-proactive.js +7 -2
  50. package/dist/resources/extensions/gsd/doctor.js +16 -9
  51. package/dist/resources/extensions/gsd/error-classifier.js +1 -1
  52. package/dist/resources/extensions/gsd/git-conflict-state.js +16 -1
  53. package/dist/resources/extensions/gsd/gsd-db.js +12 -0
  54. package/dist/resources/extensions/gsd/guided-flow.js +36 -470
  55. package/dist/resources/extensions/gsd/guided-unit-completion.js +225 -0
  56. package/dist/resources/extensions/gsd/markdown-renderer.js +33 -33
  57. package/dist/resources/extensions/gsd/mcp-filter.js +8 -1
  58. package/dist/resources/extensions/gsd/mcp-tool-name.js +26 -0
  59. package/dist/resources/extensions/gsd/md-importer.js +4 -3
  60. package/dist/resources/extensions/gsd/migrate/safety.js +2 -2
  61. package/dist/resources/extensions/gsd/migration-auto-check.js +3 -2
  62. package/dist/resources/extensions/gsd/milestone-closeout-proof.js +72 -0
  63. package/dist/resources/extensions/gsd/milestone-closeout.js +12 -4
  64. package/dist/resources/extensions/gsd/milestone-merge-transaction.js +10 -0
  65. package/dist/resources/extensions/gsd/milestone-planning-persistence.js +156 -0
  66. package/dist/resources/extensions/gsd/milestone-readiness.js +77 -0
  67. package/dist/resources/extensions/gsd/milestone-settlement.js +50 -0
  68. package/dist/resources/extensions/gsd/milestone-validation-evidence.js +73 -0
  69. package/dist/resources/extensions/gsd/milestone-validation-verdict.js +57 -0
  70. package/dist/resources/extensions/gsd/native-git-bridge.js +45 -0
  71. package/dist/resources/extensions/gsd/parallel-eligibility.js +3 -6
  72. package/dist/resources/extensions/gsd/parallel-orchestrator.js +3 -2
  73. package/dist/resources/extensions/gsd/preferences-diagnostics.js +67 -0
  74. package/dist/resources/extensions/gsd/preferences.js +147 -29
  75. package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -0
  76. package/dist/resources/extensions/gsd/prompts/discuss.md +6 -7
  77. package/dist/resources/extensions/gsd/prompts/execute-task.md +2 -0
  78. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
  79. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +6 -6
  80. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
  81. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
  82. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
  83. package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -1
  84. package/dist/resources/extensions/gsd/prompts/refine-slice.md +1 -0
  85. package/dist/resources/extensions/gsd/prompts/research-milestone.md +2 -2
  86. package/dist/resources/extensions/gsd/prompts/system.md +1 -1
  87. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
  88. package/dist/resources/extensions/gsd/provider-payload-policy.js +83 -0
  89. package/dist/resources/extensions/gsd/pull-request-process.js +13 -0
  90. package/dist/resources/extensions/gsd/quality-gate-closure.js +109 -0
  91. package/dist/resources/extensions/gsd/question-transport.js +86 -0
  92. package/dist/resources/extensions/gsd/roadmap-slices.js +8 -2
  93. package/dist/resources/extensions/gsd/schemas/parsers.js +6 -1
  94. package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +3 -2
  95. package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +21 -1
  96. package/dist/resources/extensions/gsd/state.js +13 -5
  97. package/dist/resources/extensions/gsd/templates/plan.md +7 -0
  98. package/dist/resources/extensions/gsd/templates/project.md +1 -0
  99. package/dist/resources/extensions/gsd/templates/roadmap.md +1 -1
  100. package/dist/resources/extensions/gsd/templates/uat.md +5 -1
  101. package/dist/resources/extensions/gsd/tool-contract.js +52 -8
  102. package/dist/resources/extensions/gsd/tool-presentation-plan.js +15 -34
  103. package/dist/resources/extensions/gsd/tool-surface-snapshot.js +17 -0
  104. package/dist/resources/extensions/gsd/tools/plan-milestone.js +15 -143
  105. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +39 -0
  106. package/dist/resources/extensions/gsd/tools/validate-milestone.js +15 -78
  107. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +169 -20
  108. package/dist/resources/extensions/gsd/uat-policy.js +16 -10
  109. package/dist/resources/extensions/gsd/uat-run.js +9 -14
  110. package/dist/resources/extensions/gsd/unit-context-composer.js +40 -20
  111. package/dist/resources/extensions/gsd/unit-runtime.js +3 -2
  112. package/dist/resources/extensions/gsd/unit-tool-contracts.js +2 -1
  113. package/dist/resources/extensions/gsd/user-input-boundary.js +65 -4
  114. package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
  115. package/dist/resources/extensions/gsd/web-app-uat.js +80 -0
  116. package/dist/resources/extensions/gsd/workflow-mcp.js +15 -102
  117. package/dist/resources/extensions/gsd/workflow-reconcile.js +4 -3
  118. package/dist/resources/extensions/gsd/workflow-tool-surface.js +46 -0
  119. package/dist/resources/extensions/gsd/workspace-git-guard.js +2 -0
  120. package/dist/resources/extensions/gsd/worktree-state-projection.js +33 -4
  121. package/dist/resources/extensions/gsd/worktree-telemetry.js +12 -0
  122. package/dist/resources/extensions/shared/interview-ui.js +2 -2
  123. package/dist/resources/shared/claude-runtime-floor.js +182 -0
  124. package/dist/tsconfig.extensions.tsbuildinfo +1 -0
  125. package/dist/update-cmd.js +20 -0
  126. package/dist/web/standalone/.next/BUILD_ID +1 -1
  127. package/dist/web/standalone/.next/app-path-routes-manifest.json +5 -5
  128. package/dist/web/standalone/.next/build-manifest.json +3 -3
  129. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  130. package/dist/web/standalone/.next/react-loadable-manifest.json +8 -8
  131. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  132. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  133. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  134. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  135. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  136. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  137. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  138. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  139. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  140. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  141. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  142. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  143. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  144. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  145. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  146. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  147. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  148. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  149. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  150. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  151. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  152. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  153. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  154. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  155. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  156. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  159. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  160. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  161. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  162. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  164. package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
  165. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  166. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  167. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  168. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  169. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  170. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  171. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  172. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  173. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  174. package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  175. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  176. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  177. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  178. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  179. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  180. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  181. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  182. package/dist/web/standalone/.next/server/app/index.html +1 -1
  183. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  184. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  185. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  186. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  187. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  188. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  189. package/dist/web/standalone/.next/server/app-paths-manifest.json +5 -5
  190. package/dist/web/standalone/.next/server/chunks/5047.js +2 -0
  191. package/dist/web/standalone/.next/server/chunks/5124.js +1 -0
  192. package/dist/web/standalone/.next/server/chunks/8357.js +2 -2
  193. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  195. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  196. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  197. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  198. package/dist/web/standalone/.next/static/chunks/2659.b7b129ee6a769448.js +1 -0
  199. package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +1 -0
  200. package/dist/web/standalone/.next/static/chunks/{3616.4113d484a994e411.js → 3616.3c60753b8ffcbd2e.js} +1 -1
  201. package/dist/web/standalone/.next/static/chunks/4283.e4873b058df143a1.js +2 -0
  202. package/dist/web/standalone/.next/static/chunks/5826.a46ecdd1cfe8dabc.js +1 -0
  203. package/dist/web/standalone/.next/static/chunks/796.cf859a427a2cb2ac.js +10 -0
  204. package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +1 -0
  205. package/dist/web/standalone/.next/static/chunks/{webpack-dda80a1ef5587410.js → webpack-fbea77b5f9953368.js} +1 -1
  206. package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
  207. package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
  208. package/dist/web/standalone/node_modules/postcss/lib/container.js +26 -18
  209. package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +47 -14
  210. package/dist/web/standalone/node_modules/postcss/lib/declaration.js +4 -4
  211. package/dist/web/standalone/node_modules/postcss/lib/fromJSON.js +3 -3
  212. package/dist/web/standalone/node_modules/postcss/lib/input.js +54 -29
  213. package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +47 -37
  214. package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +26 -9
  215. package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +57 -55
  216. package/dist/web/standalone/node_modules/postcss/lib/node.js +99 -31
  217. package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
  218. package/dist/web/standalone/node_modules/postcss/lib/parser.js +10 -9
  219. package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
  220. package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +30 -11
  221. package/dist/web/standalone/node_modules/postcss/lib/processor.js +7 -7
  222. package/dist/web/standalone/node_modules/postcss/lib/result.js +5 -5
  223. package/dist/web/standalone/node_modules/postcss/lib/rule.js +6 -6
  224. package/dist/web/standalone/node_modules/postcss/lib/stringifier.js +69 -28
  225. package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +6 -2
  226. package/dist/web/standalone/node_modules/postcss/package.json +48 -48
  227. package/dist/web-mode.d.ts +2 -0
  228. package/dist/web-mode.js +20 -8
  229. package/package.json +17 -11
  230. package/packages/cloud-mcp-gateway/package.json +2 -2
  231. package/packages/contracts/package.json +1 -1
  232. package/packages/daemon/package.json +4 -4
  233. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +2 -0
  234. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
  235. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +14 -0
  236. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
  237. package/packages/gsd-agent-core/package.json +5 -5
  238. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  239. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +3 -0
  240. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
  241. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +1 -1
  242. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
  243. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  244. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +106 -40
  245. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  246. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
  247. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +6 -0
  248. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  249. package/packages/gsd-agent-modes/package.json +7 -7
  250. package/packages/mcp-server/dist/server.d.ts +10 -0
  251. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  252. package/packages/mcp-server/dist/server.js +8 -0
  253. package/packages/mcp-server/dist/server.js.map +1 -1
  254. package/packages/mcp-server/dist/workflow-tools.d.ts +41 -0
  255. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  256. package/packages/mcp-server/dist/workflow-tools.js +2 -1
  257. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  258. package/packages/mcp-server/package.json +3 -3
  259. package/packages/native/package.json +1 -1
  260. package/packages/pi-agent-core/package.json +1 -1
  261. package/packages/pi-ai/dist/image-models.generated.d.ts +30 -0
  262. package/packages/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  263. package/packages/pi-ai/dist/image-models.generated.js +30 -0
  264. package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
  265. package/packages/pi-ai/dist/models.generated.d.ts +8 -127
  266. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  267. package/packages/pi-ai/dist/models.generated.js +47 -166
  268. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  269. package/packages/pi-ai/package.json +1 -1
  270. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  271. package/packages/pi-coding-agent/dist/core/auth-storage.js +11 -3
  272. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  273. package/packages/pi-coding-agent/package.json +7 -7
  274. package/packages/pi-tui/dist/components/input.js +1 -1
  275. package/packages/pi-tui/dist/components/input.js.map +1 -1
  276. package/packages/pi-tui/dist/keys.d.ts.map +1 -1
  277. package/packages/pi-tui/dist/keys.js +39 -30
  278. package/packages/pi-tui/dist/keys.js.map +1 -1
  279. package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  280. package/packages/pi-tui/dist/stdin-buffer.js +22 -0
  281. package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
  282. package/packages/pi-tui/package.json +2 -2
  283. package/packages/rpc-client/package.json +2 -2
  284. package/pkg/package.json +1 -1
  285. package/scripts/install/deps.js +10 -0
  286. package/scripts/link-workspace-packages.cjs +7 -40
  287. package/src/resources/extensions/ask-user-questions.ts +87 -24
  288. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +126 -289
  289. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +242 -2
  290. package/src/resources/extensions/claude-code-cli/turn-assembler.ts +287 -0
  291. package/src/resources/extensions/github-sync/templates.ts +3 -3
  292. package/src/resources/extensions/github-sync/tests/templates.test.ts +2 -2
  293. package/src/resources/extensions/gsd/artifact-projection.ts +31 -0
  294. package/src/resources/extensions/gsd/auto/contracts.ts +40 -121
  295. package/src/resources/extensions/gsd/auto/loop-deps.ts +2 -0
  296. package/src/resources/extensions/gsd/auto/loop.ts +83 -61
  297. package/src/resources/extensions/gsd/auto/orchestrator.ts +913 -64
  298. package/src/resources/extensions/gsd/auto/phases.ts +35 -3
  299. package/src/resources/extensions/gsd/auto/run-unit.ts +2 -1
  300. package/src/resources/extensions/gsd/auto/session.ts +4 -0
  301. package/src/resources/extensions/gsd/auto-dashboard.ts +18 -4
  302. package/src/resources/extensions/gsd/auto-dispatch.ts +20 -7
  303. package/src/resources/extensions/gsd/auto-model-selection.ts +8 -0
  304. package/src/resources/extensions/gsd/auto-post-unit.ts +4 -3
  305. package/src/resources/extensions/gsd/auto-prompts.ts +220 -9
  306. package/src/resources/extensions/gsd/auto-recovery.ts +50 -50
  307. package/src/resources/extensions/gsd/auto-runtime-state.ts +30 -0
  308. package/src/resources/extensions/gsd/auto-start.ts +17 -20
  309. package/src/resources/extensions/gsd/auto-timers.ts +16 -2
  310. package/src/resources/extensions/gsd/auto-tool-tracking.ts +40 -0
  311. package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +42 -30
  312. package/src/resources/extensions/gsd/auto-verification.ts +7 -8
  313. package/src/resources/extensions/gsd/auto-worktree.ts +57 -42
  314. package/src/resources/extensions/gsd/auto.ts +96 -508
  315. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +29 -37
  316. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +10 -37
  317. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +2 -2
  318. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +120 -151
  319. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +107 -3
  320. package/src/resources/extensions/gsd/closeout-consistency-gate.ts +27 -5
  321. package/src/resources/extensions/gsd/codebase-generator.ts +9 -5
  322. package/src/resources/extensions/gsd/commands/handlers/auto.ts +3 -0
  323. package/src/resources/extensions/gsd/commands-handlers.ts +18 -0
  324. package/src/resources/extensions/gsd/commands-inspect.ts +7 -8
  325. package/src/resources/extensions/gsd/commands-maintenance.ts +74 -40
  326. package/src/resources/extensions/gsd/commands-ship.ts +2 -2
  327. package/src/resources/extensions/gsd/commands-verdict.ts +19 -2
  328. package/src/resources/extensions/gsd/db-workspace.ts +170 -0
  329. package/src/resources/extensions/gsd/debug-logger.ts +11 -0
  330. package/src/resources/extensions/gsd/delegation-policy.ts +3 -11
  331. package/src/resources/extensions/gsd/discussion-handoff.ts +276 -0
  332. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -0
  333. package/src/resources/extensions/gsd/doctor-proactive.ts +8 -2
  334. package/src/resources/extensions/gsd/doctor.ts +15 -5
  335. package/src/resources/extensions/gsd/error-classifier.ts +1 -1
  336. package/src/resources/extensions/gsd/git-conflict-state.ts +17 -1
  337. package/src/resources/extensions/gsd/gsd-db.ts +12 -0
  338. package/src/resources/extensions/gsd/guided-flow.ts +49 -560
  339. package/src/resources/extensions/gsd/guided-unit-completion.ts +275 -0
  340. package/src/resources/extensions/gsd/markdown-renderer.ts +40 -20
  341. package/src/resources/extensions/gsd/mcp-filter.ts +9 -1
  342. package/src/resources/extensions/gsd/mcp-tool-name.ts +35 -0
  343. package/src/resources/extensions/gsd/md-importer.ts +3 -3
  344. package/src/resources/extensions/gsd/migrate/safety.ts +2 -2
  345. package/src/resources/extensions/gsd/migration-auto-check.ts +2 -2
  346. package/src/resources/extensions/gsd/milestone-closeout-proof.ts +131 -0
  347. package/src/resources/extensions/gsd/milestone-closeout.ts +12 -4
  348. package/src/resources/extensions/gsd/milestone-merge-transaction.ts +47 -0
  349. package/src/resources/extensions/gsd/milestone-planning-persistence.ts +224 -0
  350. package/src/resources/extensions/gsd/milestone-readiness.ts +125 -0
  351. package/src/resources/extensions/gsd/milestone-settlement.ts +81 -0
  352. package/src/resources/extensions/gsd/milestone-validation-evidence.ts +95 -0
  353. package/src/resources/extensions/gsd/milestone-validation-verdict.ts +80 -0
  354. package/src/resources/extensions/gsd/native-git-bridge.ts +48 -0
  355. package/src/resources/extensions/gsd/parallel-eligibility.ts +4 -5
  356. package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -2
  357. package/src/resources/extensions/gsd/preferences-diagnostics.ts +98 -0
  358. package/src/resources/extensions/gsd/preferences-types.ts +16 -0
  359. package/src/resources/extensions/gsd/preferences.ts +173 -28
  360. package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -0
  361. package/src/resources/extensions/gsd/prompts/discuss.md +6 -7
  362. package/src/resources/extensions/gsd/prompts/execute-task.md +2 -0
  363. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
  364. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +6 -6
  365. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
  366. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
  367. package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
  368. package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -1
  369. package/src/resources/extensions/gsd/prompts/refine-slice.md +1 -0
  370. package/src/resources/extensions/gsd/prompts/research-milestone.md +2 -2
  371. package/src/resources/extensions/gsd/prompts/system.md +1 -1
  372. package/src/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
  373. package/src/resources/extensions/gsd/provider-payload-policy.ts +140 -0
  374. package/src/resources/extensions/gsd/pull-request-process.ts +41 -0
  375. package/src/resources/extensions/gsd/quality-gate-closure.ts +140 -0
  376. package/src/resources/extensions/gsd/question-transport.ts +138 -0
  377. package/src/resources/extensions/gsd/roadmap-slices.ts +8 -2
  378. package/src/resources/extensions/gsd/schemas/parsers.ts +6 -1
  379. package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +6 -2
  380. package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +31 -10
  381. package/src/resources/extensions/gsd/state.ts +15 -5
  382. package/src/resources/extensions/gsd/templates/plan.md +7 -0
  383. package/src/resources/extensions/gsd/templates/project.md +1 -0
  384. package/src/resources/extensions/gsd/templates/roadmap.md +1 -1
  385. package/src/resources/extensions/gsd/templates/uat.md +5 -1
  386. package/src/resources/extensions/gsd/tests/artifact-db-drift-memo.test.ts +66 -0
  387. package/src/resources/extensions/gsd/tests/ask-user-questions-render.test.ts +92 -0
  388. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +29 -1
  389. package/src/resources/extensions/gsd/tests/auto-dispatch-baseline-harness.test.ts +53 -0
  390. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +321 -5
  391. package/src/resources/extensions/gsd/tests/auto-milestone-target.test.ts +23 -0
  392. package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +18 -0
  393. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +709 -845
  394. package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +38 -10
  395. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +34 -0
  396. package/src/resources/extensions/gsd/tests/canonical-milestone-root.test.ts +20 -0
  397. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +22 -0
  398. package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +11 -0
  399. package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +38 -1
  400. package/src/resources/extensions/gsd/tests/debug-logger.test.ts +15 -0
  401. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +34 -3
  402. package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +88 -0
  403. package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +18 -0
  404. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +64 -1
  405. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +1 -0
  406. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +1 -5
  407. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +1 -5
  408. package/src/resources/extensions/gsd/tests/gate-state-canonicalization.test.ts +48 -1
  409. package/src/resources/extensions/gsd/tests/integration/merge-strategy-regular.test.ts +157 -0
  410. package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +75 -0
  411. package/src/resources/extensions/gsd/tests/mcp-tool-name.test.ts +34 -0
  412. package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +58 -0
  413. package/src/resources/extensions/gsd/tests/milestone-closeout-proof.test.ts +99 -0
  414. package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +25 -0
  415. package/src/resources/extensions/gsd/tests/milestone-merge-transaction.test.ts +46 -0
  416. package/src/resources/extensions/gsd/tests/milestone-readiness.test.ts +65 -0
  417. package/src/resources/extensions/gsd/tests/milestone-validation-evidence.test.ts +41 -0
  418. package/src/resources/extensions/gsd/tests/milestone-validation-verdict.test.ts +55 -0
  419. package/src/resources/extensions/gsd/tests/native-merge-regular.test.ts +139 -0
  420. package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +127 -0
  421. package/src/resources/extensions/gsd/tests/parse-project-milestone-bridge.test.ts +77 -0
  422. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +45 -0
  423. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +6 -2
  424. package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +45 -0
  425. package/src/resources/extensions/gsd/tests/preferences-diagnostics.test.ts +67 -0
  426. package/src/resources/extensions/gsd/tests/preferences.test.ts +183 -0
  427. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +75 -2
  428. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +9 -0
  429. package/src/resources/extensions/gsd/tests/provider-payload-policy.test.ts +165 -0
  430. package/src/resources/extensions/gsd/tests/pull-request-process.test.ts +47 -0
  431. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +94 -0
  432. package/src/resources/extensions/gsd/tests/research-milestone-composer.test.ts +65 -0
  433. package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +40 -0
  434. package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +25 -1
  435. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +80 -0
  436. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +101 -1
  437. package/src/resources/extensions/gsd/tests/stale-queued-milestone.test.ts +27 -0
  438. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +21 -6
  439. package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +38 -0
  440. package/src/resources/extensions/gsd/tests/tool-availability-audit.test.ts +35 -0
  441. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +35 -42
  442. package/src/resources/extensions/gsd/tests/uat-policy.test.ts +23 -0
  443. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +47 -0
  444. package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +147 -0
  445. package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +39 -0
  446. package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +150 -0
  447. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +126 -9
  448. package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +15 -0
  449. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +21 -0
  450. package/src/resources/extensions/gsd/tests/worktree-projection-writers.test.ts +1 -1
  451. package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +24 -0
  452. package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +22 -0
  453. package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +15 -3
  454. package/src/resources/extensions/gsd/tests/write-gate.test.ts +79 -0
  455. package/src/resources/extensions/gsd/tool-contract.ts +86 -8
  456. package/src/resources/extensions/gsd/tool-presentation-plan.ts +16 -33
  457. package/src/resources/extensions/gsd/tool-surface-snapshot.ts +47 -0
  458. package/src/resources/extensions/gsd/tools/plan-milestone.ts +19 -160
  459. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +43 -0
  460. package/src/resources/extensions/gsd/tools/validate-milestone.ts +25 -84
  461. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +183 -21
  462. package/src/resources/extensions/gsd/uat-policy.ts +19 -10
  463. package/src/resources/extensions/gsd/uat-run.ts +10 -14
  464. package/src/resources/extensions/gsd/unit-context-composer.ts +85 -20
  465. package/src/resources/extensions/gsd/unit-runtime.ts +3 -2
  466. package/src/resources/extensions/gsd/unit-tool-contracts.ts +2 -1
  467. package/src/resources/extensions/gsd/user-input-boundary.ts +55 -5
  468. package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
  469. package/src/resources/extensions/gsd/web-app-uat.ts +101 -0
  470. package/src/resources/extensions/gsd/workflow-mcp.ts +22 -110
  471. package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -3
  472. package/src/resources/extensions/gsd/workflow-tool-surface.ts +73 -0
  473. package/src/resources/extensions/gsd/workspace-git-guard.ts +1 -0
  474. package/src/resources/extensions/gsd/worktree-lifecycle.ts +7 -16
  475. package/src/resources/extensions/gsd/worktree-state-projection.ts +55 -7
  476. package/src/resources/extensions/gsd/worktree-telemetry.ts +16 -0
  477. package/src/resources/extensions/shared/interview-ui.ts +15 -2
  478. package/src/resources/shared/claude-runtime-floor.ts +248 -0
  479. package/dist/web/standalone/.next/server/chunks/678.js +0 -2
  480. package/dist/web/standalone/.next/static/chunks/2659.feb6499ca863ebfc.js +0 -1
  481. package/dist/web/standalone/.next/static/chunks/2772.151789db0edea835.js +0 -1
  482. package/dist/web/standalone/.next/static/chunks/4283.10a065467b5340d8.js +0 -2
  483. package/dist/web/standalone/.next/static/chunks/5826.960dc4634cc9b0d3.js +0 -1
  484. package/dist/web/standalone/.next/static/chunks/796.46f811c0fac23aab.js +0 -10
  485. package/dist/web/standalone/.next/static/chunks/8785.d32f7a61f55c1600.js +0 -1
  486. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +0 -21
  487. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +0 -1
  488. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +0 -213
  489. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +0 -1
  490. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts +0 -28
  491. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts.map +0 -1
  492. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js +0 -249
  493. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js.map +0 -1
  494. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts +0 -19
  495. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts.map +0 -1
  496. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js +0 -797
  497. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js.map +0 -1
  498. package/scripts/ensure-workspace-builds.cjs +0 -129
  499. /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → tkLHUSzPA2kMmWz4DmGwI}/_buildManifest.js +0 -0
  500. /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → tkLHUSzPA2kMmWz4DmGwI}/_ssgManifest.js +0 -0
@@ -1,14 +1,14 @@
1
1
  'use strict'
2
2
 
3
- let { isClean, my } = require('./symbols')
4
- let MapGenerator = require('./map-generator')
5
- let stringify = require('./stringify')
6
3
  let Container = require('./container')
7
4
  let Document = require('./document')
8
- let warnOnce = require('./warn-once')
9
- let Result = require('./result')
5
+ let MapGenerator = require('./map-generator')
10
6
  let parse = require('./parse')
7
+ let Result = require('./result')
11
8
  let Root = require('./root')
9
+ let stringify = require('./stringify')
10
+ let { isClean, my } = require('./symbols')
11
+ let warnOnce = require('./warn-once')
12
12
 
13
13
  const TYPE_TO_CLASS_NAME = {
14
14
  atrule: 'AtRule',
@@ -105,6 +105,38 @@ function cleanMarks(node) {
105
105
  let postcss = {}
106
106
 
107
107
  class LazyResult {
108
+ get content() {
109
+ return this.stringify().content
110
+ }
111
+
112
+ get css() {
113
+ return this.stringify().css
114
+ }
115
+
116
+ get map() {
117
+ return this.stringify().map
118
+ }
119
+
120
+ get messages() {
121
+ return this.sync().messages
122
+ }
123
+
124
+ get opts() {
125
+ return this.result.opts
126
+ }
127
+
128
+ get processor() {
129
+ return this.result.processor
130
+ }
131
+
132
+ get root() {
133
+ return this.sync().root
134
+ }
135
+
136
+ get [Symbol.toStringTag]() {
137
+ return 'LazyResult'
138
+ }
139
+
108
140
  constructor(processor, css, opts) {
109
141
  this.stringified = false
110
142
  this.processed = false
@@ -346,6 +378,16 @@ class LazyResult {
346
378
  if (opts.stringifier) str = opts.stringifier
347
379
  if (str.stringify) str = str.stringify
348
380
 
381
+ let rootSource = this.result.root.source
382
+ if (opts.map === undefined && !(rootSource && rootSource.input && rootSource.input.map)) {
383
+ let result = ''
384
+ str(this.result.root, i => {
385
+ result += i
386
+ })
387
+ this.result.css = result
388
+ return this.result
389
+ }
390
+
349
391
  let map = new MapGenerator(str, this.result.root, this.result.opts)
350
392
  let data = map.generate()
351
393
  this.result.css = data[0]
@@ -505,38 +547,6 @@ class LazyResult {
505
547
  warnings() {
506
548
  return this.sync().warnings()
507
549
  }
508
-
509
- get content() {
510
- return this.stringify().content
511
- }
512
-
513
- get css() {
514
- return this.stringify().css
515
- }
516
-
517
- get map() {
518
- return this.stringify().map
519
- }
520
-
521
- get messages() {
522
- return this.sync().messages
523
- }
524
-
525
- get opts() {
526
- return this.result.opts
527
- }
528
-
529
- get processor() {
530
- return this.result.processor
531
- }
532
-
533
- get root() {
534
- return this.sync().root
535
- }
536
-
537
- get [Symbol.toStringTag]() {
538
- return 'LazyResult'
539
- }
540
550
  }
541
551
 
542
552
  LazyResult.registerPostcss = dependant => {
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
4
3
  let { dirname, relative, resolve, sep } = require('path')
4
+ let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
5
5
  let { pathToFileURL } = require('url')
6
6
 
7
7
  let Input = require('./input')
@@ -16,6 +16,7 @@ class MapGenerator {
16
16
  this.root = root
17
17
  this.opts = opts
18
18
  this.css = cssString
19
+ this.originalCSS = cssString
19
20
  this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute
20
21
 
21
22
  this.memoizedFileURLs = new Map()
@@ -51,7 +52,7 @@ class MapGenerator {
51
52
  if (this.mapOpts.sourcesContent === false) {
52
53
  map = new SourceMapConsumer(prev.text)
53
54
  if (map.sourcesContent) {
54
- map.sourcesContent = map.sourcesContent.map(() => null)
55
+ map.sourcesContent = null
55
56
  }
56
57
  } else {
57
58
  map = prev.consumer()
@@ -69,12 +70,20 @@ class MapGenerator {
69
70
  for (let i = this.root.nodes.length - 1; i >= 0; i--) {
70
71
  node = this.root.nodes[i]
71
72
  if (node.type !== 'comment') continue
72
- if (node.text.indexOf('# sourceMappingURL=') === 0) {
73
+ if (node.text.startsWith('# sourceMappingURL=')) {
73
74
  this.root.removeChild(i)
74
75
  }
75
76
  }
76
77
  } else if (this.css) {
77
- this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, '')
78
+ let startIndex
79
+ while ((startIndex = this.css.lastIndexOf('/*#')) !== -1) {
80
+ let endIndex = this.css.indexOf('*/', startIndex + 3)
81
+ if (endIndex === -1) break
82
+ while (startIndex > 0 && this.css[startIndex - 1] === '\n') {
83
+ startIndex--
84
+ }
85
+ this.css = this.css.slice(0, startIndex) + this.css.slice(endIndex + 2)
86
+ }
78
87
  }
79
88
  }
80
89
 
@@ -97,9 +106,14 @@ class MapGenerator {
97
106
  } else if (this.previous().length === 1) {
98
107
  let prev = this.previous()[0].consumer()
99
108
  prev.file = this.outputFile()
100
- this.map = SourceMapGenerator.fromSourceMap(prev)
109
+ this.map = SourceMapGenerator.fromSourceMap(prev, {
110
+ ignoreInvalidMapping: true
111
+ })
101
112
  } else {
102
- this.map = new SourceMapGenerator({ file: this.outputFile() })
113
+ this.map = new SourceMapGenerator({
114
+ file: this.outputFile(),
115
+ ignoreInvalidMapping: true
116
+ })
103
117
  this.map.addMapping({
104
118
  generated: { column: 0, line: 1 },
105
119
  original: { column: 0, line: 1 },
@@ -122,7 +136,10 @@ class MapGenerator {
122
136
 
123
137
  generateString() {
124
138
  this.css = ''
125
- this.map = new SourceMapGenerator({ file: this.outputFile() })
139
+ this.map = new SourceMapGenerator({
140
+ file: this.outputFile(),
141
+ ignoreInvalidMapping: true
142
+ })
126
143
 
127
144
  let line = 1
128
145
  let column = 1
@@ -134,7 +151,7 @@ class MapGenerator {
134
151
  source: ''
135
152
  }
136
153
 
137
- let lines, last
154
+ let last, lines
138
155
  this.stringify(this.root, (str, node, type) => {
139
156
  this.css += str
140
157
 
@@ -276,7 +293,7 @@ class MapGenerator {
276
293
  }
277
294
  })
278
295
  } else {
279
- let input = new Input(this.css, this.opts)
296
+ let input = new Input(this.originalCSS, this.opts)
280
297
  if (input.map) this.previousMaps.push(input.map)
281
298
  }
282
299
  }
@@ -1,12 +1,62 @@
1
1
  'use strict'
2
2
 
3
3
  let MapGenerator = require('./map-generator')
4
+ let parse = require('./parse')
5
+ let Result = require('./result')
4
6
  let stringify = require('./stringify')
5
7
  let warnOnce = require('./warn-once')
6
- let parse = require('./parse')
7
- const Result = require('./result')
8
8
 
9
9
  class NoWorkResult {
10
+ get content() {
11
+ return this.result.css
12
+ }
13
+
14
+ get css() {
15
+ return this.result.css
16
+ }
17
+
18
+ get map() {
19
+ return this.result.map
20
+ }
21
+
22
+ get messages() {
23
+ return []
24
+ }
25
+
26
+ get opts() {
27
+ return this.result.opts
28
+ }
29
+
30
+ get processor() {
31
+ return this.result.processor
32
+ }
33
+
34
+ get root() {
35
+ if (this._root) {
36
+ return this._root
37
+ }
38
+
39
+ let root
40
+ let parser = parse
41
+
42
+ try {
43
+ root = parser(this._css, this._opts)
44
+ } catch (error) {
45
+ this.error = error
46
+ }
47
+
48
+ if (this.error) {
49
+ throw this.error
50
+ } else {
51
+ this._root = root
52
+ return root
53
+ }
54
+ }
55
+
56
+ get [Symbol.toStringTag]() {
57
+ return 'NoWorkResult'
58
+ }
59
+
10
60
  constructor(processor, css, opts) {
11
61
  css = css.toString()
12
62
  this.stringified = false
@@ -15,10 +65,9 @@ class NoWorkResult {
15
65
  this._css = css
16
66
  this._opts = opts
17
67
  this._map = undefined
18
- let root
19
68
 
20
69
  let str = stringify
21
- this.result = new Result(this._processor, root, this._opts)
70
+ this.result = new Result(this._processor, undefined, this._opts)
22
71
  this.result.css = css
23
72
 
24
73
  let self = this
@@ -28,7 +77,7 @@ class NoWorkResult {
28
77
  }
29
78
  })
30
79
 
31
- let map = new MapGenerator(str, root, this._opts, css)
80
+ let map = new MapGenerator(str, undefined, this._opts, css)
32
81
  if (map.isMap()) {
33
82
  let [generatedCSS, generatedMap] = map.generate()
34
83
  if (generatedCSS) {
@@ -37,6 +86,9 @@ class NoWorkResult {
37
86
  if (generatedMap) {
38
87
  this.result.map = generatedMap
39
88
  }
89
+ } else {
90
+ map.clearAnnotation()
91
+ this.result.css = map.css
40
92
  }
41
93
  }
42
94
 
@@ -79,56 +131,6 @@ class NoWorkResult {
79
131
  warnings() {
80
132
  return []
81
133
  }
82
-
83
- get content() {
84
- return this.result.css
85
- }
86
-
87
- get css() {
88
- return this.result.css
89
- }
90
-
91
- get map() {
92
- return this.result.map
93
- }
94
-
95
- get messages() {
96
- return []
97
- }
98
-
99
- get opts() {
100
- return this.result.opts
101
- }
102
-
103
- get processor() {
104
- return this.result.processor
105
- }
106
-
107
- get root() {
108
- if (this._root) {
109
- return this._root
110
- }
111
-
112
- let root
113
- let parser = parse
114
-
115
- try {
116
- root = parser(this._css, this._opts)
117
- } catch (error) {
118
- this.error = error
119
- }
120
-
121
- if (this.error) {
122
- throw this.error
123
- } else {
124
- this._root = root
125
- return root
126
- }
127
- }
128
-
129
- get [Symbol.toStringTag]() {
130
- return 'NoWorkResult'
131
- }
132
134
  }
133
135
 
134
136
  module.exports = NoWorkResult
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
- let { isClean, my } = require('./symbols')
4
3
  let CssSyntaxError = require('./css-syntax-error')
5
4
  let Stringifier = require('./stringifier')
6
5
  let stringify = require('./stringify')
6
+ let { isClean, my } = require('./symbols')
7
7
 
8
8
  function cloneNode(obj, parent) {
9
9
  let cloned = new obj.constructor()
@@ -32,7 +32,38 @@ function cloneNode(obj, parent) {
32
32
  return cloned
33
33
  }
34
34
 
35
+ function sourceOffset(inputCSS, position) {
36
+ // Not all custom syntaxes support `offset` in `source.start` and `source.end`
37
+ if (position && typeof position.offset !== 'undefined') {
38
+ return position.offset
39
+ }
40
+
41
+ let column = 1
42
+ let line = 1
43
+ let offset = 0
44
+
45
+ for (let i = 0; i < inputCSS.length; i++) {
46
+ if (line === position.line && column === position.column) {
47
+ offset = i
48
+ break
49
+ }
50
+
51
+ if (inputCSS[i] === '\n') {
52
+ column = 1
53
+ line += 1
54
+ } else {
55
+ column += 1
56
+ }
57
+ }
58
+
59
+ return offset
60
+ }
61
+
35
62
  class Node {
63
+ get proxyOf() {
64
+ return this
65
+ }
66
+
36
67
  constructor(defaults = {}) {
37
68
  this.raws = {}
38
69
  this[isClean] = false
@@ -153,6 +184,11 @@ class Node {
153
184
  }
154
185
  }
155
186
 
187
+ /* c8 ignore next 3 */
188
+ markClean() {
189
+ this[isClean] = true
190
+ }
191
+
156
192
  markDirty() {
157
193
  if (this[isClean]) {
158
194
  this[isClean] = false
@@ -169,25 +205,37 @@ class Node {
169
205
  return this.parent.nodes[index + 1]
170
206
  }
171
207
 
172
- positionBy(opts, stringRepresentation) {
208
+ positionBy(opts = {}) {
173
209
  let pos = this.source.start
174
210
  if (opts.index) {
175
- pos = this.positionInside(opts.index, stringRepresentation)
211
+ pos = this.positionInside(opts.index)
176
212
  } else if (opts.word) {
177
- stringRepresentation = this.toString()
213
+ let inputString =
214
+ 'document' in this.source.input
215
+ ? this.source.input.document
216
+ : this.source.input.css
217
+ let stringRepresentation = inputString.slice(
218
+ sourceOffset(inputString, this.source.start),
219
+ sourceOffset(inputString, this.source.end)
220
+ )
178
221
  let index = stringRepresentation.indexOf(opts.word)
179
- if (index !== -1) pos = this.positionInside(index, stringRepresentation)
222
+ if (index !== -1) pos = this.positionInside(index)
180
223
  }
181
224
  return pos
182
225
  }
183
226
 
184
- positionInside(index, stringRepresentation) {
185
- let string = stringRepresentation || this.toString()
227
+ positionInside(index) {
186
228
  let column = this.source.start.column
187
229
  let line = this.source.start.line
188
-
189
- for (let i = 0; i < index; i++) {
190
- if (string[i] === '\n') {
230
+ let inputString =
231
+ 'document' in this.source.input
232
+ ? this.source.input.document
233
+ : this.source.input.css
234
+ let offset = sourceOffset(inputString, this.source.start)
235
+ let end = offset + index
236
+
237
+ for (let i = offset; i < end; i++) {
238
+ if (inputString[i] === '\n') {
191
239
  column = 1
192
240
  line += 1
193
241
  } else {
@@ -195,7 +243,7 @@ class Node {
195
243
  }
196
244
  }
197
245
 
198
- return { column, line }
246
+ return { column, line, offset: end }
199
247
  }
200
248
 
201
249
  prev() {
@@ -204,33 +252,51 @@ class Node {
204
252
  return this.parent.nodes[index - 1]
205
253
  }
206
254
 
207
- rangeBy(opts) {
255
+ rangeBy(opts = {}) {
256
+ let inputString =
257
+ 'document' in this.source.input
258
+ ? this.source.input.document
259
+ : this.source.input.css
208
260
  let start = {
209
261
  column: this.source.start.column,
210
- line: this.source.start.line
262
+ line: this.source.start.line,
263
+ offset: sourceOffset(inputString, this.source.start)
211
264
  }
212
265
  let end = this.source.end
213
266
  ? {
214
- column: this.source.end.column + 1,
215
- line: this.source.end.line
216
- }
267
+ column: this.source.end.column + 1,
268
+ line: this.source.end.line,
269
+ offset:
270
+ typeof this.source.end.offset === 'number'
271
+ ? // `source.end.offset` is exclusive, so we don't need to add 1
272
+ this.source.end.offset
273
+ : // Since line/column in this.source.end is inclusive,
274
+ // the `sourceOffset(... , this.source.end)` returns an inclusive offset.
275
+ // So, we add 1 to convert it to exclusive.
276
+ sourceOffset(inputString, this.source.end) + 1
277
+ }
217
278
  : {
218
- column: start.column + 1,
219
- line: start.line
220
- }
279
+ column: start.column + 1,
280
+ line: start.line,
281
+ offset: start.offset + 1
282
+ }
221
283
 
222
284
  if (opts.word) {
223
- let stringRepresentation = this.toString()
285
+ let stringRepresentation = inputString.slice(
286
+ sourceOffset(inputString, this.source.start),
287
+ sourceOffset(inputString, this.source.end)
288
+ )
224
289
  let index = stringRepresentation.indexOf(opts.word)
225
290
  if (index !== -1) {
226
- start = this.positionInside(index, stringRepresentation)
227
- end = this.positionInside(index + opts.word.length, stringRepresentation)
291
+ start = this.positionInside(index)
292
+ end = this.positionInside(index + opts.word.length)
228
293
  }
229
294
  } else {
230
295
  if (opts.start) {
231
296
  start = {
232
297
  column: opts.start.column,
233
- line: opts.start.line
298
+ line: opts.start.line,
299
+ offset: sourceOffset(inputString, opts.start)
234
300
  }
235
301
  } else if (opts.index) {
236
302
  start = this.positionInside(opts.index)
@@ -239,9 +305,10 @@ class Node {
239
305
  if (opts.end) {
240
306
  end = {
241
307
  column: opts.end.column,
242
- line: opts.end.line
308
+ line: opts.end.line,
309
+ offset: sourceOffset(inputString, opts.end)
243
310
  }
244
- } else if (opts.endIndex) {
311
+ } else if (typeof opts.endIndex === 'number') {
245
312
  end = this.positionInside(opts.endIndex)
246
313
  } else if (opts.index) {
247
314
  end = this.positionInside(opts.index + 1)
@@ -252,7 +319,11 @@ class Node {
252
319
  end.line < start.line ||
253
320
  (end.line === start.line && end.column <= start.column)
254
321
  ) {
255
- end = { column: start.column + 1, line: start.line }
322
+ end = {
323
+ column: start.column + 1,
324
+ line: start.line,
325
+ offset: start.offset + 1
326
+ }
256
327
  }
257
328
 
258
329
  return { end, start }
@@ -327,6 +398,7 @@ class Node {
327
398
  } else if (typeof value === 'object' && value.toJSON) {
328
399
  fixed[name] = value.toJSON(null, inputs)
329
400
  } else if (name === 'source') {
401
+ if (value == null) continue
330
402
  let inputId = inputs.get(value.input)
331
403
  if (inputId == null) {
332
404
  inputId = inputsNextIndex
@@ -366,15 +438,11 @@ class Node {
366
438
  return result
367
439
  }
368
440
 
369
- warn(result, text, opts) {
441
+ warn(result, text, opts = {}) {
370
442
  let data = { node: this }
371
443
  for (let i in opts) data[i] = opts[i]
372
444
  return result.warn(text, data)
373
445
  }
374
-
375
- get proxyOf() {
376
- return this
377
- }
378
446
  }
379
447
 
380
448
  module.exports = Node
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
3
  let Container = require('./container')
4
- let Parser = require('./parser')
5
4
  let Input = require('./input')
5
+ let Parser = require('./parser')
6
6
 
7
7
  function parse(css, opts) {
8
8
  let input = new Input(css, opts)
@@ -1,11 +1,11 @@
1
1
  'use strict'
2
2
 
3
- let Declaration = require('./declaration')
4
- let tokenizer = require('./tokenize')
5
- let Comment = require('./comment')
6
3
  let AtRule = require('./at-rule')
4
+ let Comment = require('./comment')
5
+ let Declaration = require('./declaration')
7
6
  let Root = require('./root')
8
7
  let Rule = require('./rule')
8
+ let tokenizer = require('./tokenize')
9
9
 
10
10
  const SAFE_COMMENT_NEIGHBOR = {
11
11
  empty: true,
@@ -28,7 +28,6 @@ class Parser {
28
28
  this.current = this.root
29
29
  this.spaces = ''
30
30
  this.semicolon = false
31
- this.customProperty = false
32
31
 
33
32
  this.createTokenizer()
34
33
  this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }
@@ -144,7 +143,7 @@ class Parser {
144
143
 
145
144
  colon(tokens) {
146
145
  let brackets = 0
147
- let token, type, prev
146
+ let prev, token, type
148
147
  for (let [i, element] of tokens.entries()) {
149
148
  token = element
150
149
  type = token[0]
@@ -177,7 +176,7 @@ class Parser {
177
176
  node.source.end.offset++
178
177
 
179
178
  let text = token[1].slice(2, -2)
180
- if (/^\s*$/.test(text)) {
179
+ if (!text.trim()) {
181
180
  node.text = ''
182
181
  node.raws.left = text
183
182
  node.raws.right = ''
@@ -268,12 +267,12 @@ class Parser {
268
267
  let str = ''
269
268
  for (let j = i; j > 0; j--) {
270
269
  let type = cache[j][0]
271
- if (str.trim().indexOf('!') === 0 && type !== 'space') {
270
+ if (str.trim().startsWith('!') && type !== 'space') {
272
271
  break
273
272
  }
274
273
  str = cache.pop()[1] + str
275
274
  }
276
- if (str.trim().indexOf('!') === 0) {
275
+ if (str.trim().startsWith('!')) {
277
276
  node.important = true
278
277
  node.raws.important = str
279
278
  tokens = cache
@@ -348,6 +347,8 @@ class Parser {
348
347
  if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
349
348
  prev.raws.ownSemicolon = this.spaces
350
349
  this.spaces = ''
350
+ prev.source.end = this.getPosition(token[2])
351
+ prev.source.end.offset += prev.raws.ownSemicolon.length
351
352
  }
352
353
  }
353
354
  }
@@ -592,7 +593,7 @@ class Parser {
592
593
 
593
594
  unknownWord(tokens) {
594
595
  throw this.input.error(
595
- 'Unknown word',
596
+ 'Unknown word ' + tokens[0][1],
596
597
  { offset: tokens[0][2] },
597
598
  { offset: tokens[0][2] + tokens[0][1].length }
598
599
  )
@@ -1,23 +1,23 @@
1
1
  'use strict'
2
2
 
3
+ let AtRule = require('./at-rule')
4
+ let Comment = require('./comment')
5
+ let Container = require('./container')
3
6
  let CssSyntaxError = require('./css-syntax-error')
4
7
  let Declaration = require('./declaration')
5
- let LazyResult = require('./lazy-result')
6
- let Container = require('./container')
7
- let Processor = require('./processor')
8
- let stringify = require('./stringify')
9
- let fromJSON = require('./fromJSON')
10
8
  let Document = require('./document')
11
- let Warning = require('./warning')
12
- let Comment = require('./comment')
13
- let AtRule = require('./at-rule')
14
- let Result = require('./result.js')
9
+ let fromJSON = require('./fromJSON')
15
10
  let Input = require('./input')
16
- let parse = require('./parse')
11
+ let LazyResult = require('./lazy-result')
17
12
  let list = require('./list')
18
- let Rule = require('./rule')
19
- let Root = require('./root')
20
13
  let Node = require('./node')
14
+ let parse = require('./parse')
15
+ let Processor = require('./processor')
16
+ let Result = require('./result.js')
17
+ let Root = require('./root')
18
+ let Rule = require('./rule')
19
+ let stringify = require('./stringify')
20
+ let Warning = require('./warning')
21
21
 
22
22
  function postcss(...plugins) {
23
23
  if (plugins.length === 1 && Array.isArray(plugins[0])) {