groundswell 0.0.2 → 1.0.0

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 (554) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -9
  3. package/dist/cache/cache-key.d.ts +86 -0
  4. package/dist/cache/cache-key.d.ts.map +1 -0
  5. package/dist/cache/cache-key.js +204 -0
  6. package/dist/cache/cache-key.js.map +1 -0
  7. package/dist/cache/cache.d.ts +104 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/cache.js +179 -0
  10. package/dist/cache/cache.js.map +1 -0
  11. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  12. package/dist/cache/index.d.ts.map +1 -0
  13. package/dist/cache/index.js +6 -0
  14. package/dist/cache/index.js.map +1 -0
  15. package/dist/core/agent.d.ts +203 -0
  16. package/dist/core/agent.d.ts.map +1 -0
  17. package/dist/core/agent.js +833 -0
  18. package/dist/core/agent.js.map +1 -0
  19. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  20. package/dist/core/context.d.ts.map +1 -0
  21. package/dist/core/context.js +80 -0
  22. package/dist/core/context.js.map +1 -0
  23. package/dist/core/event-tree.d.ts +72 -0
  24. package/dist/core/event-tree.d.ts.map +1 -0
  25. package/dist/core/event-tree.js +211 -0
  26. package/dist/core/event-tree.js.map +1 -0
  27. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  28. package/dist/core/factory.d.ts.map +1 -0
  29. package/dist/core/factory.js +110 -0
  30. package/dist/core/factory.js.map +1 -0
  31. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +9 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/logger.d.ts +50 -0
  36. package/dist/core/logger.d.ts.map +1 -0
  37. package/dist/core/logger.js +91 -0
  38. package/dist/core/logger.js.map +1 -0
  39. package/dist/core/mcp-handler.d.ts +127 -0
  40. package/dist/core/mcp-handler.d.ts.map +1 -0
  41. package/dist/core/mcp-handler.js +323 -0
  42. package/dist/core/mcp-handler.js.map +1 -0
  43. package/dist/core/prompt.d.ts +80 -0
  44. package/dist/core/prompt.d.ts.map +1 -0
  45. package/dist/core/prompt.js +120 -0
  46. package/dist/core/prompt.js.map +1 -0
  47. package/dist/core/workflow-context.d.ts +61 -0
  48. package/dist/core/workflow-context.d.ts.map +1 -0
  49. package/dist/core/workflow-context.js +358 -0
  50. package/dist/core/workflow-context.js.map +1 -0
  51. package/dist/core/workflow.d.ts +543 -0
  52. package/dist/core/workflow.d.ts.map +1 -0
  53. package/dist/core/workflow.js +986 -0
  54. package/dist/core/workflow.js.map +1 -0
  55. package/dist/debugger/event-replayer.d.ts +422 -0
  56. package/dist/debugger/event-replayer.d.ts.map +1 -0
  57. package/dist/debugger/event-replayer.js +639 -0
  58. package/dist/debugger/event-replayer.js.map +1 -0
  59. package/dist/debugger/index.d.ts +2 -0
  60. package/dist/debugger/index.d.ts.map +1 -0
  61. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  62. package/dist/debugger/index.js.map +1 -0
  63. package/dist/debugger/tree-debugger.d.ts +240 -0
  64. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  65. package/dist/debugger/tree-debugger.js +620 -0
  66. package/dist/debugger/tree-debugger.js.map +1 -0
  67. package/dist/decorators/index.d.ts +4 -0
  68. package/dist/decorators/index.d.ts.map +1 -0
  69. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  70. package/dist/decorators/index.js.map +1 -0
  71. package/dist/decorators/observed-state.d.ts +32 -0
  72. package/dist/decorators/observed-state.d.ts.map +1 -0
  73. package/dist/decorators/observed-state.js +79 -0
  74. package/dist/decorators/observed-state.js.map +1 -0
  75. package/dist/decorators/step.d.ts +15 -0
  76. package/dist/decorators/step.d.ts.map +1 -0
  77. package/dist/decorators/step.js +192 -0
  78. package/dist/decorators/step.js.map +1 -0
  79. package/dist/decorators/task.d.ts +50 -0
  80. package/dist/decorators/task.d.ts.map +1 -0
  81. package/dist/decorators/task.js +118 -0
  82. package/dist/decorators/task.js.map +1 -0
  83. package/dist/examples/index.d.ts +3 -0
  84. package/dist/examples/index.d.ts.map +1 -0
  85. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  86. package/dist/examples/index.js.map +1 -0
  87. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  88. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  89. package/dist/examples/tdd-orchestrator.js +121 -0
  90. package/dist/examples/tdd-orchestrator.js.map +1 -0
  91. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  92. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  93. package/dist/examples/test-cycle-workflow.js +116 -0
  94. package/dist/examples/test-cycle-workflow.js.map +1 -0
  95. package/dist/harnesses/claude-code-harness.d.ts +391 -0
  96. package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
  97. package/dist/harnesses/claude-code-harness.js +1076 -0
  98. package/dist/harnesses/claude-code-harness.js.map +1 -0
  99. package/dist/harnesses/harness-registry.d.ts +440 -0
  100. package/dist/harnesses/harness-registry.d.ts.map +1 -0
  101. package/dist/harnesses/harness-registry.js +543 -0
  102. package/dist/harnesses/harness-registry.js.map +1 -0
  103. package/dist/harnesses/index.d.ts +12 -0
  104. package/dist/harnesses/index.d.ts.map +1 -0
  105. package/dist/harnesses/index.js +11 -0
  106. package/dist/harnesses/index.js.map +1 -0
  107. package/dist/harnesses/pi-harness.d.ts +219 -0
  108. package/dist/harnesses/pi-harness.d.ts.map +1 -0
  109. package/dist/harnesses/pi-harness.js +676 -0
  110. package/dist/harnesses/pi-harness.js.map +1 -0
  111. package/dist/harnesses/pi-schema-converter.d.ts +24 -0
  112. package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
  113. package/dist/harnesses/pi-schema-converter.js +81 -0
  114. package/dist/harnesses/pi-schema-converter.js.map +1 -0
  115. package/dist/harnesses/register-defaults.d.ts +24 -0
  116. package/dist/harnesses/register-defaults.d.ts.map +1 -0
  117. package/dist/harnesses/register-defaults.js +40 -0
  118. package/dist/harnesses/register-defaults.js.map +1 -0
  119. package/dist/harnesses/session-store.d.ts +201 -0
  120. package/dist/harnesses/session-store.d.ts.map +1 -0
  121. package/dist/harnesses/session-store.js +254 -0
  122. package/dist/harnesses/session-store.js.map +1 -0
  123. package/dist/index.d.ts +37 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +57 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/reflection/index.d.ts +5 -0
  128. package/dist/reflection/index.d.ts.map +1 -0
  129. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  130. package/dist/reflection/index.js.map +1 -0
  131. package/dist/reflection/reflection.d.ts +84 -0
  132. package/dist/reflection/reflection.d.ts.map +1 -0
  133. package/dist/reflection/reflection.js +344 -0
  134. package/dist/reflection/reflection.js.map +1 -0
  135. package/dist/tools/index.d.ts +6 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +11 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/introspection.d.ts +165 -0
  140. package/dist/tools/introspection.d.ts.map +1 -0
  141. package/dist/tools/introspection.js +324 -0
  142. package/dist/tools/introspection.js.map +1 -0
  143. package/dist/types/agent.d.ts +1317 -0
  144. package/dist/types/agent.d.ts.map +1 -0
  145. package/dist/types/agent.js +423 -0
  146. package/dist/types/agent.js.map +1 -0
  147. package/dist/types/decorators.d.ts +40 -0
  148. package/dist/types/decorators.d.ts.map +1 -0
  149. package/dist/types/decorators.js +2 -0
  150. package/dist/types/decorators.js.map +1 -0
  151. package/dist/types/error-strategy.d.ts +13 -0
  152. package/dist/types/error-strategy.d.ts.map +1 -0
  153. package/dist/types/error-strategy.js +2 -0
  154. package/dist/types/error-strategy.js.map +1 -0
  155. package/dist/types/error.d.ts +20 -0
  156. package/dist/types/error.d.ts.map +1 -0
  157. package/dist/types/error.js +2 -0
  158. package/dist/types/error.js.map +1 -0
  159. package/dist/types/events.d.ts +113 -0
  160. package/dist/types/events.d.ts.map +1 -0
  161. package/dist/types/events.js +2 -0
  162. package/dist/types/events.js.map +1 -0
  163. package/dist/types/harnesses.d.ts +474 -0
  164. package/dist/types/harnesses.d.ts.map +1 -0
  165. package/dist/types/harnesses.js +2 -0
  166. package/dist/types/harnesses.js.map +1 -0
  167. package/dist/types/index.d.ts +23 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +8 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/types/logging.d.ts +24 -0
  172. package/dist/types/logging.d.ts.map +1 -0
  173. package/dist/types/logging.js +2 -0
  174. package/dist/types/logging.js.map +1 -0
  175. package/dist/types/observer.d.ts +18 -0
  176. package/dist/types/observer.d.ts.map +1 -0
  177. package/dist/types/observer.js +2 -0
  178. package/dist/types/observer.js.map +1 -0
  179. package/dist/types/prompt.d.ts +31 -0
  180. package/dist/types/prompt.d.ts.map +1 -0
  181. package/dist/types/prompt.js +6 -0
  182. package/dist/types/prompt.js.map +1 -0
  183. package/dist/types/providers.d.ts +691 -0
  184. package/dist/types/providers.d.ts.map +1 -0
  185. package/dist/types/providers.js +14 -0
  186. package/dist/types/providers.js.map +1 -0
  187. package/dist/types/reflection.d.ts +96 -0
  188. package/dist/types/reflection.d.ts.map +1 -0
  189. package/dist/types/reflection.js +24 -0
  190. package/dist/types/reflection.js.map +1 -0
  191. package/dist/types/restart.d.ts +132 -0
  192. package/dist/types/restart.d.ts.map +1 -0
  193. package/dist/types/restart.js +2 -0
  194. package/dist/types/restart.js.map +1 -0
  195. package/dist/types/sdk-primitives.d.ts +118 -0
  196. package/dist/types/sdk-primitives.d.ts.map +1 -0
  197. package/dist/types/sdk-primitives.js +6 -0
  198. package/dist/types/sdk-primitives.js.map +1 -0
  199. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  200. package/dist/types/snapshot.d.ts.map +1 -0
  201. package/dist/types/snapshot.js +2 -0
  202. package/dist/types/snapshot.js.map +1 -0
  203. package/dist/types/streaming.d.ts +194 -0
  204. package/dist/types/streaming.d.ts.map +1 -0
  205. package/dist/types/streaming.js +67 -0
  206. package/dist/types/streaming.js.map +1 -0
  207. package/dist/types/workflow-context.d.ts +275 -0
  208. package/dist/types/workflow-context.d.ts.map +1 -0
  209. package/dist/types/workflow-context.js +8 -0
  210. package/dist/types/workflow-context.js.map +1 -0
  211. package/dist/types/workflow.d.ts +30 -0
  212. package/dist/types/workflow.d.ts.map +1 -0
  213. package/dist/types/workflow.js +2 -0
  214. package/dist/types/workflow.js.map +1 -0
  215. package/dist/utils/agent-validation.d.ts +88 -0
  216. package/dist/utils/agent-validation.d.ts.map +1 -0
  217. package/dist/utils/agent-validation.js +87 -0
  218. package/dist/utils/agent-validation.js.map +1 -0
  219. package/dist/utils/delay.d.ts +7 -0
  220. package/dist/utils/delay.d.ts.map +1 -0
  221. package/dist/utils/delay.js +9 -0
  222. package/dist/utils/delay.js.map +1 -0
  223. package/dist/utils/harness-config.d.ts +180 -0
  224. package/dist/utils/harness-config.d.ts.map +1 -0
  225. package/dist/utils/harness-config.js +311 -0
  226. package/dist/utils/harness-config.js.map +1 -0
  227. package/dist/utils/id.d.ts +6 -0
  228. package/dist/utils/id.d.ts.map +1 -0
  229. package/dist/utils/id.js +12 -0
  230. package/dist/utils/id.js.map +1 -0
  231. package/dist/utils/index.d.ts +13 -0
  232. package/dist/utils/index.d.ts.map +1 -0
  233. package/dist/utils/index.js +11 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/model-spec.d.ts +110 -0
  236. package/dist/utils/model-spec.d.ts.map +1 -0
  237. package/dist/utils/model-spec.js +149 -0
  238. package/dist/utils/model-spec.js.map +1 -0
  239. package/dist/utils/observable.d.ts +54 -0
  240. package/dist/utils/observable.d.ts.map +1 -0
  241. package/dist/utils/observable.js +82 -0
  242. package/dist/utils/observable.js.map +1 -0
  243. package/dist/utils/provider-config.d.ts +10 -0
  244. package/dist/utils/provider-config.d.ts.map +1 -0
  245. package/dist/utils/provider-config.js +10 -0
  246. package/dist/utils/provider-config.js.map +1 -0
  247. package/dist/utils/restart-analysis.d.ts +202 -0
  248. package/dist/utils/restart-analysis.d.ts.map +1 -0
  249. package/dist/utils/restart-analysis.js +426 -0
  250. package/dist/utils/restart-analysis.js.map +1 -0
  251. package/dist/utils/session-serialization.d.ts +118 -0
  252. package/dist/utils/session-serialization.d.ts.map +1 -0
  253. package/dist/utils/session-serialization.js +217 -0
  254. package/dist/utils/session-serialization.js.map +1 -0
  255. package/dist/utils/workflow-error-utils.d.ts +22 -0
  256. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  257. package/dist/utils/workflow-error-utils.js +45 -0
  258. package/dist/utils/workflow-error-utils.js.map +1 -0
  259. package/package.json +34 -5
  260. package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
  261. package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
  262. package/.claude/commands/task-breakdown.md +0 -94
  263. package/.claude/settings.local.json +0 -9
  264. package/.claude/system_prompts/task-breakdown.md +0 -101
  265. package/CHANGELOG.md +0 -188
  266. package/PRD.md +0 -543
  267. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  268. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  269. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  270. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  271. package/PRPs/PRDs/tasks-001.json +0 -492
  272. package/PRPs/README.md +0 -83
  273. package/PRPs/templates/prp_base.md +0 -222
  274. package/docs/agent.md +0 -422
  275. package/docs/prompt.md +0 -419
  276. package/docs/workflow.md +0 -600
  277. package/examples/README.md +0 -258
  278. package/examples/examples/01-basic-workflow.ts +0 -100
  279. package/examples/examples/02-decorator-options.ts +0 -217
  280. package/examples/examples/03-parent-child.ts +0 -241
  281. package/examples/examples/04-observers-debugger.ts +0 -340
  282. package/examples/examples/05-error-handling.ts +0 -387
  283. package/examples/examples/06-concurrent-tasks.ts +0 -352
  284. package/examples/examples/07-agent-loops.ts +0 -432
  285. package/examples/examples/08-sdk-features.ts +0 -667
  286. package/examples/examples/09-reflection.ts +0 -573
  287. package/examples/examples/10-introspection.ts +0 -550
  288. package/examples/examples/11-reparenting-workflows.ts +0 -269
  289. package/examples/index.ts +0 -147
  290. package/examples/utils/helpers.ts +0 -57
  291. package/package-lock.json +0 -2398
  292. package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
  293. package/plan/001_d3bb02af4886/backlog.json +0 -867
  294. package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
  295. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
  296. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
  297. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
  298. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
  299. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
  300. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
  301. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
  302. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
  303. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
  304. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
  305. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
  306. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
  307. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
  308. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
  309. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
  310. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
  311. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
  312. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
  313. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
  314. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
  315. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
  316. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
  317. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
  318. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
  319. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
  320. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
  321. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
  322. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
  323. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
  324. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
  325. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
  326. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
  327. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
  328. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
  329. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
  330. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
  331. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
  332. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
  333. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
  334. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
  335. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
  336. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
  337. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
  338. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
  339. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
  340. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
  341. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
  342. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
  343. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
  344. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
  345. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
  346. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
  347. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
  348. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
  349. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
  350. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
  351. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
  352. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
  353. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
  354. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
  355. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
  356. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
  357. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
  358. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
  359. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
  360. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
  361. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
  362. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
  363. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
  364. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
  365. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
  366. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
  367. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
  368. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
  369. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
  370. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
  371. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
  372. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
  373. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
  374. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
  375. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
  376. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
  377. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
  378. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
  379. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
  380. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
  381. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
  382. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
  383. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
  384. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
  385. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
  386. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
  387. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
  388. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
  389. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
  390. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
  391. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
  392. package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
  393. package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
  394. package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
  395. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
  396. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
  397. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
  398. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
  399. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
  400. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
  401. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
  402. package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
  403. package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
  404. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
  405. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
  406. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
  407. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
  408. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
  409. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
  410. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
  411. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
  412. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
  413. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
  414. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
  415. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
  416. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
  417. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
  418. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
  419. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
  420. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
  421. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
  422. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
  423. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
  424. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
  425. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
  426. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
  427. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
  428. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
  429. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
  430. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
  431. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
  432. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
  433. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
  434. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
  435. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
  436. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
  437. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
  438. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
  439. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  440. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
  441. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  442. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  443. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
  444. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
  445. package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
  446. package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
  447. package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
  448. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
  449. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
  450. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
  451. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
  452. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
  453. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
  454. package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
  455. package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
  456. package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
  457. package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
  458. package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
  459. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
  460. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
  461. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
  462. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
  463. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
  464. package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  465. package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
  466. package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
  467. package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
  468. package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
  469. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
  470. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
  471. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
  472. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
  473. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
  474. package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
  475. package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
  476. package/scripts/generate-llms-full.ts +0 -206
  477. package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
  478. package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
  479. package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
  480. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
  481. package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
  482. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
  483. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
  484. package/src/__tests__/adversarial/edge-case.test.ts +0 -703
  485. package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
  486. package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
  487. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
  488. package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
  489. package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
  490. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
  491. package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
  492. package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
  493. package/src/__tests__/helpers/index.ts +0 -18
  494. package/src/__tests__/helpers/tree-verification.ts +0 -257
  495. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  496. package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
  497. package/src/__tests__/integration/observer-logging.test.ts +0 -643
  498. package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
  499. package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
  500. package/src/__tests__/unit/agent.test.ts +0 -169
  501. package/src/__tests__/unit/cache-key.test.ts +0 -182
  502. package/src/__tests__/unit/cache.test.ts +0 -172
  503. package/src/__tests__/unit/context.test.ts +0 -217
  504. package/src/__tests__/unit/decorators.test.ts +0 -100
  505. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  506. package/src/__tests__/unit/logger.test.ts +0 -293
  507. package/src/__tests__/unit/observable.test.ts +0 -321
  508. package/src/__tests__/unit/prompt.test.ts +0 -135
  509. package/src/__tests__/unit/reflection.test.ts +0 -210
  510. package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
  511. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  512. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
  513. package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
  514. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
  515. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
  516. package/src/__tests__/unit/workflow.test.ts +0 -357
  517. package/src/cache/cache-key.ts +0 -244
  518. package/src/cache/cache.ts +0 -236
  519. package/src/core/agent.ts +0 -593
  520. package/src/core/event-tree.ts +0 -260
  521. package/src/core/logger.ts +0 -112
  522. package/src/core/mcp-handler.ts +0 -184
  523. package/src/core/prompt.ts +0 -150
  524. package/src/core/workflow-context.ts +0 -351
  525. package/src/core/workflow.ts +0 -540
  526. package/src/debugger/tree-debugger.ts +0 -255
  527. package/src/decorators/observed-state.ts +0 -95
  528. package/src/decorators/step.ts +0 -139
  529. package/src/decorators/task.ts +0 -159
  530. package/src/examples/tdd-orchestrator.ts +0 -65
  531. package/src/examples/test-cycle-workflow.ts +0 -64
  532. package/src/index.ts +0 -142
  533. package/src/reflection/reflection.ts +0 -407
  534. package/src/tools/index.ts +0 -36
  535. package/src/tools/introspection.ts +0 -464
  536. package/src/types/agent.ts +0 -90
  537. package/src/types/decorators.ts +0 -32
  538. package/src/types/error-strategy.ts +0 -13
  539. package/src/types/error.ts +0 -20
  540. package/src/types/events.ts +0 -75
  541. package/src/types/index.ts +0 -55
  542. package/src/types/logging.ts +0 -24
  543. package/src/types/observer.ts +0 -18
  544. package/src/types/prompt.ts +0 -40
  545. package/src/types/reflection.ts +0 -117
  546. package/src/types/sdk-primitives.ts +0 -128
  547. package/src/types/workflow-context.ts +0 -163
  548. package/src/types/workflow.ts +0 -37
  549. package/src/utils/id.ts +0 -11
  550. package/src/utils/index.ts +0 -4
  551. package/src/utils/observable.ts +0 -106
  552. package/src/utils/workflow-error-utils.ts +0 -56
  553. package/tsconfig.json +0 -22
  554. package/vitest.config.ts +0 -16
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Session serialization utilities
3
+ *
4
+ * @module
5
+ * @remarks
6
+ * Provides safe serialization/deserialization of SessionState objects
7
+ * containing SDK message types with circular reference handling.
8
+ *
9
+ * Handles edge cases including:
10
+ * - Circular references from application code
11
+ * - Non-serializable values (functions, Symbols)
12
+ * - Unknown type fields in SDK messages
13
+ * - Type validation during deserialization
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { serializeSession, deserializeSession } from 'groundswell';
18
+ *
19
+ * const state: SessionState = { history: [], lastResult: null };
20
+ * const json = serializeSession(state);
21
+ * const restored = deserializeSession(json);
22
+ * console.log(restored); // { history: [], lastResult: null }
23
+ * ```
24
+ */
25
+ /**
26
+ * Error thrown when session serialization fails
27
+ *
28
+ * @remarks
29
+ * Provides detailed error context for debugging serialization issues.
30
+ * Includes the property path and value that caused the failure.
31
+ *
32
+ * @public
33
+ */
34
+ export class SessionSerializationError extends Error {
35
+ path;
36
+ value;
37
+ /**
38
+ * Creates a new SessionSerializationError
39
+ *
40
+ * @param message - Human-readable error message
41
+ * @param path - Property path where the error occurred (e.g., "history.0.tool_use_result")
42
+ * @param value - The value that caused the serialization failure
43
+ */
44
+ constructor(message, path, value) {
45
+ super(message);
46
+ this.path = path;
47
+ this.value = value;
48
+ this.name = "SessionSerializationError";
49
+ }
50
+ }
51
+ /**
52
+ * Creates a custom replacer function for JSON.stringify
53
+ *
54
+ * @remarks
55
+ * The replacer handles non-serializable values and circular references:
56
+ * - Functions become `[Function:name]` strings
57
+ * - Symbols become `[Symbol:description]` strings
58
+ * - Circular references become `[Circular:key]` strings
59
+ * - Undefined becomes null (JSON-compatible)
60
+ * - Uses WeakSet for circular reference tracking to avoid memory leaks
61
+ *
62
+ * @returns A replacer function for use with JSON.stringify
63
+ *
64
+ * @internal
65
+ */
66
+ function createReplacer() {
67
+ const seen = new WeakSet();
68
+ return (key, value) => {
69
+ // CRITICAL: Check circular references FIRST
70
+ // Using WeakSet allows garbage collection of tracked objects
71
+ if (typeof value === "object" && value !== null) {
72
+ if (seen.has(value)) {
73
+ return `[Circular:${key}]`;
74
+ }
75
+ seen.add(value);
76
+ }
77
+ // Handle functions - cannot be serialized to JSON
78
+ if (typeof value === "function") {
79
+ return `[Function:${value.name || "anonymous"}]`;
80
+ }
81
+ // Handle symbols - cannot be serialized to JSON
82
+ if (typeof value === "symbol") {
83
+ return `[Symbol:${value.description || "unknown"}]`;
84
+ }
85
+ // Handle undefined - becomes null in JSON
86
+ if (value === undefined) {
87
+ return null;
88
+ }
89
+ return value;
90
+ };
91
+ }
92
+ /**
93
+ * Type guard for validating SessionState structure
94
+ *
95
+ * @remarks
96
+ * Validates that the parsed object has the required structure
97
+ * for a SessionState. Performs runtime type checking to ensure
98
+ * data integrity during deserialization.
99
+ *
100
+ * @param value - The value to validate
101
+ * @returns True if the value is a valid SessionState structure
102
+ *
103
+ * @internal
104
+ */
105
+ function isValidSessionState(value) {
106
+ // Check if value is an object
107
+ if (typeof value !== "object" || value === null) {
108
+ return false;
109
+ }
110
+ const obj = value;
111
+ // Check for required history property
112
+ if (!("history" in obj) || !Array.isArray(obj.history)) {
113
+ return false;
114
+ }
115
+ // Check for required lastResult property
116
+ if (!("lastResult" in obj)) {
117
+ return false;
118
+ }
119
+ // lastResult can be null or an object
120
+ if (obj.lastResult !== null && typeof obj.lastResult !== "object") {
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ /**
126
+ * Serialize a SessionState to JSON string
127
+ *
128
+ * @remarks
129
+ * Converts a SessionState object to a JSON string with special handling
130
+ * for non-serializable values and circular references. The resulting JSON
131
+ * is pretty-printed with 2-space indentation for readability.
132
+ *
133
+ * Handles edge cases from SDK message types:
134
+ * - `SDKUserMessage.tool_use_result` (unknown type)
135
+ * - `SDKResultMessage.result` (unknown type)
136
+ * - `SDKResultMessage.structured_output` (unknown type)
137
+ *
138
+ * Throws {@link SessionSerializationError} if serialization fails,
139
+ * with contextual information about the failure.
140
+ *
141
+ * @param state - The session state to serialize
142
+ * @returns JSON string representation of the session
143
+ * @throws {SessionSerializationError} If serialization fails
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * import { serializeSession, deserializeSession } from 'groundswell';
148
+ *
149
+ * const state: SessionState = {
150
+ * history: [],
151
+ * lastResult: null
152
+ * };
153
+ *
154
+ * const json = serializeSession(state);
155
+ * console.log(json); // Pretty-printed JSON string
156
+ *
157
+ * // Round-trip serialization
158
+ * const restored = deserializeSession(json);
159
+ * expect(restored).toEqual(state);
160
+ * ```
161
+ */
162
+ export function serializeSession(state) {
163
+ try {
164
+ const replacer = createReplacer();
165
+ // Pretty-print with 2-space indentation (matches session-store.ts pattern)
166
+ return JSON.stringify(state, replacer, 2);
167
+ }
168
+ catch (error) {
169
+ throw new SessionSerializationError(`Failed to serialize session: ${error instanceof Error ? error.message : "Unknown error"}`, "root", state);
170
+ }
171
+ }
172
+ /**
173
+ * Reconstruct a SessionState from JSON string
174
+ *
175
+ * @remarks
176
+ * Parses a JSON string and validates that it has the correct SessionState
177
+ * structure. Performs runtime type validation to ensure data integrity
178
+ * and catch corrupted or malformed session data early.
179
+ *
180
+ * Throws {@link SessionSerializationError} if deserialization fails or
181
+ * if the data doesn't match the expected SessionState structure.
182
+ *
183
+ * @param data - JSON string representation of the session
184
+ * @returns Reconstructed SessionState object
185
+ * @throws {SessionSerializationError} If deserialization fails or data is invalid
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * import { serializeSession, deserializeSession } from 'groundswell';
190
+ *
191
+ * const state: SessionState = {
192
+ * history: [],
193
+ * lastResult: null
194
+ * };
195
+ *
196
+ * const json = serializeSession(state);
197
+ * const restored = deserializeSession(json);
198
+ *
199
+ * // Round-trip equality test
200
+ * expect(restored.history).toEqual(state.history);
201
+ * expect(restored.lastResult).toEqual(state.lastResult);
202
+ * ```
203
+ */
204
+ export function deserializeSession(data) {
205
+ try {
206
+ const parsed = JSON.parse(data);
207
+ // CRITICAL: Validate structure before returning
208
+ if (!isValidSessionState(parsed)) {
209
+ throw new Error("Invalid session state structure: missing or malformed required properties");
210
+ }
211
+ return parsed;
212
+ }
213
+ catch (error) {
214
+ throw new SessionSerializationError(`Failed to deserialize session: ${error instanceof Error ? error.message : "Unknown error"}`, "root", data);
215
+ }
216
+ }
217
+ //# sourceMappingURL=session-serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-serialization.js","sourceRoot":"","sources":["../../src/utils/session-serialization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAUhC;IACA;IAVlB;;;;;;OAMG;IACH,YACE,OAAe,EACC,IAAY,EACZ,KAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAS;QAG9B,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IAEnC,OAAO,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE;QAC9C,4CAA4C;QAC5C,6DAA6D;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,aAAa,GAAG,GAAG,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAED,kDAAkD;QAClD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,aAAa,KAAK,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;QACnD,CAAC;QAED,gDAAgD;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,WAAW,KAAK,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC;QACtD,CAAC;QAED,0CAA0C;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,8BAA8B;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,sCAAsC;IACtC,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sCAAsC;IACtC,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,2EAA2E;QAC3E,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,yBAAyB,CACjC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAC1F,MAAM,EACN,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,gDAAgD;QAChD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,yBAAyB,CACjC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAC5F,MAAM,EACN,IAAI,CACL,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { WorkflowError } from '../types/error.js';
2
+ /**
3
+ * Merge multiple WorkflowError objects into a single aggregated error.
4
+ *
5
+ * This is the default merger used when errorMergeStrategy is enabled for concurrent tasks.
6
+ * It aggregates information from all errors to provide a comprehensive view of failures.
7
+ *
8
+ * @param errors - Array of WorkflowError objects to merge
9
+ * @param taskName - Name of the task that spawned the concurrent workflows
10
+ * @param parentWorkflowId - ID of the parent workflow
11
+ * @param totalChildren - Total number of child workflows that were spawned
12
+ * @returns A merged WorkflowError containing aggregated information
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const errors: WorkflowError[] = [error1, error2, error3];
17
+ * const merged = mergeWorkflowErrors(errors, 'myTask', 'parent-123', 5);
18
+ * // Returns: WorkflowError with message "3 of 5 concurrent child workflows failed in task 'myTask'"
19
+ * ```
20
+ */
21
+ export declare function mergeWorkflowErrors(errors: WorkflowError[], taskName: string, parentWorkflowId: string, totalChildren: number): WorkflowError;
22
+ //# sourceMappingURL=workflow-error-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-error-utils.d.ts","sourceRoot":"","sources":["../../src/utils/workflow-error-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,GACpB,aAAa,CA4Bf"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Merge multiple WorkflowError objects into a single aggregated error.
3
+ *
4
+ * This is the default merger used when errorMergeStrategy is enabled for concurrent tasks.
5
+ * It aggregates information from all errors to provide a comprehensive view of failures.
6
+ *
7
+ * @param errors - Array of WorkflowError objects to merge
8
+ * @param taskName - Name of the task that spawned the concurrent workflows
9
+ * @param parentWorkflowId - ID of the parent workflow
10
+ * @param totalChildren - Total number of child workflows that were spawned
11
+ * @returns A merged WorkflowError containing aggregated information
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const errors: WorkflowError[] = [error1, error2, error3];
16
+ * const merged = mergeWorkflowErrors(errors, 'myTask', 'parent-123', 5);
17
+ * // Returns: WorkflowError with message "3 of 5 concurrent child workflows failed in task 'myTask'"
18
+ * ```
19
+ */
20
+ export function mergeWorkflowErrors(errors, taskName, parentWorkflowId, totalChildren) {
21
+ // Create merged error message
22
+ const message = `${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'`;
23
+ // Get all unique workflow IDs that failed
24
+ const failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
25
+ // Aggregate all logs
26
+ const allLogs = errors.flatMap((e) => e.logs);
27
+ // Create merged WorkflowError
28
+ const mergedError = {
29
+ message,
30
+ original: {
31
+ name: 'WorkflowAggregateError',
32
+ message,
33
+ errors,
34
+ totalChildren,
35
+ failedChildren: errors.length,
36
+ failedWorkflowIds,
37
+ },
38
+ workflowId: parentWorkflowId,
39
+ stack: errors[0]?.stack, // Use first error's stack trace
40
+ state: errors[0]?.state || {}, // Use first error's state
41
+ logs: allLogs,
42
+ };
43
+ return mergedError;
44
+ }
45
+ //# sourceMappingURL=workflow-error-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-error-utils.js","sourceRoot":"","sources":["../../src/utils/workflow-error-utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAuB,EACvB,QAAgB,EAChB,gBAAwB,EACxB,aAAqB;IAErB,8BAA8B;IAC9B,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,OAAO,aAAa,+CAA+C,QAAQ,GAAG,CAAC;IAE/G,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE,qBAAqB;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9C,8BAA8B;IAC9B,MAAM,WAAW,GAAkB;QACjC,OAAO;QACP,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,OAAO;YACP,MAAM;YACN,aAAa;YACb,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,iBAAiB;SACP;QACZ,UAAU,EAAE,gBAAgB;QAC5B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gCAAgC;QACzD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAK,EAA8B,EAAE,0BAA0B;QACtF,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "groundswell",
3
- "version": "0.0.2",
3
+ "version": "1.0.0",
4
4
  "url": "https://github.com/groundswell-ai/groundswell",
5
5
  "description": "Hierarchical workflow orchestration engine with full observability",
6
6
  "keywords": [
@@ -23,6 +23,9 @@
23
23
  "main": "./dist/index.js",
24
24
  "module": "./dist/index.js",
25
25
  "types": "./dist/index.d.ts",
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
26
29
  "exports": {
27
30
  ".": {
28
31
  "import": "./dist/index.js",
@@ -46,20 +49,46 @@
46
49
  "start:reflection": "tsx examples/examples/09-reflection.ts",
47
50
  "start:introspection": "tsx examples/examples/10-introspection.ts",
48
51
  "start:reparenting": "tsx examples/examples/11-reparenting-workflows.ts",
52
+ "start:harness-basic": "tsx examples/harnesses/01-basic-harness-usage.ts",
53
+ "start:harness-config": "tsx examples/harnesses/02-harness-configuration.ts",
54
+ "start:harness-switching": "tsx examples/harnesses/03-harness-switching.ts",
55
+ "start:harness-scenarios": "tsx examples/harnesses/04-multi-provider-scenarios.ts",
56
+ "start:harness-sessions": "tsx examples/harnesses/05-harness-sessions.ts",
57
+ "start:harness-features": "tsx examples/harnesses/06-harness-with-mcp-skills.ts",
58
+ "start:ink": "tsx examples/examples/ink-debugger-hello.tsx",
49
59
  "generate:llms": "npx tsx scripts/generate-llms-full.ts"
50
60
  },
51
61
  "dependencies": {
52
- "@anthropic-ai/sdk": "^0.71.1",
62
+ "@anthropic-ai/claude-agent-sdk": "^0.1.0",
63
+ "@earendil-works/pi-coding-agent": "^0.79.8",
64
+ "ink": "^6.6.0",
53
65
  "lru-cache": "^10.4.3",
54
- "zod": "^3.23.0"
66
+ "react": "^19.0.0",
67
+ "zod": "^3.23.0",
68
+ "zod-to-json-schema": "^3.23.0"
55
69
  },
56
70
  "devDependencies": {
71
+ "@semantic-release/changelog": "^6.0.3",
72
+ "@semantic-release/commit-analyzer": "^13.0.0",
73
+ "@semantic-release/git": "^10.0.1",
74
+ "@semantic-release/github": "^12.0.0",
75
+ "@semantic-release/npm": "^13.0.0",
76
+ "@semantic-release/release-notes-generator": "^14.0.0",
57
77
  "@types/node": "^20.0.0",
78
+ "@types/react": "^19.2.9",
79
+ "@vitest/coverage-v8": "^1.6.1",
80
+ "ink-testing-library": "^4.0.0",
81
+ "markdownlint-cli": "^0.47.0",
82
+ "semantic-release": "^25.0.0",
58
83
  "tsx": "^4.21.0",
59
84
  "typescript": "^5.2.0",
60
85
  "vitest": "^1.0.0"
61
86
  },
62
87
  "engines": {
63
- "node": ">=18"
64
- }
88
+ "node": ">=22.19"
89
+ },
90
+ "files": [
91
+ "dist",
92
+ "LICENSE"
93
+ ]
65
94
  }
@@ -1,120 +0,0 @@
1
- # Create BASE PRP
2
-
3
- ## Feature: $ARGUMENTS or $(tsk next) subtask
4
-
5
- ## PRP Creation Mission
6
-
7
- Create a comprehensive PRP that enables **one-pass implementation success** through systematic research and context curation.
8
-
9
-
10
- **Critical Understanding**:
11
- You must start by reading and understanding the prp concepts plan/README.md
12
- Be aware that the executing AI agent only receives:
13
- - The PRP content you create
14
- - Its training data knowledge
15
- - Access to codebase files (but needs guidance on which ones)
16
-
17
-
18
- **Therefore**: Your research and context curation directly determines implementation success. Incomplete context = implementation failure.
19
-
20
- ## Research Process
21
-
22
- > During the research process, create clear tasks and spawn as many agents and subagents as needed using the batch tools. The deeper research we do here the better the PRP will be. We optimize for chance of success, not for speed.
23
-
24
- 1. **Codebase Analysis in depth**
25
- - Create clear todos and spawn subagents to search the codebase for similar features/patterns. Think hard and plan your approach
26
- - Identify all the necessary files to reference in the PRP
27
- - Note all existing conventions to follow
28
- - Check existing test patterns for validation approach, if none are found plan to find a new one
29
- - Use the batch tools to spawn subagents to search the codebase for similar features/patterns
30
-
31
- 2. **Internal Research at scale**
32
- - Use relevant research and plan information in the `plan/M#P#T#S#` directory according to the current subtask
33
- - Consider the scope of the subtask within the overall PRD. Respect the boundaries of scope of implementation for this task. Ensure cohesion across
34
- previously completed tasks and guard against harming future task completion in your plan
35
-
36
- 2. **External Research at scale**
37
- - Create clear todos and spawn subagents with instructions to do deep research for similar features/patterns online and include urls to documentation and examples
38
- - Library documentation (include specific URLs)
39
- - Store all research in plans/\[M#P#T#S#]/research according to the current task and reference critical pieces of documentation in the PRP with clear
40
- reasoning and instructions
41
- - Implementation examples (GitHub/StackOverflow/blogs)
42
- - New validation approach none found in existing codebase and user confirms they would like one added
43
- - Best practices and common pitfalls found during research
44
- - Use the batch tools to spawn subagents to search for similar features/patterns online and include urls to documentation and examples
45
-
46
- 3. **User Clarification**
47
- - Ask for clarification if you need it
48
- - If no testing framework is found, ask the user if they would like to set one up
49
- - If a fundamental misalignemnt of objectives across tasks is detected, halt and produce a thorough explanation of the problem at a 10th grade level
50
-
51
- ## PRP Generation Process
52
-
53
- ### Step 1: Choose Template
54
-
55
- Use `plan/templates/prp_base.md` as your template structure - it contains all necessary sections and formatting.
56
-
57
- ### Step 2: Context Completeness Validation
58
-
59
- Before writing, apply the **"No Prior Knowledge" test** from the template:
60
- _"If someone knew nothing about this codebase, would they have everything needed to implement this successfully?"_
61
-
62
- ### Step 3: Research Integration
63
-
64
- Transform your research findings into the template sections:
65
-
66
- **Goal Section**: Use research to define specific, measurable Feature Goal and concrete Deliverable
67
- **Context Section**: Populate YAML structure with your research findings - specific URLs, file patterns, gotchas
68
- **Implementation Tasks**: Create dependency-ordered tasks using information-dense keywords from codebase analysis
69
- **Validation Gates**: Use project-specific validation commands that you've verified work in this codebase
70
-
71
- ### Step 4: Information Density Standards
72
-
73
- Ensure every reference is **specific and actionable**:
74
-
75
- - URLs include section anchors, not just domain names
76
- - File references include specific patterns to follow, not generic mentions
77
- - Task specifications include exact naming conventions and placement
78
- - Validation commands are project-specific and executable
79
-
80
- ### Step 5: ULTRATHINK Before Writing
81
-
82
- After research completion, create comprehensive PRP writing plan using TodoWrite tool:
83
-
84
- - Plan how to structure each template section with your research findings
85
- - Identify gaps that need additional research
86
- - Create systematic approach to filling template with actionable context
87
-
88
- ## Output
89
-
90
- Store the PRP at `plan/M#P#T#S#/PRP.md`
91
- Store documentation at `plan/M#P#T#S#/research/`
92
-
93
- ## PRP Quality Gates
94
-
95
- ### Context Completeness Check
96
-
97
- - [ ] Passes "No Prior Knowledge" test from template
98
- - [ ] All YAML references are specific and accessible
99
- - [ ] Implementation tasks include exact naming and placement guidance
100
- - [ ] Validation commands are project-specific and verified working
101
-
102
- ### Template Structure Compliance
103
-
104
- - [ ] All required template sections completed
105
- - [ ] Goal section has specific Feature Goal, Deliverable, Success Definition
106
- - [ ] Implementation Tasks follow dependency ordering
107
- - [ ] Final Validation Checklist is comprehensive
108
-
109
- ### Information Density Standards
110
-
111
- - [ ] No generic references - all are specific and actionable
112
- - [ ] File patterns point at specific examples to follow
113
- - [ ] URLs include section anchors for exact guidance
114
- - [ ] Task specifications use information-dense keywords from codebase
115
-
116
- ## Success Metrics
117
-
118
- **Confidence Score**: Rate 1-10 for one-pass implementation success likelihood
119
-
120
- **Validation**: The completed PRP should enable an AI agent unfamiliar with the codebase to implement the feature successfully using only the PRP content and codebase access.
@@ -1,65 +0,0 @@
1
- # Execute BASE PRP
2
-
3
- ## PRP File: $ARGUMENTS or $(tsk next) subtask information located at plans/M#P#T#S#/PRP.md
4
-
5
- ## Mission: One-Pass Implementation Success
6
-
7
- PRPs enable working code on the first attempt through:
8
-
9
- - **Context Completeness**: Everything needed, nothing guessed
10
- - **Progressive Validation**: 4-level gates catch errors early
11
- - **Pattern Consistency**: Follow existing codebase approaches
12
- - Read PRPs/README.md to understand PRP concepts
13
-
14
- **Your Goal**: Transform the PRP into working code that passes all validation gates.
15
-
16
- ## Execution Process
17
-
18
- 1. **Load PRP**
19
- - Read the specified PRP file completely
20
- - Absorb all context, patterns, requirements and gather codebase intelligence
21
- - Use the provided documentation references and file patterns, consume the right documentation before the appropriate todo/task
22
- - Trust the PRP's context and guidance - it's designed for one-pass success
23
- - If needed do additional codebase exploration and research as needed
24
-
25
- 2. **ULTRATHINK & Plan**
26
- - Create comprehensive implementation plan following the PRP's task order
27
- - Break down into clear todos using TodoWrite tool
28
- - Use subagents for parallel work when beneficial (always create prp inspired prompts for subagents when used)
29
- - Follow the patterns referenced in the PRP
30
- - Use specific file paths, class names, and method signatures from PRP context
31
- - Never guess - always verify the codebase patterns and examples referenced in the PRP yourself
32
-
33
- 3. **Execute Implementation**
34
- - Follow the PRP's Implementation Tasks sequence, add more detail as needed, especially when using subagents
35
- - Use the patterns and examples referenced in the PRP
36
- - Create files in locations specified by the desired codebase tree
37
- - Apply naming conventions from the task specifications and CLAUDE.md
38
-
39
- 4. **Progressive Validation**
40
-
41
- **Execute the level validation system from the PRP:**
42
- - **Level 1**: Run syntax & style validation commands from PRP
43
- - **Level 2**: Execute unit test validation from PRP
44
- - **Level 3**: Run integration testing commands from PRP
45
- - **Level 4**: Execute specified validation from PRP
46
-
47
- **Each level must pass before proceeding to the next.**
48
-
49
- 5. **Completion Verification**
50
- - Work through the Final Validation Checklist in the PRP
51
- - Verify all Success Criteria from the "What" section are met
52
- - Confirm all Anti-Patterns were avoided
53
- - Implementation is ready and working
54
-
55
- **Failure Protocol**: When validation fails, use the patterns and gotchas from the PRP to fix issues, then re-run validation until passing.
56
-
57
- If a fundamental issue with the plan is found, halt and produce a thorough explanation of the problem at a 10th grade level.
58
-
59
- Strictly output your results in this JSON format:
60
-
61
- ```json
62
- {
63
- "result": "success" | "error" | "issue",
64
- "message": "Detailed explanation of the issue"
65
- }
@@ -1,94 +0,0 @@
1
- Act as a Lead Technical Architect and Project Management Synthesizer. You have already convened a panel of senior specialists (Security, DevOps, Backend, Frontend, and QA) who hold adversarial views on scope and complexity. Your job is not to output their debate, but to output their rigorous, unified consensus on how to decompose the attached PRD.
2
-
3
- Your Primary Goal: Assess the PRD to determine its hierarchy (Phase > Milestone > Task > Subtask) and decompose it into atomic, coherent work units.
4
-
5
- Hierarchy Definitions:
6
-
7
- Phase: Project-scope goals (e.g., MVP, V1.0). Weeks to months of effort.
8
-
9
- Milestone: Key objectives within a Phase. 1 to 12 weeks of effort.
10
-
11
- Task: Complete features within a Milestone. Days to weeks of effort.
12
-
13
- Subtask: Atomic implementation steps. 0.5, 1, or 2 Story Points (SP). Max 2 SP per subtask.
14
-
15
- Critical Constraints & Standard of Work (SOW):
16
-
17
- Coherence & Continuity (Priority):
18
-
19
- You must ensure architectural flow. Subtasks must not exist in a vacuum.
20
-
21
- If Subtask A defines a data schema, Subtask B must explicitly be told to consume that specific schema.
22
-
23
- Reference specific file paths, variable names, or API endpoints within the context_scope to ensure the implementing agent follows the chain of logic.
24
-
25
- Implicit TDD & Quality:
26
-
27
- Do not create subtasks for "Write Tests."
28
-
29
- Assume every subtask implies: "Write the failing test, implement the code, pass the test."
30
-
31
- Code is not complete without tests.
32
-
33
- The "Context Scope" Blinder:
34
-
35
- For every Subtask, the context_scope must be a strict set of instructions for a developer who cannot see the rest of the project.
36
-
37
- It must define Inputs (what data/interfaces are available from previous subtasks) and Outputs (what exact interface this subtask exposes).
38
-
39
- It must explicitly state Mocking Strategies to keep the subtask isolated.
40
-
41
- Process:
42
-
43
- Analyze the attached or referenced PRD.
44
-
45
- Determine the highest level of scope (Phase, Milestone, or Task) this PRD represents.
46
-
47
- Decompose strictly downwards to the Subtask level.
48
-
49
- Output Format:
50
- Output only a JSON object. No conversational text.
51
-
52
- ```json
53
- {
54
- "backlog": [
55
- {
56
- "type": "Phase",
57
- "id": "P[#]",
58
- "title": "Phase Title",
59
- "status": "Planned | Researching | Ready | Implementing | Complete | Failed",
60
- "description": "High level goal.",
61
- "milestones": [
62
- {
63
- "type": "Milestone",
64
- "id": "P[#].M[#]",
65
- "title": "Milestone Title",
66
- "status": "Planned",
67
- "description": "Key objective.",
68
- "tasks": [
69
- {
70
- "type": "Task",
71
- "id": "P[#].M[#].T[#]",
72
- "title": "Task Title",
73
- "status": "Planned",
74
- "description": "Feature definition.",
75
- "subtasks": [
76
- {
77
- "type": "Subtask",
78
- "id": "P[#].M[#].T[#].S[#]",
79
- "title": "Subtask Title",
80
- "status": "Planned",
81
- "story_points": 1,
82
- "dependencies": ["ID of prerequisite subtask"],
83
- "context_scope": "CONTRACT DEFINITION:\n1. INPUT: [Specific data structure/variable] from [Dependency ID].\n2. LOGIC: Implement [PRD Section X] logic. Mock [Service Y] for isolation.\n3. OUTPUT: Return [Result Object/Interface] for consumption by [Next Subtask ID]."
84
- }
85
- ]
86
- }
87
- ]
88
- }
89
- ]
90
- }
91
- ]
92
- }
93
- ```
94
-
@@ -1,9 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(mkdir:*)"
5
- ],
6
- "deny": [],
7
- "ask": []
8
- }
9
- }