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
@@ -1,943 +0,0 @@
1
- # PRP: Caching, Reflection & Introspection Systems
2
-
3
- ## Phases 3 & 4 Implementation Plan
4
-
5
- > **PRP**: Product Requirements Package - A comprehensive implementation guide enabling one-pass success
6
-
7
- ---
8
-
9
- ## Pre-Implementation Checklist
10
-
11
- Before implementing, verify you have:
12
- - [ ] Read and understood this entire PRP
13
- - [ ] Read PRPs/PRDs/002-agent-prompt.md (prior phases)
14
- - [ ] Verified Phase 1 & 2 are complete (Agent, Prompt, Hierarchy integration)
15
- - [ ] Access to `./` codebase
16
- - [ ] npm dependencies installed: `@anthropic-ai/sdk`, `zod`
17
- - [ ] Understanding of existing patterns in `/src/core/agent.ts`, `/src/core/workflow.ts`
18
-
19
- ---
20
-
21
- ## 1. Goal
22
-
23
- ### Feature Goal
24
- Implement deterministic response caching, multi-level reflection capabilities, and agent introspection tools to complete the Groundswell orchestration framework per PRD Sections 9, 10, 11, and 12.
25
-
26
- ### Deliverable
27
- A complete system where:
28
- 1. LLM responses are cached with SHA-256 deterministic keys (PRD Section 9)
29
- 2. Reflection API provides automatic retry with self-correction at workflow, agent, and prompt levels (PRD Section 4.4)
30
- 3. Introspection tools allow agents to inspect/manipulate their hierarchy position (PRD Section 11)
31
- 4. Dynamic workflow/agent/prompt creation and context revision work seamlessly (PRD Section 10)
32
- 5. All 10 canonical examples are implemented (PRD Section 12)
33
-
34
- ### Success Definition
35
- - [ ] `npm run build` passes with no TypeScript errors
36
- - [ ] `npm test` passes all new and existing tests
37
- - [ ] Cache integration reduces redundant API calls in tests
38
- - [ ] Reflection triggers automatically on step/prompt failures
39
- - [ ] Agents can use introspection tools to navigate hierarchy
40
- - [ ] All 10 PRD examples execute successfully
41
-
42
- ---
43
-
44
- ## 2. Context
45
-
46
- ### External Documentation
47
- ```yaml
48
- anthropic_sdk:
49
- url: "https://github.com/anthropics/anthropic-sdk-typescript"
50
- purpose: "Tool definitions, message API"
51
- version: "^0.71.1"
52
-
53
- lru_cache:
54
- url: "https://www.npmjs.com/package/lru-cache"
55
- purpose: "LRU cache implementation with TTL support"
56
- version: "^10.0.0"
57
- note: "Zero external dependencies in v10+"
58
-
59
- node_crypto:
60
- url: "https://nodejs.org/api/crypto.html"
61
- purpose: "SHA-256 hashing for cache keys"
62
- section: "createHash"
63
-
64
- zod:
65
- url: "https://zod.dev/"
66
- purpose: "Schema validation, _def access for hashing"
67
- version: "^3.23.0"
68
- ```
69
-
70
- ### Codebase Context
71
- ```yaml
72
- existing_patterns:
73
- - file: "/src/core/agent.ts"
74
- pattern: "Agent class with prompt() method"
75
- follow_for: "Cache integration point in executePrompt()"
76
- line: 171
77
-
78
- - file: "/src/core/workflow-context.ts"
79
- pattern: "ReflectionAPIImpl placeholder"
80
- follow_for: "Full ReflectionAPI implementation"
81
- line: 24
82
-
83
- - file: "/src/core/context.ts"
84
- pattern: "AgentExecutionContext with AsyncLocalStorage"
85
- follow_for: "Introspection tool handlers accessing context"
86
-
87
- - file: "/src/types/events.ts"
88
- pattern: "WorkflowEvent discriminated union"
89
- follow_for: "Already includes reflectionStart/reflectionEnd types"
90
-
91
- - file: "/src/core/mcp-handler.ts"
92
- pattern: "Tool registration and execution"
93
- follow_for: "Introspection tool registration pattern"
94
-
95
- related_files:
96
- - path: "/src/types/workflow-context.ts"
97
- relationship: "ReflectionAPI interface definition (line 70)"
98
-
99
- - path: "/src/core/event-tree.ts"
100
- relationship: "EventTreeHandle for introspection queries"
101
-
102
- - path: "/src/utils/id.ts"
103
- relationship: "generateId() for cache key prefixes"
104
-
105
- naming_conventions:
106
- files: "kebab-case.ts in appropriate directory"
107
- classes: "PascalCase (e.g., LRUCache, ReflectionManager)"
108
- functions: "camelCase (e.g., generateCacheKey, triggerReflection)"
109
- types: "PascalCase with descriptive suffixes (e.g., CacheConfig, ReflectionEntry)"
110
- tools: "snake_case for Anthropic tool names (e.g., inspect_current_node)"
111
- ```
112
-
113
- ### Technical Constraints
114
- ```yaml
115
- typescript:
116
- version: "5.2+"
117
- config_requirements:
118
- - "strict: true"
119
- - "module: NodeNext"
120
- - "moduleResolution: NodeNext"
121
-
122
- dependencies:
123
- required:
124
- - name: "lru-cache"
125
- version: "^10.0.0"
126
- purpose: "LRU cache with size/TTL limits"
127
- existing:
128
- - name: "@anthropic-ai/sdk"
129
- version: "^0.71.1"
130
- - name: "zod"
131
- version: "^3.23.0"
132
-
133
- runtime:
134
- node_version: "18+"
135
- target: "ES2022"
136
- ```
137
-
138
- ### Known Gotchas
139
- ```yaml
140
- pitfalls:
141
- - issue: "JSON.stringify does not guarantee key order"
142
- solution: "Use deterministicStringify with sorted keys for cache key generation"
143
- file: "/plan/P3P4/research/caching-lru.md"
144
-
145
- - issue: "Zod schemas are functions, cannot serialize directly"
146
- solution: "Hash schema._def for schema fingerprint in cache key"
147
-
148
- - issue: "Reflection can infinite loop"
149
- solution: "Hard limit maxReflectionAttempts to 3, track attempt count"
150
-
151
- - issue: "AsyncLocalStorage context loss in some async patterns"
152
- solution: "Always use runInContext() wrapper, test with nested async/await"
153
-
154
- - issue: "Tool handlers need access to current context"
155
- solution: "Use getExecutionContext() from context.ts inside tool handlers"
156
- ```
157
-
158
- ---
159
-
160
- ## 3. Implementation Tasks
161
-
162
- > Tasks are ordered by dependency. Complete each task fully before moving to the next.
163
-
164
- ### Phase 3: Caching & Reflection Systems
165
-
166
- ---
167
-
168
- ### Task P3.1: Cache Key Generation
169
- **Depends on**: Phase 1 & 2 complete
170
-
171
- **Input**:
172
- - Prompt instance with user, data, responseFormat
173
- - Merged AgentConfig (system, tools, mcps, skills, temperature, model)
174
-
175
- **Steps**:
176
- 1. Create `/src/cache/cache-key.ts`
177
- 2. Implement `deterministicStringify(value: unknown): string`
178
- - Sort object keys alphabetically
179
- - Handle arrays, primitives, null, undefined
180
- - Detect circular references with WeakSet
181
- 3. Implement `getSchemaHash(schema: z.ZodType): string`
182
- - Access `schema._def` for internal representation
183
- - Hash with SHA-256
184
- 4. Implement `generateCacheKey(inputs: CacheKeyInputs): string`
185
- - Include: user, data, system, model, temperature, maxTokens
186
- - Include: sorted tool names, sorted mcp names, sorted skill names
187
- - Include: schemaHash from responseFormat
188
- - Return 64-character hex SHA-256 digest
189
- 5. Export `CacheKeyInputs` interface and functions
190
-
191
- **Output**: `/src/cache/cache-key.ts` with deterministic key generation
192
-
193
- **Validation**:
194
- ```bash
195
- # Unit test: same input always produces same key
196
- npm test -- --grep "cache-key"
197
- ```
198
-
199
- ---
200
-
201
- ### Task P3.2: LRU Cache Implementation
202
- **Depends on**: Task P3.1
203
-
204
- **Input**: Cache interface from PRD Section 9.2
205
-
206
- **Steps**:
207
- 1. Add `lru-cache@^10.0.0` to package.json dependencies
208
- 2. Create `/src/cache/cache.ts`
209
- 3. Define `CacheConfig` interface:
210
- ```typescript
211
- interface CacheConfig {
212
- maxItems?: number; // default: 1000
213
- maxSizeBytes?: number; // default: 50MB
214
- defaultTTLMs?: number; // default: 1 hour
215
- }
216
- ```
217
- 4. Implement `LLMCache` class:
218
- - Constructor accepting CacheConfig
219
- - `get(key: string): Promise<T | undefined>`
220
- - `set(key: string, value: T, ttl?: number): Promise<void>`
221
- - `bust(key: string): Promise<void>`
222
- - `bustPrefix(prefix: string): Promise<void>`
223
- - `metrics(): CacheMetrics`
224
- 5. Implement prefix tracking with Map<string, Set<string>> for bustPrefix
225
- 6. Export singleton `defaultCache` instance
226
-
227
- **Output**: `/src/cache/cache.ts` with full Cache implementation
228
-
229
- **Validation**:
230
- ```bash
231
- npm test -- --grep "LLMCache"
232
- ```
233
-
234
- ---
235
-
236
- ### Task P3.3: Cache Integration into Agent
237
- **Depends on**: Task P3.2
238
-
239
- **Input**: Agent.executePrompt() method at `/src/core/agent.ts:171`
240
-
241
- **Steps**:
242
- 1. Import `generateCacheKey` and `defaultCache` in agent.ts
243
- 2. Add cache check at start of `executePrompt()`:
244
- ```typescript
245
- if (this.config.enableCache && !overrides?.disableCache) {
246
- const cacheKey = generateCacheKey({...});
247
- const cached = await defaultCache.get(cacheKey);
248
- if (cached) {
249
- // Return cached result
250
- }
251
- }
252
- ```
253
- 3. Add cache set after successful response:
254
- ```typescript
255
- if (this.config.enableCache && !overrides?.disableCache) {
256
- await defaultCache.set(cacheKey, result);
257
- }
258
- ```
259
- 4. Emit cache hit/miss events if in workflow context:
260
- ```typescript
261
- { type: 'cacheHit' | 'cacheMiss'; key: string; node: WorkflowNode }
262
- ```
263
- 5. Update `/src/types/events.ts` to add cacheHit/cacheMiss event types
264
-
265
- **Output**: Agent.prompt() checks and populates cache
266
-
267
- **Validation**:
268
- ```bash
269
- # Integration test: second identical prompt returns cached
270
- npm test -- --grep "agent-cache"
271
- ```
272
-
273
- ---
274
-
275
- ### Task P3.4: ReflectionAPI Interface Definition
276
- **Depends on**: Phase 2 complete
277
-
278
- **Input**: Placeholder at `/src/core/workflow-context.ts:24`
279
-
280
- **Steps**:
281
- 1. Create `/src/types/reflection.ts`
282
- 2. Define complete interfaces:
283
- ```typescript
284
- interface ReflectionConfig {
285
- enabled: boolean;
286
- maxAttempts: number; // default: 3
287
- retryDelayMs?: number; // default: 0
288
- }
289
-
290
- interface ReflectionContext {
291
- level: 'workflow' | 'agent' | 'prompt';
292
- failedNode: WorkflowNode;
293
- error: Error;
294
- attemptNumber: number;
295
- previousAttempts: ReflectionEntry[];
296
- }
297
-
298
- interface ReflectionResult {
299
- shouldRetry: boolean;
300
- revisedPromptData?: Record<string, unknown>;
301
- revisedSystemPrompt?: string;
302
- reason: string;
303
- }
304
-
305
- interface ReflectionEntry {
306
- timestamp: number;
307
- level: 'workflow' | 'agent' | 'prompt';
308
- reason: string;
309
- error: Error;
310
- resolution: 'retry' | 'skip' | 'abort';
311
- success: boolean;
312
- }
313
-
314
- interface ReflectionAPI {
315
- isEnabled(): boolean;
316
- triggerReflection(reason?: string): Promise<void>;
317
- getReflectionHistory(): ReflectionEntry[];
318
- reflect(context: ReflectionContext): Promise<ReflectionResult>;
319
- }
320
- ```
321
- 3. Export from `/src/types/index.ts`
322
-
323
- **Output**: Complete reflection type definitions
324
-
325
- **Validation**: `npm run build` passes
326
-
327
- ---
328
-
329
- ### Task P3.5: Reflection Implementation
330
- **Depends on**: Task P3.4
331
-
332
- **Input**: ReflectionAPI interface, Agent.reflect() method
333
-
334
- **Steps**:
335
- 1. Create `/src/reflection/reflection.ts`
336
- 2. Implement `ReflectionManager` class:
337
- - Constructor: `(config: ReflectionConfig, agent?: Agent)`
338
- - `isEnabled()`: Return config.enabled
339
- - `reflect(context: ReflectionContext): Promise<ReflectionResult>`
340
- - Build reflection prompt with error context
341
- - Call agent.reflect() with reflection prompt
342
- - Parse response for shouldRetry decision
343
- - Record entry in history
344
- - `triggerReflection(reason?: string)`: Emit events, log
345
- - `getReflectionHistory()`: Return recorded entries
346
- 3. Define reflection prompt template:
347
- ```typescript
348
- const REFLECTION_PROMPT = `
349
- A previous operation failed with the following error:
350
-
351
- Error: {{error.message}}
352
- Level: {{level}}
353
- Attempt: {{attemptNumber}} of {{maxAttempts}}
354
-
355
- Analyze the error and determine:
356
- 1. Can this be retried with modifications?
357
- 2. What changes would help succeed?
358
-
359
- Respond with JSON: { "shouldRetry": boolean, "reason": string, "revisedPromptData": {...} }
360
- `;
361
- ```
362
- 4. Emit reflectionStart/reflectionEnd events
363
-
364
- **Output**: `/src/reflection/reflection.ts` with full implementation
365
-
366
- **Validation**:
367
- ```bash
368
- npm test -- --grep "ReflectionManager"
369
- ```
370
-
371
- ---
372
-
373
- ### Task P3.6: Wire Reflection into WorkflowContext
374
- **Depends on**: Task P3.5
375
-
376
- **Input**: `/src/core/workflow-context.ts`
377
-
378
- **Steps**:
379
- 1. Replace `ReflectionAPIImpl` placeholder with real import
380
- 2. Update `WorkflowContextImpl` constructor:
381
- - Create `ReflectionManager` with workflow's enableReflection config
382
- 3. Update `step()` method to wrap with reflection:
383
- ```typescript
384
- async step<T>(name: string, fn: () => Promise<T>): Promise<T> {
385
- let lastError: Error | null = null;
386
-
387
- for (let attempt = 1; attempt <= this.reflection.maxAttempts; attempt++) {
388
- try {
389
- return await this.executeStep(name, fn);
390
- } catch (error) {
391
- if (!this.reflection.isEnabled()) throw error;
392
-
393
- const result = await this.reflection.reflect({
394
- level: 'workflow',
395
- failedNode: stepNode,
396
- error: error as Error,
397
- attemptNumber: attempt,
398
- previousAttempts: this.reflection.getReflectionHistory()
399
- });
400
-
401
- if (!result.shouldRetry) throw error;
402
- lastError = error as Error;
403
- }
404
- }
405
-
406
- throw lastError;
407
- }
408
- ```
409
-
410
- **Output**: Automatic reflection on step failures
411
-
412
- **Validation**:
413
- ```bash
414
- npm test -- --grep "workflow-reflection"
415
- ```
416
-
417
- ---
418
-
419
- ### Phase 4: Dynamic Behavior & Introspection
420
-
421
- ---
422
-
423
- ### Task P4.1: Dynamic Factory Functions
424
- **Depends on**: Phase 3 complete
425
-
426
- **Input**: Workflow, Agent, Prompt classes
427
-
428
- **Steps**:
429
- 1. Create `/src/core/factory.ts`
430
- 2. Implement factory functions:
431
- ```typescript
432
- export function createWorkflow<T>(
433
- config: WorkflowConfig,
434
- executor: WorkflowExecutor<T>
435
- ): Workflow<T> {
436
- return new Workflow(config, executor);
437
- }
438
-
439
- export function createAgent(config: AgentConfig): Agent {
440
- return new Agent(config);
441
- }
442
-
443
- export function createPrompt<T>(config: PromptConfig<T>): Prompt<T> {
444
- return new Prompt(config);
445
- }
446
- ```
447
- 3. Export from `/src/index.ts`
448
-
449
- **Output**: Convenience factory functions for dynamic creation
450
-
451
- **Validation**: `npm run build`
452
-
453
- ---
454
-
455
- ### Task P4.2: Dynamic Context Revision
456
- **Depends on**: Task P4.1
457
-
458
- **Input**: WorkflowContext, step() implementation
459
-
460
- **Steps**:
461
- 1. Add to WorkflowContext interface in `/src/types/workflow-context.ts`:
462
- ```typescript
463
- replaceLastPromptResult<T>(
464
- newPrompt: Prompt<T>,
465
- agent: Agent
466
- ): Promise<T>;
467
- ```
468
- 2. Implement in `WorkflowContextImpl`:
469
- - Mark previous prompt node as 'revised'
470
- - Execute new prompt
471
- - Attach result as sibling (not child)
472
- - Update event tree
473
- - Return new result
474
- 3. Emit 'promptRevision' event
475
-
476
- **Output**: Context revision without tree forking
477
-
478
- **Validation**:
479
- ```bash
480
- npm test -- --grep "context-revision"
481
- ```
482
-
483
- ---
484
-
485
- ### Task P4.3: Introspection Tool Definitions
486
- **Depends on**: P4.1
487
-
488
- **Input**: PRD Section 11, `/plan/P3P4/research/introspection-tools.md`
489
-
490
- **Steps**:
491
- 1. Create `/src/tools/introspection.ts`
492
- 2. Define 6 tool interfaces using Anthropic Tool format:
493
- - `inspect_current_node`: Return current node info
494
- - `read_ancestor_chain`: Return ancestors up to root
495
- - `list_siblings_children`: Return siblings or children
496
- - `inspect_prior_outputs`: Return previous step outputs
497
- - `inspect_cache_status`: Check cache for prompt hash
498
- - `request_spawn_workflow`: Request dynamic workflow creation
499
- 3. For each tool, define:
500
- - Tool definition (name, description, input_schema)
501
- - Handler function signature
502
-
503
- **Output**: Tool definitions in `/src/tools/introspection.ts`
504
-
505
- **Validation**: TypeScript compiles
506
-
507
- ---
508
-
509
- ### Task P4.4: Introspection Tool Handlers
510
- **Depends on**: Task P4.3
511
-
512
- **Input**: Tool definitions, AgentExecutionContext
513
-
514
- **Steps**:
515
- 1. Implement handler for `inspect_current_node`:
516
- ```typescript
517
- async function handleInspectCurrentNode(): Promise<CurrentNodeInfo> {
518
- const ctx = getExecutionContext();
519
- if (!ctx) throw new Error('Not in workflow context');
520
-
521
- return {
522
- id: ctx.workflowNode.id,
523
- name: ctx.workflowNode.name,
524
- status: ctx.workflowNode.status,
525
- parentId: ctx.workflowNode.parent?.id,
526
- parentName: ctx.workflowNode.parent?.name,
527
- childCount: ctx.workflowNode.children.length,
528
- depth: calculateDepth(ctx.workflowNode)
529
- };
530
- }
531
- ```
532
- 2. Implement remaining handlers similarly
533
- 3. Create tool executor registry
534
- 4. Register handlers with MCPHandler pattern
535
-
536
- **Output**: Working introspection tool handlers
537
-
538
- **Validation**:
539
- ```bash
540
- npm test -- --grep "introspection-tools"
541
- ```
542
-
543
- ---
544
-
545
- ### Task P4.5: Introspection Tools Bundle
546
- **Depends on**: Task P4.4
547
-
548
- **Input**: All introspection tool definitions and handlers
549
-
550
- **Steps**:
551
- 1. Export bundle from `/src/tools/introspection.ts`:
552
- ```typescript
553
- export const INTROSPECTION_TOOLS: Tool[] = [
554
- inspectCurrentNodeTool,
555
- readAncestorChainTool,
556
- listSiblingsChildrenTool,
557
- inspectPriorOutputsTool,
558
- inspectCacheStatusTool,
559
- requestSpawnWorkflowTool
560
- ];
561
-
562
- export function registerIntrospectionTools(handler: MCPHandler): void {
563
- // Register all tool handlers
564
- }
565
- ```
566
- 2. Export from `/src/index.ts`
567
-
568
- **Output**: Single import for all introspection tools
569
-
570
- **Validation**: Import works from main package
571
-
572
- ---
573
-
574
- ### Phase 5: Examples (partial - Agent/Prompt focused)
575
-
576
- ---
577
-
578
- ### Task P5.1: Example 7 - Agent Loops with Observability
579
- **Depends on**: All Phase 3-4 tasks
580
-
581
- **Input**: PRD Section 12 item 7
582
-
583
- **Steps**:
584
- 1. Create `/examples/examples/07-agent-loops.ts`
585
- 2. Implement:
586
- - Array of items to process
587
- - for loop with ctx.step() for each item
588
- - Multiple agents for different item types
589
- - Full event tree visualization
590
- - Timing metrics per step
591
-
592
- **Output**: Working example with observability
593
-
594
- ---
595
-
596
- ### Task P5.2: Example 8 - SDK Features (Tools, MCPs, Hooks)
597
- **Depends on**: Task P5.1
598
-
599
- **Input**: PRD Section 12 item 8
600
-
601
- **Steps**:
602
- 1. Create `/examples/examples/08-sdk-features.ts`
603
- 2. Implement:
604
- - Custom tool definitions
605
- - MCP server configuration
606
- - Pre/Post tool hooks
607
- - Skills integration
608
- - Event capture demonstration
609
-
610
- **Output**: Comprehensive SDK integration example
611
-
612
- ---
613
-
614
- ### Task P5.3: Example 9 - Multi-level Reflection
615
- **Depends on**: Task P5.2
616
-
617
- **Input**: PRD Section 12 item 9
618
-
619
- **Steps**:
620
- 1. Create `/examples/examples/09-reflection.ts`
621
- 2. Implement three scenarios:
622
- - Workflow-level: step fails, reflection retries
623
- - Agent-level: prompt fails validation, agent reflects
624
- - Prompt-level: enableReflection on specific prompt
625
- 3. Show reflection events in tree output
626
-
627
- **Output**: Multi-level reflection demonstration
628
-
629
- ---
630
-
631
- ### Task P5.4: Example 10 - Introspection Tools Demo
632
- **Depends on**: Task P5.3
633
-
634
- **Input**: PRD Section 12 item 10
635
-
636
- **Steps**:
637
- 1. Create `/examples/examples/10-introspection.ts`
638
- 2. Implement:
639
- - Agent with all INTROSPECTION_TOOLS
640
- - Nested workflow structure
641
- - Prompt asking agent to describe its position
642
- - Agent using tools to explore hierarchy
643
-
644
- **Output**: Agent self-awareness demonstration
645
-
646
- ---
647
-
648
- ### Task P5.5: Update Main Exports
649
- **Depends on**: All prior tasks
650
-
651
- **Input**: All new classes, types, tools
652
-
653
- **Steps**:
654
- 1. Update `/src/index.ts` with all new exports:
655
- ```typescript
656
- // Cache
657
- export { LLMCache, defaultCache } from './cache/cache.js';
658
- export { generateCacheKey } from './cache/cache-key.js';
659
- export type { CacheConfig, CacheMetrics } from './cache/cache.js';
660
-
661
- // Reflection
662
- export { ReflectionManager } from './reflection/reflection.js';
663
- export type {
664
- ReflectionAPI,
665
- ReflectionConfig,
666
- ReflectionEntry
667
- } from './types/reflection.js';
668
-
669
- // Introspection
670
- export { INTROSPECTION_TOOLS, registerIntrospectionTools } from './tools/introspection.js';
671
-
672
- // Factories
673
- export { createWorkflow, createAgent, createPrompt } from './core/factory.js';
674
- ```
675
- 2. Update `/src/types/index.ts` with new type exports
676
-
677
- **Output**: Complete public API
678
-
679
- **Validation**:
680
- ```bash
681
- npm run build
682
- node -e "const g = require('./dist'); console.log(Object.keys(g))"
683
- ```
684
-
685
- ---
686
-
687
- ## 4. Implementation Details
688
-
689
- ### Code Patterns to Follow
690
-
691
- ```typescript
692
- // Cache key generation pattern (deterministic)
693
- import { createHash } from 'node:crypto';
694
-
695
- function generateCacheKey(inputs: CacheKeyInputs): string {
696
- const normalized = {
697
- user: inputs.user,
698
- data: inputs.data,
699
- system: inputs.system,
700
- model: inputs.model,
701
- temperature: inputs.temperature,
702
- maxTokens: inputs.maxTokens,
703
- tools: inputs.tools?.map(t => t.name).sort(),
704
- mcps: inputs.mcps?.map(m => m.name).sort(),
705
- skills: inputs.skills?.map(s => s.name).sort(),
706
- schemaHash: getSchemaHash(inputs.responseFormat)
707
- };
708
-
709
- return createHash('sha256')
710
- .update(deterministicStringify(normalized))
711
- .digest('hex');
712
- }
713
- ```
714
-
715
- ```typescript
716
- // Reflection retry pattern
717
- async function executeWithReflection<T>(
718
- fn: () => Promise<T>,
719
- reflection: ReflectionAPI,
720
- context: Partial<ReflectionContext>
721
- ): Promise<T> {
722
- const maxAttempts = 3;
723
-
724
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
725
- try {
726
- return await fn();
727
- } catch (error) {
728
- if (!reflection.isEnabled() || attempt === maxAttempts) {
729
- throw error;
730
- }
731
-
732
- const result = await reflection.reflect({
733
- ...context,
734
- error: error as Error,
735
- attemptNumber: attempt
736
- } as ReflectionContext);
737
-
738
- if (!result.shouldRetry) {
739
- throw error;
740
- }
741
- }
742
- }
743
-
744
- throw new Error('Max reflection attempts exceeded');
745
- }
746
- ```
747
-
748
- ### File Structure
749
- ```
750
- /src
751
- ├── cache/
752
- │ ├── cache.ts # LLMCache class
753
- │ ├── cache-key.ts # Key generation
754
- │ └── index.ts # Cache exports
755
- ├── reflection/
756
- │ ├── reflection.ts # ReflectionManager
757
- │ └── index.ts # Reflection exports
758
- ├── tools/
759
- │ ├── introspection.ts # Introspection tools
760
- │ └── index.ts # Tools exports
761
- ├── types/
762
- │ ├── reflection.ts # NEW: Reflection types
763
- │ └── ... (existing)
764
- └── ... (existing)
765
-
766
- /examples/examples/
767
- ├── 07-agent-loops.ts # NEW
768
- ├── 08-sdk-features.ts # NEW
769
- ├── 09-reflection.ts # NEW
770
- └── 10-introspection.ts # NEW
771
- ```
772
-
773
- ### Interface Definitions
774
- ```typescript
775
- // Key new interfaces
776
-
777
- interface CacheKeyInputs {
778
- user: string;
779
- data?: Record<string, unknown>;
780
- system?: string;
781
- model: string;
782
- temperature?: number;
783
- maxTokens?: number;
784
- tools?: Tool[];
785
- mcps?: MCPServer[];
786
- skills?: Skill[];
787
- responseFormat: z.ZodType;
788
- }
789
-
790
- interface ReflectionAPI {
791
- isEnabled(): boolean;
792
- triggerReflection(reason?: string): Promise<void>;
793
- getReflectionHistory(): ReflectionEntry[];
794
- reflect(context: ReflectionContext): Promise<ReflectionResult>;
795
- }
796
-
797
- type IntrospectionTool = Tool & {
798
- handler: (input: unknown) => Promise<unknown>;
799
- };
800
- ```
801
-
802
- ---
803
-
804
- ## 5. Testing Strategy
805
-
806
- ### Unit Tests
807
- ```yaml
808
- test_files:
809
- - path: "/src/__tests__/unit/cache-key.test.ts"
810
- covers:
811
- - "deterministicStringify produces same output for same input"
812
- - "getSchemaHash produces consistent hashes"
813
- - "generateCacheKey is deterministic"
814
- - "Different inputs produce different keys"
815
-
816
- - path: "/src/__tests__/unit/cache.test.ts"
817
- covers:
818
- - "LRU eviction works correctly"
819
- - "TTL expiration works"
820
- - "bustPrefix removes correct entries"
821
- - "Size limits enforced"
822
-
823
- - path: "/src/__tests__/unit/reflection.test.ts"
824
- covers:
825
- - "ReflectionManager.reflect() builds correct prompt"
826
- - "History is recorded"
827
- - "maxAttempts is respected"
828
-
829
- - path: "/src/__tests__/unit/introspection-tools.test.ts"
830
- covers:
831
- - "Each tool handler returns expected format"
832
- - "Tools work within context"
833
- - "Tools fail gracefully outside context"
834
-
835
- test_patterns:
836
- - "Use vitest describe/it/expect"
837
- - "Mock Agent for reflection tests"
838
- - "Use runInContext for introspection tests"
839
- ```
840
-
841
- ### Integration Tests
842
- ```yaml
843
- scenarios:
844
- - name: "Cache integration with Agent"
845
- validates: "Second identical prompt returns cached response"
846
- file: "/src/__tests__/integration/agent-cache.test.ts"
847
-
848
- - name: "Reflection in workflow step"
849
- validates: "Failed step triggers reflection, retry succeeds"
850
- file: "/src/__tests__/integration/workflow-reflection.test.ts"
851
-
852
- - name: "Introspection tools in agent"
853
- validates: "Agent can use tools to explore hierarchy"
854
- file: "/src/__tests__/integration/introspection.test.ts"
855
- ```
856
-
857
- ### Manual Validation
858
- ```yaml
859
- steps:
860
- - action: "Run example 09-reflection.ts"
861
- expected: "See reflection events in console, retry succeeds"
862
- command: "npx tsx examples/examples/09-reflection.ts"
863
-
864
- - action: "Run example 10-introspection.ts"
865
- expected: "Agent describes its position in hierarchy"
866
- command: "npx tsx examples/examples/10-introspection.ts"
867
- ```
868
-
869
- ---
870
-
871
- ## 6. Final Validation Checklist
872
-
873
- ### Code Quality
874
- - [ ] All TypeScript compiles without errors: `npm run build`
875
- - [ ] No linting warnings: `npm run lint`
876
- - [ ] Follows existing code patterns (check agent.ts, workflow.ts)
877
- - [ ] Proper error handling with typed errors
878
- - [ ] No circular dependencies
879
-
880
- ### Functionality
881
- - [ ] Cache generates deterministic keys
882
- - [ ] Cache respects maxItems and maxSize limits
883
- - [ ] Cache TTL works correctly
884
- - [ ] Reflection triggers on step failures when enabled
885
- - [ ] Reflection respects maxAttempts limit
886
- - [ ] All 6 introspection tools work
887
- - [ ] Dynamic factories create valid instances
888
- - [ ] Context revision works without forking tree
889
-
890
- ### Testing
891
- - [ ] Unit tests pass: `npm test -- --grep "cache|reflection|introspection"`
892
- - [ ] Integration tests pass: `npm test`
893
- - [ ] Manual validation with examples complete
894
-
895
- ### Documentation
896
- - [ ] Code is self-documenting with clear names
897
- - [ ] Complex logic has comments
898
- - [ ] Public APIs have JSDoc
899
- - [ ] Examples have header comments explaining purpose
900
-
901
- ---
902
-
903
- ## 7. "No Prior Knowledge" Test
904
-
905
- **Validation**: If someone knew nothing about this codebase, would they have everything needed to implement this successfully using only this PRP?
906
-
907
- - [x] All file paths are absolute and specific
908
- - [x] All patterns have concrete examples
909
- - [x] All dependencies are explicitly listed
910
- - [x] All validation steps are executable
911
- - [x] No assumed knowledge of codebase internals
912
- - [x] Research documents provide background context
913
-
914
- ---
915
-
916
- ## Research References
917
-
918
- See `/plan/P3P4/research/` for detailed research:
919
- - `caching-lru.md` - LRU cache implementation patterns
920
- - `reflection-patterns.md` - AI reflection/self-correction patterns
921
- - `introspection-tools.md` - Tool definitions and security considerations
922
-
923
- ---
924
-
925
- ## Confidence Score: 8/10
926
-
927
- **Strengths:**
928
- - Clear existing patterns to follow from Phase 1 & 2
929
- - Comprehensive research on caching and reflection
930
- - Specific file locations and code examples
931
- - Detailed validation steps
932
-
933
- **Risks:**
934
- - Reflection prompt effectiveness depends on LLM behavior
935
- - Introspection tool handlers need careful context access
936
- - Cache key generation for complex Zod schemas may need iteration
937
- - Some examples require real API calls (need mocking strategy)
938
-
939
- **Mitigations:**
940
- - Provide sensible defaults for reflection prompts
941
- - Extensive test coverage for edge cases
942
- - Schema hashing tested with various Zod types
943
- - Mock Anthropic client for example testing