@testmuai/kane-cli 0.6.9 → 0.6.10

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 (170) hide show
  1. package/dist/ChatSurface-PLXUGRBV.js +8 -0
  2. package/dist/{ChromeProfilePicker-FSZB4SZR.js → ChromeProfilePicker-IDKFTIHW.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-WNMDCIHZ.js → CliFeedbackPrompt-SZOU5FGZ.js} +1 -1
  4. package/dist/{CliUploadProgress-H4265KXU.js → CliUploadProgress-W2FC33Q4.js} +1 -1
  5. package/dist/{ConfigView-XCUZ44SP.js → ConfigView-JB2NSZ2N.js} +1 -1
  6. package/dist/EvidenceViewOffer-5YST67KY.js +2 -0
  7. package/dist/{FolderPicker-S2XVCPYN.js → FolderPicker-SPNZESAR.js} +1 -1
  8. package/dist/{HelpView-OPKRGNNM.js → HelpView-XBDXXHFB.js} +1 -1
  9. package/dist/{InfoBox-TW2PGJK5.js → InfoBox-2T7GYSFT.js} +1 -1
  10. package/dist/{LinksBox-66M7XP5Y.js → LinksBox-2NNZZDQT.js} +1 -1
  11. package/dist/{ProfilesView-T2CFQPR5.js → ProfilesView-KJZVGU5B.js} +1 -1
  12. package/dist/{ProjectPicker-7ALN52CY.js → ProjectPicker-AUTZNEPE.js} +1 -1
  13. package/dist/{SaveSessionPrompt-HM3F6QML.js → SaveSessionPrompt-LHLSJQSQ.js} +1 -1
  14. package/dist/SingleShotApp-Z2HGSZXG.js +2 -0
  15. package/dist/{SummaryBox-BQZEGOIV.js → SummaryBox-5G7WULUN.js} +1 -1
  16. package/dist/TestMdRunView-B4IZHRDT.js +2 -0
  17. package/dist/{WhoamiView-722MBPSG.js → WhoamiView-XNWBDMQR.js} +1 -1
  18. package/dist/bind-FEOGBJ2O.js +6 -0
  19. package/dist/bootstrap-T6DSUI34.js +2 -0
  20. package/dist/{bridge-V4FF5QPK.js → bridge-WMGH3O3B.js} +1 -1
  21. package/dist/{changelog-KMYZW5MI.js → changelog-AGFDNTTW.js} +1 -1
  22. package/dist/{chat-committer-MWZ4JQMM.js → chat-committer-4ENYH3RC.js} +1 -1
  23. package/dist/{chat-controller-YX5A7R52.js → chat-controller-M4QYRH7Y.js} +1 -1
  24. package/dist/chunk-26H3PDVN.js +4 -0
  25. package/dist/{chunk-MXLXKHW4.js → chunk-2H3XNXL3.js} +1 -1
  26. package/dist/chunk-2KS2YRIS.js +2 -0
  27. package/dist/{chunk-4BAL4OGF.js → chunk-2OQLMW3F.js} +1 -1
  28. package/dist/chunk-2XMJ6YAE.js +2 -0
  29. package/dist/{chunk-NIKA2V6B.js → chunk-3KN2UW37.js} +1 -1
  30. package/dist/{chunk-CLYG26XV.js → chunk-4OSW2WEN.js} +35 -35
  31. package/dist/chunk-5EOX4MEY.js +2 -0
  32. package/dist/{chunk-U5QTE3WX.js → chunk-5F7PU5AJ.js} +1 -1
  33. package/dist/{chunk-T2ULEJK7.js → chunk-5LTUYXMP.js} +2 -2
  34. package/dist/{chunk-T4WZWKIU.js → chunk-5Z7GAIPP.js} +2 -2
  35. package/dist/{chunk-ZA4GR5R7.js → chunk-6CGNLFSN.js} +1 -1
  36. package/dist/{chunk-FVM7TWKT.js → chunk-6JTEWZ75.js} +1 -1
  37. package/dist/{chunk-QZNUTCSD.js → chunk-6MTVGARW.js} +1 -1
  38. package/dist/{chunk-3YI4QRXF.js → chunk-6NWPK2MS.js} +1 -1
  39. package/dist/{chunk-4FH2KFRT.js → chunk-6ZJ7ZFEX.js} +1 -1
  40. package/dist/{chunk-345PY4SZ.js → chunk-76I6NJBX.js} +1 -1
  41. package/dist/{chunk-R65HNFRB.js → chunk-7APDXIKI.js} +1 -1
  42. package/dist/{chunk-TFVMSEIA.js → chunk-7C6G4V43.js} +1 -1
  43. package/dist/{chunk-QB4IOM3X.js → chunk-7LWXIRI3.js} +1 -1
  44. package/dist/{chunk-L3HG5ONB.js → chunk-A46NBRAP.js} +1 -1
  45. package/dist/{chunk-JHAGEBKE.js → chunk-AYDUHTPA.js} +1 -1
  46. package/dist/chunk-BKM2LWU2.js +3 -0
  47. package/dist/{chunk-OAEZKYYQ.js → chunk-C3OGWCII.js} +2 -2
  48. package/dist/{chunk-LMMOR7CR.js → chunk-DHF3VO2R.js} +1 -1
  49. package/dist/{chunk-IWBPV3VS.js → chunk-ECFOND7B.js} +1 -1
  50. package/dist/chunk-EV3EHXEI.js +4 -0
  51. package/dist/{chunk-OV2W7KBC.js → chunk-FEF75YKV.js} +1 -1
  52. package/dist/chunk-FHKDTM5L.js +6 -0
  53. package/dist/{chunk-LRA3V5GY.js → chunk-FYDBD7Q4.js} +1 -1
  54. package/dist/{chunk-TACPTX64.js → chunk-GWJ76BLF.js} +2 -2
  55. package/dist/chunk-J44RN3FB.js +2 -0
  56. package/dist/{chunk-GNNMHYWE.js → chunk-J4WS2SXT.js} +1 -1
  57. package/dist/chunk-JHHMXU76.js +2 -0
  58. package/dist/chunk-JHPZXF77.js +14 -0
  59. package/dist/chunk-JTCW76YG.js +12 -0
  60. package/dist/{chunk-K5JGCJ2K.js → chunk-K7USHLVZ.js} +4 -4
  61. package/dist/{chunk-EASTDHNW.js → chunk-KA7Q5IIC.js} +1 -1
  62. package/dist/chunk-KFUZYEHX.js +2 -0
  63. package/dist/chunk-KK7DYHK6.js +347 -0
  64. package/dist/{chunk-GBYH35H5.js → chunk-LPBAQQ7E.js} +1 -1
  65. package/dist/{chunk-AU7WQ2O5.js → chunk-MJF3USZF.js} +1 -1
  66. package/dist/{chunk-FFHBQK5N.js → chunk-MSK7AC4E.js} +2 -2
  67. package/dist/{chunk-O4HWPV67.js → chunk-OESHJ4J2.js} +2 -2
  68. package/dist/chunk-OIYGGEUL.js +6 -0
  69. package/dist/chunk-Q2F5QB2W.js +2 -0
  70. package/dist/{chunk-EWLLPUP4.js → chunk-QGBLC4ZJ.js} +1 -1
  71. package/dist/chunk-QPT4ERGK.js +47 -0
  72. package/dist/{chunk-QZJID3OZ.js → chunk-RH4GCEFX.js} +1 -1
  73. package/dist/{chunk-U6TLLYRG.js → chunk-RLZA4VJT.js} +1 -1
  74. package/dist/{chunk-FT4G3QGO.js → chunk-SACSQY3Q.js} +1 -1
  75. package/dist/{chunk-LEA6IHXC.js → chunk-SDRFTIRU.js} +1 -1
  76. package/dist/{chunk-SHAA6FOD.js → chunk-SKRZN25J.js} +1 -1
  77. package/dist/chunk-TLL7KFLY.js +6 -0
  78. package/dist/{chunk-QTHITA73.js → chunk-TW3K2DKB.js} +1 -1
  79. package/dist/chunk-VOHQA2SP.js +2 -0
  80. package/dist/{chunk-QM3XF5TW.js → chunk-VYQMCLKG.js} +1 -1
  81. package/dist/{chunk-DKERZJYF.js → chunk-W54W762O.js} +1 -1
  82. package/dist/{chunk-YY6WPFMT.js → chunk-WSZ7IENQ.js} +3 -3
  83. package/dist/{chunk-7BCZLDNX.js → chunk-WV42KKEU.js} +1 -1
  84. package/dist/chunk-XY5KWIRF.js +3 -0
  85. package/dist/{chunk-RLICAFFQ.js → chunk-XZW3TBOV.js} +1 -1
  86. package/dist/chunk-Y5RNCJAN.js +19 -0
  87. package/dist/{chunk-DPOES6G3.js → chunk-YJIESLN6.js} +1 -1
  88. package/dist/{chunk-G6F2BOFT.js → chunk-YOFKDRY4.js} +1 -1
  89. package/dist/{chunk-F42YVALT.js → chunk-YVXC46DY.js} +1 -1
  90. package/dist/{chunk-P4SE6YON.js → chunk-Z25FKS3Y.js} +1 -1
  91. package/dist/{chunk-RQM3DUSB.js → chunk-ZFFRHV5U.js} +1 -1
  92. package/dist/chunk-ZPENY2Q3.js +4 -0
  93. package/dist/{config-Z4OS3HEE.js → config-7WI6TBDV.js} +1 -1
  94. package/dist/{cover-cmd-L2HSVDLH.js → cover-cmd-J2ZJUL6P.js} +1 -1
  95. package/dist/{credentials-TNEVAUHI.js → credentials-MX5ABDPF.js} +1 -1
  96. package/dist/docx-convert-IAX54REO.js +2 -0
  97. package/dist/{dossier-ZHSHATVU.js → dossier-UVTGCL7T.js} +1 -1
  98. package/dist/{evidence-MA3LDBWG.js → evidence-TZYIOSPG.js} +1 -1
  99. package/dist/{evolve-cmd-DTW4EOXM.js → evolve-cmd-IDS5ZIUY.js} +1 -1
  100. package/dist/exit-manager-MXUD7GQ7.js +2 -0
  101. package/dist/{explain-cmd-E366QTAD.js → explain-cmd-NPKN63XL.js} +1 -1
  102. package/dist/{explain-cmd-327F6ESA.js → explain-cmd-R3WCNR2A.js} +1 -1
  103. package/dist/extract-bind-CISTQFI3.js +8 -0
  104. package/dist/{extract-cmd-LFVMG6UE.js → extract-cmd-HG3DHHSL.js} +1 -1
  105. package/dist/{gaps-cmd-IAEXXESW.js → gaps-cmd-XLVUFSTY.js} +1 -1
  106. package/dist/{generate-headless-TYQRYQKJ.js → generate-headless-4VJMAHCU.js} +2 -2
  107. package/dist/index.js +67 -65
  108. package/dist/ingest-UAIKHOB4.js +2 -0
  109. package/dist/ingest-cmd-7HJLRLMG.js +4 -0
  110. package/dist/interactive-bind-IXFRXBBL.js +10 -0
  111. package/dist/{lifecycle-cmd-KZOC4WDW.js → lifecycle-cmd-VTFZ3TF2.js} +1 -1
  112. package/dist/{list-cmd-6X5U46RD.js → list-cmd-KXL4WQII.js} +1 -1
  113. package/dist/list-commands-BJYJ34HT.js +2 -0
  114. package/dist/{logical-ids-RFGWBVML.js → logical-ids-LMBNMENR.js} +1 -1
  115. package/dist/login-flow-KW5T7WRJ.js +2 -0
  116. package/dist/pdf-convert-S7VYE6AV.js +2 -0
  117. package/dist/{persist-recorded-session-RAL7UCQT.js → persist-recorded-session-QR7RVAXR.js} +1 -1
  118. package/dist/{pipeline-PLI5WQKX.js → pipeline-L6V24KGN.js} +1 -1
  119. package/dist/{readmodel-V3DVL6NP.js → readmodel-AGAPK2AI.js} +1 -1
  120. package/dist/reconcile-cmd-E2MMQM7Z.js +2 -0
  121. package/dist/{recording-banner-MBR3Q7VD.js → recording-banner-QAIKLV6E.js} +1 -1
  122. package/dist/{require-project-folder-KE7XOOFN.js → require-project-folder-OANMHOVE.js} +1 -1
  123. package/dist/{review-cmd-XVWPSWU2.js → review-cmd-2FCGP55U.js} +1 -1
  124. package/dist/run-FYJZCWYS.js +2 -0
  125. package/dist/run-IOBBB7GN.js +2 -0
  126. package/dist/{run-test-md-ZCAWNP35.js → run-test-md-5E53A5DT.js} +2 -2
  127. package/dist/{sessions-cmd-STHKGDX4.js → sessions-cmd-DTQYDZNT.js} +1 -1
  128. package/dist/{skill-installer-H5DPJJFW.js → skill-installer-LGEIIQ4Q.js} +1 -1
  129. package/dist/{spawner-C6B5J73J.js → spawner-6FHAXNOA.js} +1 -1
  130. package/dist/store-id-EOSGEKVK.js +2 -0
  131. package/dist/tcg-generate-CEDA6DZJ.js +2 -0
  132. package/dist/testmd-actions-2OFH5GRJ.js +2 -0
  133. package/dist/token-refresh-R75DGT4X.js +2 -0
  134. package/dist/{validate-basic-VBPGGHES.js → validate-basic-Z46MAH2G.js} +1 -1
  135. package/dist/{version-check-YPRCQJ7E.js → version-check-64M5JQQ7.js} +1 -1
  136. package/dist/{view-cmd-G4PGJRQH.js → view-cmd-PG66UQK7.js} +1 -1
  137. package/dist/walk-session-7PM2RXEF.js +2 -0
  138. package/package.json +10 -6
  139. package/dist/ChatSurface-B2QJYKV4.js +0 -8
  140. package/dist/EvidenceViewOffer-5TJCRM2T.js +0 -2
  141. package/dist/SingleShotApp-YQYS6HTB.js +0 -2
  142. package/dist/TestMdRunView-7CL3PM3J.js +0 -2
  143. package/dist/bind-HNI5LCNK.js +0 -6
  144. package/dist/chunk-2Z5MSC23.js +0 -12
  145. package/dist/chunk-4CKZAGBD.js +0 -2
  146. package/dist/chunk-4GXOBABK.js +0 -4
  147. package/dist/chunk-E4EHWO3J.js +0 -4
  148. package/dist/chunk-FXPPQL4D.js +0 -6
  149. package/dist/chunk-M5JQXOCE.js +0 -12
  150. package/dist/chunk-RHNKYNNZ.js +0 -6
  151. package/dist/chunk-SORKKW7B.js +0 -6
  152. package/dist/chunk-VCYVSKPM.js +0 -2
  153. package/dist/chunk-VXLOEM2U.js +0 -347
  154. package/dist/chunk-XTO236AL.js +0 -14
  155. package/dist/chunk-XWIN3S7O.js +0 -4
  156. package/dist/exit-manager-VCSIUYBR.js +0 -2
  157. package/dist/extract-bind-DZLG4GUE.js +0 -5
  158. package/dist/ingest-CBQAXVH6.js +0 -2
  159. package/dist/ingest-cmd-JN6PLDE3.js +0 -3
  160. package/dist/interactive-bind-QEBWUJCN.js +0 -7
  161. package/dist/list-commands-BU2MSYRH.js +0 -2
  162. package/dist/login-flow-4L62GWLT.js +0 -2
  163. package/dist/pdf-convert-KYXI4FU4.js +0 -2
  164. package/dist/reconcile-cmd-UXY36ROJ.js +0 -2
  165. package/dist/run-5DQSL5KH.js +0 -2
  166. package/dist/run-B7BRNC3X.js +0 -2
  167. package/dist/tcg-generate-DIMZXAV3.js +0 -2
  168. package/dist/testmd-actions-X6XCV53D.js +0 -2
  169. package/dist/token-refresh-7PAPCMQK.js +0 -2
  170. package/dist/walk-session-GWOP27TX.js +0 -2
@@ -1,8 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as mt,b as de,c as ft,d as Ae}from"./chunk-4CKZAGBD.js";import{a as be}from"./chunk-XWIN3S7O.js";import{a as gt}from"./chunk-TFVMSEIA.js";import{b as ut,c as dt}from"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{a as ct,b as at}from"./chunk-SORKKW7B.js";import{a as ot}from"./chunk-5Y2G4NC7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as lt}from"./chunk-YCCUBQY4.js";import{a as st}from"./chunk-3YI4QRXF.js";import{b as it}from"./chunk-DFS4RMVP.js";import{y as o}from"./chunk-VCYVSKPM.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as T,b as n,k as ke}from"./chunk-C44QQJR4.js";import{a as sn}from"./chunk-6YGTRKDT.js";import{e as q}from"./chunk-UR6MHSHU.js";var S=q(sn(),1);var u=q(F(),1),pt=3,ln=60;function Le(e,r){let s=e.options.length,l=s,d=e.multi_select?l++:null,f=e.allow_free_text?l++:null,i=r?l++:null;return{optionCount:s,doneIdx:d,freeIdx:f,batchIdx:i,maxSel:l-1}}var cn="\xA0",an={high:{text:`\u203C${cn}high`,color:o.red},med:{text:"med",color:"yellow"},low:{text:"low",color:o.dim}};function un({batch:e,i:r}){let s=e.resolution[r],l=s.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${s.form}: ${s.choice}${s.form==="assumed"?" (flagged)":" (you)"}`;return(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:l})})}function dn({batch:e,i:r,sel:s,focused:l,freeText:d,multiSel:f,layout:i,contentW:m}){let g=e.questions[r],b=e.cursor===r,p=e.resolution[r],x=b?"\u203A":" ",C=an[g.risk],B=h=>b&&l&&s===h?(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"}):" ";return(0,u.jsxs)(T,{flexDirection:"column",children:[(0,u.jsxs)(T,{children:[(0,u.jsx)(T,{width:5,flexShrink:0,children:(0,u.jsx)(n,{bold:b,children:` ${r+1} ${x}`})}),(0,u.jsx)(T,{width:m,children:(0,u.jsxs)(n,{bold:b,children:[g.text,C?(0,u.jsx)(n,{color:C.color,bold:!1,children:` ${C.text}`}):null]})})]}),(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:g.rationale})}),p&&!b?(0,u.jsx)(un,{batch:e,i:r}):(0,u.jsxs)(T,{flexDirection:"column",children:[g.options.map((h,y)=>{let E=b&&l&&s===y;return(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[B(y),g.multi_select?(0,u.jsx)(n,{color:f.includes(y)?o.green:o.dim,children:f.includes(y)?" [x]":" [ ]"}):null,(0,u.jsx)(n,{color:E?o.generateAccent:void 0,children:` ${y+1} ${h.label}`}),y===g.recommended_index?(0,u.jsx)(n,{color:o.dim,children:" (recommended)"}):null,p?.selected_index===y?(0,u.jsx)(n,{color:o.dim,children:" (current)"}):null]})},`o-${y}`)}),g.multi_select&&b&&i.doneIdx!=null?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[B(i.doneIdx)," ",(0,u.jsx)(n,{color:o.green,children:"\u2714"}),(0,u.jsx)(n,{color:l&&s===i.doneIdx?o.generateAccent:void 0,children:" done \u2014 confirm selection"})]})}):null,g.allow_free_text&&b?d?(0,u.jsxs)(T,{paddingLeft:5,children:[(0,u.jsxs)(n,{children:[(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"})," ",(0,u.jsx)(n,{color:o.dim,children:"\u270E "})]}),(0,u.jsx)(lt,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"Tell me what to do"})]}):(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[i.freeIdx!=null?B(i.freeIdx):" "," ",(0,u.jsx)(n,{color:l&&i.freeIdx!=null&&s===i.freeIdx?o.generateAccent:o.dim,children:"\u270E Tell me what to do"})]})}):null]})]})}var mn=[];function ht({batch:e,sel:r=0,focused:s=!1,freeText:l=null,multiSelFor:d}){let{stdout:f}=ke(),i=f?.columns??80,m=i<ln,g=Math.max(20,(m?i:i-4)-5),b=e.resolution.filter(k=>!k).length,p=be(e),x=e.cursor>=0?e.questions[e.cursor]:void 0,C=x?Le(x,p!==""):{optionCount:0,doneIdx:null,freeIdx:null,batchIdx:null,maxSel:0},B=s&&C.batchIdx!=null&&r===C.batchIdx?(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"}):" ",h=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-pt)),y=e.questions.slice(h,h+pt),E=h,v=e.questions.length-h-y.length,L=(0,u.jsxs)(T,{flexDirection:"column",children:[(0,u.jsx)(n,{bold:!0,color:o.generateAccent,children:`? the agent needs ${b===1?"one answer":`${b} answers`} before it can continue`}),E>0?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:`\u22EE ${E} above`})}):null,y.map((k,P)=>(0,u.jsx)(dn,{batch:e,i:h+P,sel:r,focused:s,freeText:l,multiSel:d?d(h+P):mn,layout:C,contentW:g},k.id)),v>0?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:`\u22EE ${v} more`})}):null,p!==""?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(n,{children:" "}),(0,u.jsx)(T,{paddingLeft:1,children:(0,u.jsxs)(n,{children:[B," ",(0,u.jsx)(n,{color:o.generateAccent,children:"\xBB"}),(0,u.jsx)(n,{bold:!0,color:s&&C.batchIdx!=null&&r===C.batchIdx?o.generateAccent:void 0,children:" Go with recommendations"}),(0,u.jsx)(n,{color:o.dim,children:" (tab)"})]})})]}):null,(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.muted,children:"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = your words \xB7 esc previous answer"})})]});return m?L:(0,u.jsx)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.generateAccent,paddingX:1,children:L})}var A=q(F(),1),xt={high:0,med:1,low:2},gn={high:o.red,med:"yellow",low:o.dim};function fn(e){return e.map((r,s)=>({r,i:s})).sort((r,s)=>(xt[r.r.risk??"zz"]??3)-(xt[s.r.risk??"zz"]??3)||r.i-s.i).map(({r})=>r)}var V=(e,r)=>e.length<=r?e:r<=1?"\u2026":`${e.slice(0,r-1)}\u2026`,ye=(e,r)=>e+" ".repeat(Math.max(0,r-e.length));function kt({rows:e,width:r=120,badgeHeader:s="risk"}){if(e.length===0)return null;let l=fn(e),d=v=>v.staged||!v.id?"(staged)":gt(v.id),f=Math.max(2,...l.map(v=>d(v).length)),i=Math.max(s.length,...l.map(v=>(v.badge??"").length)),m=r>=96&&l.some(v=>v.summary),b=r-(m?13:10)-f-i,p=Math.max(...l.map(v=>Math.max(v.title.length,(v.marker??"").length)),5),x=Math.max(5,m?Math.min(p,Math.max(16,Math.floor(b*.5))):Math.min(p,b)),C=m?Math.max(7,b-x):0,B=(v,L,k,P)=>v+P.map(_=>`\u2500${"\u2500".repeat(_.length)}\u2500`).join(L)+k,h=(v,L,k,P)=>[ye(V(v,f),f),ye(V(L,x),x),ye(V(k,i),i),...m?[ye(V(P,C),C)]:[]],y=h("id","title",s,"summary"),E=[];E.push((0,A.jsx)(n,{color:o.dim,children:B("\u250C","\u252C","\u2510",y)},"t")),E.push((0,A.jsx)(n,{color:o.dim,children:`\u2502 ${y.join(" \u2502 ")} \u2502`},"h")),E.push((0,A.jsx)(n,{color:o.dim,children:B("\u251C","\u253C","\u2524",y)},"m"));for(let[v,L]of l.entries()){let k=h(d(L),V(L.title,x),V(L.badge??"",i),V(L.summary??"",C)),P=L.badgeColor??gn[L.badge??""]??o.dim;if(E.push((0,A.jsxs)(n,{children:[(0,A.jsx)(n,{color:o.dim,children:"\u2502 "}),(0,A.jsx)(n,{color:o.generateAccent,children:k[0]}),(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),k[1],(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),(0,A.jsx)(n,{color:P,children:k[2]}),m?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),(0,A.jsx)(n,{color:o.dim,children:k[3]})]}):null,(0,A.jsx)(n,{color:o.dim,children:" \u2502"})]},`r-${v}`)),L.marker){let _=h("",V(L.marker,x),"","");E.push((0,A.jsx)(n,{color:o.dim,children:`\u2502 ${_.join(" \u2502 ")} \u2502`},`mk-${v}`))}}return E.push((0,A.jsx)(n,{color:o.dim,children:B("\u2514","\u2534","\u2518",y)},"b")),(0,A.jsx)(A.Fragment,{children:E})}var pn={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},Q=e=>pn[e]??`${e}s`,bt=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,Me=e=>e.kind??"use-case",yt=e=>`${Me(e)}:${e.temp_ref}`;function Tt(e){let r=e,s=r.badge??e.risk??null,l=r.why??e.summary??e.description??null;return JSON.stringify([e.title,s,l,r.extra??null,e.depends_on_hint??null])}function wt(e){return e.filter(r=>r.role==="agent"&&typeof r.turnIndex=="number"&&Array.isArray(r.items)&&r.items.length>0)}function G(e){let r=new Map,s=1;for(let f of wt(e)){let i=new Set;for(let m of f.items){let g=yt(m);if(i.has(g))continue;i.add(g);let b=r.get(g);r.set(g,{num:b?.num??s++,ref:m.temp_ref,kind:Me(m),item:m,turnIndex:f.turnIndex,fingerprint:Tt(m)})}}let l=[...r.values()].sort((f,i)=>f.num-i.num),d=[];for(let f of l){let i=d.find(m=>m.kind===f.kind);i?i.count++:d.push({kind:f.kind,label:Q(f.kind),count:1})}return{entries:l,byRef:r,counts:d}}function $t(e,r){let l=wt(e).find(h=>h.turnIndex===r);if(!l)return null;let d=e.filter(h=>h.role!=="agent"||typeof h.turnIndex!="number"||h.turnIndex<=r),f=G(d),i=G(e.filter(h=>h.role!=="agent"||typeof h.turnIndex!="number"||h.turnIndex<r)),m=[],g=new Map,b=new Map,p=new Map,x=new Set;for(let h of l.items){let y=yt(h);if(x.has(y))continue;x.add(y);let E=i.byRef.get(y),v=h.changed===!0,L=f.byRef.get(y).num,k=Me(h);if(E&&!v&&E.fingerprint===Tt(h)){g.set(k,(g.get(k)??0)+1);continue}let P=!!E||v,_=P?p:b;_.set(k,(_.get(k)??0)+1),m.push({item:h,num:L,updated:P})}let C=[...g.entries()].map(([h,y])=>({label:Q(h),count:y})),B=[...[...b.entries()].map(([h,y])=>`${y} new ${y===1?bt(h):Q(h)}`),...[...p.entries()].map(([h,y])=>`${y} updated ${y===1?bt(h):Q(h)}`)].join(" \xB7 ");return{fresh:m,unchanged:C,headerStats:B}}function _e(e,r){let s=e.entries.filter(f=>f.turnIndex===r);if(s.length===0)return e;let l=new Map(s.map(f=>[f.ref,f])),d=[];for(let f of s){let i=d.find(m=>m.kind===f.kind);i?i.count+=1:d.push({kind:f.kind,label:Q(f.kind),count:1})}return{entries:s,byRef:l,counts:d}}var w=q(F(),1);function hn(e){let r=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",s=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${s}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${r}${s}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${r}${s}`}var xn=Math.min(process.stdout?.columns??100,120)-2;function St({block:e,annotations:r}){switch(e.kind){case"banner":return(0,w.jsx)(n,{color:o.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,w.jsxs)(T,{children:[(0,w.jsx)(n,{color:o.orange,children:"\u276F "}),(0,w.jsx)(n,{children:e.text})]});case"note":return(0,w.jsx)(n,{color:o.dim,children:` ${e.text}`});case"agent":return(0,w.jsx)(ct,{text:e.text});case"thinking":return(0,w.jsx)(n,{color:o.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,w.jsx)(n,{color:o.dim,children:` ${ut({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,w.jsx)(n,{color:o.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let s=r??null,l=s?s.fresh:e.items.map((p,x)=>({item:p,num:x+1,updated:!1})),d={usecase:"risk","use-case":"risk",ac:"check",scenario:"kind",test:"check",gap:"severity",stylenote:"kind"},f=p=>p.kind??"use-case",i=new Map;for(let p of l){let x=p.item,C=f(p.item),B=x.risk==="high"||x.risk==="med"||x.risk==="low"?x.risk:void 0,h={id:x.logical_id??"",staged:!x.logical_id,title:x.title,badge:x.badge??x.risk??"",summary:x.why??x.summary??x.description??"",...B?{risk:B}:{},...p.updated?{marker:"\u21B3 changed"}:{}},y=i.get(C)??[];y.push(h),i.set(C,y)}let m=l.some(p=>!!p.item.kind),g=(s?.unchanged??[]).reduce((p,x)=>p+x.count,0),b=s?.headerStats?` \u2014 ${s.headerStats}${g>0?` (${g} unchanged)`:""}`:"";return(0,w.jsxs)(T,{flexDirection:"column",marginLeft:2,children:[(0,w.jsxs)(n,{bold:!0,children:[m?"design":e.heading,b?(0,w.jsx)(n,{bold:!1,color:o.dim,children:b}):null]}),[...i.entries()].map(([p,x])=>(0,w.jsxs)(T,{flexDirection:"column",children:[i.size>1?(0,w.jsx)(n,{color:o.dim,children:`${Q(p)} \xB7 ${x.length}`}):null,(0,w.jsx)(kt,{rows:x,width:xn,badgeHeader:d[p]??"info"})]},p)),s&&s.unchanged.length>0&&(0,w.jsx)(n,{color:o.dim,children:` \u22EE unchanged: ${s.unchanged.map(p=>`${p.count} ${p.label}`).join(" \xB7 ")}`})]})}case"answer":return(0,w.jsx)(n,{color:o.dim,children:hn(e.receipt)});case"continued":return(0,w.jsx)(n,{color:o.dim,children:"\u21B3 continued"});case"commit":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{color:e.ok?o.green:o.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((s,l)=>(0,w.jsx)(n,{color:o.dim,children:` \u26A0 ${s}`},`w-${l}`))]});case"error":return(0,w.jsxs)(st,{variant:"error",paddingX:1,children:[(0,w.jsx)(n,{color:o.red,children:e.title}),e.detail.map((s,l)=>(0,w.jsx)(n,{color:o.dim,children:s},`d-${l}`))]});case"interrupted":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{color:o.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,w.jsx)(n,{color:o.dim,children:e.detail}):null]});case"pause":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,w.jsx)(n,{color:o.dim,children:`expires: ${e.expires_at}`}):null,(0,w.jsx)(n,{children:`resume: ${e.resume}`}),e.messageForm?(0,w.jsx)(n,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{bold:!0,children:"session summary"}),e.lines.map((s,l)=>(0,w.jsx)(n,{children:` ${s}`},`s-${l}`))]})}}var se=q(F(),1);function vt({item:e}){return(0,se.jsxs)(T,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((r,s)=>(0,se.jsx)(n,{dimColor:!0,children:`cite ${r.anchor??"conv"} \u2014 "${r.quote??""}"`},`cite-${s}`)),(e.depends_on_hint??[]).length>0&&(0,se.jsx)(n,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([r,s])=>(0,se.jsx)(n,{dimColor:!0,children:`${r}: ${s}`},`extra-${r}`))]})}var $=q(F(),1),Oe=(e,r)=>Math.max(0,Math.min(r,e));function we(e,r,s){switch(r.type){case"move":return e.level==="detail"?{...e,scroll:Math.max(0,(e.scroll??0)+r.delta)}:{...e,cursor:Oe(e.cursor+r.delta,Math.max(0,s-1))};case"enter":return e.level==="list"?{...e,level:"detail",scroll:0}:e;case"back":return e.level==="detail"?{...e,level:"list",scroll:0}:null}}var Rt={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ct(e,r){if(e.level==="detail")return{level:"detail",cursor:Oe(e.num-1,Math.max(0,r.entries.length-1))};if(e.section){let s=r.entries.findIndex(l=>Rt[l.kind]===e.section);if(s>=0)return{level:"list",cursor:s}}return{level:"list",cursor:0}}function kn(e){let r=[];for(let s of e.entries){let l=r.find(d=>d.kind===s.kind);l?l.entries.push(s):r.push({kind:s.kind,entries:[s]})}return r}var It=3;function bn({items:e,cursor:r,verb:s,more:l}){let d=`view \xB7 ${s} so far \xB7 ${e.counts.map(i=>`${i.count} ${i.count===1?i.label.replace(/s$/,""):i.label}`).join(" \xB7 ")}`,f=e.entries[r];return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:d}),kn(e).map(({kind:i,entries:m})=>{let g=f?.kind===i,b=g?m.findIndex(B=>B.ref===f.ref):-1,p=g?Oe(b-1,Math.max(0,m.length-It)):0,x=m.slice(p,p+(g?It:1)),C=m.length-x.length;return(0,$.jsxs)(T,{flexDirection:"column",children:[(0,$.jsx)(n,{color:o.dim,children:`${Rt[i]??Q(i)} \xB7 ${m.length}`}),x.map(B=>{let h=g&&B.ref===f.ref,y=B.item.badge;return(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:o.generateAccent,children:h?"\u203A ":" "}),(0,$.jsx)(n,{children:`${B.num} \xB7 ${B.item.title}`}),y?(0,$.jsx)(n,{color:o.dim,children:` \xB7 ${y}`}):null]},`${B.kind}:${B.ref}`)}),C>0&&(0,$.jsx)(n,{color:o.dim,children:` \u22EE ${C} more`})]},i)}),l?(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:o.generateAccent,children:r===e.entries.length?"\u203A ":" "}),(0,$.jsx)(n,{color:o.dim,children:`\u22EF show all \u2014 ${l.hidden} more from earlier turns`})]}):null,(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back"})]})}var Te=14;function yn({items:e,cursor:r,explain:s,grandTotal:l,dossier:d,scroll:f=0}){let i=e.entries[r];if(!i)return(0,$.jsx)(n,{color:o.dim,children:"nothing to show"});if(d){let g=Math.max(0,Math.min(f,Math.max(0,d.lines.length-Te))),b=d.lines.slice(g,g+Te);return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.dim,paddingX:1,children:[(0,$.jsxs)(n,{bold:!0,children:[`view \xB7 ${d.id}`,d.id.toLowerCase()!==d.rawId?(0,$.jsx)(n,{bold:!1,color:o.dim,children:` \xB7 ${d.rawId}`}):null]}),(0,$.jsx)(n,{bold:!0,children:d.title}),g>0?(0,$.jsx)(n,{color:o.muted,children:`\u22EE ${g} above`}):null,b.map((p,x)=>(0,$.jsx)(n,{color:p.dim?o.dim:void 0,children:p.text},`dl-${x}`)),d.lines.length>g+Te?(0,$.jsx)(n,{color:o.muted,children:`\u22EE ${d.lines.length-g-Te} more`}):null,(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 scroll \xB7 esc back"})]})}let m=i.item;return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:`view \xB7 ${i.kind} ${i.num} of ${l??e.entries.length}`}),(0,$.jsx)(n,{children:i.item.title}),m.badge?(0,$.jsx)(n,{color:o.dim,children:`kind: ${m.badge}`}):null,m.why?(0,$.jsx)(n,{color:o.dim,children:m.why}):null,(0,$.jsx)(vt,{item:i.item}),s?.map((g,b)=>(0,$.jsx)(n,{color:o.dim,children:g},`ex-${b}`)),(0,$.jsx)(n,{color:o.dim,children:"view-only \u2014 approvals happen in chat"}),(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Bt({items:e,state:r,verb:s,more:l,explain:d,grandTotal:f,dossier:i=null}){return r.level==="list"?(0,$.jsx)(bn,{items:e,cursor:r.cursor,verb:s,more:l}):(0,$.jsx)(yn,{items:e,cursor:r.cursor,explain:d,grandTotal:f,dossier:i,scroll:r.scroll??0})}var Tn={"use-cases":"use-cases",usecases:"use-cases","use-case":"use-cases",acs:"acs",ac:"acs",scenarios:"scenarios",scenario:"scenarios",tests:"tests",test:"tests",gaps:"gaps",gap:"gaps"};function Dt(e){let r=(e??"").trim().toLowerCase();if(!r)return{level:"list"};if(/^\d+$/.test(r)){let l=parseInt(r,10);return l>=1?{level:"detail",num:l}:{error:"items are numbered from 1 \u2014 /view 1"}}let s=Tn[r];return s?{level:"list",section:s}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var D=q(F(),1),wn=6,Et=12;function $n(e,r,s){let l=Math.max(20,r),d=[];for(let i of e.split(`
3
- `)){if(i.length<=l){d.push(i);continue}let m="";for(let g of i.split(" "))m&&m.length+1+g.length>l?(d.push(m),m=g):m=m?`${m} ${g}`:g;d.push(m)}let f=Math.max(0,d.length-s);return{body:d.slice(-s).join(`
4
- `),hidden:f}}var $e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function At(e){let r={key:"redesign",label:"re-design from scratch",detail:"replaces the current design"},s={key:"keep",label:"keep the existing design",detail:"back to the list"};return e.designed==="stale"?[{...r,detail:"the use-case changed since it was designed"},s]:[s,r]}function mr({controller:e,verb:r="extract",onCtrlC:s,chain:l=null,inspect:d=null}){let[,f]=(0,S.useState)(0),[i,m]=(0,S.useState)(!1),[g,b]=(0,S.useState)(null),[p,x]=(0,S.useState)(null),C=(0,S.useRef)(null),[B,h]=(0,S.useState)(null),y=(0,S.useRef)(null),E=t=>{y.current=t,h(t)},v=t=>{C.current=t,x(t),t===null&&E(null)},L=(0,S.useRef)([]),[k,P]=(0,S.useState)(null),_=(0,S.useRef)(null),N=t=>{_.current=t,P(t)},Pe=it(),{stdout:Lt}=ke(),Mt=Lt?.columns??80,qe=(0,S.useRef)(0),Se=(0,S.useRef)(0);(0,S.useEffect)(()=>{let t=()=>{let a=e.state.ledger;for(let I=qe.current;I<a.length;I++){let R=a[I],W=R.kind==="turn"?$t(e.state.turns,R.turnIndex):void 0;Pe.append((0,D.jsx)(St,{block:R,annotations:W},`lg-${I}`))}qe.current=a.length};t();let c=e.subscribe(()=>{t();let a=e.state;C.current&&(a.pending||a.status==="pausing")&&(v(null),a.pending&&b("questions arrived \u2014 back to chat")),f(I=>I+1)});return f(a=>a+1),c},[e,Pe]);let{thinking:J,status:Y,pending:M,confirm:Ne,ledger:Z,activeTurn:We,stream:_t,notice:me}=e.state,Fe=(_t?.text??"").trimEnd(),Ue=Fe.length>0,Ot=i&&(J.liveThinking.length>0||J.thinkingLog.length>0),Pt=$n(J.liveThinking||J.thinkingLog.map(t=>t.text).join(`
5
- `),Mt-6,Et),je=Ue?Fe.split(`
6
- `).slice(-wn):[];We&&(Se.current=We.turnIndex);let qt=M?M.resolution.filter(t=>!t).length:0,Ke;for(let t=Z.length-1;t>=0;t--){if(L.current.some(a=>a.end!=null&&t>=a.start&&t<a.end))continue;let c=Z[t];if(c.kind==="banner"&&!c.text.startsWith("kane")){Ke=c.text;break}}let ie=J.activity[J.activity.length-1],ve=ie?ie.status==="decision"?ie.label:dt({name:ie.name,status:ie.status}):void 0,Qe=Y==="streaming"||Y==="working",[Ve,Nt]=(0,S.useState)(0);ot(()=>Nt(t=>t+1),Qe||k?.kind==="running"?120:null);let Wt=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,Ft=Ue?"Writing\u2026":ve?`${ve.charAt(0).toUpperCase()}${ve.slice(1)}\u2026`:e.state.workingLabel??(r==="design"?"Designing\u2026":"Thinking\u2026"),Ut=e.state.turns.some(t=>t.role==="agent"),[jt,Kt]=(0,S.useState)(0),[Qt,Vt]=(0,S.useState)(!1),[He,Ht]=(0,S.useState)(null),le=(0,S.useRef)(0),Xe=(0,S.useRef)(!1),ze=(0,S.useRef)(null),ce=t=>{le.current=t,Kt(t)},Ge=t=>{Xe.current=t,Vt(t)},ee=t=>{ze.current=t,Ht(t)},Je=M&&M.cursor>=0?M.questions[M.cursor]:void 0,j=(0,S.useRef)(Je);j.current=Je;let H=(0,S.useRef)(M);H.current=M;let Xt=M?`${M.questions[0]?.id??"b"}:${M.cursor}`:null;(0,S.useEffect)(()=>{if(ee(null),j.current){Ge(!0);let t=H.current?.resolution[H.current.cursor]?.selected_index;ce(t??j.current.recommended_index??0)}else Ge(!1)},[Xt]);let ge=t=>{let c=H.current;return Le(t,c?be(c)!=="":!1)},zt={isFocused:()=>Xe.current&&j.current!=null&&ze.current==null||_.current!=null&&_.current.kind!=="running"||K.current&&tt.current==null,onMove:t=>{let c=j.current;if(c){ce(Math.max(0,Math.min(ge(c).maxSel,le.current+t)));return}let a=_.current;if(a?.kind==="picker"){N({...a,sel:Math.max(0,Math.min(a.items.length-1,a.sel+t))});return}if(a?.kind==="ask"||a?.kind==="confirm"){let I=(a.kind==="ask"?he.current.length:2)-1;N({...a,sel:Math.max(0,Math.min(I,a.sel+t))});return}a&&!K.current||K.current&&re(Math.max(0,Math.min(ue.current.length-1,Ee.current+t)))},onSelect:()=>{let t=j.current,c=H.current;if(!t||!c){let R=_.current;if(R?.kind==="picker"){let U=R.items[R.sel];U&&(U.designed?N({kind:"confirm",item:U,sel:0}):et(U,!1));return}if(R?.kind==="confirm"){At(R.item)[R.sel]?.key==="redesign"?et(R.item,!0):Be();return}if(R?.kind==="ask"){let U=he.current[R.sel]?.key;U==="another"?Be():U==="view"?nt(""):N(null);return}if(R&&!K.current||!K.current)return;switch(ue.current[Ee.current]?.key){case"finish":e.completeSession();return;case"continue":e.continueParked();return;case"design-chain":Be();return;case"view":nt("",Se.current);return;case"free":oe("");return}return}let a=ge(t),I=le.current;if(a.batchIdx!=null&&I===a.batchIdx){e.goWithRecommendations();return}if(a.freeIdx!=null&&I===a.freeIdx){ee("");return}if(a.doneIdx!=null&&I===a.doneIdx){e.confirmMulti(c.cursor);return}if(t.multi_select){e.toggleOption(c.cursor,I);return}e.submitAnswer(c.cursor,I)},onDigit:t=>{let c=j.current;if(c){t-1<c.options.length&&ce(t-1);return}let a=_.current;if(a?.kind==="picker"){t-1<a.items.length&&N({...a,sel:t-1});return}if(a?.kind==="ask"){t-1<he.current.length&&N({...a,sel:t-1});return}if(a?.kind==="confirm"){t-1<2&&N({...a,sel:t-1});return}if(!a&&K.current){let I=ue.current.filter(R=>!R.free);t-1<I.length&&re(t-1)}},isMulti:()=>{let t=j.current;return!!t?.multi_select&&le.current<(t?.options.length??0)},onSpace:()=>{let t=H.current;t&&e.toggleOption(t.cursor,le.current)},onTab:()=>{let t=j.current;if(!t)return;let c=ge(t);c.batchIdx!=null&&ce(c.batchIdx)},onType:t=>{let c=j.current;if(c){if(!c.allow_free_text)return;let a=ge(c);ce(a.freeIdx??0),ee(t);return}if(!(_.current&&!K.current)&&K.current){let a=mt(ue.current);if(a==null)return;re(a),oe(t)}},onBack:()=>{let t=_.current;if(t&&t.kind!=="running"){N(null);return}e.reopenQuestion()}},Gt=He!=null?{value:He,onChange:t=>ee(t),onSubmit:t=>{ee(null);let c=H.current;t.trim()&&c&&e.submitFreeText(c.cursor,t)},onCancel:()=>ee(null)}:null,Ye=s??(()=>e.requestPause()),te=e.state.checkpoint,fe=k?.kind==="running"&&Y==="idle",pe=Y==="idle"&&Ut&&!M&&!p&&(!k||fe),K=(0,S.useRef)(!1);K.current=pe;let X=G(e.state.turns).entries.length,ae,z;for(let t=Z.length-1;t>=0;t--){let c=Z[t];if(!ae&&c.kind==="commit"&&c.ok&&(ae=c.line),!z&&c.kind==="banner"&&c.text.startsWith("designing: ")&&(z=c.text.slice(11)),ae&&z)break}let ne=z?{"acceptance criteria":"scenarios",scenarios:"acceptance criteria + exercises","acceptance criteria + exercises":"tests + gaps"}[z]:void 0,Jt=(()=>{for(let t=Z.length-1;t>=0;t--){let c=Z[t];if(c.kind==="agent")return c.text}return null})(),Ie=/\?\s*$/.test((Jt??"").trimEnd()),Ze=r==="design"&&!te&&(Ie||ne!==void 0),Yt=fe&&!te?Ie?"the agent asked a question \u2014 reply to continue":`${k?.kind==="running"?k.title:"the design"} \u2014 the agent is waiting on you`:te?z?`${z} done${ne?` \u2014 next: ${ne}`:""}`:ae??"phase done":Ze?Ie?"the agent asked a question \u2014 reply to continue":`design incomplete \u2014 ${ne} not started`:ae??"waiting on you",Re=fe&&!te?[{key:"free",label:"reply \u2014 tell the agent what to change",free:!0},...X>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish this design"}]:te?[{key:"continue",label:ne?`continue to ${ne}`:"continue"},...X>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish here"},{key:"free",label:"adjust \u2014 tell me what to change",free:!0}]:Ze?[{key:"free",label:"reply \u2014 answer and continue",free:!0},...X>0?[{key:"view",label:"view the design"}]:[],{key:"finish",label:"finish anyway"}]:[{key:"finish",label:r==="design"?"finish":"looks good \u2014 finish the session"},...l?[{key:"design-chain",label:"design tests for a use-case\u2026"}]:[],...X>0?[{key:"view",label:r==="design"?"view the design":`view the ${X} draft${X===1?"":"s"}`}]:[],{key:"free",label:r==="design"?"keep adjusting \u2014 tell me what to change":"tell me what to change",free:!0}],Ce=[{key:"another",label:"design another use-case\u2026"},...X>0?[{key:"view",label:"view what was designed"}]:[],{key:"back",label:"done \u2014 back"}],he=(0,S.useRef)(Ce);he.current=Ce;let Be=()=>{let t=l?.listUcs()??[];if(t.length===0){b("no use-cases to design yet");return}N({kind:"picker",items:t,sel:0})},et=(t,c)=>{let a={start:e.state.ledger.length,end:null};L.current.push(a);let I=()=>{a.end=e.state.ledger.length};N({kind:"running",title:t.title,startedAt:Date.now()}),l.runDesignChild(t.key,c).then(R=>{I(),e.ledger({kind:"commit",ok:R===0,line:R===0?`designed ${t.title}`:`design for ${t.title} failed \u2014 child exited ${R}`}),N({kind:"ask",title:t.title,sel:0})}).catch(R=>{I(),e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 ${R instanceof Error?R.message:String(R)}`}),N(null)})},ue=(0,S.useRef)(Re);ue.current=Re;let[Zt,en]=(0,S.useState)(0),[De,tn]=(0,S.useState)(null),Ee=(0,S.useRef)(0),tt=(0,S.useRef)(null),re=t=>{Ee.current=t,en(t)},oe=t=>{tt.current=t,tn(t)},nn=`${pe}:${te}:${Se.current}`;(0,S.useEffect)(()=>{re(0),oe(null)},[nn]);let rn=De!=null?{value:De,onChange:t=>oe(t),onSubmit:t=>{oe(null),re(0);let c=t.trim();c&&(b(null),e.submit(c))},onCancel:()=>{oe(null),re(0)}}:null,nt=(t,c)=>{if(/^(uc|sc|ac|t|gap|sty)-\d+$/i.test(t.trim())){let W=t.trim().toLowerCase(),xe=G(e.state.turns).entries.findIndex(O=>(O.item.logical_id??"").toLowerCase()===W);if(xe<0){b(`${t.trim().toUpperCase()} isn't in this session's items \u2014 view lists what this session minted`);return}v({level:"detail",cursor:xe,scroll:0}),E(null);return}let a=Dt(t);if("error"in a){b(a.error);return}let I=G(e.state.turns);if(I.entries.length===0){b("nothing proposed yet \u2014 the first turn is still coming");return}if(a.level==="detail"&&a.num>I.entries.length){b(`no item ${a.num} \u2014 the set has ${I.entries.length} item${I.entries.length===1?"":"s"}`);return}let R=c!=null?_e(I,c):I;v(Ct(a,R)),E(c!=null&&R.entries.length<I.entries.length?c:null)},rt=(0,D.jsx)(ft,{verb:r,subject:Ke,pendingCount:qt,creditsTotal:e.state.credits?.total,state:M||pe||p||k&&k.kind!=="running"?"idle":void 0});if(p){let t=G(e.state.turns),c=B!=null?_e(t,B):t,a=t.entries.length-c.entries.length,I=p.level==="list"&&a>0,R=c.entries.length+(I?1:0),W=c.entries[p.cursor],U=p.level==="detail"&&W?e.explainLines(W.item.slug??W.item.temp_ref):null,xe=p.level==="detail"&&W&&d?d(W.item.logical_id??e.aliasOf(W.item.temp_ref)??W.item.temp_ref):null;return(0,D.jsxs)(T,{flexDirection:"column",children:[(0,D.jsx)(Ae,{onToggleThinking:()=>m(O=>!O),onCtrlC:Ye,explorer:{isOpen:()=>C.current!==null,onMove:O=>v(C.current&&we(C.current,{type:"move",delta:O},R)),onEnter:()=>{let O=C.current;if(O){if(O.level==="list"&&I&&O.cursor===c.entries.length){E(null);return}v(we(O,{type:"enter"},R))}},onBack:()=>{v(C.current&&we(C.current,{type:"back"},R)),setTimeout(()=>f(O=>O+1),0)}}}),(0,D.jsx)(Bt,{items:c,state:p,verb:r,more:I?{hidden:a}:null,explain:U,grandTotal:t.entries.length,dossier:xe}),(me??g)&&(me??g).split(`
7
- `).map((O,on)=>(0,D.jsx)(n,{color:o.orange,children:O},`nt-${on}`)),rt]})}return(0,D.jsxs)(T,{flexDirection:"column",children:[(0,D.jsx)(Ae,{onToggleThinking:()=>m(t=>!t),onCtrlC:Ye,panel:zt}),Ot&&(0,D.jsx)(at,{thinking:Pt.body,expanded:!0,thinkingDone:Y!=="streaming",maxLines:Et+1}),je.length>0&&(0,D.jsx)(T,{flexDirection:"column",children:je.map((t,c)=>(0,D.jsx)(n,{children:t},`st-${c}`))}),M&&(0,D.jsx)(ht,{batch:M,sel:jt,focused:Qt,freeText:Gt,multiSelFor:t=>e.multiSelection(t)}),Ne&&(0,D.jsx)(n,{color:"yellow",children:Ne.prompt}),(me??g)&&(me??g).split(`
8
- `).map((t,c)=>(0,D.jsx)(n,{color:o.orange,children:t},`nt-${c}`)),Qe&&!M&&(0,D.jsxs)(n,{color:o.generateAccent,children:[`${$e[Ve%$e.length]} ${Ft} `,(0,D.jsx)(n,{color:o.dim,children:`(${Wt}s)`})]}),pe&&(0,D.jsx)(de,{headline:Yt,rows:Re,sel:Zt,focused:De==null,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 type = your own words",freeText:rn}),k?.kind==="picker"&&(0,D.jsx)(de,{ask:!0,headline:"design tests for which use-case?",rows:k.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),k?.kind==="confirm"&&(0,D.jsx)(de,{ask:!0,headline:`${k.item.title} is already designed${k.item.designed==="stale"?" \u2014 and the use-case has changed since":""}`,rows:At(k.item).map(t=>({key:t.key,label:t.label,detail:t.detail})),sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),k?.kind==="running"&&!fe&&(0,D.jsxs)(n,{color:o.generateAccent,children:[`${$e[Ve%$e.length]} Designing ${k.title}\u2026 `,(0,D.jsx)(n,{color:o.dim,children:`(${Math.floor((Date.now()-k.startedAt)/1e3)}s)`})]}),k?.kind==="ask"&&(0,D.jsx)(de,{headline:`designed ${k.title}`,rows:Ce,sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),Y==="pausing"&&(0,D.jsx)(n,{color:o.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}),rt]})}export{mr as ChatSurface,$n as tailVisualRows};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-EASTDHNW.js";import"./chunk-RFHMDQXZ.js";import"./chunk-O4HWPV67.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-M5JQXOCE.js";import"./chunk-QZJID3OZ.js";import"./chunk-VCYVSKPM.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-MXLXKHW4.js";import"./chunk-QM3XF5TW.js";import"./chunk-R65HNFRB.js";import"./chunk-FVM7TWKT.js";import"./chunk-U5QTE3WX.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-FT4G3QGO.js";import"./chunk-QB4IOM3X.js";import"./chunk-YCCUBQY4.js";import"./chunk-JHAGEBKE.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-VE3SUJMA.js";import"./chunk-DPOES6G3.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{g as a}from"./chunk-LMMOR7CR.js";import"./chunk-U6TLLYRG.js";import"./chunk-4BAL4OGF.js";import"./chunk-FVM7TWKT.js";import"./chunk-F42YVALT.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-QZJID3OZ.js";import"./chunk-DKERZJYF.js";import"./chunk-3YI4QRXF.js";import"./chunk-DFS4RMVP.js";import"./chunk-VCYVSKPM.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p}from"./chunk-VXLOEM2U.js";import"./chunk-SHAA6FOD.js";import"./chunk-KHU7C6EE.js";import"./chunk-3C5GMAM4.js";import"./chunk-RQM3DUSB.js";import"./chunk-FXPPQL4D.js";import"./chunk-GG43HSU2.js";import"./chunk-JFAFKHDX.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-ZPDM6FO7.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-VCYVSKPM.js";import"./chunk-UR6MHSHU.js";import{existsSync as D}from"fs";var b=new Set(["interactive","agent","ci","override"]);function E(e){return e.mode!=null&&!b.has(e.mode)?{error:`design: --mode must be interactive | agent | ci | override, got '${e.mode}'`}:e.strength!=null&&e.strength!=="pairwise"&&e.strength!=="3-wise"?{error:`design: --strength must be pairwise | 3-wise, got '${e.strength}'`}:e.max!=null&&(!Number.isInteger(e.max)||e.max<1)?{error:"design: --max must be a positive integer"}:!e.useCase&&!e.resume?{error:"design: --use-case is required (or --resume <sid> \u2014 the session remembers its use-case)"}:{useCase:e.useCase,max:e.max,strength:e.strength,mode:e.mode,force:e.force,resume:e.resume,plan:e.plan,message:e.message,because:e.because,changeDelta:e.changeDelta,priorDesign:e.priorDesign}}async function A(e){let c=async(r,s)=>{if(process.stderr.write(r+`
3
- `),e.mode!=="agent")return 2;let{makeHeadlessIO:t,agentRefusal:i}=await import("./headless-io-PWW6YKH2.js");return i(t("ndjson","design"),r,s)},d=E(e);if("error"in d)return c(d.error);let a=d;{let{validateResumeMessage:r}=await import("./headless-io-PWW6YKH2.js"),s=r(a,"design");if(s)return c(s)}if(!D(u(process.cwd())))return c("error: no context store here (run `kane-cli context ingest` + `kane-cli context extract` first)","NO_STORE");let n=null;try{if(!a.mode&&!process.stdin.isTTY)return process.stderr.write(`design: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
4
- `),2;let r=a.mode??"interactive";if(r==="interactive"){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stderr.write(`design: --mode interactive needs a TTY on stdin and stdout (use --mode agent|ci|override headless)
5
- `),2;let{bindDesignInteractive:o}=await import("./interactive-bind-QEBWUJCN.js");return await o(a)}let{resolveAgentAuthEnv:s}=await import("./spawner-C6B5J73J.js"),{runAgent:t}=await import("./bridge-V4FF5QPK.js"),{preflightTurn:i}=await import("./turn-preflight-JGYT7LXP.js"),{makeInterruptGuard:h}=await import("./interrupt-guard-UREUWNRL.js"),{baseUrlAdvisory:w}=await import("./turn-preflight-JGYT7LXP.js"),{makeHeadlessIO:T,resolveEncoding:v,guardedChannels:x}=await import("./headless-io-PWW6YKH2.js");n=T(v(r),"design");let m=await s(),l=w();l&&n.out(l);let g=h(t,o=>n.out(o)),f=x(n,()=>g.interrupted(),/^error: (design agent failed|the design agent ended)/);try{let o=await p({...a,mode:r},{contextDir:u(process.cwd()),agent:g.agent,preflightTurn:()=>i(m),ask:async()=>[],out:f.out,emit:f.emit,progress:n.progress,isTTY:!1,auth:m});return g.interrupted()&&o!==3?(n.out("interrupted \u2014 no session saved"),n.done(130)):n.done(o)}finally{g.dispose()}}catch(r){let s=r instanceof Error?r.message:String(r);n?.event({type:"error",message:`error: design failed: ${s}`});let t=n?i=>n.out(i):i=>process.stderr.write(i+`
6
- `);return t(`error: design failed: ${s}`),(process.env.ASSURANCE_LOG_LEVEL??"").toLowerCase()==="debug"&&r instanceof Error&&r.stack&&t(r.stack),t("hint: per-run trace logs live under .context/logs/ (design-*.log)"),n?n.done(1):1}}export{A as designTestsCommand};
@@ -1,12 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{f as je}from"./chunk-K5JGCJ2K.js";import{a as pe,e as Te,g as Ne,h as qe}from"./chunk-RQM3DUSB.js";import{b as Fe,f as Ue,g as He,h as Ge}from"./chunk-FXPPQL4D.js";import{a as Pe}from"./chunk-GG43HSU2.js";import{a as Ae,b as Ie}from"./chunk-JFAFKHDX.js";import{c as Oe}from"./chunk-OSALXGD4.js";import{a as se,b as Ee}from"./chunk-DNNZ353O.js";import{b as Me}from"./chunk-YKTYVJBN.js";import{a as Be}from"./chunk-CVOGP253.js";import{a as V}from"./chunk-NVGBE2DR.js";import{a as R}from"./chunk-LEA6IHXC.js";import{e as z,f as re}from"./chunk-L3HG5ONB.js";import{b as Re}from"./chunk-IAHKTEET.js";import{d as H}from"./chunk-5YPBPZUR.js";import{appendFileSync as st,mkdirSync as he,writeFileSync as _e}from"fs";import{extname as ot,join as M}from"path";var E=class extends Error{code;constructor(e,c){super(`${e}: ${c}`),this.name="ProposalAdapterError",this.code=e}};function Le(s){return s.version===2}function We(s,e){if(s.read_basis.length!==1)throw new E("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${s.read_basis.length}`);let c=s.read_basis[0],x=s.use_cases.map(o=>{if(o.cite.length!==1)throw new E("CITE_COUNT",`${o.temp_ref}: cite must have exactly 1 element, got ${o.cite.length}`);let g=o.cite[0];if(g.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}: cite source ${g.source_id} != read_basis source ${c.source_id} (single-source)`);return{temp_ref:o.temp_ref,title:o.title,...o.description!==void 0?{description:o.description}:{},...o.summary!==void 0?{summary:o.summary}:{},...o.actors!==void 0?{actors:o.actors}:{},...o.value!==void 0?{value:o.value}:{},risk:o.risk,cite:{anchor:g.anchor,quote:g.quote},...o.criteria!=null&&o.criteria.length>0?{criteria:o.criteria.map((d,h)=>{if(d.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.criteria[${h}]: cite source ${d.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:d.text,cite:{anchor:d.cite.anchor,quote:d.cite.quote}}})}:{},depends_on_hint:o.depends_on_hint,matches_existing:o.matches_existing,...o.conflicts_with!=null?{conflicts_with:o.conflicts_with}:{},...o.changed?{changed:!0}:{},...o.updated!=null?{updated:{...o.updated.title!=null?{title:o.updated.title}:{},...o.updated.description!=null?{description:o.updated.description}:{},...o.updated.summary!=null?{summary:o.updated.summary}:{},...o.updated.actors!=null?{actors:o.updated.actors}:{},...o.updated.value!=null?{value:o.updated.value}:{},...o.updated.risk!=null?{risk:o.updated.risk}:{},...o.updated.criteria!=null?{criteria:o.updated.criteria.map((d,h)=>{if(d.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.updated.criteria[${h}]: cite source ${d.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:d.text,cite:{anchor:d.cite.anchor,quote:d.cite.quote}}})}:{}}}:{},...o.change_note!=null?{change_note:o.change_note}:{}}});return{version:1,read_basis:e,source:{source_id:c.source_id,source_cid:c.source_cid},use_cases:x}}function ze(s){let{contextDir:e,graph:c}=s,x=s.maxDigestBytes??4096,o={},g=[];for(let[u,l]of c.heads){if(o[u]=l,typeof l!="string")continue;let _=c.mediaOf(l),k=c.getNode(l)?.content?.blob;if(typeof k=="string")if(_.format==="image")g.push({source_id:u,cid:l,format:"image",blobRef:{path:V(e,k),cid:k}});else{let n=se(e,c,l)?.toString("utf8")??"";g.push({source_id:u,cid:l,format:_.format,text:n})}}g.sort((u,l)=>u.source_id<l.source_id?-1:1);let d=[];for(let u of c.byLabel(H.STYLENOTE).sort((l,_)=>l.cid<_.cid?-1:1))c.superseded.has(u.cid)||d.push(`\u2022 ${String(u.content.statement)} [${String(u.content.learned_from_kind)}]`);let h="";for(let u of d){if(Buffer.byteLength(h+u+`
3
- `,"utf8")>x)break;h+=u+`
4
- `}return{read_basis:o,sources:g,styleNoteDigest:h}}function Ve(s,e){let c=ze({contextDir:s,graph:e}).styleNoteDigest;return c.length>0?c:void 0}function it(s){return s.length>8&&s[0]===137&&s[1]===80&&s[2]===78&&s[3]===71?"image/png":s.length>3&&s[0]===255&&s[1]===216&&s[2]===255?"image/jpeg":s.length>12&&s.toString("ascii",0,4)==="RIFF"&&s.toString("ascii",8,12)==="WEBP"?"image/webp":null}function Je(s){return s.toISOString().replace(/[-:]/g,"").slice(0,15)}function nt(s){return s.startsWith("su-conv-")?`conv-${Re(Buffer.from(s,"utf8")).slice(0,8)}`:s}function Qe(s){return s.source_id.startsWith("su-conv-")?"the conversation":s.source_id}function at(s,e,c){return`reading ${Qe(s)}${c>1?` (source ${e} of ${c})`:""}`}function J(s){return s.toLowerCase().trim().replace(/\s+/g," ")}function Xe(s,e){let c=new Map,x=new Map,o=new Map;for(let{cid:d,content:h}of e.byLabel(H.USECASE)){if(e.superseded.has(d))continue;(e.trust.get(d)==="archived"?o:x).set(J(String(h.title??"")),d)}let g=d=>e.trust.get(d)==="archived"?{cid:d,archived:!0,reason:e.archivedReason.get(d)}:{cid:d};for(let d of s.use_cases){if(d.matches_existing){let l=d.matches_existing.cid;if(e.superseded.has(l)){let _=e.tipOf(l);l=e.superseded.has(_)?null:_}if(l!==null){c.set(d.temp_ref,g(l));continue}}let h=x.get(J(d.title));if(h){c.set(d.temp_ref,{cid:h});continue}let u=o.get(J(d.title));u&&c.set(d.temp_ref,g(u))}return c}var Ye=/^(\S+)\.criteria\[(\d+)\]/;function ct(s,e,c){if(e.length===0||!e.every(o=>Ye.test(o.detail)))return!1;let x=new Map;for(let o of e){let g=Ye.exec(o.detail),d=x.get(g[1])??new Set;d.add(Number(g[2])),x.set(g[1],d)}for(let o of s.use_cases){let g=x.get(o.temp_ref);g?.size&&(o.criteria=(o.criteria??[]).filter((d,h)=>!g.has(h)),c(`${o.temp_ref}: dropped ${g.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function Ke(s,e,c,x,o=()=>{},g){let d=(h,u)=>o(h,u,s.session_id);return Ne(s,e,c,x,o,{async onProposalEvent(h){let u=h,l=null,_=null;if(Le(u))try{l=We(u,s.read_basis),d("adapter",{ok:!0,use_cases:l.use_cases.length})}catch(k){_=k instanceof E?k.message:String(k),d("adapter",{ok:!1,error:_})}else l=u;return l&&l.use_cases.length===0&&e.out("warning: the agent proposed ZERO use-cases for this source"),l&&g&&await g(l),{proposal:l,error:_}}})}var dt=new Set(["agent","ci","override"]);async function Gt(s,e){let c=s.mode??"interactive";if(c==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!dt.has(c))return e.out(`extract: unknown mode "${c}" \u2014 interactive | agent | ci | override`),2;let x=Je(e.now?.()??new Date),o=M(e.contextDir,"logs");he(o,{recursive:!0});let g=M(o,`extract-${x}.log`),d=`run-${x}-${Math.random().toString(36).slice(2,8)}`,h=t=>t==="error"||t==="failed_proposal"?"error":t==="repair_respawn"?"warn":"info",u=(t,a,m)=>{try{st(g,JSON.stringify({ts:new Date().toISOString(),level:h(t),run_id:d,...m?{session_id:m}:{},kind:t,data:a})+`
5
- `)}catch{}};e.out(`trace: ${pe(g)}`),e.emit?.({type:"run_start",mode:c,trace:g});let l=Me();if(l&&e.out(l),e.preflightTurn){let t=await e.preflightTurn();if(u("preflight",t),!t.ok)return e.out(t.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:t.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let _=R(e.contextDir),k=Ve(e.contextDir,_);if(s.source){if(s.resume){let a="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_WITH_RESUME"}),2}let t=_.heads.get(s.source);if(typeof t!="string"){let a=t===null?`error: --source ${s.source} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${s.source} is not an ingested source (kane-cli context list shows them)`;return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_UNKNOWN"}),2}}let n=null;if(s.resume){try{n=Ge(e.contextDir,s.resume,_)}catch(m){return e.out(`error: ${m instanceof Error?m.message:String(m)}`),e.emit?.({type:"error",message:`error: ${m instanceof Error?m.message:String(m)}`}),1}let t=n.handle.state.change_basis;if(t&&(_.heads.get(t.source_id)??null)!==t.new_head){let m=`error: ${t.source_id} moved while this reconcile extraction was paused \u2014 its recorded change context no longer matches; re-run kane-cli maintain reconcile against the current file (session ${s.resume} is defunct and can be ignored)`;return e.out(m),e.emit?.({type:"error",message:m,code:"CHANGE_BASIS_MOVED"}),n.handle.release(),2}n.staleBasis.length>0&&e.out(`note: changed since the pause: ${n.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let a=n.handle.state.held_receipts??[];if(a.length>0)if(e.chat?.holdReceipt)for(let m of a)e.chat.holdReceipt(m);else e={...e,initialMessage:[a.join(`
6
-
7
- `),e.initialMessage].filter(Boolean).join(`
8
-
9
- `)};n.handle.state.assumed.length>0&&e.out(`note: ${n.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${s.resume} lists them`)}let xe=_.extractedSourceCids,X=!!(s.force||n?.handle.state.force),y=[],P=[];for(let[t,a]of _.heads.entries())if(a!=null&&!(s.source&&t!==s.source)){if(!s.source&&!n&&t.startsWith("su-conv-")){e.out(`skipped: ${t} \u2014 conversation source (extract it explicitly with --source ${t})`),P.push({source_id:t,reason:"conversation"});continue}if(n){let m=t in n.handle.state.read_basis,I=n.handle.state.corpus_cursor.remaining.includes(t);if(!m&&!I)continue;if(I&&!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}}else if(!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}y.push({source_id:t,cid:a})}let Ze=t=>{let a=je(e.contextDir,t);a&&e.out(`note: a reconcile plan for ${t} is pending (${a.pending} item(s)) \u2014 resume with \`kane-cli maintain reconcile --apply ${a.path}\``)};for(let t of P)t.reason==="cached"&&Ze(t.source_id);if(e.emit?.({type:"corpus",sources:y,skipped:P}),y.length===0){if(n){let m=`error: resumed session's paused source (${Object.keys(n.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${s.resume}, or discard with: kane-cli context sessions clean ${s.resume}`;return e.out(m),e.emit?.({type:"error",message:m,code:"SOURCE_MISSING"}),n.handle.release(),2}let t=P.length>0&&P.every(a=>a.reason==="conversation");return e.out(s.source?`extract: nothing to do \u2014 ${s.source} is already extracted at its current snapshot (--force to re-run)`:t?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let Y=new Map;if(n&&n.questions.length>0&&!s.message){e.out(`re-presenting ${n.questions.length} unanswered question(s) from the paused session`);let t=await e.ask(n.questions.map(Ue));for(let a of t)Y.set(a.id,a)}let G=e.by??{kind:"human",id:"owner"},A=c==="interactive"&&!s.plan&&!!e.chat,oe=0,ye=0;try{for(let t of y){let a=R(e.contextDir),m={current:a};e.chat?.attachOnCommitted?.(r=>{m.current=r});let I=a.getNode(t.cid),K=String(I?.content.blob??""),ie=se(e.contextDir,a,t.cid);if(!ie)return e.out(`error: ${t.source_id}: blob ${K} missing from .context/blobs`),e.emit?.({type:"error",source_id:t.source_id,message:`error: ${t.source_id}: blob ${K} missing from .context/blobs`,code:"BLOB_MISSING"}),1;let T=a.mediaOf(t.cid),ne=T.media_type.startsWith("image/");if(!ne){let r=it(ie);if(r){e.out(`skipping ${t.source_id}: binary ${r} ingested before image support \u2014 re-ingest it (kane-cli context ingest) to extract from it`),e.emit?.({type:"source_skipped",source_id:t.source_id,reason:"binary_pre_media"});continue}}let q=ne?`0001| (image source ${t.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:Ee(ie),ve=Je(e.now?.()??new Date),N=`${ve}-${t.source_id}`,$e=!!(n&&t.source_id in n.handle.state.read_basis)?s.resume:`ext-${ve}-${nt(t.source_id)}`,F="";if(A){let r=Oe({contextDir:e.contextDir,graph:R(e.contextDir),sessionStamp:$e,by:G});r.errors===null||r.errors[0]?.code==="CONV_SOURCE_EXISTS"?(F=r.sourceId,e.chat.attachConversationSource?.(F),m.current=R(e.contextDir)):e.out(`warning: conversation source unavailable (${r.errors[0]?.detail}) \u2014 chat adds will not land this session`)}let b={type:"run_config",version:1,session_id:$e,mode:c,source:{source_id:t.source_id,source_cid:t.cid,kind:T.format==="pdf"?"pdf":ot(t.source_id)||"md",numbered_text:q,...T.format==="pdf"&&(T.images??[]).some(r=>r.delivery==="selected")?{images:(T.images??[]).filter(r=>r.delivery==="selected").map(r=>({ref:r.ref,page:r.page,media_type:r.media_type,blob_ref:{path:V(e.contextDir,r.blob),cid:r.blob}}))}:{}},existing_use_cases:a.byLabel(H.USECASE).filter(({cid:r})=>a.trust.get(r)!=="archived"&&!a.superseded.has(r)).map(({cid:r,content:i})=>({id:r,title:String(i.title??""),summary:String(i.summary??"")})),read_basis:m.current.latestHash,max_free_text_rounds:Te,graph_reads:!0,verb:"extract",...k!==void 0?{style_note_digest:k}:{},...s.changeContext&&s.changeContext.source_id===t.source_id?{change_context:s.changeContext}:{},topology:Be(),...A?{chat:!0}:{},...ne?{image_sources:[{source_id:t.source_id,source_cid:t.cid,media_type:T.media_type,blob_ref:{path:V(e.contextDir,K),cid:K}}]}:{},...n&&t.source_id in n.handle.state.read_basis?{resume:{agent_state:n.handle.state.agent_state}}:{}};A||e.out(n&&t.source_id in n.handle.state.read_basis?`resuming: ${t.source_id} (session ${s.resume})`:`extracting: ${t.source_id} @ ${t.cid.slice(0,19)}`),e.emit?.({type:"source_start",source_id:t.source_id,cid:t.cid,index:y.indexOf(t)+1,total:y.length,resumed:!!(n&&t.source_id in n.handle.state.read_basis)}),e.chat?.ledger?.({kind:"banner",text:at(t,y.indexOf(t)+1,y.length)}),e.chat?.setWorking?.(`Reading ${Qe(t)}\u2026`);let be=new Map;u("spawn",{source_id:t.source_id,source_cid:t.cid,resume:!!n,chat:A},b.session_id);let we=!1,et=async r=>{let i=z(r,q,R(e.contextDir));if(u("kane_validate",{errors:i.map(p=>p.code)},b.session_id),i.length>0){e.chat.submit("[auto-repair] the proposal failed validation: "+i.map(p=>`${p.code}: ${p.detail}`).join("; ")+" \u2014 please re-finalize with these fixed.");return}let v=R(e.contextDir),C=Xe(r,v),ee=M(e.contextDir,"proposals",N);he(ee,{recursive:!0}),_e(M(ee,"proposal.json"),JSON.stringify(r,null,2)+`
10
- `);let rt=new Map(r.use_cases.map(p=>[p.temp_ref,{resolution:"skipped"}])),te=re({contextDir:e.contextDir,graph:v,proposal:r,proposalId:N,verdicts:rt,by:{kind:"ai",id:"extract-agent"},autoName:!0});if(te.errors){e.chat.ledger?.({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:te.errors.map(p=>`${p.code}: ${p.detail}`)});return}we=!0;let j=te.record.nodes.length;oe+=j;let U=r.use_cases.length-j;{let p=R(e.contextDir),De=new Map;for(let{cid:$,content:D}of p.byLabel(H.USECASE))p.superseded.has($)||De.set(J(String(D.title??"")),$);let fe=[];for(let $ of r.use_cases){let D=null;if($.matches_existing?.cid&&p.hasNode($.matches_existing.cid)){let W=p.tipOf($.matches_existing.cid);D=p.superseded.has(W)?null:W}D=D??De.get(J($.title))??null,D&&fe.push({ref:$.temp_ref,cid:D,...p.displayNameOf(D)?{id:p.displayNameOf(D)}:{}})}fe.length>0&&e.chat.registerAliases?.(fe),m.current=p;let ke=$=>{for(let[D,W]of p.names)if(W===$&&!p.superseded.has(W))return D},Ce=Pe({verb:"extract",commitN:1,phase:"proposal",committed:te.record.nodes.map($=>({cid:$.cid,...ke($.cid)?{logical_id:ke($.cid)}:{}})),reused:U},p);e.emit?.(Ce.event),e.chat.holdReceipt?.(Ce.text)}u("commit",{derived:j,evidence_matched:U,chat:!0},b.session_id),e.chat.ledger?.({kind:"commit",ok:!0,line:j===0&&U>0?`all ${U} matched existing \u2014 nothing new to save`:`saved ${j} use-case${j===1?"":"s"} as drafts`+(U>0?` \xB7 ${U} matched existing`:"")})},Se=!!(n&&t.source_id in n.handle.state.read_basis),Q=Se&&Y.size>0?{...e,ask:async r=>r.every(i=>Y.has(i.id))?(n.handle.markApplied(r.map(i=>`resolveq:${s.resume}:${i.id}`)),e.out(`answered ${r.length} re-asked question(s) from the held resume answers`),r.map(i=>Y.get(i.id))):e.ask(r)}:e;Se&&s.message&&(Q={...Q,initialMessage:s.message});let f=await Ke(b,{...Q,graphSlot:m},be,a,u,A?et:void 0);if(e.chat?.setWorking?.(null),f.error)return e.out(`error: agent failed for ${t.source_id}: ${f.error}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent failed for ${t.source_id}: ${f.error}`}),1;if(f.highRisk)return e.out(`error: ${f.highRisk.length} high-risk decision${f.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",source_id:t.source_id,message:`error: high-risk question(s) in ci mode (fail-closed): ${f.highRisk.map(r=>r.id).join(", ")}`,code:"HIGH_RISK_CI"}),1;if(f.paused){let r=y.slice(y.indexOf(t)+1).map(ee=>ee.source_id),i=n?.handle??Fe(e.contextDir,{sid:b.session_id,mode:"agent",created_at:(e.now?.()??new Date).toISOString(),expires_at:new Date((e.now?.()??new Date).getTime()+1440*60*1e3).toISOString(),agent_state:f.paused.agent_state,pending:{questions:[],proposals:[]},assumed:[],read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},conv_source:F,verb:"extract",...X?{force:!0}:{},...s.changeContext?{change_basis:{source_id:s.changeContext.source_id,new_head:s.changeContext.new_head}}:{}});F&&i.state.conv_source!==F&&i.save({conv_source:F});let v=e.chat?.drainHeldReceipts?.()??[];(v.length>0||(i.state.held_receipts?.length??0)>0)&&i.save({held_receipts:v}),n?.handle&&i.save({read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},...X&&!i.state.force?{force:!0}:{}}),He(i,f.paused),u("session_paused",{sid:i.state.sid},b.session_id);let C=`kane-cli context extract --resume ${i.state.sid} --mode ${c}`;return e.out(`paused: session ${i.state.sid} saved \u2014 resume with: ${C}`),e.emit?.({type:"session_paused",sid:i.state.sid,source_id:t.source_id,mode:c,resume:C,expires_at:i.state.expires_at,pending_questions:f.paused.pending.questions}),e.chat?.ledger?.({kind:"pause",sid:i.state.sid,expires_at:i.state.expires_at,resume:C,messageForm:`${C} --message "<your words>"`}),3}if(A){if(ye+=f.assumedDefaults??0,f.error)return 1;if(!we){let r=y.length-y.indexOf(t)-1;return e.out(`done \u2014 nothing committed for ${t.source_id} (no finalize before the session ended)`+(r>0?`; stopping here \u2014 ${r} remaining source(s) not extracted (re-run kane-cli context extract to continue)`:"")),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null),0}n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null);continue}if(!f.proposal)return e.out(`error: agent ended without a proposal for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent ended without a proposal for ${t.source_id}`}),1;let S=z(f.proposal,q,a);if(u("kane_validate",{errors:S.map(r=>r.code)},b.session_id),S.length>0&&ct(f.proposal,S,r=>e.out(r))&&(u("criteria_dropped",{source_id:t.source_id},b.session_id),S=z(f.proposal,q,a)),S.length>0){if(e.out("the agent's proposal didn't validate \u2014 retrying once"),e.emit?.({type:"validate_failed",source_id:t.source_id,codes:S.map(r=>r.code),repairing:!0}),u("repair_respawn",{source_id:t.source_id},b.session_id),f=await Ke(b,{...Q,graphSlot:m},be,a,u),f.error||!f.proposal)return e.out(`error: repair run failed for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: repair run failed for ${t.source_id}`}),1;if(S=z(f.proposal,q,a),S.length>0){for(let r of S)e.out(` ${r.detail}`);return e.emit?.({type:"validate_failed",source_id:t.source_id,codes:S.map(r=>r.code),repairing:!1}),e.emit?.({type:"error",source_id:t.source_id,message:`error: proposal failed validation after repair (${S.map(r=>r.code).join(", ")})`}),1}}let w=f.proposal,Z=Xe(w,a),ae=M(e.contextDir,"proposals",N);if(he(ae,{recursive:!0}),_e(M(ae,"proposal.json"),JSON.stringify(w,null,2)+`
11
- `),s.plan){e.out(`plan: ${w.use_cases.length} use-case(s) proposed from ${t.source_id} (nothing committed)`);for(let r of w.use_cases){let i=Z.get(r.temp_ref),v=i?i.archived?` \u2248 matches ARCHIVED ${i.cid.slice(0,19)}${i.reason?` \u2014 previously rejected: "${i.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${i.cid.slice(0,19)}`:"";e.out(` [${r.risk}] ${r.title} \u2014 cite ${r.cite.anchor}${v}`)}e.emit?.({type:"plan",source_id:t.source_id,use_cases:w.use_cases.map(r=>{let i=Z.get(r.temp_ref);return{risk:r.risk,title:r.title,anchor:r.cite.anchor,...i?{match:i.cid,match_archived:!!i.archived}:{}}})}),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`);continue}for(let r of w.use_cases){if(!r.conflicts_with?.length)continue;let i=r.conflicts_with.filter(C=>a.resolve(C)!==null),v=r.conflicts_with.filter(C=>a.resolve(C)===null);v.length>0&&(e.out(`note: ${r.temp_ref}: dropped unresolvable conflict hint(s): ${v.join(", ")}`),r.conflicts_with=i.length>0?i:void 0)}u("review_start",{use_cases:w.use_cases.length,flags:Z.size},b.session_id);let L=await e.review(w.use_cases,Z);u("review_verdicts",[...L.entries()].map(([r,i])=>({ref:r,resolution:i.resolution})),b.session_id),_e(M(ae,"review.json"),JSON.stringify(w.use_cases.map(r=>{let i=L.get(r.temp_ref)??{resolution:"skipped"};return{id:r.temp_ref,kind:"review-item",resolution:i.resolution,edit:i.edit??null,reason:i.reason??null,...i.supersedeTarget?{supersede_target:i.supersedeTarget}:{},by:G}}),null,2)+`
12
- `);let ce=a,O=re({contextDir:e.contextDir,graph:ce,proposal:w,proposalId:N,verdicts:L,by:G,autoName:!0});if(O.errors&&O.errors[0]?.code==="STALE_BASIS"){if(!await e.confirmStale(`the context changed while you reviewed (${O.errors[0].detail}) \u2014 commit against the new head anyway?`))return e.out("aborted: proposal not committed"),e.emit?.({type:"error",source_id:t.source_id,message:"aborted: proposal not committed",code:"STALE_BASIS"}),e.emit?.({type:"done",status:"aborted",exit_code:1}),1;ce=R(e.contextDir),O=re({contextDir:e.contextDir,graph:ce,proposal:w,proposalId:N,verdicts:L,by:G,allowStaleBasis:!0,autoName:!0})}if(O.errors){for(let r of O.errors)e.out(` ${r.detail}`);return e.emit?.({type:"error",source_id:t.source_id,message:`error: commit failed: ${O.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}`}),1}let tt=new Date().toISOString();for(let r of w.use_cases){let i=L.get(r.temp_ref)??{resolution:"skipped"};for(let v of Ie({ts:tt,command:"context extract",id:r.temp_ref,by:G},i.resolution))Ae(e.contextDir,v)}let B=O.record,de=new Map(B.review.map(r=>[r.id,r.resolution])),ue=[...de.values()].filter(r=>r==="approved"||r==="edited").length,le=[...de.values()].filter(r=>r==="rejected").length,me=B.nodes.filter(r=>!de.has(r.cid)).length,ge=B.supersessions.filter(r=>r.kind==="node"&&r.new!==r.old).length;u("commit",{trusted:ue,derived:me,archived:le},b.session_id),e.out(`committed: ${ue} trusted, ${me} derived (queued), ${le} archived`+(ge>0?`, ${ge} superseded`:"")),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`),e.emit?.({type:"commit",source_id:t.source_id,proposal_id:N,trusted:ue,derived:me,archived:le,superseded:ge,assumed:f.assumedDefaults??0,evidence_matched:Math.max(0,w.use_cases.length-B.nodes.length),minted:B.nodes.map(r=>{let i=B.names?.find(v=>v.cid===r.cid)?.slug;return{cid:r.cid,...i?{logical_id:i}:{}}})}),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),e.out(`session ${s.resume} complete`),e.emit?.({type:"session_complete",sid:s.resume,source_id:t.source_id}),n=null)}}finally{n?.handle.release()}if(A){let t=e.chat?.state.ledger.filter(I=>I.kind==="answer"&&I.receipt.form==="assumed").length??0,a=ye+t,m=e.chat?.state.credits?.total;e.chat?.ledger?.({kind:"summary",lines:[`saved ${oe} use-case${oe===1?"":"s"} across ${y.length} source${y.length===1?"":"s"}`,...a>0?[`${a} assumed default(s)`]:[],...m!==void 0?[`credits used: ${m.toFixed(1)}`]:[],`trace: ${pe(g)}`]})}return s.plan||qe(e.contextDir),0}export{nt as a,Qe as b,at as c,Xe as d,Gt as e};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as E}from"./chunk-YCCUBQY4.js";import{y as m}from"./chunk-VCYVSKPM.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as h,b as s,i as C,k as S}from"./chunk-C44QQJR4.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as w}from"./chunk-UR6MHSHU.js";var c=w(R(),1);function N(d){let n=d.findIndex(o=>o.free);return n>=0?n:null}var $=60;function W({headline:d,ask:n=!1,rows:o,sel:r,focused:x,legend:l,freeText:u=null,freeTextNote:f}){let{stdout:t}=S(),e=(t?.columns??80)<$,a=i=>x&&r===i?(0,c.jsx)(s,{color:m.generateAccent,children:"\u25B8"}):" ",p=0,g=(0,c.jsxs)(h,{flexDirection:"column",children:[n?(0,c.jsx)(s,{bold:!0,color:m.generateAccent,children:`? ${d}`}):(0,c.jsx)(s,{bold:!0,children:d}),o.map((i,T)=>i.free?u?(0,c.jsxs)(h,{flexDirection:"column",children:[(0,c.jsxs)(h,{children:[(0,c.jsxs)(s,{children:[" ",(0,c.jsx)(s,{color:m.generateAccent,children:"\u25B8"})," ",(0,c.jsx)(s,{color:m.dim,children:"\u270E "})]}),(0,c.jsx)(E,{value:u.value,onChange:u.onChange,onSubmit:u.onSubmit,onCancel:u.onCancel,placeholder:i.label})]}),f?(0,c.jsx)(s,{color:m.muted,children:` ${f}`}):null]},i.key):(0,c.jsxs)(s,{children:[" ",a(T)," ",(0,c.jsx)(s,{color:m.dim,children:`\u270E ${i.label}`})]},i.key):(p+=1,(0,c.jsxs)(s,{bold:x&&r===T,children:[" ",a(T),` ${p} ${i.label}`,i.detail?(0,c.jsx)(s,{color:m.dim,bold:!1,children:` \u2014 ${i.detail}`}):null]},i.key))),(0,c.jsx)(s,{color:m.muted,children:` ${l}`})]});return e?g:(0,c.jsx)(h,{flexDirection:"column",borderStyle:"round",borderColor:m.generateAccent,paddingX:1,children:g})}var A=w(R(),1),P="ctrl+t thinking \xB7 ctrl+c exit";function M(d,n){if(d.length<=n)return d;if(n<=1)return"\u2026";let o=Math.ceil((n-1)/2),r=Math.floor((n-1)/2);return`${d.slice(0,o)}\u2026${r>0?d.slice(-r):""}`}function L({verb:d,subject:n,pendingCount:o,creditsTotal:r,state:x,hints:l=P}){let{stdout:u}=S(),f=u?.columns??80,t=[];t.push(d),x&&t.push(x),r!==void 0&&t.push(`${r.toFixed(1)} credits`);let e=o?`[${o} pending]`:null,a=" \xB7 ",g=[...t,...e?[e]:[]].join(a).length,i,T=[...t,...n?[n]:[],...e?[e]:[],l].join(a);if(T.length<=f)i=T;else{let b=f-g-(n?a.length:0)-a.length-l.length;if(n&&b>=8)i=[...t,M(n,b),...e?[e]:[],l].join(a);else{let v=f-g-(n?a.length:0);i=[...t,...n&&v>=4?[M(n,v)]:[],...e?[e]:[]].join(a)}}if(x){let b=` \xB7 ${x}`,v=i.indexOf(b);if(v>=0)return(0,A.jsxs)(s,{color:m.dim,children:[i.slice(0,v+3),(0,A.jsx)(s,{color:m.generateAccent,children:x}),i.slice(v+b.length)]})}return(0,A.jsx)(s,{color:m.dim,children:i})}var O=w(B(),1);function q({onToggleThinking:d,onCtrlC:n,explorer:o,panel:r}){let l=(0,O.useRef)(null),u=(0,O.useRef)(""),f=()=>{l.current&&clearTimeout(l.current),l.current=null,u.current=""};return(0,O.useEffect)(()=>f,[]),C((t,e)=>{if(e.ctrl&&t==="t"){d();return}if(e.ctrl&&t==="c"){n();return}if(!e.ctrl&&t.includes("")){n();return}if(!e.ctrl&&t.includes("")){d();return}if(o&&o.isOpen()){let a=()=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{f(),o.onBack()},150)};if(l.current){if(e.upArrow||e.downArrow||e.return){f(),e.return?o.onEnter():o.onMove(e.upArrow?-1:1);return}if(u.current+=t,u.current==="["){a();return}let p=u.current;f();let g=/^\[([AB])/.exec(p);if(g){o.onMove(g[1]==="A"?-1:1);return}o.onBack();return}if(e.upArrow){o.onMove(-1);return}if(e.downArrow){o.onMove(1);return}if(e.return){o.onEnter();return}if(e.escape){u.current="",a();return}return}if(r&&r.isFocused()){let a=()=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{f(),r.onBack()},150)};if(l.current){if(e.upArrow||e.downArrow||e.return){f(),e.return?r.onSelect():r.onMove(e.upArrow?-1:1);return}if(u.current+=t,u.current==="["){a();return}let p=u.current;f();let g=/^\[([AB])/.exec(p);if(g){r.onMove(g[1]==="A"?-1:1);return}r.onBack();return}if(e.upArrow){r.onMove(-1);return}if(e.downArrow){r.onMove(1);return}if(e.return){r.onSelect();return}if(e.escape){u.current="",a();return}if(/^[1-9]$/.test(t)){r.onDigit(Number(t));return}if(e.tab){r.onTab?.();return}if(t===" "&&r.isMulti()){r.onSpace();return}if(t&&!e.ctrl&&!e.meta){r.onType(t);return}return}}),null}export{N as a,W as b,L as c,q as d};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as C}from"./chunk-DNNZ353O.js";import{b as h,c as f}from"./chunk-NVGBE2DR.js";import{a as L}from"./chunk-LEA6IHXC.js";import{a as B,c as A}from"./chunk-L4JIMNKW.js";import{e as N}from"./chunk-MBXWXBDM.js";import{a as k,d as O,f as I}from"./chunk-5YPBPZUR.js";import{existsSync as G,mkdirSync as X,readFileSync as H,writeFileSync as V}from"fs";import{basename as Z,extname as T,join as Y}from"path";var $=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function U(e){return typeof e=="string"&&e!=="."&&e!==".."&&$.test(e)}function w(e){if(!U(e))throw new Error(`unsafe logical_id: ${JSON.stringify(e)} \u2014 must match ${String($)} (no path separators)`)}import{extname as J}from"path";var D=[{kind:"text",media_type:"text/plain",extensions:[".txt"],cite:"verbatim",maxBytes:2e6},{kind:"markdown",media_type:"text/markdown",extensions:[".md",".markdown"],cite:"verbatim",maxBytes:2e6},{kind:"image",media_type:"image/png",extensions:[".png"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/jpeg",extensions:[".jpg",".jpeg"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/webp",extensions:[".webp"],cite:"anchor-only",maxBytes:5e6},{kind:"text",media_type:"application/json",extensions:[".json"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/yaml",extensions:[".yaml",".yml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/toml",extensions:[".toml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/xml",extensions:[".xml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"text/plain",extensions:[".log"],cite:"verbatim",maxBytes:2e6},{kind:"pdf",media_type:"application/pdf",extensions:[".pdf"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.subarray(0,5).toString("latin1")==="%PDF-"}];function M(e){let n=J(e).toLowerCase(),t=D.find(s=>s.extensions.includes(n));return t?{ok:!0,media:t}:{ok:!1,code:"UNSUPPORTED_MEDIA",allowlist:D.flatMap(s=>s.extensions)}}function P(e){let n=Object.entries(e).map(([t,s])=>`${JSON.stringify(t)}: ${JSON.stringify(s)}`).join(", ");return Buffer.byteLength(`{${n}}`,"utf8")}var F=2e3;function q(e){let t=Z(e,T(e)).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[^a-z0-9]+/,"");return w(t),t}function fe(e){let n=/^(.*?)[-_.]?v?\d+$/.exec(e);if(!n)return null;let t=(n[1]??"").replace(/[-_.]+$/,"");return t.length>0&&t!==e?t:null}function W(e){let n=Y(e,"meta.json");G(n)||(X(e,{recursive:!0}),V(n,JSON.stringify({schema:k,canonicalizer:"v1"},null,2)+`
3
- `))}async function ue(e){let{contextDir:n,filePath:t,asId:s,confirmSameSource:v,pdfConverter:E}=e;W(n);let a=H(t),r=M(t);if(!r.ok)throw new Error(`UNSUPPORTED_MEDIA: ${T(t)} \u2014 supported: ${r.allowlist.join(" ")}`);if(a.byteLength>r.media.maxBytes)throw new Error(`FILE_TOO_LARGE: ${a.byteLength} bytes > ${r.media.maxBytes} cap for ${r.media.media_type}`);if(r.media.sniff&&!r.media.sniff(a))throw new Error(`MEDIA_SNIFF_MISMATCH: ${t} does not look like ${r.media.media_type}`);let u=[];if(r.media.cite==="verbatim"&&r.media.kind!=="pdf"){try{new TextDecoder("utf-8",{fatal:!0}).decode(a)}catch{throw new Error(`ENCODING_UNSUPPORTED: ${t} is not valid UTF-8 \u2014 re-save it as UTF-8 and re-ingest`)}a.toString("utf8").split(`
4
- `).some(i=>i.length>F)&&u.push(`long line detected (> ${F} chars) \u2014 anchors lose granularity; consider pretty-printing before ingest`)}let d=h(a),o;s!==void 0?(w(s),o=s):o=q(t);let p=L(n),m=p.heads.get(o),j=m!=null?p.getNode(m)?.content:void 0;if(m!=null&&j?.blob===d)return{status:"unchanged",source_id:o,cid:m,blob:d};if(m==null){for(let[i,l]of p.heads.entries())if(!(i===o||l==null)&&p.getNode(l)?.content.blob===d){if(v&&await v(i))return{status:"unchanged",source_id:i,cid:l,blob:d};break}}let S={},g,c=null,_=null;if(r.media.kind==="pdf"){if(!E)throw new Error("PDF_CONVERTER_MISSING: pdf ingestion requires the converter \u2014 the command layer wires it");let i=await E(a);c=Buffer.from(i.projection,"utf8");let l=P({source_id:o,source_cid:"sha256:".padEnd(71,"0"),doc_kind:"pdf",numbered_text:C(c)});if(l>4e5)throw new Error(`PROJECTION_TOO_LARGE: serialized source payload ${l} bytes > ${4e5} \u2014 split the document and re-ingest`);S={text_blob:h(c),...i.inventory.length>0?{images:i.inventory}:{},converter:i.converter},_=i.blobs,g={pages:i.pages,delivered:i.delivered.length,omitted:i.inventory.length-i.delivered.length}}if(f(n,a),c!==null&&f(n,c),_!==null)for(let[,i]of _)f(n,i);let y=A(o,d),x=I("source",y);if(x.length>0)throw new Error(`source node fails ${x[0].code}: ${x[0].detail}`);let b=B("source",y);return N(n,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:b,label:O.SOURCE,content:y}],edges:[],review:[],supersessions:[],media:{[o]:{format:r.media.kind,media_type:r.media.media_type,anchors_supported:r.media.kind==="pdf"?["L-L","img#ref"]:r.media.cite==="verbatim"?["L-L"]:[],...S}},source_head_moves:{[o]:b}}),{status:m!=null?"versioned":"created",source_id:o,cid:b,blob:d,...u.length?{warnings:u}:{},...g?{pdf:g}:{}}}export{M as a,q as b,fe as c,ue as d};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as k}from"./chunk-NVGBE2DR.js";function C(t,n){let{width:e,height:o,channels:i}=n;if(t.length!==e*o*i)throw new Error(`appearanceSignature: buffer ${t.length} bytes does not match ${e}x${o}x${i}`);let s=9,r=8,f=new Array(s*r);for(let u=0;u<r;u++){let h=Math.floor(u*o/r),g=Math.min(o,Math.max(h+1,Math.floor((u+1)*o/r)));for(let p=0;p<s;p++){let A=Math.floor(p*e/s),d=Math.min(e,Math.max(A+1,Math.floor((p+1)*e/s))),E=0,w=0;for(let I=h;I<g;I++)for(let l=A;l<d;l++){let m=(I*e+l)*i;E+=i===1?t[m]:Math.floor((t[m]*299+t[m+1]*587+t[m+2]*114)/1e3),w+=1}f[u*s+p]=Math.floor(E/w)}}let c="",P=0,_=0;for(let u=0;u<r;u++)for(let h=0;h<s-1;h++)P=P<<1|(f[u*s+h+1]>f[u*s+h]?1:0),_+=1,_===4&&(c+=P.toString(16),P=0,_=0);return c}import{deflateSync as N}from"zlib";var G=(()=>{let t=new Uint32Array(256);for(let n=0;n<256;n++){let e=n;for(let o=0;o<8;o++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e>>>0}return t})();function Y(t){let n=4294967295;for(let e of t)n=G[(n^e)&255]^n>>>8;return(n^4294967295)>>>0}function R(t,n){let e=Buffer.alloc(4);e.writeUInt32BE(n.length);let o=Buffer.concat([Buffer.from(t,"latin1"),n]),i=Buffer.alloc(4);return i.writeUInt32BE(Y(o)),Buffer.concat([e,o,i])}var X={1:0,3:2,4:6};function F(t,n){let{width:e,height:o,channels:i}=n;if(t.byteLength!==e*o*i)throw new Error(`pngEncode: raw length ${t.byteLength} != ${e}x${o}x${i}`);let s=Buffer.alloc(13);s.writeUInt32BE(e,0),s.writeUInt32BE(o,4),s[8]=8,s[9]=X[i];let r=e*i,f=Buffer.alloc(o*(r+1));for(let c=0;c<o;c++)f[c*(r+1)]=0,t.copy(f,c*(r+1)+1,c*r,(c+1)*r);return Buffer.concat([Buffer.from([137,80,78,71,13,10,26,10]),R("IHDR",s),R("IDAT",N(f)),R("IEND",Buffer.alloc(0))])}var U=64,J=16,V=12e6,W=6e6,K=5e3,H=3e4,q="",v=class extends Error{constructor(e,o){super(`${e}: ${o}`);this.code=e}};async function z(t,n,e){let o=t.objs.has(n)?t.objs:t.commonObjs.has(n)?t.commonObjs:null;if(o)try{return o.get(n)??null}catch{return null}if(e.remainingMs<=0)return null;let i=n.startsWith("g_")?t.commonObjs:t.objs,s,r=Date.now();try{return await Promise.race([new Promise(f=>{try{i.get(n,c=>f(c??null))}catch{f(null)}}),new Promise(f=>{s=setTimeout(()=>f(null),Math.min(K,e.remainingMs))})])}finally{clearTimeout(s),e.remainingMs-=Date.now()-r}}async function Q(){let t=await import("pdfjs-dist/legacy/build/pdf.mjs");return t.default??t}async function ie(t,n){let e=await Q();q=e.version;let o={remainingMs:n?.resolveBudgetMs??H},i,s=e.getDocument({data:new Uint8Array(t),isEvalSupported:!1,verbosity:0});try{i=await s.promise}catch(r){throw r.name==="PasswordException"?new v("PDF_ENCRYPTED","password-protected \u2014 decrypt and re-ingest"):new v("PDF_UNREADABLE",String(r.message??r))}try{let r=[],f=[],c=new Map,P=[],_=new Map,u=0,h=0;for(let g=1;g<=i.numPages;g++){let p=await i.getPage(g);r.push(`[page ${g}]`);let A=await p.getTextContent(),d="",E=null;for(let l of A.items){if(typeof l!="object"||l===null||!("str"in l))continue;let m=l,x=Math.round(m.transform[5]);E!==null&&x!==E&&d.trim()!==""&&(r.push(d.trimEnd()),d=""),d!==""&&!d.endsWith(" ")&&m.str!==""&&!m.str.startsWith(" ")&&x===E&&(d+=" "),d+=m.str,h+=m.str.trim().length,E=x,m.hasEOL&&d.trim()!==""&&(r.push(d.trimEnd()),d="",E=null)}d.trim()!==""&&r.push(d.trimEnd());let w=await p.getOperatorList(),I=0;for(let l=0;l<w.fnArray.length;l++){let m=w.fnArray[l]===e.OPS.paintImageXObject,x=w.fnArray[l]===e.OPS.paintInlineImageXObject;if(!m&&!x)continue;I+=1;let B=`p${g}-${I}`,y=(j,S,O,$)=>{f.push({ref:B,page:g,media_type:"image/png",...S?{blob:S}:{},...$?{appearance:$}:{},delivery:j,...O?{duplicate_of:O}:{}}),r.push(j==="duplicate"&&O?`[img#${B}: image on page ${g} \u2014 same as img#${O}; cite img#${O}]`:`[img#${B} omitted: ${j}]`)};if(x){y("unsupported-image-kind");continue}let a=await z(p,w.argsArray[l][0],o);if(!a?.data||!a.width||!a.height){y("undecodable");continue}let T;if(a.kind===e.ImageKind.RGB_24BPP)T=3;else if(a.kind===e.ImageKind.RGBA_32BPP)T=4;else{y("unsupported-image-kind");continue}let D;try{D=F(Buffer.from(a.data.buffer,a.data.byteOffset,a.data.byteLength),{width:a.width,height:a.height,channels:T})}catch{y("undecodable");continue}let b=k(D);c.set(b,D);let M=C(Buffer.from(a.data.buffer,a.data.byteOffset,a.data.byteLength),{width:a.width,height:a.height,channels:T});if(a.width<U||a.height<U){y("below-dimension-floor",b,void 0,M);continue}let L=_.get(b);if(L!==void 0){y("duplicate",b,L,M);continue}if(D.byteLength>W){y("image-too-large",b,void 0,M);continue}if(u+D.byteLength>V){y("vision-byte-budget-reached",b,void 0,M);continue}if(P.length>=J){y("image-cap-reached",b,void 0,M);continue}_.set(b,B),u+=D.byteLength,P.push(B),f.push({ref:B,page:g,media_type:"image/png",blob:b,appearance:M,delivery:"selected"}),r.push(`[img#${B}: image on page ${g}]`)}}if(h===0&&i.numPages>0)throw new v("PDF_NO_TEXT_LAYER","no extractable text \u2014 image-only or scanned pdfs are not supported yet");return{projection:r.join(`
3
- `)+`
4
- `,inventory:f,blobs:c,delivered:P,pages:i.numPages,converter:{name:"pdfjs-dist",version:e.version,policy:"v1"}}}finally{await s.destroy().catch(()=>{})}}export{U as a,J as b,V as c,W as d,q as e,v as f,ie as g};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{existsSync as f,mkdirSync as C,readFileSync as S,readdirSync as T,renameSync as y,rmSync as m,writeFileSync as P,openSync as H,closeSync as F}from"fs";import{randomBytes as K}from"crypto";import{join as w}from"path";var d=class extends Error{constructor(t,r){super(`${t}: ${r}`);this.code=t}},D=1440*60*1e3,J=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,v=e=>w(e,"sessions"),h=(e,n)=>w(v(e),n),l=(e,n)=>w(h(e,n),"state.json"),_=(e,n)=>w(h(e,n),".lock"),N=e=>(e?.now??(()=>new Date))();function L(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return n.code==="EPERM"}}function E(e,n){let t=`${e}.tmp-${process.pid}`;P(t,n,{mode:384}),y(t,e)}function b(e,n,t,r=0){if(r>20)throw new d("SESSION_LOCKED",`${n}: lock contention did not settle`);let o=_(e,n),s=K(8).toString("hex"),a=JSON.stringify({pid:process.pid,ts:t.toISOString(),nonce:s})+`
3
- `;try{let i=H(o,"wx",384);return P(i,a),F(i),s}catch(i){if(i.code!=="EEXIST")throw i;let p=!1,u;try{let c=JSON.parse(S(o,"utf8")),O=t.getTime()-new Date(c.ts).getTime();p=!L(c.pid)||O>=D,u=c.nonce}catch{p=!0}if(!p)throw new d("SESSION_LOCKED",`${n} is held by another live process`);let g=`${o}.break-${s}`;try{y(o,g);let c;try{c=JSON.parse(S(g,"utf8"))}catch{c=null}if(c===null||c.nonce===u)m(g,{force:!0});else try{y(g,o)}catch{m(g,{force:!0})}}catch(c){if(c.code!=="ENOENT")throw c}return b(e,n,t,r+1)}}function A(e,n,t,r,o){let s=()=>{try{if(JSON.parse(S(_(e,n),"utf8")).nonce!==r)throw new d("SESSION_LOCK_LOST",`${n} lock was taken over`)}catch(i){throw i instanceof d?i:new d("SESSION_LOCK_LOST",`${n} lock file unreadable/gone`)}},a=()=>E(l(e,n),JSON.stringify(t)+`
4
- `);return{get state(){return t},isApplied:i=>t.applied_events.includes(i),markApplied(i){s(),t={...t,applied_events:[...new Set([...t.applied_events,...i])].sort()},a()},save(i){s();let{agent_state:p,pending:u,assumed:g,read_basis:c,corpus_cursor:O,expires_at:x,force:k,conv_source:I,held_receipts:R,force_scope:$}=i;t={...t,...p!==void 0?{agent_state:p}:{},...u!==void 0?{pending:u}:{},...g!==void 0?{assumed:g}:{},...c!==void 0?{read_basis:c}:{},...O!==void 0?{corpus_cursor:O}:{},...x!==void 0?{expires_at:x}:{},...k!==void 0?{force:k}:{},...I!==void 0?{conv_source:I}:{},...R!==void 0?{held_receipts:R}:{},...$!==void 0?{force_scope:$}:{}},a()},complete(){s(),m(h(e,n),{recursive:!0,force:!0})},release(){try{s(),m(_(e,n),{force:!0})}catch(i){if(i instanceof d||i.code==="ENOENT")return;throw i}}}}function X(e,n,t){if(!J.test(n.sid))throw new d("SESSION_MISSING",`bad sid ${JSON.stringify(n.sid)}`);let r=N(t);if(f(l(e,n.sid)))throw new d("SESSION_LOCKED",`${n.sid} already exists \u2014 resume it`);C(h(e,n.sid),{recursive:!0,mode:448});let o=b(e,n.sid,r),s={schema:1,applied_events:[],...n};return E(l(e,n.sid),JSON.stringify(s)+`
5
- `),A(e,n.sid,s,o,t)}function Q(e,n,t){if(!J.test(n)||!f(l(e,n)))throw new d("SESSION_MISSING",`no session ${n}`);let r=N(t),o=b(e,n,r),s=JSON.parse(S(l(e,n),"utf8"));if(new Date(s.expires_at).getTime()<=r.getTime())throw m(_(e,n),{force:!0}),new d("SESSION_EXPIRED",`${n} expired at ${s.expires_at}`);let a={...s,expires_at:new Date(r.getTime()+D).toISOString()};return E(l(e,n),JSON.stringify(a)+`
6
- `),A(e,n,a,o,t)}function z(e,n){let t=l(e,n);return f(t)?JSON.parse(S(t,"utf8")):null}function Z(e){let n=v(e);if(!f(n))return[];let t=[];for(let r of T(n)){let o=l(e,r);if(f(o))try{let s=JSON.parse(S(o,"utf8"));t.push({sid:s.sid,mode:s.mode,created_at:s.created_at,expires_at:s.expires_at,pendingCount:s.pending.questions.length+s.pending.proposals.length,verb:s.verb,use_case:s.use_case})}catch{t.push({sid:r,mode:"?",created_at:"",expires_at:"",pendingCount:0,corrupt:!0})}}return t.sort((r,o)=>r.created_at<o.created_at?-1:1)}function W(e,n){let t=N(n),r=[],o=[],s=v(e);if(!f(s))return{removed:r,skipped:o};for(let a of T(s)){if(n?.sid&&a!==n.sid)continue;let i=!1,p=!1;try{let u=JSON.parse(S(l(e,a),"utf8"));i=new Date(u.expires_at).getTime()<=t.getTime()}catch{p=!0}if(n?.sid||n?.all||i||p&&n?.all){try{let u=JSON.parse(S(_(e,a),"utf8"));if(L(u.pid)&&u.pid!==process.pid){o.push({sid:a,reason:`in use by live pid ${u.pid}`});continue}}catch{}m(h(e,a),{recursive:!0,force:!0}),r.push(a)}}return{removed:r,skipped:o}}function Y(e){return{id:e.id,text:e.question,risk:["high","med","low"].includes(e.risk)?e.risk:"med",rationale:e.rationale,options:e.options.map(n=>({label:n.label,detail:n.description??""})),recommended_index:e.recommendedOptionIndex,allow_free_text:e.allowFreeText,kind:e.kind,consequence:e.consequence,evidence_count:e.evidence_count,multi_select:e.multiSelect}}function j(e){return{id:e.id,header:e.kind??"question",question:e.text,kind:e.kind??"clarify",multiSelect:e.multi_select??!1,options:e.options.map((n,t)=>({id:`o${t}`,label:n.label,description:n.detail||void 0})),recommendedOptionIndex:e.recommended_index,risk:e.risk,rationale:e.rationale,consequence:e.consequence??"",evidence_count:e.evidence_count,allowFreeText:e.allow_free_text}}function q(e,n){e.save({agent_state:n.agent_state,pending:{questions:n.pending.questions.map(j),proposals:n.pending.proposals??[]},assumed:n.assumed.map(t=>({questionId:t.question_id,optionId:t.option_id,flagged:!0,eventId:`assumed:${n.sid}:${t.question_id}`}))}),e.release()}function ee(e,n,t){let r=Q(e,n),o=[];for(let[a,i]of Object.entries(r.state.read_basis))(t.heads.get(a)??null)!==i&&o.push(a);let s=r.state.pending.questions.filter(a=>!r.isApplied(`resolveq:${n}:${a.id}`)&&!r.isApplied(`assumed:${n}:${a.id}`));return{handle:r,represent:[...r.state.pending.proposals],questions:s,staleBasis:o}}export{d as a,X as b,z as c,Z as d,W as e,Y as f,q as g,ee as h};
@@ -1,12 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var v=()=>!!process.env.KANE_DEV_MODE,r=[],g=!1,m=null,a=null,d=null,s=null,u=[];function h(e){if(s=e,e&&u.length>0){let t=u;u=[];for(let n of t)try{e.log(n.level,n.event,n.message,n.context)}catch{}}}function y(e,t,n,o){if(s){try{s.log(e,t,n,o)}catch{}return}u.push({level:e,event:t,message:n,context:o})}function R(){return s}function w(){return g}function E(e,t){r=r.filter(n=>n.name!==e),r.push({name:e,fn:t})}function $(e){r=r.filter(t=>t.name!==e)}function L(e,t){let n=r.find(i=>i.name===e);if(!n)return;r=r.filter(i=>i.name!==e);let o=!0;try{n.fn()}catch(i){o=!1,process.stderr.write(`[exit-manager] cleanup(${e}) failed: ${i instanceof Error?i.message:String(i)}
3
- `)}t&&o&&v()&&process.stderr.write(`[exit-manager] cleanup(${e}): ${t}
4
- `)}function f(e,t,n=!1,o){if(g){process.exit(m??e);return}if(g=!0,m=e,n&&s)try{s.log("error","CRASH",t),s.shutdownSync()}catch{}let i=[...r].reverse(),l=[];for(let c of i)try{c.fn(),l.push(c.name)}catch(p){process.stderr.write(`[exit-manager] cleanup(${c.name}) failed: ${p instanceof Error?p.message:String(p)}
5
- `)}if(r=[],v()&&(process.stderr.write(`[exit-manager] shutdown(${e}): ${t}
6
- `),l.length>0&&process.stderr.write(`[exit-manager] cleaned up: ${l.join(", ")}
7
- `)),n){if(d)try{d()}catch{}e===130||e===143||(process.stderr.write(`
8
- kane-cli crashed: ${t}
9
- `+(l.length>0?`Resources cleaned up (${l.join(", ")}).
10
- `:"")),o&&v()?process.stderr.write(`${o}
11
- `):process.stderr.write(`(re-run with KANE_DEV_MODE=1 for the full stack)
12
- `)),process.exit(e);return}if(a&&!n){a();return}process.exit(e)}function S(e){a=e}function k(e){d=e}var x=!1;function I(){x||(x=!0,process.on("SIGINT",()=>{f(130,"Received SIGINT",!0)}),process.on("SIGTERM",()=>{f(143,"Received SIGTERM",!0)}),process.on("uncaughtException",e=>{f(1,`Uncaught exception: ${e.name}: ${e.message}`,!0,e.stack)}),process.on("unhandledRejection",e=>{f(1,`Unhandled rejection: ${String(e)}`,!0,e instanceof Error?e.stack:void 0)}))}function D(){r=[],g=!1,m=null,a=null,d=null,s=null,u=[],x=!1}export{h as a,y as b,R as c,w as d,E as e,$ as f,L as g,f as h,S as i,k as j,I as k,D as l};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as G,c as P,e as J,h as q,i as z,j as Q,m as V,n as X,o as T}from"./chunk-RKWJG3WW.js";import{e as U}from"./chunk-EHN5HTUD.js";import{copyFileSync as ae,cpSync as le,existsSync as w,mkdirSync as ue,readFileSync as je,readdirSync as pe,rmSync as Fe,writeFileSync as Oe}from"fs";import{dirname as Te,isAbsolute as _e,join as R,relative as Le,resolve as Ae}from"path";import{writeFileSync as ge,mkdirSync as Se,readFileSync as Re}from"fs";import{dirname as Ie,basename as Y}from"path";function ee(e){let t=e.outPath??P(e.sourcePath);Se(Ie(t),{recursive:!0});let r=[];r.push("---"),r.push(`test: ../${Y(e.sourcePath)}`),r.push(`status: ${e.overallStatus}`),r.push(`started: ${e.startedISO}`),r.push(`duration_s: ${e.durationS}`),r.push(`session_id: ${e.sessionId}`),r.push("---",""),r.push(`# ${e.title??Y(e.sourcePath)} \u2014 Result`,"");for(let l=0;l<e.rootSteps.length;l++){let a=e.rootSteps[l],i=e.outcomes.find(p=>p.rootStepIndex===l+1);if(r.push(xe(a,i)),i?.stepMd5&&r.push(`md5: ${i.stepMd5}`),i?.status==="failed"&&i.reason&&r.push(`Reason: ${i.reason}`),i?.softFailures?.length)for(let p of i.softFailures){let o=p.reason?`: ${p.reason}`:"";r.push(`\u26A0 optional sub-step ${p.subStepIndex} failed${o}`)}a.body.kind==="objective"&&i?.status!=="skipped"&&r.push(a.body.text),r.push("")}return ge(t,r.join(`
3
- `),"utf8"),t}function xe(e,t){if(!t)return`## ${e.heading} (no outcome)`;let r=t.duration_s!=null?`${t.duration_s}s`:"\u2014";if(t.status==="skipped")return`## ${e.heading} \u23ED skipped`;let l=t.softFailed?" (optional)":"";if(t.refKind&&t.status==="passed"){let a=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2713 passed (via @${t.refKind} ${t.refLabel} \u2014 ${t.inlinedCount} inlined steps, ${r}${a})`}if(t.refKind&&t.status==="failed"){let a=t.failedSubStepIndex&&t.failedSubStepIndex.length>0?` \u2014 at sub-step ${t.failedSubStepIndex.join(" \u2192 sub-step ")}`:"",i=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2717 failed${l} (via @${t.refKind} ${t.refLabel}${a}, ${r}${i})`}return t.status==="passed"?`## ${e.heading} \u2713 passed (${r})`:`## ${e.heading} \u2717 failed${l} (${r})`}var ye=/^##\s+(.+?)\s+(✓ passed|✗ failed(?:\s+\(optional\))?|⏭ skipped)(?:\s+\((.*)\))?\s*$/,be=/via\s+@\w+\s+(\S+).*?(?:→\s+(\S+))?\s*$/,ke=/^md5:\s+([a-f0-9]{32})\s*$/;function Z(e,t){for(let r=t;r<e.length&&!/^##\s/.test(e[r]);r++){if(e[r].trim()==="")continue;let l=ke.exec(e[r]);return l?l[1]:null}return null}function $(e){let r=Re(e,"utf8").split(`
4
- `),l="passed";if(r[0]?.trim()==="---")for(let i=1;i<r.length&&r[i].trim()!=="---";i++){let p=/^status:\s+(passed|failed|interrupted)\s*$/.exec(r[i]);p&&(l=p[1])}let a=[];for(let i=0;i<r.length;i++){let p=ye.exec(r[i]);if(!p)continue;let o=p[1],s=p[2],c=p[3]??"",m=s.startsWith("\u2713")?"passed":s.startsWith("\u23ED")?"skipped":"failed";if(/via\s+@/.test(c)){let f=be.exec(c),b=f?.[1]??"",g=f?.[2]??null;a.push({kind:"import",heading:o,status:m,md5:Z(r,i+1),importPath:b,helperResultRelPath:g})}else a.push({kind:"objective",heading:o,status:m,md5:Z(r,i+1)})}return{overallStatus:l,steps:a}}import{copyFileSync as te,existsSync as N,mkdirSync as ve,writeFileSync as se,promises as Be}from"fs";import{join as D,dirname as re,basename as Pe}from"path";async function ne(e){for(let t=0;t<e.totalRunDirs;t++){let r=e.runIndex+t,l=D(e.sessionDir,"runs",String(r)),a=D(e.stagingStepDir,"flows",String(t));ve(a,{recursive:!0});let i=D(a,"actions.ndjson");if(e.packTestDir){let s=D(e.packTestDir,"logs",`${r}-actions.ndjson`);if(N(s)){te(s,i);continue}let c=re(re(e.packTestDir)),m=Pe(e.packTestDir),I=N(c)?await U(c,`tests/${m}/logs/${r}-actions.ndjson`).catch(()=>null):null;se(i,I??"");continue}let p=[D(l,"run-test","actions.ndjson"),D(l,"actions.ndjson")],o=!1;for(let s of p)if(N(s)){te(s,i),o=!0;break}o||se(i,"")}}import{existsSync as K}from"fs";import{dirname as we,join as j,basename as H}from"path";function Ye(e){let t=[],r=new Set,l=new Map;function a(s){if(l.has(s))return l.get(s);let c=P(s),m=K(c)?$(c):null;return l.set(s,m),m}let i=new Map;function p(s){if(i.has(s))return i.get(s);let c=j(s,"Result.md"),m=K(c)?$(c):null;return i.set(s,m),m}function o(s){for(let c=1;c<s.trace.length;c++){let m=s.trace[c-1],I=a(m.file);if(!I)continue;let f=I.steps[m.stepIndex-1];if(f){if(f.kind!=="import")return{kind:"author",reason:"structure-mismatch"};if(H(f.importPath)!==H(s.trace[c].file))return{kind:"author",reason:"structure-mismatch"};if(f.md5!=null&&f.md5!==m.rowMd5)return{kind:"author",reason:"structure-mismatch"}}}return null}for(let s of e.steps){let c=s.trace[s.trace.length-1].stepIndex,m=r.has(s.owningFile);for(let g=0;g<s.trace.length-1&&!m;g++)r.has(s.trace[g].file)&&(m=!0);if(m){t.push({kind:"author",reason:a(s.owningFile)===null?"no-result-md":"downstream-of-divergence"});continue}let I=o(s);if(I){t.push(I);for(let g=0;g<s.trace.length;g++)r.add(s.trace[g].file);continue}let f=a(s.owningFile),b;if(f===null&&s.trace.length>1){let g=W(s.trace);b=ie(s,p(g),c,g)}else b=ie(s,f,c);if(t.push(b),b.kind==="author"){r.add(s.owningFile);for(let g=0;g<s.trace.length-1;g++)r.add(s.trace[g].file)}}return t}function ie(e,t,r,l=null){if(!t)return{kind:"author",reason:"no-result-md"};let a=t.steps[r-1];if(!a)return{kind:"author",reason:"no-result-md"};if(a.kind!=="objective")return{kind:"author",reason:"structure-mismatch"};if(a.status!=="passed")return{kind:"author",reason:"recorded-failed"};let i=T(e);if(i!==a.md5)return{kind:"author",reason:"md5-mismatch"};let p=l===null?Q(e.owningFile,r,i.slice(0,8)):j(l,".internal","steps",`${r}-${i.slice(0,8)}`),o=j(p,"flows","0","actions.ndjson");return K(o)?{kind:"replay",recordingDir:p}:{kind:"author",reason:"missing-recording"}}function Ze(e){return e.some(t=>t.kind==="author")}function et(e){for(let t=0;t<e.length;t++)if(e[t].kind==="author")return t;return e.length}function W(e){let t=i=>{let p=H(i);return p.endsWith("_test.md")?p.slice(0,-8):p.endsWith(".md")?p.slice(0,-3):p},r=t(e[0].file),l=t(e[e.length-1].file),a=e.slice(0,-1).map(i=>String(i.stepIndex));return j(we(e[e.length-1].file),`helper-output-${l}-${r}-${a.join("-")}`)}function tt(e){return j(e.recordingDir,"flows","0","actions.ndjson")}import{existsSync as oe,mkdirSync as $e,rmSync as De,cpSync as Me}from"fs";function de(e,t){oe(e)&&(oe(t)&&De(t,{recursive:!0,force:!0}),$e(t,{recursive:!0}),Me(e,t,{recursive:!0}))}async function mt(e){let t=new Map;for(let o of e.stepRunRecords)t.set(o.testmdStepIndex,o);let r=e.authoredFlatIdx??new Set,l=[],a=[],i=new Map,p=o=>{if(i.has(o))return i.get(o);let s=R(o,"Result.md"),c=w(s)?$(s):null;return i.set(o,c),c};for(let o of e.resolvedTest.unitFiles){let s=o.file===e.resolvedTest.rootPath,c=V(o.file,je(o.file,"utf8")),m=P(o.file),I=w(m)?$(m):null,f=[],b=[],g=[],M=[];if(!s)for(let d of e.resolvedTest.steps){if(d.owningFile!==o.file||d.trace.length<2)continue;let n=W(d.trace);M.includes(n)||M.push(n)}let F=d=>{if(I!==null)return null;for(let n of M){let v=p(n)?.steps[d-1];if(v)return{row:v,dir:n}}return null},C=[],_=!1,B=!1,L=!1,A=!1;for(let d of c.steps){let n=d.index,u=I?.steps[n-1];if(d.body.kind==="objective"){let h=e.resolvedTest.steps.filter(S=>S.owningFile===o.file&&S.trace[S.trace.length-1].stepIndex===n&&t.has(S.flatIndex)),x=h.length>0?h[h.length-1]:null;if(x){_=!0,r.has(x.flatIndex)&&(B=!0);let S=T(x),y;s?y=e.outcomes.find(he=>he.rootStepIndex===n)??{rootStepIndex:n,status:"skipped"}:y={rootStepIndex:n,status:ce(x,e.outcomes)},y.status==="failed"&&(L=!0),y.stepMd5==null&&(y.stepMd5=S),f.push(y),b.push({stepIndex:n,md5:S,rec:t.get(x.flatIndex)}),(!u||u.kind!=="objective"||u.status!==y.status||y.status==="passed"&&u.md5!==S)&&(A=!0)}else if(u&&u.kind==="objective")f.push({rootStepIndex:n,status:u.status,...u.md5?{stepMd5:u.md5}:{}}),g.push(n);else if(!s&&F(n)?.row.kind==="objective"){let S=F(n),y=S.row;f.push({rootStepIndex:n,status:y.status,...y.md5?{stepMd5:y.md5}:{}}),C.push({psIdx:n,dir:S.dir})}else s?f.push(e.outcomes.find(S=>S.rootStepIndex===n)??{rootStepIndex:n,status:"skipped"}):f.push({rootStepIndex:n,status:"skipped"});continue}let v=_e(d.body.path)?d.body.path:Ae(Te(o.file),d.body.path),O=X({path:d.body.path,bindings:d.body.bindings,optional:d.optional??!1}),me=Le(G(o.file),P(v)),E=e.resolvedTest.steps.filter(h=>h.trace.some((x,S)=>S<h.trace.length-1&&x.file===o.file&&x.stepIndex===n)&&t.has(h.flatIndex));if(E.length>0){_=!0;let h;if(s)h=e.outcomes.find(x=>x.rootStepIndex===n)??{rootStepIndex:n,status:"passed",refKind:"import",refLabel:d.body.path};else{let x=E.some(S=>ce(S,e.outcomes)==="failed");h={rootStepIndex:n,status:x?"failed":"passed",refKind:"import",refLabel:d.body.path,inlinedCount:E.length}}h.status==="failed"&&(L=!0),h.stepMd5==null&&(h.stepMd5=O),h.helperResultRelPath==null&&(h.helperResultRelPath=me),f.push(h),(!u||u.kind!=="import"||u.status!==h.status||u.md5!==O)&&(A=!0)}else if(u&&u.kind==="import")f.push({rootStepIndex:n,status:u.status,refKind:"import",refLabel:u.importPath,...u.md5?{stepMd5:u.md5}:{},...u.helperResultRelPath?{helperResultRelPath:u.helperResultRelPath}:{}});else if(!s&&F(n)?.row.kind==="import"){let h=F(n).row;f.push({rootStepIndex:n,status:h.status,refKind:"import",refLabel:d.body.path})}else s?f.push(e.outcomes.find(h=>h.rootStepIndex===n)??{rootStepIndex:n,status:"skipped",refKind:"import",refLabel:d.body.path}):f.push({rootStepIndex:n,status:"skipped",refKind:"import",refLabel:d.body.path})}if(!(s||_&&(B||L||I===null||A)))continue;l.push(o.file);let k=q(o.file);ue(R(k,".internal"),{recursive:!0});for(let d of b){let n=R(k,".internal","steps",`${d.stepIndex}-${d.md5.slice(0,8)}`);ue(n,{recursive:!0}),await ne({sessionDir:e.sessionDir,runIndex:d.rec.runIndex,totalRunDirs:d.rec.totalRunDirs,stagingStepDir:n,packTestDir:e.packTestDir})}if(g.length>0){let d=z(o.file);if(w(d))for(let n of pe(d)){let u=parseInt(n.split("-")[0]??"",10);!Number.isNaN(u)&&g.includes(u)&&le(R(d,n),R(k,".internal","steps",n),{recursive:!0})}}for(let d of C){let n=R(d.dir,".internal","steps");if(w(n))for(let u of pe(n))parseInt(u.split("-")[0]??"",10)===d.psIdx&&le(R(n,u),R(k,".internal","steps",u),{recursive:!0})}let fe=f.some(d=>d.status==="failed");if(ee({sourcePath:o.file,title:c.title,rootSteps:c.steps,outcomes:f,overallStatus:s?e.overallStatus:fe?"failed":"passed",startedISO:e.startedISO,durationS:s?e.durationS:0,sessionId:e.sessionId,outPath:R(k,"Result.md")}),s){let d={};e.commitId&&(d.commit_id=e.commitId),e.tmsIds.testId&&(d.test_id=e.tmsIds.testId),e.tmsIds.testcaseId&&(d.testcase_id=e.tmsIds.testcaseId),e.tmsIds.projectId&&(d.project_id=e.tmsIds.projectId),e.tmsIds.folderId&&(d.folder_id=e.tmsIds.folderId),e.tmsIds.orgId&&(d.org_id=e.tmsIds.orgId),e.tmsIds.sessionName&&(d.session_name=e.tmsIds.sessionName),Oe(R(k,".internal","meta.json"),JSON.stringify(d,null,2)+`
5
- `,"utf8");let n=R(e.sessionDir,"execution.json");if(w(n))try{ae(n,R(k,".internal","execution.json"))}catch{}if(e.codeExportDir){let u=e.codeExportLanguage??"python",v=R(k,`playwright-${u}-code`);try{de(e.codeExportDir,v)}catch(O){process.stderr.write(`warn: codegen copy failed: ${O.message}
6
- `)}}}else if(o.kind==="test"){let d=J(o.file);if(w(d))try{ae(d,R(k,".internal","meta.json"))}catch{}}!s&&M.length>0&&f.every(n=>n.status!=="skipped")&&a.push({unitFile:o.file,dirs:M.filter(n=>w(n))})}return{changedUnitFiles:l,legacySweep:a}}function ht(e){for(let t of e)try{Fe(t,{recursive:!0,force:!0})}catch{}}function ce(e,t){let r=e.trace[0].stepIndex,l=t.find(o=>o.rootStepIndex===r);if(!l)return"skipped";if(l.status==="passed")return"passed";if(l.status==="skipped")return"skipped";let a=e.trace.slice(1).map(o=>o.stepIndex),i=l.failedSubStepIndex??[],p=Math.min(a.length,i.length);for(let o=0;o<p;o++)if(a[o]!==i[o])return a[o]<i[o]?"passed":"skipped";return a.length===i.length?"failed":a.length<i.length?"passed":"skipped"}export{ee as a,Ye as b,Ze as c,et as d,tt as e,de as f,mt as g,ht as h};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as k}from"./chunk-3YI4QRXF.js";import{y as u}from"./chunk-VCYVSKPM.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as m,b as s,k as b}from"./chunk-C44QQJR4.js";import{e as p}from"./chunk-UR6MHSHU.js";var g=p(f(),1),T=5;function _({thinking:t,expanded:e,thinkingDone:o,maxLines:i=T}){if(!e)return(0,g.jsxs)(m,{paddingX:1,children:[(0,g.jsx)(s,{color:u.dim,children:o?"\u2237 thinking complete ":"\u2237 thinking\u2026 "}),(0,g.jsx)(s,{color:u.muted,children:o?"(ctrl+t to view)":"(ctrl+t to show)"})]});let a=t.split(`
3
- `),n=Math.max(0,a.length-i),d=n>0?a.slice(-i).join(`
4
- `):t;return(0,g.jsxs)(k,{variant:"default",paddingX:1,children:[n>0&&(0,g.jsxs)(s,{color:u.muted,children:["\u22EE (",n," earlier line",n===1?"":"s"," hidden)"]}),(0,g.jsx)(s,{color:u.dim,children:d}),o&&(0,g.jsx)(s,{color:u.muted,children:"\u2014 thinking complete"})]})}function B(t){let e=t;return e=e.replace(/@TS\{([^}]+)\}/g,"@S{$1}"),e=e.replace(/@TS-(\d+)/g,(o,i)=>`@S${parseInt(i,10)}.C1`),e=e.replace(/@TS(\d+)/g,(o,i)=>`@S${parseInt(i,10)}`),e=e.replace(/\\n/g,`
5
- `),e}var c=p(f(),1),S=t=>t!==void 0&&/[A-Za-z0-9]/.test(t);function x(t){let e=[],o="",i=()=>{o&&(e.push({text:o}),o="")},a=(d,l,r)=>(d===0||!S(t[d-1]))&&(l+r>=t.length||!S(t[l+r])),n=0;for(;n<t.length;){let d=t.slice(n,n+2),l=t[n];if(d==="**"||d==="__"){let r=t.indexOf(d,n+2);if(r!==-1&&r>n+2&&(d==="**"||a(n,r,2))){i(),e.push({text:t.slice(n+2,r),bold:!0}),n=r+2;continue}}if(l==="`"){let r=t.indexOf("`",n+1);if(r!==-1&&r>n+1){i(),e.push({text:t.slice(n+1,r),code:!0}),n=r+1;continue}}if(l==="*"||l==="_"){let r=t.indexOf(l,n+1);if(r!==-1&&r>n+1&&(l==="*"||a(n,r,1))){i(),e.push({text:t.slice(n+1,r),italic:!0}),n=r+1;continue}}o+=l,n+=1}return i(),e.length===0&&e.push({text:""}),e}function h(t){return t.map((e,o)=>(0,c.jsx)(s,{bold:e.bold,italic:e.italic,color:e.code?u.dim:void 0,children:e.text},o))}function R(t){return t.split(`
6
- `).map(e=>{if(e.trim()==="")return{kind:"blank"};let o=e.match(/^\s*[-*+]\s+(.*)$/);if(o)return{kind:"bullet",segs:x(o[1])};let i=e.match(/^\s*(\d+)\.\s+(.*)$/);if(i)return{kind:"numbered",n:i[1],segs:x(i[2])};let a=e.match(/^#{1,6}\s+(.*)$/);return a?{kind:"heading",segs:x(a[1])}:{kind:"para",segs:x(e)}})}function I(t,e,o=""){switch(t.kind){case"blank":return(0,c.jsx)(s,{children:o||" "},e);case"heading":return(0,c.jsxs)(s,{bold:!0,children:[o,h(t.segs)]},e);case"bullet":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,"\u2022 ",h(t.segs)]})},e);case"numbered":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,`${t.n}. `,h(t.segs)]})},e);default:return(0,c.jsxs)(s,{children:[o,h(t.segs)]},e)}}function C({text:t}){let e=R(B(t)),{stdout:o}=b(),i=o?.columns??80;return(0,c.jsxs)(m,{marginBottom:1,children:[(0,c.jsx)(m,{width:2,flexShrink:0,children:(0,c.jsx)(s,{color:u.generateAccent,children:"\u2503"})}),(0,c.jsx)(m,{flexDirection:"column",width:i-2,children:e.map((a,n)=>I(a,n))})]})}export{C as a,_ as b};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{homedir as a}from"os";import{join as t}from"path";var m="0.6.9",d="kane-cli",e=t(a(),".testmuai","kaneai"),g=t(e,"profiles"),h=t(e,"tui-config.json"),_=t(e,"media"),A="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",x=`https://registry.npmjs.org/${n}`,r="kane-cli",b=[{dir:t(a(),".claude","skills",r),agent:"Claude Code"},{dir:t(a(),".agents","skills",r),agent:"Codex CLI"},{dir:t(a(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",U="https://kaneai-playground.lambdatest.io",R=9222,I=9230,E=t(e,"chrome-profiles"),o=t(e,"hints"),C=t(o,"state.json");function T(s){return t(o,`catalog-${s}.json`)}var c="127.0.0.1",S=18392,N=18400,i="/callback";function P(s){return`http://${c}:${s}${i}`}var B="KANE CLI",O="*",f={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server",evidenceViewerUrl:"https://evidence.lambdatest.com",mediaArtefactsHost:"prod-mobile-artefacts.lambdatest.com"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server",evidenceViewerUrl:"https://stage-evidence.lambdatestinternal.com",mediaArtefactsHost:"stage-mobile-artefacts.lambdatestinternal.com"}},k={orange:"#ff9500",generateAccent:"#0d9488",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,e as c,h as d,_ as e,A as f,L as g,n as h,b as i,u as j,U as k,R as l,I as m,E as n,C as o,T as p,c as q,S as r,N as s,i as t,P as u,B as v,O as w,f as x,k as y};