otacon 0.1.2 → 0.1.4

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 (201) hide show
  1. package/README.md +18 -5
  2. package/dist/cli/browser.js +1 -1
  3. package/dist/cli/browser.js.map +1 -1
  4. package/dist/cli/client.js +13 -2
  5. package/dist/cli/client.js.map +1 -1
  6. package/dist/cli/commands/answer.js +1 -1
  7. package/dist/cli/commands/answer.js.map +1 -1
  8. package/dist/cli/commands/ask.js +3 -3
  9. package/dist/cli/commands/ask.js.map +1 -1
  10. package/dist/cli/commands/clean.js +14 -16
  11. package/dist/cli/commands/clean.js.map +1 -1
  12. package/dist/cli/commands/config.js +1 -1
  13. package/dist/cli/commands/config.js.map +1 -1
  14. package/dist/cli/commands/doctor.js +4 -4
  15. package/dist/cli/commands/doctor.js.map +1 -1
  16. package/dist/cli/commands/expose.js +7 -7
  17. package/dist/cli/commands/expose.js.map +1 -1
  18. package/dist/cli/commands/implement-done.js +1 -1
  19. package/dist/cli/commands/implement-done.js.map +1 -1
  20. package/dist/cli/commands/install.js +16 -10
  21. package/dist/cli/commands/install.js.map +1 -1
  22. package/dist/cli/commands/open.js +31 -7
  23. package/dist/cli/commands/open.js.map +1 -1
  24. package/dist/cli/commands/progress.js +1 -1
  25. package/dist/cli/commands/progress.js.map +1 -1
  26. package/dist/cli/commands/resume.js +67 -0
  27. package/dist/cli/commands/resume.js.map +1 -0
  28. package/dist/cli/commands/start.js +24 -3
  29. package/dist/cli/commands/start.js.map +1 -1
  30. package/dist/cli/commands/status.js +15 -4
  31. package/dist/cli/commands/status.js.map +1 -1
  32. package/dist/cli/commands/submit.js +5 -5
  33. package/dist/cli/commands/submit.js.map +1 -1
  34. package/dist/cli/commands/update.js +83 -0
  35. package/dist/cli/commands/update.js.map +1 -0
  36. package/dist/cli/commands/wait.js +1 -1
  37. package/dist/cli/commands/wait.js.map +1 -1
  38. package/dist/cli/install/assets.js +123 -48
  39. package/dist/cli/install/assets.js.map +1 -1
  40. package/dist/cli/install/locations.js +1 -1
  41. package/dist/cli/install/locations.js.map +1 -1
  42. package/dist/cli/install/tailscale.js +2 -2
  43. package/dist/cli/install/tailscale.js.map +1 -1
  44. package/dist/cli/install/wrapper.js +202 -0
  45. package/dist/cli/install/wrapper.js.map +1 -0
  46. package/dist/cli/main.js +10 -3
  47. package/dist/cli/main.js.map +1 -1
  48. package/dist/cli/output.js +2 -2
  49. package/dist/cli/output.js.map +1 -1
  50. package/dist/cli/session.js +18 -7
  51. package/dist/cli/session.js.map +1 -1
  52. package/dist/cli/update.js +236 -0
  53. package/dist/cli/update.js.map +1 -0
  54. package/dist/daemon/activity.js +1 -1
  55. package/dist/daemon/activity.js.map +1 -1
  56. package/dist/daemon/anchor.js +1 -1
  57. package/dist/daemon/anchor.js.map +1 -1
  58. package/dist/daemon/app.js +370 -82
  59. package/dist/daemon/app.js.map +1 -1
  60. package/dist/daemon/approve.js +3 -3
  61. package/dist/daemon/approve.js.map +1 -1
  62. package/dist/daemon/capture/adapter.js +23 -0
  63. package/dist/daemon/capture/adapter.js.map +1 -0
  64. package/dist/daemon/capture/claude.js +274 -0
  65. package/dist/daemon/capture/claude.js.map +1 -0
  66. package/dist/daemon/capture/codex.js +413 -0
  67. package/dist/daemon/capture/codex.js.map +1 -0
  68. package/dist/daemon/capture/normalize.js +89 -0
  69. package/dist/daemon/capture/normalize.js.map +1 -0
  70. package/dist/daemon/capture/opencode.js +330 -0
  71. package/dist/daemon/capture/opencode.js.map +1 -0
  72. package/dist/daemon/capture/registry.js +33 -0
  73. package/dist/daemon/capture/registry.js.map +1 -0
  74. package/dist/daemon/capture/stream-store.js +121 -0
  75. package/dist/daemon/capture/stream-store.js.map +1 -0
  76. package/dist/daemon/capture/tailer.js +108 -0
  77. package/dist/daemon/capture/tailer.js.map +1 -0
  78. package/dist/daemon/desktop-notify.js +11 -5
  79. package/dist/daemon/desktop-notify.js.map +1 -1
  80. package/dist/daemon/diagrams.js +90 -0
  81. package/dist/daemon/diagrams.js.map +1 -0
  82. package/dist/daemon/diff.js +1 -2
  83. package/dist/daemon/diff.js.map +1 -1
  84. package/dist/daemon/linter/parse.js +45 -12
  85. package/dist/daemon/linter/parse.js.map +1 -1
  86. package/dist/daemon/linter/rules.js +20 -17
  87. package/dist/daemon/linter/rules.js.map +1 -1
  88. package/dist/daemon/main.js +1 -1
  89. package/dist/daemon/main.js.map +1 -1
  90. package/dist/daemon/notify.js +1 -1
  91. package/dist/daemon/notify.js.map +1 -1
  92. package/dist/daemon/presence.js +1 -1
  93. package/dist/daemon/presence.js.map +1 -1
  94. package/dist/daemon/queue.js +7 -7
  95. package/dist/daemon/queue.js.map +1 -1
  96. package/dist/daemon/store.js +66 -79
  97. package/dist/daemon/store.js.map +1 -1
  98. package/dist/daemon/threads.js +111 -25
  99. package/dist/daemon/threads.js.map +1 -1
  100. package/dist/daemon/transcript.js +1 -1
  101. package/dist/daemon/transcript.js.map +1 -1
  102. package/dist/daemon/ui.js +13 -6
  103. package/dist/daemon/ui.js.map +1 -1
  104. package/dist/daemon/viewers.js +37 -0
  105. package/dist/daemon/viewers.js.map +1 -0
  106. package/dist/shared/config.js +52 -7
  107. package/dist/shared/config.js.map +1 -1
  108. package/dist/shared/gwt.js +1 -1
  109. package/dist/shared/gwt.js.map +1 -1
  110. package/dist/shared/paths.js +68 -33
  111. package/dist/shared/paths.js.map +1 -1
  112. package/dist/shared/question-spec.js +1 -1
  113. package/dist/shared/question-spec.js.map +1 -1
  114. package/dist/shared/types.js +7 -3
  115. package/dist/shared/types.js.map +1 -1
  116. package/dist/shared/version.js +1 -1
  117. package/dist/skills/otacon/SKILL.md +250 -0
  118. package/dist/ui/assets/{arc-KT3ZnaMp.js → arc-BUR2DxNA.js} +1 -1
  119. package/dist/ui/assets/architecture-7EHR7CIX-TTokq2IO.js +1 -0
  120. package/dist/ui/assets/{architectureDiagram-3BPJPVTR-DLu0UM7N.js → architectureDiagram-3BPJPVTR-unLnkDyM.js} +1 -1
  121. package/dist/ui/assets/{blockDiagram-GPEHLZMM-B8wApEWC.js → blockDiagram-GPEHLZMM-DHx8lNeL.js} +1 -1
  122. package/dist/ui/assets/{c4Diagram-AAUBKEIU-BNS5gmQS.js → c4Diagram-AAUBKEIU-BU9T562l.js} +1 -1
  123. package/dist/ui/assets/channel-BA6ChrT3.js +1 -0
  124. package/dist/ui/assets/{chunk-2J33WTMH-CTY2etwY.js → chunk-2J33WTMH-BEb0myVl.js} +1 -1
  125. package/dist/ui/assets/{chunk-3OPIFGDE-DZM4Sz84.js → chunk-3OPIFGDE-DESBG_RB.js} +1 -1
  126. package/dist/ui/assets/{chunk-4BX2VUAB-sGwrrXIO.js → chunk-4BX2VUAB-dt3F_E_5.js} +1 -1
  127. package/dist/ui/assets/{chunk-55IACEB6-CGlNp76o.js → chunk-55IACEB6-BcyuZM7U.js} +1 -1
  128. package/dist/ui/assets/{chunk-5ZQYHXKU-5zebJ3jW.js → chunk-5ZQYHXKU-DqdwSJlO.js} +1 -1
  129. package/dist/ui/assets/{chunk-727SXJPM-DelmUpvy.js → chunk-727SXJPM-B04SqNWj.js} +1 -1
  130. package/dist/ui/assets/{chunk-AQP2D5EJ-DMVzBf3M.js → chunk-AQP2D5EJ-DpjCPBWN.js} +1 -1
  131. package/dist/ui/assets/{chunk-BSJP7CBP-CZHrcpSu.js → chunk-BSJP7CBP-BNOU3k5G.js} +1 -1
  132. package/dist/ui/assets/{chunk-CSCIHK7Q-C1efTp0O.js → chunk-CSCIHK7Q-iWOtNZm_.js} +1 -1
  133. package/dist/ui/assets/{chunk-FMBD7UC4-B6axGwgn.js → chunk-FMBD7UC4-BHH_etky.js} +1 -1
  134. package/dist/ui/assets/{chunk-KSCS5N6A-DSaxbrm0.js → chunk-KSCS5N6A-DbRuazP3.js} +1 -1
  135. package/dist/ui/assets/{chunk-L5ZTLDWV-D9ZKdVGx.js → chunk-L5ZTLDWV-B2ZZFONi.js} +1 -1
  136. package/dist/ui/assets/{chunk-LZXEDZCA-DI5_1s00.js → chunk-LZXEDZCA-DryVpwAh.js} +2 -2
  137. package/dist/ui/assets/{chunk-ND2GUHAM-DQQ4RVLE.js → chunk-ND2GUHAM-2Bb1izqg.js} +1 -1
  138. package/dist/ui/assets/{chunk-NZK2D7GU-9zJJaDpb.js → chunk-NZK2D7GU-2DhvLbqL.js} +1 -1
  139. package/dist/ui/assets/{chunk-O5CBEL6O-DUOshAt2.js → chunk-O5CBEL6O-B5oigO7D.js} +1 -1
  140. package/dist/ui/assets/chunk-QZHKN3VN-BDHgdxoT.js +1 -0
  141. package/dist/ui/assets/chunk-WU5MYG2G-FDJTP_wT.js +1 -0
  142. package/dist/ui/assets/{chunk-XPW4576I-DQVL_GAl.js → chunk-XPW4576I-Dmq-O7bc.js} +1 -1
  143. package/dist/ui/assets/classDiagram-4FO5ZUOK-B5kZsiIt.js +1 -0
  144. package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-B5kZsiIt.js +1 -0
  145. package/dist/ui/assets/{cose-bilkent-S5V4N54A-C7m3VlSW.js → cose-bilkent-S5V4N54A-oTsqU1DY.js} +1 -1
  146. package/dist/ui/assets/{dagre-BM42HDAG-CoU_T6EY.js → dagre-BM42HDAG-CZykCU6B.js} +1 -1
  147. package/dist/ui/assets/{diagram-2AECGRRQ-C_R7oNKE.js → diagram-2AECGRRQ-BY7clIlO.js} +1 -1
  148. package/dist/ui/assets/{diagram-5GNKFQAL-UhE2W3Yi.js → diagram-5GNKFQAL-BWdq4hV0.js} +1 -1
  149. package/dist/ui/assets/{diagram-KO2AKTUF-D4KZCRld.js → diagram-KO2AKTUF-CCGEaiZg.js} +1 -1
  150. package/dist/ui/assets/{diagram-LMA3HP47-CsOe8-S6.js → diagram-LMA3HP47-CVkepFYU.js} +1 -1
  151. package/dist/ui/assets/{diagram-OG6HWLK6-Bkbs2V54.js → diagram-OG6HWLK6-f-NjsfLG.js} +1 -1
  152. package/dist/ui/assets/{dist-BcowSnUl.js → dist-ZqsueX9_.js} +1 -1
  153. package/dist/ui/assets/{erDiagram-TEJ5UH35-DJXsykZz.js → erDiagram-TEJ5UH35-D8Wn6QP3.js} +1 -1
  154. package/dist/ui/assets/eventmodeling-FCH6USID-BODDoY6e.js +1 -0
  155. package/dist/ui/assets/{flowDiagram-I6XJVG4X-Chguj9Xz.js → flowDiagram-I6XJVG4X-BYnhla9k.js} +1 -1
  156. package/dist/ui/assets/{ganttDiagram-6RSMTGT7-DXdpFesp.js → ganttDiagram-6RSMTGT7-Dpu52ZRF.js} +1 -1
  157. package/dist/ui/assets/{gitGraph-WXDBUCRP-Doq1CcxB.js → gitGraph-WXDBUCRP-ou8xzQe1.js} +1 -1
  158. package/dist/ui/assets/{gitGraphDiagram-PVQCEYII-uxGwHEPv.js → gitGraphDiagram-PVQCEYII-BnTuFH7F.js} +1 -1
  159. package/dist/ui/assets/index-B2mL0c61.js +11 -0
  160. package/dist/ui/assets/index-sZ1TgAvb.css +1 -0
  161. package/dist/ui/assets/{info-J43DQDTF-CgWT_d3M.js → info-J43DQDTF-xgUHa7k0.js} +1 -1
  162. package/dist/ui/assets/{infoDiagram-5YYISTIA-B3oDA2Ct.js → infoDiagram-5YYISTIA-DJBudrwD.js} +1 -1
  163. package/dist/ui/assets/{ishikawaDiagram-YF4QCWOH-C6l0lvC3.js → ishikawaDiagram-YF4QCWOH-DpFHgERI.js} +1 -1
  164. package/dist/ui/assets/{journeyDiagram-JHISSGLW-COf53NwC.js → journeyDiagram-JHISSGLW-Cd32hdpY.js} +1 -1
  165. package/dist/ui/assets/{kanban-definition-UN3LZRKU-DaOPRBld.js → kanban-definition-UN3LZRKU-Dm1V8lr0.js} +1 -1
  166. package/dist/ui/assets/{line-new3jLu3.js → line-CZu6_PMX.js} +1 -1
  167. package/dist/ui/assets/{linear-yA22knFB.js → linear-2tkTX_U2.js} +1 -1
  168. package/dist/ui/assets/{mermaid-parser.core-D8JVCOKU.js → mermaid-parser.core-C4m04cRe.js} +2 -2
  169. package/dist/ui/assets/{mermaid.core-BCrPyVBK.js → mermaid.core-BPeg1ewg.js} +3 -3
  170. package/dist/ui/assets/{mindmap-definition-RKZ34NQL-CVcJTWsW.js → mindmap-definition-RKZ34NQL-BENqEkIK.js} +1 -1
  171. package/dist/ui/assets/{packet-YPE3B663-DlSwpK-G.js → packet-YPE3B663-DNO0oBLH.js} +1 -1
  172. package/dist/ui/assets/{pie-LRSECV5Y-CyMpbo4C.js → pie-LRSECV5Y-CWoz31oB.js} +1 -1
  173. package/dist/ui/assets/{pieDiagram-4H26LBE5-Dy7day5R.js → pieDiagram-4H26LBE5-CtmxhUGI.js} +1 -1
  174. package/dist/ui/assets/{plan-view-CE2ha0qY.js → plan-view-bZtdFbit.js} +4 -4
  175. package/dist/ui/assets/{quadrantDiagram-W4KKPZXB-CVjVgbaQ.js → quadrantDiagram-W4KKPZXB-BO3IZNbx.js} +1 -1
  176. package/dist/ui/assets/{radar-GUYGQ44K-DLPfv0jT.js → radar-GUYGQ44K-AEfROz99.js} +1 -1
  177. package/dist/ui/assets/{requirementDiagram-4Y6WPE33-y_0KOdN8.js → requirementDiagram-4Y6WPE33-D-wQ1szT.js} +1 -1
  178. package/dist/ui/assets/{sankeyDiagram-5OEKKPKP-8T3b7meL.js → sankeyDiagram-5OEKKPKP-Bj4kD_AJ.js} +1 -1
  179. package/dist/ui/assets/{sequenceDiagram-3UESZ5HK-Cn8DZiEr.js → sequenceDiagram-3UESZ5HK-M8QVVH74.js} +1 -1
  180. package/dist/ui/assets/{src-BieOuieI.js → src-DvptJAGq.js} +1 -1
  181. package/dist/ui/assets/{stateDiagram-AJRCARHV-nPEVGd3E.js → stateDiagram-AJRCARHV-BiPRs9rN.js} +1 -1
  182. package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-BYjicZlC.js +1 -0
  183. package/dist/ui/assets/{timeline-definition-PNZ67QCA-Dj_qK0VJ.js → timeline-definition-PNZ67QCA-DS0AGRKw.js} +1 -1
  184. package/dist/ui/assets/{treeView-BLDUP644-G5Bsebqu.js → treeView-BLDUP644-DJakvUbF.js} +1 -1
  185. package/dist/ui/assets/{treemap-LRROVOQU-anUEJzTb.js → treemap-LRROVOQU-QXfc2Vwr.js} +1 -1
  186. package/dist/ui/assets/{vennDiagram-CIIHVFJN-D71ne3dS.js → vennDiagram-CIIHVFJN-CBdJA0hv.js} +1 -1
  187. package/dist/ui/assets/{wardley-L42UT6IY-DrJilmE_.js → wardley-L42UT6IY-DI9SdW45.js} +1 -1
  188. package/dist/ui/assets/{wardleyDiagram-YWT4CUSO-B66G4ayp.js → wardleyDiagram-YWT4CUSO-RMmsKLRe.js} +1 -1
  189. package/dist/ui/assets/{xychartDiagram-2RQKCTM6-CReSRxNG.js → xychartDiagram-2RQKCTM6-DFXccP8B.js} +1 -1
  190. package/dist/ui/index.html +2 -2
  191. package/package.json +7 -5
  192. package/dist/ui/assets/architecture-7EHR7CIX-Cw3I1lil.js +0 -1
  193. package/dist/ui/assets/channel-CkOta24Z.js +0 -1
  194. package/dist/ui/assets/chunk-QZHKN3VN-DqRxzBM_.js +0 -1
  195. package/dist/ui/assets/chunk-WU5MYG2G-B1Mk3aBp.js +0 -1
  196. package/dist/ui/assets/classDiagram-4FO5ZUOK-BH-5P4jH.js +0 -1
  197. package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-BH-5P4jH.js +0 -1
  198. package/dist/ui/assets/eventmodeling-FCH6USID-DSDI1f5T.js +0 -1
  199. package/dist/ui/assets/index-BsTJ9Ul_.css +0 -1
  200. package/dist/ui/assets/index-D-TSanrw.js +0 -11
  201. package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-CKrff-KJ.js +0 -1
package/README.md CHANGED
@@ -23,11 +23,14 @@ Otacon replaces your coding agent's native plan mode with a review surface you'l
23
23
 
24
24
  ## Installation
25
25
 
26
+ **Install the CLI.**
27
+
26
28
  ```sh
27
29
  npm install -g otacon
28
30
  ```
29
31
 
30
- ## Get started
32
+ > **Preview builds:** `npm i -g otacon@staging` opts into the staging channel to try the
33
+ > newest pre-release. Regular users stay on `npm install -g otacon`.
31
34
 
32
35
  **Install the skill into your agent.** This drops the Otacon skill into the agent's skill
33
36
  folder so it knows how to run a review:
@@ -35,13 +38,23 @@ folder so it knows how to run a review:
35
38
  ```sh
36
39
  otacon install --all # all three agents
37
40
  otacon install --agent claude # or just one: claude, codex, or opencode
41
+ otacon install --project --all # write into the current repo so you can commit + share it
42
+ ```
43
+
44
+ ## Get started
45
+
46
+ **Plan a feature.** In Claude Code, run `/otacon` with what you want to build:
47
+
48
+ ```
49
+ /otacon add rate limiting to the login endpoint
38
50
  ```
39
51
 
40
- **Plan a feature.** In your agent, run `/otacon` (or just ask it to plan something with
41
- Otacon). It interviews you to lock down intent, drafts the plan, and hands you a local
42
- review URL.
52
+ Your agent replies with a local URL (like `http://127.0.0.1:4747/s/otc_a1b2c3`). Open it:
53
+ that's your plan surface, where Otacon
54
+ interviews you to lock down intent, drafts the plan, and you watch it all unfold. (You can
55
+ also just ask your agent to plan something with Otacon.)
43
56
 
44
- **Review and sign off.** Open the URL: answer the interview, leave inline comments, ask
57
+ **Review and sign off.** On that surface, answer the interview, leave inline comments, ask
45
58
  questions, and diff revisions in the browser, or [from your phone](docs/PHONE-ACCESS.md).
46
59
 
47
60
  When the plan is ready, choose how it ships:
@@ -1,5 +1,5 @@
1
1
  // Launch a URL in the user's default browser for `otacon open` / `otacon config`
2
- // (DESIGN.md §6, DECISIONS.md "open and config launch the browser"). Both run on
2
+ // (review loop and daemon API, DECISIONS.md "open and config launch the browser"). Both run on
3
3
  // the human's machine and the whole point of these two verbs is "show me the
4
4
  // page", so they spawn the browser instead of printing the URL.
5
5
  //
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/cli/browser.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,kFAAkF;AAClF,mDAAmD;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhD,0EAA0E;AAC1E,SAAS,MAAM,CAAC,GAAW;IACzB,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,OAAO;YACV,4EAA4E;YAC5E,2EAA2E;YAC3E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5D;YACE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,uEAAuE;QACvE,6EAA6E;QAC7E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAAgC;IACvE,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACzB,aAAa,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/cli/browser.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+FAA+F;AAC/F,6EAA6E;AAC7E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,kFAAkF;AAClF,mDAAmD;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhD,0EAA0E;AAC1E,SAAS,MAAM,CAAC,GAAW;IACzB,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,OAAO;YACV,4EAA4E;YAC5E,2EAA2E;YAC3E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5D;YACE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,uEAAuE;QACvE,6EAA6E;QAC7E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAAgC;IACvE,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACzB,aAAa,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // HTTP client for otacond, plus ensureDaemon — the auto-spawn and version
2
- // handshake every CLI command runs first (DESIGN.md §16).
2
+ // handshake every CLI command runs first (install/update).
3
3
  //
4
4
  // The daemon is spawned by resolved path — the dist/daemon/main.js sibling of
5
5
  // this very module — never via PATH (DECISIONS.md "Daemon spawned by resolved
@@ -83,6 +83,17 @@ function daemonEntry() {
83
83
  // spawned by resolved file path").
84
84
  return fileURLToPath(new URL("../daemon/main.ts", import.meta.url));
85
85
  }
86
+ /**
87
+ * True when this CLI is running from a source checkout rather than a built
88
+ * `dist/` install — exactly the signal `daemonEntry()` uses (no built
89
+ * `dist/daemon/main.js` sibling means we're a `bun run src/...` dev run). The
90
+ * auto-update gate (update.ts, install/update) reuses this to skip self-update: a
91
+ * global npm package update is meaningless, and would be destructive, from a
92
+ * source tree (D6).
93
+ */
94
+ export function isSourceRun() {
95
+ return !existsSync(fileURLToPath(new URL("../daemon/main.js", import.meta.url)));
96
+ }
86
97
  /** Spawn the daemon detached; returns the child's exit code, undefined while alive. */
87
98
  function spawnDaemon() {
88
99
  mkdirSync(otaconHome(), { recursive: true });
@@ -160,7 +171,7 @@ async function shutdownStaleDaemon() {
160
171
  const RESTART_ATTEMPTS = 3;
161
172
  /**
162
173
  * Health probe → spawn if down → exact-version handshake, restarting a stale
163
- * daemon via POST /api/shutdown (DESIGN.md §16). Refuses a port held by a
174
+ * daemon via POST /api/shutdown (install/update). Refuses a port held by a
164
175
  * non-otacond process. The restart cycle is bounded (peer CLIs of different
165
176
  * versions could otherwise ping-pong restarts forever), and the shutdown
166
177
  * re-checks the daemon's version right before firing, so a peer's completed
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // otacon answer <question-id> (--body "…" | --file f.md) [--session id] — the
2
- // agent's reply to a user question (DESIGN.md §6, §9): the answer lands on the
2
+ // agent's reply to a user question: the answer lands on the
3
3
  // question's thread, the plan and status stay untouched, and the agent goes
4
4
  // back to `otacon wait`.
5
5
  import { readFileSync } from "node:fs";
@@ -1 +1 @@
1
- {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../../src/cli/commands/answer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../../src/cli/commands/answer.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  // otacon ask --question "…" [--options "A|B|C"] [--recommend A] [--multi]
2
- // [--session id] — post a grill question card to the UI (DESIGN.md §6, §8).
2
+ // [--session id] — post a grill question card to the UI.
3
3
  // Prints the question id; the agent then parks in `otacon wait` and the
4
4
  // user's answer arrives as an {"event":"answer"} on stdout there.
5
5
  //
6
6
  // `--batch <file|->` posts several INDEPENDENT questions in one call (a JSON
7
7
  // array of the same specs): the daemon mints them atomically and they render
8
8
  // as ordinary cards, each answered instantly. Dependency-first grilling still
9
- // holds — only independent siblings batch (DESIGN.md §8).
9
+ // holds — only independent siblings batch (interview questions).
10
10
  import { readFileSync } from "node:fs";
11
11
  import { resolve } from "node:path";
12
12
  import { parseArgs } from "node:util";
@@ -15,7 +15,7 @@ import { api, ensureDaemon } from "../client.js";
15
15
  import { fail, printJson, usageError } from "../output.js";
16
16
  import { listSessions, realpathOr, resolveSession } from "../session.js";
17
17
  /**
18
- * Hold one question body to the shared validator (DESIGN.md §6, §8) — the same
18
+ * Hold one question body to the shared validator — the same
19
19
  * rules the daemon re-checks — turning its error string into a usage error
20
20
  * (E_USAGE, exit 2) carrying the caller's context: a `--batch[i] ` index, or
21
21
  * "" for the bare flag form.
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- // otacon clean [--all] archive working state for ended sessions (DESIGN.md
2
- // §6, §12): for every terminal session in this repo (--all: everywhere), it
3
- // calls DELETE /api/sessions/:id; the daemon deregisters the session and
4
- // archives its .otacon/<id>/ dir to .otacon/archive/<id>/, reporting the
5
- // destination as `archivedTo` (the review UI drives the same route terminal
6
- // archives, non-terminal hard-deletes). The home archive (~/.otacon/sessions/)
7
- // and any Save-time project copy are never touched (DECISIONS.md "clean: daemon
8
- // deregisters and archives").
1
+ // otacon clean [--all]: permanently remove ended sessions. For every terminal
2
+ // session in this repo (--all: everywhere), it calls DELETE /api/sessions/:id;
3
+ // the daemon deregisters the session and removes its home folder
4
+ // `~/.otacon/sessions/<id>/` outright (no archive). The review UI drives the
5
+ // same route. The durable copies are never touched: the Save copy under the
6
+ // project's `plans.dir`, and (for Implement plans) the PR (DECISIONS.md "Delete
7
+ // permanently removes the home session folder; no archive").
9
8
  import { parseArgs } from "node:util";
10
9
  import { TERMINAL_STATUSES } from "../../shared/types.js";
11
10
  import { api, ensureDaemon } from "../client.js";
@@ -20,10 +19,9 @@ export async function cleanCommand(argv) {
20
19
  const cwd = realpathOr(process.cwd());
21
20
  const root = findRepoRoot(cwd) ?? cwd;
22
21
  // Only terminal (ended) sessions qualify — approved, plus implemented /
23
- // implement_failed once a build finishes (DESIGN.md §12). A terminal session
24
- // stays terminal, so clean's DELETE always takes the daemon's archive branch,
25
- // never the non-terminal hard-delete one — a racing status change cannot
26
- // sweep a live (including `implementing`) session.
22
+ // implement_failed once a build finishes (approval and archive lifecycle). A terminal session
23
+ // stays terminal, so clean only ever sweeps finished sessions: a racing
24
+ // status change cannot sweep a live (including `implementing`) session.
27
25
  const targets = (await listSessions()).filter((s) => TERMINAL_STATUSES.includes(s.status) && (values.all || realpathOr(s.repo) === root));
28
26
  const cleaned = [];
29
27
  for (const session of targets) {
@@ -34,11 +32,11 @@ export async function cleanCommand(argv) {
34
32
  }
35
33
  const pending = response.body.pendingEvents;
36
34
  if (typeof pending === "number" && pending > 0) {
37
- notice(`${session.id}: ${pending} undelivered event(s) archived with it`);
35
+ notice(`${session.id}: ${pending} undelivered event(s) removed with it`);
38
36
  }
39
- // The daemon archived the dir and tells us where (null only if it was gone).
40
- const archivedTo = response.body.archivedTo ?? null;
41
- cleaned.push({ session: session.id, title: session.title, repo: session.repo, archivedTo });
37
+ // The daemon permanently removed the home folder; nothing to record beyond
38
+ // the session identity.
39
+ cleaned.push({ session: session.id, title: session.title, repo: session.repo });
42
40
  }
43
41
  if (cleaned.length === 0) {
44
42
  notice(values.all ? "no ended sessions to clean" : `no ended sessions for ${root} (try --all)`);
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,8BAA8B;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;KACtD,CAAC,CAAC;IACH,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACtC,wEAAwE;IACxE,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,OAAO,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAC3F,CAAC;IAEF,MAAM,OAAO,GAAkF,EAAE,CAAC;IAClG,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,CAAC,YAAY,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,wCAAwC,CAAC,CAAC;QAC5E,CAAC;QACD,6EAA6E;QAC7E,MAAM,UAAU,GAAI,QAAQ,CAAC,IAAI,CAAC,UAAwC,IAAI,IAAI,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,IAAI,cAAc,CAAC,CAAC;IAClG,CAAC;IACD,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAChF,6DAA6D;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;KACtD,CAAC,CAAC;IACH,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACtC,wEAAwE;IACxE,8FAA8F;IAC9F,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,OAAO,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAC3F,CAAC;IAEF,MAAM,OAAO,GAAuD,EAAE,CAAC;IACvE,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,CAAC,YAAY,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,uCAAuC,CAAC,CAAC;QAC3E,CAAC;QACD,2EAA2E;QAC3E,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,IAAI,cAAc,CAAC,CAAC;IAClG,CAAC;IACD,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,4 +1,4 @@
1
- // otacon config [open] | config get <key> (DESIGN.md §6, §16).
1
+ // otacon config [open] | config get <key> (review loop and daemon API, install/update).
2
2
  //
3
3
  // otacon config open the Settings web UI in the browser. Inside a
4
4
  // git repo the URL carries `?repo=<repo root>` so the screen defaults to
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- // otacon doctor — verify the machine setup (DESIGN.md §16): Node version,
2
- // daemon boots and the port is free-or-ours (ensureDaemon does both), wrapper
3
- // presence per agent, Stop hook registration, Tailscale state. Hard checks
1
+ // otacon doctor — verify the machine setup: Node version, daemon boots and the
2
+ // port is free-or-ours (ensureDaemon does both), wrapper presence per agent,
3
+ // Stop hook registration, Tailscale state. Hard checks
4
4
  // (node, daemon) fail the run with exit 1; everything optional — wrappers for
5
5
  // agents the user may not use, phone access — is a warning, never a failure.
6
6
  import { existsSync, readFileSync } from "node:fs";
@@ -49,7 +49,7 @@ function tailscaleCheck() {
49
49
  return {
50
50
  name,
51
51
  status: "warn",
52
- detail: "tailscale CLI not found — phone access is optional (DESIGN.md §11; otacon expose)",
52
+ detail: "tailscale CLI not found — phone access is optional; run `otacon expose` after installing it",
53
53
  };
54
54
  }
55
55
  const status = tailscaleStatus(bin);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- // otacon expose — configure phone access over Tailscale (DESIGN.md §11, §16):
2
- // verify the tailscale CLI exists and is logged in, make sure the daemon is
3
- // up, run `tailscale serve --bg` against the daemon port, then confirm the
4
- // tailnet URL actually serves before printing it. Deliberately thin: install,
5
- // login (`tailscale up`), and tailnet HTTPS enablement are interactive/
1
+ // otacon expose — configure phone access over Tailscale: verify the tailscale
2
+ // CLI exists and is logged in, make sure the daemon is up, run
3
+ // `tailscale serve --bg` against the daemon port, then confirm the tailnet URL
4
+ // actually serves before printing it. Deliberately thin: install, login
5
+ // (`tailscale up`), and tailnet HTTPS enablement are interactive/
6
6
  // account-level steps this command points at instead of automating (DECISIONS.md
7
7
  // "doctor/expose automation boundary").
8
8
  import { execFileSync } from "node:child_process";
@@ -60,7 +60,7 @@ export async function exposeCommand(argv) {
60
60
  parseArgs({ args: argv, options: {} });
61
61
  const bin = findTailscale();
62
62
  if (bin === undefined) {
63
- fail("E_TAILSCALE_MISSING", "tailscale CLI not found — install Tailscale and log in first (DESIGN.md §11; README \"Phone access\"), or set OTACON_TAILSCALE to the binary");
63
+ fail("E_TAILSCALE_MISSING", 'tailscale CLI not found — install Tailscale and log in first (see README "Phone access"), or set OTACON_TAILSCALE to the binary');
64
64
  }
65
65
  const status = tailscaleStatus(bin);
66
66
  if (status === undefined) {
@@ -81,7 +81,7 @@ export async function exposeCommand(argv) {
81
81
  catch (error) {
82
82
  const stderr = error?.stderr;
83
83
  const detail = typeof stderr === "string" && stderr.trim() !== "" ? stderr.trim() : String(error);
84
- fail("E_TAILSCALE_SERVE", `\`tailscale serve --bg ${target}\` failed: ${detail} (HTTPS certificates may need enabling on the tailnet — DESIGN.md §11)`);
84
+ fail("E_TAILSCALE_SERVE", `\`tailscale serve --bg ${target}\` failed: ${detail} (HTTPS certificates may need enabling on the tailnet)`);
85
85
  }
86
86
  const url = status.dnsName !== undefined ? `https://${status.dnsName}/` : undefined;
87
87
  if (url === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"expose.js","sourceRoot":"","sources":["../../../src/cli/commands/expose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expose.js","sourceRoot":"","sources":["../../../src/cli/commands/expose.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // otacon implement-done [--pr <url>] [--failed] [--session id] — the agent's
2
- // build-outcome report for Approve & Implement (DESIGN.md §6, §12). Once the
2
+ // build-outcome report for Approve & Implement. Once the
3
3
  // approved plan is built, the agent calls this to flip the session out of
4
4
  // `implementing`: `--failed` → `implement_failed`, otherwise `implemented`
5
5
  // (both terminal). `--pr` records the opened PR's URL so the home card can
@@ -1 +1 @@
1
- {"version":3,"file":"implement-done.js","sourceRoot":"","sources":["../../../src/cli/commands/implement-done.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,sEAAsE;AACtE,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,2EAA2E;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAsC;QACjD,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;IAEF,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,YAAY,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,iBAAiB,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAC,KAAuC,EAAE,IAAI,CAAC;IAC1E,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,CAAC,KAA0C,EAAE,OAAO,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,CAAC,IAAI,IAAI,oBAAoB,EAAE,OAAO,IAAI,WAAW,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,kCAAkC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,oCAAoC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"implement-done.js","sourceRoot":"","sources":["../../../src/cli/commands/implement-done.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yDAAyD;AACzD,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,sEAAsE;AACtE,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,2EAA2E;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAsC;QACjD,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;IAEF,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,YAAY,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,iBAAiB,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAC,KAAuC,EAAE,IAAI,CAAC;IAC1E,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,CAAC,KAA0C,EAAE,OAAO,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,CAAC,IAAI,IAAI,oBAAoB,EAAE,OAAO,IAAI,WAAW,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,kCAAkC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,oCAAoC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // otacon install --agent claude|codex|opencode [--agent …] | --all [--hooks] —
2
- // write the protocol wrapper into each agent's skill location (DESIGN.md §16).
2
+ // write the protocol wrapper into each agent's skill location (install/update).
3
3
  // Pure file writes — no daemon needed. Wrappers are managed files: reinstall
4
4
  // overwrites them wholesale. --hooks additionally registers the Claude Code Stop
5
5
  // hook in ~/.claude/settings.json — merged additively and idempotently, with a
@@ -7,8 +7,9 @@
7
7
  import { chmodSync, copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
8
  import { dirname } from "node:path";
9
9
  import { parseArgs } from "node:util";
10
- import { skillMd, STOP_HOOK_SCRIPT } from "../install/assets.js";
10
+ import { STOP_HOOK_SCRIPT } from "../install/assets.js";
11
11
  import { claudeHookScriptPath, claudeSettingsPath, claudeSkillPath, codexSkillPath, mergeStopHook, opencodeSkillPath, settingsRegisterStopHook, } from "../install/locations.js";
12
+ import { ensureWrapper } from "../install/wrapper.js";
12
13
  import { fail, notice, printJson, usageError } from "../output.js";
13
14
  import { findRepoRoot } from "../session.js";
14
15
  const AGENTS = ["claude", "codex", "opencode"];
@@ -20,7 +21,10 @@ function installAgent(agent, scope) {
20
21
  switch (agent) {
21
22
  case "claude": {
22
23
  const skill = claudeSkillPath(scope);
23
- writeManaged(skill, skillMd());
24
+ // The skill wrapper is symlinked at user scope (auto-refreshes on binary
25
+ // upgrade) and copied at project scope (a committed file must be machine
26
+ // independent); ensureWrapper decides and reports which.
27
+ const { mode } = ensureWrapper(skill, scope.kind);
24
28
  // The Stop hook script lives in the user home only — it is never written at
25
29
  // project scope (DECISIONS.md "Stop hook deferred at project scope"), so a
26
30
  // committed `.claude/` ships an inert skill wrapper, never a hook pointing at
@@ -28,17 +32,19 @@ function installAgent(agent, scope) {
28
32
  if (scope.kind === "user") {
29
33
  writeManaged(claudeHookScriptPath(), STOP_HOOK_SCRIPT);
30
34
  chmodSync(claudeHookScriptPath(), 0o755);
31
- return { agent, files: [skill, claudeHookScriptPath()] };
35
+ return { agent, files: [skill, claudeHookScriptPath()], mode };
32
36
  }
33
- return { agent, files: [skill] };
37
+ return { agent, files: [skill], mode };
34
38
  }
35
39
  case "codex": {
36
- writeManaged(codexSkillPath(scope), skillMd());
37
- return { agent, files: [codexSkillPath(scope)] };
40
+ const skill = codexSkillPath(scope);
41
+ const { mode } = ensureWrapper(skill, scope.kind);
42
+ return { agent, files: [skill], mode };
38
43
  }
39
44
  case "opencode": {
40
- writeManaged(opencodeSkillPath(scope), skillMd());
41
- return { agent, files: [opencodeSkillPath(scope)] };
45
+ const skill = opencodeSkillPath(scope);
46
+ const { mode } = ensureWrapper(skill, scope.kind);
47
+ return { agent, files: [skill], mode };
42
48
  }
43
49
  }
44
50
  }
@@ -71,7 +77,7 @@ function applyStopHook() {
71
77
  notice(`registered the otacon Stop hook in ${path}`);
72
78
  return { registered: true, command, settings: path, ...(backup ? { backup } : {}) };
73
79
  }
74
- // Without --hooks: report registration state without nagging (DESIGN.md §16). The
80
+ // Without --hooks: report registration state without nagging (install/update). The
75
81
  // Stop hook is optional, so its absence is neither warned about nor "offered" — the
76
82
  // JSON still factually carries `registered` for anyone who wants to wire it up.
77
83
  function offerStopHook() {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,50 @@
1
- // otacon open [--session id]: launch the review URL in the browser (DESIGN.md
2
- // §6, human convenience). It runs on the human's machine and the verb means "show
3
- // me the page", so it spawns the browser; OTACON_NO_BROWSER prints the URL as JSON
1
+ // otacon open [--session id]: launch the review URL in the browser. It runs on
2
+ // the human's machine and the verb means "show me the page", so it spawns the
3
+ // browser; OTACON_NO_BROWSER prints the URL as JSON
4
4
  // instead, for headless hosts and URL-parsing agents (DECISIONS.md "open and
5
5
  // config launch the browser"). With no resolvable session the index URL is the
6
6
  // answer, not an error; reading is never the wrong screen, and the never-guess
7
7
  // rule guards writes, not looks.
8
+ //
9
+ // Open-tab reuse (DECISIONS.md "reuse an existing open tab"): if any otacon tab
10
+ // from this daemon is already connected (health's daemon-wide `viewers >= 1`),
11
+ // skip the launch rather than pile up a duplicate tab. Dedup only, no focus, and
12
+ // it applies to whichever url we would have opened: a single open tab, via its
13
+ // session sidebar, already reaches every session.
8
14
  import { parseArgs } from "node:util";
9
15
  import { openOrPrint } from "../browser.js";
10
16
  import { baseUrl, ensureDaemon } from "../client.js";
11
- import { CliError, notice } from "../output.js";
17
+ import { CliError, notice, printJson } from "../output.js";
12
18
  import { listSessions, realpathOr, resolveSession } from "../session.js";
13
19
  export async function openCommand(argv) {
14
20
  const { values } = parseArgs({
15
21
  args: argv,
16
22
  options: { session: { type: "string" } },
17
23
  });
18
- await ensureDaemon();
24
+ const { viewers } = await ensureDaemon();
25
+ // Deliver a url the way `open` does, but suppress the launch when a tab from
26
+ // this daemon is already open. `viewers ?? 0` keeps an absent field behaving
27
+ // like today (open as usual), so an older daemon degrades gracefully.
28
+ const deliver = (url, payload) => {
29
+ if ((viewers ?? 0) >= 1) {
30
+ // A tab from this daemon is already connected; don't spawn a duplicate.
31
+ // Under OTACON_NO_BROWSER the result is machine-read, so flag the reuse on
32
+ // stdout; interactively, mirror the spawn path and notice only on stderr.
33
+ if (process.env.OTACON_NO_BROWSER) {
34
+ printJson({ ...payload, reused: true });
35
+ }
36
+ else {
37
+ notice("otacon is already open in this browser; not opening another tab");
38
+ }
39
+ return;
40
+ }
41
+ openOrPrint(url, { ...payload, reused: false });
42
+ };
19
43
  const sessions = await listSessions();
20
44
  try {
21
45
  const session = resolveSession(sessions, values.session, realpathOr(process.cwd()));
22
46
  const url = `${baseUrl()}/s/${session.id}`;
23
- openOrPrint(url, { ok: true, session: session.id, title: session.title, url });
47
+ deliver(url, { ok: true, session: session.id, title: session.title, url });
24
48
  }
25
49
  catch (error) {
26
50
  // An explicit --session that fails to resolve is a real refusal; implicit
@@ -30,7 +54,7 @@ export async function openCommand(argv) {
30
54
  throw error;
31
55
  notice(`${error.message}; using the index`);
32
56
  const url = `${baseUrl()}/`;
33
- openOrPrint(url, { ok: true, url });
57
+ deliver(url, { ok: true, url });
34
58
  }
35
59
  return 0;
36
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kFAAkF;AAClF,mFAAmF;AACnF,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,iCAAiC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACzC,CAAC,CAAC;IACH,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC;QAC3C,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0EAA0E;QAC1E,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC;QAC9E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;QAC5B,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,oDAAoD;AACpD,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,iCAAiC;AACjC,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,kDAAkD;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACzC,CAAC,CAAC;IACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;IAEzC,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAgC,EAAQ,EAAE;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBAClC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,iEAAiE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO;QACT,CAAC;QACD,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0EAA0E;QAC1E,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC;QAC9E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // otacon progress "<note>" [--session id] — narrate what you are doing
2
- // (DESIGN.md §6, §8). Appends a timestamped note to the session's live activity
2
+ // Appends a timestamped note to the session's live activity
3
3
  // feed so the review UI shows the agent at work during research and drafting,
4
4
  // when no other command is firing. Non-blocking — it never parks; the agent
5
5
  // calls it at checkpoints and keeps working. Prints {ok, session, note}.
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/cli/commands/progress.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAClE,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,2EAA2E;IAC3E,sDAAsD;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,UAAU,CAAC,yEAAyE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,YAAY,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,iBAAiB,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAC,KAAuC,EAAE,IAAI,CAAC;IAC1E,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,CAAC,KAA0C,EAAE,OAAO,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,gBAAgB,EAAE,OAAO,IAAI,WAAW,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,kCAAkC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/cli/commands/progress.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4DAA4D;AAC5D,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAClE,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,2EAA2E;IAC3E,sDAAsD;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,UAAU,CAAC,yEAAyE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,YAAY,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,iBAAiB,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAC,KAAuC,EAAE,IAAI,CAAC;IAC1E,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,CAAC,KAA0C,EAAE,OAAO,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,gBAAgB,EAAE,OAAO,IAAI,WAAW,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,kCAAkC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC"}