gsd-pi 2.73.1-dev.47ed32a → 2.73.1-dev.49397e5

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 (182) hide show
  1. package/dist/cli-web-branch.d.ts +4 -3
  2. package/dist/cli-web-branch.js +10 -7
  3. package/dist/cli.js +99 -206
  4. package/dist/headless-query.js +4 -1
  5. package/dist/logo.d.ts +1 -1
  6. package/dist/logo.js +1 -1
  7. package/dist/onboarding.js +59 -53
  8. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +59 -1
  9. package/dist/resources/extensions/gsd/auto/detect-stuck.js +11 -4
  10. package/dist/resources/extensions/gsd/auto/phases.js +60 -10
  11. package/dist/resources/extensions/gsd/auto-dispatch.js +11 -3
  12. package/dist/resources/extensions/gsd/auto-post-unit.js +93 -57
  13. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +13 -0
  14. package/dist/resources/extensions/gsd/auto-verification.js +88 -3
  15. package/dist/resources/extensions/gsd/auto.js +29 -10
  16. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +21 -8
  17. package/dist/resources/extensions/gsd/commands/catalog.js +26 -1
  18. package/dist/resources/extensions/gsd/commands/handlers/ops.js +20 -0
  19. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +68 -9
  20. package/dist/resources/extensions/gsd/commands-add-tests.js +111 -0
  21. package/dist/resources/extensions/gsd/commands-backlog.js +140 -0
  22. package/dist/resources/extensions/gsd/commands-do.js +79 -0
  23. package/dist/resources/extensions/gsd/commands-maintenance.js +6 -6
  24. package/dist/resources/extensions/gsd/commands-pr-branch.js +180 -0
  25. package/dist/resources/extensions/gsd/commands-session-report.js +82 -0
  26. package/dist/resources/extensions/gsd/commands-ship.js +187 -0
  27. package/dist/resources/extensions/gsd/db-writer.js +3 -5
  28. package/dist/resources/extensions/gsd/docs/preferences-reference.md +1 -1
  29. package/dist/resources/extensions/gsd/gsd-db.js +321 -0
  30. package/dist/resources/extensions/gsd/index.js +15 -2
  31. package/dist/resources/extensions/gsd/md-importer.js +3 -4
  32. package/dist/resources/extensions/gsd/memory-store.js +19 -51
  33. package/dist/resources/extensions/gsd/milestone-validation-gates.js +13 -12
  34. package/dist/resources/extensions/gsd/native-git-bridge.js +7 -4
  35. package/dist/resources/extensions/gsd/notification-widget.js +2 -2
  36. package/dist/resources/extensions/gsd/prompts/add-tests.md +35 -0
  37. package/dist/resources/extensions/gsd/state.js +66 -15
  38. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +3 -14
  39. package/dist/resources/extensions/gsd/triage-resolution.js +2 -5
  40. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -69
  41. package/dist/resources/extensions/gsd/workflow-migration.js +21 -22
  42. package/dist/resources/extensions/gsd/workflow-projections.js +4 -1
  43. package/dist/resources/extensions/gsd/workflow-reconcile.js +14 -11
  44. package/dist/tsconfig.extensions.tsbuildinfo +1 -0
  45. package/dist/web/standalone/.next/BUILD_ID +1 -1
  46. package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
  47. package/dist/web/standalone/.next/build-manifest.json +2 -2
  48. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  49. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  50. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  51. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  52. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  56. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  57. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  58. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  59. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  60. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  61. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  62. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  63. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  64. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  65. package/dist/web/standalone/.next/server/app/index.html +1 -1
  66. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  67. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  68. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  69. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  70. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  71. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  72. package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
  73. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  74. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  75. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  76. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  77. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  78. package/package.json +3 -3
  79. package/packages/mcp-server/tsconfig.json +1 -0
  80. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -0
  81. package/packages/native/tsconfig.tsbuildinfo +1 -0
  82. package/packages/pi-agent-core/tsconfig.json +1 -0
  83. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -0
  84. package/packages/pi-ai/tsconfig.json +1 -0
  85. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -0
  86. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  87. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +10 -2
  88. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  89. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts +2 -1
  90. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  91. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js +9 -3
  92. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  93. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts +2 -0
  94. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts.map +1 -0
  95. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js +52 -0
  96. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js.map +1 -0
  97. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  98. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +5 -1
  99. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  100. package/packages/pi-coding-agent/package.json +1 -1
  101. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +12 -6
  102. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.test.ts +73 -0
  103. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +9 -3
  104. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +5 -1
  105. package/packages/pi-coding-agent/tsconfig.json +1 -0
  106. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -0
  107. package/packages/pi-tui/dist/__tests__/tui.test.js +30 -0
  108. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  109. package/packages/pi-tui/dist/tui.d.ts +1 -0
  110. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  111. package/packages/pi-tui/dist/tui.js +22 -3
  112. package/packages/pi-tui/dist/tui.js.map +1 -1
  113. package/packages/pi-tui/src/__tests__/tui.test.ts +38 -0
  114. package/packages/pi-tui/src/tui.ts +20 -3
  115. package/packages/pi-tui/tsconfig.json +1 -0
  116. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -0
  117. package/packages/rpc-client/tsconfig.json +1 -0
  118. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -0
  119. package/pkg/package.json +1 -1
  120. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +95 -1
  121. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +88 -0
  122. package/src/resources/extensions/gsd/auto/detect-stuck.ts +12 -4
  123. package/src/resources/extensions/gsd/auto/loop-deps.ts +6 -0
  124. package/src/resources/extensions/gsd/auto/phases.ts +90 -10
  125. package/src/resources/extensions/gsd/auto-dispatch.ts +10 -4
  126. package/src/resources/extensions/gsd/auto-post-unit.ts +107 -58
  127. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +17 -0
  128. package/src/resources/extensions/gsd/auto-verification.ts +98 -3
  129. package/src/resources/extensions/gsd/auto.ts +33 -14
  130. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -8
  131. package/src/resources/extensions/gsd/commands/catalog.ts +26 -1
  132. package/src/resources/extensions/gsd/commands/handlers/ops.ts +20 -0
  133. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +74 -9
  134. package/src/resources/extensions/gsd/commands-add-tests.ts +137 -0
  135. package/src/resources/extensions/gsd/commands-backlog.ts +182 -0
  136. package/src/resources/extensions/gsd/commands-do.ts +109 -0
  137. package/src/resources/extensions/gsd/commands-maintenance.ts +6 -6
  138. package/src/resources/extensions/gsd/commands-pr-branch.ts +234 -0
  139. package/src/resources/extensions/gsd/commands-session-report.ts +101 -0
  140. package/src/resources/extensions/gsd/commands-ship.ts +219 -0
  141. package/src/resources/extensions/gsd/db-writer.ts +3 -5
  142. package/src/resources/extensions/gsd/docs/preferences-reference.md +1 -1
  143. package/src/resources/extensions/gsd/gsd-db.ts +467 -0
  144. package/src/resources/extensions/gsd/index.ts +18 -2
  145. package/src/resources/extensions/gsd/md-importer.ts +3 -5
  146. package/src/resources/extensions/gsd/memory-store.ts +31 -62
  147. package/src/resources/extensions/gsd/milestone-validation-gates.ts +13 -14
  148. package/src/resources/extensions/gsd/native-git-bridge.ts +11 -12
  149. package/src/resources/extensions/gsd/notification-widget.ts +2 -2
  150. package/src/resources/extensions/gsd/prompts/add-tests.md +35 -0
  151. package/src/resources/extensions/gsd/state.ts +80 -17
  152. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +2 -2
  153. package/src/resources/extensions/gsd/tests/auto-post-unit-step-message.test.ts +53 -0
  154. package/src/resources/extensions/gsd/tests/commands-backlog.test.ts +158 -0
  155. package/src/resources/extensions/gsd/tests/commands-do.test.ts +127 -0
  156. package/src/resources/extensions/gsd/tests/commands-pr-branch.test.ts +68 -0
  157. package/src/resources/extensions/gsd/tests/commands-session-report.test.ts +82 -0
  158. package/src/resources/extensions/gsd/tests/commands-ship.test.ts +71 -0
  159. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +14 -0
  160. package/src/resources/extensions/gsd/tests/complete-milestone-false-merge.test.ts +142 -0
  161. package/src/resources/extensions/gsd/tests/completed-at-reconcile.test.ts +42 -0
  162. package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +3 -2
  163. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +3 -2
  164. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +68 -8
  165. package/src/resources/extensions/gsd/tests/derive-state.test.ts +3 -3
  166. package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +154 -0
  167. package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +4 -2
  168. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +68 -1
  169. package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +140 -0
  170. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +180 -0
  171. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +5 -7
  172. package/src/resources/extensions/gsd/tests/token-profile.test.ts +1 -1
  173. package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +179 -0
  174. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +223 -0
  175. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +3 -11
  176. package/src/resources/extensions/gsd/triage-resolution.ts +2 -7
  177. package/src/resources/extensions/gsd/workflow-manifest.ts +9 -104
  178. package/src/resources/extensions/gsd/workflow-migration.ts +21 -29
  179. package/src/resources/extensions/gsd/workflow-projections.ts +8 -1
  180. package/src/resources/extensions/gsd/workflow-reconcile.ts +15 -15
  181. /package/dist/web/standalone/.next/static/{WawMb3TMcYLkGJLTg_x1u → tAsSblRKK1lG7MVOwsO92}/_buildManifest.js +0 -0
  182. /package/dist/web/standalone/.next/static/{WawMb3TMcYLkGJLTg_x1u → tAsSblRKK1lG7MVOwsO92}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@
4
4
  // Populates data into the already-existing v10 schema tables.
5
5
  import { existsSync, readdirSync, readFileSync } from "node:fs";
6
6
  import { join } from "node:path";
7
- import { _getAdapter, transaction } from "./gsd-db.js";
7
+ import { _getAdapter, bulkInsertLegacyHierarchy } from "./gsd-db.js";
8
8
  import { parseRoadmap, parsePlan } from "./parsers-legacy.js";
9
9
  import { logWarning } from "./workflow-logger.js";
10
10
  // ─── needsAutoMigration ───────────────────────────────────────────────────
@@ -174,27 +174,26 @@ export function migrateFromMarkdown(basePath) {
174
174
  process.stderr.write("workflow-migration: no milestones collected, nothing to insert\n");
175
175
  return;
176
176
  }
177
- const placeholders = migratedMilestoneIds.map(() => "?").join(",");
178
- transaction(() => {
179
- // Clear existing data to handle stale DB shape (DELETE ... IN (...))
180
- db.prepare(`DELETE FROM tasks WHERE milestone_id IN (${placeholders})`).run(...migratedMilestoneIds);
181
- db.prepare(`DELETE FROM slices WHERE milestone_id IN (${placeholders})`).run(...migratedMilestoneIds);
182
- db.prepare(`DELETE FROM milestones WHERE id IN (${placeholders})`).run(...migratedMilestoneIds);
183
- // Insert milestones
184
- const insertMilestone = db.prepare("INSERT INTO milestones (id, title, status, created_at) VALUES (?, ?, ?, ?)");
185
- for (const m of milestoneInserts) {
186
- insertMilestone.run(m.id, m.title, m.status, now);
187
- }
188
- // Insert slices (using v10 column names: depends, sequence)
189
- const insertSlice = db.prepare("INSERT INTO slices (id, milestone_id, title, status, risk, depends, sequence, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
190
- for (const s of sliceInserts) {
191
- insertSlice.run(s.id, s.milestoneId, s.title, s.status, s.risk, "[]", s.sequence, now);
192
- }
193
- // Insert tasks (using v10 column names: sequence, blocker_discovered, full_summary_md)
194
- const insertTask = db.prepare("INSERT INTO tasks (id, slice_id, milestone_id, title, description, status, estimate, files, sequence) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
195
- for (const t of taskInserts) {
196
- insertTask.run(t.id, t.sliceId, t.milestoneId, t.title, "", t.status, "", "[]", t.sequence);
197
- }
177
+ bulkInsertLegacyHierarchy({
178
+ milestones: milestoneInserts,
179
+ slices: sliceInserts.map(s => ({
180
+ id: s.id,
181
+ milestoneId: s.milestoneId,
182
+ title: s.title,
183
+ status: s.status,
184
+ risk: s.risk,
185
+ sequence: s.sequence,
186
+ })),
187
+ tasks: taskInserts.map(t => ({
188
+ id: t.id,
189
+ sliceId: t.sliceId,
190
+ milestoneId: t.milestoneId,
191
+ title: t.title,
192
+ status: t.status,
193
+ sequence: t.sequence,
194
+ })),
195
+ clearMilestoneIds: migratedMilestoneIds,
196
+ createdAt: now,
198
197
  });
199
198
  }
200
199
  // ─── validateMigration ────────────────────────────────────────────────────
@@ -303,7 +303,10 @@ export async function renderStateProjection(basePath) {
303
303
  try {
304
304
  adapter.prepare("SELECT 1").get();
305
305
  }
306
- catch {
306
+ catch (err) {
307
+ logWarning("projection", "renderStateProjection: DB handle probe failed, skipping render", {
308
+ error: err.message,
309
+ });
307
310
  return;
308
311
  }
309
312
  const state = await deriveState(basePath);
@@ -2,7 +2,7 @@ import { join } from "node:path";
2
2
  import { mkdirSync, existsSync, readFileSync, unlinkSync } from "node:fs";
3
3
  import { logWarning, logError } from "./workflow-logger.js";
4
4
  import { readEvents, findForkPoint, getSessionId } from "./workflow-events.js";
5
- import { transaction, updateTaskStatus, updateSliceStatus, updateMilestoneStatus, getSliceTasks, insertMilestone, _getAdapter, getMilestoneSlices, insertVerificationEvidence, upsertDecision, openDatabase, setTaskBlockerDiscovered, } from "./gsd-db.js";
5
+ import { transaction, updateTaskStatus, updateSliceStatus, updateMilestoneStatus, getSliceTasks, insertMilestone, getMilestoneSlices, insertVerificationEvidence, upsertDecision, openDatabase, setTaskBlockerDiscovered, insertOrIgnoreSlice, insertOrIgnoreTask, } from "./gsd-db.js";
6
6
  import { isClosedStatus } from "./status-guards.js";
7
7
  import { invalidateStateCache } from "./state.js";
8
8
  import { clearPathCache } from "./paths.js";
@@ -132,11 +132,12 @@ function replayEvents(events) {
132
132
  const milestoneId = p["milestoneId"];
133
133
  const sliceId = p["sliceId"];
134
134
  if (milestoneId && sliceId) {
135
- const adapter = _getAdapter();
136
- if (adapter) {
137
- adapter.prepare(`INSERT OR IGNORE INTO slices (milestone_id, id, title, status, created_at)
138
- VALUES (:mid, :sid, :title, 'pending', :ts)`).run({ ":mid": milestoneId, ":sid": sliceId, ":title": p["title"] ?? sliceId, ":ts": event.ts });
139
- }
135
+ insertOrIgnoreSlice({
136
+ milestoneId,
137
+ sliceId,
138
+ title: p["title"] ?? sliceId,
139
+ createdAt: event.ts,
140
+ });
140
141
  }
141
142
  break;
142
143
  }
@@ -148,11 +149,13 @@ function replayEvents(events) {
148
149
  const sliceId = p["sliceId"];
149
150
  const taskId = p["taskId"];
150
151
  if (milestoneId && sliceId && taskId) {
151
- const adapter = _getAdapter();
152
- if (adapter) {
153
- adapter.prepare(`INSERT OR IGNORE INTO tasks (milestone_id, slice_id, id, title, status, created_at)
154
- VALUES (:mid, :sid, :tid, :title, 'pending', :ts)`).run({ ":mid": milestoneId, ":sid": sliceId, ":tid": taskId, ":title": p["title"] ?? taskId, ":ts": event.ts });
155
- }
152
+ insertOrIgnoreTask({
153
+ milestoneId,
154
+ sliceId,
155
+ taskId,
156
+ title: p["title"] ?? taskId,
157
+ createdAt: event.ts,
158
+ });
156
159
  }
157
160
  break;
158
161
  }