@testmuai/kane-cli 0.6.10 → 0.6.11

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 (154) hide show
  1. package/dist/ChatSurface-TZ554O4U.js +8 -0
  2. package/dist/{ChromeProfilePicker-IDKFTIHW.js → ChromeProfilePicker-54CAJDUF.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-SZOU5FGZ.js → CliFeedbackPrompt-TCAH4AHL.js} +1 -1
  4. package/dist/{CliUploadProgress-W2FC33Q4.js → CliUploadProgress-UURZ63VQ.js} +1 -1
  5. package/dist/{ConfigView-JB2NSZ2N.js → ConfigView-5QGB7MUS.js} +1 -1
  6. package/dist/{EvidenceViewOffer-5YST67KY.js → EvidenceViewOffer-SSAM4RRP.js} +1 -1
  7. package/dist/{FolderPicker-SPNZESAR.js → FolderPicker-Y5MAYFIJ.js} +1 -1
  8. package/dist/{HelpView-XBDXXHFB.js → HelpView-S3GJGSCE.js} +1 -1
  9. package/dist/{InfoBox-2T7GYSFT.js → InfoBox-LYTNNMVJ.js} +1 -1
  10. package/dist/{LinksBox-2NNZZDQT.js → LinksBox-5MSEKNSV.js} +1 -1
  11. package/dist/{ProfilesView-KJZVGU5B.js → ProfilesView-LTHE5UIO.js} +1 -1
  12. package/dist/{ProjectPicker-AUTZNEPE.js → ProjectPicker-XMXIGHSE.js} +1 -1
  13. package/dist/{SaveSessionPrompt-LHLSJQSQ.js → SaveSessionPrompt-VQDEA4WA.js} +1 -1
  14. package/dist/SingleShotApp-A6PCNPLM.js +2 -0
  15. package/dist/{SummaryBox-5G7WULUN.js → SummaryBox-WWF3G263.js} +1 -1
  16. package/dist/TestMdRunView-MQ7ZPFN2.js +2 -0
  17. package/dist/{WhoamiView-XNWBDMQR.js → WhoamiView-PDURYP7E.js} +1 -1
  18. package/dist/auth-I4RB4KO3.js +2 -0
  19. package/dist/{bind-FEOGBJ2O.js → bind-QJT726NE.js} +2 -2
  20. package/dist/{bootstrap-T6DSUI34.js → bootstrap-566PPFCC.js} +1 -1
  21. package/dist/{bridge-WMGH3O3B.js → bridge-QCMEOQDD.js} +1 -1
  22. package/dist/{changelog-AGFDNTTW.js → changelog-OKYH4F7I.js} +1 -1
  23. package/dist/{chat-committer-4ENYH3RC.js → chat-committer-OS7ULZMH.js} +1 -1
  24. package/dist/chat-controller-QLORQWJZ.js +2 -0
  25. package/dist/{chunk-FYDBD7Q4.js → chunk-2WKX3RMA.js} +1 -1
  26. package/dist/{chunk-6JTEWZ75.js → chunk-3AZTXJY4.js} +1 -1
  27. package/dist/{chunk-SKRZN25J.js → chunk-3RZ63RBO.js} +1 -1
  28. package/dist/{chunk-5F7PU5AJ.js → chunk-4CJ55EUY.js} +1 -1
  29. package/dist/{chunk-5Z7GAIPP.js → chunk-54IB6CXK.js} +2 -2
  30. package/dist/{chunk-JHPZXF77.js → chunk-54VQ46U2.js} +2 -2
  31. package/dist/{chunk-KK7DYHK6.js → chunk-55Y65VPA.js} +1 -1
  32. package/dist/{chunk-L4JIMNKW.js → chunk-6HYW5RFX.js} +1 -1
  33. package/dist/{chunk-A46NBRAP.js → chunk-6W6AIDLJ.js} +1 -1
  34. package/dist/{chunk-XY5KWIRF.js → chunk-73OQDAXF.js} +1 -1
  35. package/dist/{chunk-SDRFTIRU.js → chunk-7E24OCGX.js} +1 -1
  36. package/dist/{chunk-W54W762O.js → chunk-7MRBMDZ5.js} +1 -1
  37. package/dist/{chunk-76I6NJBX.js → chunk-7NLQ3QQD.js} +1 -1
  38. package/dist/chunk-7YPK6EDR.js +4 -0
  39. package/dist/{chunk-WSZ7IENQ.js → chunk-DSOA6L73.js} +3 -3
  40. package/dist/{chunk-6CGNLFSN.js → chunk-EAUUULJQ.js} +1 -1
  41. package/dist/{chunk-QPT4ERGK.js → chunk-F7WKDMX7.js} +1 -1
  42. package/dist/{chunk-7Z64BL5D.js → chunk-FCHTL74E.js} +1 -1
  43. package/dist/{chunk-OSALXGD4.js → chunk-FMR2KPSK.js} +1 -1
  44. package/dist/{chunk-RGDQMKNJ.js → chunk-FRBYGSGJ.js} +1 -1
  45. package/dist/{chunk-LPBAQQ7E.js → chunk-FSB3FTIQ.js} +1 -1
  46. package/dist/{chunk-AYDUHTPA.js → chunk-GIMTSDNC.js} +1 -1
  47. package/dist/{chunk-SACSQY3Q.js → chunk-GLA6QL3T.js} +1 -1
  48. package/dist/{chunk-TLL7KFLY.js → chunk-H2W2UNTN.js} +1 -1
  49. package/dist/{chunk-WV42KKEU.js → chunk-HLRLP6TQ.js} +1 -1
  50. package/dist/{chunk-6ZJ7ZFEX.js → chunk-HMM5FJJO.js} +1 -1
  51. package/dist/{chunk-GWJ76BLF.js → chunk-HOQEMPMQ.js} +2 -2
  52. package/dist/{chunk-2H3XNXL3.js → chunk-ICGHBZFZ.js} +1 -1
  53. package/dist/{chunk-7C6G4V43.js → chunk-IQODWB32.js} +1 -1
  54. package/dist/{chunk-MBXWXBDM.js → chunk-J2KSZUOO.js} +1 -1
  55. package/dist/{chunk-OESHJ4J2.js → chunk-JXKRO2ZJ.js} +2 -2
  56. package/dist/{chunk-RH4GCEFX.js → chunk-KHJXOFDM.js} +1 -1
  57. package/dist/chunk-KHQHVSZ6.js +5 -0
  58. package/dist/{chunk-ECFOND7B.js → chunk-KSZ72BSC.js} +1 -1
  59. package/dist/{chunk-TW3K2DKB.js → chunk-KXUSG5ZI.js} +1 -1
  60. package/dist/{chunk-YJIESLN6.js → chunk-LHDNJJGE.js} +1 -1
  61. package/dist/{chunk-Z25FKS3Y.js → chunk-M5PJQ5Y3.js} +1 -1
  62. package/dist/{chunk-VYQMCLKG.js → chunk-MFOH7EYR.js} +1 -1
  63. package/dist/{chunk-QGBLC4ZJ.js → chunk-MJBCBQC2.js} +1 -1
  64. package/dist/{chunk-2KS2YRIS.js → chunk-MMPFU2YC.js} +1 -1
  65. package/dist/{chunk-ZFFRHV5U.js → chunk-MR7CX5VT.js} +1 -1
  66. package/dist/{chunk-J4WS2SXT.js → chunk-MRP54NCJ.js} +1 -1
  67. package/dist/{chunk-JTCW76YG.js → chunk-MTNUZEO7.js} +1 -1
  68. package/dist/{chunk-XZW3TBOV.js → chunk-NJAHRITS.js} +1 -1
  69. package/dist/{chunk-FEF75YKV.js → chunk-NTGYFYBP.js} +1 -1
  70. package/dist/{chunk-DHF3VO2R.js → chunk-NTNAHN25.js} +1 -1
  71. package/dist/{chunk-KA7Q5IIC.js → chunk-NUQ423YE.js} +1 -1
  72. package/dist/{chunk-RLZA4VJT.js → chunk-OGWC3J3C.js} +1 -1
  73. package/dist/{chunk-5LTUYXMP.js → chunk-POYZ6SAI.js} +1 -1
  74. package/dist/{chunk-6NWPK2MS.js → chunk-QJIJC3KC.js} +1 -1
  75. package/dist/{chunk-YOFKDRY4.js → chunk-RFJAYURU.js} +1 -1
  76. package/dist/chunk-RGJIRS3B.js +2 -0
  77. package/dist/{chunk-4OSW2WEN.js → chunk-RZJVQUBA.js} +3 -3
  78. package/dist/{chunk-7LWXIRI3.js → chunk-SURF5Z7Y.js} +1 -1
  79. package/dist/chunk-TDPWFYTJ.js +2 -0
  80. package/dist/chunk-V3UE6RJP.js +2 -0
  81. package/dist/{chunk-MSK7AC4E.js → chunk-XSKLH2MC.js} +2 -2
  82. package/dist/{chunk-C3OGWCII.js → chunk-XWSAKVEY.js} +2 -2
  83. package/dist/{chunk-YVXC46DY.js → chunk-XXMNUJX4.js} +1 -1
  84. package/dist/{chunk-6MTVGARW.js → chunk-XZRIQ3GF.js} +1 -1
  85. package/dist/chunk-YSSTGJ7O.js +7 -0
  86. package/dist/chunk-Z2JSEL3I.js +4 -0
  87. package/dist/{chunk-7APDXIKI.js → chunk-ZNHXIRCM.js} +9 -9
  88. package/dist/{chunk-MJF3USZF.js → chunk-ZP4S5WGW.js} +1 -1
  89. package/dist/{chunk-3KN2UW37.js → chunk-ZPCU6546.js} +1 -1
  90. package/dist/{config-7WI6TBDV.js → config-QISRENF5.js} +1 -1
  91. package/dist/{cover-cmd-J2ZJUL6P.js → cover-cmd-SV3I23UM.js} +1 -1
  92. package/dist/{credentials-MX5ABDPF.js → credentials-OGLK7MPV.js} +1 -1
  93. package/dist/docx-convert-ZBVQO2LG.js +2 -0
  94. package/dist/{dossier-UVTGCL7T.js → dossier-KJSJPWOW.js} +1 -1
  95. package/dist/{evidence-TZYIOSPG.js → evidence-HDD7T7DX.js} +1 -1
  96. package/dist/{evolve-cmd-IDS5ZIUY.js → evolve-cmd-UE2BIMXK.js} +1 -1
  97. package/dist/{explain-VTRHEVUQ.js → explain-EBVIUS2X.js} +1 -1
  98. package/dist/{explain-cmd-NPKN63XL.js → explain-cmd-DBUTPZHA.js} +1 -1
  99. package/dist/{explain-cmd-R3WCNR2A.js → explain-cmd-NWIYH5MI.js} +1 -1
  100. package/dist/{extract-bind-CISTQFI3.js → extract-bind-6MQYKN3G.js} +3 -3
  101. package/dist/{extract-cmd-HG3DHHSL.js → extract-cmd-2RUIWFZG.js} +1 -1
  102. package/dist/{gaps-cmd-XLVUFSTY.js → gaps-cmd-CKCHH3HQ.js} +1 -1
  103. package/dist/{generate-headless-4VJMAHCU.js → generate-headless-TUA3HGRX.js} +2 -2
  104. package/dist/index.js +13 -13
  105. package/dist/ingest-FIIO67ZN.js +2 -0
  106. package/dist/ingest-cmd-CRMY46YC.js +7 -0
  107. package/dist/{interactive-bind-IXFRXBBL.js → interactive-bind-53FCRK34.js} +3 -3
  108. package/dist/{lifecycle-cmd-VTFZ3TF2.js → lifecycle-cmd-32LG364Q.js} +1 -1
  109. package/dist/{list-cmd-KXL4WQII.js → list-cmd-UTZ2PQUK.js} +1 -1
  110. package/dist/{list-commands-BJYJ34HT.js → list-commands-F53ZNYOZ.js} +1 -1
  111. package/dist/{logical-ids-LMBNMENR.js → logical-ids-I7B3VJEH.js} +1 -1
  112. package/dist/login-flow-D7KBR7XR.js +2 -0
  113. package/dist/{maintenance-cmd-UJG4LPWD.js → maintenance-cmd-BZAGSYGI.js} +1 -1
  114. package/dist/{persist-recorded-session-QR7RVAXR.js → persist-recorded-session-5ZFS5SMZ.js} +1 -1
  115. package/dist/pipeline-MX3ZR5B3.js +2 -0
  116. package/dist/readmodel-S5RAQH3F.js +2 -0
  117. package/dist/{reconcile-cmd-E2MMQM7Z.js → reconcile-cmd-4377PWF5.js} +1 -1
  118. package/dist/{recording-banner-QAIKLV6E.js → recording-banner-ZZUF2MGT.js} +1 -1
  119. package/dist/{require-project-folder-OANMHOVE.js → require-project-folder-NQBZFUPF.js} +1 -1
  120. package/dist/{revert-FRXNIP5R.js → revert-RQJE56HF.js} +1 -1
  121. package/dist/{review-cmd-2FCGP55U.js → review-cmd-7LXGYHHQ.js} +1 -1
  122. package/dist/run-2AIQUJ55.js +2 -0
  123. package/dist/run-YH5SCBYD.js +2 -0
  124. package/dist/{run-test-md-5E53A5DT.js → run-test-md-XOSCYVSS.js} +2 -2
  125. package/dist/{skill-installer-LGEIIQ4Q.js → skill-installer-VYIIWAK7.js} +1 -1
  126. package/dist/{spawner-6FHAXNOA.js → spawner-7KXVKAD5.js} +1 -1
  127. package/dist/tcg-generate-U6OCCS2E.js +2 -0
  128. package/dist/{testmd-actions-2OFH5GRJ.js → testmd-actions-RPALXRZK.js} +1 -1
  129. package/dist/token-refresh-S7CYBZTE.js +2 -0
  130. package/dist/{validate-basic-Z46MAH2G.js → validate-basic-LP3S5PK7.js} +1 -1
  131. package/dist/{version-check-64M5JQQ7.js → version-check-XP62HWLJ.js} +1 -1
  132. package/dist/{view-cmd-PG66UQK7.js → view-cmd-GQBFCPDL.js} +1 -1
  133. package/dist/{walk-session-7PM2RXEF.js → walk-session-YIKHE6PT.js} +1 -1
  134. package/package.json +6 -6
  135. package/dist/ChatSurface-PLXUGRBV.js +0 -8
  136. package/dist/SingleShotApp-Z2HGSZXG.js +0 -2
  137. package/dist/TestMdRunView-B4IZHRDT.js +0 -2
  138. package/dist/chat-controller-M4QYRH7Y.js +0 -2
  139. package/dist/chunk-26H3PDVN.js +0 -4
  140. package/dist/chunk-2OQLMW3F.js +0 -7
  141. package/dist/chunk-GLS46X7N.js +0 -5
  142. package/dist/chunk-JHHMXU76.js +0 -2
  143. package/dist/chunk-KFUZYEHX.js +0 -2
  144. package/dist/chunk-ZPENY2Q3.js +0 -4
  145. package/dist/docx-convert-IAX54REO.js +0 -2
  146. package/dist/ingest-UAIKHOB4.js +0 -2
  147. package/dist/ingest-cmd-7HJLRLMG.js +0 -4
  148. package/dist/login-flow-KW5T7WRJ.js +0 -2
  149. package/dist/pipeline-L6V24KGN.js +0 -2
  150. package/dist/readmodel-AGAPK2AI.js +0 -2
  151. package/dist/run-FYJZCWYS.js +0 -2
  152. package/dist/run-IOBBB7GN.js +0 -2
  153. package/dist/tcg-generate-CEDA6DZJ.js +0 -2
  154. package/dist/token-refresh-R75DGT4X.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as se}from"./chunk-JHPZXF77.js";import{a as X,c as z,d as ae}from"./chunk-5Z7GAIPP.js";import"./chunk-GRB66C5S.js";import"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{b as Q,c as ne,d as ie}from"./chunk-KFUZYEHX.js";import{a as U}from"./chunk-7C6G4V43.js";import"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as V}from"./chunk-SDRFTIRU.js";import{b as oe}from"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import{e as re}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-2KS2YRIS.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as b,b as s,k as j}from"./chunk-C44QQJR4.js";import{a as we}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var E=B(we(),1);function le(e,h,w){let{ref:A,reason:p,by:R}=w;if(!p||p.trim().length===0)return{record:null,errors:[{code:"REASON_REQUIRED",detail:"archiving a node needs a reason \u2014 it becomes the tombstone's provenance"}]};let v=h.resolve(A);if(!v)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${A}' in the graph`}]};let o=h.tipOf(v.cid);if(h.superseded.has(o))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${A} is already superseded at its tip (${o.slice(0,19)}\u2026)`}]};let i=re(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:o,new:null,reason:p,by:R}],source_head_moves:{}},{expectPrev:h.latestHash});return oe(e),{record:i.record,errors:null}}function ce(e){let h=e.by??{kind:"human",id:process.env.USER??"operator"},w=e.mode==="interactive"?"override":e.mode,A={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},p={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},R=new Map;for(let o of e.planRows)if(o.held_ref&&e.held){let i=e.held.rows.find(n=>n.temp_ref===o.held_ref);if(!i)continue;let x={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...o.impact?{impact:o.impact}:{}};R.set(x.ref,{card:x,source:"held",heldRef:i.temp_ref})}else if(o.kind==="MODIFY"){let i={kind:"MODIFY",ref:o.ref,title:o.ref,why:`${o.reason}: ${o.provenance}`,origin:o.origin??"structural-stale",...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"row",row:o})}else if(o.kind==="ADD"){let i={kind:"ADD",ref:o.ref,title:o.ref,why:o.reason,origin:o.origin??"content-change"};R.set(i.ref,{card:i,source:"row",row:o})}for(let o of e.archive){if(o.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:o.ref,title:o.ref,why:o.why,provenance:o.why,...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"archive",row:o})}let v=o=>(p.failed++,{outcome:"failed",detail:o});return{cards:()=>[...R.values()].map(o=>o.card),async submit(o,i){let x=R.get(o);if(!x)return v(`no card ${o}`);if(i.v==="skip")return p.skipped++,e.signals({ref:o,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return p.deferred++,{outcome:"deferred"};if(i.v==="archive"){if(x.source!=="archive")return v(`${o} is not an ARCHIVE card`);let l=V(e.contextDir),$=l.resolve(x.row.ref);if($&&l.superseded.has(l.tipOf($.cid)))return p.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let D=le(e.contextDir,V(e.contextDir),{ref:x.row.ref,reason:`reconcile retire: ${x.row.why}`,by:h});return D.errors?v(D.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")):(p.retired++,e.signals({ref:o,verdict:"gap-resolved-archive",reason:x.row.why}),{outcome:"retired"})}if(x.source==="archive")return v(`${o} takes archive/skip/defer, not approve`);if(x.source==="held"){let l=se(e.contextDir,e.held,x.heldRef,h,i.edits);if(!l.ok)return v(l.message);if(l.kind==="ADD"){let $=await e.runDesign(l.ref,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}});return $!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its design run exited ${$} \u2014 finish with kane-cli design tests --use-case ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:l.ref})}if(i.steering){let $=V(e.contextDir),D=X($,l.ref);if(!D.ok)return p.committed++,{outcome:"committed",detail:`committed ${l.ref}, but steering could not resolve it (${D.message}) \u2014 steer via kane-cli maintain evolve ${l.ref}`};let a=await z(e.contextDir,D.target,{yes:!0,mode:w,because:i.steering},A,e.runDesign,"batch");if(a.outcome==="no-design"){let d=await e.runDesign(D.target.seamRef,{yes:!0,mode:w,because:i.steering});return d!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${D.target.seamRef}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:l.ref})}return a.outcome==="failed"||a.outcome==="paused"?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but the steering evolve ${a.outcome} (exit ${a.code}) \u2014 finish with kane-cli maintain evolve ${l.ref}`}):a.outcome==="declined"?(p.committed++,{outcome:"committed",detail:`committed ${l.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:l.ref})}return p.committed++,e.signals({ref:o,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:l.ref}}let n=V(e.contextDir),g=X(n,x.row.ref);if(!g.ok)return v(g.message);if(x.card.kind==="ADD"){let l=await e.runDesign(g.target.seamRef,{yes:!0,mode:w});return l!==0?v(`design run exited ${l}`):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create"}),{outcome:"applied"})}let y=await z(e.contextDir,g.target,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}},A,e.runDesign,"batch");return y.outcome==="evolved"?(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):y.outcome==="failed"||y.outcome==="paused"?v(`evolve ${y.outcome} (exit ${y.code})`):(p.skipped++,{outcome:"skipped",detail:y.outcome})},summary:()=>({...p})}}var m=B(F(),1);function L(e){return e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"tombstone it \u2014 the graph forgets forward"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function Y(e){return e.kind==="ARCHIVE"?null:L(e).length}var ye={ADD:{color:c.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:c.red}},be=60,Re=100;function de({card:e,position:h,sel:w=0,focused:A=!1,freeText:p=null}){let{stdout:R}=j(),v=R?.columns??80,o=v<be,i=Math.min(v-1,Re),x=L(e),n=Y(e),g=ye[e.kind],y=T=>A&&w===T?(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"}):" ",l=e.impact,$=l&&l.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${l.stale_refs.length} item(s) stale`+((l.direct_refs?.length??0)>0?` \u2014 ${l.direct_refs.length} directly touched: ${l.direct_refs.join(", ")}`:""):null,D=`? reconcile \u2014 item ${h.n} of ${h.of}`,a=n!==null?"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = adjust \xB7 esc \xB7 nothing to undo":"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 esc \xB7 nothing to undo",d=(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsxs)(s,{bold:!0,children:[(0,m.jsx)(s,{color:g.color,children:`[${e.kind}]`}),` ${U(e.title)}`]})}),(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.why})}),$?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:`impact: ${$}`})}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.provenance})}):null,(0,m.jsx)(s,{children:" "}),x.map((T,S)=>(0,m.jsxs)(s,{children:[y(S),` ${S+1}. ${T.label}`,(0,m.jsx)(s,{color:c.dim,children:` \u2014 ${T.detail}`})]},`o-${S}`)),n!==null?p?(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsxs)(b,{children:[(0,m.jsxs)(s,{children:[(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"})," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,m.jsx)(G,{value:p.value,onChange:p.onChange,onSubmit:p.onSubmit,onCancel:p.onCancel,placeholder:"say what to adjust"})]}),(0,m.jsx)(s,{color:c.muted,children:" submits as: approve \xB7 your words steer the re-design"})]}):(0,m.jsxs)(s,{children:[y(n)," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E approve with changes \u2014 say what to adjust"})]}):null]});if(o)return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsx)(s,{bold:!0,color:c.assuranceAccent,children:D}),d,(0,m.jsx)(s,{color:c.muted,children:a})]});let W=Math.max(2,i-(3+D.length+1)),C=Math.max(2,i-(3+a.length+1));return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{bold:!0,children:D}),` ${"\u2500".repeat(W)}`]}),(0,m.jsx)(s,{children:" "}),d,(0,m.jsx)(s,{children:" "}),(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{color:c.muted,children:a}),` ${"\u2500".repeat(C)}`]})]})}var _=B(F(),1);function K({mark:e,markColor:h,color:w,indent:A=2,reserve:p=0,children:R}){let{stdout:v}=j(),o=(v?.columns??80)-p,i=A+e.length+1;return(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:i,flexShrink:0,children:(0,_.jsx)(s,{color:h,children:`${" ".repeat(A)}${e}`})}),(0,_.jsx)(b,{width:Math.max(20,o-i),children:(0,_.jsx)(s,{color:w,children:R})})]})}var u=B(F(),1);function ue(e){return e.landed?"committed":e.outcome}var $e={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},q=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Ce(e){return e.v==="archive"?"Retiring\u2026":e.v==="approve"&&e.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Te({controller:e,cards:h,note:w,markOutcome:A,routeChat:p,listEvolveTargets:R,barSubject:v,onFinish:o,onCtrlC:i,pauseRef:x}){let[n,g]=(0,E.useState)(h.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),y=(0,E.useRef)(0),l=(0,E.useRef)(n);l.current=n;let $=(0,E.useRef)([]),[D,a]=(0,E.useState)(0),d=n.at==="busy"||n.at==="evolving";(0,E.useEffect)(()=>{if(!d)return;let t=setInterval(()=>a(r=>r+1),120);return()=>clearInterval(t)},[d]);let W=(0,E.useRef)(!1),C=()=>{w((0,u.jsx)(s,{color:c.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),o(3)},T=()=>{if(W.current)return;W.current=!0;let t=l.current;if(t.at==="busy"||t.at==="evolving"){w((0,u.jsx)(s,{color:c.dim,children:"finishing the current item, then pausing\u2026"}));return}if(t.at==="done-panel"||t.at==="picker"||t.at==="why"||t.at==="view"){o(y.current);return}C()};x&&(x.current=T);let S=n.at==="card"||n.at==="busy"?h[n.idx]:null,O=()=>[{key:"finish",label:"finish"},...R?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...$.current.length>0?[{key:"view",label:"view what changed"}]:[]],I=()=>{let t=R?.()??[];if(t.length===0){w((0,u.jsx)(s,{color:c.dim,children:"nothing is stale \u2014 no evolve targets right now"})),g({at:"done-panel",sel:0});return}g({at:"picker",items:t,sel:0})},P=t=>{let r=t+1;if(r<h.length)g({at:"card",idx:r,sel:0,editor:null});else{let f=e.summary();w((0,u.jsx)(s,{color:c.dim,children:`reconcile walk: ${f.applied} applied, ${f.committed} committed, ${f.retired} retired, ${f.skipped} skipped, ${f.deferred} deferred`+(f.failed>0?`, ${f.failed} failed`:"")})),g({at:"done-panel",sel:0})}},N=(0,E.useRef)(!1),M=(t,r)=>{if(N.current)return;N.current=!0;let f=h[t];g({at:"busy",idx:t,label:Ce(r),startedAt:Date.now()}),e.submit(f.ref,r).catch(k=>({outcome:"failed",detail:k instanceof Error?k.message:String(k)})).then(k=>{let H=$e[k.outcome]??{mark:"\xB7",color:"dim"},xe=k.outcome!=="failed"&&k.outcome!=="skipped"&&k.outcome!=="deferred"&&f.impact&&f.impact.stale_refs.length>0?` \xB7 ${f.impact.stale_refs.length} item(s) now stale`:"",te=`${k.outcome} [${f.kind}] ${U(f.title)}${k.detail?` \u2014 ${U(k.detail)}`:""}${xe}`;if($.current.push({mark:H.mark,color:H.color,line:te}),w((0,u.jsx)(K,{mark:H.mark,markColor:H.color==="green"?c.green:H.color==="red"?c.red:c.dim,color:H.color==="dim"?c.dim:void 0,children:te})),k.outcome==="failed"&&(y.current=y.current===0?1:y.current),A(f.ref,ue(k)),N.current=!1,W.current){C();return}P(t)})},me=(t,r)=>{g({at:"evolving",title:t.title,startedAt:Date.now()}),p(`${t.key} ${r}`).catch(f=>`\u2717 evolve failed: ${f instanceof Error?f.message:String(f)}`).then(f=>{let k=f.startsWith("\u2713");if($.current.push({mark:k?"\u2714":"\u2717",color:k?"green":"red",line:f.replace(/^[✓✗]\s*/,"")}),w((0,u.jsx)(K,{mark:k?"\u2714":"\u2717",markColor:k?c.green:c.red,children:f.replace(/^[✓✗]\s*/,"")})),W.current){o(y.current);return}g({at:"done-panel",sel:0})})},pe=(0,E.useMemo)(()=>({isFocused:()=>{let t=l.current;return t.at==="card"&&t.editor===null||t.at==="done-panel"||t.at==="picker"||t.at==="view"},onMove:t=>{g(r=>{if(r.at==="card"){let f=h[r.idx],k=Y(f)??L(f).length-1;return{...r,sel:Math.max(0,Math.min(k,r.sel+t))}}return r.at==="done-panel"?{...r,sel:Math.max(0,Math.min(O().length-1,r.sel+t))}:r.at==="picker"?{...r,sel:Math.max(0,Math.min(r.items.length-1,r.sel+t))}:r})},onSelect:()=>{let t=l.current;if(t.at==="card"){let r=h[t.idx],f=Y(r);if(f!==null&&t.sel===f){g({...t,editor:""});return}let k=L(r)[t.sel];k&&M(t.idx,{v:k.v});return}if(t.at==="done-panel"){let r=O()[t.sel];r?.key==="finish"?o(y.current):r?.key==="evolve"?I():r?.key==="view"&&g({at:"view"});return}if(t.at==="picker"){let r=t.items[t.sel];r&&g({at:"why",item:r,text:""});return}},onDigit:t=>{let r=l.current;if(r.at==="card"){let f=L(h[r.idx])[t-1];f&&M(r.idx,{v:f.v});return}r.at==="done-panel"&&t-1<O().length&&g({...r,sel:t-1}),r.at==="picker"&&t-1<r.items.length&&g({...r,sel:t-1})},onType:t=>{g(r=>r.at!=="card"||Y(h[r.idx])===null?r:{...r,editor:(r.editor??"")+t})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let t=l.current;(t.at==="picker"||t.at==="view")&&g({at:"done-panel",sel:0})}}),[h]);(0,E.useEffect)(()=>{n.at==="done"&&o(y.current)},[n.at]);let fe=n.at==="card"||n.at==="done-panel"||n.at==="picker"||n.at==="why"||n.at==="view",ge=n.at==="card"||n.at==="busy"?`${v?`${v} \xB7 `:""}item ${n.idx+1} of ${h.length}`:v,J=t=>Math.floor((Date.now()-t)/1e3),{stdout:he}=j(),Z=Math.min((he?.columns??80)-1,100),ee=`view \xB7 this run's changes \xB7 ${$.current.length}`,ve=Math.max(2,Z-(3+ee.length+1)),ke=Math.max(2,Z-12);return(0,u.jsxs)(b,{flexDirection:"column",children:[(0,u.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),T()},panel:pe}),n.at==="card"&&S?(0,u.jsx)(de,{card:S,position:{n:n.idx+1,of:h.length},sel:n.sel,focused:n.editor===null,freeText:n.editor!==null?{value:n.editor,onChange:t=>g(r=>r.at==="card"?{...r,editor:t}:r),onSubmit:t=>{let r=l.current;r.at==="card"&&(t.trim()?M(r.idx,{v:"approve",steering:t.trim()}):g({...r,editor:null}))},onCancel:()=>g(t=>t.at==="card"?{...t,editor:null}:t)}:null}):null,n.at==="busy"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} ${n.label} `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="evolving"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} Evolving ${n.title}\u2026 `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="done-panel"?(0,u.jsx)(Q,{headline:(()=>{let t=e.summary();return`reconcile done \u2014 ${t.applied+t.committed} applied \xB7 ${t.retired} retired \xB7 ${t.skipped} skipped \xB7 ${t.deferred} deferred${t.failed>0?` \xB7 ${t.failed} failed`:""}`})(),rows:O(),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,n.at==="picker"?(0,u.jsx)(Q,{ask:!0,headline:"evolve which use-case?",rows:n.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,n.at==="why"?(0,u.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:c.assuranceAccent,paddingX:1,children:[(0,u.jsxs)(b,{children:[(0,u.jsxs)(s,{children:[(0,u.jsx)(s,{color:c.assuranceAccent,children:"\u25B8"})," ",(0,u.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,u.jsx)(G,{value:n.text,onChange:t=>g(r=>r.at==="why"?{...r,text:t}:r),onSubmit:t=>{let r=l.current;r.at==="why"&&(t.trim()?me(r.item,t.trim()):g({at:"picker",items:[r.item],sel:0}))},onCancel:()=>{l.current.at==="why"&&I()},placeholder:`what should change about ${n.item.title}?`})]}),(0,u.jsx)(s,{color:c.muted,children:" \u23CE submit \xB7 esc back"})]}):null,n.at==="view"?(0,u.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{bold:!0,children:ee}),` ${"\u2500".repeat(ve)}`]}),(0,u.jsx)(s,{children:" "}),$.current.map((t,r)=>(0,u.jsx)(K,{mark:t.mark,markColor:t.color==="green"?c.green:t.color==="red"?c.red:c.dim,color:t.color==="dim"?c.dim:void 0,indent:0,reserve:0,children:t.line},`vc-${r}`)),(0,u.jsx)(s,{children:" "}),(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{color:c.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,u.jsx)(ne,{verb:"maintain",subject:ge,state:fe?"idle":void 0,hints:"ctrl+c exit"})]})}async function tt(e){let h={current:null},w=a=>{h.current?.append(a)},A=null,p=async(a,d)=>{let[{runDesign:W},{resolveAgentAuthEnv:C},{runAgent:T},{preflightTurn:S}]=await Promise.all([import("./run-IOBBB7GN.js"),import("./spawner-6FHAXNOA.js"),import("./bridge-WMGH3O3B.js"),import("./turn-preflight-JGYT7LXP.js")]);A??=await C();let O=A;return W({useCase:a,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:e.dir,agent:T,preflightTurn:()=>S(O),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:O})},R=e.runDesign??p,v=ce({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:R,mode:"interactive",signals:e.signals}),o=new Set(e.rows.filter(a=>a.applied!==void 0).map(a=>a.held_ref??a.ref)),i=v.cards().filter(a=>!o.has(a.ref)&&!(a.kind==="ARCHIVE"&&e.archiveState?.[a.ref]!==void 0)),x=a=>e.rows.findIndex(d=>(d.held_ref??d.ref)===a),n=(a,d)=>{try{if(i.find(T=>T.ref===a)?.kind==="ARCHIVE"){d==="retired"?e.markA?.(a,"retired"):d==="skipped"&&e.markA?.(a,"skipped");return}let C=x(a);if(C<0)return;d==="applied"||d==="committed"?e.mark?.(C,"approved"):d==="skipped"&&e.mark?.(C,"skipped")}catch{}},g=async a=>{let[{openGraph:d},{resolveParentUc:W,evolveOneUc:C}]=await Promise.all([import("./readmodel-AGAPK2AI.js"),import("./evolve-cmd-IDS5ZIUY.js")]),[T,...S]=a.split(/\s+/),O=d(e.dir),I=W(O,T);if(!I.ok)return`couldn't resolve '${T}' \u2014 start with a use-case id (uc-\u2026): ${I.message}`;if(S.length===0)return`say what to change: \`${T} <your words>\` \u2014 the words become the redesign's change delta`;let P=S.join(" "),N={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},M=await C(e.dir,I.target,{yes:!0,mode:"override",because:P},N,R,"batch");return M.outcome==="evolved"?(e.signals({ref:I.target.display,verdict:"gap-resolved-evolve",reason:P}),`\u2713 redesigned ${I.target.display} \u2014 "${P}"`):`\u2717 evolve ${M.outcome} for ${I.target.display} (exit ${M.code})`},y=e.listEvolveTargets??(()=>{let a=V(e.dir);return ae(a).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(e.script){let a=0;for(let d of i){let W=await e.script(d),C=await v.submit(d.ref,W);C.outcome==="failed"&&a===0&&(a=1),n(d.ref,ue(C))}return a}let[{render:l},{ScrollbackProvider:$},{ScrollbackTap:D}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(a=>{let d=!1,W=P=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",O),await h.current?.flush();try{I.unmount()}catch{}a(P)})())},C=0,T={current:null},S=()=>{if(C+=1,C>=2){process.removeListener("SIGINT",O);try{I.unmount()}catch{}a(130)}},O=()=>{S(),T.current?.()};process.on("SIGINT",O);let I=l((0,u.jsxs)($,{children:[(0,u.jsx)(D,{into:h}),(0,u.jsx)(Te,{controller:v,cards:i,note:w,markOutcome:n,routeChat:g,listEvolveTargets:y,barSubject:e.barSubject,onFinish:W,onCtrlC:S,pauseRef:T})]}),{exitOnCtrlC:!1})})}export{Te as WalkSessionSurface,ue as outcomeToMark,tt as runWalkSession};
2
+ import{a as se}from"./chunk-54VQ46U2.js";import{a as X,c as z,d as ae}from"./chunk-54IB6CXK.js";import"./chunk-GRB66C5S.js";import"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{b as Q,c as ne,d as ie}from"./chunk-RGJIRS3B.js";import{a as U}from"./chunk-IQODWB32.js";import"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as V}from"./chunk-7E24OCGX.js";import{b as oe}from"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{e as re}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-MMPFU2YC.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as b,b as s,k as j}from"./chunk-C44QQJR4.js";import{a as we}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var E=B(we(),1);function le(e,h,w){let{ref:A,reason:p,by:R}=w;if(!p||p.trim().length===0)return{record:null,errors:[{code:"REASON_REQUIRED",detail:"archiving a node needs a reason \u2014 it becomes the tombstone's provenance"}]};let v=h.resolve(A);if(!v)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${A}' in the graph`}]};let o=h.tipOf(v.cid);if(h.superseded.has(o))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${A} is already superseded at its tip (${o.slice(0,19)}\u2026)`}]};let i=re(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:o,new:null,reason:p,by:R}],source_head_moves:{}},{expectPrev:h.latestHash});return oe(e),{record:i.record,errors:null}}function ce(e){let h=e.by??{kind:"human",id:process.env.USER??"operator"},w=e.mode==="interactive"?"override":e.mode,A={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},p={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},R=new Map;for(let o of e.planRows)if(o.held_ref&&e.held){let i=e.held.rows.find(n=>n.temp_ref===o.held_ref);if(!i)continue;let x={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...o.impact?{impact:o.impact}:{}};R.set(x.ref,{card:x,source:"held",heldRef:i.temp_ref})}else if(o.kind==="MODIFY"){let i={kind:"MODIFY",ref:o.ref,title:o.ref,why:`${o.reason}: ${o.provenance}`,origin:o.origin??"structural-stale",...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"row",row:o})}else if(o.kind==="ADD"){let i={kind:"ADD",ref:o.ref,title:o.ref,why:o.reason,origin:o.origin??"content-change"};R.set(i.ref,{card:i,source:"row",row:o})}for(let o of e.archive){if(o.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:o.ref,title:o.ref,why:o.why,provenance:o.why,...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"archive",row:o})}let v=o=>(p.failed++,{outcome:"failed",detail:o});return{cards:()=>[...R.values()].map(o=>o.card),async submit(o,i){let x=R.get(o);if(!x)return v(`no card ${o}`);if(i.v==="skip")return p.skipped++,e.signals({ref:o,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return p.deferred++,{outcome:"deferred"};if(i.v==="archive"){if(x.source!=="archive")return v(`${o} is not an ARCHIVE card`);let l=V(e.contextDir),$=l.resolve(x.row.ref);if($&&l.superseded.has(l.tipOf($.cid)))return p.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let D=le(e.contextDir,V(e.contextDir),{ref:x.row.ref,reason:`reconcile retire: ${x.row.why}`,by:h});return D.errors?v(D.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")):(p.retired++,e.signals({ref:o,verdict:"gap-resolved-archive",reason:x.row.why}),{outcome:"retired"})}if(x.source==="archive")return v(`${o} takes archive/skip/defer, not approve`);if(x.source==="held"){let l=se(e.contextDir,e.held,x.heldRef,h,i.edits);if(!l.ok)return v(l.message);if(l.kind==="ADD"){let $=await e.runDesign(l.ref,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}});return $!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its design run exited ${$} \u2014 finish with kane-cli design tests --use-case ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:l.ref})}if(i.steering){let $=V(e.contextDir),D=X($,l.ref);if(!D.ok)return p.committed++,{outcome:"committed",detail:`committed ${l.ref}, but steering could not resolve it (${D.message}) \u2014 steer via kane-cli maintain evolve ${l.ref}`};let a=await z(e.contextDir,D.target,{yes:!0,mode:w,because:i.steering},A,e.runDesign,"batch");if(a.outcome==="no-design"){let d=await e.runDesign(D.target.seamRef,{yes:!0,mode:w,because:i.steering});return d!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${D.target.seamRef}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:l.ref})}return a.outcome==="failed"||a.outcome==="paused"?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but the steering evolve ${a.outcome} (exit ${a.code}) \u2014 finish with kane-cli maintain evolve ${l.ref}`}):a.outcome==="declined"?(p.committed++,{outcome:"committed",detail:`committed ${l.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:l.ref})}return p.committed++,e.signals({ref:o,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:l.ref}}let n=V(e.contextDir),g=X(n,x.row.ref);if(!g.ok)return v(g.message);if(x.card.kind==="ADD"){let l=await e.runDesign(g.target.seamRef,{yes:!0,mode:w});return l!==0?v(`design run exited ${l}`):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create"}),{outcome:"applied"})}let y=await z(e.contextDir,g.target,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}},A,e.runDesign,"batch");return y.outcome==="evolved"?(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):y.outcome==="failed"||y.outcome==="paused"?v(`evolve ${y.outcome} (exit ${y.code})`):(p.skipped++,{outcome:"skipped",detail:y.outcome})},summary:()=>({...p})}}var m=B(F(),1);function L(e){return e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"tombstone it \u2014 the graph forgets forward"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function Y(e){return e.kind==="ARCHIVE"?null:L(e).length}var ye={ADD:{color:c.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:c.red}},be=60,Re=100;function de({card:e,position:h,sel:w=0,focused:A=!1,freeText:p=null}){let{stdout:R}=j(),v=R?.columns??80,o=v<be,i=Math.min(v-1,Re),x=L(e),n=Y(e),g=ye[e.kind],y=T=>A&&w===T?(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"}):" ",l=e.impact,$=l&&l.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${l.stale_refs.length} item(s) stale`+((l.direct_refs?.length??0)>0?` \u2014 ${l.direct_refs.length} directly touched: ${l.direct_refs.join(", ")}`:""):null,D=`? reconcile \u2014 item ${h.n} of ${h.of}`,a=n!==null?"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = adjust \xB7 esc \xB7 nothing to undo":"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 esc \xB7 nothing to undo",d=(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsxs)(s,{bold:!0,children:[(0,m.jsx)(s,{color:g.color,children:`[${e.kind}]`}),` ${U(e.title)}`]})}),(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.why})}),$?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:`impact: ${$}`})}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.provenance})}):null,(0,m.jsx)(s,{children:" "}),x.map((T,S)=>(0,m.jsxs)(s,{children:[y(S),` ${S+1}. ${T.label}`,(0,m.jsx)(s,{color:c.dim,children:` \u2014 ${T.detail}`})]},`o-${S}`)),n!==null?p?(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsxs)(b,{children:[(0,m.jsxs)(s,{children:[(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"})," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,m.jsx)(G,{value:p.value,onChange:p.onChange,onSubmit:p.onSubmit,onCancel:p.onCancel,placeholder:"say what to adjust"})]}),(0,m.jsx)(s,{color:c.muted,children:" submits as: approve \xB7 your words steer the re-design"})]}):(0,m.jsxs)(s,{children:[y(n)," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E approve with changes \u2014 say what to adjust"})]}):null]});if(o)return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsx)(s,{bold:!0,color:c.assuranceAccent,children:D}),d,(0,m.jsx)(s,{color:c.muted,children:a})]});let W=Math.max(2,i-(3+D.length+1)),C=Math.max(2,i-(3+a.length+1));return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{bold:!0,children:D}),` ${"\u2500".repeat(W)}`]}),(0,m.jsx)(s,{children:" "}),d,(0,m.jsx)(s,{children:" "}),(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{color:c.muted,children:a}),` ${"\u2500".repeat(C)}`]})]})}var _=B(F(),1);function K({mark:e,markColor:h,color:w,indent:A=2,reserve:p=0,children:R}){let{stdout:v}=j(),o=(v?.columns??80)-p,i=A+e.length+1;return(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:i,flexShrink:0,children:(0,_.jsx)(s,{color:h,children:`${" ".repeat(A)}${e}`})}),(0,_.jsx)(b,{width:Math.max(20,o-i),children:(0,_.jsx)(s,{color:w,children:R})})]})}var u=B(F(),1);function ue(e){return e.landed?"committed":e.outcome}var $e={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},q=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Ce(e){return e.v==="archive"?"Retiring\u2026":e.v==="approve"&&e.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Te({controller:e,cards:h,note:w,markOutcome:A,routeChat:p,listEvolveTargets:R,barSubject:v,onFinish:o,onCtrlC:i,pauseRef:x}){let[n,g]=(0,E.useState)(h.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),y=(0,E.useRef)(0),l=(0,E.useRef)(n);l.current=n;let $=(0,E.useRef)([]),[D,a]=(0,E.useState)(0),d=n.at==="busy"||n.at==="evolving";(0,E.useEffect)(()=>{if(!d)return;let t=setInterval(()=>a(r=>r+1),120);return()=>clearInterval(t)},[d]);let W=(0,E.useRef)(!1),C=()=>{w((0,u.jsx)(s,{color:c.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),o(3)},T=()=>{if(W.current)return;W.current=!0;let t=l.current;if(t.at==="busy"||t.at==="evolving"){w((0,u.jsx)(s,{color:c.dim,children:"finishing the current item, then pausing\u2026"}));return}if(t.at==="done-panel"||t.at==="picker"||t.at==="why"||t.at==="view"){o(y.current);return}C()};x&&(x.current=T);let S=n.at==="card"||n.at==="busy"?h[n.idx]:null,O=()=>[{key:"finish",label:"finish"},...R?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...$.current.length>0?[{key:"view",label:"view what changed"}]:[]],I=()=>{let t=R?.()??[];if(t.length===0){w((0,u.jsx)(s,{color:c.dim,children:"nothing is stale \u2014 no evolve targets right now"})),g({at:"done-panel",sel:0});return}g({at:"picker",items:t,sel:0})},P=t=>{let r=t+1;if(r<h.length)g({at:"card",idx:r,sel:0,editor:null});else{let f=e.summary();w((0,u.jsx)(s,{color:c.dim,children:`reconcile walk: ${f.applied} applied, ${f.committed} committed, ${f.retired} retired, ${f.skipped} skipped, ${f.deferred} deferred`+(f.failed>0?`, ${f.failed} failed`:"")})),g({at:"done-panel",sel:0})}},N=(0,E.useRef)(!1),M=(t,r)=>{if(N.current)return;N.current=!0;let f=h[t];g({at:"busy",idx:t,label:Ce(r),startedAt:Date.now()}),e.submit(f.ref,r).catch(k=>({outcome:"failed",detail:k instanceof Error?k.message:String(k)})).then(k=>{let H=$e[k.outcome]??{mark:"\xB7",color:"dim"},xe=k.outcome!=="failed"&&k.outcome!=="skipped"&&k.outcome!=="deferred"&&f.impact&&f.impact.stale_refs.length>0?` \xB7 ${f.impact.stale_refs.length} item(s) now stale`:"",te=`${k.outcome} [${f.kind}] ${U(f.title)}${k.detail?` \u2014 ${U(k.detail)}`:""}${xe}`;if($.current.push({mark:H.mark,color:H.color,line:te}),w((0,u.jsx)(K,{mark:H.mark,markColor:H.color==="green"?c.green:H.color==="red"?c.red:c.dim,color:H.color==="dim"?c.dim:void 0,children:te})),k.outcome==="failed"&&(y.current=y.current===0?1:y.current),A(f.ref,ue(k)),N.current=!1,W.current){C();return}P(t)})},me=(t,r)=>{g({at:"evolving",title:t.title,startedAt:Date.now()}),p(`${t.key} ${r}`).catch(f=>`\u2717 evolve failed: ${f instanceof Error?f.message:String(f)}`).then(f=>{let k=f.startsWith("\u2713");if($.current.push({mark:k?"\u2714":"\u2717",color:k?"green":"red",line:f.replace(/^[✓✗]\s*/,"")}),w((0,u.jsx)(K,{mark:k?"\u2714":"\u2717",markColor:k?c.green:c.red,children:f.replace(/^[✓✗]\s*/,"")})),W.current){o(y.current);return}g({at:"done-panel",sel:0})})},pe=(0,E.useMemo)(()=>({isFocused:()=>{let t=l.current;return t.at==="card"&&t.editor===null||t.at==="done-panel"||t.at==="picker"||t.at==="view"},onMove:t=>{g(r=>{if(r.at==="card"){let f=h[r.idx],k=Y(f)??L(f).length-1;return{...r,sel:Math.max(0,Math.min(k,r.sel+t))}}return r.at==="done-panel"?{...r,sel:Math.max(0,Math.min(O().length-1,r.sel+t))}:r.at==="picker"?{...r,sel:Math.max(0,Math.min(r.items.length-1,r.sel+t))}:r})},onSelect:()=>{let t=l.current;if(t.at==="card"){let r=h[t.idx],f=Y(r);if(f!==null&&t.sel===f){g({...t,editor:""});return}let k=L(r)[t.sel];k&&M(t.idx,{v:k.v});return}if(t.at==="done-panel"){let r=O()[t.sel];r?.key==="finish"?o(y.current):r?.key==="evolve"?I():r?.key==="view"&&g({at:"view"});return}if(t.at==="picker"){let r=t.items[t.sel];r&&g({at:"why",item:r,text:""});return}},onDigit:t=>{let r=l.current;if(r.at==="card"){let f=L(h[r.idx])[t-1];f&&M(r.idx,{v:f.v});return}r.at==="done-panel"&&t-1<O().length&&g({...r,sel:t-1}),r.at==="picker"&&t-1<r.items.length&&g({...r,sel:t-1})},onType:t=>{g(r=>r.at!=="card"||Y(h[r.idx])===null?r:{...r,editor:(r.editor??"")+t})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let t=l.current;(t.at==="picker"||t.at==="view")&&g({at:"done-panel",sel:0})}}),[h]);(0,E.useEffect)(()=>{n.at==="done"&&o(y.current)},[n.at]);let fe=n.at==="card"||n.at==="done-panel"||n.at==="picker"||n.at==="why"||n.at==="view",ge=n.at==="card"||n.at==="busy"?`${v?`${v} \xB7 `:""}item ${n.idx+1} of ${h.length}`:v,J=t=>Math.floor((Date.now()-t)/1e3),{stdout:he}=j(),Z=Math.min((he?.columns??80)-1,100),ee=`view \xB7 this run's changes \xB7 ${$.current.length}`,ve=Math.max(2,Z-(3+ee.length+1)),ke=Math.max(2,Z-12);return(0,u.jsxs)(b,{flexDirection:"column",children:[(0,u.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),T()},panel:pe}),n.at==="card"&&S?(0,u.jsx)(de,{card:S,position:{n:n.idx+1,of:h.length},sel:n.sel,focused:n.editor===null,freeText:n.editor!==null?{value:n.editor,onChange:t=>g(r=>r.at==="card"?{...r,editor:t}:r),onSubmit:t=>{let r=l.current;r.at==="card"&&(t.trim()?M(r.idx,{v:"approve",steering:t.trim()}):g({...r,editor:null}))},onCancel:()=>g(t=>t.at==="card"?{...t,editor:null}:t)}:null}):null,n.at==="busy"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} ${n.label} `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="evolving"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} Evolving ${n.title}\u2026 `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="done-panel"?(0,u.jsx)(Q,{headline:(()=>{let t=e.summary();return`reconcile done \u2014 ${t.applied+t.committed} applied \xB7 ${t.retired} retired \xB7 ${t.skipped} skipped \xB7 ${t.deferred} deferred${t.failed>0?` \xB7 ${t.failed} failed`:""}`})(),rows:O(),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,n.at==="picker"?(0,u.jsx)(Q,{ask:!0,headline:"evolve which use-case?",rows:n.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,n.at==="why"?(0,u.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:c.assuranceAccent,paddingX:1,children:[(0,u.jsxs)(b,{children:[(0,u.jsxs)(s,{children:[(0,u.jsx)(s,{color:c.assuranceAccent,children:"\u25B8"})," ",(0,u.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,u.jsx)(G,{value:n.text,onChange:t=>g(r=>r.at==="why"?{...r,text:t}:r),onSubmit:t=>{let r=l.current;r.at==="why"&&(t.trim()?me(r.item,t.trim()):g({at:"picker",items:[r.item],sel:0}))},onCancel:()=>{l.current.at==="why"&&I()},placeholder:`what should change about ${n.item.title}?`})]}),(0,u.jsx)(s,{color:c.muted,children:" \u23CE submit \xB7 esc back"})]}):null,n.at==="view"?(0,u.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{bold:!0,children:ee}),` ${"\u2500".repeat(ve)}`]}),(0,u.jsx)(s,{children:" "}),$.current.map((t,r)=>(0,u.jsx)(K,{mark:t.mark,markColor:t.color==="green"?c.green:t.color==="red"?c.red:c.dim,color:t.color==="dim"?c.dim:void 0,indent:0,reserve:0,children:t.line},`vc-${r}`)),(0,u.jsx)(s,{children:" "}),(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{color:c.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,u.jsx)(ne,{verb:"maintain",subject:ge,state:fe?"idle":void 0,hints:"ctrl+c exit"})]})}async function tt(e){let h={current:null},w=a=>{h.current?.append(a)},A=null,p=async(a,d)=>{let[{runDesign:W},{resolveAgentAuthEnv:C},{runAgent:T},{preflightTurn:S}]=await Promise.all([import("./run-2AIQUJ55.js"),import("./spawner-7KXVKAD5.js"),import("./bridge-QCMEOQDD.js"),import("./turn-preflight-JGYT7LXP.js")]);A??=await C();let O=A;return W({useCase:a,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:e.dir,agent:T,preflightTurn:()=>S(O),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:O})},R=e.runDesign??p,v=ce({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:R,mode:"interactive",signals:e.signals}),o=new Set(e.rows.filter(a=>a.applied!==void 0).map(a=>a.held_ref??a.ref)),i=v.cards().filter(a=>!o.has(a.ref)&&!(a.kind==="ARCHIVE"&&e.archiveState?.[a.ref]!==void 0)),x=a=>e.rows.findIndex(d=>(d.held_ref??d.ref)===a),n=(a,d)=>{try{if(i.find(T=>T.ref===a)?.kind==="ARCHIVE"){d==="retired"?e.markA?.(a,"retired"):d==="skipped"&&e.markA?.(a,"skipped");return}let C=x(a);if(C<0)return;d==="applied"||d==="committed"?e.mark?.(C,"approved"):d==="skipped"&&e.mark?.(C,"skipped")}catch{}},g=async a=>{let[{openGraph:d},{resolveParentUc:W,evolveOneUc:C}]=await Promise.all([import("./readmodel-S5RAQH3F.js"),import("./evolve-cmd-UE2BIMXK.js")]),[T,...S]=a.split(/\s+/),O=d(e.dir),I=W(O,T);if(!I.ok)return`couldn't resolve '${T}' \u2014 start with a use-case id (uc-\u2026): ${I.message}`;if(S.length===0)return`say what to change: \`${T} <your words>\` \u2014 the words become the redesign's change delta`;let P=S.join(" "),N={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},M=await C(e.dir,I.target,{yes:!0,mode:"override",because:P},N,R,"batch");return M.outcome==="evolved"?(e.signals({ref:I.target.display,verdict:"gap-resolved-evolve",reason:P}),`\u2713 redesigned ${I.target.display} \u2014 "${P}"`):`\u2717 evolve ${M.outcome} for ${I.target.display} (exit ${M.code})`},y=e.listEvolveTargets??(()=>{let a=V(e.dir);return ae(a).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(e.script){let a=0;for(let d of i){let W=await e.script(d),C=await v.submit(d.ref,W);C.outcome==="failed"&&a===0&&(a=1),n(d.ref,ue(C))}return a}let[{render:l},{ScrollbackProvider:$},{ScrollbackTap:D}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(a=>{let d=!1,W=P=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",O),await h.current?.flush();try{I.unmount()}catch{}a(P)})())},C=0,T={current:null},S=()=>{if(C+=1,C>=2){process.removeListener("SIGINT",O);try{I.unmount()}catch{}a(130)}},O=()=>{S(),T.current?.()};process.on("SIGINT",O);let I=l((0,u.jsxs)($,{children:[(0,u.jsx)(D,{into:h}),(0,u.jsx)(Te,{controller:v,cards:i,note:w,markOutcome:n,routeChat:g,listEvolveTargets:y,barSubject:e.barSubject,onFinish:W,onCtrlC:S,pauseRef:T})]}),{exitOnCtrlC:!1})})}export{Te as WalkSessionSurface,ue as outcomeToMark,tt as runWalkSession};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.6.10",
3
+ "version": "0.6.11",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -34,11 +34,11 @@
34
34
  "ws": "^8.20.0"
35
35
  },
36
36
  "optionalDependencies": {
37
- "@testmuai/kane-cli-darwin-arm64": "0.6.10",
38
- "@testmuai/kane-cli-darwin-x64": "0.6.10",
39
- "@testmuai/kane-cli-linux-x64": "0.6.10",
40
- "@testmuai/kane-cli-linux-arm64": "0.6.10",
41
- "@testmuai/kane-cli-win-x64": "0.6.10",
37
+ "@testmuai/kane-cli-darwin-arm64": "0.6.11",
38
+ "@testmuai/kane-cli-darwin-x64": "0.6.11",
39
+ "@testmuai/kane-cli-linux-x64": "0.6.11",
40
+ "@testmuai/kane-cli-linux-arm64": "0.6.11",
41
+ "@testmuai/kane-cli-win-x64": "0.6.11",
42
42
  "@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
43
43
  "@testmuai/kane-cli-node-darwin-x64": "24.18.0",
44
44
  "@testmuai/kane-cli-node-linux-x64": "24.18.0",
@@ -1,8 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Rt,b as ce,c as Bt,d as Xe}from"./chunk-KFUZYEHX.js";import{a as Ct}from"./chunk-7C6G4V43.js";import{a as Ae}from"./chunk-26H3PDVN.js";import{b as It,c as St}from"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{a as wt,b as $t,c as vt}from"./chunk-TLL7KFLY.js";import{a as kt}from"./chunk-5Y2G4NC7.js";import"./chunk-NVGBE2DR.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as Tt}from"./chunk-YCCUBQY4.js";import{a as bt}from"./chunk-6NWPK2MS.js";import{b as yt}from"./chunk-DFS4RMVP.js";import{y as r}from"./chunk-2KS2YRIS.js";import{a as j}from"./chunk-HCBYKLMW.js";import{a as I,b as n,k as Be}from"./chunk-C44QQJR4.js";import{a as kn}from"./chunk-6YGTRKDT.js";import{e as V}from"./chunk-UR6MHSHU.js";var b=V(kn(),1);var a=V(j(),1),bn=60,yn=100;function Ge(e,i){let s=e.options.length,c=s,d=e.multi_select?c++:null,g=e.allow_free_text?c++:null,u=i?c++:null;return{optionCount:s,doneIdx:d,freeIdx:g,batchIdx:u,maxSel:c-1}}var Tn="\xA0",wn={high:{text:`\u203C${Tn}high`,color:r.red},med:{text:"med",color:"yellow"},low:{text:"low",color:r.dim}};function $n(e){let i=(e.header??e.text.split(/\s+/).slice(0,3).join(" ")).trim();return i.length>16?`${i.slice(0,15)}\u2026`:i}function vn(e,i,s){let c=m=>e[m].length+6,d=c(i),g=i,u=i;for(;;){let m=u+1<e.length?c(u+1):1/0,h=g-1>=0?c(g-1):1/0;if(m===1/0&&h===1/0)break;if(m<=h){if(d+m>s)break;d+=m,u+=1}else{if(d+h>s)break;d+=h,g-=1}}return{lo:g,hi:u}}function At({batch:e,qView:i,sel:s=0,focused:c=!1,freeText:d=null,multiSelFor:g}){let{stdout:u}=Be(),m=u?.columns??80,h=m<bn,S=Math.min(m-1,yn),f=Math.max(0,Math.min(e.questions.length-1,i??(e.cursor<0?0:e.cursor))),p=e.questions[f],_=e.resolution[f],A=e.resolution.filter(F=>!F).length,w=e.questions.length-A,R=Ae(e),C=Ge(p,R!==""),v=g?g(f):[],E=wn[p.risk],x=F=>c&&s===F?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" ",W=`? the agent needs ${A===1?"one answer":`${A} answers`}`,L=e.questions.length>1?` \xB7 ${f+1} of ${e.questions.length} \xB7 ${w} answered`:"",P=(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsxs)(n,{bold:!0,children:[p.text,E?(0,a.jsx)(n,{color:E.color,bold:!1,children:` ${E.text}`}):null]})}),(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.dim,children:p.rationale})}),(0,a.jsx)(n,{children:" "}),p.options.map((F,O)=>{let H=c&&s===O;return(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsxs)(n,{children:[x(O)," ",p.multi_select?(0,a.jsx)(n,{color:v.includes(O)?r.green:r.dim,children:v.includes(O)?"[x] ":"[ ] "}):null,(0,a.jsx)(n,{color:H?r.assuranceAccent:void 0,children:`${O+1}. ${F.label}`}),O===p.recommended_index?(0,a.jsx)(n,{color:r.dim,children:" (recommended)"}):null,_?.selected_index===O?(0,a.jsx)(n,{color:r.dim,children:" (current)"}):null]}),F.detail?(0,a.jsx)(I,{paddingLeft:5,children:(0,a.jsx)(n,{color:r.dim,children:F.detail})}):null]},`o-${O}`)}),p.multi_select&&C.doneIdx!=null?(0,a.jsxs)(n,{children:[x(C.doneIdx)," ",(0,a.jsx)(n,{color:r.green,children:"\u2714"}),(0,a.jsx)(n,{color:c&&s===C.doneIdx?r.assuranceAccent:void 0,children:" done \u2014 confirm selection"})]}):null,p.allow_free_text?(0,a.jsx)(n,{children:" "}):null,p.allow_free_text?d?(0,a.jsxs)(I,{children:[(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"})," ",(0,a.jsx)(n,{color:r.dim,children:"\u270E "})]}),(0,a.jsx)(Tt,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"Tell me what to do"})]}):(0,a.jsxs)(n,{children:[C.freeIdx!=null?x(C.freeIdx):" "," ",(0,a.jsx)(n,{color:c&&C.freeIdx!=null&&s===C.freeIdx?r.assuranceAccent:r.dim,children:"\u270E Tell me what to do"})]}):null]}),de=R!==""?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{children:[c&&C.batchIdx!=null&&s===C.batchIdx?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" "," ",(0,a.jsx)(n,{color:r.assuranceAccent,children:"\xBB"}),(0,a.jsx)(n,{bold:!0,color:c&&C.batchIdx!=null&&s===C.batchIdx?r.assuranceAccent:void 0,children:" Go with recommendations"}),A>=5?(0,a.jsx)(n,{color:r.dim,children:` \u2014 resolves all ${A} open`}):null,(0,a.jsx)(n,{color:r.dim,children:" (tab)"})]})]}):null;if(h)return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsx)(n,{color:r.assuranceAccent,bold:!0,children:W}),e.questions.length>1?(0,a.jsx)(n,{color:r.dim,children:L.replace(/^ · /,"")}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.muted,children:"\u2191\u2193 \u23CE \xB7 \u2190 \u2192 questions \xB7 esc back"})})]});let Le=`\u2500\u2500 ${W}${L} `,Oe=Math.max(2,S-Le.length),me="\u2191\u2193 select \xB7 \u23CE confirm \xB7 \u2190 \u2192 questions \xB7 type = your words \xB7 esc back",ge=`\u2500\u2500 ${me} `,Z=Math.max(2,S-ge.length),K=e.questions.map(F=>$n(F)),D=e.questions.length>1?vn(K,f,S-8):null;return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{bold:!0,children:W}),L?(0,a.jsx)(n,{color:r.dim,children:L}):null,` ${"\u2500".repeat(Oe)}`]}),D?(0,a.jsx)(I,{marginTop:1,children:(0,a.jsxs)(n,{children:[D.lo>0?(0,a.jsx)(n,{color:r.dim,children:"\u25C0 "}):" ",e.questions.slice(D.lo,D.hi+1).map((F,O)=>{let H=D.lo+O,Te=O>0?" ":"";return H===f?(0,a.jsxs)(n,{children:[Te,(0,a.jsx)(n,{backgroundColor:r.assuranceAccent,color:"#0d1117",bold:!0,children:` ${K[H]} `})]},F.id):(0,a.jsxs)(n,{children:[Te,e.resolution[H]?(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.green,children:"\u2713 "}),(0,a.jsx)(n,{color:r.dim,children:K[H]})]}):(0,a.jsx)(n,{color:r.dim,children:`\u25CB ${K[H]}`})]},F.id)}),D.hi<e.questions.length-1?(0,a.jsx)(n,{color:r.dim,children:" \u25B6"}):null]})}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{color:r.muted,children:me}),` ${"\u2500".repeat(Z)}`]})]})}var M=V(j(),1),Dt={high:0,med:1,low:2},In={high:r.red,med:"yellow",low:r.dim};function Sn(e){return e.map((i,s)=>({r:i,i:s})).sort((i,s)=>(Dt[i.r.risk??"zz"]??3)-(Dt[s.r.risk??"zz"]??3)||i.i-s.i).map(({r:i})=>i)}var te=(e,i)=>e.length<=i?e:i<=1?"\u2026":`${e.slice(0,i-1)}\u2026`,De=(e,i)=>e+" ".repeat(Math.max(0,i-e.length));function Et({rows:e,width:i=120,badgeHeader:s="risk"}){if(e.length===0)return null;let c=Sn(e),d=v=>v.staged||!v.id?"(staged)":Ct(v.id),g=Math.max(2,...c.map(v=>d(v).length)),u=Math.max(s.length,...c.map(v=>(v.badge??"").length)),m=i>=96&&c.some(v=>v.summary),S=i-(m?13:10)-g-u,f=Math.max(...c.map(v=>Math.max(v.title.length,(v.marker??"").length)),5),p=Math.max(5,m?Math.min(f,Math.max(16,Math.floor(S*.5))):Math.min(f,S)),_=m?Math.max(7,S-p):0,A=(v,E,x,W)=>v+W.map(L=>`\u2500${"\u2500".repeat(L.length)}\u2500`).join(E)+x,w=(v,E,x,W)=>[De(te(v,g),g),De(te(E,p),p),De(te(x,u),u),...m?[De(te(W,_),_)]:[]],R=w("id","title",s,"summary"),C=[];C.push((0,M.jsx)(n,{color:r.dim,children:A("\u250C","\u252C","\u2510",R)},"t")),C.push((0,M.jsxs)(n,{children:[R.map((v,E)=>(0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:E===0?"\u2502 ":" \u2502 "}),(0,M.jsx)(n,{bold:!0,children:v})]},E)),(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},"h")),C.push((0,M.jsx)(n,{color:r.dim,children:A("\u251C","\u253C","\u2524",R)},"m"));for(let[v,E]of c.entries()){let x=w(d(E),te(E.title,p),te(E.badge??"",u),te(E.summary??"",_)),W=E.badgeColor??In[E.badge??""]??r.dim;if(C.push((0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:"\u2502 "}),(0,M.jsx)(n,{color:r.assuranceAccent,children:x[0]}),(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[1],(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),(0,M.jsx)(n,{color:W,children:x[2]}),m?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[3]]}):null,(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},`r-${v}`)),E.marker){let L=w("",te(E.marker,p),"","");C.push((0,M.jsx)(n,{color:r.dim,children:`\u2502 ${L.join(" \u2502 ")} \u2502`},`mk-${v}`))}}return C.push((0,M.jsx)(n,{color:r.dim,children:A("\u2514","\u2534","\u2518",R)},"b")),(0,M.jsx)(M.Fragment,{children:C})}var Rn={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},Y=e=>Rn[e]??`${e}s`,Mt=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,Je=e=>e.kind??"use-case",_t=e=>`${Je(e)}:${e.temp_ref}`;function Lt(e){let i=e,s=i.badge??e.risk??null,c=i.why??e.summary??e.description??null;return JSON.stringify([e.title,s,c,i.extra??null,e.depends_on_hint??null])}function Ot(e){return e.filter(i=>i.role==="agent"&&typeof i.turnIndex=="number"&&Array.isArray(i.items)&&i.items.length>0)}function re(e){let i=new Map,s=1;for(let g of Ot(e)){let u=new Set;for(let m of g.items){let h=_t(m);if(u.has(h))continue;u.add(h);let S=i.get(h);i.set(h,{num:S?.num??s++,ref:m.temp_ref,kind:Je(m),item:m,turnIndex:g.turnIndex,fingerprint:Lt(m)})}}let c=[...i.values()].sort((g,u)=>g.num-u.num),d=[];for(let g of c){let u=d.find(m=>m.kind===g.kind);u?u.count++:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:c,byRef:i,counts:d}}function qt(e,i){let c=Ot(e).find(w=>w.turnIndex===i);if(!c)return null;let d=e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<=i),g=re(d),u=re(e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<i)),m=[],h=new Map,S=new Map,f=new Map,p=new Set;for(let w of c.items){let R=_t(w);if(p.has(R))continue;p.add(R);let C=u.byRef.get(R),v=w.changed===!0,E=g.byRef.get(R).num,x=Je(w);if(C&&!v&&C.fingerprint===Lt(w)){h.set(x,(h.get(x)??0)+1);continue}let W=!!C||v,L=W?f:S;L.set(x,(L.get(x)??0)+1),m.push({item:w,num:E,updated:W})}let _=[...h.entries()].map(([w,R])=>({label:Y(w),count:R})),A=[...[...S.entries()].map(([w,R])=>`${R} new ${R===1?Mt(w):Y(w)}`),...[...f.entries()].map(([w,R])=>`${R} updated ${R===1?Mt(w):Y(w)}`)].join(" \xB7 ");return{fresh:m,unchanged:_,headerStats:A}}function Ye(e,i){let s=e.entries.filter(g=>g.turnIndex===i);if(s.length===0)return e;let c=new Map(s.map(g=>[g.ref,g])),d=[];for(let g of s){let u=d.find(m=>m.kind===g.kind);u?u.count+=1:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:s,byRef:c,counts:d}}var k=V(j(),1);function Cn(e){let i=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??"?"}${i}${s}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${i}${s}`}var Bn=Math.min(process.stdout?.columns??100,120)-2;function Pt({block:e,annotations:i}){switch(e.kind){case"banner":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`})});case"user":return(0,k.jsxs)(I,{marginTop:1,children:[(0,k.jsx)(n,{color:r.orange,children:"\u276F "}),(0,k.jsx)(n,{children:e.text})]});case"note":return(0,k.jsx)(n,{color:r.dim,children:` ${e.text}`});case"agent":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)($t,{text:e.text,accent:r.assuranceAccent})});case"thinking":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`})});case"tool":return(0,k.jsx)(n,{color:r.dim,children:` ${It({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,k.jsx)(n,{color:r.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let s=i??null,c=s?s.fresh:e.items.map((f,p)=>({item:f,num:p+1,updated:!1})),d={usecase:"risk","use-case":"risk",ac:"check",scenario:"kind",test:"check",gap:"severity",stylenote:"kind"},g=f=>f.kind??"use-case",u=new Map;for(let f of c){let p=f.item,_=g(f.item),A=p.risk==="high"||p.risk==="med"||p.risk==="low"?p.risk:void 0,w={id:p.logical_id??"",staged:!p.logical_id,title:p.title,badge:p.badge??p.risk??"",summary:p.why??p.summary??p.description??"",...A?{risk:A}:{},...f.updated?{marker:"\u21B3 changed"}:{}},R=u.get(_)??[];R.push(w),u.set(_,R)}let m=c.some(f=>!!f.item.kind),h=(s?.unchanged??[]).reduce((f,p)=>f+p.count,0),S=s?.headerStats?` \u2014 ${s.headerStats}${h>0?` (${h} unchanged)`:""}`:"";return(0,k.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(0,k.jsxs)(n,{bold:!0,children:[m?"design":e.heading,S?(0,k.jsx)(n,{bold:!1,color:r.dim,children:S}):null]}),[...u.entries()].map(([f,p])=>(0,k.jsxs)(I,{flexDirection:"column",children:[u.size>1?(0,k.jsx)(n,{color:r.dim,children:`${Y(f)} \xB7 ${p.length}`}):null,(0,k.jsx)(Et,{rows:p,width:Bn,badgeHeader:d[f]??"info"})]},f)),s&&s.unchanged.length>0&&(0,k.jsx)(n,{color:r.dim,children:` \u22EE unchanged: ${s.unchanged.map(f=>`${f.count} ${f.label}`).join(" \xB7 ")}`})]})}case"answer":return(0,k.jsx)(n,{color:r.dim,children:Cn(e.receipt)});case"continued":return(0,k.jsx)(n,{color:r.dim,children:"\u21B3 continued"});case"commit":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:e.ok?r.green:r.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:` \u26A0 ${s}`},`w-${c}`))]});case"error":return(0,k.jsxs)(bt,{variant:"error",paddingX:1,children:[(0,k.jsx)(n,{color:r.red,children:e.title}),e.detail.map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:s},`d-${c}`))]});case"interrupted":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:r.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,k.jsx)(n,{color:r.dim,children:e.detail}):null]});case"pause":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,k.jsx)(n,{color:r.dim,children:`expires: ${e.expires_at}`}):null,(0,k.jsx)(n,{children:`resume: ${e.resume}`}),e.messageForm?(0,k.jsx)(n,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{bold:!0,children:"session summary"}),e.lines.map((s,c)=>(0,k.jsx)(n,{children:` ${s}`},`s-${c}`))]})}}var ue=V(j(),1);function Ft({item:e}){return(0,ue.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((i,s)=>(0,ue.jsx)(n,{dimColor:!0,children:`cite ${i.anchor??"conv"} \u2014 "${i.quote??""}"`},`cite-${s}`)),(e.depends_on_hint??[]).length>0&&(0,ue.jsx)(n,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([i,s])=>(0,ue.jsx)(n,{dimColor:!0,children:`${i}: ${s}`},`extra-${i}`))]})}var $=V(j(),1),Ze=(e,i)=>Math.max(0,Math.min(i,e));function Me(e,i,s){switch(i.type){case"move":return e.level==="detail"?{...e,scroll:Math.max(0,(e.scroll??0)+i.delta)}:{...e,cursor:Ze(e.cursor+i.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 Nt={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ut(e,i){if(e.level==="detail")return{level:"detail",cursor:Ze(e.num-1,Math.max(0,i.entries.length-1))};if(e.section){let s=i.entries.findIndex(c=>Nt[c.kind]===e.section);if(s>=0)return{level:"list",cursor:s}}return{level:"list",cursor:0}}function An(e){let i=[];for(let s of e.entries){let c=i.find(d=>d.kind===s.kind);c?c.entries.push(s):i.push({kind:s.kind,entries:[s]})}return i}var Wt=3;function Dn({items:e,cursor:i,verb:s,more:c}){let d=`view \xB7 ${s} so far \xB7 ${e.counts.map(u=>`${u.count} ${u.count===1?u.label.replace(/s$/,""):u.label}`).join(" \xB7 ")}`,g=e.entries[i];return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:d}),An(e).map(({kind:u,entries:m})=>{let h=g?.kind===u,S=h?m.findIndex(A=>A.ref===g.ref):-1,f=h?Ze(S-1,Math.max(0,m.length-Wt)):0,p=m.slice(f,f+(h?Wt:1)),_=m.length-p.length;return(0,$.jsxs)(I,{flexDirection:"column",children:[(0,$.jsx)(n,{color:r.dim,children:`${Nt[u]??Y(u)} \xB7 ${m.length}`}),p.map(A=>{let w=h&&A.ref===g.ref,R=A.item.badge;return(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:w?"\u203A ":" "}),(0,$.jsx)(n,{children:`${A.num} \xB7 ${A.item.title}`}),R?(0,$.jsx)(n,{color:r.dim,children:` \xB7 ${R}`}):null]},`${A.kind}:${A.ref}`)}),_>0&&(0,$.jsx)(n,{color:r.dim,children:` \u22EE ${_} more`})]},u)}),c?(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:i===e.entries.length?"\u203A ":" "}),(0,$.jsx)(n,{color:r.dim,children:`\u22EF show all \u2014 ${c.hidden} more from earlier turns`})]}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back"})]})}var Ee=14;function En({items:e,cursor:i,explain:s,grandTotal:c,dossier:d,scroll:g=0}){let u=e.entries[i];if(!u)return(0,$.jsx)(n,{color:r.dim,children:"nothing to show"});if(d){let h=Math.max(0,Math.min(g,Math.max(0,d.lines.length-Ee))),S=d.lines.slice(h,h+Ee);return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.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:r.dim,children:` \xB7 ${d.rawId}`}):null]}),(0,$.jsx)(n,{bold:!0,children:d.title}),h>0?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${h} above`}):null,S.map((f,p)=>(0,$.jsx)(n,{color:f.dim?r.dim:void 0,children:f.text},`dl-${p}`)),d.lines.length>h+Ee?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${d.lines.length-h-Ee} more`}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 scroll \xB7 esc back"})]})}let m=u.item;return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:`view \xB7 ${u.kind} ${u.num} of ${c??e.entries.length}`}),(0,$.jsx)(n,{children:u.item.title}),m.badge?(0,$.jsx)(n,{color:r.dim,children:`kind: ${m.badge}`}):null,m.why?(0,$.jsx)(n,{color:r.dim,children:m.why}):null,(0,$.jsx)(Ft,{item:u.item}),s?.map((h,S)=>(0,$.jsx)(n,{color:r.dim,children:h},`ex-${S}`)),(0,$.jsx)(n,{color:r.dim,children:"view-only \u2014 approvals happen in chat"}),(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Vt({items:e,state:i,verb:s,more:c,explain:d,grandTotal:g,dossier:u=null}){return i.level==="list"?(0,$.jsx)(Dn,{items:e,cursor:i.cursor,verb:s,more:c}):(0,$.jsx)(En,{items:e,cursor:i.cursor,explain:d,grandTotal:g,dossier:u,scroll:i.scroll??0})}var Mn={"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 jt(e){let i=(e??"").trim().toLowerCase();if(!i)return{level:"list"};if(/^\d+$/.test(i)){let c=parseInt(i,10);return c>=1?{level:"detail",num:c}:{error:"items are numbered from 1 \u2014 /view 1"}}let s=Mn[i];return s?{level:"list",section:s}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var B=V(j(),1),_n=6,Kt=12;function Ln(e,i,s){let c=Math.max(20,i),d=[];for(let u of e.split(`
3
- `)){if(u.length<=c){d.push(u);continue}let m="";for(let h of u.split(" "))m&&m.length+1+h.length>c?(d.push(m),m=h):m=m?`${m} ${h}`:h;d.push(m)}let g=Math.max(0,d.length-s);return{body:d.slice(-s).join(`
4
- `),hidden:g}}var _e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Qt(e){let i={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"?[{...i,detail:"the use-case changed since it was designed"},s]:[s,i]}function Ir({controller:e,verb:i="extract",onCtrlC:s,chain:c=null,inspect:d=null}){let[,g]=(0,b.useState)(0),[u,m]=(0,b.useState)(!1),[h,S]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),_=(0,b.useRef)(null),[A,w]=(0,b.useState)(null),R=(0,b.useRef)(null),C=t=>{R.current=t,w(t)},v=t=>{_.current=t,p(t),t===null&&C(null)},E=(0,b.useRef)([]),[x,W]=(0,b.useState)(null),L=(0,b.useRef)(null),P=t=>{L.current=t,W(t)},de=yt(),{stdout:Le}=Be(),Oe=Le?.columns??80,me=(0,b.useRef)(0),ge=(0,b.useRef)(0);(0,b.useEffect)(()=>{let t=()=>{let o=e.state.ledger;for(let y=me.current;y<o.length;y++){let T=o[y],q=T.kind==="turn"?qt(e.state.turns,T.turnIndex):void 0;de.append((0,B.jsx)(Pt,{block:T,annotations:q},`lg-${y}`))}me.current=o.length};t();let l=e.subscribe(()=>{t();let o=e.state;_.current&&(o.pending||o.status==="pausing")&&(v(null),o.pending&&S("questions arrived \u2014 back to chat")),g(y=>y+1)});return g(o=>o+1),l},[e,de]);let{thinking:Z,status:K,pending:D,confirm:F,ledger:O,activeTurn:H,stream:Te,notice:we}=e.state,et=(Te?.text??"").trimEnd(),tt=et.length>0,Ht=u&&(Z.liveThinking.length>0||Z.thinkingLog.length>0),zt=Ln(Z.liveThinking||Z.thinkingLog.map(t=>t.text).join(`
5
- `),Oe-6,Kt),nt=tt?et.split(`
6
- `).slice(-_n):[];H&&(ge.current=H.turnIndex);let Xt=D?D.resolution.filter(t=>!t).length:0,rt;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(l.kind==="banner"&&!l.text.startsWith("kane")){rt=l.text;break}}let fe=Z.activity[Z.activity.length-1],qe=fe?fe.status==="decision"?fe.label:St({name:fe.name,status:fe.status}):void 0,it=K==="streaming"||K==="working",[st,Gt]=(0,b.useState)(0);kt(()=>Gt(t=>t+1),it||x?.kind==="running"?120:null);let Jt=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,Yt=tt?"Writing\u2026":qe?`${qe.charAt(0).toUpperCase()}${qe.slice(1)}\u2026`:e.state.workingLabel??(i==="design"?"Designing\u2026":"Thinking\u2026"),Zt=e.state.turns.some(t=>t.role==="agent"),[en,tn]=(0,b.useState)(0),[nn,rn]=(0,b.useState)(!1),[ot,sn]=(0,b.useState)(null),pe=(0,b.useRef)(0),lt=(0,b.useRef)(!1),at=(0,b.useRef)(null),he=t=>{pe.current=t,tn(t)},ct=t=>{lt.current=t,rn(t)},ie=t=>{at.current=t,sn(t)},[Pe,on]=(0,b.useState)(0),Q=(0,b.useRef)(0),xe=t=>{Q.current=t,on(t)},ut=D?D.questions[0]?.id??"b":null;(0,b.useEffect)(()=>{D&&xe(D.cursor<0?0:D.cursor)},[ut,D?.cursor]);let Fe=()=>{let t=X.current;if(!t)return;let l=t.questions.length;for(let o=1;o<=l;o++){let y=(Q.current+o)%l;if(!t.resolution[y]){xe(y);return}}},dt=D?D.questions[Math.max(0,Math.min(D.questions.length-1,Pe))]:void 0,z=(0,b.useRef)(dt);z.current=dt;let X=(0,b.useRef)(D);X.current=D;let ln=D?`${ut}:${Pe}`:null;(0,b.useEffect)(()=>{if(ie(null),z.current){ct(!0);let t=X.current?.resolution[Q.current]?.selected_index;he(t??z.current.recommended_index??0)}else ct(!1)},[ln]);let $e=t=>{let l=X.current;return Ge(t,l?Ae(l)!=="":!1)},an={isFocused:()=>lt.current&&z.current!=null&&at.current==null||L.current!=null&&L.current.kind!=="running"||G.current&&ht.current==null,onMove:t=>{let l=z.current;if(l){he(Math.max(0,Math.min($e(l).maxSel,pe.current+t)));return}let o=L.current;if(o?.kind==="picker"){P({...o,sel:Math.max(0,Math.min(o.items.length-1,o.sel+t))});return}if(o?.kind==="ask"||o?.kind==="confirm"||o?.kind==="failed"){let y=(o.kind==="ask"?Se.current.length:o.kind==="failed"?Re.current.length:2)-1;P({...o,sel:Math.max(0,Math.min(y,o.sel+t))});return}o&&!G.current||G.current&&le(Math.max(0,Math.min(ye.current.length-1,He.current+t)))},onSelect:()=>{let t=z.current,l=X.current;if(!t||!l){let T=L.current;if(T?.kind==="picker"){let N=T.items[T.sel];N&&(N.designed?P({kind:"confirm",item:N,sel:0}):Ke(N,!1));return}if(T?.kind==="confirm"){Qt(T.item)[T.sel]?.key==="redesign"?Ke(T.item,!0):je();return}if(T?.kind==="ask"){let N=Se.current[T.sel]?.key;N==="another"?je():N==="view"?ze(""):P(null);return}if(T?.kind==="failed"){let N=Re.current[T.sel]?.key;N==="retry"?Ke(T.item,T.force):N==="view"?ze(""):P(null);return}if(T&&!G.current||!G.current)return;switch(ye.current[He.current]?.key){case"finish":e.completeSession();return;case"continue":e.continueParked();return;case"design-chain":je();return;case"view":ze("",ge.current);return;case"free":ae("");return}return}let o=$e(t),y=pe.current;if(o.batchIdx!=null&&y===o.batchIdx){e.goWithRecommendations();return}if(o.freeIdx!=null&&y===o.freeIdx){ie("");return}if(o.doneIdx!=null&&y===o.doneIdx){e.confirmMulti(Q.current),Fe();return}if(t.multi_select){e.toggleOption(Q.current,y);return}e.submitAnswer(Q.current,y),Fe()},onLeft:()=>{X.current&&xe(Math.max(0,Q.current-1))},onRight:()=>{let t=X.current;t&&xe(Math.min(t.questions.length-1,Q.current+1))},onDigit:t=>{let l=z.current;if(l){t-1<l.options.length&&he(t-1);return}let o=L.current;if(o?.kind==="picker"){t-1<o.items.length&&P({...o,sel:t-1});return}if(o?.kind==="ask"){t-1<Se.current.length&&P({...o,sel:t-1});return}if(o?.kind==="failed"){t-1<Re.current.length&&P({...o,sel:t-1});return}if(o?.kind==="confirm"){t-1<2&&P({...o,sel:t-1});return}if(!(o&&!G.current)&&G.current){let y=ye.current,T=0;for(let q=0;q<y.length;q++)if(!y[q].free&&(T+=1,T===t)){le(q);return}}},isMulti:()=>{let t=z.current;return!!t?.multi_select&&pe.current<(t?.options.length??0)},onSpace:()=>{X.current&&e.toggleOption(Q.current,pe.current)},onTab:()=>{let t=z.current;if(!t)return;let l=$e(t);l.batchIdx!=null&&he(l.batchIdx)},onType:t=>{let l=z.current;if(l){if(!l.allow_free_text)return;let o=$e(l);he(o.freeIdx??0),ie(t);return}if(!(L.current&&!G.current)&&G.current){let o=Rt(ye.current);if(o==null)return;le(o),ae(t)}},onBack:()=>{let t=L.current;if(t&&t.kind!=="running"){P(null);return}let l=X.current;if(l){for(let o=Q.current-1;o>=0;o--)if(l.resolution[o]){xe(o);return}}}},cn=ot!=null?{value:ot,onChange:t=>ie(t),onSubmit:t=>{ie(null),t.trim()&&X.current&&(e.submitFreeText(Q.current,t),Fe())},onCancel:()=>ie(null)}:null,mt=s??(()=>e.requestPause()),se=e.state.checkpoint,ke=x?.kind==="running"&&K==="idle",ve=K==="idle"&&Zt&&!D&&!f&&(!x||ke),G=(0,b.useRef)(!1);G.current=ve;let J=re(e.state.turns).entries.length,be,ee;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(!be&&l.kind==="commit"&&l.ok&&(be=l.line),!ee&&l.kind==="banner"&&l.text.startsWith("designing: ")&&(ee=l.text.slice(11)),be&&ee)break}let We;for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="user")break;if(l.kind==="commit"&&l.ok&&/\bapplied\b/.test(l.line)){We=l.line;break}}let ne=ee?{"acceptance criteria":"scenarios",scenarios:"acceptance criteria + exercises","acceptance criteria + exercises":"tests + gaps"}[ee]:void 0,un=(()=>{for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="agent")return l.text}return null})(),oe=/\?\s*$/.test((un??"").trimEnd()),gt=i==="design"&&!se&&(oe||ne!==void 0),ft=ee==="tests + gaps",Ie=x?.kind==="running"?x.title:"the design",pt=!!e.state.error&&!e.senderAlive(),dn=F?"the agent needs a clarification before it can apply that":ke&&!se?oe?`${Ie} \u2014 the agent asked a question`:We?`${Ie} \u2014 ${We}`:ft?`${Ie} \u2014 design complete`:`${Ie} \u2014 the agent is waiting on you`:se?ee?`${ee} done${ne?` \u2014 next: ${ne}`:""}`:be??"phase done":pt?"the agent stopped \u2014 the session is view-only":gt?oe?"the agent asked a question \u2014 answer or continue":`design incomplete \u2014 ${ne} not started`:be??"waiting on you",Ne=F?[{key:"free",label:"clarify \u2014 type which one you meant",free:!0}]:ke&&!se?ft&&!oe?[{key:"finish",label:"finish this design"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:[{key:"continue",label:oe?"continue \u2014 go with your suggestion":"continue designing"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish this design"},{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:se?[{key:"continue",label:ne?`continue to ${ne}`:"continue"},...J>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}]:pt?[...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"tell me what to change",free:!0}]:gt?[{key:"continue",label:oe?"continue \u2014 go with your suggestion":`continue \u2014 ${ne} next`},...J>0?[{key:"view",label:"view the design"}]:[],{key:"finish",label:"finish anyway"},{key:"free",label:"reply \u2014 answer and continue",free:!0}]:[{key:"finish",label:i==="design"?"finish":"looks good \u2014 finish the session"},...c?[{key:"design-chain",label:"design tests for a use-case\u2026"}]:[],...J>0?[{key:"view",label:i==="design"?"view the design":`view the ${J} draft${J===1?"":"s"}`}]:[],{key:"free",label:i==="design"?"keep adjusting \u2014 tell me what to change":"tell me what to change",free:!0}],Ue=[{key:"another",label:"design another use-case\u2026"},...J>0?[{key:"view",label:"view what was designed"}]:[],{key:"back",label:"done \u2014 back"}],Se=(0,b.useRef)(Ue);Se.current=Ue;let Ve=[{key:"retry",label:"try again"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"back",label:"back"}],Re=(0,b.useRef)(Ve);Re.current=Ve;let je=()=>{let t=c?.listUcs()??[];if(t.length===0){S("no use-cases to design yet");return}P({kind:"picker",items:t,sel:0})},Ke=(t,l)=>{let o={start:e.state.ledger.length,end:null};E.current.push(o);let y=()=>{o.end=e.state.ledger.length};P({kind:"running",title:t.title,item:t,force:l,startedAt:Date.now()}),c.runDesignChild(t.key,l).then(T=>{y(),T===0?(e.ledger({kind:"commit",ok:!0,line:`designed ${t.title}`}),P({kind:"ask",title:t.title,sel:0})):(e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 child exited ${T}`}),P({kind:"failed",item:t,force:l,detail:`child exited ${T}`,sel:0}))}).catch(T=>{y();let q=T instanceof Error?T.message:String(T);e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 ${q}`}),P({kind:"failed",item:t,force:l,detail:q,sel:0})})},ye=(0,b.useRef)(Ne);ye.current=Ne;let[mn,gn]=(0,b.useState)(0),[Qe,fn]=(0,b.useState)(null),He=(0,b.useRef)(0),ht=(0,b.useRef)(null),le=t=>{He.current=t,gn(t)},ae=t=>{ht.current=t,fn(t)},pn=`${ve}:${se}:${ge.current}`;(0,b.useEffect)(()=>{le(0),ae(null)},[pn]);let hn=Qe!=null?{value:Qe,onChange:t=>ae(t),onSubmit:t=>{ae(null),le(0);let l=t.trim();l&&(S(null),e.submit(l))},onCancel:()=>{ae(null),le(0)}}:null,ze=(t,l)=>{if(/^(uc|sc|ac|t|gap|sty)-\d+$/i.test(t.trim())){let q=t.trim().toLowerCase(),Ce=re(e.state.turns).entries.findIndex(U=>(U.item.logical_id??"").toLowerCase()===q);if(Ce<0){S(`${t.trim().toUpperCase()} isn't in this session's items \u2014 view lists what this session minted`);return}v({level:"detail",cursor:Ce,scroll:0}),C(null);return}let o=jt(t);if("error"in o){S(o.error);return}let y=re(e.state.turns);if(y.entries.length===0){S("nothing proposed yet \u2014 the first turn is still coming");return}if(o.level==="detail"&&o.num>y.entries.length){S(`no item ${o.num} \u2014 the set has ${y.entries.length} item${y.entries.length===1?"":"s"}`);return}let T=l!=null?Ye(y,l):y;v(Ut(o,T)),C(l!=null&&T.entries.length<y.entries.length?l:null)},xt=(0,B.jsx)(Bt,{verb:i,subject:rt,pendingCount:Xt,creditsTotal:e.state.credits?.total,state:ke?"waiting on you":D||ve||f||x&&x.kind!=="running"?"idle":void 0});if(f){let t=re(e.state.turns),l=A!=null?Ye(t,A):t,o=t.entries.length-l.entries.length,y=f.level==="list"&&o>0,T=l.entries.length+(y?1:0),q=l.entries[f.cursor],N=f.level==="detail"&&q?e.explainLines(q.item.slug??q.item.temp_ref):null,Ce=f.level==="detail"&&q&&d?d(q.item.logical_id??e.aliasOf(q.item.temp_ref)??q.item.temp_ref):null;return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(U=>!U),onCtrlC:mt,explorer:{isOpen:()=>_.current!==null,onMove:U=>v(_.current&&Me(_.current,{type:"move",delta:U},T)),onEnter:()=>{let U=_.current;if(U){if(U.level==="list"&&y&&U.cursor===l.entries.length){C(null);return}v(Me(U,{type:"enter"},T))}},onBack:()=>{v(_.current&&Me(_.current,{type:"back"},T)),setTimeout(()=>g(U=>U+1),0)}}}),(0,B.jsx)(Vt,{items:l,state:f,verb:i,more:y?{hidden:o}:null,explain:N,grandTotal:t.entries.length,dossier:Ce}),(we??h)&&(we??h).split(`
7
- `).map((U,xn)=>(0,B.jsx)(n,{color:r.orange,children:U},`nt-${xn}`)),xt]})}return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(t=>!t),onCtrlC:mt,panel:an}),Ht&&(0,B.jsx)(vt,{thinking:zt.body,expanded:!0,thinkingDone:K!=="streaming",maxLines:Kt+1}),nt.length>0&&(0,B.jsx)(I,{flexDirection:"column",children:nt.map((t,l)=>(0,B.jsx)(n,{children:wt(t).map((o,y)=>(0,B.jsx)(n,{bold:o.bold,italic:o.italic,color:o.code?r.dim:void 0,children:o.text},y))},`st-${l}`))}),D&&(0,B.jsx)(At,{batch:D,qView:Pe,sel:en,focused:nn,freeText:cn,multiSelFor:t=>e.multiSelection(t)}),F&&(0,B.jsx)(n,{color:"yellow",children:F.prompt}),(we??h)&&(we??h).split(`
8
- `).map((t,l)=>(0,B.jsx)(n,{color:r.orange,children:t},`nt-${l}`)),it&&!D&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} ${Yt} `,(0,B.jsx)(n,{color:r.dim,children:`(${Jt}s)`})]}),ve&&(0,B.jsx)(ce,{headline:dn,rows:Ne,sel:mn,focused:Qe==null,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 type = your own words",freeText:hn}),x?.kind==="picker"&&(0,B.jsx)(ce,{ask:!0,headline:"design tests for which use-case?",rows:x.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="confirm"&&(0,B.jsx)(ce,{ask:!0,headline:`${x.item.title} is already designed${x.item.designed==="stale"?" \u2014 and the use-case has changed since":""}`,rows:Qt(x.item).map(t=>({key:t.key,label:t.label,detail:t.detail})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="running"&&!ke&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} Designing ${x.title}\u2026 `,(0,B.jsx)(n,{color:r.dim,children:`(${Math.floor((Date.now()-x.startedAt)/1e3)}s)`})]}),x?.kind==="ask"&&(0,B.jsx)(ce,{headline:`designed ${x.title}`,rows:Ue,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="failed"&&(0,B.jsx)(ce,{headline:`design failed \u2014 ${x.item.title} (${x.detail})`,rows:Ve,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),K==="pausing"&&(0,B.jsx)(n,{color:r.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}),xt]})}export{Ir as ChatSurface,Ln as tailVisualRows};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-2H3XNXL3.js";import"./chunk-VYQMCLKG.js";import"./chunk-7APDXIKI.js";import"./chunk-6JTEWZ75.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-SACSQY3Q.js";import"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-YJIESLN6.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.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-DHF3VO2R.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import"./chunk-6JTEWZ75.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RH4GCEFX.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-DFS4RMVP.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-26H3PDVN.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-NVGBE2DR.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{c as makeChatController,b as questionStub,a as recommendationPicks};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Z,d as ee,e as te,f as ne}from"./chunk-GG43HSU2.js";import{b as B,d as Y}from"./chunk-OSALXGD4.js";import{d as X}from"./chunk-NVGBE2DR.js";var oe=new Set(["approve","edit","reject"]);function ae(i,t){return`chatop:${t}:${i.target??"new"}:${i.op}:${i.seq}`}function ue(i,t,x,k){let c=ae(i,t),f=i.payload;switch(i.op){case"approve":return{kind:"approve",target:i.target,expectedCid:i.expected_cid,eventId:c};case"edit":{let{reason:o,...b}=f;return{kind:"edit",target:i.target,expectedCid:i.expected_cid,edit:b,reason:o,eventId:c}}case"enhance":return{kind:"enhance",target:i.target,expectedCid:i.expected_cid,edges:f.edges??[],eventId:c};case"reject":return{kind:"reject",target:i.target,expectedCid:i.expected_cid,reason:f.reason??"",redirectTo:f.redirect_to,eventId:c};case"add":{let o=f.proposal_item??{},b=String(o.label??"");if(!x.mint_gate.includes(b))throw new Error(`GATED_LABEL: cannot mint "${b}" (gate: ${x.mint_gate.join(", ")})`);let u=o.cite??{},p=o.conv_source_id??k;if(!p||typeof u.turn!="number"||!u.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:b,content:o.content??{},cite:{turn:u.turn,quote:u.quote},convSourceId:p,rationale:o.rationale,eventId:c}}}}function re(i,t,x={}){let k=x.turn??0,c=[],f=[];for(let u of i)(u.op==="add"||u.op==="enhance")&&f.push(u);let o=new Map;for(let u of i){if(!oe.has(u.op)||!u.target)continue;let p=o.get(u.target)??[];p.push(u),o.set(u.target,p)}for(let[u,p]of o){let w=Math.max(...p.map(_=>_.seq)),C=p.filter(_=>_.seq===w);if(C.length>1){c.push({target:u,seq:w,kinds:C.map(_=>_.op)});continue}f.push(C[0])}return{chatOps:f.sort((u,p)=>u.seq-p.seq).map(u=>ue(u,k,t,x.convSourceId)),ambiguous:c}}function ce(i){let t=[];return i.questions.forEach((x,k)=>{if(i.resolution[k])return;let c=x.recommended_index!=null?x.options[x.recommended_index]?.label:void 0;c!=null&&t.push(x.risk==="high"?`${c} \u203C`:c)}),t.length>3?`${t.slice(0,3).join(" \xB7 ")} \xB7 +${t.length-3} more`:t.join(" \xB7 ")}function ie(i){let t=i.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function le(i){return i.use_cases??[]}var de={acs:"acceptance criteria",scenarios:"scenarios",tests:"tests",gaps:"gaps"};function ge(i){let t=[],x=[],k=(o,b)=>{b.length!==0&&(x.push(o),t.push(...b))},c=o=>typeof o=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(o)?o:null,f=o=>{let b=c(o.automates)??"1 scenario",u=o.verifies??[],p=u.map(c).filter(_=>_!==null).slice(0,2),w=u.length-p.length,C=p.length?`${p.join(" ")}${w>0?` +${w}`:""}`:`${u.length} ACs`;return`covers ${b} \xB7 verifies ${C}`};return k("acs",(i.acs??[]).map(o=>({temp_ref:o.temp_ref,title:o.text,kind:"ac",badge:String(o.kind),extra:{...o.expected_answer?{expects:`${String(o.expected_answer.operator??"")} \xB7 ${String(o.expected_answer.operand??"")}`}:{},"scoped to":o.scoped_to??"(use-case)"}}))),k("scenarios",(i.scenarios??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"scenario",badge:o.case_type,why:o.intent,depends_on_hint:o.depends_on??[],extra:{technique:o.technique_notes}}))),k("tests",(i.tests??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"test",why:f(o),depends_on_hint:o.reuses??[],extra:{automates:String(o.automates??"?"),verifies:(o.verifies??[]).join(", "),check:o.check?`${String(o.check.kind)} vs ${String(o.check.verified_against)}`:"?"}}))),k("gaps",(i.gaps??[]).map(o=>({temp_ref:o.temp_ref??o.ref??"?",title:String(o.question?.header??o.kind),kind:"gap",badge:o.kind,why:o.risk_rationale}))),{items:t,heading:x.join(" + ")||"design"}}function be(i={}){let t={turns:[],thinking:ee(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},x=e=>{let n=[],r=e.minted.map(a=>a.slug).filter(Boolean);r.length&&n.push(`added ${r.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},k=[];i.onRender&&k.push(i.onRender);let c=0,f=0,o=null,b=null,u=null,p=[],w=0,C=e=>{if(!(!u||!i.contextDir||!e.trim()))try{let n=i.refreshGraph?.()??i.graph;if(!n)return;Y({contextDir:i.contextDir,graph:n,sourceId:u,text:e,by:i.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!u||!i.contextDir)return;let n=i.refreshGraph?.()??i.graph,r=n?.heads.get(u),s=n?.convChains.get(u);if(!n||typeof r!="string"||!s)return;let a=n.getNode(r)?.content?.blob,g=typeof a=="string"?X(i.contextDir,a)?.toString("utf8")??"":"";if(g)for(let y of e){if(y.kind!=="add"||y.convSourceId!==u)continue;let E=B(g,y.cite.turn);if(!(E!==null&&E.includes(y.cite.quote)))for(let S=s.turns;S>=1;S--){let N=B(g,S);if(N!==null&&N.includes(y.cite.quote)){y.cite={...y.cite,turn:S};break}}}},P=null,F=new Map,Q=new Map,G=null,m=()=>{D&&(clearTimeout(D),D=null);for(let e of k)e()},D=null,U=()=>{D||(D=setTimeout(()=>{D=null;for(let e of k)e()},80))},d=e=>{t.ledger.push(e)},R=null,O=!1,q=(e=!1)=>{R?d({kind:"agent",text:R}):e&&O&&d({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),R=null,O=!1},se=()=>{R=null,O=!1},T=null,W=e=>{if(T){if(e)for(let n of T.items){let r=e.get(n.temp_ref);r&&(n.logical_id=r)}d({kind:"turn",...T}),T=null}},A=()=>{W(),t.activeTurn&&(t.activeTurn=null)},z=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),L=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,a)=>{let g=e.resolution[a];return g.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:g.free_text!=null?{id:s.id,selected_index:null,free_text:g.free_text}:{id:s.id,selected_index:g.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let r=P;P=null,r?.(n)},j=(e,n)=>{let r=t.pending,s=r.questions[e],a=r.resolution[e];r.resolution[e]=n;let g=ie(s);a?d({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:g,choice:z(s,n),prev:a.choice}}):n.form==="deferred"?d({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:g}}):d({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:g,choice:z(s,n)}})},H=()=>{let e=t.pending;e&&(e.questions.forEach((n,r)=>{e.resolution[r]||j(r,{form:"deferred",selected_index:null,free_text:null,choice:""})}),L())},I=new Map,K=e=>{I.clear();let n={high:0,med:1,low:2};return e=e.map((r,s)=>({q:r,i:s})).sort((r,s)=>(n[r.q.risk]??3)-(n[s.q.risk]??3)||r.i-s.i).map(({q:r})=>r),{questions:e,cursor:0,resolution:e.map(()=>null)}};return{state:t,explainLines(e){if(!i.explain||!i.graph||i.contextDir===void 0)return null;let n=i.explain(i.contextDir,i.graph,e);return n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(r=>` [${r.kind}] ${r.rationale??r.detail}`)]:null},explainRef(e){if(!i.explain||!i.graph||i.contextDir===void 0){d({kind:"note",text:"explain isn't available here"}),m();return}let n=i.explain(i.contextDir,i.graph,e),r=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
3
- `):`unknown ref: ${e}`;d({kind:"note",text:r}),m()},subscribe(e){return k.push(e),()=>{let n=k.indexOf(e);n>=0&&k.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),!t.pending){if(!o){t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",m();return}for(t.notice=void 0,t.checkpoint=!1,q(),t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,f+=1;p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});o({type:"user_message",message_id:`u${f}`,text:e}),m()}},attachSender(e){let n=o;return o=e,()=>{o=n}},attachOnCommitted(e){b=e},attachConversationSource(e){u=e},holdReceipt(e){p.push(e),t.checkpoint=!0,m()},drainHeldReceipts(){return p.splice(0,p.length)},submitAnswer(e,n){let r=t.pending,s=r?.questions[e],a=s?.options[n]?.label;!r||!s||a==null||(j(e,{form:"answered",selected_index:n,free_text:null,choice:a}),L(),m())},submitFreeText(e,n){let r=t.pending,s=r?.questions[e],a=n.trim();!r||!s||!a||(j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m())},toggleOption(e,n){let r=t.pending?.questions[e];if(!r||r.options[n]==null)return;let s=I.get(e)??new Set;s.has(n)?s.delete(n):s.add(n),I.set(e,s),m()},multiSelection(e){return[...I.get(e)??[]].sort((n,r)=>n-r)},confirmMulti(e){let n=t.pending,r=n?.questions[e];if(!n||!r)return;let s=[...I.get(e)??[]].sort((g,y)=>g-y).map(g=>r.options[g]?.label).filter(g=>g!=null);if(s.length===0)return;I.delete(e);let a=s.join(", ");j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m()},goWithRecommendations(){let e=t.pending;if(!e)return{picks:""};let n=ce(e),r=null;return e.questions.forEach((s,a)=>{if(e.resolution[a])return;let g=s.recommended_index,y=g!=null?s.options[g]?.label:void 0;if(y==null){r===null&&(r=a);return}j(a,{form:"assumed",selected_index:g,free_text:null,choice:y})}),r!==null?(e.cursor=r,m(),{blocked:r}):(L(),m(),{picks:n})},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let r=n-1;r>=0;r--)if(e.resolution[r]){e.cursor=r,m();return}},continueParked(){if(o){for(t.checkpoint=!1,d({kind:"continued"});p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});f+=1,o({type:"user_message",message_id:`u${f}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),m()}},note(e){d({kind:"note",text:e}),m()},aliasOf(e){return Q.get(e)},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid);W(new Map(e.filter(n=>n.id).map(n=>[n.ref,n.id]))),m()},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}m()},ledger(e){e.kind==="commit"&&W(),(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(A(),q()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),d(e),e.kind==="commit"&&(e.ok?q(!0):se()),m()},senderAlive(){return o!=null},completeSession(){H(),o?.({type:"session_complete"}),t.status="idle",m()},requestPause(){H(),t.status="pausing";let e=o;Promise.resolve().then(()=>e?.({type:"pause"})),m()},ask(e){return t.pending=K(e),F=new Map(e.map((n,r)=>[n.id,r+1])),t.status="awaiting-input",m(),new Promise(n=>{P=n})},noteCoercion(e,n){d({kind:"answer",receipt:{form:"assumed",qNum:F.get(e.id)??0,stub:ie(e),choice:n,note:"your typed answer couldn't be used here"}}),m()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=ne(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)d({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")d({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let r=`\xB7 ${te(e)}`,s=t.ledger.length-1;for(;s>=0&&t.ledger[s].kind==="tool";)s--;let a=t.ledger[s];a&&a.kind==="note"&&a.text===r||d({kind:"note",text:r})}}if(e.type==="reasoning_delta"){U();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=G;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(G={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},U();return}case"progress":break;case"proposal":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=le(e.proposal),r=i.dedupFlags?.(e.proposal);if(r)for(let s of n){let a=r.get(s.temp_ref);a&&(s.matches_existing=a)}t.turns.push({role:"agent",turnIndex:c,items:n,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:"use-cases",items:n},T={turnIndex:c,heading:"use-cases",items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:r}=ge(e.design),s=r.split(" + ").map(a=>de[a]??a).join(" + ");d({kind:"banner",text:`designing: ${s}`}),t.turns.push({role:"agent",turnIndex:c,items:n,itemsHeading:r,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:r,items:n},T={turnIndex:c,heading:r,items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=K(e.questions),t.status="awaiting-input";break;case"chat_ops":{c+=1,A(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,r=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",a=i.refreshGraph?.()??i.graph,g=l=>Q.get(l)??l,y=r.map(l=>{if(!l.target)return l;let h=g(l.target),v=l.expected_cid;if(v==null&&a){let J=a.resolve(h);J&&(v=a.tipOf(J.cid))}let $=l.payload?.redirect_to,M=$&&g($);return h===l.target&&v===l.expected_cid&&M===$?l:{...l,target:h,expected_cid:v,...M!==$?{payload:{...l.payload,redirect_to:M}}:{}}}),E;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");E=re(y,i.descriptor??{mint_gate:[]},{turn:c,...u?{convSourceId:u}:{}})}catch(l){t.error=l instanceof Error?l.message:String(l),t.turns.push({role:"agent",turnIndex:c,text:s,narration:t.error}),s&&d({kind:"agent",text:s}),d({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:N}=E;if(N.length>0){let l=N[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${l.kinds.filter(h=>h!=="edit").join("/")} on ${l.target}?`},t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});break}if(_(S),i.commitChatTurn&&S.length>0){let l=i.commitChatTurn({contextDir:i.contextDir??"",graph:i.refreshGraph?.()??i.graph,ops:S,by:i.by??{kind:"human",id:"owner"},...i.descriptor?.mint_gate?{mintable:i.descriptor.mint_gate}:{}});if(l.errors)t.error=l.errors.map(h=>h.detail).join("; "),t.turns.push({role:"agent",turnIndex:c,text:s}),d({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:l.errors.map(h=>`${h.code}: ${h.detail}`)}),p.push(["COMMIT FAILED (chat turn) \u2014 nothing landed; do not assume any of your last ops applied.",...l.errors.map(h=>`- ${h.code}: ${h.detail}`),...l.errors.some(h=>h.code==="UNKNOWN_FIELD")?["If you were changing citations or matched-existing content, that is proposal territory (approve/re-propose) \u2014 a chat edit can only replace a node's own schema fields."]:[]].join(`
4
- `)),s&&d({kind:"agent",text:s});else{l.applied.length>0&&i.session?.markApplied(l.applied);let h=x(l);t.turns.push({role:"agent",turnIndex:c,text:s,narration:h}),d({kind:"commit",ok:!0,line:h});let v=i.refreshGraph?.();if(v&&b&&b(v),v)try{w+=1;let V=i.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=Z({verb:V,commitN:w,phase:"chat",committed:l.minted.map(M=>({cid:M.cid,...M.slug?{logical_id:M.slug}:{}}))},v);p.push($.text)}catch{}s&&d({kind:"agent",text:s})}}else t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});C(s);break}case"done":case"session_complete":A(),q(),t.status="idle",o=null;break;case"error":A(),q(),t.stream=null,t.status="idle",t.error=e.message,o=null,d({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}m()}}}export{ce as a,ie as b,be as c};
@@ -1,7 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as b}from"./chunk-6JTEWZ75.js";import{a as O}from"./chunk-RH4GCEFX.js";import{e as w,j as N}from"./chunk-2KS2YRIS.js";import{spawn as U,execSync as B}from"child_process";import{appendFileSync as L,existsSync as E,mkdirSync as K}from"fs";import{homedir as D}from"os";import{join as G,resolve as t,dirname as C}from"path";import{fileURLToPath as W}from"url";import{createInterface as V}from"readline";async function*T(e){let n=V({input:e,crlfDelay:1/0});for await(let l of n){let r=l.trim();if(r)try{let a=JSON.parse(r);a&&typeof a.type=="string"&&(yield a)}catch{}}}function M(e){return e==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function h(e){return e?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function I(e){return e==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=C(W(import.meta.url));function j(){for(let e of["python3","python"])try{return B(`${e} --version`,{stdio:"ignore"}),e}catch{}return null}function $(){let n=process.platform==="win32"?"v16-runner.exe":"v16-runner",l={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},r=`${process.platform}-${process.arch}`,a=l[r];if(a)for(let s of a){let m=[t(o,"..","node_modules",s,"bin",n),t(o,"..","..","node_modules",s,"bin",n),t(o,"..","..","..","node_modules",s,"bin",n),t(o,"..","..","..","..","node_modules",s,"bin",n)];for(let u of m)if(E(u))return{cmd:u,args:[]}}let f=[t(o,"bin",n),t(o,"..","bin",n),t(o,"..","..","..","..","v16-runner","dist",n),t(o,"..","..","..","v16-runner","dist",n),t(o,"..","..","v16-runner","dist",n),t(process.cwd(),"v16-runner","dist",n),t(process.cwd(),"..","v16-runner","dist",n)];for(let s of f)if(E(s))return{cmd:s,args:[]};let v=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let s of v)if(E(t(s,"main.py"))){for(let u of[t(s,".venv","bin","python"),t(s,"..",".venv","bin","python"),t(s,"..","browser-agent",".venv","bin","python")])if(E(u))return{cmd:u,args:["main.py"],cwd:s};let m=j();if(m)return{cmd:m,args:["main.py"],cwd:s}}return null}function ie(e,n){let l=$();if(!l)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(l)}
3
- `);let r={...process.env};n?.environment&&(r.TESTMUAI_ENV=n.environment),r.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(r.PYTHONIOENCODING="utf-8");let a=O(n?.environment);r.V16_SERVER_API_HOST=a.v16ServerHost,r.ATMS_URL=a.tmsBaseUrl.replace(/\/api\/?$/,""),e.username&&e.access_key&&(r.LT_USERNAME=e.username,r.LT_ACCESS_KEY=e.access_key),e.session_id&&(r.TESTMUAI_SESSION_ID=e.session_id);let f=M(n?.mode??"testing");Object.assign(r,f.set);for(let i of f.unset)delete r[i];let v=new b().load(),s=I(n?.assertionMode??(v.assertion_mode==="visual"?"visual":"dom"));Object.assign(r,s.set);for(let i of s.unset)delete r[i];let m=n?.finalValidation??v.final_validation,u=h(m);Object.assign(r,u.set);for(let i of u.unset)delete r[i];let g=process.env.KANE_AP_MODE,S=g?{v1:"v1",v2:"v2"}[g]:void 0;S!==void 0&&e.ap_mode===void 0&&(e.ap_mode=S),e.telemetry_proxy_url===void 0&&process.env.KANE_TELEMETRY!=="0"&&(e.telemetry_proxy_url=N),e.media_upload===void 0&&e.org_id&&e.username&&e.access_key&&(e.media_upload={url:a.shareApiBaseUrl.replace(/\/$/,"")+"/mfs/v1.0/media/upload",artefacts_host:a.mediaArtefactsHost,org_id:e.org_id,media_dir:w});let d=U(l.cmd,l.args,{stdio:["pipe","pipe","pipe"],env:r,cwd:l.cwd});d.stdin.on("error",()=>{}),d.stdin.write(JSON.stringify(e)+`
4
- `);let p=e.session_id?G(D(),".testmuai","kaneai","sessions",e.session_id,"runner-stderr.log"):null;if(p)try{K(C(p),{recursive:!0}),L(p,`--- runner spawn ${new Date().toISOString()} run_index=${e.run_index} ---
5
- `)}catch{}let R=1e5,_="";d.stderr.on("data",i=>{if(_+=i.toString(),_.length>R&&(_=_.slice(-R)),p)try{L(p,i)}catch{}}),d.on("error",i=>{n?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:i.message})});let A=null,y=null,k=new Promise(i=>{d.on("close",(c,x)=>{A=c,y=x?String(x):null,n?.log?.("info","RUNNER_EXIT","Runner exited",{code:c,signal:y??"none"}),i({code:c,signal:y})})}),P=T(d.stdout);return{child:d,events:P,sendUserResponse(i){let c=JSON.stringify({type:"user_response",answer:i});try{d.stdin.write(c+`
6
- `)}catch{}},sendCancel(i){let c=JSON.stringify({type:"cancel",reason:i});try{d.stdin.write(c+`
7
- `)}catch{}},cancel(){d.kill("SIGTERM")},get stderr(){return _},get exitCode(){return A},get exitSignal(){return y},exited:k}}export{$ as a,ie as b};
@@ -1,5 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as M,b as B,c as oe,d as P}from"./chunk-2YQ6TW77.js";import{a as F}from"./chunk-WAOCHXJ5.js";import{b as z}from"./chunk-CJJXT5DO.js";import{a as U}from"./chunk-2WVKOZ6W.js";import{a as j}from"./chunk-NLCCBXXV.js";import{a as k}from"./chunk-RZ4F3BHX.js";import{e as se}from"./chunk-UR6MHSHU.js";import{readFileSync as te,existsSync as C,readdirSync as ye,mkdirSync as D,writeFileSync as x}from"fs";import{readFile as ne,unlink as Re}from"fs/promises";import{join as E}from"path";import{randomUUID as A}from"crypto";var re="/home/kaneai/Downloads";function N(t){return`${re}/${t}`}function $(t){return"FILE__"+t.replace(/[^A-Za-z0-9]/g,"_")}function S(t){let e=t?.media;return!e||!e.name||!e.media_url?null:{media_id:e.media_id??"",name:e.name,media_url:e.media_url,type:e.type??"doc"}}function K(t){return t?t.includes(`
3
- `)?t.split(`
4
- `).map(e=>e.trim()).filter(Boolean):t.split(". ").map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith(".")?e:e+"."):[]}function L(t,e){return!t||!e?t:t.replace(/\{\{(.+?)\}\}/g,(n,i)=>{let s=e[i];return s?s.value:n}).replace(/\$\{(.+?)\}/g,(n,i)=>{let s=e[i];return s?s.value:n})}var ae={click:"CLICK",double_click:"CLICK",type:"TYPE",fill:"TYPE",select:"SELECT",hover:"HOVER",drag:"DRAG_DROP",upload_files:"UPLOAD_FILE",navigate:"OPEN",go_back:"NAVIGATE",go_forward:"NAVIGATE",refresh:"REFRESH",press_key:"SENDKEYS",scroll:"SCROLL_PIXELS",scroll_into_view:"SCROLL_UNTIL_ELEMENT",wait:"WAIT",wait_until:"WAIT_UNTIL",wait_for_load:"WAIT_FOR_LOAD",switch_tab:"SWITCH_TAB",new_tab:"NEW_TAB",close_tab:"CLOSE_TAB",api:"API",evaluate_js:"EVALUATE_JS",vision_query:"VISION_QUERY",textual_query:"TEXTUAL_QUERY",get_url:"GET_URL",get_title:"GET_TITLE",assert:"ASSERTION",math:"MATHEMATICAL_OPERATION",set_cookies:"SET_COOKIES",delete_cookies:"DELETE_COOKIES",clear_cookies:"CLEAR_COOKIES",set_local_storage:"SET_LOCAL_STORAGE",delete_local_storage:"DELETE_LOCAL_STORAGE",clear_local_storage:"CLEAR_LOCAL_STORAGE",set_clipboard:"SET_CLIPBOARD",paste_clipboard:"PASTE_CLIPBOARD",clear_clipboard:"CLEAR_CLIPBOARD"},G={literal:"SET_VARIABLE",condition:"SET_VARIABLE",visual:"VISION_QUERY",dom:"TEXTUAL_QUERY",url:"GET_URL",title:"GET_TITLE",devtool_network:"DEVTOOLS_NETWORK_QUERY",devtool_console:"DEVTOOLS_CONSOLE_QUERY",devtool_cookies:"DEVTOOLS_COOKIES_QUERY",devtool_storage:"DEVTOOLS_STORAGE_QUERY",devtool_performance:"DEVTOOLS_PERFORMANCE",api_response:"API_CALLS_QUERY",textual_visual:"TEXTUAL_ANALYZER"},le=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD_FILE","VISION_QUERY","DRAG_DROP","SELECT"]);function X(t,e){if(t==="analyze"){let i=e?.action_params?.analyzer_type??"";return G[i]}let n=ae[t];return n||console.warn(`[migrator] UNKNOWN action_type "${t}" \u2014 falling back to "${t.toUpperCase()}"; explicit mapping required`),n??t.toUpperCase()}function Y(t,e){if(!t||!e)return"";try{let n=new Date(t);return isNaN(n.getTime())?"":new Date(n.getTime()+e).toISOString()}catch{return""}}function W(t){try{return JSON.parse(t.output_value??"{}")}catch{return{}}}function ce(t){let e=t.output_variable??"";if(!e)return"[]";let i={...W(t)};return delete i.body,JSON.stringify([{name:e,unique_key:(t.action_id??"").replace(/-/g,"").slice(0,8)||A().replace(/-/g,"").slice(0,8),value:i,variable_description:"API Response"}])}function ue(t,e,n){let i=t.action_params??{},s=le.has(e)?"Vision Agent":"Operation Agent",a={operation_type:e};if(e==="OPEN"&&(a.url=i.url??""),e==="SET_VARIABLE"&&(a.variable_name=t.output_variable??i.key??"",a.variable_value=t.output_value??""),e==="UPLOAD_FILE"){let f=S(i);f&&(a.value=N(f.name))}let o={},l={},r=t.action_instruction??"",c=i.text??"",u=i.url??"",p=[["intent",r],["value",c],["url",u]];for(let[f,h]of Object.entries(n)){let b=String(h);if(f.startsWith("secrets."))for(let[I,v]of p)v.includes(b)&&(l[I]=f);for(let[I,v]of p)v.includes(b)&&!(I in o)&&(o[I]=v)}let _=t.action_type,d={operation:t.action_instruction??"",agent:s,operation_dict:a,reasoning:_==="analyze"?i.query??"":t.intent??t.action_instruction??"",variable:o,secrets:l,params:{}};_==="analyze"&&typeof i.code=="string"&&i.code&&(d.code=i.code),_==="analyze"&&typeof i.code_js=="string"&&i.code_js&&(d.code_js=i.code_js),_==="analyze"&&typeof i.condition_expression=="string"&&i.condition_expression&&(d.condition_expression=i.condition_expression),i.uses_websocket===!0&&(d.uses_websocket=!0),i.uses_sse===!0&&(d.uses_sse=!0),_==="analyze"&&i.analyzer_type==="textual_visual"&&(typeof i.wrapped_js=="string"&&(d.wrapped_js=i.wrapped_js),Array.isArray(i.locators)&&(d.locators=i.locators),typeof i.operator=="string"&&(d.operator=i.operator),Array.isArray(i.transforms)&&(d.transforms=i.transforms),typeof i.query=="string"&&(d.query=i.query),typeof i.expected_value=="string"&&(d.expected_value=i.expected_value),typeof i.needs_unit_conversion=="boolean"&&(d.needs_unit_conversion=i.needs_unit_conversion),typeof i.condition=="string"&&(d.condition=i.condition));let m={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[_];return m&&i[m]!==void 0&&(d[m]=i[m]),_==="set_clipboard"&&typeof i.html=="string"&&i.html&&(d.html=i.html),d}function de(t){let e=t.assertion_tree??{};if(typeof e.passed=="boolean")return e.passed;let n=e.sub_results??[];return n.length===0?e.status==="passed":(e.composite_operator??"and")==="or"?n.some(s=>s.passed===!0):n.every(s=>s.passed===!0)}function H(t){return t.map(e=>({description:e.description??"",store_key:e.store_key??"",expected_value:e.expected??"",extracted_value:e.extracted_value??"",operator:e.operator??"equals",transforms:e.transforms??[]}))}function _e(t){let e=t.assertion_tree??{},n=e.sub_results??[],i=H(n);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:n,sub_checks:i,composite_operator:e.composite_operator??"and",verification:e.verification??"",claim:e.description??""}}function pe(t){let n=(t.action_params??{}).assertion_tree??{},i=n.sub_results??[],s=H(i);return[{operation:t.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:i,sub_checks:s,composite_operator:n.composite_operator??"and",verification:"",claim:n.description??t.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function ge(t,e,n,i){let s=t.visual_data;if(!s||s.x==null||s.y==null)return null;let a=e?`${e}/test_screenshots`:"";return{x:s.x,y:s.y,confidence:0,bbox:s.bbox??null,bbox_source:s.bbox?"accessibility_tree":"fallback",viewport_width:s.viewport_width??1280,viewport_height:s.viewport_height??800,scale_factor:null,raw_image_url:a?`${a}/untagged_screenshot/${n}.${i?.get(n)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function V(t,e={},n="",i){let s=t.action_type,a=X(s,t),o=t.action_params??{},l=t.coordinates??null,r=t.selectors??null,c=!!(r&&r.length>0),u=t.timestamp??"",p=t.duration_ms??0,_=t.variables_used??{},d=t.action_id??A(),g=A(),m=Y(u,p),f="",h="";if(s==="navigate")h=o.url??"",f=h;else if(s==="type"||s==="fill")f=o.text??"";else if(s==="press_key")f=o.key??"";else if(s==="wait")f=String(o.ms??o.timeout_ms??"");else if(s==="evaluate_js")f=o.script??"";else if(s==="upload_files"){let y=S(o);y&&(f=N(y.name))}else s==="analyze"&&a==="SET_VARIABLE"&&(f=t.output_value??"");let b="";s==="go_back"?b="back":s==="go_forward"&&(b="forward");let I=L(f,e),v=L(h,e),O=L(t.action_instruction??"",e),R=ue(t,a,_);return{operation_id:d,instruction_id:g,instruction:O,intent:O,operation_start:u,operation_end:m,status:t.status??"",command:a,name:"",target:"",value:I,message:"",operation_dict:"",frame:t.frame_info?JSON.stringify(t.frame_info):"",error_message:t.error??"",code_snippet:"",sub_instruction_obj:JSON.stringify(R),test_id:"",test_version:"",action:"",string_to_float:!1,feedback_msg:"",time_taken:"",create_time_stamp:"",update_time_stamp:"",locator_variable:"",locator_variable_name:"",image_url:n?`${n}/test_screenshots/untagged_screenshot/${d}.${i?.get(d)??"png"}`:"",alternative_xpaths:[],attribute:"",value_description:"",url:v,navigation_direction:b,tagified_image_url:"",query_variable_name:t.output_variable??"",query_variable_value:t.output_value??"",query_variable_type:"",expected_value:"",queried_value:"",operator:"",assertion_status:a==="ASSERTION"?de(o):"",query_info_dict:{},query_content_confidence:"none",debugging_logs:[],locator_index:0,query_html:"",user_variables:"[]",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,tab_index:String(o.tab_index??""),tab_identifier:String(o.tab_identifier??""),scroll_value:o.amount??1,scroll_direction:o.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:s==="evaluate_js"?o.script??"":"",code_error:"",hide:!1,dismiss_dialog:!1,use_v2_mobile_tagging:!1,multiple_inputs:!1,dialog_action:"",dialog_type:"",is_coordinates_used_for_interaction:l!==null&&!c,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:c?null:l?.x??null,y_coord:c?null:l?.y??null,target_x_coord:o.target_x??null,target_y_coord:o.target_y??null,source_description:o.source_description??null,target_description:o.target_description??null,use_coordinates:l!==null&&!c,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:c?r.map(y=>({type:y.isXPath?"xpath":"css",...y})):"",selector_target:"",math_result_variable_name:"",math_result_variable_value:"",expression_tree:a==="ASSERTION"?_e(o):o.expression_tree??{},assertion_tree:o.assertion_tree??{},assertion_tree_simplified:{},network_throttle:{},is_mobile_offline:!1,autoheal:!1,db_query:"",db_details:{},db_query_decoded:"",is_global_variable:!1,is_global_variable_persist:!1,global_variable_id:"",wait_for_element_timeout:0,failure_condition:a==="ASSERTION"?"Fail test immediately":"",screenshot_command:"",smartui_contents:{},smartui_results:{},result_type:"",result_hint:"",drag_offset:{},start_coordinates:o.source_coordinates?{x:o.source_coordinates[0],y:o.source_coordinates[1]}:{},end_coordinates:o.target_coordinates?{x:o.target_coordinates[0],y:o.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:s==="api"?{request:t.action_params?.api_data?.request??{}}:{},output_variables:s==="api"?t.output_variable?{[t.output_variable]:null}:{}:t.output_variable?{[t.output_variable]:t.output_value??""}:{},visual_context:ge(t,n,d,i),reasoning:s==="analyze"?o.query??"":t.intent??t.action_instruction??""}}function q(t,e,n={}){let i=t.action_type,s=X(i,t),a=t.timestamp??"",o=t.duration_ms??0,l=Y(a,o),r=s==="ASSERTION"||s==="MATHEMATICAL_OPERATION";return{instruction_id:e.instruction_id,instruction_class:r?"non_driver_action":"driver_action",module_id:"",instruction:L(t.action_instruction??"",n),command:s,error:null,parent_instruction_id:"",classification_layer_resp:s==="ASSERTION"?pe(t):[],classification_error:{},operations:[e],status:t.status??"",start_timestamp:a,end_timestamp:l,type:"agent_generated",tags:[],html_paths:[],optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,content_type:i==="api"?"api":i==="analyze"&&t.action_params?.analyzer_type==="api_response"?"api_calls_query":i==="analyze"&&t.action_params?.analyzer_type?.startsWith("devtool_")?t.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:i==="evaluate_js"?t.action_params?.script??"":"",user_variables:i==="api"?ce(t):"[]",api_data:i==="api"?{request:t.action_params?.api_data?.request??{},response:W(t)}:{},params_used:!1,hard_assertion:s==="ASSERTION"?t.action_params?.failure_condition==="hard":!1,expected_outcome:"",module_execution_index:0,module_version:null,network_throttle:{},isEdited:!1,use_query_assertion_v2:!1,db_query:"",db_details:{},network_assertion_content:{},screenshot_command:"",smartui_contents:{},generative_id:"",plan_id:"",generative_objective:"",error_message:"",error_code:"",reason:"",title:"",used_variables:[],reasoning:i==="analyze"?t.action_params?.query??"":t.intent??t.action_instruction??""}}function fe(t,e=[]){let n=t.action_params??{},i=n.branches??[],s=n.winning_index??-1,a=n.sub_results??[],o={};for(let r of a){let c=r.sub_results;if(c)for(let u of c){let p=u.store_key;p&&(o[p]=u)}}let l=i.map((r,c)=>{let u=c===s,p=(r.sub_checks??[]).map(_=>{let d=o[_.store_key];return{description:_.description,store_key:_.store_key,expected_value:_.expected_value,stored_value:d?.extracted_value??_.stored_value,operator:_.operator??d?.operator??"equals",transforms:_.transforms??d?.transforms??[]}});if(p.length===0&&r.condition&&a.length>0){let d=a.find(g=>g.branch_index===c)?.sub_results??[];d.length>0&&(p=d.map(g=>({description:g.description??r.condition,store_key:g.store_key??"",expected_value:g.expected??"true",stored_value:g.extracted_value??void 0,operator:g.operator??"equals",transforms:g.transforms??[]})))}return{branch_index:c,condition:r.condition??null,branch_type:r.branch_type??"sub_objective",passed:u,sub_objective:null,custom_event:r.custom_event??null,children:u?e:[],sub_checks:r.condition?p:[],composite_operator:r.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${A().slice(0,8)}`,instruction:t.action_instruction??"",instruction_class:"driver_action",command:"",status:t.status??"success",resolved_branch_index:s,branches:l,generative_id:"",generative_objective:"",variables_used:{},classification_layer_resp:[],classification_error:{},used_variables:[],user_variables:"[]",module_id:"",module_execution_index:0,module_version:"",plan_id:"",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,error:null,error_message:"",error_code:"",reason:"",start_timestamp:t.timestamp??"",end_timestamp:"",type:"agent_generated",hook:null,hook_type:null,evaluation_context:{},query_variables:{}}}function J(t,e,n){for(let i of t)i.content_type==="instruction"&&"generative_id"in i&&(i.generative_id=e,i.generative_objective=n)}function w(t,e={},n="",i,s){let a=[],o=0;for(;o<t.length;){let l=t[o],r=l.action_type;if(!s?.keepFailedActions&&l.status==="error"&&r!=="assert"&&r!=="if_else"&&r!=="child_agent_start"&&r!=="child_agent_end"&&!(l.until_condition&&!l.error)){o+=1;continue}if(r==="analyze"&&!G[l.action_params?.analyzer_type??""]){o+=1;continue}if(r==="child_agent_start"){let c=l.action_params?.child_id??"",u=l.action_params?.objective??"",p=[];o+=1;let _=1,d="error",g;for(;o<t.length&&_>0;){let R=t[o],y=R.action_type;if(y==="child_agent_start")_+=1;else if(y==="child_agent_end"&&(_-=1,_===0)){d=R.status??"success",g=R,o+=1;break}_>0&&p.push(R),o+=1}let m=w(p,e,n,i);J(m,c,u);let f=g?.action_params?.result_code??null,h=g?.action_params?.reason_code??null,b=g?.action_params?.error_message??null,I=g?.action_params?.summary??null,v=g?.action_params?.one_liner??null,O=d==="error";a.push({content_type:"generative_block",instruction_id:`generative_block_${c}`,generative_id:c,objective:u,status:d,children:m,error_message:O?b??null:null,error_code:O?h??null:null,result_code:f??null,bifurcation_context:[],approach_reason:K(I),one_liner:v??null});continue}else if(r==="child_agent_end"){o+=1;continue}else if(r==="if_else"){o+=1;let c=[];for(;o<t.length&&t[o].action_type==="child_agent_start";){let u=t[o],p=u.action_params?.child_id??"",_=u.action_params?.objective??"",d=[];o+=1;let g=1,m="error";for(;o<t.length&&g>0;){let h=t[o];if(h.action_type==="child_agent_start")g+=1;else if(h.action_type==="child_agent_end"&&(g-=1,g===0)){m=h.status??"success",o+=1;break}g>0&&d.push(h),o+=1}let f=w(d,e,n,i);c.push(...f)}a.push(fe(l,c));continue}else if(r==="query_tool"){o+=1;continue}else if(l.until_condition){let c=V(l,e,n,i),u=q(l,c,e),p=typeof l.until_condition_met=="boolean"?l.until_condition_met:l.status==="success";a.push({content_type:"until_block",instruction_id:`until_${A().slice(0,8)}`,condition:l.until_condition,max_retries:l.until_max_retries??10,settle_ms:l.until_settle_ms??500,current_count:0,condition_met:p,children:[u],generative_id:"",generative_objective:"",variables_used:{},status:l.status??"success"})}else{let c=V(l,e,n,i),u=q(l,c,e);a.push(u)}o+=1}return a}function T(t,e={},n="",i,s){let a=[];for(let o of t){let l=w(o.records,e,n,i,s);if(l.length===0)continue;let r=A().replace(/-/g,"");J(l,r,o.objective);let c=l.some(d=>"status"in d&&typeof d.status=="string"?d.status==="error"||d.status==="failed":!1),u=o.resultCode?parseInt(o.resultCode,10):null,p=u!==null&&!isNaN(u)&&u>=200,_=c||p?"error":"success";a.push({content_type:"generative_block",instruction_id:`generative_block_${r}`,generative_id:r,objective:o.objective,status:_,children:l,error_message:_==="error"?o.errorMessage??null:null,error_code:_==="error"?o.reasonCode??null:null,result_code:o.resultCode??null,bifurcation_context:[],approach_reason:K(o.summary),one_liner:o.oneLiner??null})}return{instructions:a}}var Z=se(oe(),1);import{createWriteStream as me}from"fs";import{readFile as he}from"fs/promises";import{join as Ee,basename as be}from"path";import{tmpdir as Ie}from"os";var ve=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function Q(t){let e=Ee(Ie(),`${be(t)}_artifacts.zip`);return new Promise((n,i)=>{let s=me(e),a=(0,Z.default)("zip",{zlib:{level:6}});s.on("close",()=>n(e)),a.on("error",i),a.pipe(s),a.glob("**/*",{cwd:t,ignore:ve}),a.finalize()})}async function ee(t){return he(t)}async function Pe(t,e){return ne(z(t,e))}function Ae(t){return{key:"artifacts",content_type:"application/zip",filename:`${t}.evidence`}}var ie=class{config;controller;testId;constructor(e){this.config=e,this.controller=new F(e.controllerBaseUrl,e.auth),this.testId=e.testId}log(e,n,i,s){this.config.log?.(e,n,i,s)}async execute(){let{onProgress:e}=this.config;try{if(!this.testId)return this.log("error","PIPELINE_ABORT","No test_id available"),{success:!1,testId:null,error:"No test_id available"};let n=this.config.evidence,i=null;if(this.config.shouldUploadArtifacts!==!1){e("convert","running");let l=this.collectNdjsonPerRun(),r=l.reduce((m,f)=>m+f.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:r,run_groups:l.length});let c=this.config.variables??{};this.log("info","PIPELINE_CONVERT_VARS","Variables for template resolution",{keys:Object.keys(c)});let{instructions:u}=l.length>0?T(l,c,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:u.length});let p=this.buildExecutionEnvelope(u),_=Buffer.from(JSON.stringify(p));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(_.length/1024).toFixed(1)});let d=E(this.config.sessionDir,"execution.json");x(d,JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:d});let g=n?.packTestDir??this.config.evidenceRead?.packTestDir;if(g){let m=E(g,"auteur");D(m,{recursive:!0}),x(E(m,"execution.json"),JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack",{path:E(m,"execution.json")})}if(e("convert","done"),n)i=_;else{e("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let m=null,f;try{m=await Q(this.config.sessionDir),f=await ee(m),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(f.length/1024/1024).toFixed(1),path:m}),e("zip","done",`${(f.length/1024/1024).toFixed(1)}MB`)}finally{m&&await Re(m).catch(()=>{})}e("presign","running"),this.log("info","PIPELINE_PRESIGN_START","Requesting presigned URLs",{url:`${this.config.controllerBaseUrl}/upload/presign`,test_id:this.testId,session_id:this.config.sessionId});let h=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"artifacts",content_type:"application/zip",filename:`${this.config.sessionId}_artifacts.zip`},{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:h.urls.artifacts?.blob_url,blob_url:h.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(f.length/1024/1024).toFixed(1),blob_size_kb:+(_.length/1024).toFixed(1)}),await Promise.all([P(h.urls.artifacts.upload_url,f,"application/zip"),P(h.urls.blob.upload_url,_,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}}else{let l=this.collectNdjsonPerRun(),r=this.config.variables??{},{instructions:c}=l.length>0?T(l,r,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap,{keepFailedActions:!0}):{instructions:[]},u=this.buildExecutionEnvelope(c),p=E(this.config.sessionDir,"execution.json");x(p,JSON.stringify(u,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:p});let _=this.config.evidence?.packTestDir??this.config.evidenceRead?.packTestDir;if(_){let d=E(_,"auteur");D(d,{recursive:!0});let g=this.readAuthoredExecution();x(E(d,"execution.json"),g??JSON.stringify(u,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack (gated)",{path:E(d,"execution.json"),source:g?"authored":"run_envelope"})}e("convert","skipped"),e("zip","skipped"),e("presign","skipped"),e("upload","skipped"),this.log("info","PIPELINE_UPLOAD_SKIPPED","Upload steps skipped (gate disabled)")}if(this.config.shouldReplaceLocalOutput&&this.config.onAtomicReplace){e("atomic_replace","running");try{await this.config.onAtomicReplace(),this.log("info","PIPELINE_ATOMIC_REPLACE_OK","Local output replaced"),e("atomic_replace","done")}catch(l){let r=l instanceof Error?l.message:String(l);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:r}),e("atomic_replace","failed",r),l}}else e("atomic_replace","skipped");let s,a;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){e("commit_lock","running");let l=await this.config.onCommitLock();if(l.ok)s=l.testcaseId,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:s??"none"}),e("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:l.reason,message:l.message}),e("commit_lock","failed",`${l.reason??"unknown"}: ${l.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${l.reason??"unknown"}`}}else e("commit_lock","skipped");if(this.config.isFirstRun&&!this.config.skipTmsFinalize){e("finalize","running"),this.log("info","PIPELINE_FINALIZE_START","Finalizing test (first-run)",{test_id:this.testId,commit_id:this.config.commitId});let l=new U(this.config.tmsBaseUrl,this.config.tmsUsername,this.config.tmsAccessKey),r=this.config.runObjectives&&this.config.runObjectives.length>0?this.config.runObjectives:[this.config.firstObjective];if(s=(await l.endTest(this.testId,{commit_id:this.config.commitId,time_taken:Math.round(this.config.totalDuration),steps_count:this.config.totalSteps,commit_message:this.config.firstObjective.slice(0,255),objectives:r})).testcase_id||void 0,this.log("info","PIPELINE_FINALIZE_OK","Test finalized",{testcase_id:s??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(s)}catch(u){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(u)})}e("finalize","done")}else e("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(s&&this.config.shareApiBaseUrl)try{a=await this.generateShareLink(s),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:a})}catch(l){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(l)})}if(n&&i){let l=null;e("zip","running");try{await n.sealFn({testcaseId:s,shareId:a}),l=n.sealedPackPath?await ne(n.sealedPackPath):await Pe(n.executionId,n.cwd),this.log("info","PIPELINE_EVIDENCE_SEALED","Evidence pack sealed",{execution_id:n.executionId}),this.log("info","PIPELINE_PACK_READ","Sealed pack read",{size_mb:+(l.length/1024/1024).toFixed(1)})}catch(r){let c=r instanceof Error?r.message:String(r);this.log("warn","PIPELINE_EVIDENCE_UPLOAD_SKIPPED","Evidence seal/read failed \u2014 uploading blob only",{execution_id:n.executionId,error:c})}if(l){e("zip","done",`${(l.length/1024/1024).toFixed(1)}MB`),e("presign","running");let r=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[Ae(n.executionId),{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:r.urls.artifacts?.blob_url,blob_url:r.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading pack and blob",{artifact_size_mb:+(l.length/1024/1024).toFixed(1),blob_size_kb:+(i.length/1024).toFixed(1)}),await Promise.all([P(r.urls.artifacts.upload_url,l,"application/zip"),P(r.urls.blob.upload_url,i,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}else{e("zip","skipped"),e("presign","running");let r=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading blob only (evidence skipped)",{blob_size_kb:+(i.length/1024).toFixed(1)}),await P(r.urls.blob.upload_url,i,"application/json"),this.log("info","PIPELINE_UPLOAD_OK","Blob upload complete (pack skipped)"),e("upload","done")}}let o;if(this.config.codeExport?.enabled&&s){let l=!1;try{await this.triggerCodeExport(s),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),l=!0}catch(r){let c=r instanceof Error?r.message:String(r);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:c}),e("code_export","failed",`trigger failed: ${c}`)}if(l){e("code_export","running","Waiting for code generation\u2026");try{o=await this.pollAndDownloadCode(s,e),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:o}),e("code_export","done",o)}catch(r){let c=r instanceof Error?r.message:String(r);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:c}),e("code_export","failed",c)}}}else e("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:s,shareId:a,codeExportDir:o}}catch(n){return{success:!1,testId:this.testId,error:n instanceof Error?n.message:String(n)}}}async runCodeExport(e,n){let i=n??this.config.onProgress,s=!1;try{await this.triggerCodeExport(e),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:e}),s=!0}catch(a){let o=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:o}),i("code_export","failed",`trigger failed: ${o}`)}if(s){i("code_export","running","Waiting for code generation\u2026");try{let a=await this.pollAndDownloadCode(e,i);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:a}),i("code_export","done",a),a}catch(a){let o=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:o}),i("code_export","failed",o);return}}}collectNdjsonPerRun(){let e=[],n=this.config.runObjectives??[],i=this.config.runMetadata??[],s=this.config.evidence??this.config.evidenceRead;for(let a=0;a<this.config.runDirs.length;a++){let o=this.config.runDirs[a],l=n[a]||this.config.firstObjective,r=i[a],c=s?this.readNdjsonFromFile(E(s.packTestDir,"logs",`${s.runIndices?.[a]??a}-actions.ndjson`)):this.readNdjsonFromDir(o);c.length>0&&e.push({objective:l,records:c,resultCode:r?.resultCode,reasonCode:r?.reasonCode,errorMessage:r?.errorMessage,summary:r?.summary,oneLiner:r?.oneLiner})}if(e.length===0){let a=E(this.config.sessionDir,"runs");if(C(a))try{let l=ye(a,{withFileTypes:!0}).filter(r=>r.isDirectory()).map(r=>r.name).sort();for(let r of l){let c=E(a,r),u=this.readNdjsonFromDir(c);u.length>0&&e.push({objective:this.config.firstObjective,records:u})}}catch{}}return e}readNdjsonFromDir(e){let n=[E(e,"run-test","actions.ndjson"),E(e,"actions.ndjson")];for(let i of n)if(C(i))return this.readNdjsonFromFile(i);return[]}readNdjsonFromFile(e){let n=[];if(!C(e))return n;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:e});let i=te(e,"utf-8");for(let s of i.split(`
5
- `)){let a=s.trim();if(a)try{n.push(JSON.parse(a))}catch{}}return n}async generateShareLink(e){let n=`${this.config.shareApiBaseUrl}/lshs/api/v1.0/share-item/generate-sharable-link`;this.log("info","PIPELINE_SHARE_START","Requesting share link",{url:n,testcase_id:e});let i={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({entityIds:[e],entityType:"Test Case Details",expiresAt:7})},s=!!this.config.authResolver;this.log("debug","PIPELINE_SHARE_AUTH","Share link auth config",{resolver:s,fallback_auth_type:typeof this.config.auth=="string"?"bearer":"basic",tms_user:this.config.tmsUsername});let a=s?await this.config.authResolver.fetch(n,i):await k(n,{...i,headers:{...i.headers,Authorization:this.buildAuthHeader()}});if(!a.ok)throw new Error(`Share link API failed: ${a.status} ${await a.text()}`);let o=await a.json();if(!o.shareId)throw new Error("Share link API returned no shareId");return o.shareId}async triggerCodeExport(e){if(!this.config.codeExport)throw new Error("triggerCodeExport called without resolved codeExport config");let{url:n,body:i}=M({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e,codeExport:this.config.codeExport});this.log("info","PIPELINE_CODE_EXPORT_POST","Triggering code export",{url:n});let s={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(i)},a=this.config.authResolver?await this.config.authResolver.fetch(n,s):await k(n,{...s,headers:{...s.headers,Authorization:this.buildAuthHeader()}});if(!a.ok)throw new Error(`Code export failed: ${a.status} ${await a.text()}`)}async pollAndDownloadCode(e,n){let i=B({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e}),s=this.config.exitTimeoutMs??3e5,a=5e3,o=Date.now()+s;this.log("info","PIPELINE_CODE_EXPORT_POLL","Polling for code export",{url:i,timeout_ms:s});let l=(r,c)=>this.config.authResolver?this.config.authResolver.fetch(r,c):k(r,{...c,headers:{...c?.headers,Authorization:this.buildAuthHeader()}});for(;Date.now()<o;){let r=await l(i,{method:"GET",headers:{Accept:"application/json"}});if(!r.ok){let d=await r.text().catch(()=>"");throw this.log("warn","PIPELINE_CODE_EXPORT_POLL_FAILED","Code export poll non-200; skipping",{status:r.status,body:d.slice(0,200)}),new Error(`code export poll skipped: HTTP ${r.status}`)}let u=(await r.json()).data?.find(d=>d.code_name==="kane-cli-trigger");if(!u){this.log("debug","PIPELINE_CODE_EXPORT_WAITING","No kane-cli-trigger entry yet"),n("code_export","running","Waiting for code generation\u2026"),await this.sleep(a);continue}let p=u.status.toLowerCase();if(p==="in progress"||p==="in_progress"||p==="pending"){this.log("debug","PIPELINE_CODE_EXPORT_IN_PROGRESS","Code export in progress",{status:u.status}),n("code_export","running","Generating code\u2026"),await this.sleep(a);continue}if(!u.url||u.url.length===0)throw new Error(`Code export status=${u.status} but no files returned`);let _=this.config.codeExportDir??E(this.config.sessionDir,"code-export");D(_,{recursive:!0}),this.log("info","PIPELINE_CODE_EXPORT_DOWNLOAD","Downloading code files",{file_count:u.url.length,dir:_}),n("code_export","running",`Downloading ${u.url.length} files\u2026`);for(let d of u.url){let g=E(_,d.file_name),m=await k(d.file_url);if(!m.ok){this.log("warn","PIPELINE_CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:d.file_name,status:m.status});continue}let f=await m.text();x(g,f,"utf-8"),this.log("info","PIPELINE_CODE_EXPORT_FILE_SAVED","File saved",{file_name:d.file_name,size_bytes:f.length})}return _}throw new Error("Code export timed out")}sleep(e){return new Promise(n=>setTimeout(n,e))}buildAuthHeader(){return typeof this.config.auth=="string"?`Bearer ${this.config.auth}`:j(this.config.auth.username,this.config.auth.accessKey)}readAuthoredExecution(){let e=this.config.authoredExecutionPath;if(!e)return null;try{let n=te(e,"utf8");return JSON.parse(n),n}catch{return this.log("warn","PIPELINE_AUTHORED_BLOB_UNREADABLE","Authored execution.json missing/unreadable \u2014 pack gets this run's envelope",{path:e}),null}}buildExecutionEnvelope(e){let n=this.config.runStatuses.every(r=>r==="passed")?"success":"error",i=this.config.variableIds??{},s=[];if(this.config.variables)for(let[r,c]of Object.entries(this.config.variables)){if(c.secret)continue;let u=r.startsWith("global.")?r.slice(7):r;s.push({id:i[u]??0,name:u,value:c.value,session_value:c.value,is_persist:!1,environment_id:0,environment_name:"No Env"})}let a=[],o=[],l=new Set;for(let r of this.collectNdjsonPerRun())for(let c of r.records)if(c.output_variable&&c.output_value!=null&&a.push({name:c.output_variable,value:String(c.output_value),value_type:"test_level",variable_description:"ANALYZE result"}),c.action_type==="upload_files"){let u=S(c.action_params);if(u){let p=u.media_id||u.media_url;if(!l.has(p)){l.add(p),o.push({media_url:u.media_url,media_id:u.media_id,name:u.name,type:u.type});let _=N(u.name);a.push({name:$(u.name),value:_,value_type:"string",variable_description:`variable for ${_}`})}}}return{test_id:this.testId,version:"v4",session_id:this.config.sessionId,org_id:String(this.config.orgId),user_id:String(this.config.userId),url:this.config.firstUrl??"",start_timestamp:this.config.startedAt,end_timestamp:this.config.endedAt,status:n,commit_id:this.config.commitId,instructions:e,modules:[],uploaded_files:o,test_params:[],test_level_variables:JSON.stringify(a),test_global_variables:s,max_network_wait:0,wait_buffer:0,network_throttle:{},secrets:this.config.secrets??[],totp:[],environment_id:0,environment:"",mobile_browser:!1,native_popups:[],smartui:{},module_index:0}}};export{Pe as a,Ae as b,ie as c};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{extname as o}from"path";var n=[{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-"},{kind:"docx",media_type:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.length>=4&&e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4,sniffFail:e=>e.length>=8&&e.subarray(0,8).equals(s)?"DOCX_ENCRYPTED_OR_LEGACY: password-protected Office file (or a legacy .doc renamed .docx) \u2014 remove the password / save as .docx and re-ingest":void 0}],s=Buffer.from([208,207,17,224,161,177,26,225]),d={pdf:"pdf",docx:"docx"},x=new Set(Object.keys(d));function r(e){let a=o(e).toLowerCase(),i=n.find(t=>t.extensions.includes(a));return i?{ok:!0,media:i}:{ok:!1,code:"UNSUPPORTED_MEDIA",allowlist:n.flatMap(t=>t.extensions)}}export{d as a,x as b,r as c};
@@ -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 a}from"./chunk-2KS2YRIS.js";import{a as B}from"./chunk-HCBYKLMW.js";import{a as b,b as n,i as C,k as O}from"./chunk-C44QQJR4.js";import{a as D}from"./chunk-6YGTRKDT.js";import{e as v}from"./chunk-UR6MHSHU.js";var o=v(B(),1);function W(d){let e=d.findIndex(c=>c.free);return e>=0?e:null}var L=60,F=100;function H({headline:d,ask:e=!1,rows:c,sel:t,focused:T,legend:u,freeText:l=null,freeTextNote:m}){let{stdout:i}=O(),r=i?.columns??80,f=r<L,A=Math.min(r-1,F),s=x=>T&&t===x?(0,o.jsx)(n,{color:a.assuranceAccent,children:"\u276F"}):" ",g=e?`? ${d}`:d,p=0,w=c.map((x,S)=>x.free?l?(0,o.jsxs)(b,{flexDirection:"column",children:[(0,o.jsxs)(b,{children:[(0,o.jsxs)(n,{children:[(0,o.jsx)(n,{color:a.assuranceAccent,children:"\u276F"})," ",(0,o.jsx)(n,{color:a.dim,children:"\u270E "})]}),(0,o.jsx)(E,{value:l.value,onChange:l.onChange,onSubmit:l.onSubmit,onCancel:l.onCancel,placeholder:x.label})]}),m?(0,o.jsx)(n,{color:a.muted,children:` ${m}`}):null]},x.key):(0,o.jsxs)(n,{children:[s(S)," ",(0,o.jsx)(n,{color:a.dim,children:`\u270E ${x.label}`})]},x.key):(p+=1,(0,o.jsxs)(n,{bold:T&&t===S,children:[s(S),` ${p}. ${x.label}`,x.detail?(0,o.jsx)(n,{color:a.dim,bold:!1,children:` \u2014 ${x.detail}`}):null]},x.key)));if(f)return(0,o.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,o.jsx)(n,{bold:!0,color:a.assuranceAccent,children:g}),w,(0,o.jsx)(n,{color:a.muted,children:u})]});let h=Math.max(2,A-(3+g.length+1)),P=Math.max(2,A-(3+u.length+1));return(0,o.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,o.jsxs)(n,{color:a.assuranceAccent,children:["\u2500\u2500 ",(0,o.jsx)(n,{bold:!0,children:g}),` ${"\u2500".repeat(h)}`]}),(0,o.jsx)(n,{children:" "}),w,(0,o.jsx)(n,{children:" "}),(0,o.jsxs)(n,{color:a.assuranceAccent,children:["\u2500\u2500 ",(0,o.jsx)(n,{color:a.muted,children:u}),` ${"\u2500".repeat(P)}`]})]})}var R=v(B(),1),N="ctrl+t thinking \xB7 ctrl+c exit";function $(d,e){if(d.length<=e)return d;if(e<=1)return"\u2026";let c=Math.ceil((e-1)/2),t=Math.floor((e-1)/2);return`${d.slice(0,c)}\u2026${t>0?d.slice(-t):""}`}function q({verb:d,subject:e,pendingCount:c,creditsTotal:t,state:T,hints:u=N}){let{stdout:l}=O(),m=l?.columns??80,i=[];i.push(d),T&&i.push(T),t!==void 0&&i.push(`${t.toFixed(1)} credits`);let r=c?`[${c} pending]`:null,f=" \xB7 ",s=[...i,...r?[r]:[]].join(f).length,g,p=[...i,...e?[e]:[],...r?[r]:[],u].join(f);if(p.length<=m)g=p;else{let w=m-s-(e?f.length:0)-f.length-u.length;if(e&&w>=8)g=[...i,$(e,w),...r?[r]:[],u].join(f);else{let h=m-s-(e?f.length:0);g=[...i,...e&&h>=4?[$(e,h)]:[],...r?[r]:[]].join(f)}}if(T){let w=` \xB7 ${T}`,h=g.indexOf(w);if(h>=0)return(0,R.jsxs)(n,{color:a.dim,children:[g.slice(0,h+3),(0,R.jsx)(n,{color:a.assuranceAccent,children:T}),g.slice(h+w.length)]})}return(0,R.jsx)(n,{color:a.dim,children:g})}var M=v(D(),1);function J({onToggleThinking:d,onCtrlC:e,explorer:c,panel:t}){let u=(0,M.useRef)(null),l=(0,M.useRef)(""),m=()=>{u.current&&clearTimeout(u.current),u.current=null,l.current=""};return(0,M.useEffect)(()=>m,[]),C((i,r)=>{if(r.ctrl&&i==="t"){d();return}if(r.ctrl&&i==="c"){e();return}if(!r.ctrl&&i.includes("")){e();return}if(!r.ctrl&&i.includes("")){d();return}if(c&&c.isOpen()){let f=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{m(),c.onBack()},150)};if(u.current){if(r.upArrow||r.downArrow||r.return){m(),r.return?c.onEnter():c.onMove(r.upArrow?-1:1);return}if(l.current+=i,l.current==="["){f();return}let A=l.current;m();let s=/^\[([ABCD])/.exec(A);if(s){(s[1]==="A"||s[1]==="B")&&c.onMove(s[1]==="A"?-1:1);return}c.onBack();return}if(r.upArrow){c.onMove(-1);return}if(r.downArrow){c.onMove(1);return}if(r.return){c.onEnter();return}if(r.escape){l.current="",f();return}return}if(t&&t.isFocused()){let f=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{m(),t.onBack()},150)};if(u.current){if(r.upArrow||r.downArrow||r.return||r.leftArrow||r.rightArrow){m(),r.return?t.onSelect():r.leftArrow?t.onLeft?.():r.rightArrow?t.onRight?.():t.onMove(r.upArrow?-1:1);return}if(l.current+=i,l.current==="["){f();return}let A=l.current;m();let s=/^\[([ABCD])/.exec(A);if(s){s[1]==="A"||s[1]==="B"?t.onMove(s[1]==="A"?-1:1):s[1]==="C"?t.onRight?.():t.onLeft?.();return}t.onBack();return}if(r.upArrow){t.onMove(-1);return}if(r.downArrow){t.onMove(1);return}if(r.leftArrow){t.onLeft?.();return}if(r.rightArrow){t.onRight?.();return}if(r.return){t.onSelect();return}if(r.escape){l.current="",f();return}if(/^[1-9]$/.test(i)){t.onDigit(Number(i));return}if(r.tab){t.onTab?.();return}if(i===" "&&t.isMulti()){t.onSpace();return}if(i&&!r.ctrl&&!r.meta){t.onType(i);return}return}}),null}export{W as a,H as b,q as c,J as d};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as k,c as A}from"./chunk-JHHMXU76.js";import{b as M}from"./chunk-DNNZ353O.js";import{a as T}from"./chunk-Q2F5QB2W.js";import{b as E,c as f}from"./chunk-NVGBE2DR.js";import{a as F}from"./chunk-SDRFTIRU.js";import{a as C,c as R}from"./chunk-L4JIMNKW.js";import{e as L}from"./chunk-MBXWXBDM.js";import{a as N,d as x,f as $}from"./chunk-5YPBPZUR.js";import{existsSync as V,mkdirSync as H,readFileSync as K,writeFileSync as Z}from"fs";import{basename as X,extname as U,join as Y}from"path";var B=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function G(e){return typeof e=="string"&&e!=="."&&e!==".."&&B.test(e)}function w(e){if(!G(e))throw new Error(`unsafe logical_id: ${JSON.stringify(e)} \u2014 must match ${String(B)} (no path separators)`)}function q(e,r,n){return T({source_id:e,source_cid:"sha256:".padEnd(71,"0"),doc_kind:r,numbered_text:M(n)})}var P=2e3;function Q(e){let n=X(e,U(e)).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[^a-z0-9]+/,"");return w(n),n}function ue(e){let r=/^(.*?)[-_.]?v?\d+$/.exec(e);if(!r)return null;let n=(r[1]??"").replace(/[-_.]+$/,"");return n.length>0&&n!==e?n:null}function W(e){let r=Y(e,"meta.json");V(r)||(H(e,{recursive:!0}),Z(r,JSON.stringify({schema:N,canonicalizer:"v1"},null,2)+`
3
- `))}async function fe(e){let{contextDir:r,filePath:n,asId:g,confirmSameSource:S,converters:j}=e;W(r);let a=K(n),t=A(n);if(!t.ok)throw new Error(`UNSUPPORTED_MEDIA: ${U(n)} \u2014 supported: ${t.allowlist.join(" ")}`);if(a.byteLength>t.media.maxBytes)throw new Error(`FILE_TOO_LARGE: ${a.byteLength} bytes > ${t.media.maxBytes} cap for ${t.media.media_type}`);if(t.media.sniff&&!t.media.sniff(a)){let i=t.media.sniffFail?.(a);throw new Error(i??`MEDIA_SNIFF_MISMATCH: ${n} does not look like ${t.media.media_type}`)}let p=[],d=k[t.media.kind];if(t.media.cite==="verbatim"&&!d){try{new TextDecoder("utf-8",{fatal:!0}).decode(a)}catch{throw new Error(`ENCODING_UNSUPPORTED: ${n} is not valid UTF-8 \u2014 re-save it as UTF-8 and re-ingest`)}a.toString("utf8").split(`
4
- `).some(i=>i.length>P)&&p.push(`long line detected (> ${P} chars) \u2014 anchors lose granularity; consider pretty-printing before ingest`)}let c=E(a),s;g!==void 0?(w(g),s=g):s=Q(n);let u=F(r),l=u.heads.get(s),z=l!=null?u.getNode(l)?.content:void 0;if(l!=null&&z?.blob===c)return{status:"unchanged",source_id:s,cid:l,blob:c};if(l==null){for(let[i,o]of u.heads.entries())if(!(i===s||o==null)&&u.getNode(o)?.content.blob===c){if(S&&await S(i))return{status:"unchanged",source_id:i,cid:o,blob:c};break}}let I={},b,m=null,h=null;if(d){let i=j?.[d];if(!i)throw new Error(`${d.toUpperCase()}_CONVERTER_MISSING: ${d} ingestion requires the converter \u2014 the command layer wires it`);let o=await i(a);m=Buffer.from(o.projection,"utf8");let O=q(s,t.media.kind,m);if(O>4e5)throw new Error(`PROJECTION_TOO_LARGE: serialized source payload ${O} bytes > ${4e5} \u2014 split the document and re-ingest`);I={text_blob:E(m),...o.inventory.length>0?{images:o.inventory}:{},converter:o.converter},h=o.blobs,b={kind:t.media.kind,...o.pages!==void 0?{pages:o.pages}:{},delivered:o.delivered.length,omitted:o.inventory.length-o.delivered.length}}if(f(r,a),m!==null&&f(r,m),h!==null)for(let[,i]of h)f(r,i);let _=R(s,c),y=$("source",_);if(y.length>0)throw new Error(`source node fails ${y[0].code}: ${y[0].detail}`);let v=C("source",_);return L(r,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:v,label:x.SOURCE,content:_}],edges:[],review:[],supersessions:[],media:{[s]:{format:t.media.kind,media_type:t.media.media_type,anchors_supported:d?["L-L","img#ref"]:t.media.cite==="verbatim"?["L-L"]:[],...I}},source_head_moves:{[s]:v}}),{status:l!=null?"versioned":"created",source_id:s,cid:v,blob:c,...p.length?{warnings:p}:{},...b?{composite:b}:{}}}export{q as a,Q as b,ue as c,fe as d};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g,h,i}from"./chunk-QPT4ERGK.js";import"./chunk-Q2F5QB2W.js";import"./chunk-VOHQA2SP.js";import"./chunk-NVGBE2DR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";export{a as DOCX_CONVERTER_POLICY,b as DOCX_CONVERTER_VERSION,d as DOCX_IMAGE_CAP,c as DOCX_IMAGE_DIMENSION_FLOOR,f as DOCX_IMAGE_MAX_BYTES,g as DOCX_IMAGE_MAX_PIXELS,e as DOCX_VISION_BYTE_BUDGET,i as convertDocx,h as renderTokens};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-ZPENY2Q3.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as compositePayloadBytes,d as ingestFile,b as slugFromFilename,c as versionBaseOf};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as g}from"./chunk-RN4OSVTG.js";import{b as l,c as p,d as $}from"./chunk-ZPENY2Q3.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import{g as b}from"./chunk-EV3EHXEI.js";import{i as v}from"./chunk-QPT4ERGK.js";import"./chunk-Q2F5QB2W.js";import"./chunk-VOHQA2SP.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as f}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";import{existsSync as O}from"fs";import{appendFileSync as y,mkdirSync as h}from"fs";import{homedir as T}from"os";import{dirname as w,join as S}from"path";function x(n,a){let e=/^(DOCX_[A-Z_]+):/.exec(a)?.[1];if(e)try{let s=process.env.KANE_CONTEXT_REFUSAL_LOG??S(T(),".testmuai","kaneai","context-refusals.log");h(w(s),{recursive:!0}),y(s,`${new Date().toISOString()} ${e} ${n}
3
- `)}catch{}}async function _(n,a,e,s=process.cwd()){let i=u(s);if(a.as!==void 0&&n.length>1)return(e.err??e.out)(`error: --as names ONE source identity \u2014 pass a single file (got ${n.length})`),2;for(let c of n){let d=a.as;if(e.isTTY&&d===void 0&&O(i)){let o=l(c),r=p(o);if(r){let m=f(i);m.heads.get(r)!=null&&m.heads.get(o)==null&&await e.confirm(`${o} looks like a new version of existing source '${r}' \u2014 ingest as '${r}' (moves its head)?`)&&(d=r)}}let t;try{t=await $({contextDir:i,filePath:c,asId:d,confirmSameSource:e.isTTY?o=>e.confirm(`identical bytes already ingested as ${o} \u2014 treat as the same source?`):void 0,converters:{pdf:b,docx:v}})}catch(o){let r=o instanceof Error?o.message:String(o);return x(c,r),e.out(`error: ${c}: ${r}`),1}e.out(`${t.status} ${t.source_id} source ${t.cid} blob ${t.blob}`);for(let o of t.warnings??[])e.out(`warning: ${o}`);if(t.composite){let o=t.composite.pages!==void 0?` ${t.composite.pages} pages,`:"";e.out(`${t.source_id}: ${t.composite.kind},${o} ${t.composite.delivered} images delivered (${t.composite.omitted} omitted)`)}if(!e.isTTY&&t.status==="created"){let o=f(i);for(let[r,m]of o.heads.entries())if(!(r===t.source_id||m==null)&&o.getNode(m)?.content.blob===t.blob){e.out(`hint: identical bytes already ingested as ${r} \u2014 merged later via review`);break}}}return 0}async function G(n,a){let{createInterface:e}=await import("readline/promises");return _(n,a,{out:s=>process.stdout.write(s+`
4
- `),isTTY:g(),confirm:async s=>{let i=e({input:process.stdin,output:process.stdout});try{let c=await i.question(`${s} [Y/n] `);return!/^n(o)?$/i.test(c.trim())}finally{i.close()}}})}export{G as ingestCommand,_ as runIngestCommand};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-6ZJ7ZFEX.js";import"./chunk-5F7PU5AJ.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-YJIESLN6.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-GLS46X7N.js";import"./chunk-2YQ6TW77.js";import"./chunk-WAOCHXJ5.js";import"./chunk-OESHJ4J2.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-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as openGraph,b as staleForEvolve};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as b,b as c,c as d,d as e,e as f,f as g}from"./chunk-JTCW76YG.js";import"./chunk-K7USHLVZ.js";import{f as a}from"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-FHKDTM5L.js";import"./chunk-NVGBE2DR.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-5EOX4MEY.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{f as dedupPreFlags,b as deliveredImagesWire,d as displaySourceName,a as resolveAnswers,g as runExtract,c as sessionSourceRef,e as sourceBanner};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-KK7DYHK6.js";import"./chunk-KHU7C6EE.js";import"./chunk-SKRZN25J.js";import"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-FHKDTM5L.js";import"./chunk-ZPDM6FO7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-5EOX4MEY.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{a as runDesign};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as a}from"./chunk-WSZ7IENQ.js";import"./chunk-3MSXQU2C.js";import"./chunk-LPBAQQ7E.js";import"./chunk-MJF3USZF.js";import"./chunk-TLL7KFLY.js";import"./chunk-4OSW2WEN.js";import"./chunk-2XMJ6YAE.js";import"./chunk-GLS46X7N.js";import"./chunk-C3OGWCII.js";import"./chunk-GWJ76BLF.js";import"./chunk-XZW3TBOV.js";import"./chunk-2YQ6TW77.js";import"./chunk-76I6NJBX.js";import"./chunk-OIYGGEUL.js";import"./chunk-RKWJG3WW.js";import"./chunk-VYQMCLKG.js";import"./chunk-7APDXIKI.js";import"./chunk-DHF3VO2R.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import"./chunk-6JTEWZ75.js";import"./chunk-J4WS2SXT.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-FYDBD7Q4.js";import"./chunk-ECFOND7B.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-6MTVGARW.js";import"./chunk-6ZJ7ZFEX.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-KA7Q5IIC.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OESHJ4J2.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-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-6CGNLFSN.js";import"./chunk-SACSQY3Q.js";import"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-5LTUYXMP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-YJIESLN6.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-FEF75YKV.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-6MTVGARW.js";import"./chunk-5F7PU5AJ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};