@agent-plan/core 0.2.26 → 0.2.27

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 (47) hide show
  1. package/dist/description-freshness.d.ts +37 -0
  2. package/dist/description-freshness.d.ts.map +1 -0
  3. package/dist/description-freshness.js +84 -0
  4. package/dist/handoff-context.d.ts +134 -3
  5. package/dist/handoff-context.d.ts.map +1 -1
  6. package/dist/handoff-context.js +334 -16
  7. package/dist/index.d.ts +4 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -1
  10. package/dist/package-version.d.ts +2 -0
  11. package/dist/package-version.d.ts.map +1 -1
  12. package/dist/package-version.js +1 -1
  13. package/dist/payload-fallback.d.ts +1 -1
  14. package/dist/payload-fallback.d.ts.map +1 -1
  15. package/dist/payload-fallback.js +6 -0
  16. package/dist/plan-store.d.ts +129 -30
  17. package/dist/plan-store.d.ts.map +1 -1
  18. package/dist/plan-store.js +685 -115
  19. package/dist/planner-rules.d.ts.map +1 -1
  20. package/dist/planner-rules.js +6 -2
  21. package/dist/read-tracking.d.ts +27 -3
  22. package/dist/read-tracking.d.ts.map +1 -1
  23. package/dist/read-tracking.js +53 -4
  24. package/dist/recap.d.ts.map +1 -1
  25. package/dist/recap.js +33 -9
  26. package/dist/renderer.d.ts.map +1 -1
  27. package/dist/renderer.js +0 -1
  28. package/dist/requirement-macro-tasks.d.ts +2 -2
  29. package/dist/requirement-macro-tasks.d.ts.map +1 -1
  30. package/dist/requirement-macro-tasks.js +2 -2
  31. package/dist/runtime-diagnostics.d.ts +34 -0
  32. package/dist/runtime-diagnostics.d.ts.map +1 -0
  33. package/dist/runtime-diagnostics.js +39 -0
  34. package/dist/schema.d.ts +487 -17
  35. package/dist/schema.d.ts.map +1 -1
  36. package/dist/schema.js +24 -4
  37. package/dist/task-context.d.ts +41 -2
  38. package/dist/task-context.d.ts.map +1 -1
  39. package/dist/task-context.js +102 -4
  40. package/dist/task-selection.d.ts +44 -1
  41. package/dist/task-selection.d.ts.map +1 -1
  42. package/dist/task-selection.js +158 -7
  43. package/dist/write-coordination.d.ts +27 -0
  44. package/dist/write-coordination.d.ts.map +1 -0
  45. package/dist/write-coordination.js +223 -0
  46. package/package.json +1 -1
  47. package/planner-skill.md +36 -20
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe,aAAwB,CAAC;AACrD,eAAO,MAAM,UAAU,aAAiD,CAAC;AACzE,eAAO,MAAM,oBAAoB,2CAE/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;IAK5B;;mFAE+E;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/E,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAMzB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;IAElC,yCAAyC;;IAEzC,uEAAuE;;IAEvE,6EAA6E;;IAE7E,8DAA8D;;IAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;EAIlE,CAAC;AAEH,eAAO,MAAM,mBAAmB;;IAE9B,8EAA8E;;IAE9E,+DAA+D;;IAE/D,uEAAuE;;;IAGvE,mEAAmE;;;QAvBnE,yCAAyC;;QAEzC,uEAAuE;;QAEvE,6EAA6E;;QAE7E,8DAA8D;;QAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBlE,wEAAwE;;IAExE,kDAAkD;;IAElD,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEnE,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqBxB,gGAAgG;;;;IAIhG,oGAAoG;;;QAxDpG,8EAA8E;;QAE9E,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,mEAAmE;;;YAvBnE,yCAAyC;;YAEzC,uEAAuE;;YAEvE,6EAA6E;;YAE7E,8DAA8D;;YAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBlE,wEAAwE;;QAExE,kDAAkD;;QAElD,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCnE,CAAC;AAEH,eAAO,MAAM,mBAAmB,yGAAuG,CAAC;AACxI,eAAO,MAAM,gBAAgB,yGAAuG,CAAC;AACrI,eAAO,MAAM,iBAAiB,+HAA6H,CAAC;AAC5J,eAAO,MAAM,qBAAqB,yGAAuG,CAAC;AAC1I,eAAO,MAAM,mBAAmB,yGAAuG,CAAC;AAExI,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;IAE9B;;yDAEqD;;;;;;;;;;;;;;EAIrD,CAAC;AAIH,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,aAEzC,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK7E;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH;2EAC2E;AAC3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAOpC,CAAC;AAEH,eAAO,MAAM,UAAU;;IAErB;oEACgE;;IAEhE,mJAAmJ;;;;;;;;;IASnJ,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAnEzF;;6DAEqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0ErD,4DAA4D;;;QAzK5D,yCAAyC;;QAEzC,uEAAuE;;QAEvE,6EAA6E;;QAE7E,8DAA8D;;QAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;IAmKlE,iEAAiE;;;QA3KjE,yCAAyC;;QAEzC,uEAAuE;;QAEvE,6EAA6E;;QAE7E,8DAA8D;;QAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyKlE,+EAA+E;;;;;;;;;;;IAE/E,2IAA2I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS1I,CAAC;AAEJ,eAAO,MAAM,yBAAyB;IACpC,sFAAsF;;;IAGtF,yGAAyG;;;;;;;;;;EAEzG,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;EAIzC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;EAK1C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAI/C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;EAG7C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI1C,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAOzC,0EAA0E;;IAE1E,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG/E,CAAC;AAEH,eAAO,MAAM,WAAW;;IAEtB;;yCAEqC;;IAErC,qJAAqJ;;;;;;;;;;;;IAerJ,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAnH1F;wEACgE;;QAEhE,mJAAmJ;;;;;;;;;QASnJ,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAnEzF;;iEAEqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0ErD,4DAA4D;;;YAzK5D,yCAAyC;;YAEzC,uEAAuE;;YAEvE,6EAA6E;;YAE7E,8DAA8D;;YAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;QAmKlE,iEAAiE;;;YA3KjE,yCAAyC;;YAEzC,uEAAuE;;YAEvE,6EAA6E;;YAE7E,8DAA8D;;YAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyKlE,+EAA+E;;;;;;;;;;;QAE/E,2IAA2I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsG3I,sGAAsG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA9CtG,0EAA0E;;QAE1E,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8C/E;;;mEAG+D;;IAE/D;;;0DAGsD;;QApGtD,sFAAsF;;;QAGtF,yGAAyG;;;;;;;;;;;IAmGzG,ySAAyS;;;;;;;;;;;;;;;;;;;;;;;IAEzS,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE/E,CAAC;AAEH,eAAO,MAAM,aAAa;;IAExB,+HAA+H;;;;;;;IAO/H,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAc5F,6PAA6P;;;;;;;;;;;;;;;;;;;;;;;;;IAI7P,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE/E,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;QA7BjC,+HAA+H;;;;;;;QAO/H,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAc5F,6PAA6P;;;;;;;;;;;;;;;;;;;;;;;;;QAI7P,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/E,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ5B,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEvE,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAJrC,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/E,CAAC;AAEH,eAAO,MAAM,6BAA6B,yCAAuC,CAAC;AAElF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,UAAU;;IAErB,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5E,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;QAV9B,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa5E,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA7T9B,gGAAgG;;;;QAIhG,oGAAoG;;;YAxDpG,8EAA8E;;YAE9E,+DAA+D;;YAE/D,uEAAuE;;;YAGvE,mEAAmE;;;gBAvBnE,yCAAyC;;gBAEzC,uEAAuE;;gBAEvE,6EAA6E;;gBAE7E,8DAA8D;;gBAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsBlE,wEAAwE;;YAExE,kDAAkD;;YAElD,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2QnE,+HAA+H;;;;;;;YAO/H,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAc5F,6PAA6P;;;;;;;;;;;;;;;;;;;;;;;;;YAI7P,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAyB/E,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAmB/E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA9H5E;;6CAEqC;;QAErC,qJAAqJ;;;;;;;;;;;;QAerJ,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAnH1F;4EACgE;;YAEhE,mJAAmJ;;;;;;;;;YASnJ,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAnEzF;;qEAEqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA0ErD,4DAA4D;;;gBAzK5D,yCAAyC;;gBAEzC,uEAAuE;;gBAEvE,6EAA6E;;gBAE7E,8DAA8D;;gBAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;YAmKlE,iEAAiE;;;gBA3KjE,yCAAyC;;gBAEzC,uEAAuE;;gBAEvE,6EAA6E;;gBAE7E,8DAA8D;;gBAE9D,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;YAyKlE,+EAA+E;;;;;;;;;;;YAE/E,2IAA2I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsG3I,sGAAsG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA9CtG,0EAA0E;;YAE1E,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8C/E;;;uEAG+D;;QAE/D;;;8DAGsD;;YApGtD,sFAAsF;;;YAGtF,yGAAyG;;;;;;;;;;;QAmGzG,ySAAyS;;;;;;;;;;;;;;;;;;;;;;;QAEzS,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG/E,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAClG,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAC9F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC"}
package/dist/schema.js CHANGED
@@ -157,7 +157,7 @@ export const ProjectSchema = z.object({
157
157
  export const SubtaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
158
158
  export const TaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
159
159
  export const PhaseStatusSchema = z.enum(["draft", "discovery", "planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
160
- export const RequirementStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
160
+ export const MacroTaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
161
161
  export const FeatureStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
162
162
  export const SubtaskSchema = z.object({
163
163
  id: z.string().min(1),
@@ -251,6 +251,8 @@ export const TaskSchema = z.object({
251
251
  updatedAt: TimestampSchema,
252
252
  /** Durable attestations of completed full context reads by harness session. */
253
253
  sessionInfo: z.array(SessionInfoSchema).default([]),
254
+ /** Session currently owning this in-progress task ("" when not in-progress or legacy). Enables concurrent starts across agent sessions. */
255
+ activeOwnerSession: z.string().default(""),
254
256
  }).transform((task) => ({
255
257
  ...task,
256
258
  checklist: task.checklist
@@ -277,13 +279,32 @@ export const HandoffSupportingDocumentSchema = z.object({
277
279
  contentHash: z.string().regex(/^[a-f0-9]{64}$/),
278
280
  contentLength: z.number().int().nonnegative(),
279
281
  });
282
+ export const HandoffColdStartInventoryEntrySchema = z.object({
283
+ category: z.string().min(1),
284
+ items: z.array(z.string().min(1)).default([]),
285
+ notApplicableReason: z.string().optional(),
286
+ });
287
+ export const HandoffColdStartSourceReviewSchema = z.object({
288
+ source: z.string().min(1),
289
+ detail: z.string().min(1),
290
+ });
291
+ export const HandoffColdStartInventorySchema = z.object({
292
+ version: z.number().int().positive(),
293
+ sourceReviews: z.array(HandoffColdStartSourceReviewSchema),
294
+ entries: z.array(HandoffColdStartInventoryEntrySchema),
295
+ });
280
296
  export const HandoffCompletenessAuditSchema = z.object({
281
297
  version: z.number().int().positive(),
282
298
  entries: z.array(HandoffCompletenessEntrySchema),
299
+ coldStartInventory: HandoffColdStartInventorySchema.optional(),
283
300
  supportingDocuments: z.array(HandoffSupportingDocumentSchema).default([]),
284
301
  contentHash: z.string().regex(/^[a-f0-9]{64}$/),
285
302
  contentLength: z.number().int().nonnegative(),
303
+ /** Structural validation timestamp written with the handoff candidate. */
286
304
  verifiedAt: TimestampSchema,
305
+ /** Set only after a separate persisted read-back and source reconciliation. */
306
+ resumeReadyAt: z.union([TimestampSchema, z.literal("")]).default(""),
307
+ readBackSourceReviews: z.array(HandoffColdStartSourceReviewSchema).default([]),
287
308
  });
288
309
  export const PhaseSchema = z.object({
289
310
  id: z.string(),
@@ -378,7 +399,7 @@ export const MacroTaskSchema = z.object({
378
399
  id: z.string().regex(/^MT-\d{3}$/),
379
400
  title: z.string().min(1),
380
401
  description: z.string().default(""),
381
- status: RequirementStatusSchema,
402
+ status: MacroTaskStatusSchema,
382
403
  createdAt: TimestampSchema,
383
404
  updatedAt: TimestampSchema,
384
405
  });
@@ -386,14 +407,13 @@ export const RequirementSchema = z.object({
386
407
  id: z.string(),
387
408
  title: z.string().min(1),
388
409
  description: z.string().default(""),
389
- status: RequirementStatusSchema,
390
410
  macroTasks: z.array(MacroTaskSchema).default([]),
391
411
  linkedPhaseIds: z.array(z.string().min(1)).default([]),
392
412
  createdAt: TimestampSchema,
393
413
  updatedAt: TimestampSchema,
394
414
  /** Durable attestations of completed full context reads by harness session. */
395
415
  sessionInfo: z.array(SessionInfoSchema).default([]),
396
- });
416
+ }).strip(); // Legacy persisted top-level `status` is accepted as unknown input and removed from canonical output.
397
417
  export const RequirementsDocumentSchema = z.object({
398
418
  requirements: z.array(RequirementSchema),
399
419
  });
@@ -1,4 +1,43 @@
1
- import type { Feature, Phase, Requirement } from "./schema.js";
1
+ import type { AcceptedDecision, Feature, Phase, Project, Requirement, Task } from "./schema.js";
2
+ export declare const MAX_ACCEPTED_DECISION_CONTEXT_CHARS = 8000;
3
+ export declare const MAX_PHASE_WORK_MAP_CHARS = 8000;
4
+ export interface PhaseWorkMapEntry {
5
+ taskId: string;
6
+ ref: string;
7
+ number: number;
8
+ priority: number;
9
+ status: Task["status"];
10
+ title: string;
11
+ conciseGoal: string;
12
+ dependencies: string[];
13
+ remainingCapabilityOwner: boolean;
14
+ current: boolean;
15
+ }
16
+ export interface PhaseWorkMap {
17
+ content: string;
18
+ entries: PhaseWorkMapEntry[];
19
+ total: number;
20
+ truncated: boolean;
21
+ maxChars: number;
22
+ }
23
+ export interface ScopedAcceptedDecisions {
24
+ scope: string;
25
+ decisions: AcceptedDecision[] | undefined;
26
+ }
27
+ /** Render every canonical field needed to understand an Accepted Decision. */
28
+ export declare function renderAcceptedDecisionsSection(label: string, decisions: AcceptedDecision[] | undefined): string;
29
+ /**
30
+ * Build bounded ambient/load context. This is an orientation summary, not a
31
+ * full-read attestation: truncation is explicit and points to entity full reads.
32
+ */
33
+ export declare function buildBoundedAcceptedDecisionContext(scopes: ScopedAcceptedDecisions[], maxChars?: number): {
34
+ content: string;
35
+ total: number;
36
+ truncated: boolean;
37
+ maxChars: number;
38
+ };
39
+ /** Build a bounded, priority-ordered map of sibling capability ownership. */
40
+ export declare function buildPhaseWorkMap(phase: Phase, featureNumber?: number, currentTaskId?: string, maxChars?: number): PhaseWorkMap;
2
41
  /**
3
42
  * Build a compact, agent-facing context block that surfaces the PARENT PHASE
4
43
  * (and grandparent FEATURE) description when a task is started. The phase
@@ -12,5 +51,5 @@ import type { Feature, Phase, Requirement } from "./schema.js";
12
51
  * Harness-agnostic: returns a plain markdown string. Both the Pi adapter and
13
52
  * the MCP server append this to their `task_start` confirmation text.
14
53
  */
15
- export declare function buildPhaseContextBlock(phase: Phase, feature: Feature | undefined, linkedRequirements?: Requirement[], featureRequirements?: Requirement[]): string;
54
+ export declare function buildPhaseContextBlock(phase: Phase, feature: Feature | undefined, linkedRequirements?: Requirement[], featureRequirements?: Requirement[], task?: Pick<Task, "id" | "acceptedDecisions">, project?: Pick<Project, "acceptedDecisions">): string;
16
55
  //# sourceMappingURL=task-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-context.d.ts","sourceRoot":"","sources":["../src/task-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,kBAAkB,GAAE,WAAW,EAAO,EACtC,mBAAmB,GAAE,WAAW,EAAO,GACtC,MAAM,CAkDR"}
1
+ {"version":3,"file":"task-context.d.ts","sourceRoot":"","sources":["../src/task-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGhG,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;CAC3C;AAOD,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAAG,MAAM,CAgB/G;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,uBAAuB,EAAE,EACjC,QAAQ,SAAsC,GAC7C;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAY1E;AAQD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,SAA2B,GAClC,YAAY,CAwCd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,kBAAkB,GAAE,WAAW,EAAO,EACtC,mBAAmB,GAAE,WAAW,EAAO,EACvC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,CAAC,EAC7C,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAC3C,MAAM,CA0DR"}
@@ -1,4 +1,94 @@
1
1
  import { formatPhaseRef } from "./naming.js";
2
+ export const MAX_ACCEPTED_DECISION_CONTEXT_CHARS = 8_000;
3
+ export const MAX_PHASE_WORK_MAP_CHARS = 8_000;
4
+ function indentDecisionValue(value) {
5
+ const normalized = value.trim() || "(not provided)";
6
+ return normalized.split(/\r?\n/).map((line) => ` ${line}`).join("\n");
7
+ }
8
+ /** Render every canonical field needed to understand an Accepted Decision. */
9
+ export function renderAcceptedDecisionsSection(label, decisions) {
10
+ const entries = decisions ?? [];
11
+ const lines = [`${label} (${entries.length}):`];
12
+ if (entries.length === 0)
13
+ return `${lines[0]}\n - None.`;
14
+ for (const decision of entries) {
15
+ lines.push(` - ${decision.title}`);
16
+ lines.push(` ID: ${decision.id}`);
17
+ lines.push(` Accepted at: ${decision.acceptedAt}`);
18
+ lines.push(" Decision:");
19
+ lines.push(indentDecisionValue(decision.decision));
20
+ lines.push(" Rationale:");
21
+ lines.push(indentDecisionValue(decision.rationale));
22
+ lines.push(" Implementation notes:");
23
+ lines.push(indentDecisionValue(decision.implementationNotes));
24
+ }
25
+ return lines.join("\n");
26
+ }
27
+ /**
28
+ * Build bounded ambient/load context. This is an orientation summary, not a
29
+ * full-read attestation: truncation is explicit and points to entity full reads.
30
+ */
31
+ export function buildBoundedAcceptedDecisionContext(scopes, maxChars = MAX_ACCEPTED_DECISION_CONTEXT_CHARS) {
32
+ const populated = scopes
33
+ .map((scope) => ({ ...scope, decisions: scope.decisions ?? [] }))
34
+ .filter((scope) => scope.decisions.length > 0);
35
+ const total = populated.reduce((count, scope) => count + scope.decisions.length, 0);
36
+ const full = total === 0
37
+ ? "Accepted decisions: none."
38
+ : populated.map((scope) => renderAcceptedDecisionsSection(`Accepted decisions — ${scope.scope}`, scope.decisions)).join("\n\n");
39
+ if (full.length <= maxChars)
40
+ return { content: full, total, truncated: false, maxChars };
41
+ const suffix = "\n\n[Accepted Decision context truncated for transport safety. Use the relevant full entity read to retrieve every canonical field.]";
42
+ const limit = Math.max(0, maxChars - suffix.length);
43
+ return { content: `${full.slice(0, limit)}${suffix}`.slice(0, maxChars), total, truncated: true, maxChars };
44
+ }
45
+ function conciseTaskGoal(task) {
46
+ const source = task.description?.trim() || task.notes?.trim() || task.title;
47
+ const firstParagraph = source.split(/\n\s*\n|\r?\n/).find((line) => line.trim())?.trim() ?? task.title;
48
+ return firstParagraph.length <= 240 ? firstParagraph : `${firstParagraph.slice(0, 237).trimEnd()}...`;
49
+ }
50
+ /** Build a bounded, priority-ordered map of sibling capability ownership. */
51
+ export function buildPhaseWorkMap(phase, featureNumber, currentTaskId, maxChars = MAX_PHASE_WORK_MAP_CHARS) {
52
+ const phaseRef = formatPhaseRef(phase.number, featureNumber);
53
+ const tasks = phase.tasks ?? [];
54
+ const refById = new Map(tasks.map((task) => [task.id, `${phaseRef}/T${String(task.number).padStart(3, "0")}`]));
55
+ const entries = [...tasks]
56
+ .sort((left, right) => (left.priority ?? left.number) - (right.priority ?? right.number) || left.number - right.number)
57
+ .map((task) => ({
58
+ taskId: task.id,
59
+ ref: `${phaseRef}/T${String(task.number).padStart(3, "0")}`,
60
+ number: task.number,
61
+ priority: task.priority ?? task.number,
62
+ status: task.status,
63
+ title: task.title,
64
+ conciseGoal: conciseTaskGoal(task),
65
+ dependencies: (task.dependsOn ?? []).map((dependency) => refById.get(dependency) ?? dependency),
66
+ remainingCapabilityOwner: !["done", "canceled", "rejected"].includes(task.status),
67
+ current: task.id === currentTaskId,
68
+ }));
69
+ const header = `Phase work map — canonical sibling capability ownership (${entries.length}, priority order):`;
70
+ const blocks = entries.map((entry) => [
71
+ `- ${entry.ref}${entry.current ? " (current)" : ""} — ${entry.title} [priority ${entry.priority}; ${entry.status}]`,
72
+ ` Goal: ${entry.conciseGoal}`,
73
+ ` Depends on: ${entry.dependencies.length > 0 ? entry.dependencies.join(", ") : "None."}`,
74
+ entry.remainingCapabilityOwner
75
+ ? ` Ownership: ${entry.ref} owns this remaining capability; do not duplicate it in another task.`
76
+ : " Ownership: no remaining capability ownership (terminal task).",
77
+ ].join("\n"));
78
+ const suffix = "[Phase work map truncated for transport safety. Read the canonical phase and task full views before proposing work; place deeper context under .planner/docs/.]";
79
+ const included = [];
80
+ let truncated = false;
81
+ for (const block of blocks) {
82
+ const candidate = [header, ...included, block].join("\n");
83
+ if (candidate.length + suffix.length + 1 > maxChars) {
84
+ truncated = true;
85
+ break;
86
+ }
87
+ included.push(block);
88
+ }
89
+ const content = [header, ...included, ...(truncated ? [suffix] : [])].join("\n").slice(0, maxChars);
90
+ return { content, entries, total: entries.length, truncated, maxChars };
91
+ }
2
92
  /**
3
93
  * Build a compact, agent-facing context block that surfaces the PARENT PHASE
4
94
  * (and grandparent FEATURE) description when a task is started. The phase
@@ -12,7 +102,7 @@ import { formatPhaseRef } from "./naming.js";
12
102
  * Harness-agnostic: returns a plain markdown string. Both the Pi adapter and
13
103
  * the MCP server append this to their `task_start` confirmation text.
14
104
  */
15
- export function buildPhaseContextBlock(phase, feature, linkedRequirements = [], featureRequirements = []) {
105
+ export function buildPhaseContextBlock(phase, feature, linkedRequirements = [], featureRequirements = [], task, project) {
16
106
  const lines = [];
17
107
  const phaseRef = formatPhaseRef(phase.number, feature?.number);
18
108
  const requirementsBlock = (label, requirements, empty) => {
@@ -27,16 +117,22 @@ export function buildPhaseContextBlock(phase, feature, linkedRequirements = [],
27
117
  }
28
118
  };
29
119
  lines.push(`\n📋 Task context — read this BEFORE touching code:`);
120
+ lines.push(`\n${buildBoundedAcceptedDecisionContext([
121
+ ...(project ? [{ scope: "project", decisions: project.acceptedDecisions }] : []),
122
+ ...(feature ? [{ scope: `feature F${String(feature.number).padStart(3, "0")}`, decisions: feature.acceptedDecisions }] : []),
123
+ { scope: `phase ${phaseRef}`, decisions: phase.acceptedDecisions },
124
+ ...(task ? [{ scope: "task", decisions: task.acceptedDecisions }] : []),
125
+ ]).content}`);
30
126
  if (feature) {
31
127
  lines.push(`Feature F${String(feature.number).padStart(3, "0")} — ${feature.name}`);
32
128
  if (feature.description && feature.description.trim()) {
33
129
  lines.push(`\nFeature description:\n${feature.description.trim()}`);
34
130
  }
35
- requirementsBlock("Feature linked requirements", featureRequirements, "None linked to this feature.");
131
+ requirementsBlock("Product requirements linked to feature (outcomes, never coding/process rules)", featureRequirements, "None linked to this feature.");
36
132
  }
37
133
  else {
38
134
  lines.push("Feature context: no parent feature linked to this phase.");
39
- requirementsBlock("Feature linked requirements", [], "None linked to this feature.");
135
+ requirementsBlock("Product requirements linked to feature (outcomes, never coding/process rules)", [], "None linked to this feature.");
40
136
  }
41
137
  lines.push(`\nPhase ${phaseRef} — ${phase.title}`);
42
138
  if (phase.summary && phase.summary.trim()) {
@@ -59,7 +155,9 @@ export function buildPhaseContextBlock(phase, feature, linkedRequirements = [],
59
155
  bullet("Open questions", phase.openQuestions);
60
156
  bullet("Decisions", phase.decisions);
61
157
  bullet("Completion criteria", phase.completionCriteria);
62
- requirementsBlock("Phase linked requirements", linkedRequirements, "None linked to this phase.");
158
+ requirementsBlock("Product requirements linked to phase (outcomes, never coding/process rules)", linkedRequirements, "None linked to this phase.");
159
+ lines.push(`\n${buildPhaseWorkMap(phase, feature?.number, task?.id).content}`);
160
+ lines.push("Before proposing or creating work, reread this canonical phase work map and the relevant sibling task full view so an already-owned capability is not duplicated.");
63
161
  lines.push(`\n(End of phase context. Now proceed with the task.)`);
64
162
  return lines.join("\n");
65
163
  }
@@ -1,10 +1,52 @@
1
1
  import type { Feature, Phase, Task, WorkDeviation } from "./schema.js";
2
+ export type RecommendationClaimKind = "recommendation" | "advisory" | "conflict" | "insufficient";
3
+ export type RecommendationClaimSource = "priority" | "active-task" | "resume-deviation" | "dependency-ready" | "handoff" | "archived-handoff";
4
+ export interface RecommendationClaim {
5
+ kind: RecommendationClaimKind;
6
+ source: RecommendationClaimSource;
7
+ ref: string;
8
+ title: string;
9
+ reason: string;
10
+ taskId?: string;
11
+ phaseId?: string;
12
+ featureId?: string;
13
+ }
14
+ export interface RecommendationHandoffEvidence {
15
+ compositeRef: string;
16
+ firstLine: string;
17
+ /** Authoritative only after persisted read-back verification. */
18
+ resumeReady: boolean;
19
+ }
20
+ export interface RecommendationArchivedHandoffEvidence {
21
+ compositeRef: string;
22
+ firstLine: string;
23
+ reason: string;
24
+ }
25
+ export interface RecommendationEvidence {
26
+ handoffs?: RecommendationHandoffEvidence[];
27
+ archivedHandoffs?: RecommendationArchivedHandoffEvidence[];
28
+ }
2
29
  export type TaskRecommendationKind = "active" | "resume" | "priority" | "conflict" | "none";
3
30
  export interface TaskCandidate {
4
31
  feature: Feature | undefined;
5
32
  phase: Phase;
6
33
  task: Task;
7
34
  }
35
+ export interface WorkSummary {
36
+ id: string;
37
+ number: number;
38
+ priority: number;
39
+ title: string;
40
+ status: string;
41
+ }
42
+ export interface NextWorkRecommendation {
43
+ selection: TaskRecommendation;
44
+ activeTask: WorkSummary | null;
45
+ nextFeature: WorkSummary | null;
46
+ nextPhase: WorkSummary | null;
47
+ nextTask: WorkSummary | null;
48
+ claims: RecommendationClaim[];
49
+ }
8
50
  export interface TaskRecommendation {
9
51
  kind: TaskRecommendationKind;
10
52
  candidate?: TaskCandidate;
@@ -30,7 +72,8 @@ export declare function checkExplicitTaskStart(features: Feature[], phases: Phas
30
72
  * may use its recommendation as a default while still allowing an explicitly
31
73
  * approved temporary deviation.
32
74
  */
33
- export declare function recommendNextTask(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string): TaskRecommendation;
75
+ export declare function recommendNextTask(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string, sessionId?: string): TaskRecommendation;
76
+ export declare function recommendNextWork(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string, sessionId?: string, evidence?: RecommendationEvidence): NextWorkRecommendation;
34
77
  /**
35
78
  * Snapshot fields surfaced in the explicit resume-required proposal. Derived
36
79
  * from {@link TaskPauseSnapshot}; kept structural so adapters can build it
@@ -1 +1 @@
1
- {"version":3,"file":"task-selection.d.ts","sourceRoot":"","sources":["../src/task-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AASD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,KAAK,EAAE,EACf,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,aAAa,EAAO,GAC/B,4BAA4B,CA+B9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,GAAE,aAAa,EAAO,EAChC,cAAc,SAAK,GAClB,kBAAkB,CAoEpB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;KACzC,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACzC,GAAG,sBAAsB,CAuBzB"}
1
+ {"version":3,"file":"task-selection.d.ts","sourceRoot":"","sources":["../src/task-selection.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,108 @@
1
1
  const unavailable = new Set(["blocked", "waiting", "deferred", "canceled", "rejected"]);
2
2
  const hardUnavailable = new Set(["blocked", "deferred", "canceled", "rejected"]);
3
3
  const terminal = new Set(["done", "canceled", "rejected"]);
4
- const priority = (entity) => entity.priority && entity.priority > 0 ? entity.priority : Number.MAX_SAFE_INTEGER;
4
+ const priority = (entity) => entity.priority != null ? entity.priority : Number.MAX_SAFE_INTEGER;
5
5
  const compare = (a, b) => priority(a) - priority(b) || a.number - b.number;
6
+ const summarizeFeature = (feature) => ({ id: feature.id, number: feature.number, priority: feature.priority, title: feature.name, status: feature.status });
7
+ const summarizePhase = (phase) => ({ id: phase.id, number: phase.number, priority: phase.priority, title: phase.title, status: phase.status });
8
+ const summarizeTask = (task) => ({ id: task.id, number: task.number, priority: task.priority, title: task.title, status: task.status });
9
+ const RECOMMENDATION_CLAIM_LIMIT = 8;
10
+ const selectionClaimKind = (selectionKind) => {
11
+ if (selectionKind === "priority")
12
+ return "recommendation";
13
+ if (selectionKind === "conflict")
14
+ return "conflict";
15
+ if (selectionKind === "none")
16
+ return "insufficient";
17
+ return "advisory";
18
+ };
19
+ const buildRecommendationClaims = (selection, evidence = {}, dependencyReadyCandidates = []) => {
20
+ const claims = [];
21
+ if (selection.candidate) {
22
+ claims.push({
23
+ kind: selectionClaimKind(selection.kind),
24
+ source: selection.kind === "resume" ? "resume-deviation" : selection.kind === "active" ? "active-task" : "priority",
25
+ ref: selection.candidate.task.id,
26
+ title: selection.candidate.task.title,
27
+ reason: selection.reason,
28
+ taskId: selection.candidate.task.id,
29
+ phaseId: selection.candidate.phase.id,
30
+ ...(selection.candidate.feature?.id ? { featureId: selection.candidate.feature.id } : {}),
31
+ });
32
+ }
33
+ for (const candidate of dependencyReadyCandidates) {
34
+ claims.push({
35
+ kind: "advisory",
36
+ source: "dependency-ready",
37
+ ref: candidate.task.id,
38
+ title: candidate.task.title,
39
+ reason: "All persisted task dependencies are done; this task is ready for explicit priority review.",
40
+ taskId: candidate.task.id,
41
+ phaseId: candidate.phase.id,
42
+ ...(candidate.feature?.id ? { featureId: candidate.feature.id } : {}),
43
+ });
44
+ }
45
+ if (selection.kind === "conflict") {
46
+ for (const activeCandidate of selection.activeCandidates ?? []) {
47
+ claims.push({
48
+ kind: "conflict",
49
+ source: "active-task",
50
+ ref: activeCandidate.task.id,
51
+ title: activeCandidate.task.title,
52
+ reason: "Multiple in-progress tasks are persisted; resolve the active-work conflict before automatic selection.",
53
+ taskId: activeCandidate.task.id,
54
+ phaseId: activeCandidate.phase.id,
55
+ ...(activeCandidate.feature?.id ? { featureId: activeCandidate.feature.id } : {}),
56
+ });
57
+ }
58
+ }
59
+ if (selection.deviation) {
60
+ const deviationTaskId = selection.candidate?.task.id ?? selection.deviation.resumeTaskId;
61
+ claims.push({
62
+ kind: "advisory",
63
+ source: "resume-deviation",
64
+ ref: deviationTaskId,
65
+ title: selection.candidate?.task.title ?? "Resume-required deviation",
66
+ reason: selection.deviation.state === "resume-required"
67
+ ? "Persisted deviation requires resuming the preserved task before new priority work can continue."
68
+ : "Persisted approved deviation competes with priority selection.",
69
+ taskId: deviationTaskId,
70
+ });
71
+ }
72
+ for (const handoff of evidence.handoffs ?? []) {
73
+ if (!handoff.resumeReady) {
74
+ claims.push({
75
+ kind: "insufficient",
76
+ source: "handoff",
77
+ ref: handoff.compositeRef,
78
+ title: handoff.firstLine || handoff.compositeRef,
79
+ reason: "Persisted handoff read-back is incomplete; it is not an actionable resume claim.",
80
+ });
81
+ continue;
82
+ }
83
+ claims.push({
84
+ kind: "advisory",
85
+ source: "handoff",
86
+ ref: handoff.compositeRef,
87
+ title: handoff.firstLine || handoff.compositeRef,
88
+ reason: "Persisted phase handoff is resume-ready and competes with fresh priority work.",
89
+ });
90
+ }
91
+ // Archived Markdown is historical context, not authoritative next-work
92
+ // evidence. A future explicit structured resume target may opt it in; never
93
+ // recover an action by parsing archived prose.
94
+ void evidence.archivedHandoffs;
95
+ if (claims.length === 0) {
96
+ claims.push({
97
+ kind: "insufficient",
98
+ source: "priority",
99
+ ref: "",
100
+ title: "No competing claim evidence",
101
+ reason: selection.reason,
102
+ });
103
+ }
104
+ return claims.slice(0, RECOMMENDATION_CLAIM_LIMIT);
105
+ };
6
106
  /**
7
107
  * Validate an explicitly requested task start. Priority and existing active
8
108
  * work remain advisory for explicit user choices; availability and dependency
@@ -41,14 +141,21 @@ export function checkExplicitTaskStart(features, phases, taskId, deviations = []
41
141
  * may use its recommendation as a default while still allowing an explicitly
42
142
  * approved temporary deviation.
43
143
  */
44
- export function recommendNextTask(features, phases, deviations = [], currentPhaseId = "") {
144
+ export function recommendNextTask(features, phases, deviations = [], currentPhaseId = "", sessionId = "") {
45
145
  const featureById = new Map(features.map((feature) => [feature.id, feature]));
46
146
  const candidates = phases.flatMap((phase) => phase.tasks.map((task) => ({ feature: phase.featureId ? featureById.get(phase.featureId) : undefined, phase, task })));
47
147
  const byTaskId = new Map(candidates.map((candidate) => [candidate.task.id, candidate]));
48
148
  const active = candidates.filter(({ task }) => task.status === "in-progress");
49
- if (active.length > 1)
149
+ if (sessionId) {
150
+ const ownedActive = active.filter(({ task }) => task.activeOwnerSession === sessionId);
151
+ if (ownedActive.length > 1)
152
+ return { kind: "conflict", activeCandidates: ownedActive, reason: "This session owns more than one active task; resolve the active-work conflict before autonomous selection." };
153
+ if (ownedActive.length === 1)
154
+ return { kind: "active", candidate: ownedActive[0], reason: "Resume the single active task owned by this session." };
155
+ }
156
+ else if (active.length > 1)
50
157
  return { kind: "conflict", activeCandidates: active, reason: "More than one task is in progress; resolve the active-work conflict before autonomous selection." };
51
- if (active.length === 1)
158
+ else if (active.length === 1)
52
159
  return { kind: "active", candidate: active[0], reason: "Resume the single active task." };
53
160
  const newestFirst = (left, right) => right.createdAt.localeCompare(left.createdAt);
54
161
  const resumable = (candidate) => candidate
@@ -105,11 +212,55 @@ export function recommendNextTask(features, phases, deviations = [], currentPhas
105
212
  reason: "Continue the current phase before selecting new work elsewhere.",
106
213
  };
107
214
  }
108
- ready.sort((a, b) => compare(a.feature ?? { priority: 0, number: 0 }, b.feature ?? { priority: 0, number: 0 }) || compare(a.phase, b.phase) || compare(a.task, b.task));
109
- return ready[0]
110
- ? { kind: "priority", candidate: ready[0], reason: "Highest-priority ready task by feature, phase, then task." }
215
+ const bestTaskInPhase = (phaseId) => ready
216
+ .filter((candidate) => candidate.phase.id === phaseId)
217
+ .sort((a, b) => compare(a.task, b.task))[0];
218
+ const bestPhaseInFeature = (featureId) => {
219
+ const phaseIds = new Set(ready.filter((candidate) => candidate.feature?.id === featureId).map((candidate) => candidate.phase.id));
220
+ return phases
221
+ .filter((phase) => phase.featureId === featureId && phaseIds.has(phase.id))
222
+ .sort((a, b) => compare(a, b))[0];
223
+ };
224
+ const bestFeature = features
225
+ .filter((feature) => ready.some((candidate) => candidate.feature?.id === feature.id))
226
+ .sort((a, b) => compare(a, b))[0];
227
+ if (!bestFeature)
228
+ return { kind: "none", reason: "No ready task is available." };
229
+ const bestPhase = bestPhaseInFeature(bestFeature.id);
230
+ if (!bestPhase)
231
+ return { kind: "none", reason: "No ready task is available." };
232
+ const candidate = bestTaskInPhase(bestPhase.id);
233
+ return candidate
234
+ ? { kind: "priority", candidate, reason: "Select the lowest-priority ready feature, then phase, then task." }
111
235
  : { kind: "none", reason: "No ready task is available." };
112
236
  }
237
+ export function recommendNextWork(features, phases, deviations = [], currentPhaseId = "", sessionId = "", evidence = {}) {
238
+ const selection = recommendNextTask(features, phases, deviations, currentPhaseId, sessionId);
239
+ const featureById = new Map(features.map((feature) => [feature.id, feature]));
240
+ const taskById = new Map(phases.flatMap((phase) => phase.tasks.map((task) => [task.id, task])));
241
+ const dependencyReadyCandidates = phases.flatMap((phase) => phase.tasks.map((task) => ({
242
+ feature: phase.featureId ? featureById.get(phase.featureId) : undefined,
243
+ phase,
244
+ task,
245
+ })))
246
+ .filter(({ feature, phase, task }) => task.status === "planned"
247
+ && task.dependsOn.length > 0
248
+ && !hardUnavailable.has(phase.status)
249
+ && !(feature && hardUnavailable.has(feature.status))
250
+ && task.dependsOn.every((id) => taskById.get(id)?.status === "done"))
251
+ .sort((left, right) => compare(left.feature ?? { priority: 0, number: 0 }, right.feature ?? { priority: 0, number: 0 }) || compare(left.phase, right.phase) || compare(left.task, right.task));
252
+ const activeTask = selection.kind === "active" && selection.candidate
253
+ ? summarizeTask(selection.candidate.task)
254
+ : null;
255
+ return {
256
+ selection,
257
+ activeTask,
258
+ nextFeature: selection.candidate?.feature ? summarizeFeature(selection.candidate.feature) : null,
259
+ nextPhase: selection.candidate ? summarizePhase(selection.candidate.phase) : null,
260
+ nextTask: selection.candidate ? summarizeTask(selection.candidate.task) : null,
261
+ claims: buildRecommendationClaims(selection, evidence, dependencyReadyCandidates),
262
+ };
263
+ }
113
264
  /**
114
265
  * Build an explicit resume-required proposal. `ref` is the already-formatted
115
266
  * composite reference (F00x/P00x/T00x) supplied by the caller; `snapshot` is
@@ -0,0 +1,27 @@
1
+ interface WriterOwner {
2
+ token: string;
3
+ pid: number;
4
+ hostname: string;
5
+ cwd: string;
6
+ acquiredAt: string;
7
+ }
8
+ export interface PlanWriterBusyDetails {
9
+ errorCode: "PLAN_WRITER_BUSY";
10
+ planRoot: string;
11
+ lockPath: string;
12
+ waitedMs: number;
13
+ owner?: WriterOwner | undefined;
14
+ }
15
+ export declare class PlanWriterBusyError extends Error {
16
+ readonly details: PlanWriterBusyDetails;
17
+ readonly code = "PLAN_WRITER_BUSY";
18
+ constructor(details: PlanWriterBusyDetails);
19
+ }
20
+ /**
21
+ * Serialize one logical planner mutation across processes for a planner root.
22
+ * Nested writes in the same async transaction are re-entrant. Reads never take
23
+ * this lock, so secondary processes remain available for inspection.
24
+ */
25
+ export declare function withPlanRootWriteLock<T>(root: string, fn: () => Promise<T>): Promise<T>;
26
+ export {};
27
+ //# sourceMappingURL=write-coordination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-coordination.d.ts","sourceRoot":"","sources":["../src/write-coordination.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAGhB,OAAO,EAAE,qBAAqB;IAF1D,QAAQ,CAAC,IAAI,sBAAsB;gBAEP,OAAO,EAAE,qBAAqB;CAO3D;AAwLD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAa7F"}