@testmuai/kane-cli 0.6.2 → 0.6.3

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 (106) hide show
  1. package/dist/ChatSurface-J777M5WC.js +8 -0
  2. package/dist/{ChromeProfilePicker-XXNZLSCC.js → ChromeProfilePicker-UUGUMJPI.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-FJF5INQO.js → CliFeedbackPrompt-JZWESL7Z.js} +1 -1
  4. package/dist/{CliUploadProgress-5E3CCYPZ.js → CliUploadProgress-62U3LAUU.js} +1 -1
  5. package/dist/{ConfigView-TGVOKOUZ.js → ConfigView-WHEFCVHR.js} +1 -1
  6. package/dist/{EvidenceViewOffer-7O3RNBEE.js → EvidenceViewOffer-JQDEAE2T.js} +1 -1
  7. package/dist/{FolderPicker-T4JB4NNW.js → FolderPicker-HJUUHQEI.js} +1 -1
  8. package/dist/{HelpView-PSHKI7DD.js → HelpView-EWHP7LSJ.js} +1 -1
  9. package/dist/{InfoBox-PXWJ6BIX.js → InfoBox-GQQJVTI5.js} +1 -1
  10. package/dist/{LinksBox-IUOYRXYO.js → LinksBox-EWCPAZFN.js} +1 -1
  11. package/dist/{ProfilesView-UK5XX5WP.js → ProfilesView-5FJNQMUW.js} +1 -1
  12. package/dist/{ProjectPicker-3FE7UFXL.js → ProjectPicker-IN7GFN7I.js} +1 -1
  13. package/dist/{SaveSessionPrompt-P7NF5FDA.js → SaveSessionPrompt-ISODGFP7.js} +1 -1
  14. package/dist/SingleShotApp-QANGFAPO.js +2 -0
  15. package/dist/{SummaryBox-WVR4U3NN.js → SummaryBox-R6WHU7VD.js} +1 -1
  16. package/dist/TestMdRunView-74A3LCNE.js +2 -0
  17. package/dist/{WhoamiView-QVXJAVTC.js → WhoamiView-YRQNOSOH.js} +1 -1
  18. package/dist/{bind-SRZYTS4Q.js → bind-FZ4X4SOK.js} +2 -2
  19. package/dist/{bridge-I6N3YPXI.js → bridge-7UMWMIJJ.js} +1 -1
  20. package/dist/{changelog-HPSX3L7T.js → changelog-YQC2QDCO.js} +1 -1
  21. package/dist/chat-controller-QXFAB2DK.js +3 -0
  22. package/dist/{chunk-HUD7SPUF.js → chunk-2S4S2XJC.js} +1 -1
  23. package/dist/{chunk-DEYHK6ZC.js → chunk-2TVRHXRK.js} +1 -1
  24. package/dist/{chunk-6XKJH5ZE.js → chunk-326XAPMW.js} +2 -2
  25. package/dist/{chunk-TJRBV2V2.js → chunk-53VDR5DN.js} +3 -3
  26. package/dist/{chunk-X4QL2DAD.js → chunk-6RQAUK5F.js} +1 -1
  27. package/dist/{chunk-5ON7QQZO.js → chunk-7LFCSSPX.js} +10 -10
  28. package/dist/{chunk-2U5DZUC7.js → chunk-7MV5UF6O.js} +1 -1
  29. package/dist/{chunk-VL2UA23Z.js → chunk-7YQW4TFI.js} +1 -1
  30. package/dist/{chunk-KGFISJFM.js → chunk-ARS72637.js} +1 -1
  31. package/dist/{chunk-KRFGAVYU.js → chunk-AV5SUGRY.js} +1 -1
  32. package/dist/{chunk-K2MKBBI4.js → chunk-B5LJCGAY.js} +1 -1
  33. package/dist/{chunk-Z4K4AYEI.js → chunk-BFFCGEUH.js} +1 -1
  34. package/dist/{chunk-FU3OQXFH.js → chunk-BGGNBWAJ.js} +1 -1
  35. package/dist/{chunk-4PIMEZJW.js → chunk-BO3JA2GS.js} +3 -3
  36. package/dist/{chunk-D5DEWIAU.js → chunk-C5POEXSX.js} +2 -2
  37. package/dist/{chunk-HR7AGYV2.js → chunk-CIW2KP4C.js} +1 -1
  38. package/dist/{chunk-XN7PPLFS.js → chunk-DEEBPSJN.js} +1 -1
  39. package/dist/{chunk-QIE62H3J.js → chunk-E4OYR32M.js} +1 -1
  40. package/dist/{chunk-Q6TVDG3X.js → chunk-EEO4XWY6.js} +1 -1
  41. package/dist/{chunk-PJSCM6JX.js → chunk-EWFFJBAM.js} +1 -1
  42. package/dist/{chunk-S6GRW5ZA.js → chunk-F2K3XFFH.js} +2 -2
  43. package/dist/{chunk-M6DX4ENH.js → chunk-F66SSA4C.js} +1 -1
  44. package/dist/{chunk-44QUA6GV.js → chunk-FFL2TQEJ.js} +1 -1
  45. package/dist/{chunk-FOZVXYVG.js → chunk-G6AF2JUA.js} +1 -1
  46. package/dist/{chunk-GN3SZXZ5.js → chunk-ME5QSYWX.js} +1 -1
  47. package/dist/{chunk-52VLJKIN.js → chunk-NFGG5DA2.js} +1 -1
  48. package/dist/{chunk-YSK535OI.js → chunk-OE7TVGNB.js} +2 -2
  49. package/dist/{chunk-6UNTIXFW.js → chunk-OGVIHL5G.js} +1 -1
  50. package/dist/{chunk-35SRW4KA.js → chunk-P46TIMGQ.js} +1 -1
  51. package/dist/{chunk-N62EM6JX.js → chunk-PJDOXRLB.js} +1 -1
  52. package/dist/{chunk-IDDVO4UV.js → chunk-Q4HLQOJI.js} +1 -1
  53. package/dist/chunk-RE3BZVGE.js +3 -0
  54. package/dist/{chunk-YIOWO6WS.js → chunk-RLG5NUTE.js} +1 -1
  55. package/dist/{chunk-ZGH7T32S.js → chunk-RZFINU7J.js} +1 -1
  56. package/dist/{chunk-WM5QHLAP.js → chunk-SGU72YLH.js} +4 -4
  57. package/dist/{chunk-OZM4UU5F.js → chunk-SHSV64GX.js} +1 -1
  58. package/dist/{chunk-4G4HPMR2.js → chunk-SL7AJ7JQ.js} +1 -1
  59. package/dist/{chunk-LZKUF23A.js → chunk-SQFNMZJ2.js} +1 -1
  60. package/dist/{chunk-B2CIHKXG.js → chunk-TTSYHJLX.js} +1 -1
  61. package/dist/chunk-TY5LWU6I.js +14 -0
  62. package/dist/{chunk-L4AUCQVO.js → chunk-TZZYRDCF.js} +1 -1
  63. package/dist/{chunk-DCYTRYR2.js → chunk-UXJPCWGW.js} +1 -1
  64. package/dist/{chunk-MHQ6A2QZ.js → chunk-VXGOWBET.js} +1 -1
  65. package/dist/{chunk-BKGJGPDN.js → chunk-WFRL54GK.js} +1 -1
  66. package/dist/{chunk-EK2B2LZK.js → chunk-XBE7PGVY.js} +1 -1
  67. package/dist/{chunk-OZODSY6H.js → chunk-Y6LMHBLE.js} +1 -1
  68. package/dist/{chunk-LV5VRSPI.js → chunk-Y7KW5AEN.js} +1 -1
  69. package/dist/{chunk-U3JB76QP.js → chunk-YZKPZXHY.js} +1 -1
  70. package/dist/{chunk-NEZ4G7XR.js → chunk-YZSYXNMB.js} +1 -1
  71. package/dist/{config-KD62VH3R.js → config-5OOP2BO3.js} +1 -1
  72. package/dist/{credentials-NQNJR4E4.js → credentials-XCP6DJZZ.js} +1 -1
  73. package/dist/{evidence-FFOI2H3N.js → evidence-AX67Q6RN.js} +1 -1
  74. package/dist/{evolve-cmd-PHQ6FHRI.js → evolve-cmd-HR25DRTC.js} +1 -1
  75. package/dist/{extract-bind-6UMILP4U.js → extract-bind-ZDAXRQUS.js} +2 -2
  76. package/dist/{extract-cmd-MZR7PHGA.js → extract-cmd-5GGI6LAM.js} +1 -1
  77. package/dist/{generate-headless-XOBQS6RU.js → generate-headless-DRDE46ON.js} +2 -2
  78. package/dist/index.js +12 -12
  79. package/dist/{interactive-bind-5FWW3S53.js → interactive-bind-T6OBLZCT.js} +2 -2
  80. package/dist/{list-commands-PDTISP6T.js → list-commands-UDAL3SBY.js} +1 -1
  81. package/dist/login-flow-LJ4BH3OS.js +2 -0
  82. package/dist/{persist-recorded-session-5UNUINWF.js → persist-recorded-session-BW3YSFMP.js} +1 -1
  83. package/dist/{pipeline-F4WTOZ3Y.js → pipeline-TZJ652NT.js} +1 -1
  84. package/dist/{reconcile-cmd-MNMWAZF3.js → reconcile-cmd-242S7XNO.js} +2 -2
  85. package/dist/{recording-banner-IWY3GS6N.js → recording-banner-6FVTCUWQ.js} +1 -1
  86. package/dist/{require-project-folder-PFIDA5ZH.js → require-project-folder-AQUVEEJB.js} +1 -1
  87. package/dist/run-UGAOGR3B.js +2 -0
  88. package/dist/{run-test-md-7GONSVAM.js → run-test-md-AUK7NGLL.js} +2 -2
  89. package/dist/{skill-installer-YZP5DWWZ.js → skill-installer-2MNPCPRD.js} +1 -1
  90. package/dist/{spawner-YDYCSTZD.js → spawner-XCOMTJJC.js} +1 -1
  91. package/dist/tcg-generate-E5X23RVP.js +2 -0
  92. package/dist/{testmd-actions-7RNW76DN.js → testmd-actions-TU4KTO32.js} +1 -1
  93. package/dist/token-refresh-GGLARJV4.js +2 -0
  94. package/dist/{validate-basic-IQY5CRLP.js → validate-basic-IYMPP7C7.js} +1 -1
  95. package/dist/{version-check-U5UBPVX4.js → version-check-MUPSKONS.js} +1 -1
  96. package/package.json +6 -6
  97. package/dist/ChatSurface-HGP5EHZM.js +0 -9
  98. package/dist/SingleShotApp-UIDA54GB.js +0 -2
  99. package/dist/TestMdRunView-OH4Y6YD6.js +0 -2
  100. package/dist/chat-controller-VKGECDTU.js +0 -3
  101. package/dist/chunk-DM2GL24Z.js +0 -3
  102. package/dist/chunk-HW7Z5S2M.js +0 -14
  103. package/dist/login-flow-IXPJHTL2.js +0 -2
  104. package/dist/run-V2WMNHFK.js +0 -2
  105. package/dist/tcg-generate-ZRKSX2KC.js +0 -2
  106. package/dist/token-refresh-DH2L2IPP.js +0 -2
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as re}from"./chunk-CE664P73.js";import{a as te,b as j,d as B}from"./chunk-X4QL2DAD.js";import"./chunk-NNZV5RCE.js";import{a as R,b as ee,d as ne}from"./chunk-AD46OCZ4.js";import{a as X,b as M}from"./chunk-YANCBRER.js";import{a as Z}from"./chunk-JFAFKHDX.js";import{a as Q}from"./chunk-QPZRHAYK.js";import"./chunk-ZKYYZ5NO.js";import"./chunk-BC7UVJJB.js";import{d as z}from"./chunk-KHDUQ33H.js";import{a as E}from"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import{e as G}from"./chunk-B2PZAB7J.js";import{d as v,e as P,g as H}from"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";import{existsSync as Ae,lstatSync as Le,readdirSync as Te,statSync as Ie}from"fs";import{basename as J,join as Ne,relative as Fe,resolve as ye}from"path";var oe="this release plans changes only \u2014 blast-radius impact and drift meaning-checks are not measured, and REMOVE rows are never executed automatically",Re="suite untouched; graph updated";function W(e,t){return!e.superseded.has(t)&&e.trust.get(t)!=="archived"}function O(e,t){return e.nameOf.get(t)??t}function A(e){return String(e).slice(0,19)}function C(e,t,r){let n=e.edgesFrom(t).find(o=>o.type===r);return n?e.tipOf(n.dst):null}function se(e,t){let r=e.nodeLabel.get(t);if(r===v.USECASE)return t;if(r===v.SCENARIO)return C(e,t,P.BELONGS_TO);if(r===v.AC){let n=C(e,t,P.SCOPED_TO);return n?e.nodeLabel.get(n)===v.USECASE?n:C(e,n,P.BELONGS_TO):null}if(r===v.TEST){let n=C(e,t,P.AUTOMATES);return n?C(e,n,P.BELONGS_TO):null}return null}function ie(e,t){let r=[],n=new Map;for(let o of e.derivesInto(t))n.set(String(o.props.source_id),o);for(let[o,c]of n){let s=e.heads.get(o);if(s==null){r.push(`DERIVES pin ${o} @ ${A(c.props.source_cid)} \u2014 source retired`);continue}if(s!==c.props.source_cid){let d=e.convChains.get(o)?.chain;if(d&&d.includes(String(c.props.source_cid)))continue;r.push(`DERIVES pin ${o} @ ${A(c.props.source_cid)} \u2014 source head moved to ${A(s)}`)}}for(let o of e.edgesFrom(t))H(o.type)?.pin?.comparesTo==="dst_tip"&&e.superseded.has(o.dst)&&r.push(`${o.type} pin \u2192 ${O(e,o.dst)} \u2014 target superseded`);return r.join("; ")||"structural pin broken"}var ke=new Set([v.USECASE,v.SCENARIO,v.AC,v.TEST]);function F(e,t){return e.ref<t.ref?-1:e.ref>t.ref?1:0}function ae(e,t,r){let n=t.getNode(r)?.content.blob;if(typeof n!="string")return null;let o=z(e,n);return o===null?null:o.toString("utf8")}function Se(e,t,r,n,o){let c=r.props.quote;if(typeof c=="string"&&c.length>0)return n.includes(c);let s=String(r.props.source_cid);o.has(s)||o.set(s,ae(e,t,s));let d=o.get(s);if(d===null)return!1;let i=Q(d,String(r.props.anchor));return i===null?!1:i.split(`
3
- `).some(g=>g.trim().length>0&&n.includes(g.trim()))}function Ee(e,t,r){let n=e.getNode(t)?.content??{},o=e.getNode(r)?.content??{},s=[...new Set([...Object.keys(n),...Object.keys(o)])].sort().filter(d=>JSON.stringify(n[d])!==JSON.stringify(o[d]));return s.length>0?`updated: ${s.join(", ")}`:"updated"}function be(e,t,r,n,o,c){let s=[];for(let[p,u]of r.superseded)u===null||p===u||t.superseded.has(p)||r.nodeLabel.get(p)===v.USECASE&&s.push({kind:"MODIFIED",ref:O(r,p),old_cid:p,new_cid:u,summary:Ee(r,p,u)});let d=c.map(p=>({kind:"ADDED",ref:O(r,p),cid:p})),i=[],g=ae(e,r,o),f=new Map;for(let{cid:p}of r.byLabel(v.USECASE)){if(!W(r,p))continue;let u=r.derivesInto(p),m=u.filter(a=>String(a.props.source_id)===n);m.length===0||m.some(a=>a.props.source_cid===o)||g!==null&&m.some(a=>String(a.props.anchor)!=="img#whole"&&Se(e,r,a,g,f))||u.some(a=>{let l=String(a.props.source_id);if(l===n)return!1;let $=r.heads.get(l);return $!=null})||i.push({kind:"DROPPED",ref:O(r,p),cid:p,why:`evidence decayed: no quote from ${n} relocates into @${A(o)}, no other live source, no fresh evidence this run`})}let h=(p,u)=>p.ref<u.ref?-1:p.ref>u.ref?1:0;return[...s.sort(h),...d.sort(h),...i.sort(h)]}async function ce(e,t,r){let n=E(e),o=n.heads.get(t)??null,c=new Set(n.staleList().filter(a=>a.state==="stale").map(a=>a.cid)),s=await r.reingest(t);if(s.status==="unchanged")return{source_id:t,changed:!1,head:{status:s.status,before:o,after:s.cid},note:`nothing to reconcile \u2014 ${t} is unchanged`,skipped_arms:oe,changeset:[],rows:[]};let d=await r.reextract(t),i=E(e),g=d.minted.map(a=>{let l=O(i,a);return{kind:"ADD",ref:l,reason:`new use-case extracted from ${t}`,provenance:`extraction commit \u2014 DERIVES ${t} @ ${A(s.cid)}`,action:`kane-cli design tests --use-case ${l}`}}),f=i.staleList().filter(a=>a.state==="stale"&&!c.has(a.cid)&&W(i,a.cid)).map(a=>a.cid),h=f.map(a=>{let l=O(i,a),$=ke.has(i.nodeLabel.get(a)??"");return{kind:"ENHANCE",ref:l,reason:"stale (structural)",provenance:ie(i,a),action:$?`kane-cli maintain evolve ${l}`:`kane-cli design explain ${l}`}}),p=new Set;for(let a of[...d.minted,...d.matched])p.add(i.tipOf(a));for(let a of f){let l=se(i,i.tipOf(a));l&&i.nodeLabel.get(l)===v.USECASE&&p.add(i.tipOf(l))}let u=[];for(let a of await re(i,"design")){if(a.kind!=="no-verifies")continue;let l=i.resolve(a.ref);if(!l)continue;let $=se(i,l.tip);!$||!p.has(i.tipOf($))||u.push({kind:"ADD",ref:a.ref,reason:a.why,provenance:`gaps engine (design) \u2014 uncovered AC of touched use-case ${O(i,$)}`,action:a.ready_command})}let m=[];for(let{cid:a}of i.byLabel(v.USECASE))W(i,a)&&i.stale(a)==="orphaned"&&m.push({kind:"REMOVE",ref:O(i,a),reason:"orphaned \u2014 no live source evidences this use-case",provenance:ie(i,a),action:"plan-only \u2014 REMOVE is not executed in this release"});let w=new Set,b=[...g.sort(F),...u.sort(F),...h.sort(F),...m.sort(F)].filter(a=>{let l=`${a.kind}\0${a.ref}`;return w.has(l)?!1:(w.add(l),!0)});return{source_id:t,changed:!0,head:{status:s.status,before:o,after:s.cid},note:Re,skipped_arms:oe,changeset:be(e,n,i,t,s.cid,d.minted),rows:b}}function de(e,t){return async r=>{let{ingestFile:n}=await import("./ingest-4CGBXC2L.js"),o=await n({contextDir:e,filePath:t,asId:r});return{status:o.status,cid:o.cid}}}function le(e){return async t=>{let[{runExtract:r},{resolveAgentAuthEnv:n},{runAgent:o},{preflightTurn:c}]=await Promise.all([import("./run-V2WMNHFK.js"),import("./spawner-YDYCSTZD.js"),import("./bridge-I6N3YPXI.js"),import("./turn-preflight-JGYT7LXP.js")]),s=await n(),d=new Set(E(e).byLabel(v.USECASE).map(m=>m.cid)),i=0,g=await r({mode:"override"},{contextDir:e,agent:o,preflightTurn:()=>c(s),ask:async()=>[],review:async m=>new Map(m.map(w=>[w.temp_ref,{resolution:w.matches_existing&&w.changed?"edited":"skipped"}])),confirmStale:async()=>!1,out:m=>process.stderr.write(m+`
2
+ import{a as re}from"./chunk-CE664P73.js";import{a as te,b as j,d as B}from"./chunk-6RQAUK5F.js";import"./chunk-NNZV5RCE.js";import{a as R,b as ee,d as ne}from"./chunk-AD46OCZ4.js";import{a as X,b as M}from"./chunk-YANCBRER.js";import{a as Z}from"./chunk-JFAFKHDX.js";import{a as Q}from"./chunk-QPZRHAYK.js";import"./chunk-ZKYYZ5NO.js";import"./chunk-BC7UVJJB.js";import{d as z}from"./chunk-KHDUQ33H.js";import{a as E}from"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import{e as G}from"./chunk-B2PZAB7J.js";import{d as v,e as P,g as H}from"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";import{existsSync as Ae,lstatSync as Le,readdirSync as Te,statSync as Ie}from"fs";import{basename as J,join as Ne,relative as Fe,resolve as ye}from"path";var oe="this release plans changes only \u2014 blast-radius impact and drift meaning-checks are not measured, and REMOVE rows are never executed automatically",Re="suite untouched; graph updated";function W(e,t){return!e.superseded.has(t)&&e.trust.get(t)!=="archived"}function O(e,t){return e.nameOf.get(t)??t}function A(e){return String(e).slice(0,19)}function C(e,t,r){let n=e.edgesFrom(t).find(o=>o.type===r);return n?e.tipOf(n.dst):null}function se(e,t){let r=e.nodeLabel.get(t);if(r===v.USECASE)return t;if(r===v.SCENARIO)return C(e,t,P.BELONGS_TO);if(r===v.AC){let n=C(e,t,P.SCOPED_TO);return n?e.nodeLabel.get(n)===v.USECASE?n:C(e,n,P.BELONGS_TO):null}if(r===v.TEST){let n=C(e,t,P.AUTOMATES);return n?C(e,n,P.BELONGS_TO):null}return null}function ie(e,t){let r=[],n=new Map;for(let o of e.derivesInto(t))n.set(String(o.props.source_id),o);for(let[o,c]of n){let s=e.heads.get(o);if(s==null){r.push(`DERIVES pin ${o} @ ${A(c.props.source_cid)} \u2014 source retired`);continue}if(s!==c.props.source_cid){let d=e.convChains.get(o)?.chain;if(d&&d.includes(String(c.props.source_cid)))continue;r.push(`DERIVES pin ${o} @ ${A(c.props.source_cid)} \u2014 source head moved to ${A(s)}`)}}for(let o of e.edgesFrom(t))H(o.type)?.pin?.comparesTo==="dst_tip"&&e.superseded.has(o.dst)&&r.push(`${o.type} pin \u2192 ${O(e,o.dst)} \u2014 target superseded`);return r.join("; ")||"structural pin broken"}var ke=new Set([v.USECASE,v.SCENARIO,v.AC,v.TEST]);function F(e,t){return e.ref<t.ref?-1:e.ref>t.ref?1:0}function ae(e,t,r){let n=t.getNode(r)?.content.blob;if(typeof n!="string")return null;let o=z(e,n);return o===null?null:o.toString("utf8")}function Se(e,t,r,n,o){let c=r.props.quote;if(typeof c=="string"&&c.length>0)return n.includes(c);let s=String(r.props.source_cid);o.has(s)||o.set(s,ae(e,t,s));let d=o.get(s);if(d===null)return!1;let i=Q(d,String(r.props.anchor));return i===null?!1:i.split(`
3
+ `).some(g=>g.trim().length>0&&n.includes(g.trim()))}function Ee(e,t,r){let n=e.getNode(t)?.content??{},o=e.getNode(r)?.content??{},s=[...new Set([...Object.keys(n),...Object.keys(o)])].sort().filter(d=>JSON.stringify(n[d])!==JSON.stringify(o[d]));return s.length>0?`updated: ${s.join(", ")}`:"updated"}function be(e,t,r,n,o,c){let s=[];for(let[p,u]of r.superseded)u===null||p===u||t.superseded.has(p)||r.nodeLabel.get(p)===v.USECASE&&s.push({kind:"MODIFIED",ref:O(r,p),old_cid:p,new_cid:u,summary:Ee(r,p,u)});let d=c.map(p=>({kind:"ADDED",ref:O(r,p),cid:p})),i=[],g=ae(e,r,o),f=new Map;for(let{cid:p}of r.byLabel(v.USECASE)){if(!W(r,p))continue;let u=r.derivesInto(p),m=u.filter(a=>String(a.props.source_id)===n);m.length===0||m.some(a=>a.props.source_cid===o)||g!==null&&m.some(a=>String(a.props.anchor)!=="img#whole"&&Se(e,r,a,g,f))||u.some(a=>{let l=String(a.props.source_id);if(l===n)return!1;let $=r.heads.get(l);return $!=null})||i.push({kind:"DROPPED",ref:O(r,p),cid:p,why:`evidence decayed: no quote from ${n} relocates into @${A(o)}, no other live source, no fresh evidence this run`})}let h=(p,u)=>p.ref<u.ref?-1:p.ref>u.ref?1:0;return[...s.sort(h),...d.sort(h),...i.sort(h)]}async function ce(e,t,r){let n=E(e),o=n.heads.get(t)??null,c=new Set(n.staleList().filter(a=>a.state==="stale").map(a=>a.cid)),s=await r.reingest(t);if(s.status==="unchanged")return{source_id:t,changed:!1,head:{status:s.status,before:o,after:s.cid},note:`nothing to reconcile \u2014 ${t} is unchanged`,skipped_arms:oe,changeset:[],rows:[]};let d=await r.reextract(t),i=E(e),g=d.minted.map(a=>{let l=O(i,a);return{kind:"ADD",ref:l,reason:`new use-case extracted from ${t}`,provenance:`extraction commit \u2014 DERIVES ${t} @ ${A(s.cid)}`,action:`kane-cli design tests --use-case ${l}`}}),f=i.staleList().filter(a=>a.state==="stale"&&!c.has(a.cid)&&W(i,a.cid)).map(a=>a.cid),h=f.map(a=>{let l=O(i,a),$=ke.has(i.nodeLabel.get(a)??"");return{kind:"ENHANCE",ref:l,reason:"stale (structural)",provenance:ie(i,a),action:$?`kane-cli maintain evolve ${l}`:`kane-cli design explain ${l}`}}),p=new Set;for(let a of[...d.minted,...d.matched])p.add(i.tipOf(a));for(let a of f){let l=se(i,i.tipOf(a));l&&i.nodeLabel.get(l)===v.USECASE&&p.add(i.tipOf(l))}let u=[];for(let a of await re(i,"design")){if(a.kind!=="no-verifies")continue;let l=i.resolve(a.ref);if(!l)continue;let $=se(i,l.tip);!$||!p.has(i.tipOf($))||u.push({kind:"ADD",ref:a.ref,reason:a.why,provenance:`gaps engine (design) \u2014 uncovered AC of touched use-case ${O(i,$)}`,action:a.ready_command})}let m=[];for(let{cid:a}of i.byLabel(v.USECASE))W(i,a)&&i.stale(a)==="orphaned"&&m.push({kind:"REMOVE",ref:O(i,a),reason:"orphaned \u2014 no live source evidences this use-case",provenance:ie(i,a),action:"plan-only \u2014 REMOVE is not executed in this release"});let w=new Set,b=[...g.sort(F),...u.sort(F),...h.sort(F),...m.sort(F)].filter(a=>{let l=`${a.kind}\0${a.ref}`;return w.has(l)?!1:(w.add(l),!0)});return{source_id:t,changed:!0,head:{status:s.status,before:o,after:s.cid},note:Re,skipped_arms:oe,changeset:be(e,n,i,t,s.cid,d.minted),rows:b}}function de(e,t){return async r=>{let{ingestFile:n}=await import("./ingest-4CGBXC2L.js"),o=await n({contextDir:e,filePath:t,asId:r});return{status:o.status,cid:o.cid}}}function le(e){return async t=>{let[{runExtract:r},{resolveAgentAuthEnv:n},{runAgent:o},{preflightTurn:c}]=await Promise.all([import("./run-UGAOGR3B.js"),import("./spawner-XCOMTJJC.js"),import("./bridge-7UMWMIJJ.js"),import("./turn-preflight-JGYT7LXP.js")]),s=await n(),d=new Set(E(e).byLabel(v.USECASE).map(m=>m.cid)),i=0,g=await r({mode:"override"},{contextDir:e,agent:o,preflightTurn:()=>c(s),ask:async()=>[],review:async m=>new Map(m.map(w=>[w.temp_ref,{resolution:w.matches_existing&&w.changed?"edited":"skipped"}])),confirmStale:async()=>!1,out:m=>process.stderr.write(m+`
4
4
  `),progress:m=>process.stderr.write(m+`
5
5
  `),emit:m=>{m.type==="commit"&&typeof m.assumed=="number"&&(i+=m.assumed)},isTTY:!1,auth:s});if(g!==0)throw new Error(`reconcile: re-extract of ${t} failed (exit ${g})`);let f=E(e),h=f.heads.get(t),p=[],u=[];if(typeof h=="string"){let m=new Set;for(let w of f.edgesFrom(h))w.type!==P.DERIVES||f.nodeLabel.get(w.dst)!==v.USECASE||m.has(w.dst)||(m.add(w.dst),(d.has(w.dst)?u:p).push(w.dst))}return{minted:p,matched:u,defaultsTaken:i}}}import{closeSync as Oe,existsSync as Pe,mkdirSync as pe,openSync as De,readFileSync as V,readdirSync as _e,renameSync as xe,rmSync as ue,writeFileSync as fe}from"fs";import{join as L}from"path";var D=class extends Error{constructor(r,n){super(`${r}: ${n}`);this.code=r}},K=e=>L(e,"reconcile","plans");function ge(e,t){let r=`${e}.tmp-${process.pid}`;fe(r,t,{mode:384}),xe(r,e)}function me(e,t){let r=K(e);pe(r,{recursive:!0});let n=L(r,`${t.created}-${t.source_id}.json`);return ge(n,JSON.stringify(t,null,2)+`
6
6
  `),n}function Y(e,t){let r=t;if(r===void 0){let s=K(e),d=[];try{d=_e(s).filter(i=>i.endsWith(".json")).sort()}catch{}if(d.length===0)return{error:`no stored plans under ${s} \u2014 run reconcile --plan first`};r=L(s,d[d.length-1])}if(!Pe(r))return{error:`no such plan file: ${r}`};let n;try{n=V(r,"utf8")}catch(s){return{error:`cannot read plan ${r}: ${s instanceof Error?s.message:String(s)}`}}let o;try{o=JSON.parse(n)}catch(s){return{error:`corrupted plan ${r}: ${s instanceof Error?s.message:String(s)}`}}let c=o?.version;return c!==1?{error:`unsupported plan version ${String(c)} in ${r} (expected 1)`}:Array.isArray(o.rows)?{plan:o,path:r}:{error:`not a reconcile plan \u2014 ${r} has no rows[] (hand-edited?)`}}function q(e,t,r){let n;try{n=JSON.parse(V(e,"utf8"))}catch(c){throw new D("PLAN_UNREADABLE",`${e}: ${c instanceof Error?c.message:String(c)}`)}let o=n.rows?.[t];if(!o)throw new D("ROW_MISSING",`${e} has no row ${t}`);if(o.applied)throw new D("ROW_ALREADY_APPLIED",`row ${t} of ${e} was already applied (${o.applied.outcome} at ${o.applied.at})`);o.applied={at:new Date().toISOString(),outcome:r},ge(e,JSON.stringify(n,null,2)+`
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import{a as n}from"./chunk-3MSXQU2C.js";import"./chunk-UR6MHSHU.js";function p(t){let s=t.sessionName!==null,e={type:"recording_state",enabled:!0,session_id:t.sessionId,persist:s};return t.sessionName&&(e.session_name=t.sessionName),t.testPath&&(e.test_path=t.testPath),t.outputPath&&(e.output_path=t.outputPath),e}async function g(t){if(t.isAgent){process.stdout.write(JSON.stringify(p(t))+`
3
- `);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-PXWJ6BIX.js"),u=t.sessionName?[{label:"session",value:t.sessionName},{label:"test",value:n(t.testPath??"")},{label:"output",value:n(t.outputPath??"")}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];function l(){let{exit:i}=a();return o(()=>{let c=setTimeout(()=>i(),50);return()=>clearTimeout(c)},[i]),s.createElement(r,{title:"Recording",titleColor:"#ff9500",rows:u})}await e(s.createElement(l),{stdout:process.stderr}).waitUntilExit()}export{p as buildRecordingStateEvent,g as printRecordingBanner};
3
+ `);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-GQQJVTI5.js"),u=t.sessionName?[{label:"session",value:t.sessionName},{label:"test",value:n(t.testPath??"")},{label:"output",value:n(t.outputPath??"")}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];function l(){let{exit:i}=a();return o(()=>{let c=setTimeout(()=>i(),50);return()=>clearTimeout(c)},[i]),s.createElement(r,{title:"Recording",titleColor:"#ff9500",rows:u})}await e(s.createElement(l),{stdout:process.stderr}).waitUntilExit()}export{p as buildRecordingStateEvent,g as printRecordingBanner};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as a,c as b,d as c,e as d,f as e,g as f,h as g}from"./chunk-HR7AGYV2.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-VE3SUJMA.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";export{d as buildAutoDefaultAnnouncement,f as buildAutoDefaultedEvent,e as buildAutoDefaultedNdjson,c as buildRemediationMessage,b as decideGateAction,a as loadCachedIds,g as requireProjectFolder};
2
+ import{b as a,c as b,d as c,e as d,f as e,g as f,h as g}from"./chunk-CIW2KP4C.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-VE3SUJMA.js";import"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";export{d as buildAutoDefaultAnnouncement,f as buildAutoDefaultedEvent,e as buildAutoDefaultedNdjson,c as buildRemediationMessage,b as decideGateAction,a as loadCachedIds,g as requireProjectFolder};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as b,b as c,c as d,d as e,e as f}from"./chunk-TY5LWU6I.js";import{f as a}from"./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-KHDUQ33H.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";export{e as dedupPreFlags,c as displaySourceName,a as resolveAnswers,f as runExtract,b as sessionSourceRef,d as sourceBanner};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as A}from"./chunk-6UNTIXFW.js";import{E as M,F as P,G as K,H,I as U}from"./chunk-4PIMEZJW.js";import"./chunk-GIGD4M7V.js";import{a as _,b as E}from"./chunk-D5DEWIAU.js";import{a as h,b as k}from"./chunk-OZODSY6H.js";import"./chunk-2YQ6TW77.js";import"./chunk-LMJTY32X.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-2U5DZUC7.js";import"./chunk-44QUA6GV.js";import"./chunk-IDDVO4UV.js";import{a as x}from"./chunk-EK2B2LZK.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-35SRW4KA.js";import"./chunk-4G4HPMR2.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YSK535OI.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{e as b,f as S,g as T}from"./chunk-M5JQXOCE.js";import"./chunk-HR7AGYV2.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-YIOWO6WS.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-L4AUCQVO.js";import"./chunk-QIE62H3J.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";import{resolve as Y}from"path";import{existsSync as D}from"fs";function O(){return{register:(n,r)=>b(n,r),deregister:n=>S(n),cleanup:(n,r)=>T(n,r),remoteLogger:null}}async function le(n,r){let t=Y(n);if(!D(t))return process.stderr.write(`error: file not found: ${t}
2
+ import{a as A}from"./chunk-OGVIHL5G.js";import{E as M,F as P,G as K,H,I as U}from"./chunk-BO3JA2GS.js";import"./chunk-GIGD4M7V.js";import{a as _,b as E}from"./chunk-C5POEXSX.js";import{a as h,b as k}from"./chunk-Y6LMHBLE.js";import"./chunk-2YQ6TW77.js";import"./chunk-LMJTY32X.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-7MV5UF6O.js";import"./chunk-FFL2TQEJ.js";import"./chunk-Q4HLQOJI.js";import{a as x}from"./chunk-XBE7PGVY.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-P46TIMGQ.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.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{e as b,f as S,g as T}from"./chunk-M5JQXOCE.js";import"./chunk-CIW2KP4C.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-RLG5NUTE.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-TZZYRDCF.js";import"./chunk-E4OYR32M.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";import{resolve as Y}from"path";import{existsSync as D}from"fs";function O(){return{register:(n,r)=>b(n,r),deregister:n=>S(n),cleanup:(n,r)=>T(n,r),remoteLogger:null}}async function le(n,r){let t=Y(n);if(!D(t))return process.stderr.write(`error: file not found: ${t}
3
3
  `),2;if(r.finalValidation!==void 0&&r.finalValidation!=="on"&&r.finalValidation!=="off")return process.stderr.write(`error: --final-validation must be 'on' or 'off'
4
4
  `),2;if(!t.endsWith("_test.md"))return process.stderr.write(`error: not a *_test.md file: ${t}
5
5
  helpers are import-only \u2014 run a test that @imports it.
@@ -12,6 +12,6 @@ import{a as A}from"./chunk-6UNTIXFW.js";import{E as M,F as P,G as K,H,I as U}fro
12
12
  \u2022 Run 'kane-cli login --username <user> --access-key <key>'
13
13
  `):e instanceof h&&e.code==="refresh_failed"?process.stderr.write(`error: Token refresh failed. Run 'kane-cli login' to re-authenticate.
14
14
  `):process.stderr.write(`error: auth resolution failed: ${e.message}
15
- `),2}let y=String(p.resolvedCreds?.org_id??"");if(!y)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:e,assertOrgMatchOrExit:g}=await import("./testmd-actions-7RNW76DN.js"),d=g(e(t),y);if(d!==null)return d}let w=new R,j=A({isAgent:a,log:(e,g,d,V)=>w.log(e,g,d,V)}),F={path:t,cwd:process.cwd(),opts:r,isAgent:a,disableAskUser:!0,resolved:s,resolvedAuth:p,cliOverrides:i,environment:f,envConfig:N,profile:I,model:$,creds:o,configStore:l,session:w};try{return(await M(F,j,c)).exitCode}catch(e){return process.stderr.write(`error: ${e.message}
15
+ `),2}let y=String(p.resolvedCreds?.org_id??"");if(!y)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:e,assertOrgMatchOrExit:g}=await import("./testmd-actions-TU4KTO32.js"),d=g(e(t),y);if(d!==null)return d}let w=new R,j=A({isAgent:a,log:(e,g,d,V)=>w.log(e,g,d,V)}),F={path:t,cwd:process.cwd(),opts:r,isAgent:a,disableAskUser:!0,resolved:s,resolvedAuth:p,cliOverrides:i,environment:f,envConfig:N,profile:I,model:$,creds:o,configStore:l,session:w};try{return(await M(F,j,c)).exitCode}catch(e){return process.stderr.write(`error: ${e.message}
16
16
  `),2}}var m=class extends Error{constructor(t,a){super(t);this.exitCode=a;this.name="CliArgError"}};function G(n){let r={mode:"mode",assertionMode:"assertion_mode",finalValidation:"final_validation",maxSteps:"max_steps",timeout:"timeout",globalContext:"global_context",localContext:"local_context",codeExport:"code_export",codeLanguage:"code_language",headless:"headless",cdpEndpoint:"cdp_endpoint",wsEndpoint:"ws_endpoint"},t=new Set(["max_steps","timeout"]),a={};for(let[c,s]of Object.entries(r)){let i=n[c];if(i===void 0||i==="")continue;let o=i;if(t.has(s)&&(o=Number(i),Number.isNaN(o))){let l="--"+c.replace(/[A-Z]/g,u=>"-"+u.toLowerCase());throw new m(`error: ${l} must be a number
17
17
  `,2)}a[s]=o}return a}export{U as applyCliStepConfig,K as buildStepRunVariables,P as buildTestLevelVariables,G as optsToOverrides,H as replayVariablesForStep,le as runTestMdFile};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p,b as g}from"./chunk-FOZVXYVG.js";import{b as m}from"./chunk-B2CIHKXG.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-L4AUCQVO.js";import{a as f,g as a,h as u}from"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";import{mkdirSync as y,writeFileSync as w,readFileSync as S,rmSync as c,cpSync as v,createWriteStream as T,existsSync as b}from"fs";import{join as s}from"path";import{tmpdir as k}from"os";import{spawn as h}from"child_process";import{Readable as I}from"stream";import{pipeline as $}from"stream/promises";function E(t){try{return S(s(t,"VERSION"),"utf-8").trim()||null}catch{return null}}function L(t,r,l){return l?t!==r:t===null||m(t,r)>0}function C(t){let r=a.split("/").pop()??a;return`https://registry.npmjs.org/${a}/-/${r}-${t}.tgz`}var R=5e3,A=6e4;async function x(){let t=new AbortController,r=setTimeout(()=>t.abort(),R);try{let l=await d(p(),{headers:{Accept:"application/json"},signal:t.signal});if(!l.ok)throw new Error(`Controller returned ${l.status} fetching skill version map`);let i=await l.json(),n=g(i,f);if(!n)throw new Error("No compatible skill version found for this kane-cli build");return n}finally{clearTimeout(r)}}async function _(t){let r=C(t),l=new AbortController,i=setTimeout(()=>l.abort(),A);try{let n=await d(r,{headers:{Accept:"application/octet-stream"},signal:l.signal});if(!n.ok||!n.body)throw new Error(`Failed to download skill tarball (${n.status})`);let e=s(k(),`kane-cli-skill-${t}-${process.pid}.tgz`);return await $(I.fromWeb(n.body),T(e)),e}finally{clearTimeout(i)}}function M(t,r){return new Promise((l,i)=>{y(r,{recursive:!0});let n=h("tar",["-xzf",t,"-C",r,"--strip-components=2","package/skills"],{stdio:["ignore","ignore","pipe"]}),e="";n.stderr?.on("data",o=>{e+=o.toString()}),n.on("error",o=>i(o)),n.on("close",o=>{o===0?l():i(new Error(`tar exited ${o}${e?`: ${e.trim()}`:""}`))})})}async function W(t){let r;try{r=t??await x()}catch(e){return{status:"failed",version:t??"unknown",installedTargets:0,error:e instanceof Error?e.message:String(e)}}let l=u.filter(({dir:e})=>L(E(e),r,!!t));if(l.length===0)return{status:"already-installed",version:r,installedTargets:0};let i=null,n=null;try{if(n=await _(r),i=s(k(),`kane-cli-skill-${r}-stage-${process.pid}`),c(i,{recursive:!0,force:!0}),await M(n,i),!b(s(i,"SKILL.md")))throw new Error(`Unexpected skill tarball layout for v${r}: SKILL.md not at package/skills/ root`);let e=0;for(let{dir:o}of l)try{c(o,{recursive:!0,force:!0}),y(o,{recursive:!0}),v(i,o,{recursive:!0,force:!0}),w(s(o,"VERSION"),r+`
2
+ import{a as p,b as g}from"./chunk-G6AF2JUA.js";import{b as m}from"./chunk-TTSYHJLX.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-TZZYRDCF.js";import{a as f,g as a,h as u}from"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";import{mkdirSync as y,writeFileSync as w,readFileSync as S,rmSync as c,cpSync as v,createWriteStream as T,existsSync as b}from"fs";import{join as s}from"path";import{tmpdir as k}from"os";import{spawn as h}from"child_process";import{Readable as I}from"stream";import{pipeline as $}from"stream/promises";function E(t){try{return S(s(t,"VERSION"),"utf-8").trim()||null}catch{return null}}function L(t,r,l){return l?t!==r:t===null||m(t,r)>0}function C(t){let r=a.split("/").pop()??a;return`https://registry.npmjs.org/${a}/-/${r}-${t}.tgz`}var R=5e3,A=6e4;async function x(){let t=new AbortController,r=setTimeout(()=>t.abort(),R);try{let l=await d(p(),{headers:{Accept:"application/json"},signal:t.signal});if(!l.ok)throw new Error(`Controller returned ${l.status} fetching skill version map`);let i=await l.json(),n=g(i,f);if(!n)throw new Error("No compatible skill version found for this kane-cli build");return n}finally{clearTimeout(r)}}async function _(t){let r=C(t),l=new AbortController,i=setTimeout(()=>l.abort(),A);try{let n=await d(r,{headers:{Accept:"application/octet-stream"},signal:l.signal});if(!n.ok||!n.body)throw new Error(`Failed to download skill tarball (${n.status})`);let e=s(k(),`kane-cli-skill-${t}-${process.pid}.tgz`);return await $(I.fromWeb(n.body),T(e)),e}finally{clearTimeout(i)}}function M(t,r){return new Promise((l,i)=>{y(r,{recursive:!0});let n=h("tar",["-xzf",t,"-C",r,"--strip-components=2","package/skills"],{stdio:["ignore","ignore","pipe"]}),e="";n.stderr?.on("data",o=>{e+=o.toString()}),n.on("error",o=>i(o)),n.on("close",o=>{o===0?l():i(new Error(`tar exited ${o}${e?`: ${e.trim()}`:""}`))})})}async function W(t){let r;try{r=t??await x()}catch(e){return{status:"failed",version:t??"unknown",installedTargets:0,error:e instanceof Error?e.message:String(e)}}let l=u.filter(({dir:e})=>L(E(e),r,!!t));if(l.length===0)return{status:"already-installed",version:r,installedTargets:0};let i=null,n=null;try{if(n=await _(r),i=s(k(),`kane-cli-skill-${r}-stage-${process.pid}`),c(i,{recursive:!0,force:!0}),await M(n,i),!b(s(i,"SKILL.md")))throw new Error(`Unexpected skill tarball layout for v${r}: SKILL.md not at package/skills/ root`);let e=0;for(let{dir:o}of l)try{c(o,{recursive:!0,force:!0}),y(o,{recursive:!0}),v(i,o,{recursive:!0,force:!0}),w(s(o,"VERSION"),r+`
3
3
  `),e++}catch{}return e===0?{status:"failed",version:r,installedTargets:0,error:"Could not write to any agent skill directory"}:{status:"installed",version:r,installedTargets:e}}catch(e){return{status:"failed",version:r,installedTargets:0,error:e instanceof Error?e.message:String(e)}}finally{if(n)try{c(n,{force:!0})}catch{}if(i)try{c(i,{recursive:!0,force:!0})}catch{}}}function D(t){switch(t.status){case"installed":return`Installed kane-cli skill v${t.version} (${t.installedTargets}/${u.length} agent dirs). Restart your AI agent (Claude Code / Codex CLI / Gemini CLI) to load it.`;case"already-installed":return`kane-cli skill v${t.version} already installed.`;case"failed":return`Failed to install kane-cli skill: ${t.error??"unknown error"}`}}export{D as formatInstallResult,W as installSkill,L as targetNeedsInstall};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-NEZ4G7XR.js";import"./chunk-UR6MHSHU.js";export{c as buildAgentEnv,b as findAssuranceAgent,a as platformPackageName,d as resolveAgentAuthEnv};
2
+ import{a,b,c,d}from"./chunk-YZSYXNMB.js";import"./chunk-UR6MHSHU.js";export{c as buildAgentEnv,b as findAssuranceAgent,a as platformPackageName,d as resolveAgentAuthEnv};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{d as a}from"./chunk-53VDR5DN.js";import"./chunk-3MSXQU2C.js";import"./chunk-SQFNMZJ2.js";import"./chunk-DEEBPSJN.js";import"./chunk-ARS72637.js";import"./chunk-BO3JA2GS.js";import"./chunk-GIGD4M7V.js";import"./chunk-F2K3XFFH.js";import"./chunk-C5POEXSX.js";import"./chunk-Y6LMHBLE.js";import"./chunk-2YQ6TW77.js";import"./chunk-EEO4XWY6.js";import"./chunk-LMJTY32X.js";import"./chunk-RKWJG3WW.js";import"./chunk-7YQW4TFI.js";import"./chunk-Y7KW5AEN.js";import"./chunk-7MV5UF6O.js";import"./chunk-UXJPCWGW.js";import"./chunk-FFL2TQEJ.js";import"./chunk-Q4HLQOJI.js";import"./chunk-XBE7PGVY.js";import"./chunk-PJDOXRLB.js";import"./chunk-F66SSA4C.js";import"./chunk-5Y2G4NC7.js";import"./chunk-ME5QSYWX.js";import"./chunk-NFGG5DA2.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-P46TIMGQ.js";import"./chunk-2TVRHXRK.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./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-WFRL54GK.js";import"./chunk-VXGOWBET.js";import"./chunk-BGGNBWAJ.js";import"./chunk-YCCUBQY4.js";import"./chunk-YZKPZXHY.js";import"./chunk-M5JQXOCE.js";import"./chunk-CIW2KP4C.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-TZZYRDCF.js";import"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-BFFCGEUH.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./chunk-S6GRW5ZA.js";import"./chunk-D5DEWIAU.js";import"./chunk-OZODSY6H.js";import"./chunk-2YQ6TW77.js";import"./chunk-RKWJG3WW.js";import"./chunk-EK2B2LZK.js";import"./chunk-35SRW4KA.js";import"./chunk-4G4HPMR2.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-U3JB76QP.js";import"./chunk-M5JQXOCE.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-L4AUCQVO.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{i as ExportError,c as assertOrgMatchOrExit,j as exportTestmd,b as metaMatchesOrg,a as readMetaIfExists,d as resolveCurrentOrgId,l as resolveSyncAuth,h as runDeleteAction,k as runExportAction,e as runListAction,f as runListTui,g as runStatusAction,m as runSyncAction};
2
+ import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./chunk-F2K3XFFH.js";import"./chunk-C5POEXSX.js";import"./chunk-Y6LMHBLE.js";import"./chunk-2YQ6TW77.js";import"./chunk-RKWJG3WW.js";import"./chunk-XBE7PGVY.js";import"./chunk-P46TIMGQ.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-YZKPZXHY.js";import"./chunk-M5JQXOCE.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.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{i as ExportError,c as assertOrgMatchOrExit,j as exportTestmd,b as metaMatchesOrg,a as readMetaIfExists,d as resolveCurrentOrgId,l as resolveSyncAuth,h as runDeleteAction,k as runExportAction,e as runListAction,f as runListTui,g as runStatusAction,m as runSyncAction};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-P46TIMGQ.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as t}from"./chunk-YIOWO6WS.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-RD2YEMAH.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
2
+ import{a as t}from"./chunk-RLG5NUTE.js";import"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-RD2YEMAH.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-B2CIHKXG.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
2
+ import{a,b,c,d}from"./chunk-TTSYHJLX.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E4OYR32M.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,11 +26,11 @@
26
26
  "ws": "^8.20.0"
27
27
  },
28
28
  "optionalDependencies": {
29
- "@testmuai/kane-cli-darwin-arm64": "0.6.2",
30
- "@testmuai/kane-cli-darwin-x64": "0.6.2",
31
- "@testmuai/kane-cli-linux-x64": "0.6.2",
32
- "@testmuai/kane-cli-linux-arm64": "0.6.2",
33
- "@testmuai/kane-cli-win-x64": "0.6.2",
29
+ "@testmuai/kane-cli-darwin-arm64": "0.6.3",
30
+ "@testmuai/kane-cli-darwin-x64": "0.6.3",
31
+ "@testmuai/kane-cli-linux-x64": "0.6.3",
32
+ "@testmuai/kane-cli-linux-arm64": "0.6.3",
33
+ "@testmuai/kane-cli-win-x64": "0.6.3",
34
34
  "sharp": "^0.34.5"
35
35
  },
36
36
  "publishConfig": {
@@ -1,9 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as H,b as $e}from"./chunk-6PS65QFF.js";import{a as xe,b as ye}from"./chunk-KGFISJFM.js";import{b as de,d as he}from"./chunk-LV5VRSPI.js";import{a as pe}from"./chunk-5Y2G4NC7.js";import{a as fe}from"./chunk-OZM4UU5F.js";import{b as ge}from"./chunk-DFS4RMVP.js";import"./chunk-KRFGAVYU.js";import{x as l}from"./chunk-QIE62H3J.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as x,b as o,i as me,k as U}from"./chunk-C44QQJR4.js";import{a as Y}from"./chunk-6YGTRKDT.js";import{e as I}from"./chunk-UR6MHSHU.js";var L=I(Y(),1);var B=I(R(),1),Te=3,Ze=60;function et(e){let n=e.cursor>=0?e.questions[e.cursor]:void 0;if(n?.risk==="high")return"high-risk \u2014 answer explicitly, or type 'defer' to leave the rest with the agent";let t=e.resolution.findIndex(Boolean);if(t>=0){let a=e.questions[t],r=a.options.find((i,p)=>p!==e.resolution[t].selected_index)?.label??a.options[0]?.label??"\u2026";return`changed your mind? \`${t+1}: ${r}\` re-answers q${t+1}`}let s=n??e.questions[0],u=s.options[0]?.label??"\u2026",c=s.allow_free_text?" \xB7 or your own words":"";return`e.g. \`1\` or \`${u}\`${c} \xB7 Enter takes recommended defaults`}function tt(e){return`[${e}]`}function nt({batch:e,i:n}){let t=e.resolution[n],s=t.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${t.form}: ${t.choice}${t.form==="assumed"?" (flagged)":" (you)"}`;return(0,B.jsx)(o,{color:l.dim,children:` ${s}`})}function rt({batch:e,i:n}){let t=e.questions[n],s=e.cursor===n&&!e.resolution[n],u=s?"\u203A":" ";return(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:s,children:` ${n+1} ${u} ${t.text} ${tt(t.risk)}`}),(0,B.jsx)(o,{color:l.dim,children:` why: ${t.rationale}`}),e.resolution[n]?(0,B.jsx)(nt,{batch:e,i:n}):(0,B.jsxs)(x,{flexDirection:"column",children:[t.multi_select?(0,B.jsx)(o,{color:l.dim,children:" note: multi-select not yet supported \u2014 pick the best single option"}):null,t.options.map((c,a)=>(0,B.jsx)(o,{children:` ${a+1}. ${c.label}${a===t.recommended_index?" \u2605 recommended":""}`},`o-${a}`)),t.allow_free_text?(0,B.jsx)(o,{color:l.dim,children:" (free text allowed \u2014 just type your own words)"}):null]})]})}function we({batch:e}){let{stdout:n}=U(),t=n?.columns??80,s=t<Ze,u=e.resolution.filter(y=>!y).length,c=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-Te)),a=e.questions.slice(c,c+Te),r=c,i=e.questions.length-c-a.length,p=et(e);s&&p.length>t-2&&(p=`${p.slice(0,Math.max(0,t-3))}\u2026`);let f=e.cursor>=0?`answering ${e.cursor+1} of ${e.questions.length}`:"all placed",g=(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:!0,children:`questions \xB7 ${u} pending \xB7 ${f}`}),r>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${r} above`}):null,a.map((y,C)=>(0,B.jsx)(rt,{batch:e,i:c+C},y.id)),i>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${i} more`}):null,(0,B.jsx)(o,{color:l.dim,children:p})]});return s?g:(0,B.jsx)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:g})}var A=I(R(),1),be=60,ot=e=>e.length<=be?e:`${e.slice(0,be-1)}\u2026`;function Z({item:e}){return(0,A.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((n,t)=>(0,A.jsx)(o,{dimColor:!0,children:`cite ${n.anchor??"conv"} \u2014 "${n.quote??""}"`},`cite-${t}`)),(e.depends_on_hint??[]).length>0&&(0,A.jsx)(o,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([n,t])=>(0,A.jsx)(o,{dimColor:!0,children:`${n}: ${t}`},`extra-${n}`))]})}function Q({heading:e,turn:n,items:t,expandedRef:s,total:u,compact:c,numbers:a,marks:r}){return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{bold:!0,children:`${e} \xB7 turn ${n} \xB7 ${u??t.length} proposed`}),t.map((i,p)=>{let f=i.matches_existing,g=f?f.cid?f.archived?` \u2248 matches ARCHIVED ${f.cid.slice(0,19)} \u2014 previously rejected${f.reason?`: "${f.reason}"`:""}`:` \u2248 matches ${f.cid.slice(0,19)}`:" \u2248overlap":"",y=r?.[p]?" \xB7 updated":"",C=c?` ${a?.[p]??p+1} \xB7 ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why?` \u2014 ${ot(i.why)}`:""}${g}${y}`:` ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why!==void 0?` \xB7 ${i.why}`:""}${g}`;return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{children:C}),s===i.temp_ref&&(0,A.jsx)(Z,{item:i})]},i.temp_ref)})]})}var Ce=I(R(),1),st=e=>e.summary??e.description??"";function it(e){return{temp_ref:e.temp_ref,title:e.title,badge:e.risk,why:st(e),matches_existing:e.matches_existing?e.matches_existing:null,cite:e.cite??[],depends_on_hint:e.depends_on_hint??[]}}function ve({turn:e,items:n,expandedRef:t,total:s,compact:u,numbers:c,marks:a}){return(0,Ce.jsx)(Q,{heading:"use-cases",turn:e,items:n.map(it),expandedRef:t,total:s,compact:u,numbers:c,marks:a})}var at={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},P=e=>at[e]??`${e}s`,ke=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,ee=e=>e.kind??"use-case",Se=e=>`${ee(e)}:${e.temp_ref}`;function Ie(e){let n=e,t=n.badge??e.risk??null,s=n.why??e.summary??e.description??null;return JSON.stringify([e.title,t,s,n.extra??null,e.depends_on_hint??null])}function Be(e){return e.filter(n=>n.role==="agent"&&typeof n.turnIndex=="number"&&Array.isArray(n.items)&&n.items.length>0)}function F(e){let n=new Map,t=1;for(let c of Be(e)){let a=new Set;for(let r of c.items){let i=Se(r);if(a.has(i))continue;a.add(i);let p=n.get(i);n.set(i,{num:p?.num??t++,ref:r.temp_ref,kind:ee(r),item:r,turnIndex:c.turnIndex,fingerprint:Ie(r)})}}let s=[...n.values()].sort((c,a)=>c.num-a.num),u=[];for(let c of s){let a=u.find(r=>r.kind===c.kind);a?a.count++:u.push({kind:c.kind,label:P(c.kind),count:1})}return{entries:s,byRef:n,counts:u}}function Re(e,n){let s=Be(e).find(m=>m.turnIndex===n);if(!s)return null;let u=e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<=n),c=F(u),a=F(e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<n)),r=[],i=new Map,p=new Map,f=new Map,g=new Set;for(let m of s.items){let w=Se(m);if(g.has(w))continue;g.add(w);let q=a.byRef.get(w),O=m.changed===!0,S=c.byRef.get(w).num,D=ee(m);if(q&&!O&&q.fingerprint===Ie(m)){i.set(D,(i.get(D)??0)+1);continue}let b=!!q||O,M=b?f:p;M.set(D,(M.get(D)??0)+1),r.push({item:m,num:S,updated:b})}let y=[...i.entries()].map(([m,w])=>({label:P(m),count:w})),C=[...[...p.entries()].map(([m,w])=>`${w} new ${w===1?ke(m):P(m)}`),...[...f.entries()].map(([m,w])=>`${w} updated ${w===1?ke(m):P(m)}`)].join(" \xB7 ");return{fresh:r,unchanged:y,headerStats:C}}var E=I(R(),1);function De({turnIndex:e,fresh:n,headerStats:t,unchangedTotal:s}){let u=[];for(let a of n){let r=a.item.kind??"use-case",i=u.find(p=>p.kind===r);i?i.rows.push(a):u.push({kind:r,rows:[a]})}let c=`design \xB7 turn ${e} \u2014 ${t||"no new items"}${s>0?` (${s} unchanged)`:""}`;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{bold:!0,children:c}),u.map(({kind:a,rows:r})=>{let i=r.filter(g=>!g.updated).length,p=r.length-i,f=[...i>0?[`${i} new`]:[],...p>0?[`${p} updated`]:[]].join(" \xB7 ");return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{color:l.dim,children:`${P(a).toLowerCase()} \xB7 ${f}`}),r.map(({item:g,num:y,updated:C})=>{let m=g;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsxs)(o,{children:[(0,E.jsx)(o,{children:` ${y} \xB7 ${g.title}`}),m.badge?(0,E.jsx)(o,{color:l.dim,children:` \xB7 ${m.badge}`}):null,C?(0,E.jsx)(o,{color:l.dim,children:" \xB7 updated"}):null]}),m.why?(0,E.jsx)(o,{color:l.dim,children:` ${m.why}`}):null]},`${a}:${g.temp_ref}`)})]},a)})]})}var d=I(R(),1);function ct(e){let n=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",t=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${t}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${n}${t}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${n}${t}`}function Ee({block:e,annotations:n}){switch(e.kind){case"banner":return(0,d.jsx)(o,{color:l.dim,children:`\u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,d.jsxs)(x,{children:[(0,d.jsx)(o,{color:l.orange,children:"\u276F "}),(0,d.jsx)(o,{children:e.text})]});case"note":return(0,d.jsx)(o,{color:l.dim,children:e.text});case"agent":return(0,d.jsx)(xe,{text:e.text});case"thinking":return(0,d.jsx)(o,{color:l.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,d.jsx)(o,{color:l.dim,children:` ${H({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,d.jsx)(o,{color:l.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let t=n??null,s=t?t.fresh.map(r=>r.item):e.items,u=t?t.fresh.map(r=>r.num):void 0,c=t?t.fresh.map(r=>r.updated):void 0,a=s.some(r=>!!r.kind);return(0,d.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[a?(0,d.jsx)(De,{turnIndex:e.turnIndex,fresh:t?t.fresh:s.map((r,i)=>({item:r,num:i+1,updated:!1})),headerStats:t?.headerStats??"",unchangedTotal:(t?.unchanged??[]).reduce((r,i)=>r+i.count,0)}):e.heading==="use-cases"?(0,d.jsx)(ve,{turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}):(0,d.jsx)(Q,{heading:e.heading,turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}),t&&t.unchanged.length>0&&(0,d.jsx)(o,{color:l.dim,children:` \u22EE unchanged: ${t.unchanged.map(r=>`${r.count} ${r.label}`).join(" \xB7 ")} \u2014 /view to browse`})]})}case"answer":return(0,d.jsx)(o,{color:l.dim,children:ct(e.receipt)});case"commit":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:e.ok?l.green:l.red,children:`${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:` \u26A0 ${t}`},`w-${s}`))]});case"error":return(0,d.jsxs)(fe,{variant:"error",paddingX:1,children:[(0,d.jsx)(o,{color:l.red,children:e.title}),e.detail.map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:t},`d-${s}`))]});case"interrupted":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:l.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,d.jsx)(o,{color:l.dim,children:e.detail}):null]});case"pause":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,d.jsx)(o,{color:l.dim,children:`expires: ${e.expires_at}`}):null,(0,d.jsx)(o,{children:`resume: ${e.resume}`}),e.messageForm?(0,d.jsx)(o,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{bold:!0,children:"session summary"}),e.lines.map((t,s)=>(0,d.jsx)(o,{children:` ${t}`},`s-${s}`))]})}}var W=I(Y(),1);var Oe=I(R(),1),Le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],te="ctrl+t thinking \xB7 ctrl+c pause";function Ae(e,n){if(e.length<=n)return e;if(n<=1)return"\u2026";let t=Math.ceil((n-1)/2),s=Math.floor((n-1)/2);return`${e.slice(0,t)}\u2026${s>0?e.slice(-s):""}`}function _e({streaming:e,verb:n,subject:t,turn:s,pendingCount:u,lastActivity:c,workingLabel:a,creditsTotal:r}){let{stdout:i}=U(),p=i?.columns??80,[f,g]=(0,W.useState)(0),y=(0,W.useRef)(null);(0,W.useEffect)(()=>{e&&y.current===null&&(y.current=Date.now()),e||(y.current=null)},[e]),pe(()=>g(b=>b+1),e?1e3:null);let C=[];if(e){let b=y.current?Math.floor((Date.now()-y.current)/1e3):0;C.push(`${Le[f%Le.length]} ${b}s ${a??c??"waiting for model"}`)}C.push(n),s&&C.push(`turn ${s}`),r!==void 0&&C.push(`${r.toFixed(1)} cr`);let m=u?`[${u} pending]`:null,w=" \xB7 ",O=[...C,...m?[m]:[]].join(w).length,S,D=[...C,...t?[t]:[],...m?[m]:[],te].join(w);if(D.length<=p)S=D;else{let b=p-O-(t?w.length:0)-w.length-te.length;if(t&&b>=8)S=[...C,Ae(t,b),...m?[m]:[],te].join(w);else{let M=p-O-(t?w.length:0);S=[...C,...t&&M>=4?[Ae(t,M)]:[],...m?[m]:[]].join(w)}}return(0,Oe.jsx)(o,{color:l.dim,children:S})}var V=I(Y(),1);function ne({onToggleThinking:e,onCtrlC:n,explorer:t}){let u=(0,V.useRef)(null),c=(0,V.useRef)(""),a=()=>{u.current&&clearTimeout(u.current),u.current=null,c.current=""};return(0,V.useEffect)(()=>a,[]),me((r,i)=>{if(i.ctrl&&r==="t"){e();return}if(i.ctrl&&r==="c"){n();return}if(!i.ctrl&&r.includes("")){n();return}if(!i.ctrl&&r.includes("")){e();return}if(t&&t.isOpen()){let p=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{a(),t.onBack()},150)};if(u.current){if(i.upArrow||i.downArrow||i.return){a(),i.return?t.onEnter():t.onMove(i.upArrow?-1:1);return}if(c.current+=r,c.current==="["){p();return}let f=c.current;a();let g=/^\[([AB])/.exec(f);if(g){t.onMove(g[1]==="A"?-1:1);return}t.onBack();return}if(i.upArrow){t.onMove(-1);return}if(i.downArrow){t.onMove(1);return}if(i.return){t.onEnter();return}if(i.escape){c.current="",p();return}if(r.length>=2&&!i.ctrl&&!i.meta){t.onClose();return}return}}),null}var v=I(R(),1),re=(e,n)=>Math.max(0,Math.min(n,e));function X(e,n,t){switch(n.type){case"move":return{...e,cursor:re(e.cursor+n.delta,Math.max(0,t-1))};case"enter":return e.level==="list"?{...e,level:"detail"}:e;case"back":return e.level==="detail"?{...e,level:"list"}:null}}var Pe={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function qe(e,n){if(e.level==="detail")return{level:"detail",cursor:re(e.num-1,Math.max(0,n.entries.length-1))};if(e.section){let t=n.entries.findIndex(s=>Pe[s.kind]===e.section);if(t>=0)return{level:"list",cursor:t}}return{level:"list",cursor:0}}function lt(e){let n=[];for(let t of e.entries){let s=n.find(u=>u.kind===t.kind);s?s.entries.push(t):n.push({kind:t.kind,entries:[t]})}return n}var Me=3;function ut({items:e,cursor:n,verb:t}){let s=`view \xB7 ${t} so far \xB7 ${e.counts.map(c=>`${c.count} ${c.count===1?c.label.replace(/s$/,""):c.label}`).join(" \xB7 ")}`,u=e.entries[n];return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:s}),lt(e).map(({kind:c,entries:a})=>{let r=u?.kind===c,i=r?a.findIndex(y=>y.ref===u.ref):-1,p=r?re(i-1,Math.max(0,a.length-Me)):0,f=a.slice(p,p+(r?Me:1)),g=a.length-f.length;return(0,v.jsxs)(x,{flexDirection:"column",children:[(0,v.jsx)(o,{color:l.dim,children:`${Pe[c]??P(c)} \xB7 ${a.length}`}),f.map(y=>{let C=r&&y.ref===u.ref,m=y.item.badge;return(0,v.jsxs)(o,{children:[(0,v.jsx)(o,{color:l.generateAccent,children:C?"\u203A ":" "}),(0,v.jsx)(o,{children:`${y.num} \xB7 ${y.item.title}`}),m?(0,v.jsx)(o,{color:l.dim,children:` \xB7 ${m}`}):null]},`${y.kind}:${y.ref}`)}),g>0&&(0,v.jsx)(o,{color:l.dim,children:` \u22EE ${g} more`})]},c)}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back to chat"})]})}function mt({items:e,cursor:n}){let t=e.entries[n];if(!t)return(0,v.jsx)(o,{color:l.dim,children:"nothing to show"});let s=t.item;return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:`view \xB7 ${t.kind} ${t.num} of ${e.entries.length}`}),(0,v.jsx)(o,{children:t.item.title}),s.badge?(0,v.jsx)(o,{color:l.dim,children:`kind: ${s.badge}`}):null,s.why?(0,v.jsx)(o,{color:l.dim,children:s.why}):null,(0,v.jsx)(Z,{item:t.item}),(0,v.jsx)(o,{color:l.dim,children:"view-only \u2014 approvals happen in chat"}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Ne({items:e,state:n,verb:t}){return n.level==="list"?(0,v.jsx)(ut,{items:e,cursor:n.cursor,verb:t}):(0,v.jsx)(mt,{items:e,cursor:n.cursor})}var Ue=[{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"}],dt={"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 We(e){let n=(e??"").trim().toLowerCase();if(!n)return{level:"list"};if(/^\d+$/.test(n)){let s=parseInt(n,10);return s>=1?{level:"detail",num:s}:{error:"items are numbered from 1 \u2014 /view 1"}}let t=dt[n];return t?{level:"list",section:t}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var k=I(R(),1),pt=6,Ke=12;function Fe(e,n,t){let s=Math.max(20,n),u=[];for(let a of e.split(`
3
- `)){if(a.length<=s){u.push(a);continue}let r="";for(let i of a.split(" "))r&&r.length+1+i.length>s?(u.push(r),r=i):r=r?`${r} ${i}`:i;u.push(r)}let c=Math.max(0,u.length-t);return{body:u.slice(-t).join(`
4
- `),hidden:c}}var ft='chat with the agent \u2014 "/" for commands';function un({controller:e,verb:n="extract",onCtrlC:t}){let[,s]=(0,L.useState)(0),[u,c]=(0,L.useState)(!1),[a,r]=(0,L.useState)(null),[i,p]=(0,L.useState)(null),f=(0,L.useRef)(null),g=$=>{f.current=$,p($)},y=ge(),{stdout:C}=U(),m=C?.columns??80,w=(0,L.useRef)(0),q=(0,L.useRef)(0),O=(0,L.useRef)(null);O.current||(O.current=new de(null)),(0,L.useEffect)(()=>{let $=()=>{let h=e.state.ledger;for(let _=w.current;_<h.length;_++){let N=h[_],Ye=N.kind==="turn"?Re(e.state.turns,N.turnIndex):void 0;y.append((0,k.jsx)(Ee,{block:N,annotations:Ye},`lg-${_}`))}w.current=h.length};$();let T=e.subscribe(()=>{$();let h=e.state;f.current&&(h.pending||h.status==="pausing")&&(g(null),h.pending&&r("questions arrived \u2014 back to chat")),s(_=>_+1)});return s(h=>h+1),T},[e,y]);let{thinking:S,status:D,pending:b,confirm:M,ledger:oe,activeTurn:se,stream:z,notice:j}=e.state,G=S.activity[S.activity.length-1],ie=G&&G.status==="started"?G:null,ae=z!=null&&z.text.length>0,Ve=ae?`\u2237 thinking \xB7 ${S.thinkingLog.length} block${S.thinkingLog.length===1?"":"s"} \xB7 ctrl+t to inspect`:S.liveThinking.length>0?`\u273B ${Fe(S.liveThinking,m-4,1).body}`:D==="streaming"?"\u2237 thinking\u2026 (ctrl+t to show)":"\u2237 thinking complete (ctrl+t to view)",je=S.liveThinking.length>0||u&&S.thinkingLog.length>0,He=Fe(S.liveThinking||S.thinkingLog.map($=>$.text).join(`
5
- `),m-6,Ke),ce=ae?z.text.split(`
6
- `).slice(-pt):[];se&&(q.current=se.turnIndex);let Qe=b?b.resolution.filter($=>!$).length:0,le;for(let $=oe.length-1;$>=0;$--){let T=oe[$];if(T.kind==="banner"&&!T.text.startsWith("kane")){le=T.text;break}}let K=S.activity[S.activity.length-1],Xe=K?K.status==="decision"?K.label:$e({name:K.name,status:K.status}):void 0,ze=D==="streaming"&&!b,Ge=b?`answering ${Math.max(0,b.cursor)+1} of ${b.questions.length} \u2014 option number, label, or your own words`:ft,J=t??(()=>e.requestPause()),Je=$=>{let T=We($);if("error"in T){r(T.error);return}let h=F(e.state.turns);if(h.entries.length===0){r("nothing proposed yet \u2014 the first turn is still coming");return}if(T.level==="detail"&&T.num>h.entries.length){r(`no item ${T.num} \u2014 the set has ${h.entries.length} item${h.entries.length===1?"":"s"}`);return}g(qe(T,h))},ue=(0,k.jsx)(_e,{streaming:D==="streaming"||D==="working",verb:n,subject:le,turn:q.current||void 0,pendingCount:Qe,lastActivity:Xe,workingLabel:D==="working"?e.state.workingLabel:void 0,creditsTotal:e.state.credits?.total});if(i){let $=F(e.state.turns),T=$.entries.length;return(0,k.jsxs)(x,{flexDirection:"column",children:[(0,k.jsx)(ne,{onToggleThinking:()=>c(h=>!h),onCtrlC:J,explorer:{isOpen:()=>f.current!==null,onClose:()=>{g(null),r("closed the explorer \u2014 your text didn't send, retype to chat"),setTimeout(()=>s(h=>h+1),0)},onMove:h=>g(f.current&&X(f.current,{type:"move",delta:h},T)),onEnter:()=>g(f.current&&X(f.current,{type:"enter"},T)),onBack:()=>{g(f.current&&X(f.current,{type:"back"},T)),setTimeout(()=>s(h=>h+1),0)}}}),(0,k.jsx)(Ne,{items:$,state:i,verb:n}),(j??a)&&(j??a).split(`
7
- `).map((h,_)=>(0,k.jsx)(o,{color:l.orange,children:h},`nt-${_}`)),ue]})}return(0,k.jsxs)(x,{flexDirection:"column",children:[(0,k.jsx)(ne,{onToggleThinking:()=>c($=>!$),onCtrlC:J}),je&&(u?(0,k.jsx)(ye,{thinking:He.body,expanded:!0,thinkingDone:D!=="streaming",maxLines:Ke+1}):(0,k.jsx)(o,{color:l.dim,children:Ve})),ie&&(0,k.jsx)(o,{dimColor:!0,children:`${H({name:ie.name,status:"started"})}\u2026`}),ce.length>0&&(0,k.jsx)(x,{flexDirection:"column",children:ce.map(($,T)=>(0,k.jsx)(o,{children:$},`st-${T}`))}),b&&(0,k.jsx)(we,{batch:b}),M&&(0,k.jsx)(o,{color:"yellow",children:M.prompt}),(j??a)&&(j??a).split(`
8
- `).map(($,T)=>(0,k.jsx)(o,{color:l.orange,children:$},`nt-${T}`)),D==="pausing"?(0,k.jsx)(o,{color:l.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}):(0,k.jsx)(he,{history:O.current,placeholder:Ge,accent:l.generateAccent,submitVerb:b?"answer":"send",submitEmpty:!!b,inert:ze,commands:Ue,footerBindings:[{keys:"\u21B5",label:b?"answer":"send"},{keys:"\u2191\u2193",label:"history"},{keys:"ctrl+t",label:"thinking"},{keys:"ctrl+c",label:"pause"}],onSubmit:$=>{let T=$.trim();if(!T){b&&e.submit("");return}if(r(null),T.startsWith("/")){let[h="",..._]=T.slice(1).split(/\s+/),N=_.join(" ");if(!h){r('type "/" then a command \u2014 /view, /explain, /pause, /done');return}switch(h.toLowerCase()){case"view":Je(N);return;case"explain":if(!N){r("usage: /explain <ref> \u2014 e.g. /explain guest-checkout");return}e.explainRef(N);return;case"pause":J();return;case"done":case"exit":e.completeSession();return;default:r(`unknown command "/${h}" \u2014 try /view, /explain, /pause, /done${b?`
9
- to answer with a literal "/", quote it: "/api/v2"`:""}`);return}}e.submit(T)}}),ue]})}export{un as ChatSurface,Fe as tailVisualRows};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-ZGH7T32S.js";import"./chunk-VL2UA23Z.js";import"./chunk-LV5VRSPI.js";import"./chunk-2U5DZUC7.js";import"./chunk-EK2B2LZK.js";import"./chunk-4G4HPMR2.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-MHQ6A2QZ.js";import"./chunk-FU3OQXFH.js";import"./chunk-YCCUBQY4.js";import"./chunk-U3JB76QP.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-VE3SUJMA.js";import"./chunk-L4AUCQVO.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.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-DCYTRYR2.js";import"./chunk-44QUA6GV.js";import"./chunk-IDDVO4UV.js";import"./chunk-EK2B2LZK.js";import"./chunk-M6DX4ENH.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-YIOWO6WS.js";import"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import"./chunk-DFS4RMVP.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
@@ -1,3 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as H,b as V,c as J,d as K}from"./chunk-DM2GL24Z.js";import"./chunk-6PS65QFF.js";import{b as L,d as F}from"./chunk-VJUIW2ES.js";import{d as z}from"./chunk-KHDUQ33H.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";var ee=new Set(["approve","edit","reject"]);function te(i,t){return`chatop:${t}:${i.target??"new"}:${i.op}:${i.seq}`}function ne(i,t,k,c){let a=te(i,t),m=i.payload;switch(i.op){case"approve":return{kind:"approve",target:i.target,expectedCid:i.expected_cid,eventId:a};case"edit":{let{reason:r,...h}=m;return{kind:"edit",target:i.target,expectedCid:i.expected_cid,edit:h,reason:r,eventId:a}}case"enhance":return{kind:"enhance",target:i.target,expectedCid:i.expected_cid,edges:m.edges??[],eventId:a};case"reject":return{kind:"reject",target:i.target,expectedCid:i.expected_cid,reason:m.reason??"",redirectTo:m.redirect_to,eventId:a};case"add":{let r=m.proposal_item??{},h=String(r.label??"");if(!k.mint_gate.includes(h))throw new Error(`GATED_LABEL: cannot mint "${h}" (gate: ${k.mint_gate.join(", ")})`);let d=r.cite??{},u=r.conv_source_id??c;if(!u||typeof d.turn!="number"||!d.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:h,content:r.content??{},cite:{turn:d.turn,quote:d.quote},convSourceId:u,rationale:r.rationale,eventId:a}}}}function X(i,t,k={}){let c=k.turn??0,a=[],m=[];for(let d of i)(d.op==="add"||d.op==="enhance")&&m.push(d);let r=new Map;for(let d of i){if(!ee.has(d.op)||!d.target)continue;let u=r.get(d.target)??[];u.push(d),r.set(d.target,u)}for(let[d,u]of r){let _=Math.max(...u.map(y=>y.seq)),C=u.filter(y=>y.seq===_);if(C.length>1){a.push({target:d,seq:_,kinds:C.map(y=>y.op)});continue}m.push(C[0])}return{chatOps:m.sort((d,u)=>d.seq-u.seq).map(d=>ne(d,c,t,k.convSourceId)),ambiguous:a}}function re(i,t){let k=i.trim();if(k==="")return{kind:"defaults"};if(/^defer$/i.test(k))return{kind:"defer-all"};let c=t.cursor,a=k,m=/^(\d+):\s*(.*)$/.exec(k);if(m){let u=Number(m[1]);if(u<1||u>t.questions.length)return{kind:"invalid",target:null,message:`no question ${u} \u2014 this batch has ${t.questions.length}`};if(c=u-1,a=m[2].trim(),!a)return{kind:"invalid",target:c,message:`say what to answer \u2014 e.g. \`${u}: yes\``}}if(c<0||c>=t.questions.length)return{kind:"invalid",target:null,message:"no pending question to answer"};let r=t.questions[c],h=/^"(.*)"$/.exec(a);if(h)return r.allow_free_text?{kind:"free",target:c,text:h[1]}:{kind:"invalid",target:c,message:`question ${c+1} takes an option (1-${r.options.length}) \u2014 free text isn't allowed here`};if(r.multi_select&&/^\d+(\s+\d+)+$/.test(a)){let u=a.split(/\s+/).map(Number);if(u.every(_=>_>=1&&_<=r.options.length))return{kind:"multi",target:c,indices:u.map(_=>_-1)}}if(/^\d+$/.test(a)){let u=Number(a);if(u>=1&&u<=r.options.length)return{kind:"option",target:c,index:u-1}}let d=r.options.findIndex(u=>u.label.toLowerCase()===a.toLowerCase());return d>=0?{kind:"option",target:c,index:d}:r.allow_free_text?{kind:"free",target:c,text:a}:{kind:"invalid",target:c,message:`question ${c+1} takes an option \u2014 type 1-${r.options.length} or an option name`}}function Y(i){let t=i.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function ie(i){return i.use_cases??[]}function se(i){let t=[],k=[],c=(r,h)=>{h.length!==0&&(k.push(r),t.push(...h))},a=r=>typeof r=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(r)?r:null,m=r=>{let h=a(r.automates)??"1 scenario",d=r.verifies??[],u=d.map(a).filter(y=>y!==null).slice(0,2),_=d.length-u.length,C=u.length?`${u.join(" ")}${_>0?` +${_}`:""}`:`${d.length} ACs`;return`covers ${h} \xB7 verifies ${C}`};return c("acs",(i.acs??[]).map(r=>({temp_ref:r.temp_ref,title:r.text,kind:"ac",badge:String(r.kind),extra:{...r.expected_answer?{expects:`${String(r.expected_answer.operator??"")} \xB7 ${String(r.expected_answer.operand??"")}`}:{},"scoped to":r.scoped_to??"(use-case)"}}))),c("scenarios",(i.scenarios??[]).map(r=>({temp_ref:r.temp_ref,title:r.title,kind:"scenario",badge:r.case_type,why:r.intent,depends_on_hint:r.depends_on??[],extra:{technique:r.technique_notes}}))),c("tests",(i.tests??[]).map(r=>({temp_ref:r.temp_ref,title:r.title,kind:"test",why:m(r),depends_on_hint:r.reuses??[],extra:{automates:String(r.automates??"?"),verifies:(r.verifies??[]).join(", "),check:r.check?`${String(r.check.kind)} vs ${String(r.check.verified_against)}`:"?"}}))),c("gaps",(i.gaps??[]).map(r=>({temp_ref:r.temp_ref??r.ref??"?",title:String(r.question?.header??r.kind),kind:"gap",badge:r.kind,why:r.risk_rationale}))),{items:t,heading:k.join(" + ")||"design"}}function ge(i={}){let t={turns:[],thinking:V(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null},k=e=>{let n=[],o=e.minted.map(p=>p.slug).filter(Boolean);o.length&&n.push(`added ${o.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},c=[];i.onRender&&c.push(i.onRender);let a=0,m=0,r=null,h=null,d=null,u=[],_=0,C=e=>{if(!(!d||!i.contextDir||!e.trim()))try{let n=i.refreshGraph?.()??i.graph;if(!n)return;F({contextDir:i.contextDir,graph:n,sourceId:d,text:e,by:i.by??{kind:"human",id:"owner"}})}catch{}},y=e=>{if(!d||!i.contextDir)return;let n=i.refreshGraph?.()??i.graph,o=n?.heads.get(d),s=n?.convChains.get(d);if(!n||typeof o!="string"||!s)return;let p=n.getNode(o)?.content?.blob,f=typeof p=="string"?z(i.contextDir,p)?.toString("utf8")??"":"";if(f)for(let v of e){if(v.kind!=="add"||v.convSourceId!==d)continue;let T=L(f,v.cite.turn);if(!(T!==null&&T.includes(v.cite.quote)))for(let $=s.turns;$>=1;$--){let D=L(f,$);if(D!==null&&D.includes(v.cite.quote)){v.cite={...v.cite,turn:$};break}}}},M=null,j=new Map,P=new Map,E=null,x=()=>{R&&(clearTimeout(R),R=null);for(let e of c)e()},R=null,N=()=>{R||(R=setTimeout(()=>{R=null;for(let e of c)e()},80))},l=e=>{t.ledger.push(e)},I=()=>{t.activeTurn&&(t.activeTurn=null)},Q=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),B=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,p)=>{let f=e.resolution[p];return f.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:f.free_text!=null?{id:s.id,selected_index:null,free_text:f.free_text}:{id:s.id,selected_index:f.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let o=M;M=null,o?.(n)},A=(e,n)=>{let o=t.pending,s=o.questions[e],p=o.resolution[e];o.resolution[e]=n;let f=Y(s);p?l({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:f,choice:Q(s,n),prev:p.choice}}):n.form==="deferred"?l({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:f}}):l({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:f,choice:Q(s,n)}})},O=()=>{let e=t.pending;e&&(e.questions.forEach((n,o)=>{e.resolution[o]||A(o,{form:"deferred",selected_index:null,free_text:null,choice:""})}),B())},G=e=>({questions:e,cursor:0,resolution:e.map(()=>null)}),Z=e=>{let n=t.pending;t.notice=void 0;let o=re(e,n);switch(o.kind){case"invalid":t.notice=o.message;return;case"defaults":{let s=!1;if(n.questions.forEach((p,f)=>{if(!n.resolution[f]){if(p.risk==="high"){s=!0;return}A(f,{form:"assumed",selected_index:p.recommended_index,free_text:null,choice:p.options[p.recommended_index]?.label??"?"})}}),s){n.cursor=n.questions.findIndex((p,f)=>!n.resolution[f]),t.notice="high-risk questions need an explicit answer (or type 'defer' to leave them with the agent)";return}break}case"defer-all":O();return;case"option":{let s=n.questions[o.target];A(o.target,{form:"answered",selected_index:o.index,free_text:null,choice:s.options[o.index]?.label??String(o.index+1)});break}case"free":A(o.target,{form:"answered",selected_index:null,free_text:o.text,choice:o.text});break;case"multi":{let s=n.questions[o.target],p=o.indices[0];A(o.target,{form:"answered",selected_index:p,free_text:null,choice:s.options[p]?.label??String(p+1)}),t.notice="multi-select not yet supported end-to-end \u2014 sent your first choice";break}}B()};return{state:t,explainRef(e){if(!i.explain||!i.graph||i.contextDir===void 0){l({kind:"note",text:"explain isn't available here"}),x();return}let n=i.explain(i.contextDir,i.graph,e),o=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
3
- `):`unknown ref: ${e}`;l({kind:"note",text:o}),x()},subscribe(e){return c.push(e),()=>{let n=c.indexOf(e);n>=0&&c.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),t.pending){Z(e),x();return}if(!r){t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",x();return}for(t.notice=void 0,t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),C(e),t.status="streaming",t.error=void 0,m+=1;u.length>0;)m+=1,r({type:"user_message",message_id:`u${m}-receipt`,text:u.shift()});r({type:"user_message",message_id:`u${m}`,text:e}),x()},attachSender(e){r=e},attachOnCommitted(e){h=e},attachConversationSource(e){d=e},holdReceipt(e){u.push(e),l({kind:"note",text:e}),x()},drainHeldReceipts(){return u.splice(0,u.length)},note(e){l({kind:"note",text:e}),x()},registerAliases(e){for(let n of e)P.set(n.ref,n.cid)},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}x()},ledger(e){(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&I(),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),l(e),x()},completeSession(){O(),r?.({type:"session_complete"}),t.status="idle",x()},requestPause(){O(),t.status="pausing";let e=r;Promise.resolve().then(()=>e?.({type:"pause"})),x()},ask(e){return t.pending=G(e),j=new Map(e.map((n,o)=>[n.id,o+1])),t.status="awaiting-input",x(),new Promise(n=>{M=n})},noteCoercion(e,n){l({kind:"answer",receipt:{form:"assumed",qNum:j.get(e.id)??0,stub:Y(e),choice:n,note:"your typed answer couldn't be used here"}}),x()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=K(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)l({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")l({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let o=`\xB7 ${J(e)}`,s=t.ledger[t.ledger.length-1];s&&s.kind==="note"&&s.text===o||l({kind:"note",text:o})}}if(e.type==="reasoning_delta"){N();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits},l({kind:"usage",credits:e.credits,total:e.total_credits});break;case"text_delta":{let n=E;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(E={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},N();return}case"progress":break;case"proposal":{a+=1,I(),t.stream=null;let n=ie(e.proposal),o=i.dedupFlags?.(e.proposal);if(o)for(let s of n){let p=o.get(s.temp_ref);p&&(s.matches_existing=p)}t.turns.push({role:"agent",turnIndex:a,items:n,text:e.narrative}),e.narrative&&l({kind:"agent",text:e.narrative}),t.activeTurn={turnIndex:a,heading:"use-cases",items:n},l({kind:"turn",turnIndex:a,heading:"use-cases",items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{a+=1,I(),t.stream=null;let{items:n,heading:o}=se(e.design);l({kind:"banner",text:`phase: ${o}`}),t.turns.push({role:"agent",turnIndex:a,items:n,itemsHeading:o,text:e.narrative}),e.narrative&&l({kind:"agent",text:e.narrative}),t.activeTurn={turnIndex:a,heading:o,items:n},l({kind:"turn",turnIndex:a,heading:o,items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=G(e.questions),t.status="awaiting-input";break;case"chat_ops":{a+=1,I(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,o=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",p=i.refreshGraph?.()??i.graph,f=g=>P.get(g)??g,v=o.map(g=>{if(!g.target)return g;let b=f(g.target),w=g.expected_cid;if(w==null&&p){let U=p.resolve(b);U&&(w=p.tipOf(U.cid))}let q=g.payload?.redirect_to,S=q&&f(q);return b===g.target&&w===g.expected_cid&&S===q?g:{...g,target:b,expected_cid:w,...S!==q?{payload:{...g.payload,redirect_to:S}}:{}}}),T;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");T=X(v,i.descriptor??{mint_gate:[]},{turn:a,...d?{convSourceId:d}:{}})}catch(g){t.error=g instanceof Error?g.message:String(g),t.turns.push({role:"agent",turnIndex:a,text:s,narration:t.error}),s&&l({kind:"agent",text:s}),l({kind:"error",title:t.error,detail:[]});break}let{chatOps:$,ambiguous:D}=T;if(D.length>0){let g=D[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${g.kinds.filter(b=>b!=="edit").join("/")} on ${g.target}?`},t.turns.push({role:"agent",turnIndex:a,text:s}),s&&l({kind:"agent",text:s});break}if(s&&l({kind:"agent",text:s}),y($),i.commitChatTurn&&$.length>0){let g=i.commitChatTurn({contextDir:i.contextDir??"",graph:i.refreshGraph?.()??i.graph,ops:$,by:i.by??{kind:"human",id:"owner"},...i.descriptor?.mint_gate?{mintable:i.descriptor.mint_gate}:{}});if(g.errors)t.error=g.errors.map(b=>b.detail).join("; "),t.turns.push({role:"agent",turnIndex:a,text:s}),l({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:g.errors.map(b=>`${b.code}: ${b.detail}`)});else{g.applied.length>0&&i.session?.markApplied(g.applied);let b=k(g);t.turns.push({role:"agent",turnIndex:a,text:s,narration:b}),l({kind:"commit",ok:!0,line:`committed: ${b}`});let w=i.refreshGraph?.();if(w&&h&&h(w),w)try{_+=1;let W=i.descriptor?.mint_gate?.includes("usecase")?"extract":"design",q=H({verb:W,commitN:_,phase:"chat",committed:g.minted.map(S=>({cid:S.cid,...S.slug?{logical_id:S.slug}:{}}))},w);u.push(q.text),l({kind:"note",text:q.text})}catch{}}}else t.turns.push({role:"agent",turnIndex:a,text:s});C(s);break}case"done":case"session_complete":I(),t.status="idle",r=null;break;case"error":I(),t.stream=null,t.status="idle",t.error=e.message,r=null,l({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}x()}}}export{ge as makeChatController,re as parseAnswerInput,Y as questionStub};
@@ -1,3 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as u}from"./chunk-6PS65QFF.js";function g(t,e){return t.byLabel(e).filter(({cid:n})=>!t.superseded.has(n)&&t.trust.get(n)!=="archived")}function f(t,e,n){for(let[a,c]of t.names)if(c===e&&!t.superseded.has(c))return a;return String(n.title??n.text??e)}function v(t,e){let n=g(t,"scenario");if(e){let i=t.resolve(e);if(i){let s=new Set([i.cid,i.tip,t.tipOf(i.cid)]);n=n.filter(({cid:o})=>t.edgesFrom(o).some(d=>d.type==="belongs_to"&&(s.has(d.dst)||s.has(t.tipOf(d.dst)))))}}let a=new Set;for(let{cid:i}of n)a.add(i),a.add(t.tipOf(i));let c=g(t,"test").filter(({cid:i})=>!e||t.edgesFrom(i).some(s=>s.type==="automates"&&(a.has(s.dst)||a.has(t.tipOf(s.dst))))),r=new Set;for(let i of c)for(let s of t.edgesFrom(i.cid))s.type==="automates"&&r.add(t.tipOf(s.dst));let m=n.filter(({cid:i})=>!r.has(i)&&!r.has(t.tipOf(i))).map(({cid:i,content:s})=>f(t,i,s));return{live_scenarios:n.length,live_tests:c.length,missing:m}}function l(t){return t.length<=12?t.join(", "):`${t.slice(0,12).join(", ")} +${t.length-12} more`}function b(t,e){let n=t.committed.length===0?"committed: nothing new":`committed: ${l(t.committed.map(o=>o.temp_ref?`${o.temp_ref} \u2192 ${o.logical_id??o.cid}`:o.logical_id??o.cid))}`,a=[];t.reused&&a.push(`reused: ${t.reused}`),t.rejected?.length&&a.push(`rejected: ${l(t.rejected.map(o=>`${o.ref} (${o.reason})`))}`),t.warnings?.length&&a.push(`warnings: ${l(t.warnings)}`);let c=[`RECEIPT (commit ${t.commitN}, ${t.phase})`,n,...a],r,m;if(t.verb==="design")r=v(e,t.ucRef),c.push(`parity: ${r.live_scenarios} scenario(s) live \xB7 ${r.live_tests} test(s) live`+(r.missing.length?` \xB7 missing tests: ${l(r.missing)}`:"")),m=r.missing.length>0?`next: emit tests for the ${r.missing.length} scenario(s) listed \u2014 1:1, strict. Never re-emit committed items; reference them by the ids above.`:"next: every live scenario has a test. Address open gaps, or finish.";else{let o=g(e,"usecase").length;c.push(`parity: ${o} use-case(s) live`),m="next: refine via chat ops using the ids above. Never re-emit committed items."}c.push(m);let i=c.join(`
3
- `);for(;Buffer.byteLength(i,"utf8")>6e3;)i=i.slice(0,Math.floor(i.length*.9))+"\u2026";let s={type:"receipt",verb:t.verb,commit_n:t.commitN,phase:t.phase,committed:t.committed,reused:t.reused??0,rejected:t.rejected??[],warnings:t.warnings??[],...r?{parity:{live_scenarios:r.live_scenarios,live_tests:r.live_tests,missing:r.missing}}:{},next:m};return{text:i,event:s}}function A(){return{currentAttempt:null,liveThinking:"",thinkingLog:[],activity:[]}}var p={dedup_candidate:"checking a possible duplicate",ambiguity:"asking to resolve an ambiguity",validation_repair:"repairing a validation failure",finalize:"finalizing the proposal"};function h(t){return p[t.reason_code]??t.reason_code.replace(/_/g," ")}function y(t){let e=u({name:t.name});return t.status==="started"?`\u2192 ${e}\u2026`:t.status==="error"||t.status==="aborted"?`\u2717 ${e}`:`\u2713 ${e}`}function _(t,e){return e.turn_id!==t.turn_id?e.turn_id<t.turn_id:e.attempt<t.attempt}function x(t,e){let n=t.currentAttempt;if(n===null||n.turn_id!==e.turn_id||n.attempt!==e.attempt){if(n!==null&&_(n,e))return t;t={...t,currentAttempt:{turn_id:e.turn_id,attempt:e.attempt},liveThinking:""}}switch(e.type){case"reasoning_delta":return{...t,liveThinking:t.liveThinking+e.text};case"reasoning_done":return e.present?{...t,thinkingLog:[...t.thinkingLog,{text:t.liveThinking,tookMs:e.took_ms}],liveThinking:""}:{...t,liveThinking:""};case"tool_activity":return{...t,activity:[...t.activity,{name:e.name,status:e.status,label:y(e)}]};case"decision_activity":return{...t,activity:[...t.activity,{name:e.action,status:"decision",label:h(e)}]}}}export{b as a,A as b,h as c,x as d};
@@ -1,14 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as Ie,f as Te,g as Ue}from"./chunk-WM5QHLAP.js";import{b as Me,f as Fe,g as je,h as Be}from"./chunk-FXPPQL4D.js";import{a as Ce}from"./chunk-DM2GL24Z.js";import{a as Oe,b as Pe}from"./chunk-JFAFKHDX.js";import{e as L,f as re}from"./chunk-FTD3B7QA.js";import{c as Ee}from"./chunk-VJUIW2ES.js";import{b as Ae}from"./chunk-YKTYVJBN.js";import{a as Ne}from"./chunk-Z56AWGVY.js";import{a as ee,d as te}from"./chunk-KHDUQ33H.js";import{a as E}from"./chunk-D5T4ARTB.js";import{b as Re}from"./chunk-B2PZAB7J.js";import{d as j}from"./chunk-IACKIGPX.js";import{appendFileSync as Qe,mkdirSync as fe,writeFileSync as ge}from"fs";import{extname as Ze,join as A}from"path";var O=class extends Error{code;constructor(e,c){super(`${e}: ${c}`),this.name="ProposalAdapterError",this.code=e}};function Ge(s){return s.version===2}function He(s,e){if(s.read_basis.length!==1)throw new O("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${s.read_basis.length}`);let c=s.read_basis[0],h=s.use_cases.map(i=>{if(i.cite.length!==1)throw new O("CITE_COUNT",`${i.temp_ref}: cite must have exactly 1 element, got ${i.cite.length}`);let l=i.cite[0];if(l.source_id!==c.source_id)throw new O("SOURCE_MISMATCH",`${i.temp_ref}: cite source ${l.source_id} != read_basis source ${c.source_id} (single-source)`);return{temp_ref:i.temp_ref,title:i.title,...i.description!==void 0?{description:i.description}:{},...i.summary!==void 0?{summary:i.summary}:{},...i.actors!==void 0?{actors:i.actors}:{},...i.value!==void 0?{value:i.value}:{},risk:i.risk,cite:{anchor:l.anchor,quote:l.quote},...i.criteria!=null&&i.criteria.length>0?{criteria:i.criteria.map((d,p)=>{if(d.cite.source_id!==c.source_id)throw new O("SOURCE_MISMATCH",`${i.temp_ref}.criteria[${p}]: cite source ${d.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:d.text,cite:{anchor:d.cite.anchor,quote:d.cite.quote}}})}:{},depends_on_hint:i.depends_on_hint,matches_existing:i.matches_existing,...i.conflicts_with!=null?{conflicts_with:i.conflicts_with}:{},...i.changed?{changed:!0}:{},...i.updated!=null?{updated:i.updated}:{}}});return{version:1,read_basis:e,source:{source_id:c.source_id,source_cid:c.source_cid},use_cases:h}}function qe(s){let{contextDir:e,graph:c}=s,h=s.maxDigestBytes??4096,i={},l=[];for(let[u,m]of c.heads){if(i[u]=m,typeof m!="string")continue;let _=c.mediaOf(m),w=c.getNode(m)?.content?.blob;if(typeof w=="string")if(_.format==="image")l.push({source_id:u,cid:m,format:"image",blobRef:{path:ee(e,w),cid:w}});else{let n=te(e,w)?.toString("utf8")??"";l.push({source_id:u,cid:m,format:_.format,text:n})}}l.sort((u,m)=>u.source_id<m.source_id?-1:1);let d=[];for(let u of c.byLabel(j.STYLENOTE).sort((m,_)=>m.cid<_.cid?-1:1))c.superseded.has(u.cid)||d.push(`\u2022 ${String(u.content.statement)} [${String(u.content.learned_from_kind)}]`);let p="";for(let u of d){if(Buffer.byteLength(p+u+`
3
- `,"utf8")>h)break;p+=u+`
4
- `}return{read_basis:i,sources:l,styleNoteDigest:p}}function Le(s,e){let c=qe({contextDir:s,graph:e}).styleNoteDigest;return c.length>0?c:void 0}function et(s){return s.length>8&&s[0]===137&&s[1]===80&&s[2]===78&&s[3]===71?"image/png":s.length>3&&s[0]===255&&s[1]===216&&s[2]===255?"image/jpeg":s.length>12&&s.toString("ascii",0,4)==="RIFF"&&s.toString("ascii",8,12)==="WEBP"?"image/webp":null}function tt(s){return s.toString("utf8").replace(/\n$/,"").split(`
5
- `).map((c,h)=>`${String(h+1).padStart(4,"0")}| ${c}`).join(`
6
- `)}function We(s){return s.toISOString().replace(/[-:]/g,"").slice(0,15)}function rt(s){return s.startsWith("su-conv-")?`conv-${Re(Buffer.from(s,"utf8")).slice(0,8)}`:s}function W(s){return s.toLowerCase().trim().replace(/\s+/g," ")}function ze(s,e){let c=new Map,h=new Map,i=new Map;for(let{cid:d,content:p}of e.byLabel(j.USECASE)){if(e.superseded.has(d))continue;(e.trust.get(d)==="archived"?i:h).set(W(String(p.title??"")),d)}let l=d=>e.trust.get(d)==="archived"?{cid:d,archived:!0,reason:e.archivedReason.get(d)}:{cid:d};for(let d of s.use_cases){if(d.matches_existing){let m=d.matches_existing.cid;if(e.superseded.has(m)){let _=e.tipOf(m);m=e.superseded.has(_)?null:_}if(m!==null){c.set(d.temp_ref,l(m));continue}}let p=h.get(W(d.title));if(p){c.set(d.temp_ref,{cid:p});continue}let u=i.get(W(d.title));u&&c.set(d.temp_ref,l(u))}return c}var Ve=/^(\S+)\.criteria\[(\d+)\]/;function st(s,e,c){if(e.length===0||!e.every(i=>Ve.test(i.detail)))return!1;let h=new Map;for(let i of e){let l=Ve.exec(i.detail),d=h.get(l[1])??new Set;d.add(Number(l[2])),h.set(l[1],d)}for(let i of s.use_cases){let l=h.get(i.temp_ref);l?.size&&(i.criteria=(i.criteria??[]).filter((d,p)=>!l.has(p)),c(`${i.temp_ref}: dropped ${l.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function Je(s,e,c,h,i=()=>{},l){let d=(p,u)=>i(p,u,s.session_id);return Te(s,e,c,h,i,{async onProposalEvent(p){let u=p,m=null,_=null;if(Ge(u))try{m=He(u,s.read_basis),d("adapter",{ok:!0,use_cases:m.use_cases.length})}catch(w){_=w instanceof O?w.message:String(w),d("adapter",{ok:!1,error:_})}else m=u;return m&&m.use_cases.length===0&&e.out("warning: the agent proposed ZERO use-cases for this source"),m&&l&&await l(m),{proposal:m,error:_}}})}var ot=new Set(["agent","ci","override"]);async function It(s,e){let c=s.mode??"interactive";if(c==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!ot.has(c))return e.out(`extract: unknown mode "${c}" \u2014 interactive | agent | ci | override`),2;let h=We(e.now?.()??new Date),i=A(e.contextDir,"logs");fe(i,{recursive:!0});let l=A(i,`extract-${h}.log`),d=`run-${h}-${Math.random().toString(36).slice(2,8)}`,p=t=>t==="error"||t==="failed_proposal"?"error":t==="repair_respawn"?"warn":"info",u=(t,a,x)=>{try{Qe(l,JSON.stringify({ts:new Date().toISOString(),level:p(t),run_id:d,...x?{session_id:x}:{},kind:t,data:a})+`
7
- `)}catch{}};e.out(`trace: ${l}`),e.emit?.({type:"run_start",mode:c,trace:l});let m=Ae();if(m&&e.out(m),e.preflightTurn){let t=await e.preflightTurn();if(u("preflight",t),!t.ok)return e.out(t.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:t.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let _=E(e.contextDir),w=Le(e.contextDir,_);if(s.source){if(s.resume){let a="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_WITH_RESUME"}),2}let t=_.heads.get(s.source);if(typeof t!="string"){let a=t===null?`error: --source ${s.source} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${s.source} is not an ingested source (kane-cli context list shows them)`;return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_UNKNOWN"}),2}}let n=null;if(s.resume){try{n=Be(e.contextDir,s.resume,_)}catch(a){return e.out(`error: ${a instanceof Error?a.message:String(a)}`),e.emit?.({type:"error",message:`error: ${a instanceof Error?a.message:String(a)}`}),1}n.staleBasis.length>0&&e.out(`note: changed since the pause: ${n.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let t=n.handle.state.held_receipts??[];if(t.length>0)if(e.chat?.holdReceipt)for(let a of t)e.chat.holdReceipt(a);else e={...e,initialMessage:[t.join(`
8
-
9
- `),e.initialMessage].filter(Boolean).join(`
10
-
11
- `)};n.handle.state.assumed.length>0&&e.out(`note: ${n.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${s.resume} lists them`)}let pe=_.extractedSourceCids,z=!!(s.force||n?.handle.state.force),$=[],I=[];for(let[t,a]of _.heads.entries())if(a!=null&&!(s.source&&t!==s.source)){if(!s.source&&!n&&t.startsWith("su-conv-")){e.out(`skipped: ${t} \u2014 conversation source (extract it explicitly with --source ${t})`),I.push({source_id:t,reason:"conversation"});continue}if(n){let x=t in n.handle.state.read_basis,P=n.handle.state.corpus_cursor.remaining.includes(t);if(!x&&!P)continue;if(P&&!z&&pe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),I.push({source_id:t,reason:"cached"});continue}}else if(!z&&pe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),I.push({source_id:t,reason:"cached"});continue}$.push({source_id:t,cid:a})}if(e.emit?.({type:"corpus",sources:$,skipped:I}),$.length===0){if(n){let x=`error: resumed session's paused source (${Object.keys(n.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${s.resume}, or discard with: kane-cli context sessions clean ${s.resume}`;return e.out(x),e.emit?.({type:"error",message:x,code:"SOURCE_MISSING"}),n.handle.release(),2}let t=I.length>0&&I.every(a=>a.reason==="conversation");return e.out(s.source?`extract: nothing to do \u2014 ${s.source} is already extracted at its current snapshot (--force to re-run)`:t?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let V=new Map;if(n&&n.questions.length>0&&!s.message){e.out(`re-presenting ${n.questions.length} unanswered question(s) from the paused session`);let t=await e.ask(n.questions.map(Fe));for(let a of t)V.set(a.id,a)}let B=e.by??{kind:"human",id:"owner"},T=c==="interactive"&&!s.plan&&!!e.chat,he=0,_e=0;try{for(let t of $){let a=E(e.contextDir),x={current:a};e.chat?.attachOnCommitted?.(r=>{x.current=r});let P=a.getNode(t.cid),U=String(P?.content.blob??""),se=te(e.contextDir,U);if(!se)return e.out(`error: ${t.source_id}: blob ${U} missing from .context/blobs`),e.emit?.({type:"error",source_id:t.source_id,message:`error: ${t.source_id}: blob ${U} missing from .context/blobs`,code:"BLOB_MISSING"}),1;let xe=a.mediaOf(t.cid),oe=xe.media_type.startsWith("image/");if(!oe){let r=et(se);if(r){e.out(`skipping ${t.source_id}: binary ${r} ingested before image support \u2014 re-ingest it (kane-cli context ingest) to extract from it`),e.emit?.({type:"source_skipped",source_id:t.source_id,reason:"binary_pre_media"});continue}}let G=oe?`0001| (image source ${t.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:tt(se),ye=We(e.now?.()??new Date),M=`${ye}-${t.source_id}`,ve=!!(n&&t.source_id in n.handle.state.read_basis)?s.resume:`ext-${ye}-${rt(t.source_id)}`,N="";if(T){let r=Ee({contextDir:e.contextDir,graph:E(e.contextDir),sessionStamp:ve,by:B});r.errors===null||r.errors[0]?.code==="CONV_SOURCE_EXISTS"?(N=r.sourceId,e.chat.attachConversationSource?.(N),x.current=E(e.contextDir)):e.out(`warning: conversation source unavailable (${r.errors[0]?.detail}) \u2014 chat adds will not land this session`)}let b={type:"run_config",version:1,session_id:ve,mode:c,source:{source_id:t.source_id,source_cid:t.cid,kind:Ze(t.source_id)||"md",numbered_text:G},existing_use_cases:a.byLabel(j.USECASE).filter(({cid:r})=>a.trust.get(r)!=="archived"&&!a.superseded.has(r)).map(({cid:r,content:o})=>({id:r,title:String(o.title??""),summary:String(o.summary??"")})),read_basis:x.current.latestHash,max_free_text_rounds:Ie,graph_reads:!0,verb:"extract",...w!==void 0?{style_note_digest:w}:{},topology:Ne(),...T?{chat:!0}:{},...oe?{image_sources:[{source_id:t.source_id,source_cid:t.cid,media_type:xe.media_type,blob_ref:{path:ee(e.contextDir,U),cid:U}}]}:{},...n&&t.source_id in n.handle.state.read_basis?{resume:{agent_state:n.handle.state.agent_state}}:{}};e.out(n&&t.source_id in n.handle.state.read_basis?`resuming: ${t.source_id} (session ${s.resume})`:`extracting: ${t.source_id} @ ${t.cid.slice(0,19)}`),e.emit?.({type:"source_start",source_id:t.source_id,cid:t.cid,index:$.indexOf(t)+1,total:$.length,resumed:!!(n&&t.source_id in n.handle.state.read_basis)}),e.chat?.ledger?.({kind:"banner",text:`source ${$.indexOf(t)+1}/${$.length} \xB7 ${t.source_id} @ ${t.cid.slice(0,19)}`}),e.chat?.setWorking?.(`extracting ${t.source_id}\u2026`);let $e=new Map;u("spawn",{source_id:t.source_id,source_cid:t.cid,resume:!!n,chat:T},b.session_id);let be=!1,Xe=async r=>{let o=L(r,G,E(e.contextDir));if(u("kane_validate",{errors:o.map(g=>g.code)},b.session_id),o.length>0){e.chat.submit("[auto-repair] the proposal failed validation: "+o.map(g=>`${g.code}: ${g.detail}`).join("; ")+" \u2014 please re-finalize with these fixed.");return}let y=E(e.contextDir),k=ze(r,y),Y=A(e.contextDir,"proposals",M);fe(Y,{recursive:!0}),ge(A(Y,"proposal.json"),JSON.stringify(r,null,2)+`
12
- `);let Ke=new Map(r.use_cases.map(g=>[g.temp_ref,{resolution:"skipped"}])),K=re({contextDir:e.contextDir,graph:y,proposal:r,proposalId:M,verdicts:Ke,by:{kind:"ai",id:"extract-agent"},autoName:!0});if(K.errors){e.chat.ledger?.({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:K.errors.map(g=>`${g.code}: ${g.detail}`)});return}be=!0;let Q=K.record.nodes.length;he+=Q;let Z=r.use_cases.length-Q;{let g=E(e.contextDir),we=new Map;for(let{cid:v,content:R}of g.byLabel(j.USECASE))g.superseded.has(v)||we.set(W(String(R.title??"")),v);let me=[];for(let v of r.use_cases){let R=null;if(v.matches_existing?.cid&&g.hasNode(v.matches_existing.cid)){let q=g.tipOf(v.matches_existing.cid);R=g.superseded.has(q)?null:q}R=R??we.get(W(v.title))??null,R&&me.push({ref:v.temp_ref,cid:R})}me.length>0&&e.chat.registerAliases?.(me),x.current=g;let De=v=>{for(let[R,q]of g.names)if(q===v&&!g.superseded.has(q))return R},ke=Ce({verb:"extract",commitN:1,phase:"proposal",committed:K.record.nodes.map(v=>({cid:v.cid,...De(v.cid)?{logical_id:De(v.cid)}:{}})),reused:Z},g);e.emit?.(ke.event),e.chat.holdReceipt?.(ke.text)}u("commit",{derived:Q,evidence_matched:Z,chat:!0},b.session_id),e.chat.ledger?.({kind:"commit",ok:!0,line:`committed: ${Q} new use-case(s) as derived`+(Z>0?` \xB7 ${Z} matched existing (evidence attached, no duplicate)`:"")}),e.chat.note('chat to refine ("looks good" approves; "done" finishes)')},Se=!!(n&&t.source_id in n.handle.state.read_basis),J=Se&&V.size>0?{...e,ask:async r=>r.every(o=>V.has(o.id))?(n.handle.markApplied(r.map(o=>`resolveq:${s.resume}:${o.id}`)),e.out(`answered ${r.length} re-asked question(s) from the held resume answers`),r.map(o=>V.get(o.id))):e.ask(r)}:e;Se&&s.message&&(J={...J,initialMessage:s.message});let f=await Je(b,{...J,graphSlot:x},$e,a,u,T?Xe:void 0);if(e.chat?.setWorking?.(null),f.error)return e.out(`error: agent failed for ${t.source_id}: ${f.error}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent failed for ${t.source_id}: ${f.error}`}),1;if(f.highRisk)return e.out(`error: ${f.highRisk.length} high-risk decision${f.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",source_id:t.source_id,message:`error: high-risk question(s) in ci mode (fail-closed): ${f.highRisk.map(r=>r.id).join(", ")}`,code:"HIGH_RISK_CI"}),1;if(f.paused){let r=$.slice($.indexOf(t)+1).map(Y=>Y.source_id),o=n?.handle??Me(e.contextDir,{sid:b.session_id,mode:"agent",created_at:(e.now?.()??new Date).toISOString(),expires_at:new Date((e.now?.()??new Date).getTime()+1440*60*1e3).toISOString(),agent_state:f.paused.agent_state,pending:{questions:[],proposals:[]},assumed:[],read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},conv_source:N,verb:"extract",...z?{force:!0}:{}});N&&o.state.conv_source!==N&&o.save({conv_source:N});let y=e.chat?.drainHeldReceipts?.()??[];(y.length>0||(o.state.held_receipts?.length??0)>0)&&o.save({held_receipts:y}),n?.handle&&o.save({read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},...z&&!o.state.force?{force:!0}:{}}),je(o,f.paused),u("session_paused",{sid:o.state.sid},b.session_id);let k=`kane-cli context extract --resume ${o.state.sid} --mode ${c}`;return e.out(`paused: session ${o.state.sid} saved \u2014 resume with: ${k}`),e.emit?.({type:"session_paused",sid:o.state.sid,source_id:t.source_id,mode:c,resume:k,expires_at:o.state.expires_at,pending_questions:f.paused.pending.questions}),e.chat?.ledger?.({kind:"pause",sid:o.state.sid,expires_at:o.state.expires_at,resume:k,messageForm:`${k} --message "<your words>"`}),3}if(T){if(_e+=f.assumedDefaults??0,f.error)return 1;if(!be){let r=$.length-$.indexOf(t)-1;return e.out(`done \u2014 nothing committed for ${t.source_id} (no finalize before the session ended)`+(r>0?`; stopping here \u2014 ${r} remaining source(s) not extracted (re-run kane-cli context extract to continue)`:"")),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null),0}n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null);continue}if(!f.proposal)return e.out(`error: agent ended without a proposal for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent ended without a proposal for ${t.source_id}`}),1;let D=L(f.proposal,G,a);if(u("kane_validate",{errors:D.map(r=>r.code)},b.session_id),D.length>0&&st(f.proposal,D,r=>e.out(r))&&(u("criteria_dropped",{source_id:t.source_id},b.session_id),D=L(f.proposal,G,a)),D.length>0){if(e.out("the agent's proposal didn't validate \u2014 retrying once"),e.emit?.({type:"validate_failed",source_id:t.source_id,codes:D.map(r=>r.code),repairing:!0}),u("repair_respawn",{source_id:t.source_id},b.session_id),f=await Je(b,{...J,graphSlot:x},$e,a,u),f.error||!f.proposal)return e.out(`error: repair run failed for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: repair run failed for ${t.source_id}`}),1;if(D=L(f.proposal,G,a),D.length>0){for(let r of D)e.out(` ${r.detail}`);return e.emit?.({type:"validate_failed",source_id:t.source_id,codes:D.map(r=>r.code),repairing:!1}),e.emit?.({type:"error",source_id:t.source_id,message:`error: proposal failed validation after repair (${D.map(r=>r.code).join(", ")})`}),1}}let S=f.proposal,X=ze(S,a),ie=A(e.contextDir,"proposals",M);if(fe(ie,{recursive:!0}),ge(A(ie,"proposal.json"),JSON.stringify(S,null,2)+`
13
- `),s.plan){e.out(`plan: ${S.use_cases.length} use-case(s) proposed from ${t.source_id} (nothing committed)`);for(let r of S.use_cases){let o=X.get(r.temp_ref),y=o?o.archived?` \u2248 matches ARCHIVED ${o.cid.slice(0,19)}${o.reason?` \u2014 previously rejected: "${o.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${o.cid.slice(0,19)}`:"";e.out(` [${r.risk}] ${r.title} \u2014 cite ${r.cite.anchor}${y}`)}e.emit?.({type:"plan",source_id:t.source_id,use_cases:S.use_cases.map(r=>{let o=X.get(r.temp_ref);return{risk:r.risk,title:r.title,anchor:r.cite.anchor,...o?{match:o.cid,match_archived:!!o.archived}:{}}})}),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`);continue}for(let r of S.use_cases){if(!r.conflicts_with?.length)continue;let o=r.conflicts_with.filter(k=>a.resolve(k)!==null),y=r.conflicts_with.filter(k=>a.resolve(k)===null);y.length>0&&(e.out(`note: ${r.temp_ref}: dropped unresolvable conflict hint(s): ${y.join(", ")}`),r.conflicts_with=o.length>0?o:void 0)}u("review_start",{use_cases:S.use_cases.length,flags:X.size},b.session_id);let H=await e.review(S.use_cases,X);u("review_verdicts",[...H.entries()].map(([r,o])=>({ref:r,resolution:o.resolution})),b.session_id),ge(A(ie,"review.json"),JSON.stringify(S.use_cases.map(r=>{let o=H.get(r.temp_ref)??{resolution:"skipped"};return{id:r.temp_ref,kind:"review-item",resolution:o.resolution,edit:o.edit??null,reason:o.reason??null,...o.supersedeTarget?{supersede_target:o.supersedeTarget}:{},by:B}}),null,2)+`
14
- `);let ne=a,C=re({contextDir:e.contextDir,graph:ne,proposal:S,proposalId:M,verdicts:H,by:B,autoName:!0});if(C.errors&&C.errors[0]?.code==="STALE_BASIS"){if(!await e.confirmStale(`the context changed while you reviewed (${C.errors[0].detail}) \u2014 commit against the new head anyway?`))return e.out("aborted: proposal not committed"),e.emit?.({type:"error",source_id:t.source_id,message:"aborted: proposal not committed",code:"STALE_BASIS"}),e.emit?.({type:"done",status:"aborted",exit_code:1}),1;ne=E(e.contextDir),C=re({contextDir:e.contextDir,graph:ne,proposal:S,proposalId:M,verdicts:H,by:B,allowStaleBasis:!0,autoName:!0})}if(C.errors){for(let r of C.errors)e.out(` ${r.detail}`);return e.emit?.({type:"error",source_id:t.source_id,message:`error: commit failed: ${C.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}`}),1}let Ye=new Date().toISOString();for(let r of S.use_cases){let o=H.get(r.temp_ref)??{resolution:"skipped"};for(let y of Pe({ts:Ye,command:"context extract",id:r.temp_ref,by:B},o.resolution))Oe(e.contextDir,y)}let F=C.record,ae=new Map(F.review.map(r=>[r.id,r.resolution])),ce=[...ae.values()].filter(r=>r==="approved"||r==="edited").length,ue=[...ae.values()].filter(r=>r==="rejected").length,de=F.nodes.filter(r=>!ae.has(r.cid)).length,le=F.supersessions.filter(r=>r.kind==="node"&&r.new!==r.old).length;u("commit",{trusted:ce,derived:de,archived:ue},b.session_id),e.out(`committed: ${ce} trusted, ${de} derived (queued), ${ue} archived`+(le>0?`, ${le} superseded`:"")),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`),e.emit?.({type:"commit",source_id:t.source_id,proposal_id:M,trusted:ce,derived:de,archived:ue,superseded:le,assumed:f.assumedDefaults??0,evidence_matched:Math.max(0,S.use_cases.length-F.nodes.length),minted:F.nodes.map(r=>{let o=F.names?.find(y=>y.cid===r.cid)?.slug;return{cid:r.cid,...o?{logical_id:o}:{}}})}),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),e.out(`session ${s.resume} complete`),e.emit?.({type:"session_complete",sid:s.resume,source_id:t.source_id}),n=null)}}finally{n?.handle.release()}if(T){let t=e.chat?.state.ledger.filter(P=>P.kind==="answer"&&P.receipt.form==="assumed").length??0,a=_e+t,x=e.chat?.state.credits?.total;e.chat?.ledger?.({kind:"summary",lines:[`committed ${he} across ${$.length} source(s)`,...a>0?[`${a} assumed default(s)`]:[],...x!==void 0?[`credits used: ${x.toFixed(1)}`]:[],`trace: ${l}`]})}return s.plan||Ue(e.contextDir),0}export{rt as a,ze as b,It as c};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-DEYHK6ZC.js";import"./chunk-4G4HPMR2.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-L4AUCQVO.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as b,b as c,c as d}from"./chunk-HW7Z5S2M.js";import{e as a}from"./chunk-WM5QHLAP.js";import"./chunk-I2S6KNZW.js";import"./chunk-FXPPQL4D.js";import"./chunk-DM2GL24Z.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-KHDUQ33H.js";import"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";export{c as dedupPreFlags,a as resolveAnswers,d as runExtract,b as sessionSourceRef};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as a}from"./chunk-TJRBV2V2.js";import"./chunk-3MSXQU2C.js";import"./chunk-LZKUF23A.js";import"./chunk-XN7PPLFS.js";import"./chunk-KGFISJFM.js";import"./chunk-4PIMEZJW.js";import"./chunk-GIGD4M7V.js";import"./chunk-S6GRW5ZA.js";import"./chunk-D5DEWIAU.js";import"./chunk-OZODSY6H.js";import"./chunk-2YQ6TW77.js";import"./chunk-Q6TVDG3X.js";import"./chunk-LMJTY32X.js";import"./chunk-RKWJG3WW.js";import"./chunk-VL2UA23Z.js";import"./chunk-LV5VRSPI.js";import"./chunk-2U5DZUC7.js";import"./chunk-DCYTRYR2.js";import"./chunk-44QUA6GV.js";import"./chunk-IDDVO4UV.js";import"./chunk-EK2B2LZK.js";import"./chunk-N62EM6JX.js";import"./chunk-M6DX4ENH.js";import"./chunk-5Y2G4NC7.js";import"./chunk-GN3SZXZ5.js";import"./chunk-52VLJKIN.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-35SRW4KA.js";import"./chunk-DEYHK6ZC.js";import"./chunk-4G4HPMR2.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-K2MKBBI4.js";import"./chunk-RFHMDQXZ.js";import"./chunk-YSK535OI.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-BKGJGPDN.js";import"./chunk-MHQ6A2QZ.js";import"./chunk-FU3OQXFH.js";import"./chunk-YCCUBQY4.js";import"./chunk-U3JB76QP.js";import"./chunk-M5JQXOCE.js";import"./chunk-HR7AGYV2.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-L4AUCQVO.js";import"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-Z4K4AYEI.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-35SRW4KA.js";import"./chunk-4G4HPMR2.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};