@testmuai/kane-cli 0.6.3 → 0.6.6

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 (174) hide show
  1. package/bin/kane-cli.cjs +91 -0
  2. package/bin/resolve-runtime.cjs +45 -0
  3. package/dist/ChatSurface-LV3KW6WN.js +8 -0
  4. package/dist/{ChromeProfilePicker-UUGUMJPI.js → ChromeProfilePicker-6PLUQ5TW.js} +1 -1
  5. package/dist/{CliFeedbackPrompt-JZWESL7Z.js → CliFeedbackPrompt-I4F56IVK.js} +1 -1
  6. package/dist/{CliUploadProgress-62U3LAUU.js → CliUploadProgress-ULRSPKY3.js} +1 -1
  7. package/dist/{ConfigView-WHEFCVHR.js → ConfigView-7NMYALEA.js} +1 -1
  8. package/dist/EvidenceViewOffer-KQKPTMXA.js +2 -0
  9. package/dist/{FolderPicker-HJUUHQEI.js → FolderPicker-4IOVDO2P.js} +1 -1
  10. package/dist/{HelpView-EWHP7LSJ.js → HelpView-SHMVMHNU.js} +1 -1
  11. package/dist/{InfoBox-GQQJVTI5.js → InfoBox-W2LZVGQS.js} +1 -1
  12. package/dist/{LinksBox-EWCPAZFN.js → LinksBox-ZS25VTBY.js} +1 -1
  13. package/dist/{ProfilesView-5FJNQMUW.js → ProfilesView-XBBRIQ3U.js} +1 -1
  14. package/dist/{ProjectPicker-IN7GFN7I.js → ProjectPicker-AUN47FXS.js} +1 -1
  15. package/dist/{SaveSessionPrompt-ISODGFP7.js → SaveSessionPrompt-Z2K225VN.js} +1 -1
  16. package/dist/SingleShotApp-M7R5PW4X.js +2 -0
  17. package/dist/{SummaryBox-R6WHU7VD.js → SummaryBox-4T545XRB.js} +1 -1
  18. package/dist/TestMdRunView-JXRXMACE.js +2 -0
  19. package/dist/{WhoamiView-YRQNOSOH.js → WhoamiView-GCVD35EX.js} +1 -1
  20. package/dist/bind-JLMT57Q3.js +6 -0
  21. package/dist/{bridge-7UMWMIJJ.js → bridge-PDJEOSAJ.js} +1 -1
  22. package/dist/{changelog-YQC2QDCO.js → changelog-D65HWZDM.js} +1 -1
  23. package/dist/{chat-committer-GHDZY5XF.js → chat-committer-ADJJTDUT.js} +1 -1
  24. package/dist/{chat-controller-QXFAB2DK.js → chat-controller-VAC57IEV.js} +1 -1
  25. package/dist/{chunk-B5LJCGAY.js → chunk-24OFJ7SE.js} +1 -1
  26. package/dist/{chunk-PJDOXRLB.js → chunk-24VYAMMK.js} +1 -1
  27. package/dist/chunk-262ES67I.js +14 -0
  28. package/dist/{chunk-CIW2KP4C.js → chunk-2BWRAY3Y.js} +1 -1
  29. package/dist/{chunk-KHDUQ33H.js → chunk-2PQXEEVY.js} +1 -1
  30. package/dist/{chunk-F66SSA4C.js → chunk-2WO7G2HO.js} +1 -1
  31. package/dist/{chunk-Y6LMHBLE.js → chunk-32GP7KTM.js} +1 -1
  32. package/dist/{chunk-NNZV5RCE.js → chunk-3C5GMAM4.js} +1 -1
  33. package/dist/{chunk-SHSV64GX.js → chunk-3Z3UIW5H.js} +1 -1
  34. package/dist/{chunk-OE7TVGNB.js → chunk-4A6BLXQN.js} +3 -3
  35. package/dist/chunk-4R2HOA7J.js +14 -0
  36. package/dist/{chunk-AV5SUGRY.js → chunk-4SXD6XWV.js} +1 -1
  37. package/dist/{chunk-FFL2TQEJ.js → chunk-5JJ245FW.js} +1 -1
  38. package/dist/chunk-5YPBPZUR.js +2 -0
  39. package/dist/chunk-64LC36AF.js +2 -0
  40. package/dist/{chunk-Z56AWGVY.js → chunk-6AYUSR7X.js} +1 -1
  41. package/dist/{chunk-Y7KW5AEN.js → chunk-6CZIEK6B.js} +1 -1
  42. package/dist/{chunk-VJUIW2ES.js → chunk-6GTOYTCQ.js} +1 -1
  43. package/dist/{chunk-EWFFJBAM.js → chunk-6NIV7AVZ.js} +1 -1
  44. package/dist/chunk-6SGPN76K.js +2 -0
  45. package/dist/{chunk-7MV5UF6O.js → chunk-6XHAXAL2.js} +1 -1
  46. package/dist/{chunk-AE6SS34N.js → chunk-74RUSHIB.js} +1 -1
  47. package/dist/{chunk-RLG5NUTE.js → chunk-AKHUNBQS.js} +1 -1
  48. package/dist/{chunk-53VDR5DN.js → chunk-BLSZ4H5W.js} +12 -12
  49. package/dist/{chunk-OGVIHL5G.js → chunk-BV5QKFMJ.js} +1 -1
  50. package/dist/{chunk-SL7AJ7JQ.js → chunk-C42WWO7Y.js} +1 -1
  51. package/dist/{chunk-FYOCF7DY.js → chunk-CJJXT5DO.js} +1 -1
  52. package/dist/chunk-D7L6UW5Z.js +7 -0
  53. package/dist/chunk-EHN5HTUD.js +147 -0
  54. package/dist/{chunk-P46TIMGQ.js → chunk-EOLQUB4Q.js} +1 -1
  55. package/dist/{chunk-C5POEXSX.js → chunk-EWTX7HSU.js} +2 -2
  56. package/dist/{chunk-RGEAEAZB.js → chunk-FJTWJ243.js} +1 -1
  57. package/dist/{chunk-CE664P73.js → chunk-GBBVP2JW.js} +1 -1
  58. package/dist/chunk-GLS46X7N.js +5 -0
  59. package/dist/{chunk-AD46OCZ4.js → chunk-GRB66C5S.js} +1 -1
  60. package/dist/{chunk-22A2ECA2.js → chunk-GYW7LVVL.js} +1 -1
  61. package/dist/{chunk-BO3JA2GS.js → chunk-HA5GE57Z.js} +15 -15
  62. package/dist/{chunk-VXGOWBET.js → chunk-HWA7WD44.js} +1 -1
  63. package/dist/{chunk-7YQW4TFI.js → chunk-JF7Q2I45.js} +1 -1
  64. package/dist/{chunk-TTSYHJLX.js → chunk-JTEY32TL.js} +1 -1
  65. package/dist/{chunk-DEEBPSJN.js → chunk-JU5KRCKD.js} +4 -4
  66. package/dist/chunk-JV356AYH.js +5 -0
  67. package/dist/chunk-K5JGCJ2K.js +6 -0
  68. package/dist/{chunk-UXJPCWGW.js → chunk-KI2DVQSA.js} +1 -1
  69. package/dist/chunk-KNCHEM6A.js +9 -0
  70. package/dist/{chunk-YZSYXNMB.js → chunk-KYHXDJN4.js} +1 -1
  71. package/dist/{chunk-326XAPMW.js → chunk-L26LU6TU.js} +2 -2
  72. package/dist/{chunk-WFRL54GK.js → chunk-LABIRPOT.js} +1 -1
  73. package/dist/{chunk-BFFCGEUH.js → chunk-LEQ2B3PR.js} +1 -1
  74. package/dist/{chunk-EEO4XWY6.js → chunk-LLS47HUA.js} +1 -1
  75. package/dist/{chunk-2S4S2XJC.js → chunk-LURGFJEE.js} +1 -1
  76. package/dist/{chunk-D5T4ARTB.js → chunk-MCQXRJGH.js} +1 -1
  77. package/dist/{chunk-2TVRHXRK.js → chunk-MSPZOEFB.js} +1 -1
  78. package/dist/{chunk-YZKPZXHY.js → chunk-MY32TBBR.js} +1 -1
  79. package/dist/{chunk-BGGNBWAJ.js → chunk-N6DO2LBH.js} +1 -1
  80. package/dist/{chunk-ARS72637.js → chunk-OFEOWKM3.js} +1 -1
  81. package/dist/{chunk-TZZYRDCF.js → chunk-P4HW2NTZ.js} +1 -1
  82. package/dist/{chunk-LMJTY32X.js → chunk-RHNKYNNZ.js} +1 -1
  83. package/dist/{chunk-RZFINU7J.js → chunk-RIMJDJWY.js} +1 -1
  84. package/dist/{chunk-ZKYYZ5NO.js → chunk-RN4OSVTG.js} +2 -2
  85. package/dist/{chunk-ME5QSYWX.js → chunk-RV2NXHIC.js} +1 -1
  86. package/dist/{chunk-SQFNMZJ2.js → chunk-S2C62SDY.js} +1 -1
  87. package/dist/chunk-SJ2KQKOV.js +3 -0
  88. package/dist/{chunk-G6AF2JUA.js → chunk-UZJ7MRBV.js} +1 -1
  89. package/dist/{chunk-XBE7PGVY.js → chunk-VBCE4U4B.js} +1 -1
  90. package/dist/chunk-WIA7TPK3.js +2 -0
  91. package/dist/{chunk-F2K3XFFH.js → chunk-WJGBXJT4.js} +2 -2
  92. package/dist/{chunk-7LFCSSPX.js → chunk-WWH7CW5R.js} +1 -1
  93. package/dist/{chunk-NFGG5DA2.js → chunk-XQL53VB7.js} +1 -1
  94. package/dist/{chunk-B2PZAB7J.js → chunk-ZG2V2ODK.js} +1 -1
  95. package/dist/{chunk-GIRXJOJI.js → chunk-ZZLR3O5A.js} +1 -1
  96. package/dist/{config-5OOP2BO3.js → config-6PAZZ7CR.js} +1 -1
  97. package/dist/{cover-cmd-Y5L4O4Q3.js → cover-cmd-K3LCXHAQ.js} +1 -1
  98. package/dist/{credentials-XCP6DJZZ.js → credentials-BJCIWQWA.js} +1 -1
  99. package/dist/descriptor-EHK3DRCZ.js +2 -0
  100. package/dist/{evidence-AX67Q6RN.js → evidence-7VE5EGEF.js} +1 -1
  101. package/dist/evolve-cmd-RUGUWKAG.js +2 -0
  102. package/dist/explain-VFIZTHFN.js +2 -0
  103. package/dist/{explain-cmd-RIDEMDMY.js → explain-cmd-KV5YUXKB.js} +1 -1
  104. package/dist/{explain-cmd-55WRDIMW.js → explain-cmd-U367SD4N.js} +1 -1
  105. package/dist/{extract-bind-ZDAXRQUS.js → extract-bind-YS7C4KZ3.js} +2 -2
  106. package/dist/{extract-cmd-5GGI6LAM.js → extract-cmd-Z4PMDIMZ.js} +2 -2
  107. package/dist/{gaps-cmd-P2DRK6FW.js → gaps-cmd-DTVDIOED.js} +1 -1
  108. package/dist/{gate-FACZRGOC.js → gate-B6C6KLFA.js} +1 -1
  109. package/dist/{generate-headless-DRDE46ON.js → generate-headless-IWY32HC4.js} +2 -2
  110. package/dist/{headless-io-GXHKDPHB.js → headless-io-PWW6YKH2.js} +1 -1
  111. package/dist/index.js +43 -43
  112. package/dist/ingest-C5ANIN7S.js +2 -0
  113. package/dist/ingest-cmd-LLC5CDQ5.js +3 -0
  114. package/dist/interactive-bind-ZIIJDRBU.js +7 -0
  115. package/dist/{lifecycle-cmd-55NZL3UO.js → lifecycle-cmd-BXE5IMFN.js} +1 -1
  116. package/dist/{list-cmd-JB2ABACD.js → list-cmd-KBWPYJMV.js} +1 -1
  117. package/dist/{list-commands-UDAL3SBY.js → list-commands-SSXJQGE7.js} +1 -1
  118. package/dist/{logical-ids-ATVR6PF2.js → logical-ids-3Y6RX5C2.js} +1 -1
  119. package/dist/login-flow-HRS6YACY.js +2 -0
  120. package/dist/{maintenance-cmd-E3HEEVQW.js → maintenance-cmd-VS3APIUN.js} +1 -1
  121. package/dist/{persist-recorded-session-BW3YSFMP.js → persist-recorded-session-3AOYZJT2.js} +1 -1
  122. package/dist/pipeline-IZSODNCC.js +2 -0
  123. package/dist/readmodel-XOGOELUP.js +2 -0
  124. package/dist/reconcile-cmd-6HVZJFG3.js +2 -0
  125. package/dist/{recording-banner-6FVTCUWQ.js → recording-banner-KKEUWS3N.js} +1 -1
  126. package/dist/{require-project-folder-AQUVEEJB.js → require-project-folder-NPTKR2AW.js} +1 -1
  127. package/dist/{revert-3TKLOYQA.js → revert-AQQ2VHRM.js} +1 -1
  128. package/dist/{review-cmd-RXPPC5GK.js → review-cmd-4WZUUOE4.js} +1 -1
  129. package/dist/run-2A7M7EJK.js +2 -0
  130. package/dist/run-6AFY35QW.js +2 -0
  131. package/dist/{run-test-md-AUK7NGLL.js → run-test-md-QNC6KDMN.js} +2 -2
  132. package/dist/{skill-installer-2MNPCPRD.js → skill-installer-ULFNSE6X.js} +1 -1
  133. package/dist/{spawner-XCOMTJJC.js → spawner-DWONVIPI.js} +1 -1
  134. package/dist/tcg-generate-IHHPRVNG.js +2 -0
  135. package/dist/{testmd-actions-TU4KTO32.js → testmd-actions-S3ZNOZEK.js} +1 -1
  136. package/dist/token-refresh-CFVOA62N.js +2 -0
  137. package/dist/{validate-basic-IYMPP7C7.js → validate-basic-4OLDKIA2.js} +1 -1
  138. package/dist/{version-check-MUPSKONS.js → version-check-UL4S6R4N.js} +1 -1
  139. package/dist/{view-cmd-QE2FS3GB.js → view-cmd-FRMQF76B.js} +1 -1
  140. package/dist/walk-session-N3BP57HK.js +2 -0
  141. package/package.json +16 -8
  142. package/bin/kane-cli.js +0 -2
  143. package/dist/ChatSurface-J777M5WC.js +0 -8
  144. package/dist/EvidenceViewOffer-JQDEAE2T.js +0 -2
  145. package/dist/SingleShotApp-QANGFAPO.js +0 -2
  146. package/dist/TestMdRunView-74A3LCNE.js +0 -2
  147. package/dist/archive-committer-3NI773TP.js +0 -2
  148. package/dist/bind-FZ4X4SOK.js +0 -6
  149. package/dist/chunk-6RQAUK5F.js +0 -5
  150. package/dist/chunk-E4OYR32M.js +0 -2
  151. package/dist/chunk-FTD3B7QA.js +0 -2
  152. package/dist/chunk-GIGD4M7V.js +0 -5
  153. package/dist/chunk-I2S6KNZW.js +0 -2
  154. package/dist/chunk-IACKIGPX.js +0 -2
  155. package/dist/chunk-NFOBDHZK.js +0 -147
  156. package/dist/chunk-Q4HLQOJI.js +0 -7
  157. package/dist/chunk-SGU72YLH.js +0 -9
  158. package/dist/chunk-TY5LWU6I.js +0 -14
  159. package/dist/chunk-YANCBRER.js +0 -3
  160. package/dist/descriptor-SL5A7RQE.js +0 -2
  161. package/dist/distill-cmd-EYCCCFL3.js +0 -2
  162. package/dist/evolve-cmd-HR25DRTC.js +0 -2
  163. package/dist/explain-JIXUWEFJ.js +0 -2
  164. package/dist/ingest-4CGBXC2L.js +0 -2
  165. package/dist/ingest-cmd-X7BWGIN7.js +0 -3
  166. package/dist/interactive-bind-T6OBLZCT.js +0 -7
  167. package/dist/login-flow-LJ4BH3OS.js +0 -2
  168. package/dist/pipeline-TZJ652NT.js +0 -2
  169. package/dist/readmodel-MPTENJ2R.js +0 -2
  170. package/dist/reconcile-cmd-242S7XNO.js +0 -8
  171. package/dist/run-UGAOGR3B.js +0 -2
  172. package/dist/signals-cmd-LXHZQLXZ.js +0 -2
  173. package/dist/tcg-generate-E5X23RVP.js +0 -2
  174. package/dist/token-refresh-GGLARJV4.js +0 -2
@@ -1,8 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Ee,b as ke}from"./chunk-6PS65QFF.js";import{a as Re,b as De}from"./chunk-ARS72637.js";import{b as we,d as Be}from"./chunk-Y7KW5AEN.js";import{a as ve}from"./chunk-5Y2G4NC7.js";import{a as Ie}from"./chunk-YCCUBQY4.js";import{a as Ce}from"./chunk-SHSV64GX.js";import{b as Se}from"./chunk-DFS4RMVP.js";import"./chunk-AV5SUGRY.js";import{x as a}from"./chunk-E4OYR32M.js";import{a as D}from"./chunk-HCBYKLMW.js";import{a as b,b as r,i as $e,k as W}from"./chunk-C44QQJR4.js";import{a as be}from"./chunk-6YGTRKDT.js";import{e as I}from"./chunk-UR6MHSHU.js";var S=I(be(),1);var $=I(D(),1),Ae=3,$t=60;function G(e){return e.options.length}var wt={high:{text:"\u203C high",color:a.red},med:{text:"med",color:"yellow"},low:{text:"low",color:a.dim}};function vt({batch:e,i:t}){let n=e.resolution[t],s=n.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${n.form}: ${n.choice}${n.form==="assumed"?" (flagged)":" (you)"}`;return(0,$.jsx)(r,{color:a.dim,children:` ${s}`})}function Ct({batch:e,i:t,sel:n,focused:s,freeText:m}){let u=e.questions[t],c=e.cursor===t,o=e.resolution[t],i=c?"\u203A":" ",l=wt[u.risk],g=h=>c&&s&&n===h?(0,$.jsx)(r,{color:a.generateAccent,children:"\u25B8"}):" ";return(0,$.jsxs)(b,{flexDirection:"column",children:[(0,$.jsxs)(r,{bold:c,children:[` ${t+1} ${i} ${u.text}`,l?(0,$.jsx)(r,{color:l.color,bold:!1,children:` ${l.text}`}):null]}),(0,$.jsx)(r,{color:a.muted,children:` ${u.rationale}`}),o&&!c?(0,$.jsx)(vt,{batch:e,i:t}):(0,$.jsxs)(b,{flexDirection:"column",children:[u.multi_select?(0,$.jsx)(r,{color:a.dim,children:" note: multi-select not yet supported \u2014 pick the best single option"}):null,u.options.map((h,f)=>(0,$.jsxs)(r,{children:[" ",g(f),` ${f+1} ${h.label}`,f===u.recommended_index?(0,$.jsx)(r,{color:a.dim,children:" (recommended)"}):null,o?.selected_index===f?(0,$.jsx)(r,{color:a.dim,children:" (current)"}):null]},`o-${f}`)),u.allow_free_text&&c?m?(0,$.jsxs)(b,{children:[(0,$.jsxs)(r,{children:[" ",(0,$.jsx)(r,{color:a.generateAccent,children:"\u25B8"})," ",(0,$.jsx)(r,{color:a.dim,children:"\u270E "})]}),(0,$.jsx)(Ie,{value:m.value,onChange:m.onChange,onSubmit:m.onSubmit,onCancel:m.onCancel,placeholder:"tell me what to do"})]}):(0,$.jsxs)(r,{children:[" ",g(u.options.length)," ",(0,$.jsx)(r,{color:a.dim,children:"\u270E tell me what to do"})]}):null]})]})}function _e({batch:e,sel:t=0,focused:n=!1,freeText:s=null}){let{stdout:m}=W(),c=(m?.columns??80)<$t,o=e.resolution.filter(R=>!R).length,i=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-Ae)),l=e.questions.slice(i,i+Ae),g=i,h=e.questions.length-i-l.length,f=(0,$.jsxs)(b,{flexDirection:"column",children:[(0,$.jsx)(r,{bold:!0,color:a.generateAccent,children:`? the agent needs ${o===1?"one answer":`${o} answers`} before it can continue`}),g>0?(0,$.jsx)(r,{color:a.muted,children:` \u22EE ${g} above`}):null,l.map((R,p)=>(0,$.jsx)(Ct,{batch:e,i:i+p,sel:t,focused:n,freeText:s},R.id)),h>0?(0,$.jsx)(r,{color:a.muted,children:` \u22EE ${h} more`}):null]});return c?f:(0,$.jsx)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.generateAccent,paddingX:1,children:f})}var E=I(D(),1),Le=60,St=e=>e.length<=Le?e:`${e.slice(0,Le-1)}\u2026`,Bt={high:a.red,med:"yellow"};function te({item:e}){return(0,E.jsxs)(b,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((t,n)=>(0,E.jsx)(r,{dimColor:!0,children:`cite ${t.anchor??"conv"} \u2014 "${t.quote??""}"`},`cite-${n}`)),(e.depends_on_hint??[]).length>0&&(0,E.jsx)(r,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([t,n])=>(0,E.jsx)(r,{dimColor:!0,children:`${t}: ${n}`},`extra-${t}`))]})}function Y({heading:e,turn:t,items:n,expandedRef:s,total:m,compact:u,numbers:c,marks:o}){return(0,E.jsxs)(b,{flexDirection:"column",children:[(0,E.jsx)(r,{bold:!0,children:`${e} \xB7 turn ${t} \xB7 ${m??n.length} proposed`}),n.map((i,l)=>{let g=i.matches_existing,h=g?g.cid?g.archived?` \u2248 matches archived \u2014 previously rejected${g.reason?`: "${g.reason}"`:""}`:" \u2248 matches existing":" \u2248overlap":"",f=o?.[l]?" \xB7 updated":"",R=u?` ${c?.[l]??l+1} \xB7 ${i.title}`:` ${i.title}`,p=i.why?` \u2014 ${u?St(i.why):i.why}`:"";return(0,E.jsxs)(b,{flexDirection:"column",children:[(0,E.jsxs)(r,{children:[R,i.badge!==void 0?(0,E.jsx)(r,{color:Bt[i.badge]??a.dim,children:` ${i.badge}`}):null,p?(0,E.jsx)(r,{color:a.dim,children:p}):null,h?(0,E.jsx)(r,{color:g?.archived?"yellow":"magenta",children:h}):null,f?(0,E.jsx)(r,{color:a.dim,children:f}):null]}),s===i.temp_ref&&(0,E.jsx)(te,{item:i})]},i.temp_ref)})]})}var Me=I(D(),1),It=e=>e.summary??e.description??"";function Rt(e){return{temp_ref:e.temp_ref,title:e.title,badge:e.risk,why:It(e),matches_existing:e.matches_existing?e.matches_existing:null,cite:e.cite??[],depends_on_hint:e.depends_on_hint??[]}}function Oe({turn:e,items:t,expandedRef:n,total:s,compact:m,numbers:u,marks:c}){return(0,Me.jsx)(Y,{heading:"use-cases",turn:e,items:t.map(Rt),expandedRef:n,total:s,compact:m,numbers:u,marks:c})}var Dt={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},M=e=>Dt[e]??`${e}s`,Pe=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,ne=e=>e.kind??"use-case",Ne=e=>`${ne(e)}:${e.temp_ref}`;function Fe(e){let t=e,n=t.badge??e.risk??null,s=t.why??e.summary??e.description??null;return JSON.stringify([e.title,n,s,t.extra??null,e.depends_on_hint??null])}function qe(e){return e.filter(t=>t.role==="agent"&&typeof t.turnIndex=="number"&&Array.isArray(t.items)&&t.items.length>0)}function H(e){let t=new Map,n=1;for(let u of qe(e)){let c=new Set;for(let o of u.items){let i=Ne(o);if(c.has(i))continue;c.add(i);let l=t.get(i);t.set(i,{num:l?.num??n++,ref:o.temp_ref,kind:ne(o),item:o,turnIndex:u.turnIndex,fingerprint:Fe(o)})}}let s=[...t.values()].sort((u,c)=>u.num-c.num),m=[];for(let u of s){let c=m.find(o=>o.kind===u.kind);c?c.count++:m.push({kind:u.kind,label:M(u.kind),count:1})}return{entries:s,byRef:t,counts:m}}function Ue(e,t){let s=qe(e).find(p=>p.turnIndex===t);if(!s)return null;let m=e.filter(p=>p.role!=="agent"||typeof p.turnIndex!="number"||p.turnIndex<=t),u=H(m),c=H(e.filter(p=>p.role!=="agent"||typeof p.turnIndex!="number"||p.turnIndex<t)),o=[],i=new Map,l=new Map,g=new Map,h=new Set;for(let p of s.items){let B=Ne(p);if(h.has(B))continue;h.add(B);let N=c.byRef.get(B),F=p.changed===!0,L=u.byRef.get(B).num,A=ne(p);if(N&&!F&&N.fingerprint===Fe(p)){i.set(A,(i.get(A)??0)+1);continue}let w=!!N||F,q=w?g:l;q.set(A,(q.get(A)??0)+1),o.push({item:p,num:L,updated:w})}let f=[...i.entries()].map(([p,B])=>({label:M(p),count:B})),R=[...[...l.entries()].map(([p,B])=>`${B} new ${B===1?Pe(p):M(p)}`),...[...g.entries()].map(([p,B])=>`${B} updated ${B===1?Pe(p):M(p)}`)].join(" \xB7 ");return{fresh:o,unchanged:f,headerStats:R}}var k=I(D(),1);function We({turnIndex:e,fresh:t,headerStats:n,unchangedTotal:s}){let m=[];for(let c of t){let o=c.item.kind??"use-case",i=m.find(l=>l.kind===o);i?i.rows.push(c):m.push({kind:o,rows:[c]})}let u=`design \xB7 turn ${e} \u2014 ${n||"no new items"}${s>0?` (${s} unchanged)`:""}`;return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(r,{bold:!0,children:u}),m.map(({kind:c,rows:o})=>{let i=o.filter(h=>!h.updated).length,l=o.length-i,g=[...i>0?[`${i} new`]:[],...l>0?[`${l} updated`]:[]].join(" \xB7 ");return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(r,{color:a.dim,children:`${M(c).toLowerCase()} \xB7 ${g}`}),o.map(({item:h,num:f,updated:R})=>{let p=h;return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsxs)(r,{children:[(0,k.jsx)(r,{children:` ${f} \xB7 ${h.title}`}),p.badge?(0,k.jsx)(r,{color:a.dim,children:` \xB7 ${p.badge}`}):null,R?(0,k.jsx)(r,{color:a.dim,children:" \xB7 updated"}):null]}),p.why?(0,k.jsx)(r,{color:a.dim,children:` ${p.why}`}):null]},`${c}:${h.temp_ref}`)})]},c)})]})}var T=I(D(),1);function Et(e){let t=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",n=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${n}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${t}${n}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${t}${n}`}function Ke({block:e,annotations:t}){switch(e.kind){case"banner":return(0,T.jsx)(r,{color:a.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,T.jsxs)(b,{children:[(0,T.jsx)(r,{color:a.orange,children:"\u276F "}),(0,T.jsx)(r,{children:e.text})]});case"note":return(0,T.jsx)(r,{color:a.dim,children:` ${e.text}`});case"agent":return(0,T.jsx)(Re,{text:e.text});case"thinking":return(0,T.jsx)(r,{color:a.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,T.jsx)(r,{color:a.dim,children:` ${Ee({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,T.jsx)(r,{color:a.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let n=t??null,s=n?n.fresh.map(o=>o.item):e.items,m=n?n.fresh.map(o=>o.num):void 0,u=n?n.fresh.map(o=>o.updated):void 0,c=s.some(o=>!!o.kind);return(0,T.jsxs)(b,{flexDirection:"column",marginLeft:2,children:[c?(0,T.jsx)(We,{turnIndex:e.turnIndex,fresh:n?n.fresh:s.map((o,i)=>({item:o,num:i+1,updated:!1})),headerStats:n?.headerStats??"",unchangedTotal:(n?.unchanged??[]).reduce((o,i)=>o+i.count,0)}):e.heading==="use-cases"?(0,T.jsx)(Oe,{turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:m,marks:u}):(0,T.jsx)(Y,{heading:e.heading,turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:m,marks:u}),n&&n.unchanged.length>0&&(0,T.jsx)(r,{color:a.dim,children:` \u22EE unchanged: ${n.unchanged.map(o=>`${o.count} ${o.label}`).join(" \xB7 ")} \u2014 /view to browse`})]})}case"answer":return(0,T.jsx)(r,{color:a.dim,children:Et(e.receipt)});case"continued":return(0,T.jsx)(r,{color:a.dim,children:"\u21B3 continued"});case"commit":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{color:e.ok?a.green:a.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((n,s)=>(0,T.jsx)(r,{color:a.dim,children:` \u26A0 ${n}`},`w-${s}`))]});case"error":return(0,T.jsxs)(Ce,{variant:"error",paddingX:1,children:[(0,T.jsx)(r,{color:a.red,children:e.title}),e.detail.map((n,s)=>(0,T.jsx)(r,{color:a.dim,children:n},`d-${s}`))]});case"interrupted":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{color:a.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,T.jsx)(r,{color:a.dim,children:e.detail}):null]});case"pause":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,T.jsx)(r,{color:a.dim,children:`expires: ${e.expires_at}`}):null,(0,T.jsx)(r,{children:`resume: ${e.resume}`}),e.messageForm?(0,T.jsx)(r,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{bold:!0,children:"session summary"}),e.lines.map((n,s)=>(0,T.jsx)(r,{children:` ${n}`},`s-${s}`))]})}}var Ve=I(D(),1),re="ctrl+t thinking \xB7 ctrl+c exit";function He(e,t){if(e.length<=t)return e;if(t<=1)return"\u2026";let n=Math.ceil((t-1)/2),s=Math.floor((t-1)/2);return`${e.slice(0,n)}\u2026${s>0?e.slice(-s):""}`}function je({verb:e,subject:t,turn:n,pendingCount:s,creditsTotal:m}){let{stdout:u}=W(),c=u?.columns??80,o=[];o.push(e),n&&o.push(`turn ${n}`),m!==void 0&&o.push(`${m.toFixed(1)} cr`);let i=s?`[${s} pending]`:null,l=" \xB7 ",h=[...o,...i?[i]:[]].join(l).length,f,R=[...o,...t?[t]:[],...i?[i]:[],re].join(l);if(R.length<=c)f=R;else{let p=c-h-(t?l.length:0)-l.length-re.length;if(t&&p>=8)f=[...o,He(t,p),...i?[i]:[],re].join(l);else{let B=c-h-(t?l.length:0);f=[...o,...t&&B>=4?[He(t,B)]:[],...i?[i]:[]].join(l)}}return(0,Ve.jsx)(r,{color:a.dim,children:f})}var j=I(be(),1);function oe({onToggleThinking:e,onCtrlC:t,explorer:n,panel:s}){let u=(0,j.useRef)(null),c=(0,j.useRef)(""),o=()=>{u.current&&clearTimeout(u.current),u.current=null,c.current=""};return(0,j.useEffect)(()=>o,[]),$e((i,l)=>{if(l.ctrl&&i==="t"){e();return}if(l.ctrl&&i==="c"){t();return}if(!l.ctrl&&i.includes("")){t();return}if(!l.ctrl&&i.includes("")){e();return}if(n&&n.isOpen()){let g=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{o(),n.onBack()},150)};if(u.current){if(l.upArrow||l.downArrow||l.return){o(),l.return?n.onEnter():n.onMove(l.upArrow?-1:1);return}if(c.current+=i,c.current==="["){g();return}let h=c.current;o();let f=/^\[([AB])/.exec(h);if(f){n.onMove(f[1]==="A"?-1:1);return}n.onBack();return}if(l.upArrow){n.onMove(-1);return}if(l.downArrow){n.onMove(1);return}if(l.return){n.onEnter();return}if(l.escape){c.current="",g();return}if(i.length>=2&&!l.ctrl&&!l.meta){n.onClose();return}return}if(s&&s.isFocused()){let g=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{o(),s.onBack()},150)};if(u.current){if(l.upArrow||l.downArrow||l.return){o(),l.return?s.onSelect():s.onMove(l.upArrow?-1:1);return}if(c.current+=i,c.current==="["){g();return}let h=c.current;o();let f=/^\[([AB])/.exec(h);if(f){s.onMove(f[1]==="A"?-1:1);return}s.onBack();return}if(l.upArrow){s.onMove(-1);return}if(l.downArrow){s.onMove(1);return}if(l.return){s.onSelect();return}if(l.escape){c.current="",g();return}if(/^[1-9]$/.test(i)){s.onDigit(Number(i));return}if(i&&!l.ctrl&&!l.meta){s.onType(i);return}return}}),null}var v=I(D(),1),se=(e,t)=>Math.max(0,Math.min(t,e));function z(e,t,n){switch(t.type){case"move":return{...e,cursor:se(e.cursor+t.delta,Math.max(0,n-1))};case"enter":return e.level==="list"?{...e,level:"detail"}:e;case"back":return e.level==="detail"?{...e,level:"list"}:null}}var Xe={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ge(e,t){if(e.level==="detail")return{level:"detail",cursor:se(e.num-1,Math.max(0,t.entries.length-1))};if(e.section){let n=t.entries.findIndex(s=>Xe[s.kind]===e.section);if(n>=0)return{level:"list",cursor:n}}return{level:"list",cursor:0}}function kt(e){let t=[];for(let n of e.entries){let s=t.find(m=>m.kind===n.kind);s?s.entries.push(n):t.push({kind:n.kind,entries:[n]})}return t}var Qe=3;function At({items:e,cursor:t,verb:n}){let s=`view \xB7 ${n} so far \xB7 ${e.counts.map(u=>`${u.count} ${u.count===1?u.label.replace(/s$/,""):u.label}`).join(" \xB7 ")}`,m=e.entries[t];return(0,v.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.dim,paddingX:1,children:[(0,v.jsx)(r,{bold:!0,children:s}),kt(e).map(({kind:u,entries:c})=>{let o=m?.kind===u,i=o?c.findIndex(f=>f.ref===m.ref):-1,l=o?se(i-1,Math.max(0,c.length-Qe)):0,g=c.slice(l,l+(o?Qe:1)),h=c.length-g.length;return(0,v.jsxs)(b,{flexDirection:"column",children:[(0,v.jsx)(r,{color:a.dim,children:`${Xe[u]??M(u)} \xB7 ${c.length}`}),g.map(f=>{let R=o&&f.ref===m.ref,p=f.item.badge;return(0,v.jsxs)(r,{children:[(0,v.jsx)(r,{color:a.generateAccent,children:R?"\u203A ":" "}),(0,v.jsx)(r,{children:`${f.num} \xB7 ${f.item.title}`}),p?(0,v.jsx)(r,{color:a.dim,children:` \xB7 ${p}`}):null]},`${f.kind}:${f.ref}`)}),h>0&&(0,v.jsx)(r,{color:a.dim,children:` \u22EE ${h} more`})]},u)}),(0,v.jsx)(r,{color:a.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back to chat"})]})}function _t({items:e,cursor:t}){let n=e.entries[t];if(!n)return(0,v.jsx)(r,{color:a.dim,children:"nothing to show"});let s=n.item;return(0,v.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.dim,paddingX:1,children:[(0,v.jsx)(r,{bold:!0,children:`view \xB7 ${n.kind} ${n.num} of ${e.entries.length}`}),(0,v.jsx)(r,{children:n.item.title}),s.badge?(0,v.jsx)(r,{color:a.dim,children:`kind: ${s.badge}`}):null,s.why?(0,v.jsx)(r,{color:a.dim,children:s.why}):null,(0,v.jsx)(te,{item:n.item}),(0,v.jsx)(r,{color:a.dim,children:"view-only \u2014 approvals happen in chat"}),(0,v.jsx)(r,{color:a.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Ye({items:e,state:t,verb:n}){return t.level==="list"?(0,v.jsx)(At,{items:e,cursor:t.cursor,verb:n}):(0,v.jsx)(_t,{items:e,cursor:t.cursor})}var ze=[{name:"view",description:"browse the proposal set"},{name:"explain",description:"why a committed item exists"},{name:"pause",description:"save + exit (resumable)"},{name:"done",description:"finish the session"}],Lt={"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 Je(e){let t=(e??"").trim().toLowerCase();if(!t)return{level:"list"};if(/^\d+$/.test(t)){let s=parseInt(t,10);return s>=1?{level:"detail",num:s}:{error:"items are numbered from 1 \u2014 /view 1"}}let n=Lt[t];return n?{level:"list",section:n}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var C=I(D(),1),Ot=6,Ze=12;function Mt(e,t,n){let s=Math.max(20,t),m=[];for(let c of e.split(`
3
- `)){if(c.length<=s){m.push(c);continue}let o="";for(let i of c.split(" "))o&&o.length+1+i.length>s?(m.push(o),o=i):o=o?`${o} ${i}`:i;m.push(o)}let u=Math.max(0,m.length-n);return{body:m.slice(-n).join(`
4
- `),hidden:u}}var Pt='chat with the agent \u2014 "/" for commands',et=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Nt(e,t){return t?" \u2014 Enter continues \xB7 or type to adjust":e==="design"?" \u2014 reply, or /done to finish":' \u2014 reply, "looks good" approves, /done finishes'}function On({controller:e,verb:t="extract",onCtrlC:n}){let[,s]=(0,S.useState)(0),[m,u]=(0,S.useState)(!1),[c,o]=(0,S.useState)(null),[i,l]=(0,S.useState)(null),g=(0,S.useRef)(null),h=d=>{g.current=d,l(d)},f=Se(),{stdout:R}=W(),p=R?.columns??80,B=(0,S.useRef)(0),N=(0,S.useRef)(0),F=(0,S.useRef)(null);F.current||(F.current=new we(null)),(0,S.useEffect)(()=>{let d=()=>{let y=e.state.ledger;for(let _=B.current;_<y.length;_++){let P=y[_],bt=P.kind==="turn"?Ue(e.state.turns,P.turnIndex):void 0;f.append((0,C.jsx)(Ke,{block:P,annotations:bt},`lg-${_}`))}B.current=y.length};d();let x=e.subscribe(()=>{d();let y=e.state;g.current&&(y.pending||y.status==="pausing")&&(h(null),y.pending&&o("questions arrived \u2014 back to chat")),s(_=>_+1)});return s(y=>y+1),x},[e,f]);let{thinking:L,status:A,pending:w,confirm:q,ledger:ie,activeTurn:ae,stream:tt,notice:V}=e.state,ce=(tt?.text??"").trimEnd(),le=ce.length>0,nt=m&&(L.liveThinking.length>0||L.thinkingLog.length>0),rt=Mt(L.liveThinking||L.thinkingLog.map(d=>d.text).join(`
5
- `),p-6,Ze),ue=le?ce.split(`
6
- `).slice(-Ot):[];ae&&(N.current=ae.turnIndex);let ot=w?w.resolution.filter(d=>!d).length:0,de;for(let d=ie.length-1;d>=0;d--){let x=ie[d];if(x.kind==="banner"&&!x.text.startsWith("kane")){de=x.text;break}}let K=L.activity[L.activity.length-1],J=K?K.status==="decision"?K.label:ke({name:K.name,status:K.status}):void 0,me=A==="streaming"||A==="working",[st,it]=(0,S.useState)(0);ve(()=>it(d=>d+1),me?120:null);let at=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,ct=le?"Writing\u2026":J?`${J.charAt(0).toUpperCase()}${J.slice(1)}\u2026`:e.state.workingLabel??(t==="design"?"Designing\u2026":"Thinking\u2026"),lt=e.state.turns.some(d=>d.role==="agent"),[ut,dt]=(0,S.useState)(0),[pe,mt]=(0,S.useState)(!1),[fe,pt]=(0,S.useState)(null),Q=(0,S.useRef)(0),ge=(0,S.useRef)(!1),xe=(0,S.useRef)(null),X=d=>{Q.current=d,dt(d)},he=d=>{ge.current=d,mt(d)},U=d=>{xe.current=d,pt(d)},Te=w&&w.cursor>=0?w.questions[w.cursor]:void 0,O=(0,S.useRef)(Te);O.current=Te;let Z=(0,S.useRef)(w);Z.current=w;let ft=w?`${w.questions[0]?.id??"b"}:${w.cursor}`:null;(0,S.useEffect)(()=>{if(U(null),O.current){he(!0);let d=Z.current?.resolution[Z.current.cursor]?.selected_index;X(d??O.current.recommended_index??0)}else he(!1)},[ft]);let gt={isFocused:()=>ge.current&&O.current!=null&&xe.current==null,onMove:d=>{let x=O.current;if(!x)return;let y=x.allow_free_text?G(x):x.options.length-1;X(Math.max(0,Math.min(y,Q.current+d)))},onSelect:()=>{let d=O.current;if(d){if(d.allow_free_text&&Q.current===G(d)){U("");return}e.submit(String(Q.current+1))}},onDigit:d=>{let x=O.current;x&&d-1<x.options.length&&X(d-1)},onType:d=>{let x=O.current;x?.allow_free_text&&(X(G(x)),U(d))},onBack:()=>e.reopenQuestion()},xt=fe!=null?{value:fe,onChange:d=>U(d),onSubmit:d=>{U(null),d.trim()&&e.submit(d.trim())},onCancel:()=>U(null)}:null,ht=A==="streaming"&&!w||!!w&&pe,Tt=w?"answer in the panel above \u2014 \u2191/\u2193 + Enter, or just type your answer":Pt,ee=n??(()=>e.requestPause()),yt=d=>{let x=Je(d);if("error"in x){o(x.error);return}let y=H(e.state.turns);if(y.entries.length===0){o("nothing proposed yet \u2014 the first turn is still coming");return}if(x.level==="detail"&&x.num>y.entries.length){o(`no item ${x.num} \u2014 the set has ${y.entries.length} item${y.entries.length===1?"":"s"}`);return}h(Ge(x,y))},ye=(0,C.jsx)(je,{verb:t,subject:de,turn:N.current||void 0,pendingCount:ot,creditsTotal:e.state.credits?.total});if(i){let d=H(e.state.turns),x=d.entries.length;return(0,C.jsxs)(b,{flexDirection:"column",children:[(0,C.jsx)(oe,{onToggleThinking:()=>u(y=>!y),onCtrlC:ee,explorer:{isOpen:()=>g.current!==null,onClose:()=>{h(null),o("closed the explorer \u2014 your text didn't send, retype to chat"),setTimeout(()=>s(y=>y+1),0)},onMove:y=>h(g.current&&z(g.current,{type:"move",delta:y},x)),onEnter:()=>h(g.current&&z(g.current,{type:"enter"},x)),onBack:()=>{h(g.current&&z(g.current,{type:"back"},x)),setTimeout(()=>s(y=>y+1),0)}}}),(0,C.jsx)(Ye,{items:d,state:i,verb:t}),(V??c)&&(V??c).split(`
7
- `).map((y,_)=>(0,C.jsx)(r,{color:a.orange,children:y},`nt-${_}`)),ye]})}return(0,C.jsxs)(b,{flexDirection:"column",children:[(0,C.jsx)(oe,{onToggleThinking:()=>u(d=>!d),onCtrlC:ee,panel:gt}),nt&&(0,C.jsx)(De,{thinking:rt.body,expanded:!0,thinkingDone:A!=="streaming",maxLines:Ze+1}),ue.length>0&&(0,C.jsx)(b,{flexDirection:"column",children:ue.map((d,x)=>(0,C.jsx)(r,{children:d},`st-${x}`))}),w&&(0,C.jsx)(_e,{batch:w,sel:ut,focused:pe,freeText:xt}),q&&(0,C.jsx)(r,{color:"yellow",children:q.prompt}),(V??c)&&(V??c).split(`
8
- `).map((d,x)=>(0,C.jsx)(r,{color:a.orange,children:d},`nt-${x}`)),me&&!w&&(0,C.jsxs)(r,{color:a.generateAccent,children:[`${et[st%et.length]} ${ct} `,(0,C.jsx)(r,{color:a.dim,children:`(${at}s)`})]}),A==="idle"&&lt&&!w&&!q&&(0,C.jsxs)(r,{color:a.generateAccent,children:["\u25CF your turn",(0,C.jsx)(r,{color:a.dim,children:Nt(t,e.state.checkpoint)})]}),A==="pausing"?(0,C.jsx)(r,{color:a.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}):(0,C.jsx)(Be,{history:F.current,placeholder:Tt,accent:a.generateAccent,submitVerb:w?"answer":"send",submitEmpty:!!w||t==="design"&&e.state.checkpoint,inert:ht,commands:ze,footerBindings:[{keys:"\u21B5",label:w?"answer":"send"},{keys:"\u2191\u2193",label:"history"},{keys:"ctrl+t",label:"thinking"},{keys:"ctrl+c",label:"exit"}],onSubmit:d=>{let x=d.trim();if(!x){w?e.submit(""):t==="design"&&e.state.checkpoint&&e.continueParked();return}if(o(null),x.startsWith("/")){let[y="",..._]=x.slice(1).split(/\s+/),P=_.join(" ");if(!y){o('type "/" then a command \u2014 /view, /explain, /pause, /done');return}switch(y.toLowerCase()){case"view":yt(P);return;case"explain":if(!P){o("usage: /explain <ref> \u2014 e.g. /explain guest-checkout");return}e.explainRef(P);return;case"pause":ee();return;case"done":case"exit":e.completeSession();return;default:o(`unknown command "/${y}" \u2014 try /view, /explain, /pause, /done`);return}}e.submit(x)}}),ye]})}export{On as ChatSurface,Mt as tailVisualRows,Nt as yourTurnTail};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-B5LJCGAY.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OE7TVGNB.js";import"./chunk-FYOCF7DY.js";import"./chunk-RGEAEAZB.js";import"./chunk-BC7UVJJB.js";import"./chunk-KHDUQ33H.js";import"./chunk-NFOBDHZK.js";import"./chunk-L5LI2JF4.js";import"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-M5JQXOCE.js";import"./chunk-RLG5NUTE.js";import"./chunk-E4OYR32M.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-RZFINU7J.js";import"./chunk-7YQW4TFI.js";import"./chunk-Y7KW5AEN.js";import"./chunk-7MV5UF6O.js";import"./chunk-XBE7PGVY.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-VXGOWBET.js";import"./chunk-BGGNBWAJ.js";import"./chunk-YCCUBQY4.js";import"./chunk-YZKPZXHY.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-VE3SUJMA.js";import"./chunk-TZZYRDCF.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-UXJPCWGW.js";import"./chunk-FFL2TQEJ.js";import"./chunk-Q4HLQOJI.js";import"./chunk-XBE7PGVY.js";import"./chunk-F66SSA4C.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-RLG5NUTE.js";import"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import"./chunk-DFS4RMVP.js";import"./chunk-E4OYR32M.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{b as d}from"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import{g as i}from"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";function u(n,r,c){let{ref:e,reason:o,by:l}=c;if(!o||o.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 s=r.resolve(e);if(!s)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${e}' in the graph`}]};let t=r.tipOf(s.cid);if(r.superseded.has(t))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${e} is already superseded at its tip (${t.slice(0,19)}\u2026)`}]};let a=i(n,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:t,new:null,reason:o,by:l}],source_head_moves:{}},{expectPrev:r.latestHash});return d(n),{record:a.record,errors:null}}export{u as commitArchive};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p}from"./chunk-7LFCSSPX.js";import"./chunk-KHU7C6EE.js";import"./chunk-NNZV5RCE.js";import"./chunk-SGU72YLH.js";import"./chunk-I2S6KNZW.js";import"./chunk-FXPPQL4D.js";import"./chunk-RE3BZVGE.js";import"./chunk-6PS65QFF.js";import"./chunk-JFAFKHDX.js";import"./chunk-FTD3B7QA.js";import"./chunk-QPZRHAYK.js";import"./chunk-VJUIW2ES.js";import"./chunk-YKTYVJBN.js";import"./chunk-Z56AWGVY.js";import"./chunk-427OQS2N.js";import"./chunk-RGEAEAZB.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-KHDUQ33H.js";import"./chunk-L5LI2JF4.js";import"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";import{existsSync as D}from"fs";var b=new Set(["interactive","agent","ci","override"]);function E(e){return e.mode!=null&&!b.has(e.mode)?{error:`design: --mode must be interactive | agent | ci | override, got '${e.mode}'`}:e.strength!=null&&e.strength!=="pairwise"&&e.strength!=="3-wise"?{error:`design: --strength must be pairwise | 3-wise, got '${e.strength}'`}:e.max!=null&&(!Number.isInteger(e.max)||e.max<1)?{error:"design: --max must be a positive integer"}:!e.useCase&&!e.resume?{error:"design: --use-case is required (or --resume <sid> \u2014 the session remembers its use-case)"}:{useCase:e.useCase,max:e.max,strength:e.strength,mode:e.mode,force:e.force,resume:e.resume,plan:e.plan,message:e.message,because:e.because,changeDelta:e.changeDelta,priorDesign:e.priorDesign}}async function A(e){let c=async(r,s)=>{if(process.stderr.write(r+`
3
- `),e.mode!=="agent")return 2;let{makeHeadlessIO:t,agentRefusal:i}=await import("./headless-io-GXHKDPHB.js");return i(t("ndjson","design"),r,s)},d=E(e);if("error"in d)return c(d.error);let a=d;{let{validateResumeMessage:r}=await import("./headless-io-GXHKDPHB.js"),s=r(a,"design");if(s)return c(s)}if(!D(u(process.cwd())))return c("error: no context store here (run `kane-cli context ingest` + `kane-cli context extract` first)","NO_STORE");let n=null;try{if(!a.mode&&!process.stdin.isTTY)return process.stderr.write(`design: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
4
- `),2;let r=a.mode??"interactive";if(r==="interactive"){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stderr.write(`design: --mode interactive needs a TTY on stdin and stdout (use --mode agent|ci|override headless)
5
- `),2;let{bindDesignInteractive:o}=await import("./interactive-bind-T6OBLZCT.js");return await o(a)}let{resolveAgentAuthEnv:s}=await import("./spawner-XCOMTJJC.js"),{runAgent:t}=await import("./bridge-7UMWMIJJ.js"),{preflightTurn:i}=await import("./turn-preflight-JGYT7LXP.js"),{makeInterruptGuard:h}=await import("./interrupt-guard-UREUWNRL.js"),{baseUrlAdvisory:w}=await import("./turn-preflight-JGYT7LXP.js"),{makeHeadlessIO:T,resolveEncoding:v,guardedChannels:x}=await import("./headless-io-GXHKDPHB.js");n=T(v(r),"design");let m=await s(),l=w();l&&n.out(l);let g=h(t,o=>n.out(o)),f=x(n,()=>g.interrupted(),/^error: (design agent failed|the design agent ended)/);try{let o=await p({...a,mode:r},{contextDir:u(process.cwd()),agent:g.agent,preflightTurn:()=>i(m),ask:async()=>[],out:f.out,emit:f.emit,progress:n.progress,isTTY:!1,auth:m});return g.interrupted()&&o!==3?(n.out("interrupted \u2014 no session saved"),n.done(130)):n.done(o)}finally{g.dispose()}}catch(r){let s=r instanceof Error?r.message:String(r);n?.event({type:"error",message:`error: design failed: ${s}`});let t=n?i=>n.out(i):i=>process.stderr.write(i+`
6
- `);return t(`error: design failed: ${s}`),(process.env.ASSURANCE_LOG_LEVEL??"").toLowerCase()==="debug"&&r instanceof Error&&r.stack&&t(r.stack),t("hint: per-run trace logs live under .context/logs/ (design-*.log)"),n?n.done(1):1}}export{A as designTestsCommand};
@@ -1,5 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as D}from"./chunk-NNZV5RCE.js";import{a as p,b as U,d as G}from"./chunk-AD46OCZ4.js";import{a as _}from"./chunk-JFAFKHDX.js";import{a as x}from"./chunk-QPZRHAYK.js";import{d as w}from"./chunk-KHDUQ33H.js";import{a as O,b as C}from"./chunk-D5T4ARTB.js";import{d as f,e as m}from"./chunk-IACKIGPX.js";var y=(e,t)=>e.nameOf.get(t)??t;function B(e,t){let n=[];for(let{cid:o}of e.byLabel(f.SCENARIO))e.superseded.has(o)||e.edgesFrom(o).some(s=>s.type===m.BELONGS_TO&&e.tipOf(s.dst)===t)&&n.push(o);return n}function P(e,t){let n=[],o=[],s=[],c=B(e,t),i=new Set(c);for(let r of c){let d=e.getNode(r)?.content??{};n.push({ref:y(e,r),title:String(d.title??""),case_type:String(d.case_type??""),intent:String(d.intent??"")});for(let u of e.edgesInto(r)){if(u.type!==m.AUTOMATES||e.superseded.has(u.src))continue;let g=e.getNode(u.src)?.content??{},a=e.edgesFrom(u.src).filter(l=>l.type===m.VERIFIES&&!e.superseded.has(l.dst)).map(l=>y(e,l.dst));o.push({ref:y(e,u.src),title:String(g.title??""),check:g.check,verifies:a})}}for(let{cid:r}of e.byLabel(f.AC)){if(e.superseded.has(r))continue;let d=e.edgesFrom(r).find(l=>l.type===m.SCOPED_TO);if(!d)continue;let u=e.tipOf(d.dst);if(!(u===t||i.has(u)))continue;let a=e.getNode(r)?.content??{};s.push({ref:y(e,r),text:String(a.text??""),kind:String(a.kind??""),scope:u===t?"use-case":y(e,u)})}return{scenarios:n,tests:o,acs:s}}function A(e,t,n){let o=t.getNode(n)?.content.blob;if(typeof o!="string")return null;let s=w(e,o);return s===null?null:s.toString("utf8")}function M(e,t){let n=t.split(`
3
- `).map(s=>s.replace(/^\d+\| /,"")),o=[];for(let s of e.split(`
4
- `)){let c=s.trim();if(c.length===0)continue;let i=n.find(r=>r.includes(c));i!==void 0&&!o.includes(i.trim())&&o.push(i.trim())}return o.length>0?o.join(`
5
- `):{removed:!0}}function j(e,t,n,o){if(o!==void 0&&o.trim().length>0)return{kind:"user-directive",text:o.trim()};let s=[n,...P(t,n).acs.map(r=>t.resolve(r.ref)?.cid??"")].filter(Boolean),c=[],i=new Set;for(let r of s){let d=new Map;for(let u of t.derivesInto(r))d.set(String(u.props.source_id),u);for(let[u,g]of d){let a=t.heads.get(u);if(a==null||a===g.props.source_cid)continue;let l=String(g.props.anchor),h=`${u}\0${l}`;if(i.has(h)||l==="img#whole")continue;i.add(h);let b=A(e,t,String(g.props.source_cid)),E=b===null?null:x(b,l);if(E===null)continue;let T=A(e,t,a);c.push({source_id:u,anchor:l,old_anchor_text:E,new_anchor_text:T===null?{removed:!0}:M(E,T)})}}return{kind:"source-change",changes:c}}function L(e,t,n,o){let s=P(t,n);if(s.scenarios.length===0&&s.tests.length===0&&s.acs.length===0)return;let c=j(e,t,n,o);if(!(c.kind==="source-change"&&c.changes.length===0))return{prior_design:s,change_delta:c}}var $=new Set([f.USECASE,f.SCENARIO,f.AC,f.TEST]);function v(e,t){return!e.superseded.has(t)&&e.trust.get(t)!=="archived"}function S(e,t,n){let o=e.edgesFrom(t).find(s=>s.type===n);return o?e.tipOf(o.dst):null}function k(e,t,n){if(n===f.USECASE)return t;if(n===f.SCENARIO)return S(e,t,m.BELONGS_TO);if(n===f.AC){let o=S(e,t,m.SCOPED_TO);return o?e.nodeLabel.get(o)===f.USECASE?o:S(e,o,m.BELONGS_TO):null}if(n===f.TEST){let o=S(e,t,m.AUTOMATES);return o?S(e,o,m.BELONGS_TO):null}return null}function F(e,t){let n=e.nameOf.get(t);if(n)return n;for(let[o,s]of e.names)if(e.tipOf(s)===t)return o;return t}function N(e,t){return{ucTip:t,display:F(e,t),seamRef:e.nameOf.get(t)??t}}function V(e,t){let n=e.resolve(t);if(!n)return{ok:!1,message:`unknown ref '${t}' \u2014 no test/scenario/ac/use-case by that id or cid`};let o=n.tip,s=e.nodeLabel.get(o);if(!s||!$.has(s))return{ok:!1,message:`'${t}' is a ${s??"missing node"} \u2014 evolve takes a test, scenario, acceptance criterion, or use-case`};let c=k(e,o,s);return!c||e.nodeLabel.get(c)!==f.USECASE?{ok:!1,message:`cannot resolve '${t}' to a parent use-case \u2014 its ${s} chain is broken`}:e.superseded.has(c)?{ok:!1,message:`use-case ${F(e,c)} was removed \u2014 nothing to evolve`}:{ok:!0,target:N(e,c)}}function R(e,t){let n=[];for(let{cid:s}of e.byLabel(f.SCENARIO)){if(!v(e,s)||!e.edgesFrom(s).some(i=>i.type===m.BELONGS_TO&&e.tipOf(i.dst)===t))continue;let c=e.edgesInto(s).filter(i=>i.type===m.AUTOMATES&&v(e,i.src));if(c.length===0)n.push({scenario:s,test:null});else for(let i of c)n.push({scenario:s,test:i.src})}let o=new Map;for(let{cid:s}of e.byLabel(f.AC)){if(!v(e,s)||k(e,s,f.AC)!==t)continue;let c=e.edgesInto(s).filter(i=>i.type===m.VERIFIES&&v(e,i.src)).map(i=>i.src).sort();o.set(s,c)}return{pairs:n,verifies:o}}function q(e,t){let n=i=>`${i.scenario}\0${i.test??""}`,o=new Set(e.pairs.map(n)),s=new Set(t.pairs.map(n)),c=[];for(let[i,r]of e.verifies){let d=t.verifies.get(i);d&&(r.length===d.length&&r.every((u,g)=>u===d[g])||c.push({ac:i,before:r,after:d}))}return{superseded:e.pairs.filter(i=>!s.has(n(i))),minted:t.pairs.filter(i=>!o.has(n(i))),retained:t.pairs.filter(i=>o.has(n(i))),moves:c}}function Y(e,t,n,o,s){let c=r=>t.nameOf.get(r)??r,i=r=>` - ${c(r.scenario)} \xB7 ${r.test?c(r.test):"(no test)"}`;e.out(`evolved: use-case ${n} \u2014 design record ${o.before} \u2192 ${o.after}`),e.out(`superseded: ${s.superseded.length} pair(s)`);for(let r of s.superseded)e.out(i(r));e.out(`minted: ${s.minted.length} pair(s)`);for(let r of s.minted)e.out(i(r));e.out(`retained: ${s.retained.length} pair(s)`);for(let r of s.retained)e.out(i(r));if(s.moves.length===0)e.out("verifies moves: none");else{e.out("verifies moves:");for(let r of s.moves){let d=u=>u.length>0?u.map(c).join(" + "):"(none)";e.out(` - ${c(r.ac)}: ${d(r.before)} \u2192 ${d(r.after)}`)}}}async function I(e,t,n,o,s,c){let i=O(e),r=D(i,t.ucTip);if(!r)return c==="batch"?(o.out(`note: ${t.display} has no design output \u2014 nothing to evolve; run kane-cli design tests --use-case ${t.display} first`),{code:0,outcome:"no-design"}):(p(o,`nothing to evolve \u2014 run kane-cli design tests --use-case ${t.display} first (no design output)`),{code:2,outcome:"no-design"});let d=R(i,t.ucTip),u=`evolve re-designs the parent use-case ${t.display}; ${d.pairs.length} pair(s) affected`;if(n.yes)o.out(u);else if(!await o.confirm(`${u} \u2014 proceed?`))return o.out(c==="batch"?`skipped ${t.display}`:"declined \u2014 nothing evolved"),{code:0,outcome:"declined"};let g=L(e,i,t.ucTip,n.because),a=await s(t.seamRef,{yes:!!n.yes,...n.because?{because:n.because}:{},...g!==void 0?{changeDelta:g.change_delta,priorDesign:g.prior_design}:{}});if(a===3)return o.out(`design session for ${t.display} paused \u2014 resume with \`kane-cli design tests --resume\`, then re-run evolve for the diff`),{code:a,outcome:"paused"};if(a!==0)return p(o,`design run for ${t.display} ended with exit code ${a} \u2014 no diff to report`),{code:a,outcome:"failed"};let l=O(e),h=l.tipOf(t.ucTip),b=D(l,h)?.seq;return Y(o,l,t.display,{before:r.seq,after:b??"?"},q(d,R(l,h))),{code:0,outcome:"evolved"}}function H(e){let t=new Map,n=0;for(let{cid:s,state:c}of e.staleList()){if(c==="superseded")continue;let i=e.nodeLabel.get(s);if(!i||!$.has(i)||!v(e,s)||!C(e,s))continue;let r=k(e,s,i);!r||e.nodeLabel.get(r)!==f.USECASE||e.superseded.has(r)||(n++,t.has(r)||t.set(r,N(e,r)))}return{targets:[...t.values()].sort((s,c)=>s.display<c.display?-1:s.display>c.display?1:0),staleCount:n}}function z(e,t){for(let{cid:n,state:o}of e.staleList()){if(o==="superseded")continue;let s=e.nodeLabel.get(n);if(!(!s||!$.has(s)||!v(e,n))&&C(e,n)&&k(e,n,s)===t)return!0}return!1}async function J(e,t,n,o={},s=process.cwd()){if(e&&t.fromStale)return p(n,"pass a <ref> OR --from-stale, not both"),2;if(!e&&!t.fromStale)return p(n,"evolve needs a <ref> or --from-stale"),2;let c=U(s,n);if(!c)return 2;let i=o.runDesignForUc??K;n.out(`evolving ${e??"stale use-cases"}: reading the graph\u2026`);let r=O(c),d,u=null;if(e){let a=V(r,e);if(!a.ok)return p(n,a.message),2;if(!t.because&&D(r,a.target.ucTip)&&!z(r,a.target.ucTip))return p(n,`nothing changed underneath ${e} \u2014 its sources and requirements are current; use --because "<reason>" to re-design anyway`),2;d=[a.target]}else{let{targets:a,staleCount:l}=H(r);if(a.length===0)return n.out("nothing stale \u2014 nothing to evolve"),0;u=`from-stale: ${l} stale node(s) \u2192 ${a.length} use-case(s)`,d=a}if(!t.yes&&!n.isTTY)return p(n,"refusing to evolve without --yes (no TTY to confirm)"),2;if(u&&n.out(u),e){let a=await I(c,d[0],t,n,i,"single");return a.outcome==="evolved"&&t.because&&_(c,{ts:new Date().toISOString(),command:"evolve",id:e,verdict:"gap-resolved-evolve",polarity:"preference",by:{kind:"human",id:process.env.USER??"operator"},target:e,reason:t.because}),a.code}let g=0;for(let a of d){let{code:l}=await I(c,a,t,n,i,"batch");l!==0&&g===0&&(g=l)}return g}var K=async(e,t)=>{let{designTestsCommand:n}=await import("./bind-FZ4X4SOK.js");return n({useCase:e,force:!0,...t.yes?{mode:"override"}:{},...t.because?{because:t.because}:{},...t.changeDelta!==void 0?{changeDelta:t.changeDelta}:{},...t.priorDesign!==void 0?{priorDesign:t.priorDesign}:{}})};async function ie(e,t){return J(e,t,G(),{})}export{V as a,I as b,J as c,K as d,ie as e};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{homedir as e}from"os";import{join as t}from"path";var m="0.6.3",d="kane-cli",a=t(e(),".testmuai","kaneai"),g=t(a,"profiles"),h=t(a,"tui-config.json"),_="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",x=`https://registry.npmjs.org/${n}`,r="kane-cli",A=[{dir:t(e(),".claude","skills",r),agent:"Claude Code"},{dir:t(e(),".agents","skills",r),agent:"Codex CLI"},{dir:t(e(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",U="https://kaneai-playground.lambdatest.io",b=9222,R=9230,I=t(a,"chrome-profiles"),o=t(a,"hints"),C=t(o,"state.json");function E(s){return t(o,`catalog-${s}.json`)}var i="127.0.0.1",T=18392,S=18400,c="/callback";function N(s){return`http://${i}:${s}${c}`}var P="KANE CLI",B="*",O={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server",evidenceViewerUrl:"https://evidence.lambdatest.com"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server",evidenceViewerUrl:"https://stage-evidence.lambdatestinternal.com"}},k={orange:"#ff9500",generateAccent:"#0d9488",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,a as c,h as d,_ as e,L as f,n as g,A as h,u as i,U as j,b as k,R as l,I as m,C as n,E as o,i as p,T as q,S as r,c as s,N as t,P as u,B as v,O as w,k as x};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as K}from"./chunk-QPZRHAYK.js";import{a as L,b,d as B}from"./chunk-GIRXJOJI.js";import{e as W,g as A}from"./chunk-B2PZAB7J.js";import{d as O,e as R,f as P,g as j,h as q}from"./chunk-IACKIGPX.js";var V=/^[a-z0-9][a-z0-9-]{1,63}$/;function z(p,d,e,t){if(!d)return{error:{code:"SUPERSEDE_TARGET_MISSING",detail:"supersede verdict needs a target (slug or cid)"}};let n=p.resolve(d);return n?n.superseded||t.has(n.cid)?{error:{code:"ALREADY_SUPERSEDED",detail:`${d} is already superseded (tip: ${n.tip})`}}:n.cid===e?{error:{code:"SELF_SUPERSEDE",detail:"a node cannot supersede itself"}}:{targetCid:n.cid}:{error:{code:"UNKNOWN_SUPERSEDE_TARGET",detail:`${d} names nothing in the graph`}}}function X(p,d,e,t,n=[]){if(!j(d)?.acyclic)return null;if(e===t)return{code:"EDGE_CYCLE",detail:`${d} ${e} \u2192 itself`};let i=_=>[...p.edgesFrom(_).filter(h=>h.type===d).map(h=>h.dst),...n.filter(h=>h.type===d&&h.src===_).map(h=>h.dst)],a=new Set,g=[t];for(;g.length>0;){let _=g.pop();if(_===e)return{code:"EDGE_CYCLE",detail:`${d} ${e} \u2192 ${t} closes a cycle`};a.has(_)||(a.add(_),g.push(...i(_)))}return null}function de(p,d,e,t){let m=j(d)?.cardinality;if(m!=="one-live-per-src"&&m!=="one-live-per-src-and-dst")return null;let i=p.edgesFrom(e).filter(a=>a.type===d&&!p.superseded.has(a.dst));if(i.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${d} from ${e} already has a live edge (${i[0].ecid}) \u2014 supersede it first`};if(m==="one-live-per-src-and-dst"&&t!==void 0){let a=p.edgesInto(t).filter(g=>g.type===d&&!p.superseded.has(g.src));if(a.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${d} onto ${t} already has a live edge (${a[0].ecid}) \u2014 strict 1:1, supersede it first`}}return null}var Y=new Set(["high","med","low"]);function ce(p,d,e){let t=[],n=e.mediaOf(p.source.source_cid),m=new Set;for(let i of p.use_cases){if(m.has(i.temp_ref)&&t.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${i.temp_ref}`}),m.add(i.temp_ref),(!i.title||!i.title.trim())&&t.push({code:"EMPTY_TITLE",detail:`${i.temp_ref}: title is empty`}),Y.has(i.risk)||t.push({code:"BAD_RISK",detail:`${i.temp_ref}: risk ${JSON.stringify(i.risk)} not in high|med|low`}),!i.cite||!i.cite.anchor)t.push({code:"MISSING_CITE",detail:`${i.temp_ref}: every derived use-case must carry a cite`});else for(let a of K(n,i.cite,d))t.push({code:a.code,detail:`${i.temp_ref}: ${a.detail}`});i.matches_existing&&!e.hasNode(i.matches_existing.cid)&&t.push({code:"UNKNOWN_MATCH",detail:`${i.temp_ref}: matches_existing ${i.matches_existing.cid} is not in the graph`});for(let[a,g]of(i.criteria??[]).entries())if((!g.text||!g.text.trim())&&t.push({code:"EMPTY_CRITERION",detail:`${i.temp_ref}.criteria[${a}]: text is empty`}),!g.cite||!g.cite.anchor)t.push({code:"MISSING_CITE",detail:`${i.temp_ref}.criteria[${a}]: every criterion carries its own cite`});else for(let _ of K(n,g.cite,d))t.push({code:_.code,detail:`${i.temp_ref}.criteria[${a}]: ${_.detail}`})}return t}function ae(p){let{contextDir:d,graph:e,proposal:t,proposalId:n,verdicts:m,by:i,allowStaleBasis:a,extractorVersion:g,autoName:_}=p,h=W(d);if(!a&&t.read_basis!==h)return{record:null,errors:[{code:"STALE_BASIS",detail:`proposal read_basis ${String(t.read_basis)} != latest ${String(h)}`}]};if(!e.hasNode(t.source.source_cid))return{record:null,errors:[{code:"MISSING_SOURCE_NODE",detail:`source ${t.source.source_id} (${t.source.source_cid}) is not a committed node \u2014 ingest it first`}]};let l=[],f=e.mediaOf(t.source.source_cid),k=new Set,v=[],E=[],C=[],I=[],w=[],x=[],U=new Set,H=new Set,F=(r,s,T)=>{let c=z(e,s.supersedeTarget,T,U);if("error"in c){l.push({code:c.error.code,detail:`${r}: ${c.error.detail}`});return}U.add(c.targetCid),w.push({kind:"node",old:c.targetCid,new:T,reason:s.reason??`superseded via review by ${i.id}`,by:i})};for(let r of t.use_cases){let s=m.get(r.temp_ref)??{resolution:"skipped"};if(k.has(r.temp_ref)&&l.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${r.temp_ref}`}),k.add(r.temp_ref),(!r.title||!r.title.trim())&&l.push({code:"EMPTY_TITLE",detail:`${r.temp_ref}: title is empty`}),Y.has(r.risk)||l.push({code:"BAD_RISK",detail:`${r.temp_ref}: risk ${JSON.stringify(r.risk)} not in high|med|low`}),f.format==="image"){if(r.cite?.anchor!=="img#whole"){l.push({code:r.cite?.anchor?"CITE_ANCHOR_INVALID":"MISSING_CITE",detail:`${r.temp_ref}: image cites are anchor-only (img#whole)`});continue}}else if(!r.cite||!r.cite.anchor||!r.cite.quote){l.push({code:"MISSING_CITE",detail:`${r.temp_ref}: every derived use-case must cite anchor+quote`});continue}s.resolution==="edited"&&s.edit&&(s.edit.title!==void 0&&!s.edit.title.trim()&&l.push({code:"EMPTY_TITLE",detail:`${r.temp_ref}: edited title is empty`}),s.edit.risk!==void 0&&!Y.has(s.edit.risk)&&l.push({code:"BAD_RISK",detail:`${r.temp_ref}: edited risk ${JSON.stringify(s.edit.risk)} invalid`}));let T=B({title:s.edit?.title??r.title,description:r.description,summary:s.edit?.summary??r.summary,actors:r.actors,value:r.value,risk:s.edit?.risk??r.risk,...r.criteria&&r.criteria.length>0?{criteria:r.criteria.map(o=>o.text)}:{}}),c=L("usecase",T),$={source_id:t.source.source_id,source_cid:t.source.source_cid,anchor:r.cite.anchor,...r.cite.quote?{quote:r.cite.quote}:{}};if(r.matches_existing&&!e.hasNode(r.matches_existing.cid)){l.push({code:"UNKNOWN_MATCH",detail:`${r.temp_ref}: matches_existing ${r.matches_existing.cid} is not in the graph`});continue}let N=r.matches_existing?.cid??(e.hasNode(c)?c:null);if(N&&e.superseded.has(N)){let o=e.tipOf(N);N=e.superseded.has(o)?null:o}if(N){if(r.changed&&(s.resolution==="approved"||s.resolution==="edited")){let o=r.updated;if(!o||Object.keys(o).length===0){l.push({code:"CHANGED_NEEDS_PAYLOAD",detail:`${r.temp_ref}: changed:true needs an updated{...} payload naming the moved fields`});continue}let u=e.getNode(N)?.content??{},S=B({title:s.edit?.title??o.title??String(u.title??r.title),...o.description??u.description?{description:o.description??u.description}:{},...s.edit?.summary??o.summary??u.summary?{summary:s.edit?.summary??o.summary??u.summary}:{},...o.actors??u.actors?{actors:o.actors??u.actors}:{},...o.value??u.value?{value:o.value??u.value}:{},risk:s.edit?.risk??o.risk??String(u.risk??r.risk),...o.criteria??u.criteria?{criteria:o.criteria??u.criteria}:{}}),y=L("usecase",S);if(y!==N){for(let M of P("usecase",S))l.push({code:M.code,detail:`${r.temp_ref}: ${M.detail}`});v.push({cid:y,label:O.USECASE,content:S}),E.push({ecid:b("DERIVES",$.source_cid,y,$),type:R.DERIVES,src:$.source_cid,dst:y,props:$}),F(r.temp_ref,{resolution:"supersede",supersedeTarget:N,reason:s.reason??`matches-but-changed: ${t.source.source_id} moved (${Object.keys(o).join(", ")})`},y),I.push({id:y,kind:"review-item",resolution:s.resolution,edit:s.resolution==="edited"?{...s.edit}:null,reason:null,by:i});continue}}s.resolution!=="rejected"&&(E.push({ecid:b("DERIVES",$.source_cid,N,$),type:R.DERIVES,src:$.source_cid,dst:N,props:$}),(s.resolution==="approved"||s.resolution==="edited"||s.resolution==="supersede")&&I.push({id:N,kind:"review-item",resolution:"approved",edit:null,reason:null,by:i}),s.resolution==="supersede"&&F(r.temp_ref,s,N));continue}for(let o of P("usecase",T))l.push({code:o.code,detail:`${r.temp_ref}: ${o.detail}`});for(let o of q(R.DERIVES,"source","usecase",$))l.push({code:o.code,detail:`${r.temp_ref}: ${o.detail}`});v.push({cid:c,label:O.USECASE,content:T}),E.push({ecid:b("DERIVES",$.source_cid,c,$),type:R.DERIVES,src:$.source_cid,dst:c,props:$});for(let o of r.criteria??[]){let u={source_id:t.source.source_id,source_cid:t.source.source_cid,anchor:o.cite.anchor,...o.cite.quote?{quote:o.cite.quote}:{}};u.anchor!==$.anchor&&E.push({ecid:b("DERIVES",u.source_cid,c,u),type:R.DERIVES,src:u.source_cid,dst:c,props:u})}for(let o of r.depends_on_hint??[]){let u=D=>D.toLowerCase().trim().replace(/\s+/g," "),S=null,y=e.resolve(o);if(y&&!y.superseded&&e.nodeLabel.get(y.cid)===O.USECASE&&(S=y.cid),!S){for(let{cid:D,content:G}of e.byLabel(O.USECASE))if(!e.superseded.has(D)&&u(String(G.title??""))===u(o)){S=D;break}}if(!S){let D=v.find(G=>G.label===O.USECASE&&u(String(G.content.title??""))===u(o));D&&(S=D.cid)}!S||S===c||X(e,R.DEPENDS_ON,c,S,C)||C.some(D=>D.src===c&&D.dst===S)||(E.push({ecid:b(R.DEPENDS_ON,c,S,{reason:"extract hint"}),type:R.DEPENDS_ON,src:c,dst:S,props:{reason:"extract hint"}}),C.push({src:c,dst:S,type:R.DEPENDS_ON}))}if((s.resolution==="approved"||s.resolution==="edited"||s.resolution==="supersede")&&e.superseded.get(c)===null&&!U.has(c)&&w.push({kind:"node",old:c,new:c,reason:`re-minted after tombstone via review by ${i.id}`,by:i}),_){let o=J("usecase",s.edit?.title??r.title,u=>H.has(u)||e.names.has(u)&&!e.superseded.has(e.names.get(u)));o!==null&&!e.nameOf.has(c)&&(H.add(o),x.push({cid:c,slug:o,by:i}))}s.resolution==="approved"?I.push({id:c,kind:"review-item",resolution:"approved",edit:null,reason:null,by:i}):s.resolution==="edited"?I.push({id:c,kind:"review-item",resolution:"edited",edit:{...s.edit},reason:null,by:i}):s.resolution==="rejected"?I.push({id:c,kind:"review-item",resolution:"rejected",edit:null,reason:s.reason??null,by:i}):s.resolution==="supersede"&&(I.push({id:c,kind:"review-item",resolution:"approved",edit:null,reason:s.reason??null,by:i}),F(r.temp_ref,s,c))}return l.length?{record:null,errors:l}:{record:A(d,{ts:new Date().toISOString(),proposal_id:n,...n!=null?{extraction_of:t.source.source_cid}:{},...n!=null&&g?{extractor_version:g}:{},nodes:v,edges:E,review:I,supersessions:w,...x.length>0?{names:x}:{},...p.judgements&&p.judgements.length>0?{judgements:p.judgements}:{},source_head_moves:{}},{expectPrev:h}).record,errors:null}}function le(p){let{contextDir:d,graph:e,verdicts:t,by:n}=p,m=[],i=[],a=[],g=[],_=new Set;for(let[l,f]of t){if(f.resolution==="skipped")continue;let k=e.resolve(l);if(!k){m.push({code:"UNKNOWN_NODE",detail:`${l} names nothing in the graph`});continue}if(k.superseded){m.push({code:"SUPERSEDED_TARGET",detail:`${l} is superseded \u2014 review the tip (${k.tip})`});continue}let v=k.cid;if(f.resolution==="approved")a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:null,by:n});else if(f.resolution==="rejected")a.push({id:v,kind:"review-item",resolution:"rejected",edit:null,reason:f.reason??null,by:n});else if(f.resolution==="edited"){let E=e.getNode(v);if(!E){m.push({code:"UNKNOWN_NODE",detail:`${l}: node file unreadable`});continue}let C={...E.content,...f.edit?.title!==void 0?{title:f.edit.title}:{},...f.edit?.summary!==void 0?{summary:f.edit.summary}:{},...f.edit?.risk!==void 0?{risk:f.edit.risk}:{}},I=P(E.label,C);if(I.length>0){for(let x of I)m.push({code:x.code,detail:`${l}: ${x.detail}`});continue}let w=L(E.label,C);if(w===v){a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:null,by:n});continue}i.push({cid:w,label:E.label,content:C}),_.add(v),g.push({kind:"node",old:v,new:w,reason:f.reason??"edited in review",by:n}),a.push({id:w,kind:"review-item",resolution:"edited",edit:{...f.edit},reason:null,by:n})}else if(f.resolution==="supersede"){let E=z(e,f.supersedeTarget,v,_);if("error"in E){m.push({code:E.error.code,detail:`${l}: ${E.error.detail}`});continue}_.add(E.targetCid),g.push({kind:"node",old:E.targetCid,new:v,reason:f.reason??`superseded via review by ${n.id}`,by:n}),a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:f.reason??null,by:n})}}return m.length?{record:null,errors:m}:a.length===0&&g.length===0?{record:null,errors:[{code:"NO_VERDICTS",detail:"every item was skipped \u2014 nothing to commit"}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:i,edges:[],review:a,supersessions:g,source_head_moves:{}},{expectPrev:e.latestHash}).record,errors:null}}function ue(p){let{contextDir:d,graph:e,assignments:t,by:n}=p,m=[],i=[],a=new Set;for(let{ref:_,slug:h}of t){if(!V.test(h)){m.push({code:"BAD_SLUG",detail:`${JSON.stringify(h)} \u2014 slugs are kebab-case ${String(V)}`});continue}let l=e.resolve(_);if(!l){m.push({code:"UNKNOWN_REF",detail:`${_} names nothing in the graph`});continue}if(l.superseded){m.push({code:"SUPERSEDED_TARGET",detail:`${_} is superseded \u2014 name the tip instead (${l.tip})`});continue}let f=e.names.get(h);if(f!==void 0&&!e.superseded.has(f)&&f!==l.cid||a.has(h)){m.push({code:"SLUG_TAKEN",detail:`${h} already names ${f??"another node in this record"}`});continue}a.add(h),i.push({cid:l.cid,slug:h,by:n})}return m.length?{record:null,errors:m}:i.length===0?{record:null,errors:[{code:"NO_ASSIGNMENTS",detail:"nothing to name"}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],names:i,source_head_moves:{}},{expectPrev:e.latestHash}).record,errors:null}}function pe(p){let{contextDir:d,graph:e,sourceId:t,reason:n,by:m}=p,i=e.heads.get(t);return i===void 0?{record:null,errors:[{code:"UNKNOWN_SOURCE",detail:`no source ${t} in the graph`}]}:i===null?{record:null,errors:[{code:"ALREADY_RETIRED",detail:`source ${t} is already retired`}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:i,new:null,reason:n??`retired source ${t}`,by:m}],source_head_moves:{[t]:null},names:[]},{expectPrev:e.latestHash}).record,errors:null}}function Q(p,d){let e=p.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(e.length>60){let n=e.lastIndexOf("-",60);e=(n>0?e.slice(0,n):e.slice(0,60)).replace(/-+$/g,"")}if(!V.test(e))return null;let t=e;for(let n=2;d(t);n++)t=`${e}-${n}`;return V.test(t)?t:null}var Z={source:"src",usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"};function J(p,d,e){let t=Z[p];return Q(t?`${t} ${d}`:d,e)}export{Z as a,J as b,X as c,de as d,ce as e,ae as f,le as g,ue as h,pe as i};
@@ -1,5 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as F,b as z,c as ne,d as R}from"./chunk-2YQ6TW77.js";import{a as D}from"./chunk-WAOCHXJ5.js";import{b as U}from"./chunk-FYOCF7DY.js";import{a as j}from"./chunk-2WVKOZ6W.js";import{a as C}from"./chunk-NLCCBXXV.js";import{a as O}from"./chunk-RZ4F3BHX.js";import{e as te}from"./chunk-UR6MHSHU.js";import{readFileSync as Z,existsSync as w,readdirSync as Ee,mkdirSync as T,writeFileSync as x}from"fs";import{readFile as ee,unlink as be}from"fs/promises";import{join as E}from"path";import{randomUUID as P}from"crypto";function V(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,(s,n)=>{let o=e[n];return o?o.value:s}).replace(/\$\{(.+?)\}/g,(s,n)=>{let o=e[n];return o?o.value:s})}var ie={click:"CLICK",double_click:"CLICK",type:"TYPE",fill:"TYPE",select:"SELECT",hover:"HOVER",drag:"DRAG_DROP",upload_files:"UPLOAD",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"},q={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"},se=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD","VISION_QUERY","DRAG_DROP","SELECT"]);function $(t,e){if(t==="analyze"){let n=e?.action_params?.analyzer_type??"";return q[n]}let s=ie[t];return s||console.warn(`[migrator] UNKNOWN action_type "${t}" \u2014 falling back to "${t.toUpperCase()}"; explicit mapping required`),s??t.toUpperCase()}function K(t,e){if(!t||!e)return"";try{let s=new Date(t);return isNaN(s.getTime())?"":new Date(s.getTime()+e).toISOString()}catch{return""}}function G(t){try{return JSON.parse(t.output_value??"{}")}catch{return{}}}function oe(t){let e=t.output_variable??"";if(!e)return"[]";let n={...G(t)};return delete n.body,JSON.stringify([{name:e,unique_key:(t.action_id??"").replace(/-/g,"").slice(0,8)||P().replace(/-/g,"").slice(0,8),value:n,variable_description:"API Response"}])}function re(t,e,s){let n=t.action_params??{},o=se.has(e)?"Vision Agent":"Operation Agent",l={operation_type:e};e==="OPEN"&&(l.url=n.url??""),e==="SET_VARIABLE"&&(l.variable_name=t.output_variable??n.key??"",l.variable_value=t.output_value??"");let i={},r={},a=t.action_instruction??"",u=n.text??"",d=n.url??"",g=[["intent",a],["value",u],["url",d]];for(let[h,m]of Object.entries(s)){let b=String(m);if(h.startsWith("secrets."))for(let[I,v]of g)v.includes(b)&&(r[I]=h);for(let[I,v]of g)v.includes(b)&&!(I in i)&&(i[I]=v)}let _=t.action_type,c={operation:t.action_instruction??"",agent:o,operation_dict:l,reasoning:_==="analyze"?n.query??"":t.intent??t.action_instruction??"",variable:i,secrets:r,params:{}};_==="analyze"&&typeof n.code=="string"&&n.code&&(c.code=n.code),_==="analyze"&&typeof n.code_js=="string"&&n.code_js&&(c.code_js=n.code_js),_==="analyze"&&typeof n.condition_expression=="string"&&n.condition_expression&&(c.condition_expression=n.condition_expression),n.uses_websocket===!0&&(c.uses_websocket=!0),n.uses_sse===!0&&(c.uses_sse=!0),_==="analyze"&&n.analyzer_type==="textual_visual"&&(typeof n.wrapped_js=="string"&&(c.wrapped_js=n.wrapped_js),Array.isArray(n.locators)&&(c.locators=n.locators),typeof n.operator=="string"&&(c.operator=n.operator),Array.isArray(n.transforms)&&(c.transforms=n.transforms),typeof n.query=="string"&&(c.query=n.query),typeof n.expected_value=="string"&&(c.expected_value=n.expected_value),typeof n.needs_unit_conversion=="boolean"&&(c.needs_unit_conversion=n.needs_unit_conversion));let f={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[_];return f&&n[f]!==void 0&&(c[f]=n[f]),_==="set_clipboard"&&typeof n.html=="string"&&n.html&&(c.html=n.html),c}function ae(t){let e=t.assertion_tree??{};if(typeof e.passed=="boolean")return e.passed;let s=e.sub_results??[];return s.length===0?e.status==="passed":(e.composite_operator??"and")==="or"?s.some(o=>o.passed===!0):s.every(o=>o.passed===!0)}function X(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 le(t){let e=t.assertion_tree??{},s=e.sub_results??[],n=X(s);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:s,sub_checks:n,composite_operator:e.composite_operator??"and",verification:e.verification??"",claim:e.description??""}}function ce(t){let s=(t.action_params??{}).assertion_tree??{},n=s.sub_results??[],o=X(n);return[{operation:t.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:n,sub_checks:o,composite_operator:s.composite_operator??"and",verification:"",claim:s.description??t.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function ue(t,e,s,n){let o=t.visual_data;if(!o||o.x==null||o.y==null)return null;let l=e?`${e}/test_screenshots`:"";return{x:o.x,y:o.y,confidence:0,bbox:o.bbox??null,bbox_source:o.bbox?"accessibility_tree":"fallback",viewport_width:o.viewport_width??1280,viewport_height:o.viewport_height??800,scale_factor:null,raw_image_url:l?`${l}/untagged_screenshot/${s}.${n?.get(s)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function B(t,e={},s="",n){let o=t.action_type,l=$(o,t),i=t.action_params??{},r=t.coordinates??null,a=t.selectors??null,u=!!(a&&a.length>0),d=t.timestamp??"",g=t.duration_ms??0,_=t.variables_used??{},c=t.action_id??P(),p=P(),f=K(d,g),h="",m="";o==="navigate"?(m=i.url??"",h=m):o==="type"||o==="fill"?h=i.text??"":o==="press_key"?h=i.key??"":o==="wait"?h=String(i.ms??i.timeout_ms??""):o==="evaluate_js"?h=i.script??"":o==="analyze"&&l==="SET_VARIABLE"&&(h=t.output_value??"");let b="";o==="go_back"?b="back":o==="go_forward"&&(b="forward");let I=L(h,e),v=L(m,e),A=L(t.action_instruction??"",e),y=re(t,l,_);return{operation_id:c,instruction_id:p,instruction:A,intent:A,operation_start:d,operation_end:f,status:t.status??"",command:l,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(y),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:s?`${s}/test_screenshots/untagged_screenshot/${c}.${n?.get(c)??"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:l==="ASSERTION"?ae(i):"",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(i.tab_index??""),tab_identifier:String(i.tab_identifier??""),scroll_value:i.amount??1,scroll_direction:i.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:o==="evaluate_js"?i.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:r!==null&&!u,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:u?null:r?.x??null,y_coord:u?null:r?.y??null,target_x_coord:i.target_x??null,target_y_coord:i.target_y??null,source_description:i.source_description??null,target_description:i.target_description??null,use_coordinates:r!==null&&!u,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:u?a.map(k=>({type:k.isXPath?"xpath":"css",...k})):"",selector_target:"",math_result_variable_name:"",math_result_variable_value:"",expression_tree:l==="ASSERTION"?le(i):i.expression_tree??{},assertion_tree:i.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:l==="ASSERTION"?"Fail test immediately":"",screenshot_command:"",smartui_contents:{},smartui_results:{},result_type:"",result_hint:"",drag_offset:{},start_coordinates:i.source_coordinates?{x:i.source_coordinates[0],y:i.source_coordinates[1]}:{},end_coordinates:i.target_coordinates?{x:i.target_coordinates[0],y:i.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:o==="api"?{request:t.action_params?.api_data?.request??{}}:{},output_variables:o==="api"?t.output_variable?{[t.output_variable]:null}:{}:t.output_variable?{[t.output_variable]:t.output_value??""}:{},visual_context:ue(t,s,c,n),reasoning:o==="analyze"?i.query??"":t.intent??t.action_instruction??""}}function M(t,e,s={}){let n=t.action_type,o=$(n,t),l=t.timestamp??"",i=t.duration_ms??0,r=K(l,i),a=o==="ASSERTION"||o==="MATHEMATICAL_OPERATION";return{instruction_id:e.instruction_id,instruction_class:a?"non_driver_action":"driver_action",module_id:"",instruction:L(t.action_instruction??"",s),command:o,error:null,parent_instruction_id:"",classification_layer_resp:o==="ASSERTION"?ce(t):[],classification_error:{},operations:[e],status:t.status??"",start_timestamp:l,end_timestamp:r,type:"agent_generated",tags:[],html_paths:[],optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,content_type:n==="api"?"api":n==="analyze"&&t.action_params?.analyzer_type==="api_response"?"api_calls_query":n==="analyze"&&t.action_params?.analyzer_type?.startsWith("devtool_")?t.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:n==="evaluate_js"?t.action_params?.script??"":"",user_variables:n==="api"?oe(t):"[]",api_data:n==="api"?{request:t.action_params?.api_data?.request??{},response:G(t)}:{},params_used:!1,hard_assertion:o==="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:n==="analyze"?t.action_params?.query??"":t.intent??t.action_instruction??""}}function de(t,e=[]){let s=t.action_params??{},n=s.branches??[],o=s.winning_index??-1,l=s.sub_results??[],i={};for(let a of l){let u=a.sub_results;if(u)for(let d of u){let g=d.store_key;g&&(i[g]=d)}}let r=n.map((a,u)=>{let d=u===o,g=(a.sub_checks??[]).map(_=>{let c=i[_.store_key];return{description:_.description,store_key:_.store_key,expected_value:_.expected_value,stored_value:c?.extracted_value??_.stored_value,operator:_.operator??c?.operator??"equals",transforms:_.transforms??c?.transforms??[]}});if(g.length===0&&a.condition&&l.length>0){let c=l.find(p=>p.branch_index===u)?.sub_results??[];c.length>0&&(g=c.map(p=>({description:p.description??a.condition,store_key:p.store_key??"",expected_value:p.expected??"true",stored_value:p.extracted_value??void 0,operator:p.operator??"equals",transforms:p.transforms??[]})))}return{branch_index:u,condition:a.condition??null,branch_type:a.branch_type??"sub_objective",passed:d,sub_objective:null,custom_event:a.custom_event??null,children:d?e:[],sub_checks:a.condition?g:[],composite_operator:a.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${P().slice(0,8)}`,instruction:t.action_instruction??"",instruction_class:"driver_action",command:"",status:t.status??"success",resolved_branch_index:o,branches:r,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 Y(t,e,s){for(let n of t)n.content_type==="instruction"&&"generative_id"in n&&(n.generative_id=e,n.generative_objective=s)}function N(t,e={},s="",n,o){let l=[],i=0;for(;i<t.length;){let r=t[i],a=r.action_type;if(!o?.keepFailedActions&&r.status==="error"&&a!=="assert"&&a!=="if_else"&&a!=="child_agent_start"&&a!=="child_agent_end"&&!(r.until_condition&&!r.error)){i+=1;continue}if(a==="analyze"&&!q[r.action_params?.analyzer_type??""]){i+=1;continue}if(a==="child_agent_start"){let u=r.action_params?.child_id??"",d=r.action_params?.objective??"",g=[];i+=1;let _=1,c="error",p;for(;i<t.length&&_>0;){let y=t[i],k=y.action_type;if(k==="child_agent_start")_+=1;else if(k==="child_agent_end"&&(_-=1,_===0)){c=y.status??"success",p=y,i+=1;break}_>0&&g.push(y),i+=1}let f=N(g,e,s,n);Y(f,u,d);let h=p?.action_params?.result_code??null,m=p?.action_params?.reason_code??null,b=p?.action_params?.error_message??null,I=p?.action_params?.summary??null,v=p?.action_params?.one_liner??null,A=c==="error";l.push({content_type:"generative_block",instruction_id:`generative_block_${u}`,generative_id:u,objective:d,status:c,children:f,error_message:A?b??null:null,error_code:A?m??null:null,result_code:h??null,bifurcation_context:[],approach_reason:V(I),one_liner:v??null});continue}else if(a==="child_agent_end"){i+=1;continue}else if(a==="if_else"){i+=1;let u=[];for(;i<t.length&&t[i].action_type==="child_agent_start";){let d=t[i],g=d.action_params?.child_id??"",_=d.action_params?.objective??"",c=[];i+=1;let p=1,f="error";for(;i<t.length&&p>0;){let m=t[i];if(m.action_type==="child_agent_start")p+=1;else if(m.action_type==="child_agent_end"&&(p-=1,p===0)){f=m.status??"success",i+=1;break}p>0&&c.push(m),i+=1}let h=N(c,e,s,n);u.push(...h)}l.push(de(r,u));continue}else if(a==="query_tool"){i+=1;continue}else if(r.until_condition){let u=B(r,e,s,n),d=M(r,u,e),g=typeof r.until_condition_met=="boolean"?r.until_condition_met:r.status==="success";l.push({content_type:"until_block",instruction_id:`until_${P().slice(0,8)}`,condition:r.until_condition,max_retries:r.until_max_retries??10,settle_ms:r.until_settle_ms??500,current_count:0,condition_met:g,children:[d],generative_id:"",generative_objective:"",variables_used:{},status:r.status??"success"})}else{let u=B(r,e,s,n),d=M(r,u,e);l.push(d)}i+=1}return l}function S(t,e={},s="",n,o){let l=[];for(let i of t){let r=N(i.records,e,s,n,o);if(r.length===0)continue;let a=P().replace(/-/g,"");Y(r,a,i.objective);let u=r.some(c=>"status"in c&&typeof c.status=="string"?c.status==="error"||c.status==="failed":!1),d=i.resultCode?parseInt(i.resultCode,10):null,g=d!==null&&!isNaN(d)&&d>=200,_=u||g?"error":"success";l.push({content_type:"generative_block",instruction_id:`generative_block_${a}`,generative_id:a,objective:i.objective,status:_,children:r,error_message:_==="error"?i.errorMessage??null:null,error_code:_==="error"?i.reasonCode??null:null,result_code:i.resultCode??null,bifurcation_context:[],approach_reason:V(i.summary),one_liner:i.oneLiner??null})}return{instructions:l}}var H=te(ne(),1);import{createWriteStream as _e}from"fs";import{readFile as pe}from"fs/promises";import{join as ge,basename as fe}from"path";import{tmpdir as he}from"os";var me=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function W(t){let e=ge(he(),`${fe(t)}_artifacts.zip`);return new Promise((s,n)=>{let o=_e(e),l=(0,H.default)("zip",{zlib:{level:6}});o.on("close",()=>s(e)),l.on("error",n),l.pipe(o),l.glob("**/*",{cwd:t,ignore:me}),l.finalize()})}async function J(t){return pe(t)}async function Ie(t,e){return ee(U(t,e))}function ve(t){return{key:"artifacts",content_type:"application/zip",filename:`${t}.evidence`}}var Q=class{config;controller;testId;constructor(e){this.config=e,this.controller=new D(e.controllerBaseUrl,e.auth),this.testId=e.testId}log(e,s,n,o){this.config.log?.(e,s,n,o)}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 s=this.config.evidence,n=null;if(this.config.shouldUploadArtifacts!==!1){e("convert","running");let r=this.collectNdjsonPerRun(),a=r.reduce((f,h)=>f+h.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:a,run_groups:r.length});let u=this.config.variables??{};this.log("info","PIPELINE_CONVERT_VARS","Variables for template resolution",{keys:Object.keys(u)});let{instructions:d}=r.length>0?S(r,u,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:d.length});let g=this.buildExecutionEnvelope(d),_=Buffer.from(JSON.stringify(g));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(_.length/1024).toFixed(1)});let c=E(this.config.sessionDir,"execution.json");x(c,JSON.stringify(g,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:c});let p=s?.packTestDir??this.config.evidenceRead?.packTestDir;if(p){let f=E(p,"auteur");T(f,{recursive:!0}),x(E(f,"execution.json"),JSON.stringify(g,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack",{path:E(f,"execution.json")})}if(e("convert","done"),s)n=_;else{e("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let f=null,h;try{f=await W(this.config.sessionDir),h=await J(f),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(h.length/1024/1024).toFixed(1),path:f}),e("zip","done",`${(h.length/1024/1024).toFixed(1)}MB`)}finally{f&&await be(f).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 m=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:m.urls.artifacts?.blob_url,blob_url:m.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(h.length/1024/1024).toFixed(1),blob_size_kb:+(_.length/1024).toFixed(1)}),await Promise.all([R(m.urls.artifacts.upload_url,h,"application/zip"),R(m.urls.blob.upload_url,_,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}}else{let r=this.collectNdjsonPerRun(),a=this.config.variables??{},{instructions:u}=r.length>0?S(r,a,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap,{keepFailedActions:!0}):{instructions:[]},d=this.buildExecutionEnvelope(u),g=E(this.config.sessionDir,"execution.json");x(g,JSON.stringify(d,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:g});let _=this.config.evidence?.packTestDir??this.config.evidenceRead?.packTestDir;if(_){let c=E(_,"auteur");T(c,{recursive:!0});let p=this.readAuthoredExecution();x(E(c,"execution.json"),p??JSON.stringify(d,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack (gated)",{path:E(c,"execution.json"),source:p?"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(r){let a=r instanceof Error?r.message:String(r);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:a}),e("atomic_replace","failed",a),r}}else e("atomic_replace","skipped");let o,l;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){e("commit_lock","running");let r=await this.config.onCommitLock();if(r.ok)o=r.testcaseId,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:o??"none"}),e("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:r.reason,message:r.message}),e("commit_lock","failed",`${r.reason??"unknown"}: ${r.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${r.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 r=new j(this.config.tmsBaseUrl,this.config.tmsUsername,this.config.tmsAccessKey),a=this.config.runObjectives&&this.config.runObjectives.length>0?this.config.runObjectives:[this.config.firstObjective];if(o=(await r.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:a})).testcase_id||void 0,this.log("info","PIPELINE_FINALIZE_OK","Test finalized",{testcase_id:o??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(o)}catch(d){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(d)})}e("finalize","done")}else e("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(o&&this.config.shareApiBaseUrl)try{l=await this.generateShareLink(o),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:l})}catch(r){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(r)})}if(s&&n){let r=null;e("zip","running");try{await s.sealFn({testcaseId:o,shareId:l}),r=s.sealedPackPath?await ee(s.sealedPackPath):await Ie(s.executionId,s.cwd),this.log("info","PIPELINE_EVIDENCE_SEALED","Evidence pack sealed",{execution_id:s.executionId}),this.log("info","PIPELINE_PACK_READ","Sealed pack read",{size_mb:+(r.length/1024/1024).toFixed(1)})}catch(a){let u=a instanceof Error?a.message:String(a);this.log("warn","PIPELINE_EVIDENCE_UPLOAD_SKIPPED","Evidence seal/read failed \u2014 uploading blob only",{execution_id:s.executionId,error:u})}if(r){e("zip","done",`${(r.length/1024/1024).toFixed(1)}MB`),e("presign","running");let a=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[ve(s.executionId),{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:a.urls.artifacts?.blob_url,blob_url:a.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading pack and blob",{artifact_size_mb:+(r.length/1024/1024).toFixed(1),blob_size_kb:+(n.length/1024).toFixed(1)}),await Promise.all([R(a.urls.artifacts.upload_url,r,"application/zip"),R(a.urls.blob.upload_url,n,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}else{e("zip","skipped"),e("presign","running");let a=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:+(n.length/1024).toFixed(1)}),await R(a.urls.blob.upload_url,n,"application/json"),this.log("info","PIPELINE_UPLOAD_OK","Blob upload complete (pack skipped)"),e("upload","done")}}let i;if(this.config.codeExport?.enabled&&o){let r=!1;try{await this.triggerCodeExport(o),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),r=!0}catch(a){let u=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:u}),e("code_export","failed",`trigger failed: ${u}`)}if(r){e("code_export","running","Waiting for code generation\u2026");try{i=await this.pollAndDownloadCode(o,e),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:i}),e("code_export","done",i)}catch(a){let u=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:u}),e("code_export","failed",u)}}}else e("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:o,shareId:l,codeExportDir:i}}catch(s){return{success:!1,testId:this.testId,error:s instanceof Error?s.message:String(s)}}}async runCodeExport(e,s){let n=s??this.config.onProgress,o=!1;try{await this.triggerCodeExport(e),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:e}),o=!0}catch(l){let i=l instanceof Error?l.message:String(l);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:i}),n("code_export","failed",`trigger failed: ${i}`)}if(o){n("code_export","running","Waiting for code generation\u2026");try{let l=await this.pollAndDownloadCode(e,n);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:l}),n("code_export","done",l),l}catch(l){let i=l instanceof Error?l.message:String(l);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:i}),n("code_export","failed",i);return}}}collectNdjsonPerRun(){let e=[],s=this.config.runObjectives??[],n=this.config.runMetadata??[],o=this.config.evidence??this.config.evidenceRead;for(let l=0;l<this.config.runDirs.length;l++){let i=this.config.runDirs[l],r=s[l]||this.config.firstObjective,a=n[l],u=o?this.readNdjsonFromFile(E(o.packTestDir,"logs",`${o.runIndices?.[l]??l}-actions.ndjson`)):this.readNdjsonFromDir(i);u.length>0&&e.push({objective:r,records:u,resultCode:a?.resultCode,reasonCode:a?.reasonCode,errorMessage:a?.errorMessage,summary:a?.summary,oneLiner:a?.oneLiner})}if(e.length===0){let l=E(this.config.sessionDir,"runs");if(w(l))try{let r=Ee(l,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort();for(let a of r){let u=E(l,a),d=this.readNdjsonFromDir(u);d.length>0&&e.push({objective:this.config.firstObjective,records:d})}}catch{}}return e}readNdjsonFromDir(e){let s=[E(e,"run-test","actions.ndjson"),E(e,"actions.ndjson")];for(let n of s)if(w(n))return this.readNdjsonFromFile(n);return[]}readNdjsonFromFile(e){let s=[];if(!w(e))return s;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:e});let n=Z(e,"utf-8");for(let o of n.split(`
5
- `)){let l=o.trim();if(l)try{s.push(JSON.parse(l))}catch{}}return s}async generateShareLink(e){let s=`${this.config.shareApiBaseUrl}/lshs/api/v1.0/share-item/generate-sharable-link`;this.log("info","PIPELINE_SHARE_START","Requesting share link",{url:s,testcase_id:e});let n={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({entityIds:[e],entityType:"Test Case Details",expiresAt:7})},o=!!this.config.authResolver;this.log("debug","PIPELINE_SHARE_AUTH","Share link auth config",{resolver:o,fallback_auth_type:typeof this.config.auth=="string"?"bearer":"basic",tms_user:this.config.tmsUsername});let l=o?await this.config.authResolver.fetch(s,n):await O(s,{...n,headers:{...n.headers,Authorization:this.buildAuthHeader()}});if(!l.ok)throw new Error(`Share link API failed: ${l.status} ${await l.text()}`);let i=await l.json();if(!i.shareId)throw new Error("Share link API returned no shareId");return i.shareId}async triggerCodeExport(e){if(!this.config.codeExport)throw new Error("triggerCodeExport called without resolved codeExport config");let{url:s,body:n}=F({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e,codeExport:this.config.codeExport});this.log("info","PIPELINE_CODE_EXPORT_POST","Triggering code export",{url:s});let o={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n)},l=this.config.authResolver?await this.config.authResolver.fetch(s,o):await O(s,{...o,headers:{...o.headers,Authorization:this.buildAuthHeader()}});if(!l.ok)throw new Error(`Code export failed: ${l.status} ${await l.text()}`)}async pollAndDownloadCode(e,s){let n=z({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e}),o=this.config.exitTimeoutMs??3e5,l=5e3,i=Date.now()+o;this.log("info","PIPELINE_CODE_EXPORT_POLL","Polling for code export",{url:n,timeout_ms:o});let r=(a,u)=>this.config.authResolver?this.config.authResolver.fetch(a,u):O(a,{...u,headers:{...u?.headers,Authorization:this.buildAuthHeader()}});for(;Date.now()<i;){let a=await r(n,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok){let c=await a.text().catch(()=>"");throw this.log("warn","PIPELINE_CODE_EXPORT_POLL_FAILED","Code export poll non-200; skipping",{status:a.status,body:c.slice(0,200)}),new Error(`code export poll skipped: HTTP ${a.status}`)}let d=(await a.json()).data?.find(c=>c.code_name==="kane-cli-trigger");if(!d){this.log("debug","PIPELINE_CODE_EXPORT_WAITING","No kane-cli-trigger entry yet"),s("code_export","running","Waiting for code generation\u2026"),await this.sleep(l);continue}let g=d.status.toLowerCase();if(g==="in progress"||g==="in_progress"||g==="pending"){this.log("debug","PIPELINE_CODE_EXPORT_IN_PROGRESS","Code export in progress",{status:d.status}),s("code_export","running","Generating code\u2026"),await this.sleep(l);continue}if(!d.url||d.url.length===0)throw new Error(`Code export status=${d.status} but no files returned`);let _=this.config.codeExportDir??E(this.config.sessionDir,"code-export");T(_,{recursive:!0}),this.log("info","PIPELINE_CODE_EXPORT_DOWNLOAD","Downloading code files",{file_count:d.url.length,dir:_}),s("code_export","running",`Downloading ${d.url.length} files\u2026`);for(let c of d.url){let p=E(_,c.file_name),f=await O(c.file_url);if(!f.ok){this.log("warn","PIPELINE_CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:c.file_name,status:f.status});continue}let h=await f.text();x(p,h,"utf-8"),this.log("info","PIPELINE_CODE_EXPORT_FILE_SAVED","File saved",{file_name:c.file_name,size_bytes:h.length})}return _}throw new Error("Code export timed out")}sleep(e){return new Promise(s=>setTimeout(s,e))}buildAuthHeader(){return typeof this.config.auth=="string"?`Bearer ${this.config.auth}`:C(this.config.auth.username,this.config.auth.accessKey)}readAuthoredExecution(){let e=this.config.authoredExecutionPath;if(!e)return null;try{let s=Z(e,"utf8");return JSON.parse(s),s}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 s=this.config.runStatuses.every(i=>i==="passed")?"success":"error",n=this.config.variableIds??{},o=[];if(this.config.variables)for(let[i,r]of Object.entries(this.config.variables)){if(r.secret)continue;let a=i.startsWith("global.")?i.slice(7):i;o.push({id:n[a]??0,name:a,value:r.value,session_value:r.value,is_persist:!1,environment_id:0,environment_name:"No Env"})}let l=[];for(let i of this.collectNdjsonPerRun())for(let r of i.records)r.output_variable&&r.output_value!=null&&l.push({name:r.output_variable,value:String(r.output_value),value_type:"test_level",variable_description:"ANALYZE result"});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:s,commit_id:this.config.commitId,instructions:e,modules:[],uploaded_files:[],test_params:[],test_level_variables:JSON.stringify(l),test_global_variables:o,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{Ie as a,ve as b,Q as c};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as f}from"./chunk-JFAFKHDX.js";import{a as v}from"./chunk-GIRXJOJI.js";import{g}from"./chunk-B2PZAB7J.js";import{d as m,f as u}from"./chunk-IACKIGPX.js";var w=3,S={edit:"edit",reject:"mistake",dedup_dropped:"mistake",approve:"usage",enhance:"directed-edit",add:"directed-edit",default_accepted:"usage",default_overridden:"edit",gap_resolution:"usage",dedup_kept:"usage"};function T(y){let{contextDir:i,graph:o,watermark:_,by:N}=y,{signals:$}=f(i,_),h=$.filter(e=>e.event_id===void 0||o.appliedEvents.has(e.event_id)),s=new Map;for(let e of h){let t=e.event_id??`${e.ts}|${e.id}|${e.verdict}|${e.polarity}`;s.has(`${t}|${e.polarity}|${e.verdict}`)||s.set(`${t}|${e.polarity}|${e.verdict}`,e)}let k=[...s.values()].sort((e,t)=>(e.event_id??e.ts)<(t.event_id??t.ts)?-1:1),n=new Map;for(let e of k){let t=`${e.verdict}|${e.tag??""}`,r=n.get(t)??{verdict:e.verdict,tag:e.tag,events:new Set};r.events.add(e.event_id??e.ts),n.set(t,r)}let d=[],a=0;for(let[,e]of[...n.entries()].sort(([t],[r])=>t<r?-1:1)){if(e.events.size<w)continue;let r={derived:!0,statement:`${e.verdict}${e.tag?`/${e.tag}`:""} recurs (${e.events.size} distinct events) \u2014 bias future proposals ${e.verdict==="approve"?"toward":"away from"} this pattern`,learned_from_kind:S[e.verdict]??"usage",learned_from:[...e.events].sort()},c=u("stylenote",r);if(c.length>0)return{record:null,errors:c.map(l=>({code:l.code,detail:l.detail})),minted:0};let p=v("stylenote",r);o.hasNode(p)||(d.push({cid:p,label:m.STYLENOTE,content:r}),a+=1)}return d.length===0?{record:null,errors:null,minted:0}:{record:g(i,{ts:new Date().toISOString(),proposal_id:null,nodes:d,edges:[],review:[],supersessions:[],source_head_moves:{}},{expectPrev:o.latestHash}).record,errors:null,minted:a}}export{T as a};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var l="assurance/context@1";var u={source:{hashed:["blob","source_id"],required:["blob","source_id"],enums:{}},usecase:{hashed:["actors","criteria","derived","description","risk","summary","title","value"],required:["derived","risk","title"],enums:{risk:["high","med","low"]}},scenario:{hashed:["case_type","derived","description","intent","parameters","tags","technique_notes","title"],required:["case_type","derived","intent","title"],enums:{case_type:["happy","negative","boundary","edge","security","a11y","perf","i18n"]}},ac:{hashed:["derived","expected_answer","kind","measurable","risk","text"],required:["derived","risk","text"],enums:{risk:["high","med","low"],kind:["presence","forbidden-presence","count","delta","state-transition","absolute","bound","propagation","latency","graded"]}},test:{hashed:["check","config","definitionId","derived","objectives_blob","surface_required","test_md_blob","title"],required:["definitionId","derived","title"],enums:{}},gap:{hashed:["derived","kind","question","ref","risk","risk_rationale","text","uc"],required:["derived","kind"],enums:{kind:["ambiguous","incomplete","contradictory","unmeasurable","missing-expected-result","budget-evicted","invariant-unexercised"],risk:["high","med","low"]}},stylenote:{hashed:["derived","learned_from_kind","statement","tags","text"],unhashed:["learned_from"],required:["derived","learned_from_kind","statement"],enums:{learned_from_kind:["edit","directed-edit","mistake","usage"]}}},f={DERIVES:{src:["source"],dst:["usecase","ac","scenario","test"],salient:["anchor","source_cid","source_id"],props:["anchor","quote","source_cid","source_id"],pin:{comparesTo:"source_head"},cardinality:"many",acyclic:!1},belongs_to:{src:["scenario"],dst:["usecase"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"one-live-per-src",acyclic:!1},scoped_to:{src:["ac"],dst:["scenario","usecase"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"one-live-per-src",acyclic:!1},exercises:{src:["scenario"],dst:["ac"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"many",acyclic:!1},verifies:{src:["test"],dst:["ac"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"many",acyclic:!1},automates:{src:["test"],dst:["scenario"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"one-live-per-src-and-dst",acyclic:!1},depends_on:{src:["usecase","scenario"],dst:["usecase","scenario"],salient:[],props:["reason"],pin:{comparesTo:"dst_tip"},cardinality:"many",acyclic:!0},reuses:{src:["test"],dst:["test"],salient:[],props:[],pin:{comparesTo:"dst_tip"},cardinality:"many",acyclic:!0},annotates:{src:["gap","stylenote"],dst:["source","usecase","scenario","ac","test"],salient:[],props:["reason"],pin:{comparesTo:"dst_tip"},cardinality:"many",acyclic:!1}},E=["presence","forbidden-presence","count","delta","state-transition","absolute","bound","propagation","latency","graded"];var g={presence:{operators:["exists","forall"],baseline:"null",requires:[]},"forbidden-presence":{operators:["exists","forall"],baseline:"null",requires:[]},count:{operators:["equals","gte","lte"],baseline:"null",requires:[],operand_forms:["literal","derived"]},delta:{operators:["changed-by"],baseline:"required",requires:[]},"state-transition":{operators:["changed-by","equals"],baseline:"required",requires:[]},absolute:{operators:["equals","contains","gte","lte"],baseline:"null",requires:[]},bound:{operators:["gte","lte"],baseline:"null",requires:[]},propagation:{operators:["exists","equals"],baseline:"null",requires:[]},latency:{operators:["lte"],baseline:"null",requires:["within"]},graded:{operators:["gte"],baseline:"null",requires:["metric","threshold"]}},y=Object.freeze({SOURCE:"source",USECASE:"usecase",SCENARIO:"scenario",AC:"ac",TEST:"test",GAP:"gap",STYLENOTE:"stylenote"}),h=Object.freeze({DERIVES:"DERIVES",BELONGS_TO:"belongs_to",SCOPED_TO:"scoped_to",EXERCISES:"exercises",VERIFIES:"verifies",AUTOMATES:"automates",DEPENDS_ON:"depends_on",REUSES:"reuses",ANNOTATES:"annotates"});function c(r,s,t){let n=[],e=g[r];if(!e)return n.push({code:"BAD_CHECK",detail:`${t}.kind ${JSON.stringify(r)} not in ${E.join("|")}`}),n;let o=s.operator;o!==void 0&&!e.operators.includes(o)&&n.push({code:"BAD_CHECK",detail:`${t}: operator ${JSON.stringify(o)} illegal for kind "${String(r)}" (legal: ${e.operators.join("|")})`});for(let a of e.requires)(s[a]===void 0||s[a]===null||s[a]==="")&&n.push({code:"BAD_CHECK",detail:`${t}: kind "${String(r)}" requires "${a}"`});e.baseline==="null"&&s.baseline!==void 0&&s.baseline!==null&&n.push({code:"BAD_CHECK",detail:`${t}: kind "${String(r)}" must carry baseline null (only delta/state-transition have one)`});let i=s.operand;if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let a=Object.keys(i),d=i.derived;(!(e.operand_forms?.includes("derived")??!1)||a.length!==1||a[0]!=="derived"||typeof d!="string"||!d.trim())&&n.push({code:"BAD_CHECK",detail:`${t}: object operand is only the count derivation form {derived: "<how the runtime value is computed>"}`})}return n}function m(r,s){let t=u[r];if(!t)return[{code:"UNKNOWN_LABEL",detail:`unknown node label ${JSON.stringify(r)}`}];let n=[];for(let e of Object.keys(s))s[e]!==void 0&&!t.hashed.includes(e)&&!(t.unhashed??[]).includes(e)&&n.push({code:"UNKNOWN_FIELD",detail:`${r}.${e} is not in the ${l} schema`});for(let e of t.required)(s[e]===void 0||s[e]===null)&&n.push({code:"MISSING_FIELD",detail:`${r}.${e} is required`});for(let[e,o]of Object.entries(t.enums)){let i=s[e];i!==void 0&&!o.includes(i)&&n.push({code:"BAD_ENUM",detail:`${r}.${e} ${JSON.stringify(i)} not in ${o.join("|")}`})}if(r==="test"&&s.check&&typeof s.check=="object"){let e=s.check;n.push(...c(e.kind,e,"test.check"))}if(r==="ac"&&s.expected_answer&&typeof s.expected_answer=="object"){let e=s.expected_answer;n.push(...c(s.kind??e.kind,e,"ac.expected_answer"))}return n}function p(r){return f[r]}function S(r,s,t,n){let e=p(r);if(!e)return[{code:"UNKNOWN_EDGE_TYPE",detail:`unknown edge type ${JSON.stringify(r)}`}];let o=[];e.src.includes(s)||o.push({code:"ILLEGAL_EDGE",detail:`${r} src must be ${e.src.join("|")}, got ${s}`}),e.dst.includes(t)||o.push({code:"ILLEGAL_EDGE",detail:`${r} dst must be ${e.dst.join("|")}, got ${t}`}),r==="depends_on"&&s!==t&&o.push({code:"ILLEGAL_EDGE",detail:`depends_on links same-label nodes only, got ${s}\u2192${t}`});for(let i of e.salient)(n[i]===void 0||n[i]===null)&&o.push({code:"MISSING_SALIENT",detail:`${r}.props.${i} is salient (inside the ecid) and required`});for(let i of Object.keys(n))n[i]!==void 0&&(e.props.includes(i)||o.push({code:"UNKNOWN_EDGE_PROP",detail:`${r}.props.${i} is not in the ${l} schema`}));return o}function k(r,s){let t=u[r];if(!t)return s;let n={};for(let e of t.hashed)s[e]!==void 0&&(n[e]=s[e]);return n}function N(r,s){let t=p(r);if(!t)return s;let n={};for(let e of t.salient)s[e]!==void 0&&(n[e]=s[e]);return n}export{l as a,u as b,f as c,y as d,h as e,m as f,p as g,S as h,k as i,N as j};