@rryando/arcs 4.0.0 → 4.2.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 (179) hide show
  1. package/README.md +18 -20
  2. package/dist/cli/arcs-flash.d.ts +1 -1
  3. package/dist/cli/arcs-flash.d.ts.map +1 -1
  4. package/dist/cli/arcs-flash.js +9 -50
  5. package/dist/cli/arcs-flash.js.map +1 -1
  6. package/dist/cli/arcs-orchestrate-caveman.d.ts +2 -2
  7. package/dist/cli/arcs-orchestrate-caveman.d.ts.map +1 -1
  8. package/dist/cli/arcs-orchestrate-caveman.js +2 -8
  9. package/dist/cli/arcs-orchestrate-caveman.js.map +1 -1
  10. package/dist/cli/arcs-orchestrate.d.ts +1 -1
  11. package/dist/cli/arcs-orchestrate.d.ts.map +1 -1
  12. package/dist/cli/arcs-orchestrate.js +4 -54
  13. package/dist/cli/arcs-orchestrate.js.map +1 -1
  14. package/dist/cli/orchestrator-shared-blocks.d.ts +10 -30
  15. package/dist/cli/orchestrator-shared-blocks.d.ts.map +1 -1
  16. package/dist/cli/orchestrator-shared-blocks.js +46 -128
  17. package/dist/cli/orchestrator-shared-blocks.js.map +1 -1
  18. package/dist/utils/claude-code-hook-install.d.ts.map +1 -1
  19. package/dist/utils/claude-code-hook-install.js +3 -2
  20. package/dist/utils/claude-code-hook-install.js.map +1 -1
  21. package/dist/utils/diagram-generator.d.ts.map +1 -1
  22. package/dist/utils/diagram-generator.js +11 -6
  23. package/dist/utils/diagram-generator.js.map +1 -1
  24. package/dist/utils/hook-token-store.d.ts +5 -3
  25. package/dist/utils/hook-token-store.d.ts.map +1 -1
  26. package/dist/utils/hook-token-store.js +5 -3
  27. package/dist/utils/hook-token-store.js.map +1 -1
  28. package/dist/utils/session-store.d.ts +9 -57
  29. package/dist/utils/session-store.d.ts.map +1 -1
  30. package/dist/utils/session-store.js +19 -92
  31. package/dist/utils/session-store.js.map +1 -1
  32. package/dist/utils/storage-utils.d.ts +1 -1
  33. package/dist/utils/storage-utils.d.ts.map +1 -1
  34. package/dist/utils/storage-utils.js +1 -1
  35. package/dist/utils/storage-utils.js.map +1 -1
  36. package/dist/web-client/assets/{GraphCanvas-CTyf_XXQ.js → GraphCanvas-BPDgvsyT.js} +1 -1
  37. package/dist/web-client/assets/{MarkdownEditor-af2vwQOX.js → MarkdownEditor-D7TLp78z.js} +1 -1
  38. package/dist/web-client/assets/{abnfDiagram-VRR7QNED-CdxcKX9t.js → abnfDiagram-VRR7QNED-CyuP2N9t.js} +1 -1
  39. package/dist/web-client/assets/architecture-TIHT7OUA-Bdo2Yvm9.js +1 -0
  40. package/dist/web-client/assets/{architectureDiagram-ZJ3FMSHR-DOISDv6o.js → architectureDiagram-ZJ3FMSHR-DZ0ul9QX.js} +1 -1
  41. package/dist/web-client/assets/{blockDiagram-677ZJIJ3-DKwtbttM.js → blockDiagram-677ZJIJ3-LLGzlc9l.js} +1 -1
  42. package/dist/web-client/assets/{c4Diagram-LMCZKHZV-CilqK-Mm.js → c4Diagram-LMCZKHZV-CViu3CTc.js} +1 -1
  43. package/dist/web-client/assets/channel-DBNmizpo.js +1 -0
  44. package/dist/web-client/assets/{chunk-32BRIVSS-C79m1mkG.js → chunk-32BRIVSS-Bw_IuJCM.js} +1 -1
  45. package/dist/web-client/assets/{chunk-52WLFC77-C6WelGWJ.js → chunk-52WLFC77-C29h440W.js} +1 -1
  46. package/dist/web-client/assets/{chunk-C7G6YPKG-DLg7ryWI.js → chunk-C7G6YPKG-hhOrvw5w.js} +1 -1
  47. package/dist/web-client/assets/{chunk-EX3LRPZG-DjWgo4gL.js → chunk-EX3LRPZG-COMzol-M.js} +1 -1
  48. package/dist/web-client/assets/{chunk-FWX5IMBZ-BgS9p_zy.js → chunk-FWX5IMBZ-6vdX9EUn.js} +2 -2
  49. package/dist/web-client/assets/{chunk-HOUHSVGY-DuVR7dZO.js → chunk-HOUHSVGY-DWDW6sxp.js} +1 -1
  50. package/dist/web-client/assets/{chunk-ICXQ74PX-Y8DlnIJM.js → chunk-ICXQ74PX-BdMYglo2.js} +1 -1
  51. package/dist/web-client/assets/{chunk-MOJQB5TN-BEM3QgeD.js → chunk-MOJQB5TN-C0LAX_dC.js} +1 -1
  52. package/dist/web-client/assets/{chunk-OGEWGWER-DlM8LxGr.js → chunk-OGEWGWER-CBx8MB7f.js} +1 -1
  53. package/dist/web-client/assets/{chunk-PUDLZKDR-c6cqNVTx.js → chunk-PUDLZKDR-DKssR1nf.js} +1 -1
  54. package/dist/web-client/assets/{chunk-Q4XR5HBZ-C5lNmcka.js → chunk-Q4XR5HBZ-B3kcxFE-.js} +1 -1
  55. package/dist/web-client/assets/{chunk-V7JOEXUC-nSswxvSG.js → chunk-V7JOEXUC-CAlymndy.js} +1 -1
  56. package/dist/web-client/assets/{chunk-VAUOI2AC-CqJkCkT0.js → chunk-VAUOI2AC-BowfsmTW.js} +1 -1
  57. package/dist/web-client/assets/{chunk-VR4S4FIN-D3pFchin.js → chunk-VR4S4FIN-BBOydgvt.js} +1 -1
  58. package/dist/web-client/assets/{chunk-WYO6CB5R-BI9c-NzI.js → chunk-WYO6CB5R-DcymFbES.js} +1 -1
  59. package/dist/web-client/assets/{chunk-ZGVPDNZ5-CKTF2kLR.js → chunk-ZGVPDNZ5--uKFP-Lr.js} +1 -1
  60. package/dist/web-client/assets/classDiagram-OUVF2IWQ-CB3HiA1_.js +1 -0
  61. package/dist/web-client/assets/classDiagram-v2-EOCWNBFH-CB3HiA1_.js +1 -0
  62. package/dist/web-client/assets/{cynefin-VYW2F7L2-BrJrnfh1.js → cynefin-VYW2F7L2-CjboUOMA.js} +1 -1
  63. package/dist/web-client/assets/{cynefinDiagram-TSTJHNR4-9jYzPWJZ.js → cynefinDiagram-TSTJHNR4-BcxygBP7.js} +1 -1
  64. package/dist/web-client/assets/{dagre-VKFMJZFB-B705Djpu.js → dagre-VKFMJZFB-D-tiERQE.js} +1 -1
  65. package/dist/web-client/assets/{diagram-FQU43EPY-BfQAlUlJ.js → diagram-FQU43EPY-ChPXczaS.js} +1 -1
  66. package/dist/web-client/assets/{diagram-G47NLZAW-s1YDe06A.js → diagram-G47NLZAW-CVL3Y91h.js} +1 -1
  67. package/dist/web-client/assets/{diagram-NH7WQ7WH-Dy3z11Hc.js → diagram-NH7WQ7WH-DsaNA9Lh.js} +1 -1
  68. package/dist/web-client/assets/{diagram-OA4YK3LP-Bius2xUN.js → diagram-OA4YK3LP-CXhrhdhU.js} +1 -1
  69. package/dist/web-client/assets/{diagram-WEI45ONY-D7x4VcHM.js → diagram-WEI45ONY-BTVPnk4E.js} +1 -1
  70. package/dist/web-client/assets/{ebnfDiagram-CCIWWBDH-CBg1xrmD.js → ebnfDiagram-CCIWWBDH-BAyrRBtM.js} +1 -1
  71. package/dist/web-client/assets/{erDiagram-Q63AITRT-CJRvTFvd.js → erDiagram-Q63AITRT-Qm24Wepm.js} +1 -1
  72. package/dist/web-client/assets/eventmodeling-45OFAUF4-DoTBIvl5.js +1 -0
  73. package/dist/web-client/assets/flowDiagram-23GEKE2U-BEH23L1A.js +1 -0
  74. package/dist/web-client/assets/{ganttDiagram-NO4QXBWP-C_LsypZ4.js → ganttDiagram-NO4QXBWP-D8h7l3XJ.js} +1 -1
  75. package/dist/web-client/assets/{gitGraph-TEB2WS4Q-Dx2XxdGk.js → gitGraph-TEB2WS4Q-DIBml1SB.js} +1 -1
  76. package/dist/web-client/assets/{gitGraphDiagram-IHSO6WYX-DiKWkGWQ.js → gitGraphDiagram-IHSO6WYX-CtkYoXjn.js} +1 -1
  77. package/dist/web-client/assets/{index-CYwhkPtc.js → index-DOSH4Q9H.js} +38 -38
  78. package/dist/web-client/assets/{info-DKCQHKI2-DORwHenK.js → info-DKCQHKI2-DLEUtV5Q.js} +1 -1
  79. package/dist/web-client/assets/{infoDiagram-FWYZ7A6U-CQecXS1E.js → infoDiagram-FWYZ7A6U-BJQ7aQux.js} +1 -1
  80. package/dist/web-client/assets/{ishikawaDiagram-FXEZZL3T-CWhj60Zp.js → ishikawaDiagram-FXEZZL3T-BPM11FvG.js} +1 -1
  81. package/dist/web-client/assets/{journeyDiagram-5HDEW3XC-Cj3z2U8u.js → journeyDiagram-5HDEW3XC-C0aX2z3c.js} +1 -1
  82. package/dist/web-client/assets/{kanban-definition-HUTT4EX6-DFmBRenP.js → kanban-definition-HUTT4EX6-C56F29Ib.js} +1 -1
  83. package/dist/web-client/assets/{line-C_Hxz9xb.js → line-BLFHLF2N.js} +1 -1
  84. package/dist/web-client/assets/{mermaid-parser.core-E3xRdzPn.js → mermaid-parser.core-BLC8FhgU.js} +3 -3
  85. package/dist/web-client/assets/{mermaid.core-C2_CcotH.js → mermaid.core-BBqkKuXt.js} +3 -3
  86. package/dist/web-client/assets/{mindmap-definition-LN4V7U3C-Bs7VxPid.js → mindmap-definition-LN4V7U3C-aVZbsoPc.js} +1 -1
  87. package/dist/web-client/assets/{packet-7NZHBO7P-D2nqso7i.js → packet-7NZHBO7P-D4aqSQfB.js} +1 -1
  88. package/dist/web-client/assets/{pegDiagram-2B236MQR-Cepo1sIu.js → pegDiagram-2B236MQR-DjfyNI0U.js} +1 -1
  89. package/dist/web-client/assets/{pie-RZYD4A2V-Sx0IGbXt.js → pie-RZYD4A2V-ChCwYsYj.js} +1 -1
  90. package/dist/web-client/assets/{pieDiagram-ENE6RG2P-D-PMDNhk.js → pieDiagram-ENE6RG2P-BeHLKkXC.js} +1 -1
  91. package/dist/web-client/assets/{quadrantDiagram-ABIIQ3AL-BNGC7Fms.js → quadrantDiagram-ABIIQ3AL-stga3gvq.js} +1 -1
  92. package/dist/web-client/assets/{radar-I7S5WNFK-CFf_-2OC.js → radar-I7S5WNFK-DOGheiwT.js} +1 -1
  93. package/dist/web-client/assets/{railroad-3IZDKUUU-BvZeVRGh.js → railroad-3IZDKUUU-_JnU7M6L.js} +1 -1
  94. package/dist/web-client/assets/railroad-abnf-AHOZXSZD-nhNub7LE.js +1 -0
  95. package/dist/web-client/assets/railroad-ebnf-EBAXGLYW-BlQYe7Yf.js +1 -0
  96. package/dist/web-client/assets/railroad-peg-LSFZ7HO6-B3E8pRVN.js +1 -0
  97. package/dist/web-client/assets/{railroadDiagram-RFXS5EU6-D0iK_k84.js → railroadDiagram-RFXS5EU6-C0CkMsOd.js} +1 -1
  98. package/dist/web-client/assets/{requirementDiagram-TGXJPOKE-BPdsw9tz.js → requirementDiagram-TGXJPOKE-DuImwoRD.js} +1 -1
  99. package/dist/web-client/assets/{sankeyDiagram-HTMAVEWB-maA6ukOJ.js → sankeyDiagram-HTMAVEWB-kprq0XF9.js} +1 -1
  100. package/dist/web-client/assets/{sequenceDiagram-DBY2YBRQ-DKmAjmgr.js → sequenceDiagram-DBY2YBRQ-DiXKJMF6.js} +1 -1
  101. package/dist/web-client/assets/{stateDiagram-2N3HPSRC-esxmzk3w.js → stateDiagram-2N3HPSRC-D5qbVStE.js} +1 -1
  102. package/dist/web-client/assets/stateDiagram-v2-6OUMAXLB-DWwTAG1r.js +1 -0
  103. package/dist/web-client/assets/{swimlanes-5IMT3BWC-DFd-wGBv.js → swimlanes-5IMT3BWC-DCbw389c.js} +1 -1
  104. package/dist/web-client/assets/swimlanesDiagram-G3AALYLV-DabrCsjZ.js +8 -0
  105. package/dist/web-client/assets/{timeline-definition-FHXFAJF6-C7SG8MQH.js → timeline-definition-FHXFAJF6-CQeaYN_9.js} +1 -1
  106. package/dist/web-client/assets/{treeView-QDETBFTQ-M0rhxbs2.js → treeView-QDETBFTQ-Cf7Sq3qo.js} +1 -1
  107. package/dist/web-client/assets/{treemap-6X3UGDF4-BQfkQxSh.js → treemap-6X3UGDF4-BovzvoTU.js} +1 -1
  108. package/dist/web-client/assets/{vennDiagram-L72KCM5P-CyIlb8ju.js → vennDiagram-L72KCM5P-CZsJy139.js} +1 -1
  109. package/dist/web-client/assets/{wardley-OPB4EBWU-EE-7q8M1.js → wardley-OPB4EBWU-DJ7MS6XZ.js} +1 -1
  110. package/dist/web-client/assets/{wardleyDiagram-EHGQE667-bY8XdYYS.js → wardleyDiagram-EHGQE667-rqhcmsbM.js} +1 -1
  111. package/dist/web-client/assets/{xychartDiagram-FW5EYKEG-AhuXJ3de.js → xychartDiagram-FW5EYKEG-HuK4Seps.js} +1 -1
  112. package/dist/web-client/index.html +1 -1
  113. package/dist/web-server/app.d.ts +2 -2
  114. package/dist/web-server/app.d.ts.map +1 -1
  115. package/dist/web-server/app.js +0 -3
  116. package/dist/web-server/app.js.map +1 -1
  117. package/dist/web-server/routes/hook-events.d.ts +6 -7
  118. package/dist/web-server/routes/hook-events.d.ts.map +1 -1
  119. package/dist/web-server/routes/hook-events.js +18 -22
  120. package/dist/web-server/routes/hook-events.js.map +1 -1
  121. package/dist/web-server/routes/sessions.d.ts +6 -8
  122. package/dist/web-server/routes/sessions.d.ts.map +1 -1
  123. package/dist/web-server/routes/sessions.js +27 -137
  124. package/dist/web-server/routes/sessions.js.map +1 -1
  125. package/opencode/arcs/bundle-runtime.json +0 -3
  126. package/opencode/arcs/manifest.json +8 -25
  127. package/opencode/arcs/prompts/arcs-docs.txt +19 -157
  128. package/opencode/arcs/prompts/arcs-flash.txt +49 -152
  129. package/opencode/arcs/prompts/arcs-orchestrate-caveman.txt +47 -165
  130. package/opencode/arcs/prompts/arcs-orchestrate.txt +46 -158
  131. package/opencode/arcs/prompts/code-reviewer.txt +20 -60
  132. package/opencode/arcs/prompts/graph-explorer.txt +19 -49
  133. package/opencode/arcs/prompts/software-engineer.txt +21 -67
  134. package/opencode/arcs/prompts/tech-architect.txt +20 -130
  135. package/opencode/arcs/skills/brainstorming/SKILL.md +20 -100
  136. package/opencode/arcs/skills/brainstorming/visual-companion.md +6 -264
  137. package/opencode/arcs/skills/caveman-commit/SKILL.md +6 -43
  138. package/opencode/arcs/skills/deep-pr-review/SKILL.md +18 -200
  139. package/opencode/arcs/skills/deep-pr-review/codegraph-diff.md +7 -93
  140. package/opencode/arcs/skills/deep-pr-review/review-template.md +13 -60
  141. package/opencode/arcs/skills/enriching-codegraph-proposals/SKILL.md +16 -156
  142. package/opencode/arcs/skills/implementation/SKILL.md +20 -46
  143. package/opencode/arcs/skills/init-project/SKILL.md +12 -150
  144. package/opencode/arcs/skills/install-claude-code-hook/SKILL.md +13 -133
  145. package/opencode/arcs/skills/systematic-debugging/SKILL.md +13 -152
  146. package/opencode/arcs/skills/systematic-debugging/condition-based-waiting.md +7 -110
  147. package/opencode/arcs/skills/systematic-debugging/defense-in-depth.md +7 -119
  148. package/opencode/arcs/skills/systematic-debugging/phases-reference.md +9 -166
  149. package/opencode/arcs/skills/systematic-debugging/root-cause-tracing.md +8 -165
  150. package/opencode/arcs/skills/test-driven-development/SKILL.md +10 -61
  151. package/opencode/arcs/skills/test-driven-development/tdd-rationalizations-and-examples.md +7 -154
  152. package/opencode/arcs/skills/test-driven-development/testing-anti-patterns.md +8 -295
  153. package/opencode/arcs/skills/to-diagram/SKILL.md +18 -206
  154. package/opencode/arcs/skills/writing-knowledge/SKILL.md +11 -63
  155. package/opencode/arcs/skills/writing-plans/SKILL.md +25 -118
  156. package/opencode/arcs/skills/writing-plans/plan-document-reviewer-prompt.md +10 -61
  157. package/package.json +1 -1
  158. package/scripts/claude-code-session-hook.mjs +16 -41
  159. package/skills/explore-dag.md +9 -52
  160. package/skills/init-project.md +9 -98
  161. package/skills/orchestrate.md +15 -109
  162. package/skills/update-docs.md +9 -60
  163. package/dist/web-client/assets/architecture-TIHT7OUA-Bt2-DmfV.js +0 -1
  164. package/dist/web-client/assets/channel-C2mb9np_.js +0 -1
  165. package/dist/web-client/assets/classDiagram-OUVF2IWQ-CPd_w3Zr.js +0 -1
  166. package/dist/web-client/assets/classDiagram-v2-EOCWNBFH-CPd_w3Zr.js +0 -1
  167. package/dist/web-client/assets/eventmodeling-45OFAUF4-CTKRC2Yj.js +0 -1
  168. package/dist/web-client/assets/flowDiagram-23GEKE2U-CaZjFyU1.js +0 -1
  169. package/dist/web-client/assets/railroad-abnf-AHOZXSZD-DnGh6x2O.js +0 -1
  170. package/dist/web-client/assets/railroad-ebnf-EBAXGLYW-CGfgCoaE.js +0 -1
  171. package/dist/web-client/assets/railroad-peg-LSFZ7HO6-BzQxYdqp.js +0 -1
  172. package/dist/web-client/assets/stateDiagram-v2-6OUMAXLB-hcBqlOLc.js +0 -1
  173. package/dist/web-client/assets/swimlanesDiagram-G3AALYLV-DbSrPBYr.js +0 -8
  174. package/dist/web-server/opencode-client.d.ts +0 -123
  175. package/dist/web-server/opencode-client.d.ts.map +0 -1
  176. package/dist/web-server/opencode-client.js +0 -514
  177. package/dist/web-server/opencode-client.js.map +0 -1
  178. package/opencode/arcs/prompts/devil-advocate.txt +0 -79
  179. package/opencode/arcs/skills/executing-plans/SKILL.md +0 -49
@@ -1,117 +1,23 @@
1
1
  ---
2
2
  name: orchestrate
3
- description: Classify intent and route work across all ARCS workflows
3
+ description: Complete ARCS work with delegation preferred for separable outcomes
4
4
  ---
5
5
 
6
- > **Canonical source:** `src/cli/arcs-orchestrate.ts` (`ORCHESTRATE_PROMPT_TEXT`).
7
- > This is a condensed summary. TS prompt wins on disagreement.
6
+ > Canonical source: `src/cli/arcs-orchestrate.ts`.
8
7
 
9
- ## When
8
+ # Direct Lifecycle
10
9
 
11
- User request needs routing through INIT, DESIGN, EXECUTE, SYNC, EXPLORE, REVIEW, or MULTI.
10
+ `UNDERSTAND WORK VERIFY REPORT`
12
11
 
13
- ## Flow
12
+ - Retain the tools to inspect, edit, and verify directly.
13
+ - Use `arcs brief`, plans, tasks, and knowledge when DAG state matters.
14
+ - Strongly prefer delegation for separable implementation, investigation, research, and review.
15
+ - Work directly only for tiny, tightly coupled, or orchestration-state changes.
16
+ - Assign one owner per delegated outcome; use no nested delegation or delegate-to-reviewer-to-repair chains.
17
+ - Plan broad or multi-step work.
18
+ - The agent making a change runs relevant verification.
19
+ - Review is risk-based, not automatic.
20
+ - Explicit requests authorize ordinary local work and requested ARCS updates.
21
+ - Confirm destructive, irreversible, remote, deployment, publication, and Git effects.
14
22
 
15
- ```mermaid
16
- flowchart TD
17
- A[User Request] --> B[T0: arcs brief --lean --json]
18
- B --> C[Classify Intent]
19
- C -->|new project| INIT[INIT]
20
- C -->|design/plan| DESIGN[DESIGN]
21
- C -->|do work| EXECUTE[EXECUTE]
22
- C -->|reconcile| SYNC[SYNC]
23
- C -->|discover| EXPLORE[EXPLORE]
24
- C -->|review/audit| REVIEW[REVIEW]
25
- C -->|compound| MULTI[MULTI]
26
- INIT & DESIGN & EXECUTE & SYNC & EXPLORE & REVIEW & MULTI --> DONE[Completion gate and terminal state]
27
- ```
28
-
29
- ## Context Tiers
30
-
31
- | Tier | What | Who |
32
- |------|------|-----|
33
- | **T0** | `arcs brief --lean --json` — routing surface, focus, next action | Orchestrator |
34
- | **T1** | Single doc fetch | Sub-agent (default) |
35
- | **T2** | Index listings | Sub-agent (default) |
36
- | **T3** | Full body read | Sub-agent always |
37
- | **T4** | Multi-doc / audit | Sub-agent always |
38
-
39
- **Cardinal rule:** Orchestrator reads T0 + writes. Sub-agents read everything else.
40
-
41
- ### T0 envelope shape
42
-
43
- `arcs brief --json` returns a tight ~1 KB envelope:
44
-
45
- ```json
46
- {
47
- "slug": "...", "name": "...", "summary": "...",
48
- "operatingBrief": {
49
- "currentFocus": "<task or plan title to anchor on>",
50
- "recommendedSurface": "QUEUE | PLAN | MEMORY",
51
- "why": "<one-line rationale>",
52
- "nextAction": "<concrete next step the orchestrator should take>"
53
- },
54
- "activePlansCount": N, "activePlanTitles": [...],
55
- "openTasksCount": N, "topOpenTasks": [{ id, title, status }],
56
- "topKnowledge": [{ id, title, kind }]
57
- }
58
- ```
59
-
60
- Use `recommendedSurface` to pick the routing branch:
61
- - `QUEUE` → execute the active task (EXECUTE workflow)
62
- - `PLAN` → design or plan work (DESIGN workflow)
63
- - `MEMORY` → no active work; review knowledge or propose a new plan
64
-
65
- ## CLI Primer
66
-
67
- All ops: `arcs <group> <action> [args] --json`. Mutating commands run directly — no token:
68
- ```bash
69
- arcs <command> --json
70
- ```
71
- Discovery: `arcs --commands --json`
72
-
73
- ## Agent and Skill Routes
74
-
75
- | Agent | AGENT_MODE | Route |
76
- |-------|------------|-------|
77
- | `software-engineer` | `default` | Implementation with orchestrator-selected `WORK_MODE: bounded` or `inspect`; load `implementation` |
78
- | `software-engineer` | `incident` | Diagnosis-first work; add mandatory `systematic-debugging` |
79
- | `tech-architect` | `architecture` | Read-only design with `brainstorming`, then `writing-plans` only after design approval |
80
- | `tech-architect` | `research` | DAG-first cited research; use `writing-knowledge` for substantive proposals |
81
- | `graph-explorer` | `default` | DAG-first repository facts, dependencies, and bounded source questions |
82
- | `code-reviewer` | `review` / `audit` | Reactive diff/PR review or proactive scope/architecture audit |
83
- | `devil-advocate` | phase name | Mandatory phase and completion gates |
84
- | `arcs-docs` | `audit` / `apply` | Two-pass SYNC only |
85
-
86
- The twelve skills are `implementation`, `test-driven-development`, `executing-plans`, `systematic-debugging`, `brainstorming`, `writing-plans`, `to-diagram`, `writing-knowledge`, `init-project`, `enriching-codegraph-proposals`, `deep-pr-review`, and `caveman-commit`.
87
-
88
- `WORK_MODE: bounded` means no repository exploration or user questions. `WORK_MODE: inspect` permits limited inspection to resolve at most one material decision. Add `test-driven-development` for new behavior or bug fixes, and add `executing-plans` only for one approved plan node.
89
-
90
- ## Workflow Contracts
91
-
92
- - **DESIGN:** `brainstorming` produces a read-only design. After the user approves it, `writing-plans` is the sole author of the complete exact plan, task, dependency, verification, and diagram draft. `devil-advocate` gates that draft before exact current-turn authorization and persistence.
93
- - **SYNC:** exactly two-pass — `arcs-docs` `audit` returns exact proposed mutations; `devil-advocate` gates them; only then may `arcs-docs` `apply` the approved mutations and validate the DAG.
94
- - **EXPLORE:** use DAG-first retrieval. If the DAG cannot answer, dispatch `graph-explorer` for codegraph or bounded source fallback.
95
- - **Git:** no automatic git actions. Run add, commit, or push only after an explicit current-turn user request naming the action.
96
-
97
- ## Loop Tools
98
-
99
- - `arcs loop start <slug> --prompt="..." --session="<session-id>" --max-iterations=50 --json` — self-referential dev loop (--session is required; use a unique stable ID per agent session, e.g. a UUID or timestamp string)
100
- - `arcs loop cancel <slug> --json` — cancel active loop
101
- - `arcs loop status <slug> --json` — inspect loop state
102
-
103
- Use these `arcs loop` session commands only when iterative execution is explicitly needed; otherwise route work through the selected execution skill.
104
-
105
- ## Verification Contract
106
-
107
- - Sub-agents run ONLY the scoped VERIFY command from their dispatch (tests/lint on files they touched) — never the full suite.
108
- - The orchestrator never verifies: no tests, lint, builds, or `tsc`.
109
- - `devil-advocate` PHASE: completion is the session's single full-project pass (`npm test`, `npm run typecheck`, and `npm run lint`); on BLOCK, re-dispatch scoped fixes from its FAILURES attribution and re-gate. Two consecutive BLOCKs → stop, report.
110
-
111
- ## Completion
112
-
113
- Every session ends with:
114
- 1. Gate — if any agent reported FILES_TOUCHED ≠ none, dispatch `devil-advocate` PHASE: completion (the only full-project verification); BLOCK → fix loop; never claim done before PASS. Zero-file-change sessions skip the gate.
115
- 2. What was done
116
- 3. Current project state
117
- 4. Suggested next steps
23
+ Use `arcs loop start` only when the user explicitly wants iterative loop execution.
@@ -1,67 +1,16 @@
1
1
  ---
2
2
  name: update-docs
3
- description: Update project documents with structured content
3
+ description: Keep ARCS project documents and DAG artifacts accurate
4
4
  ---
5
5
 
6
- > **Canonical source:** `src/cli/arcs-orchestrate.ts` `## Content Guidelines`.
6
+ # Update Documentation
7
7
 
8
- ## When
8
+ Read the affected project state, make the requested scoped update, then validate it.
9
9
 
10
- Codebase analyzed and findings need recording, task statuses changed, dependencies updated, or knowledge needs capturing.
10
+ - overview: concise current summary and goals;
11
+ - tasks: execution state and dependencies;
12
+ - plans: broad multi-step outcomes and acceptance;
13
+ - knowledge: durable non-obvious context with useful body and source files;
14
+ - diagrams: derived from task metadata.
11
15
 
12
- ## Flow
13
-
14
- ```mermaid
15
- flowchart TD
16
- A[arcs-docs audit: read current DAG] --> B[Return exact proposed mutations]
17
- B --> C[devil-advocate SYNC gate]
18
- C -->|PASS| D[arcs-docs apply approved mutations]
19
- D --> E[Verify: arcs validate]
20
- ```
21
-
22
- ## CLI Primer
23
-
24
- ```bash
25
- arcs <command> --json
26
- ```
27
- Discovery: `arcs --commands --json`
28
-
29
- ## Content Guidelines
30
-
31
- | Doc | Format |
32
- |-----|--------|
33
- | overview | 2-3 sentence summary + concrete goals |
34
- | tasks | `[ ]` backlog / `[/]` in-progress / `[x]` done — execution queue state only |
35
- | dependencies | Upstream + downstream with notes on *why* |
36
- | knowledge | Summary landing page → point to structured knowledge entries |
37
-
38
- ## Structured Plans for Feature Work
39
-
40
- Use structured plans for feature work that spans multiple tasks. `brainstorming` produces the approved design; `writing-plans` is the sole authoring owner for the complete exact plan/task/diagram draft. The orchestrator persists that exact revision only after the plan gate passes and the user gives current-turn exact-artifact authorization.
41
-
42
- List existing: `arcs plan list <slug> --json`
43
-
44
- ## Structured Knowledge Entries
45
-
46
- For durable project memory (lessons, gotchas, patterns, architecture), workers return proposal-only `arcs knowledge upsert` commands. The orchestrator applies them only after their owning phase passes.
47
-
48
- List existing: `arcs knowledge list <slug> --json`
49
-
50
- | Section | What to include |
51
- |---------|----------------|
52
- | Tech Stack | Languages, frameworks, runtimes, key libraries |
53
- | Architecture | Module boundaries, service topology, data flow |
54
- | Patterns | Naming conventions, file organization, coding patterns |
55
- | Gotchas | Non-obvious behaviors, common pitfalls, workarounds |
56
- | Key Files | Entry points, config files, main modules |
57
-
58
- > **Tip**: Summary table in knowledge.md. Deep dives in knowledge entries.
59
-
60
- SYNC is strictly two-pass (`audit` then approved `apply`). There are no automatic git actions.
61
-
62
- ## Plan Keyword Conventions
63
-
64
- | Keywords | Status | Origin |
65
- |----------|--------|--------|
66
- | `spec`, `design` | `proposed` | Design specs from brainstorming |
67
- | `implementation-plan` | `planned` | Step-by-step implementation plans |
16
+ Use ARCS CLI mutations rather than editing store internals. Apply evidence-backed corrections directly when requested. Ask only when the change alters the goal, material scope, or destructive/external effects. No automatic Git actions.
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{M as e}from"./mermaid-parser.core-E3xRdzPn.js";export{e as createArchitectureServices};
@@ -1 +0,0 @@
1
- import{at as e,it as t}from"./chunk-WYO6CB5R-BI9c-NzI.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-WYO6CB5R-BI9c-NzI.js";import"./chunk-ICXQ74PX-Y8DlnIJM.js";import"./chunk-HOUHSVGY-DuVR7dZO.js";import"./chunk-Q4XR5HBZ-C5lNmcka.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-OGEWGWER-DlM8LxGr.js";import"./chunk-32BRIVSS-C79m1mkG.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-VR4S4FIN-D3pFchin.js";import"./chunk-C7G6YPKG-DLg7ryWI.js";import"./chunk-ZGVPDNZ5-CKTF2kLR.js";import"./chunk-52WLFC77-C6WelGWJ.js";import"./chunk-FWX5IMBZ-BgS9p_zy.js";import{i as t,n,r,t as i}from"./chunk-V7JOEXUC-nSswxvSG.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-WYO6CB5R-BI9c-NzI.js";import"./chunk-ICXQ74PX-Y8DlnIJM.js";import"./chunk-HOUHSVGY-DuVR7dZO.js";import"./chunk-Q4XR5HBZ-C5lNmcka.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-OGEWGWER-DlM8LxGr.js";import"./chunk-32BRIVSS-C79m1mkG.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-VR4S4FIN-D3pFchin.js";import"./chunk-C7G6YPKG-DLg7ryWI.js";import"./chunk-ZGVPDNZ5-CKTF2kLR.js";import"./chunk-52WLFC77-C6WelGWJ.js";import"./chunk-FWX5IMBZ-BgS9p_zy.js";import{i as t,n,r,t as i}from"./chunk-V7JOEXUC-nSswxvSG.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{O as e}from"./mermaid-parser.core-E3xRdzPn.js";export{e as createEventModelingServices};
@@ -1 +0,0 @@
1
- import"./src-oBChb5qS.js";import"./chunk-WYO6CB5R-BI9c-NzI.js";import"./chunk-ICXQ74PX-Y8DlnIJM.js";import"./chunk-HOUHSVGY-DuVR7dZO.js";import"./chunk-Q4XR5HBZ-C5lNmcka.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-OGEWGWER-DlM8LxGr.js";import"./chunk-32BRIVSS-C79m1mkG.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-VR4S4FIN-D3pFchin.js";import"./chunk-C7G6YPKG-DLg7ryWI.js";import"./chunk-ZGVPDNZ5-CKTF2kLR.js";import"./chunk-52WLFC77-C6WelGWJ.js";import"./chunk-FWX5IMBZ-BgS9p_zy.js";import"./chunk-ZIRB5QZD-BpeS1aZ7.js";import{n as e}from"./chunk-PUDLZKDR-c6cqNVTx.js";export{e as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{m as e}from"./mermaid-parser.core-E3xRdzPn.js";export{e as createRailroadAbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{f as e}from"./mermaid-parser.core-E3xRdzPn.js";export{e as createRailroadEbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{u as e}from"./mermaid-parser.core-E3xRdzPn.js";export{e as createRailroadPegServices};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-WYO6CB5R-BI9c-NzI.js";import"./chunk-ICXQ74PX-Y8DlnIJM.js";import"./chunk-HOUHSVGY-DuVR7dZO.js";import"./chunk-Q4XR5HBZ-C5lNmcka.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-OGEWGWER-DlM8LxGr.js";import"./chunk-32BRIVSS-C79m1mkG.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-VR4S4FIN-D3pFchin.js";import"./chunk-C7G6YPKG-DLg7ryWI.js";import"./chunk-ZGVPDNZ5-CKTF2kLR.js";import"./chunk-52WLFC77-C6WelGWJ.js";import"./chunk-FWX5IMBZ-BgS9p_zy.js";import{i as t,n,r,t as i}from"./chunk-EX3LRPZG-DjWgo4gL.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1,8 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-WYO6CB5R-BI9c-NzI.js";import"./chunk-ICXQ74PX-Y8DlnIJM.js";import"./chunk-HOUHSVGY-DuVR7dZO.js";import"./chunk-Q4XR5HBZ-C5lNmcka.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-OGEWGWER-DlM8LxGr.js";import"./chunk-32BRIVSS-C79m1mkG.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-VR4S4FIN-D3pFchin.js";import"./chunk-C7G6YPKG-DLg7ryWI.js";import"./chunk-ZGVPDNZ5-CKTF2kLR.js";import"./chunk-52WLFC77-C6WelGWJ.js";import"./chunk-FWX5IMBZ-BgS9p_zy.js";import"./chunk-ZIRB5QZD-BpeS1aZ7.js";import{r as t,t as n}from"./chunk-PUDLZKDR-c6cqNVTx.js";var r=n({defaultLayout:`swimlane`,styles:e(e=>`${t(e)}
2
- .swimlane.cluster rect {
3
- stroke: ${e.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,`getStyles`)});export{r as diagram};
@@ -1,123 +0,0 @@
1
- /**
2
- * opencode session discovery bridge (Phase 1 — observability only).
3
- *
4
- * ARCS never spawns or manages an opencode server; it attaches to an already
5
- * running `opencode serve` instance as a thin client, subscribes to the
6
- * cross-instance `/global/event` SSE stream, and mirrors what it sees into the
7
- * per-project session store. Everything here is best-effort: if opencode is
8
- * not configured, not running, or speaks a different dialect, the ARCS web
9
- * server keeps working and the sessions list is simply empty or stale.
10
- *
11
- * Verified against opencode 0.0.0-main-202607110203:
12
- * - `opencode serve` defaults to port 0 (ephemeral), so a port/URL must be
13
- * supplied explicitly via env — there is no safe default to guess.
14
- * - `OPENCODE_SERVER_PASSWORD` is enforced as HTTP Basic auth with the literal
15
- * username "opencode"; any other username is rejected with 401.
16
- * - `/event` is scoped to one instance (`?directory=`); `/global/event` is the
17
- * cross-directory stream and wraps each event as `{ directory, project,
18
- * payload }`. Frames carry no `event:` field, only `data:`.
19
- */
20
- import { type SessionStatus } from "../utils/session-store.js";
21
- export interface OpencodeConfig {
22
- baseUrl: string;
23
- password?: string;
24
- }
25
- /**
26
- * Reads bridge configuration from the environment. Returns null (discovery
27
- * disabled) when no opencode endpoint is configured.
28
- */
29
- export declare function readOpencodeConfig(env?: NodeJS.ProcessEnv): OpencodeConfig | null;
30
- export interface OpencodeMessageTarget {
31
- /** opencode-native session id ("ses_…") — never the ARCS normalized id. */
32
- runtimeSessionId: string;
33
- /** Worktree the session belongs to, when known — scopes opencode's lookup. */
34
- directory?: string;
35
- }
36
- /**
37
- * Injects a user message into a live opencode session.
38
- *
39
- * Unlike the rest of this module (best-effort observability) this is a user
40
- * mutation, so failures throw a typed DagError the web routes can surface.
41
- *
42
- * Verified against opencode 1.0.0 (`GET /doc`) plus a live server:
43
- * - `POST /session/:sessionID/prompt_async` acks with 204 and runs the turn in
44
- * the background. `POST /session/:sessionID/message` takes the same body but
45
- * only responds once the assistant has finished its whole turn — minutes, for
46
- * a browser request — so async delivery is the one that fits a web form.
47
- * - the body requires `parts`; a text part is `{ type: "text", text }`.
48
- * - `?directory=` is optional (an unscoped send still lands) but is passed when
49
- * known so the lookup is unambiguous across worktrees.
50
- */
51
- export declare function sendOpencodeMessage(config: OpencodeConfig, target: OpencodeMessageTarget, text: string): Promise<void>;
52
- export interface CreateOpencodeSessionInput {
53
- /** Worktree the session runs in — required, see the directory note below. */
54
- directory: string;
55
- title?: string;
56
- }
57
- /** Only what ARCS needs to mirror the session; the SSE stream fills in the rest. */
58
- export interface CreatedOpencodeSession {
59
- runtimeSessionId: string;
60
- title?: string;
61
- }
62
- /**
63
- * Creates a live opencode session bound to a worktree.
64
- *
65
- * Verified against opencode 0.0.0-main-202607110203 (`GET /doc`, operationId
66
- * `session.create`) plus a live server:
67
- * - the route is `POST /session` — NOT `/api/session`. opencode serves its own
68
- * web UI from the same port and answers every unknown path with a 200
69
- * text/html SPA shell, so a wrong path looks like a success until the body is
70
- * read. That is why the id is checked below rather than trusting `res.ok`.
71
- * - `directory` is a *query* parameter and never a body field. Omitting it does
72
- * not fail; opencode silently creates the session in its own working
73
- * directory, so the caller must always pass the worktree explicitly.
74
- * - `title` is the only body field ARCS sets; the response is a full session
75
- * object (`{ id, slug, directory, title, time }`).
76
- * - `DELETE /session/:sessionID` exists, so nothing created here is permanent.
77
- */
78
- export declare function createOpencodeSession(config: OpencodeConfig, input: CreateOpencodeSessionInput): Promise<CreatedOpencodeSession>;
79
- interface OpencodeSessionInfo {
80
- id?: string;
81
- slug?: string;
82
- title?: string;
83
- directory?: string;
84
- projectID?: string;
85
- time?: {
86
- created?: number;
87
- updated?: number;
88
- };
89
- project?: {
90
- worktree?: string;
91
- };
92
- }
93
- interface OpencodeEvent {
94
- type?: string;
95
- properties?: {
96
- sessionID?: string;
97
- info?: OpencodeSessionInfo;
98
- status?: {
99
- type?: string;
100
- };
101
- };
102
- }
103
- /**
104
- * Maps an opencode event type to the ARCS session status it implies.
105
- * Returns null for events that carry no status transition (the record is
106
- * refreshed but its status is left alone).
107
- */
108
- export declare function statusForOpencodeEvent(event: OpencodeEvent): SessionStatus | null;
109
- export interface OpencodeDiscoveryState {
110
- enabled: boolean;
111
- connected: boolean;
112
- baseUrl: string | null;
113
- }
114
- export declare function opencodeDiscoveryState(): OpencodeDiscoveryState;
115
- /**
116
- * Starts the discovery loop if an opencode endpoint is configured. Idempotent;
117
- * returns false when discovery is disabled (no configuration present).
118
- */
119
- export declare function startOpencodeDiscovery(config?: OpencodeConfig | null): boolean;
120
- /** Stops the discovery loop (test cleanup / server shutdown). */
121
- export declare function stopOpencodeDiscovery(): Promise<void>;
122
- export {};
123
- //# sourceMappingURL=opencode-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"opencode-client.d.ts","sourceRoot":"","sources":["../../src/web-server/opencode-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,2BAA2B,CAAC;AAanC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,GAAG,IAAI,CAc9F;AAYD,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAiCf;AAMD,MAAM,WAAW,0BAA0B;IACzC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAyCjC;AAeD,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,mBAAmB,CAAC;QAC3B,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5B,CAAC;CACH;AAQD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAuBjF;AA2DD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,sBAAsB,IAAI,sBAAsB,CAE/D;AAoQD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,wBAAuB,GAAG,OAAO,CAW7E;AAED,iEAAiE;AACjE,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa3D"}