@testmuai/kane-cli 0.6.10 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/ChatSurface-TZ554O4U.js +8 -0
  2. package/dist/{ChromeProfilePicker-IDKFTIHW.js → ChromeProfilePicker-54CAJDUF.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-SZOU5FGZ.js → CliFeedbackPrompt-TCAH4AHL.js} +1 -1
  4. package/dist/{CliUploadProgress-W2FC33Q4.js → CliUploadProgress-UURZ63VQ.js} +1 -1
  5. package/dist/{ConfigView-JB2NSZ2N.js → ConfigView-5QGB7MUS.js} +1 -1
  6. package/dist/{EvidenceViewOffer-5YST67KY.js → EvidenceViewOffer-SSAM4RRP.js} +1 -1
  7. package/dist/{FolderPicker-SPNZESAR.js → FolderPicker-Y5MAYFIJ.js} +1 -1
  8. package/dist/{HelpView-XBDXXHFB.js → HelpView-S3GJGSCE.js} +1 -1
  9. package/dist/{InfoBox-2T7GYSFT.js → InfoBox-LYTNNMVJ.js} +1 -1
  10. package/dist/{LinksBox-2NNZZDQT.js → LinksBox-5MSEKNSV.js} +1 -1
  11. package/dist/{ProfilesView-KJZVGU5B.js → ProfilesView-LTHE5UIO.js} +1 -1
  12. package/dist/{ProjectPicker-AUTZNEPE.js → ProjectPicker-XMXIGHSE.js} +1 -1
  13. package/dist/{SaveSessionPrompt-LHLSJQSQ.js → SaveSessionPrompt-VQDEA4WA.js} +1 -1
  14. package/dist/SingleShotApp-A6PCNPLM.js +2 -0
  15. package/dist/{SummaryBox-5G7WULUN.js → SummaryBox-WWF3G263.js} +1 -1
  16. package/dist/TestMdRunView-MQ7ZPFN2.js +2 -0
  17. package/dist/{WhoamiView-XNWBDMQR.js → WhoamiView-PDURYP7E.js} +1 -1
  18. package/dist/auth-I4RB4KO3.js +2 -0
  19. package/dist/{bind-FEOGBJ2O.js → bind-QJT726NE.js} +2 -2
  20. package/dist/{bootstrap-T6DSUI34.js → bootstrap-566PPFCC.js} +1 -1
  21. package/dist/{bridge-WMGH3O3B.js → bridge-QCMEOQDD.js} +1 -1
  22. package/dist/{changelog-AGFDNTTW.js → changelog-OKYH4F7I.js} +1 -1
  23. package/dist/{chat-committer-4ENYH3RC.js → chat-committer-OS7ULZMH.js} +1 -1
  24. package/dist/chat-controller-QLORQWJZ.js +2 -0
  25. package/dist/{chunk-FYDBD7Q4.js → chunk-2WKX3RMA.js} +1 -1
  26. package/dist/{chunk-6JTEWZ75.js → chunk-3AZTXJY4.js} +1 -1
  27. package/dist/{chunk-SKRZN25J.js → chunk-3RZ63RBO.js} +1 -1
  28. package/dist/{chunk-5F7PU5AJ.js → chunk-4CJ55EUY.js} +1 -1
  29. package/dist/{chunk-5Z7GAIPP.js → chunk-54IB6CXK.js} +2 -2
  30. package/dist/{chunk-JHPZXF77.js → chunk-54VQ46U2.js} +2 -2
  31. package/dist/{chunk-KK7DYHK6.js → chunk-55Y65VPA.js} +1 -1
  32. package/dist/{chunk-L4JIMNKW.js → chunk-6HYW5RFX.js} +1 -1
  33. package/dist/{chunk-A46NBRAP.js → chunk-6W6AIDLJ.js} +1 -1
  34. package/dist/{chunk-XY5KWIRF.js → chunk-73OQDAXF.js} +1 -1
  35. package/dist/{chunk-SDRFTIRU.js → chunk-7E24OCGX.js} +1 -1
  36. package/dist/{chunk-W54W762O.js → chunk-7MRBMDZ5.js} +1 -1
  37. package/dist/{chunk-76I6NJBX.js → chunk-7NLQ3QQD.js} +1 -1
  38. package/dist/chunk-7YPK6EDR.js +4 -0
  39. package/dist/{chunk-WSZ7IENQ.js → chunk-DSOA6L73.js} +3 -3
  40. package/dist/{chunk-6CGNLFSN.js → chunk-EAUUULJQ.js} +1 -1
  41. package/dist/{chunk-QPT4ERGK.js → chunk-F7WKDMX7.js} +1 -1
  42. package/dist/{chunk-7Z64BL5D.js → chunk-FCHTL74E.js} +1 -1
  43. package/dist/{chunk-OSALXGD4.js → chunk-FMR2KPSK.js} +1 -1
  44. package/dist/{chunk-RGDQMKNJ.js → chunk-FRBYGSGJ.js} +1 -1
  45. package/dist/{chunk-LPBAQQ7E.js → chunk-FSB3FTIQ.js} +1 -1
  46. package/dist/{chunk-AYDUHTPA.js → chunk-GIMTSDNC.js} +1 -1
  47. package/dist/{chunk-SACSQY3Q.js → chunk-GLA6QL3T.js} +1 -1
  48. package/dist/{chunk-TLL7KFLY.js → chunk-H2W2UNTN.js} +1 -1
  49. package/dist/{chunk-WV42KKEU.js → chunk-HLRLP6TQ.js} +1 -1
  50. package/dist/{chunk-6ZJ7ZFEX.js → chunk-HMM5FJJO.js} +1 -1
  51. package/dist/{chunk-GWJ76BLF.js → chunk-HOQEMPMQ.js} +2 -2
  52. package/dist/{chunk-2H3XNXL3.js → chunk-ICGHBZFZ.js} +1 -1
  53. package/dist/{chunk-7C6G4V43.js → chunk-IQODWB32.js} +1 -1
  54. package/dist/{chunk-MBXWXBDM.js → chunk-J2KSZUOO.js} +1 -1
  55. package/dist/{chunk-OESHJ4J2.js → chunk-JXKRO2ZJ.js} +2 -2
  56. package/dist/{chunk-RH4GCEFX.js → chunk-KHJXOFDM.js} +1 -1
  57. package/dist/chunk-KHQHVSZ6.js +5 -0
  58. package/dist/{chunk-ECFOND7B.js → chunk-KSZ72BSC.js} +1 -1
  59. package/dist/{chunk-TW3K2DKB.js → chunk-KXUSG5ZI.js} +1 -1
  60. package/dist/{chunk-YJIESLN6.js → chunk-LHDNJJGE.js} +1 -1
  61. package/dist/{chunk-Z25FKS3Y.js → chunk-M5PJQ5Y3.js} +1 -1
  62. package/dist/{chunk-VYQMCLKG.js → chunk-MFOH7EYR.js} +1 -1
  63. package/dist/{chunk-QGBLC4ZJ.js → chunk-MJBCBQC2.js} +1 -1
  64. package/dist/{chunk-2KS2YRIS.js → chunk-MMPFU2YC.js} +1 -1
  65. package/dist/{chunk-ZFFRHV5U.js → chunk-MR7CX5VT.js} +1 -1
  66. package/dist/{chunk-J4WS2SXT.js → chunk-MRP54NCJ.js} +1 -1
  67. package/dist/{chunk-JTCW76YG.js → chunk-MTNUZEO7.js} +1 -1
  68. package/dist/{chunk-XZW3TBOV.js → chunk-NJAHRITS.js} +1 -1
  69. package/dist/{chunk-FEF75YKV.js → chunk-NTGYFYBP.js} +1 -1
  70. package/dist/{chunk-DHF3VO2R.js → chunk-NTNAHN25.js} +1 -1
  71. package/dist/{chunk-KA7Q5IIC.js → chunk-NUQ423YE.js} +1 -1
  72. package/dist/{chunk-RLZA4VJT.js → chunk-OGWC3J3C.js} +1 -1
  73. package/dist/{chunk-5LTUYXMP.js → chunk-POYZ6SAI.js} +1 -1
  74. package/dist/{chunk-6NWPK2MS.js → chunk-QJIJC3KC.js} +1 -1
  75. package/dist/{chunk-YOFKDRY4.js → chunk-RFJAYURU.js} +1 -1
  76. package/dist/chunk-RGJIRS3B.js +2 -0
  77. package/dist/{chunk-4OSW2WEN.js → chunk-RZJVQUBA.js} +3 -3
  78. package/dist/{chunk-7LWXIRI3.js → chunk-SURF5Z7Y.js} +1 -1
  79. package/dist/chunk-TDPWFYTJ.js +2 -0
  80. package/dist/chunk-V3UE6RJP.js +2 -0
  81. package/dist/{chunk-MSK7AC4E.js → chunk-XSKLH2MC.js} +2 -2
  82. package/dist/{chunk-C3OGWCII.js → chunk-XWSAKVEY.js} +2 -2
  83. package/dist/{chunk-YVXC46DY.js → chunk-XXMNUJX4.js} +1 -1
  84. package/dist/{chunk-6MTVGARW.js → chunk-XZRIQ3GF.js} +1 -1
  85. package/dist/chunk-YSSTGJ7O.js +7 -0
  86. package/dist/chunk-Z2JSEL3I.js +4 -0
  87. package/dist/{chunk-7APDXIKI.js → chunk-ZNHXIRCM.js} +9 -9
  88. package/dist/{chunk-MJF3USZF.js → chunk-ZP4S5WGW.js} +1 -1
  89. package/dist/{chunk-3KN2UW37.js → chunk-ZPCU6546.js} +1 -1
  90. package/dist/{config-7WI6TBDV.js → config-QISRENF5.js} +1 -1
  91. package/dist/{cover-cmd-J2ZJUL6P.js → cover-cmd-SV3I23UM.js} +1 -1
  92. package/dist/{credentials-MX5ABDPF.js → credentials-OGLK7MPV.js} +1 -1
  93. package/dist/docx-convert-ZBVQO2LG.js +2 -0
  94. package/dist/{dossier-UVTGCL7T.js → dossier-KJSJPWOW.js} +1 -1
  95. package/dist/{evidence-TZYIOSPG.js → evidence-HDD7T7DX.js} +1 -1
  96. package/dist/{evolve-cmd-IDS5ZIUY.js → evolve-cmd-UE2BIMXK.js} +1 -1
  97. package/dist/{explain-VTRHEVUQ.js → explain-EBVIUS2X.js} +1 -1
  98. package/dist/{explain-cmd-NPKN63XL.js → explain-cmd-DBUTPZHA.js} +1 -1
  99. package/dist/{explain-cmd-R3WCNR2A.js → explain-cmd-NWIYH5MI.js} +1 -1
  100. package/dist/{extract-bind-CISTQFI3.js → extract-bind-6MQYKN3G.js} +3 -3
  101. package/dist/{extract-cmd-HG3DHHSL.js → extract-cmd-2RUIWFZG.js} +1 -1
  102. package/dist/{gaps-cmd-XLVUFSTY.js → gaps-cmd-CKCHH3HQ.js} +1 -1
  103. package/dist/{generate-headless-4VJMAHCU.js → generate-headless-TUA3HGRX.js} +2 -2
  104. package/dist/index.js +13 -13
  105. package/dist/ingest-FIIO67ZN.js +2 -0
  106. package/dist/ingest-cmd-CRMY46YC.js +7 -0
  107. package/dist/{interactive-bind-IXFRXBBL.js → interactive-bind-53FCRK34.js} +3 -3
  108. package/dist/{lifecycle-cmd-VTFZ3TF2.js → lifecycle-cmd-32LG364Q.js} +1 -1
  109. package/dist/{list-cmd-KXL4WQII.js → list-cmd-UTZ2PQUK.js} +1 -1
  110. package/dist/{list-commands-BJYJ34HT.js → list-commands-F53ZNYOZ.js} +1 -1
  111. package/dist/{logical-ids-LMBNMENR.js → logical-ids-I7B3VJEH.js} +1 -1
  112. package/dist/login-flow-D7KBR7XR.js +2 -0
  113. package/dist/{maintenance-cmd-UJG4LPWD.js → maintenance-cmd-BZAGSYGI.js} +1 -1
  114. package/dist/{persist-recorded-session-QR7RVAXR.js → persist-recorded-session-5ZFS5SMZ.js} +1 -1
  115. package/dist/pipeline-MX3ZR5B3.js +2 -0
  116. package/dist/readmodel-S5RAQH3F.js +2 -0
  117. package/dist/{reconcile-cmd-E2MMQM7Z.js → reconcile-cmd-4377PWF5.js} +1 -1
  118. package/dist/{recording-banner-QAIKLV6E.js → recording-banner-ZZUF2MGT.js} +1 -1
  119. package/dist/{require-project-folder-OANMHOVE.js → require-project-folder-NQBZFUPF.js} +1 -1
  120. package/dist/{revert-FRXNIP5R.js → revert-RQJE56HF.js} +1 -1
  121. package/dist/{review-cmd-2FCGP55U.js → review-cmd-7LXGYHHQ.js} +1 -1
  122. package/dist/run-2AIQUJ55.js +2 -0
  123. package/dist/run-YH5SCBYD.js +2 -0
  124. package/dist/{run-test-md-5E53A5DT.js → run-test-md-XOSCYVSS.js} +2 -2
  125. package/dist/{skill-installer-LGEIIQ4Q.js → skill-installer-VYIIWAK7.js} +1 -1
  126. package/dist/{spawner-6FHAXNOA.js → spawner-7KXVKAD5.js} +1 -1
  127. package/dist/tcg-generate-U6OCCS2E.js +2 -0
  128. package/dist/{testmd-actions-2OFH5GRJ.js → testmd-actions-RPALXRZK.js} +1 -1
  129. package/dist/token-refresh-S7CYBZTE.js +2 -0
  130. package/dist/{validate-basic-Z46MAH2G.js → validate-basic-LP3S5PK7.js} +1 -1
  131. package/dist/{version-check-64M5JQQ7.js → version-check-XP62HWLJ.js} +1 -1
  132. package/dist/{view-cmd-PG66UQK7.js → view-cmd-GQBFCPDL.js} +1 -1
  133. package/dist/{walk-session-7PM2RXEF.js → walk-session-YIKHE6PT.js} +1 -1
  134. package/package.json +6 -6
  135. package/dist/ChatSurface-PLXUGRBV.js +0 -8
  136. package/dist/SingleShotApp-Z2HGSZXG.js +0 -2
  137. package/dist/TestMdRunView-B4IZHRDT.js +0 -2
  138. package/dist/chat-controller-M4QYRH7Y.js +0 -2
  139. package/dist/chunk-26H3PDVN.js +0 -4
  140. package/dist/chunk-2OQLMW3F.js +0 -7
  141. package/dist/chunk-GLS46X7N.js +0 -5
  142. package/dist/chunk-JHHMXU76.js +0 -2
  143. package/dist/chunk-KFUZYEHX.js +0 -2
  144. package/dist/chunk-ZPENY2Q3.js +0 -4
  145. package/dist/docx-convert-IAX54REO.js +0 -2
  146. package/dist/ingest-UAIKHOB4.js +0 -2
  147. package/dist/ingest-cmd-7HJLRLMG.js +0 -4
  148. package/dist/login-flow-KW5T7WRJ.js +0 -2
  149. package/dist/pipeline-L6V24KGN.js +0 -2
  150. package/dist/readmodel-AGAPK2AI.js +0 -2
  151. package/dist/run-FYJZCWYS.js +0 -2
  152. package/dist/run-IOBBB7GN.js +0 -2
  153. package/dist/tcg-generate-CEDA6DZJ.js +0 -2
  154. package/dist/token-refresh-R75DGT4X.js +0 -2
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Me}from"./chunk-KHU7C6EE.js";import{c as je}from"./chunk-SKRZN25J.js";import{a as de,b as Ae,c as Te,d as Oe,g as Ie,h as Pe}from"./chunk-ZFFRHV5U.js";import{b as qe,c as Le}from"./chunk-J44RN3FB.js";import{a as Be,b as Fe}from"./chunk-3C5GMAM4.js";import{a as $e}from"./chunk-GG43HSU2.js";import{c as Ce}from"./chunk-OSALXGD4.js";import{a as Ne}from"./chunk-CVOGP253.js";import{a as De,b as Re}from"./chunk-FHKDTM5L.js";import{b as fe,c as he,d as _e,e as ae,f as ne,g as ie}from"./chunk-ZPDM6FO7.js";import{a as oe}from"./chunk-L5LI2JF4.js";import{a as Y}from"./chunk-SDRFTIRU.js";import{c as xe,n as Ee}from"./chunk-A46NBRAP.js";import{a as we,b as ce}from"./chunk-L4JIMNKW.js";import{c as Se,e as ke}from"./chunk-MBXWXBDM.js";import{d as v,e as D,f as be,g as ye,h as ve}from"./chunk-5YPBPZUR.js";import{a as pe}from"./chunk-5EOX4MEY.js";import{mkdirSync as mt,appendFileSync as gt}from"fs";import{randomBytes as pt}from"crypto";import{dirname as ft,join as ht}from"path";import{existsSync as le,readFileSync as ue,readdirSync as nt}from"fs";import{join as Z}from"path";var Ge=`
2
+ import{c as je}from"./chunk-3RZ63RBO.js";import{a as Me}from"./chunk-KHU7C6EE.js";import{a as de,b as Ae,c as Te,d as Oe,g as Ie,h as Pe}from"./chunk-MR7CX5VT.js";import{b as qe,c as Le}from"./chunk-J44RN3FB.js";import{a as Ne}from"./chunk-CVOGP253.js";import{a as Be,b as Fe}from"./chunk-3C5GMAM4.js";import{a as $e}from"./chunk-GG43HSU2.js";import{c as Ce}from"./chunk-FMR2KPSK.js";import{a as De,b as Re}from"./chunk-FHKDTM5L.js";import{b as fe,c as he,d as _e,e as ae,f as ne,g as ie}from"./chunk-ZPDM6FO7.js";import{a as oe}from"./chunk-L5LI2JF4.js";import{a as Y}from"./chunk-7E24OCGX.js";import{c as xe,n as Ee}from"./chunk-6W6AIDLJ.js";import{a as we,b as ce}from"./chunk-6HYW5RFX.js";import{c as Se,e as ke}from"./chunk-J2KSZUOO.js";import{d as v,e as D,f as be,g as ye,h as ve}from"./chunk-5YPBPZUR.js";import{a as pe}from"./chunk-5EOX4MEY.js";import{mkdirSync as mt,appendFileSync as gt}from"fs";import{randomBytes as pt}from"crypto";import{dirname as ft,join as ht}from"path";import{existsSync as le,readFileSync as ue,readdirSync as nt}from"fs";import{join as Z}from"path";var Ge=`
3
3
  version: 1
4
4
  techniques:
5
5
  - id: eqp
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as t,b as i}from"./chunk-IAHKTEET.js";import{i as s,j as e}from"./chunk-5YPBPZUR.js";function a(r,n){return"sha256:"+i(Buffer.from("assurance."+r+"\0"+t(s(r,n)),"utf8"))}function f(r,n,o,u){return"sha256:"+i(Buffer.from("assurance.edge\0"+t({type:r,src:n,dst:o,props:e(r,u)}),"utf8"))}function d(r,n){return{source_id:r,blob:n}}function p(r){return{...r,derived:!0}}export{a,f as b,d as c,p as d};
2
+ import{i as s,j as e}from"./chunk-5YPBPZUR.js";import{a as t,b as i}from"./chunk-IAHKTEET.js";function a(r,n){return"sha256:"+i(Buffer.from("assurance."+r+"\0"+t(s(r,n)),"utf8"))}function f(r,n,o,u){return"sha256:"+i(Buffer.from("assurance.edge\0"+t({type:r,src:n,dst:o,props:e(r,u)}),"utf8"))}function d(r,n){return{source_id:r,blob:n}}function p(r){return{...r,derived:!0}}export{a,f as b,d as c,p as d};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as M,b as A,d as K}from"./chunk-L4JIMNKW.js";import{c as z,e as P}from"./chunk-MBXWXBDM.js";import{d as L,e as R,f as U,g as B,h as J}from"./chunk-5YPBPZUR.js";function Z(c,s){let t=c.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(t.length>60){let o=t.lastIndexOf("-",60);t=(o>0?t.slice(0,o):t.slice(0,60)).replace(/-+$/g,"")}if(!G.test(t))return null;let e=t;for(let o=2;s(e);o++)e=`${t}-${o}`;return G.test(e)?e:null}var ee={source:"src",usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"};function ae(c,s,t){let e=ee[c];return Z(e?`${e} ${s}`:s,t)}var te={usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"},ue=/^(uc|sc|ac|t|gap|sty)-\d+$/i;function Q(c,s,t){let e=te[c];if(!e)return null;let o=new RegExp(`^${e}-(\\d+)$`),u=0;for(let a of t){let p=o.exec(a);if(!p)continue;let m=Number(p[1]);Number.isSafeInteger(m)&&m>u&&(u=m)}let r=u+1;for(;s(`${e}-${r}`);)r+=1;return`${e}-${r}`}var re=/^L([1-9]\d*)-L([1-9]\d*)$/,ie=/^img#(p[1-9]\d*-[1-9]\d*|i[1-9]\d*)$/;function q(c){if(c==="img#whole")return{kind:"img-whole"};let s=ie.exec(c);if(s)return{kind:"img-part",ref:s[1]};let t=re.exec(c);return t?{kind:"lines",a:parseInt(t[1],10),b:parseInt(t[2],10)}:null}function se(c,s){let t=/^L(\d+)-L(\d+)$/.exec(s);if(!t)return null;let e=parseInt(t[1],10),o=parseInt(t[2],10),u=c.split(`
2
+ import{a as M,b as A,d as K}from"./chunk-6HYW5RFX.js";import{c as z,e as P}from"./chunk-J2KSZUOO.js";import{d as L,e as R,f as U,g as B,h as J}from"./chunk-5YPBPZUR.js";function Z(c,s){let t=c.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(t.length>60){let o=t.lastIndexOf("-",60);t=(o>0?t.slice(0,o):t.slice(0,60)).replace(/-+$/g,"")}if(!G.test(t))return null;let e=t;for(let o=2;s(e);o++)e=`${t}-${o}`;return G.test(e)?e:null}var ee={source:"src",usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"};function ae(c,s,t){let e=ee[c];return Z(e?`${e} ${s}`:s,t)}var te={usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"},ue=/^(uc|sc|ac|t|gap|sty)-\d+$/i;function Q(c,s,t){let e=te[c];if(!e)return null;let o=new RegExp(`^${e}-(\\d+)$`),u=0;for(let a of t){let p=o.exec(a);if(!p)continue;let m=Number(p[1]);Number.isSafeInteger(m)&&m>u&&(u=m)}let r=u+1;for(;s(`${e}-${r}`);)r+=1;return`${e}-${r}`}var re=/^L([1-9]\d*)-L([1-9]\d*)$/,ie=/^img#(p[1-9]\d*-[1-9]\d*|i[1-9]\d*)$/;function q(c){if(c==="img#whole")return{kind:"img-whole"};let s=ie.exec(c);if(s)return{kind:"img-part",ref:s[1]};let t=re.exec(c);return t?{kind:"lines",a:parseInt(t[1],10),b:parseInt(t[2],10)}:null}function se(c,s){let t=/^L(\d+)-L(\d+)$/.exec(s);if(!t)return null;let e=parseInt(t[1],10),o=parseInt(t[2],10),u=c.split(`
3
3
  `);return e<1||o<e||o>u.length?null:u.slice(e-1,o).map(r=>r.replace(/^\d+\| /,"")).join(`
4
4
  `)}function F(c,s,t){let e=q(s.anchor);if(c.format==="image")return e?.kind==="img-whole"?[]:[{code:"CITE_ANCHOR_INVALID",detail:`image cites are anchor-only (img#whole), got ${s.anchor}`}];if(e?.kind==="img-part")return new Set((c.images??[]).map(r=>r.ref)).has(e.ref)?[]:[{code:"CITE_ANCHOR_INVALID",detail:`anchor ${s.anchor} names no embedded image of this source version`}];if(!s.anchor||s.quote===void 0||s.quote==="")return[{code:"MISSING_CITE",detail:"text-kind cites need anchor+quote"}];let o=t!==null?se(t,s.anchor):null;return o===null?[{code:"BAD_ANCHOR",detail:`anchor ${s.anchor} does not resolve in the source`}]:o.includes(s.quote)?[]:[{code:"QUOTE_MISMATCH",detail:`quote is not verbatim within ${s.anchor}`}]}var G=/^[a-z0-9][a-z0-9-]{1,63}$/;function X(c,s,t,e){if(!s)return{error:{code:"SUPERSEDE_TARGET_MISSING",detail:"supersede verdict needs a target (slug or cid)"}};let o=c.resolve(s);return o?o.superseded||e.has(o.cid)?{error:{code:"ALREADY_SUPERSEDED",detail:`${s} is already superseded (tip: ${o.tip})`}}:o.cid===t?{error:{code:"SELF_SUPERSEDE",detail:"a node cannot supersede itself"}}:{targetCid:o.cid}:{error:{code:"UNKNOWN_SUPERSEDE_TARGET",detail:`${s} names nothing in the graph`}}}function oe(c,s,t,e,o=[]){if(!B(s)?.acyclic)return null;if(t===e)return{code:"EDGE_CYCLE",detail:`${s} ${t} \u2192 itself`};let r=m=>[...c.edgesFrom(m).filter(E=>E.type===s).map(E=>E.dst),...o.filter(E=>E.type===s&&E.src===m).map(E=>E.dst)],a=new Set,p=[e];for(;p.length>0;){let m=p.pop();if(m===t)return{code:"EDGE_CYCLE",detail:`${s} ${t} \u2192 ${e} closes a cycle`};a.has(m)||(a.add(m),p.push(...r(m)))}return null}function Ie(c,s,t,e){let u=B(s)?.cardinality;if(u!=="one-live-per-src"&&u!=="one-live-per-src-and-dst")return null;let r=c.edgesFrom(t).filter(a=>a.type===s&&!c.superseded.has(a.dst));if(r.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${s} from ${t} already has a live edge (${r[0].ecid}) \u2014 supersede it first`};if(u==="one-live-per-src-and-dst"&&e!==void 0){let a=c.edgesInto(e).filter(p=>p.type===s&&!c.superseded.has(p.src));if(a.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${s} onto ${e} already has a live edge (${a[0].ecid}) \u2014 strict 1:1, supersede it first`}}return null}var Y=new Set(["high","med","low"]);function ve(c,s,t){let e=[],o=t.mediaOf(c.source.source_cid),u=new Set;for(let r of c.use_cases){if(u.has(r.temp_ref)&&e.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${r.temp_ref}`}),u.add(r.temp_ref),(!r.title||!r.title.trim())&&e.push({code:"EMPTY_TITLE",detail:`${r.temp_ref}: title is empty`}),Y.has(r.risk)||e.push({code:"BAD_RISK",detail:`${r.temp_ref}: risk ${JSON.stringify(r.risk)} not in high|med|low`}),!r.cite||!r.cite.anchor)e.push({code:"MISSING_CITE",detail:`${r.temp_ref}: every derived use-case must carry a cite`});else for(let a of F(o,r.cite,s))e.push({code:a.code,detail:`${r.temp_ref}: ${a.detail}`});r.matches_existing&&!t.hasNode(r.matches_existing.cid)&&e.push({code:"UNKNOWN_MATCH",detail:`${r.temp_ref}: matches_existing ${r.matches_existing.cid} is not in the graph`});for(let[a,p]of(r.criteria??[]).entries())if((!p.text||!p.text.trim())&&e.push({code:"EMPTY_CRITERION",detail:`${r.temp_ref}.criteria[${a}]: text is empty`}),!p.cite||!p.cite.anchor)e.push({code:"MISSING_CITE",detail:`${r.temp_ref}.criteria[${a}]: every criterion carries its own cite`});else for(let m of F(o,p.cite,s))e.push({code:m.code,detail:`${r.temp_ref}.criteria[${a}]: ${m.detail}`});for(let[a,p]of(r.updated?.criteria??[]).entries())if((!p.text||!p.text.trim())&&e.push({code:"EMPTY_CRITERION",detail:`${r.temp_ref}.updated.criteria[${a}]: text is empty`}),!p.cite||!p.cite.anchor)e.push({code:"MISSING_CITE",detail:`${r.temp_ref}.updated.criteria[${a}]: every updated criterion carries its own cite`});else for(let m of F(o,p.cite,s))e.push({code:m.code,detail:`${r.temp_ref}.updated.criteria[${a}]: ${m.detail}`})}return e}function Ne(c){let{contextDir:s,graph:t,proposal:e,proposalId:o,verdicts:u,by:r,allowStaleBasis:a,extractorVersion:p,autoName:m}=c,E=z(s);if(!a&&e.read_basis!==E)return{record:null,errors:[{code:"STALE_BASIS",detail:`proposal read_basis ${String(e.read_basis)} != latest ${String(E)}`}]};if(!t.hasNode(e.source.source_cid))return{record:null,errors:[{code:"MISSING_SOURCE_NODE",detail:`source ${e.source.source_id} (${e.source.source_cid}) is not a committed node \u2014 ingest it first`}]};let f=[],h=t.mediaOf(e.source.source_cid),w=new Set,I=[],S=[],b=[],D=[],C=[],O=[],j=new Set,W=new Set,H=(i,n,V)=>{let x=X(t,n.supersedeTarget,V,j);if("error"in x){f.push({code:x.error.code,detail:`${i}: ${x.error.detail}`});return}j.add(x.targetCid),C.push({kind:"node",old:x.targetCid,new:V,reason:n.reason??`superseded via review by ${r.id}`,by:r})};for(let i of e.use_cases){let n=u.get(i.temp_ref)??{resolution:"skipped"};w.has(i.temp_ref)&&f.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${i.temp_ref}`}),w.add(i.temp_ref),(!i.title||!i.title.trim())&&f.push({code:"EMPTY_TITLE",detail:`${i.temp_ref}: title is empty`}),Y.has(i.risk)||f.push({code:"BAD_RISK",detail:`${i.temp_ref}: risk ${JSON.stringify(i.risk)} not in high|med|low`});let V=q(i.cite?.anchor??"");if(h.format==="image"){if(V?.kind!=="img-whole"){f.push({code:i.cite?.anchor?"CITE_ANCHOR_INVALID":"MISSING_CITE",detail:`${i.temp_ref}: image cites are anchor-only (img#whole)`});continue}}else if(V?.kind==="img-part"){if(!(h.images??[]).some(g=>g.ref===V.ref)){f.push({code:"CITE_ANCHOR_INVALID",detail:`${i.temp_ref}: anchor ${i.cite?.anchor} names no embedded image of this source version`});continue}}else if(!i.cite||!i.cite.anchor||!i.cite.quote){f.push({code:"MISSING_CITE",detail:`${i.temp_ref}: every derived use-case must cite anchor+quote`});continue}n.resolution==="edited"&&n.edit&&(n.edit.title!==void 0&&!n.edit.title.trim()&&f.push({code:"EMPTY_TITLE",detail:`${i.temp_ref}: edited title is empty`}),n.edit.risk!==void 0&&!Y.has(n.edit.risk)&&f.push({code:"BAD_RISK",detail:`${i.temp_ref}: edited risk ${JSON.stringify(n.edit.risk)} invalid`}));let x=K({title:n.edit?.title??i.title,description:i.description,summary:n.edit?.summary??i.summary,actors:i.actors,value:i.value,risk:n.edit?.risk??i.risk,...i.criteria&&i.criteria.length>0?{criteria:i.criteria.map(d=>d.text)}:{}}),_=M("usecase",x),y={source_id:e.source.source_id,source_cid:e.source.source_cid,anchor:i.cite.anchor,...i.cite.quote?{quote:i.cite.quote}:{}};if(i.matches_existing&&!t.hasNode(i.matches_existing.cid)){f.push({code:"UNKNOWN_MATCH",detail:`${i.temp_ref}: matches_existing ${i.matches_existing.cid} is not in the graph`});continue}let v=i.matches_existing?.cid??(t.hasNode(_)?_:null);if(v&&t.superseded.has(v)){let d=t.tipOf(v);v=t.superseded.has(d)?null:d}if(v){if(i.changed&&(n.resolution==="approved"||n.resolution==="edited")){let d=i.updated;if(!d||Object.keys(d).length===0){f.push({code:"CHANGED_NEEDS_PAYLOAD",detail:`${i.temp_ref}: changed:true needs an updated{...} payload naming the moved fields`});continue}let g=t.getNode(v)?.content??{},$=(d.criteria??[]).map(l=>typeof l=="string"?{text:l,cite:void 0}:l),T=K({title:n.edit?.title??d.title??String(g.title??i.title),...d.description??g.description?{description:d.description??g.description}:{},...n.edit?.summary??d.summary??g.summary?{summary:n.edit?.summary??d.summary??g.summary}:{},...d.actors??g.actors?{actors:d.actors??g.actors}:{},...d.value??g.value?{value:d.value??g.value}:{},risk:n.edit?.risk??d.risk??String(g.risk??i.risk),...d.criteria?$.length>0?{criteria:$.map(l=>l.text)}:{}:g.criteria?{criteria:g.criteria}:{}}),k=M("usecase",T);if(k!==v){for(let l of U("usecase",T))f.push({code:l.code,detail:`${i.temp_ref}: ${l.detail}`});I.push({cid:k,label:L.USECASE,content:T}),S.push({ecid:A("DERIVES",y.source_cid,k,y),type:R.DERIVES,src:y.source_cid,dst:k,props:y});for(let l of $){if(!l.cite)continue;let N={source_id:e.source.source_id,source_cid:e.source.source_cid,anchor:l.cite.anchor,...l.cite.quote?{quote:l.cite.quote}:{},claim:l.text};S.push({ecid:A("DERIVES",N.source_cid,k,N),type:R.DERIVES,src:N.source_cid,dst:k,props:N})}H(i.temp_ref,{resolution:"supersede",supersedeTarget:v,reason:n.reason??`matches-but-changed: ${e.source.source_id} moved (${Object.keys(d).join(", ")})`},k),D.push({id:k,kind:"review-item",resolution:n.resolution,edit:n.resolution==="edited"?{...n.edit}:null,reason:null,by:r});continue}for(let l of $){if(!l.cite)continue;let N={source_id:e.source.source_id,source_cid:e.source.source_cid,anchor:l.cite.anchor,...l.cite.quote?{quote:l.cite.quote}:{},claim:l.text};S.push({ecid:A("DERIVES",N.source_cid,v,N),type:R.DERIVES,src:N.source_cid,dst:v,props:N})}}n.resolution!=="rejected"&&(S.push({ecid:A("DERIVES",y.source_cid,v,y),type:R.DERIVES,src:y.source_cid,dst:v,props:y}),(n.resolution==="approved"||n.resolution==="edited"||n.resolution==="supersede")&&D.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:null,by:r}),n.resolution==="supersede"&&H(i.temp_ref,n,v));continue}for(let d of U("usecase",x))f.push({code:d.code,detail:`${i.temp_ref}: ${d.detail}`});for(let d of J(R.DERIVES,"source","usecase",y))f.push({code:d.code,detail:`${i.temp_ref}: ${d.detail}`});I.push({cid:_,label:L.USECASE,content:x}),S.push({ecid:A("DERIVES",y.source_cid,_,y),type:R.DERIVES,src:y.source_cid,dst:_,props:y});for(let d of i.criteria??[]){let g={source_id:e.source.source_id,source_cid:e.source.source_cid,anchor:d.cite.anchor,...d.cite.quote?{quote:d.cite.quote}:{},claim:d.text};S.push({ecid:A("DERIVES",g.source_cid,_,g),type:R.DERIVES,src:g.source_cid,dst:_,props:g})}for(let d of i.depends_on_hint??[]){let g=l=>l.toLowerCase().trim().replace(/\s+/g," "),$=null,T=t.resolve(d);if(T&&!T.superseded&&t.nodeLabel.get(T.cid)===L.USECASE&&($=T.cid),!$){for(let{cid:l,content:N}of t.byLabel(L.USECASE))if(!t.superseded.has(l)&&g(String(N.title??""))===g(d)){$=l;break}}if(!$){let l=I.find(N=>N.label===L.USECASE&&g(String(N.content.title??""))===g(d));l&&($=l.cid)}!$||$===_||oe(t,R.DEPENDS_ON,_,$,b)||b.some(l=>l.src===_&&l.dst===$)||(S.push({ecid:A(R.DEPENDS_ON,_,$,{reason:"extract hint"}),type:R.DEPENDS_ON,src:_,dst:$,props:{reason:"extract hint"}}),b.push({src:_,dst:$,type:R.DEPENDS_ON}))}if((n.resolution==="approved"||n.resolution==="edited"||n.resolution==="supersede")&&t.superseded.get(_)===null&&!j.has(_)&&C.push({kind:"node",old:_,new:_,reason:`re-minted after tombstone via review by ${r.id}`,by:r}),m){let d=Q("usecase",g=>W.has(g),t.names.keys());d!==null&&!t.nameOf.has(_)&&(W.add(d),O.push({cid:_,slug:d,by:r}))}n.resolution==="approved"?D.push({id:_,kind:"review-item",resolution:"approved",edit:null,reason:null,by:r}):n.resolution==="edited"?D.push({id:_,kind:"review-item",resolution:"edited",edit:{...n.edit},reason:null,by:r}):n.resolution==="rejected"?D.push({id:_,kind:"review-item",resolution:"rejected",edit:null,reason:n.reason??null,by:r}):n.resolution==="supersede"&&(D.push({id:_,kind:"review-item",resolution:"approved",edit:null,reason:n.reason??null,by:r}),H(i.temp_ref,n,_))}return f.length?{record:null,errors:f}:{record:P(s,{ts:new Date().toISOString(),proposal_id:o,...o!=null?{extraction_of:e.source.source_cid}:{},...o!=null&&p?{extractor_version:p}:{},nodes:I,edges:S,review:D,supersessions:C,...O.length>0?{names:O}:{},...c.judgements&&c.judgements.length>0?{judgements:c.judgements}:{},source_head_moves:{}},{expectPrev:E}).record,errors:null}}function ye(c){let{contextDir:s,graph:t,verdicts:e,by:o}=c,u=[],r=[],a=[],p=[],m=new Set;for(let[f,h]of e){if(h.resolution==="skipped")continue;let w=t.resolve(f);if(!w){u.push({code:"UNKNOWN_NODE",detail:`${f} names nothing in the graph`});continue}if(w.superseded){u.push({code:"SUPERSEDED_TARGET",detail:`${f} is superseded \u2014 review the tip (${w.tip})`});continue}let I=w.cid;if(h.resolution==="approved")a.push({id:I,kind:"review-item",resolution:"approved",edit:null,reason:null,by:o});else if(h.resolution==="rejected")a.push({id:I,kind:"review-item",resolution:"rejected",edit:null,reason:h.reason??null,by:o});else if(h.resolution==="edited"){let S=t.getNode(I);if(!S){u.push({code:"UNKNOWN_NODE",detail:`${f}: node file unreadable`});continue}let b={...S.content,...h.edit?.title!==void 0?{title:h.edit.title}:{},...h.edit?.summary!==void 0?{summary:h.edit.summary}:{},...h.edit?.risk!==void 0?{risk:h.edit.risk}:{}},D=U(S.label,b);if(D.length>0){for(let O of D)u.push({code:O.code,detail:`${f}: ${O.detail}`});continue}let C=M(S.label,b);if(C===I){a.push({id:I,kind:"review-item",resolution:"approved",edit:null,reason:null,by:o});continue}r.push({cid:C,label:S.label,content:b}),m.add(I),p.push({kind:"node",old:I,new:C,reason:h.reason??"edited in review",by:o}),a.push({id:C,kind:"review-item",resolution:"edited",edit:{...h.edit},reason:null,by:o})}else if(h.resolution==="supersede"){let S=X(t,h.supersedeTarget,I,m);if("error"in S){u.push({code:S.error.code,detail:`${f}: ${S.error.detail}`});continue}m.add(S.targetCid),p.push({kind:"node",old:S.targetCid,new:I,reason:h.reason??`superseded via review by ${o.id}`,by:o}),a.push({id:I,kind:"review-item",resolution:"approved",edit:null,reason:h.reason??null,by:o})}}return u.length?{record:null,errors:u}:a.length===0&&p.length===0?{record:null,errors:[{code:"NO_VERDICTS",detail:"every item was skipped \u2014 nothing to commit"}]}:{record:P(s,{ts:new Date().toISOString(),proposal_id:null,nodes:r,edges:[],review:a,supersessions:p,source_head_moves:{}},{expectPrev:t.latestHash}).record,errors:null}}function Re(c){let{contextDir:s,graph:t,assignments:e,by:o}=c,u=[],r=[],a=new Set;for(let{ref:m,slug:E}of e){if(!G.test(E)){u.push({code:"BAD_SLUG",detail:`${JSON.stringify(E)} \u2014 slugs are kebab-case ${String(G)}`});continue}let f=t.resolve(m);if(!f){u.push({code:"UNKNOWN_REF",detail:`${m} names nothing in the graph`});continue}if(f.superseded){u.push({code:"SUPERSEDED_TARGET",detail:`${m} is superseded \u2014 name the tip instead (${f.tip})`});continue}let h=t.names.get(E);if(h!==void 0&&!t.superseded.has(h)&&h!==f.cid||a.has(E)){u.push({code:"SLUG_TAKEN",detail:`${E} already names ${h??"another node in this record"}`});continue}a.add(E),r.push({cid:f.cid,slug:E,by:o})}return u.length?{record:null,errors:u}:r.length===0?{record:null,errors:[{code:"NO_ASSIGNMENTS",detail:"nothing to name"}]}:{record:P(s,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],names:r,source_head_moves:{}},{expectPrev:t.latestHash}).record,errors:null}}function De(c){let{contextDir:s,graph:t,sourceId:e,reason:o,by:u}=c,r=t.heads.get(e);return r===void 0?{record:null,errors:[{code:"UNKNOWN_SOURCE",detail:`no source ${e} in the graph`}]}:r===null?{record:null,errors:[{code:"ALREADY_RETIRED",detail:`source ${e} is already retired`}]}:{record:P(s,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:r,new:null,reason:o??`retired source ${e}`,by:u}],source_head_moves:{[e]:null},names:[]},{expectPrev:t.latestHash}).record,errors:null}}export{q as a,se as b,oe as c,Ie as d,ve as e,Ne as f,ye as g,Re as h,De as i,Z as j,ee as k,ae as l,ue as m,Q as n};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as N}from"./chunk-FHKDTM5L.js";import{a as b,b as O,c as k}from"./chunk-2XMJ6YAE.js";import{a as L,b as M}from"./chunk-BKM2LWU2.js";import{a as y,b as R,c as T,d as m,e as I,f as w,g as r}from"./chunk-Y5RNCJAN.js";import{b as x,d as A}from"./chunk-5EOX4MEY.js";import{a as E}from"./chunk-RZ4F3BHX.js";import{a as g,j as v}from"./chunk-2KS2YRIS.js";import{platform as X,arch as $}from"os";import D from"fs";import V from"fs";import q from"path";var Y=new Set(["org_id","user_id","plan"]);function C(t){let e={machine_id:k(),env:t};try{let n=JSON.parse(V.readFileSync(A(t),"utf8"));for(let[i,s]of Object.entries(n))Y.has(i)&&typeof s=="string"&&s.length>0&&s.length<=128&&(e[i]=s)}catch{}return e}import P from"fs";import B from"path";var F=1e3,d=0,a=class t{ids;logger;opts;ended=!1;constructor(e){this.ids=e.envelope,this.logger=e.logger,this.opts=e}get enabled(){return this.logger!==null}event(e,n={}){if(!this.logger)return;let i=m(this.ids,e,n);this.logger.log(y[e],e,e,U(i))}error(e,n={}){this.logger&&(this.logger.escalate(d),this.event("ASR_ERROR",{...n,error_code:e}))}child(e,n){return new t({...this.opts,envelope:{...this.ids,operation_id:n,parent_operation_id:this.ids.operation_id,verb:"design"}})}async lateBindContext(e){if(!(!this.logger||this.ids.context_instance_id))try{let{ensureStoreIds:n}=await import("./store-id-EOSGEKVK.js"),{ids:i,cloned:s}=n(e);this.ids.context_lineage_id=i.context_lineage_id,this.ids.context_instance_id=i.context_instance_id,s&&this.event("ASR_CONTEXT_CLONED")}catch{}}agentSession(e){this.ids.agent_session_id=e}spawnEnv(){if(!this.opts.telemetryEnabled)return{};let e={TESTMUAI_USER_SESSION_ID:this.ids.session_id,TESTMUAI_OPERATION_ID:this.ids.operation_id,TESTMUAI_CLIENT_VERSION:this.opts.clientVersion,TESTMUAI_TELEMETRY_PROXY_URL:this.opts.proxyUrl};return this.ids.context_instance_id&&(e.TESTMUAI_CONTEXT_INSTANCE_ID=this.ids.context_instance_id),e}traceTee(){return e=>{if(!this.logger)return;let n=typeof e.kind=="string"?e.kind.slice(0,64):"trace",i={...U(m(this.ids,"ASR_CMD_START",{})),trace_kind:n};typeof e.code=="string"&&(i.trace_code=e.code.slice(0,64)),delete i.event,this.logger.logStep(d,`trace_${n}`,n,i)}}wireTrace(e,n,i){if(!this.logger)return;i&&this.agentSession(i);let s=n&&typeof n=="object"?n:{};switch(e){case"spawn":this.event("ASR_AGENT_SPAWN",{tier:s.tier});break;case"session_paused":this.event("ASR_SESSION_PAUSED",s);break;case"commit":this.event("ASR_COMMIT",s);break;default:this.traceTee()({kind:e,code:typeof s.code=="string"?s.code:void 0})}}banner(){return`session: ${this.ids.session_id}`}supportFooter(){return`if this keeps failing, share this id with support: ${this.ids.session_id}`}async end(e){if(!this.ended){if(this.ended=!0,this.logger)if(e.exit_code===0?this.logger.discardSteps(d):this.logger.escalate(d),this.event("ASR_CMD_END",e),this.opts.longSession)await this.logger.shutdown();else{let n=await this.logger.flushOnce(F);(n==="failed"||n==="timeout")&&I(this.logger.drainBuffer())}this.logger&&this.writeManifestLine(e.exit_code),r(null)}}writeManifestLine(e){try{let n=x(this.ids.context_instance_id??null);P.mkdirSync(B.dirname(n),{recursive:!0});let i={ts:new Date().toISOString(),session_id:this.ids.session_id,operation_id:this.ids.operation_id,agent_session_id:this.ids.agent_session_id,verb:this.ids.verb,mode:this.ids.mode,exit_code:e};P.appendFileSync(n,JSON.stringify(i)+`
2
+ import{d as N}from"./chunk-FHKDTM5L.js";import{a as b,b as O,c as k}from"./chunk-2XMJ6YAE.js";import{a as L,b as M}from"./chunk-BKM2LWU2.js";import{a as y,b as R,c as T,d as m,e as I,f as w,g as r}from"./chunk-Y5RNCJAN.js";import{b as x,d as A}from"./chunk-5EOX4MEY.js";import{a as E}from"./chunk-RZ4F3BHX.js";import{a as g,j as v}from"./chunk-MMPFU2YC.js";import{platform as X,arch as $}from"os";import D from"fs";import V from"fs";import q from"path";var Y=new Set(["org_id","user_id","plan"]);function C(t){let e={machine_id:k(),env:t};try{let n=JSON.parse(V.readFileSync(A(t),"utf8"));for(let[i,s]of Object.entries(n))Y.has(i)&&typeof s=="string"&&s.length>0&&s.length<=128&&(e[i]=s)}catch{}return e}import P from"fs";import B from"path";var F=1e3,d=0,a=class t{ids;logger;opts;ended=!1;constructor(e){this.ids=e.envelope,this.logger=e.logger,this.opts=e}get enabled(){return this.logger!==null}event(e,n={}){if(!this.logger)return;let i=m(this.ids,e,n);this.logger.log(y[e],e,e,U(i))}error(e,n={}){this.logger&&(this.logger.escalate(d),this.event("ASR_ERROR",{...n,error_code:e}))}child(e,n){return new t({...this.opts,envelope:{...this.ids,operation_id:n,parent_operation_id:this.ids.operation_id,verb:"design"}})}async lateBindContext(e){if(!(!this.logger||this.ids.context_instance_id))try{let{ensureStoreIds:n}=await import("./store-id-EOSGEKVK.js"),{ids:i,cloned:s}=n(e);this.ids.context_lineage_id=i.context_lineage_id,this.ids.context_instance_id=i.context_instance_id,s&&this.event("ASR_CONTEXT_CLONED")}catch{}}agentSession(e){this.ids.agent_session_id=e}spawnEnv(){if(!this.opts.telemetryEnabled)return{};let e={TESTMUAI_USER_SESSION_ID:this.ids.session_id,TESTMUAI_OPERATION_ID:this.ids.operation_id,TESTMUAI_CLIENT_VERSION:this.opts.clientVersion,TESTMUAI_TELEMETRY_PROXY_URL:this.opts.proxyUrl};return this.ids.context_instance_id&&(e.TESTMUAI_CONTEXT_INSTANCE_ID=this.ids.context_instance_id),e}traceTee(){return e=>{if(!this.logger)return;let n=typeof e.kind=="string"?e.kind.slice(0,64):"trace",i={...U(m(this.ids,"ASR_CMD_START",{})),trace_kind:n};typeof e.code=="string"&&(i.trace_code=e.code.slice(0,64)),delete i.event,this.logger.logStep(d,`trace_${n}`,n,i)}}wireTrace(e,n,i){if(!this.logger)return;i&&this.agentSession(i);let s=n&&typeof n=="object"?n:{};switch(e){case"spawn":this.event("ASR_AGENT_SPAWN",{tier:s.tier});break;case"session_paused":this.event("ASR_SESSION_PAUSED",s);break;case"commit":this.event("ASR_COMMIT",s);break;default:this.traceTee()({kind:e,code:typeof s.code=="string"?s.code:void 0})}}banner(){return`session: ${this.ids.session_id}`}supportFooter(){return`if this keeps failing, share this id with support: ${this.ids.session_id}`}async end(e){if(!this.ended){if(this.ended=!0,this.logger)if(e.exit_code===0?this.logger.discardSteps(d):this.logger.escalate(d),this.event("ASR_CMD_END",e),this.opts.longSession)await this.logger.shutdown();else{let n=await this.logger.flushOnce(F);(n==="failed"||n==="timeout")&&I(this.logger.drainBuffer())}this.logger&&this.writeManifestLine(e.exit_code),r(null)}}writeManifestLine(e){try{let n=x(this.ids.context_instance_id??null);P.mkdirSync(B.dirname(n),{recursive:!0});let i={ts:new Date().toISOString(),session_id:this.ids.session_id,operation_id:this.ids.operation_id,agent_session_id:this.ids.agent_session_id,verb:this.ids.verb,mode:this.ids.mode,exit_code:e};P.appendFileSync(n,JSON.stringify(i)+`
3
3
  `,{flag:"a",mode:384})}catch{}}};function U(t){let e={event:t.event,session_id:t.session_id,operation_id:t.operation_id,verb:t.verb,mode:t.mode,component:t.component,seq:t.seq,context_lineage_id:t.context_lineage_id,context_instance_id:t.context_instance_id};t.parent_operation_id&&(e.parent_operation_id=t.parent_operation_id),t.agent_session_id&&(e.agent_session_id=t.agent_session_id);for(let[n,i]of Object.entries(t.context))e[n]=i;return e}var u=process.env.KANE_TELEMETRY_URL||v;function ve(){return process.env.TESTMUAI_BASE_URL?"custom":process.env.TESTMUAI_ENV==="stage"?"stage":"prod"}function Ee(t){let e=process.env.KANE_TELEMETRY!=="0"&&(!process.env.VITEST||process.env.KANE_TELEMETRY==="1"),n=t.env??"prod",i=null;if(t.resumeSid&&t.contextRoot)try{let o=N(t.contextRoot,t.resumeSid);o?.user_session_id&&(i=o.user_session_id)}catch{}if(!i&&t.applyPlanPath)try{let o=JSON.parse(D.readFileSync(t.applyPlanPath,"utf8"));o.telemetry?.user_session_id&&(i=o.telemetry.user_session_id)}catch{}let s=i!==null;i||(i=R());let l=null,c=null,f=!1;if(t.contextRoot&&D.existsSync(t.contextRoot))if(t.write&&e){let o=M(t.contextRoot);l=o.ids.context_lineage_id,c=o.ids.context_instance_id,f=o.cloned}else{let o=L(t.contextRoot);l=o?.context_lineage_id??null,c=o?.context_instance_id??null}let h={session_id:i,operation_id:T(),context_lineage_id:l,context_instance_id:c,verb:t.verb,mode:t.mode,component:"kane-cli"},_=null;if(e){let o=C(n),S={org_id:o.org_id??"",user_id:o.user_id??"",machine_id:o.machine_id,email:null,email_domain:"",user_type:"unknown",env:o.env,plan:o.plan??"unknown"},j=t.mode==="interactive"||t.mode==="cli"?"cli":"agent";_=new b({proxyUrl:u,sessionId:i,identity:S,device:{cli_version:g,platform:X(),arch:$(),host_agent:O(),invocation_mode:j},getToken:async()=>null}),t.longSession&&_.start()}let p=new a({envelope:h,logger:_,longSession:!!t.longSession,proxyUrl:u,clientVersion:`kane-cli/${g}`,telemetryEnabled:e});return e&&(r(h),p.event("ASR_CMD_START",{resumed:s,applied_plan:!!t.applyPlanPath}),f&&p.event("ASR_CONTEXT_CLONED"),w(async o=>{try{return(await E(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).ok}catch{return!1}}).catch(()=>{})),p}export{ve as a,Ee as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as G,b as R}from"./chunk-RGDQMKNJ.js";import{m as I}from"./chunk-A46NBRAP.js";import{a as L}from"./chunk-MBXWXBDM.js";import{e as N,g as M}from"./chunk-5YPBPZUR.js";import{existsSync as P,readFileSync as D}from"fs";function z(d){let n=R(d),g=new Map(Object.entries(n.heads)),l=new Map(Object.entries(n.trust)),a=new Map(Object.entries(n.nodeLabel)),i=new Map(Object.entries(n.superseded)),f=new Map(Object.entries(n.names)),T=new Map(Object.entries(n.archivedReason)),k=new Set(n.appliedEvents),E=new Map(Object.entries(n.conv)),q=e=>n.media[e]??{format:"text",media_type:"text/plain",anchors_supported:["L-L"]},h=new Map;for(let[e,t]of f)h.set(t,e);let m=new Map,C=e=>{if(m.has(e))return m.get(e);if(!a.has(e))return m.set(e,null),null;let t=G(d,e);if(!P(t))throw new L(`derived node file missing for ${e} \u2014 run kane-cli context rebuild`);let s=JSON.parse(D(t,"utf8"));return m.set(e,s),s},b=e=>{let t=e,s=new Set;for(;i.has(t)&&!s.has(t);){s.add(t);let r=i.get(t);if(typeof r!="string")break;t=r}return t},w=null,H=e=>{let t=h.get(e);if(t!==void 0)return t;if(w===null){w=new Map;for(let[c,o]of i)typeof o=="string"&&w.set(o,c)}let s=new Set,r=e;for(;!s.has(r);){s.add(r);let c=w.get(r);if(c===void 0)return null;let o=h.get(c);if(o!==void 0)return o;r=c}return null},x=e=>{I.test(e)&&(e=e.toLowerCase());let t=g.get(e),s=a.has(e)?e:f.get(e)??(typeof t=="string"?t:void 0);if(s===void 0||!a.has(s))return null;let r=b(s);return{cid:s,tip:r,superseded:i.has(s)||i.has(r)}},S=new Map;for(let e of Object.values(n.forward))for(let t of e){let s=S.get(t.dst);s?s.push(t):S.set(t.dst,[t])}let v=e=>(e??[]).filter(t=>!i.has(t.ecid)),O=e=>v(S.get(e)),y=e=>O(e).filter(t=>t.type===N.DERIVES),F=e=>v(n.forward[e]).some(t=>M(t.type)?.pin?.comparesTo==="dst_tip"&&i.has(t.dst)),_=e=>{if(i.has(e))return"superseded";let t=y(e);if(t.length===0)return F(e)?"stale":"fresh";let s=new Map;for(let o of t)s.set(o.props.source_id,o);let r=!1,c=!1;for(let[o,u]of s){let p=g.get(o);if(p!=null&&(r=!0,p!==u.props.source_cid)){let j=E.get(o)?.chain;(!j||!j.includes(u.props.source_cid))&&(c=!0)}}return r?c||F(e)?"stale":"fresh":"orphaned"};return{heads:g,trust:l,nodeLabel:a,superseded:i,names:f,nameOf:h,archivedReason:T,appliedEvents:k,convChains:E,mediaOf:q,extractedSourceCids:new Set(n.extracted),designOf:new Map(Object.entries(n.design_of??{})),latestHash:n.applied.hash,lastSeq:n.applied.seq,hasNode:e=>a.has(e),getNode:C,byLabel:e=>[...a.entries()].filter(([,t])=>t===e).map(([t])=>({cid:t,content:C(t)?.content??{}})),edgesFrom:e=>v(n.forward[e]),edgesInto:O,derivesInto:y,resolve:x,tipOf:b,displayNameOf:H,stale:_,staleList:()=>[...a.keys()].map(e=>({cid:e,state:_(e)})).filter(e=>e.state!=="fresh"),execHistory:e=>{let t=x(e);if(!t)return[];let s=b(t.cid),r=new Set([s]),c=!0;for(;c;){c=!1;for(let[u,p]of i)p!==null&&r.has(p)&&!r.has(u)&&(r.add(u),c=!0)}let o=[];for(let u of Object.entries(n.exec??{}))r.has(u[0])&&o.push(...u[1]);return o.sort((u,p)=>u.started_at<p.started_at?-1:1)}}}function B(d,n){if(d.stale(n)!=="stale")return!1;let g=new Map;for(let l of d.derivesInto(n))g.set(l.props.source_id,l);for(let[l,a]of g){let i=d.heads.get(l);if(i==null||i===a.props.source_cid)continue;let f=d.convChains.get(l)?.chain;if(!f||!f.includes(a.props.source_cid))return!0}for(let l of d.edgesFrom(n)){if(M(l.type)?.pin?.comparesTo!=="dst_tip"||!d.superseded.has(l.dst))continue;let a=d.tipOf(l.dst);if(d.superseded.has(a)||d.nodeLabel.get(a)==="usecase")return!0}return!1}export{z as a,B as b};
2
+ import{a as G,b as R}from"./chunk-FRBYGSGJ.js";import{m as I}from"./chunk-6W6AIDLJ.js";import{a as L}from"./chunk-J2KSZUOO.js";import{e as N,g as M}from"./chunk-5YPBPZUR.js";import{existsSync as P,readFileSync as D}from"fs";function z(d){let n=R(d),g=new Map(Object.entries(n.heads)),l=new Map(Object.entries(n.trust)),a=new Map(Object.entries(n.nodeLabel)),i=new Map(Object.entries(n.superseded)),f=new Map(Object.entries(n.names)),T=new Map(Object.entries(n.archivedReason)),k=new Set(n.appliedEvents),E=new Map(Object.entries(n.conv)),q=e=>n.media[e]??{format:"text",media_type:"text/plain",anchors_supported:["L-L"]},h=new Map;for(let[e,t]of f)h.set(t,e);let m=new Map,C=e=>{if(m.has(e))return m.get(e);if(!a.has(e))return m.set(e,null),null;let t=G(d,e);if(!P(t))throw new L(`derived node file missing for ${e} \u2014 run kane-cli context rebuild`);let s=JSON.parse(D(t,"utf8"));return m.set(e,s),s},b=e=>{let t=e,s=new Set;for(;i.has(t)&&!s.has(t);){s.add(t);let r=i.get(t);if(typeof r!="string")break;t=r}return t},w=null,H=e=>{let t=h.get(e);if(t!==void 0)return t;if(w===null){w=new Map;for(let[c,o]of i)typeof o=="string"&&w.set(o,c)}let s=new Set,r=e;for(;!s.has(r);){s.add(r);let c=w.get(r);if(c===void 0)return null;let o=h.get(c);if(o!==void 0)return o;r=c}return null},x=e=>{I.test(e)&&(e=e.toLowerCase());let t=g.get(e),s=a.has(e)?e:f.get(e)??(typeof t=="string"?t:void 0);if(s===void 0||!a.has(s))return null;let r=b(s);return{cid:s,tip:r,superseded:i.has(s)||i.has(r)}},S=new Map;for(let e of Object.values(n.forward))for(let t of e){let s=S.get(t.dst);s?s.push(t):S.set(t.dst,[t])}let v=e=>(e??[]).filter(t=>!i.has(t.ecid)),O=e=>v(S.get(e)),y=e=>O(e).filter(t=>t.type===N.DERIVES),F=e=>v(n.forward[e]).some(t=>M(t.type)?.pin?.comparesTo==="dst_tip"&&i.has(t.dst)),_=e=>{if(i.has(e))return"superseded";let t=y(e);if(t.length===0)return F(e)?"stale":"fresh";let s=new Map;for(let o of t)s.set(o.props.source_id,o);let r=!1,c=!1;for(let[o,u]of s){let p=g.get(o);if(p!=null&&(r=!0,p!==u.props.source_cid)){let j=E.get(o)?.chain;(!j||!j.includes(u.props.source_cid))&&(c=!0)}}return r?c||F(e)?"stale":"fresh":"orphaned"};return{heads:g,trust:l,nodeLabel:a,superseded:i,names:f,nameOf:h,archivedReason:T,appliedEvents:k,convChains:E,mediaOf:q,extractedSourceCids:new Set(n.extracted),designOf:new Map(Object.entries(n.design_of??{})),latestHash:n.applied.hash,lastSeq:n.applied.seq,hasNode:e=>a.has(e),getNode:C,byLabel:e=>[...a.entries()].filter(([,t])=>t===e).map(([t])=>({cid:t,content:C(t)?.content??{}})),edgesFrom:e=>v(n.forward[e]),edgesInto:O,derivesInto:y,resolve:x,tipOf:b,displayNameOf:H,stale:_,staleList:()=>[...a.keys()].map(e=>({cid:e,state:_(e)})).filter(e=>e.state!=="fresh"),execHistory:e=>{let t=x(e);if(!t)return[];let s=b(t.cid),r=new Set([s]),c=!0;for(;c;){c=!1;for(let[u,p]of i)p!==null&&r.has(p)&&!r.has(u)&&(r.add(u),c=!0)}let o=[];for(let u of Object.entries(n.exec??{}))r.has(u[0])&&o.push(...u[1]);return o.sort((u,p)=>u.started_at<p.started_at?-1:1)}}}function B(d,n){if(d.stale(n)!=="stale")return!1;let g=new Map;for(let l of d.derivesInto(n))g.set(l.props.source_id,l);for(let[l,a]of g){let i=d.heads.get(l);if(i==null||i===a.props.source_cid)continue;let f=d.convChains.get(l)?.chain;if(!f||!f.includes(a.props.source_cid))return!0}for(let l of d.edgesFrom(n)){if(M(l.type)?.pin?.comparesTo!=="dst_tip"||!d.superseded.has(l.dst))continue;let a=d.tipOf(l.dst);if(d.superseded.has(a)||d.nodeLabel.get(a)==="usecase")return!0}return!1}export{z as a,B as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as u,b as x}from"./chunk-6NWPK2MS.js";import{y as m}from"./chunk-2KS2YRIS.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as r,b as i}from"./chunk-C44QQJR4.js";import{e as n}from"./chunk-UR6MHSHU.js";var e=n(f(),1);function C({title:B,titleColor:c,borderColor:d,variant:p,rows:s,footer:t,labelWidth:l=14,marginBottom:b=1}){return(0,e.jsxs)(u,{title:B,titleColor:c,borderColor:d,variant:p,marginBottom:b,children:[s.map((o,a)=>typeof o.value=="string"?(0,e.jsx)(x,{label:o.label,value:o.value,valueColor:o.valueColor,labelWidth:l},`${o.label}-${a}`):(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:l,children:(0,e.jsx)(i,{color:m.dim,children:o.label})}),o.value]},`${o.label}-${a}`)),t&&(0,e.jsx)(r,{marginTop:1,children:t})]})}export{C as a};
2
+ import{a as u,b as x}from"./chunk-QJIJC3KC.js";import{y as m}from"./chunk-MMPFU2YC.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as r,b as i}from"./chunk-C44QQJR4.js";import{e as n}from"./chunk-UR6MHSHU.js";var e=n(f(),1);function C({title:B,titleColor:c,borderColor:d,variant:p,rows:s,footer:t,labelWidth:l=14,marginBottom:b=1}){return(0,e.jsxs)(u,{title:B,titleColor:c,borderColor:d,variant:p,marginBottom:b,children:[s.map((o,a)=>typeof o.value=="string"?(0,e.jsx)(x,{label:o.label,value:o.value,valueColor:o.valueColor,labelWidth:l},`${o.label}-${a}`):(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:l,children:(0,e.jsx)(i,{color:m.dim,children:o.label})}),o.value]},`${o.label}-${a}`)),t&&(0,e.jsx)(r,{marginTop:1,children:t})]})}export{C as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-W54W762O.js";import{y as s}from"./chunk-2KS2YRIS.js";import{a as w}from"./chunk-HCBYKLMW.js";import{a as x,b as t,c as h,i as P,j as S}from"./chunk-C44QQJR4.js";import{a as C}from"./chunk-6YGTRKDT.js";import{e as T}from"./chunk-UR6MHSHU.js";var o=T(C(),1);var e=T(w(),1);function D({defaultName:i,onSubmit:c}){let[d,p]=(0,o.useState)("confirm"),[f,a]=(0,o.useState)(""),[m,u]=(0,o.useState)(null),l=(0,o.useMemo)(()=>f.trim()||i,[f,i]);return P((n,r)=>{if(d==="confirm"){if(n==="y"||n==="Y"){a(i),p("name");return}if(n==="n"||n==="N"||r.escape||r.ctrl&&n==="c"){c(null);return}if(r.return){c(i);return}return}if(r.return){if(!B(l)){u(`name "${l}" is invalid; allowed: letters, digits, underscore, hyphen`);return}c(l);return}if(r.escape||r.ctrl&&n==="c"){c(null);return}if(r.backspace||r.delete){a(v=>v.slice(0,-1)),u(null);return}n&&!r.ctrl&&!r.meta&&(a(v=>v+n),u(null))}),d==="confirm"?(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsx)(t,{color:s.orange,children:i})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save with this name"}),(0,e.jsx)(t,{color:s.dim,children:"Y \u2014 edit name"}),(0,e.jsx)(t,{color:s.dim,children:"N/esc \u2014 discard session"})]})}):(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsxs)(x,{children:[(0,e.jsx)(t,{color:s.orange,children:f}),(0,e.jsx)(t,{inverse:!0,children:" "})]})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[m&&(0,e.jsx)(t,{color:s.red,children:m}),(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save \xB7 esc \u2014 discard"})]})})}function V(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}async function Y(i){return new Promise(c=>{function d(){let{exit:a}=S(),[m,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{if(m){let l=setTimeout(()=>a(),50);return()=>clearTimeout(l)}},[m,a]),(0,e.jsx)(D,{defaultName:i,onSubmit:l=>{c(l),u(!0)}})}let{waitUntilExit:p,unmount:f}=h((0,e.jsx)(d,{}),{stdout:process.stderr,exitOnCtrlC:!1});p().then(()=>{try{f()}catch{}})})}export{D as a,V as b,Y as c};
2
+ import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-7MRBMDZ5.js";import{y as s}from"./chunk-MMPFU2YC.js";import{a as w}from"./chunk-HCBYKLMW.js";import{a as x,b as t,c as h,i as P,j as S}from"./chunk-C44QQJR4.js";import{a as C}from"./chunk-6YGTRKDT.js";import{e as T}from"./chunk-UR6MHSHU.js";var o=T(C(),1);var e=T(w(),1);function D({defaultName:i,onSubmit:c}){let[d,p]=(0,o.useState)("confirm"),[f,a]=(0,o.useState)(""),[m,u]=(0,o.useState)(null),l=(0,o.useMemo)(()=>f.trim()||i,[f,i]);return P((n,r)=>{if(d==="confirm"){if(n==="y"||n==="Y"){a(i),p("name");return}if(n==="n"||n==="N"||r.escape||r.ctrl&&n==="c"){c(null);return}if(r.return){c(i);return}return}if(r.return){if(!B(l)){u(`name "${l}" is invalid; allowed: letters, digits, underscore, hyphen`);return}c(l);return}if(r.escape||r.ctrl&&n==="c"){c(null);return}if(r.backspace||r.delete){a(v=>v.slice(0,-1)),u(null);return}n&&!r.ctrl&&!r.meta&&(a(v=>v+n),u(null))}),d==="confirm"?(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsx)(t,{color:s.orange,children:i})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save with this name"}),(0,e.jsx)(t,{color:s.dim,children:"Y \u2014 edit name"}),(0,e.jsx)(t,{color:s.dim,children:"N/esc \u2014 discard session"})]})}):(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsxs)(x,{children:[(0,e.jsx)(t,{color:s.orange,children:f}),(0,e.jsx)(t,{inverse:!0,children:" "})]})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[m&&(0,e.jsx)(t,{color:s.red,children:m}),(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save \xB7 esc \u2014 discard"})]})})}function V(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}async function Y(i){return new Promise(c=>{function d(){let{exit:a}=S(),[m,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{if(m){let l=setTimeout(()=>a(),50);return()=>clearTimeout(l)}},[m,a]),(0,e.jsx)(D,{defaultName:i,onSubmit:l=>{c(l),u(!0)}})}let{waitUntilExit:p,unmount:f}=h((0,e.jsx)(d,{}),{stdout:process.stderr,exitOnCtrlC:!1});p().then(()=>{try{f()}catch{}})})}export{D as a,V as b,Y as c};
@@ -0,0 +1,4 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as Z,d as ee,e as te,f as ne}from"./chunk-GG43HSU2.js";import{b as B,d as Y}from"./chunk-FMR2KPSK.js";import{d as X}from"./chunk-NVGBE2DR.js";var oe=new Set(["approve","edit","reject"]);function ae(r,t){return`chatop:${t}:${r.target??"new"}:${r.op}:${r.seq}`}function ue(r,t,k,h){let u=ae(r,t),f=r.payload;switch(r.op){case"approve":return{kind:"approve",target:r.target,expectedCid:r.expected_cid,eventId:u};case"edit":{let{reason:i,...b}=f;return{kind:"edit",target:r.target,expectedCid:r.expected_cid,edit:b,reason:i,eventId:u}}case"enhance":return{kind:"enhance",target:r.target,expectedCid:r.expected_cid,edges:f.edges??[],eventId:u};case"reject":return{kind:"reject",target:r.target,expectedCid:r.expected_cid,reason:f.reason??"",redirectTo:f.redirect_to,eventId:u};case"add":{let i=f.proposal_item??{},b=String(i.label??"");if(!k.mint_gate.includes(b))throw new Error(`GATED_LABEL: cannot mint "${b}" (gate: ${k.mint_gate.join(", ")})`);let c=i.cite??{},p=i.conv_source_id??h;if(!p||typeof c.turn!="number"||!c.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:b,content:i.content??{},cite:{turn:c.turn,quote:c.quote},convSourceId:p,rationale:i.rationale,eventId:u}}}}function ie(r,t,k={}){let h=k.turn??0,u=[],f=[];for(let c of r)(c.op==="add"||c.op==="enhance")&&f.push(c);let i=new Map;for(let c of r){if(!oe.has(c.op)||!c.target)continue;let p=i.get(c.target)??[];p.push(c),i.set(c.target,p)}for(let[c,p]of i){let w=Math.max(...p.map(_=>_.seq)),C=p.filter(_=>_.seq===w);if(C.length>1){u.push({target:c,seq:w,kinds:C.map(_=>_.op)});continue}f.push(C[0])}return{chatOps:f.sort((c,p)=>c.seq-p.seq).map(c=>ue(c,h,t,k.convSourceId)),ambiguous:u}}function ce(r){let t=[];return r.questions.forEach((k,h)=>{if(r.resolution[h])return;let u=k.recommended_index!=null?k.options[k.recommended_index]?.label:void 0;u!=null&&t.push(k.risk==="high"?`${u} \u203C`:u)}),t.length>3?`${t.slice(0,3).join(" \xB7 ")} \xB7 +${t.length-3} more`:t.join(" \xB7 ")}function re(r){let t=r.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function de(r){return r.use_cases??[]}var le={acs:"acceptance criteria",scenarios:"scenarios",exercises:"exercises",tests:"tests",gaps:"gaps"};function ge(r){let t=[],k=[],h=(i,b)=>{b.length!==0&&(k.push(i),t.push(...b))},u=i=>typeof i=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(i)?i:null,f=i=>{let b=u(i.automates)??"1 scenario",c=i.verifies??[],p=c.map(u).filter(_=>_!==null).slice(0,2),w=c.length-p.length,C=p.length?`${p.join(" ")}${w>0?` +${w}`:""}`:`${c.length} ACs`;return`covers ${b} \xB7 verifies ${C}`};return h("acs",(r.acs??[]).map(i=>({temp_ref:i.temp_ref,title:i.text,kind:"ac",badge:String(i.kind),extra:{...i.expected_answer?{expects:`${String(i.expected_answer.operator??"")} \xB7 ${String(i.expected_answer.operand??"")}`}:{},"scoped to":i.scoped_to??"(use-case)"}}))),h("scenarios",(r.scenarios??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"scenario",badge:i.case_type,why:i.intent,depends_on_hint:i.depends_on??[],extra:{technique:i.technique_notes}}))),h("exercises",(r.exercises??[]).map(i=>({temp_ref:u(i.scenario)??"wiring",title:`${u(i.scenario)??"scenario"} exercises ${u(i.ac)??"1 AC"}`,kind:"exercise",badge:"wires",why:i.rationale}))),h("tests",(r.tests??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"test",why:f(i),depends_on_hint:i.reuses??[],extra:{automates:String(i.automates??"?"),verifies:(i.verifies??[]).join(", "),check:i.check?`${String(i.check.kind)} vs ${String(i.check.verified_against)}`:"?"}}))),h("gaps",(r.gaps??[]).map(i=>({temp_ref:i.temp_ref??i.ref??"?",title:String(i.question?.header??i.kind),kind:"gap",badge:i.kind,why:i.risk_rationale}))),{items:t,heading:k.join(" + ")||"design"}}function be(r={}){let t={turns:[],thinking:ee(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},k=e=>{let n=[],s=e.minted.map(a=>a.slug).filter(Boolean);s.length&&n.push(`added ${s.join(", ")}`);let o=e.applied.length-e.minted.length;return o>0&&n.push(`${o} change${o===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},h=[];r.onRender&&h.push(r.onRender);let u=0,f=0,i=null,b=null,c=null,p=[],w=0,C=e=>{if(!(!c||!r.contextDir||!e.trim()))try{let n=r.refreshGraph?.()??r.graph;if(!n)return;Y({contextDir:r.contextDir,graph:n,sourceId:c,text:e,by:r.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!c||!r.contextDir)return;let n=r.refreshGraph?.()??r.graph,s=n?.heads.get(c),o=n?.convChains.get(c);if(!n||typeof s!="string"||!o)return;let a=n.getNode(s)?.content?.blob,g=typeof a=="string"?X(r.contextDir,a)?.toString("utf8")??"":"";if(g)for(let y of e){if(y.kind!=="add"||y.convSourceId!==c)continue;let E=B(g,y.cite.turn);if(!(E!==null&&E.includes(y.cite.quote)))for(let S=o.turns;S>=1;S--){let N=B(g,S);if(N!==null&&N.includes(y.cite.quote)){y.cite={...y.cite,turn:S};break}}}},P=null,F=new Map,Q=new Map,G=null,m=()=>{M&&(clearTimeout(M),M=null);for(let e of h)e()},M=null,U=()=>{M||(M=setTimeout(()=>{M=null;for(let e of h)e()},80))},l=e=>{t.ledger.push(e)},R=null,O=!1,q=(e=!1)=>{R?l({kind:"agent",text:R}):e&&O&&l({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),R=null,O=!1},se=()=>{R=null,O=!1},A=null,W=e=>{if(A){if(e)for(let n of A.items){let s=e.get(n.temp_ref);s&&(n.logical_id=s)}l({kind:"turn",...A}),A=null}},T=()=>{W(),t.activeTurn&&(t.activeTurn=null)},z=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),L=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(o=>o===null);return}let n=e.questions.map((o,a)=>{let g=e.resolution[a];return g.form==="deferred"?{id:o.id,selected_index:null,free_text:null}:g.free_text!=null?{id:o.id,selected_index:null,free_text:g.free_text}:{id:o.id,selected_index:g.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming",t.status==="streaming"&&(t.busySince=Date.now());let s=P;P=null,s?.(n)},j=(e,n)=>{let s=t.pending,o=s.questions[e],a=s.resolution[e];s.resolution[e]=n;let g=re(o);a?l({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:g,choice:z(o,n),prev:a.choice}}):n.form==="deferred"?l({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:g}}):l({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:g,choice:z(o,n)}})},H=()=>{let e=t.pending;e&&(e.questions.forEach((n,s)=>{e.resolution[s]||j(s,{form:"deferred",selected_index:null,free_text:null,choice:""})}),L())},I=new Map,K=e=>{I.clear();let n={high:0,med:1,low:2};return e=e.map((s,o)=>({q:s,i:o})).sort((s,o)=>(n[s.q.risk]??3)-(n[o.q.risk]??3)||s.i-o.i).map(({q:s})=>s),{questions:e,cursor:0,resolution:e.map(()=>null)}};return{state:t,explainLines(e){if(!r.explain||!r.graph||r.contextDir===void 0)return null;let n=r.explain(r.contextDir,r.graph,e);return n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)]:null},explainRef(e){if(!r.explain||!r.graph||r.contextDir===void 0){l({kind:"note",text:"explain isn't available here"}),m();return}let n=r.explain(r.contextDir,r.graph,e),s=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(o=>` [${o.kind}] ${o.rationale??o.detail}`)].join(`
3
+ `):`unknown ref: ${e}`;l({kind:"note",text:s}),m()},subscribe(e){return h.push(e),()=>{let n=h.indexOf(e);n>=0&&h.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),!t.pending){if(!i){t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",m();return}for(t.notice=void 0,t.checkpoint=!1,q(),t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,f+=1;p.length>0;)f+=1,i({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});i({type:"user_message",message_id:`u${f}`,text:e}),m()}},attachSender(e){let n=i;return i=e,()=>{i=n}},attachOnCommitted(e){b=e},attachConversationSource(e){c=e},holdReceipt(e){p.push(e),t.checkpoint=!0,m()},drainHeldReceipts(){return p.splice(0,p.length)},submitAnswer(e,n){let s=t.pending,o=s?.questions[e],a=o?.options[n]?.label;!s||!o||a==null||(j(e,{form:"answered",selected_index:n,free_text:null,choice:a}),L(),m())},submitFreeText(e,n){let s=t.pending,o=s?.questions[e],a=n.trim();!s||!o||!a||(j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m())},toggleOption(e,n){let s=t.pending?.questions[e];if(!s||s.options[n]==null)return;let o=I.get(e)??new Set;o.has(n)?o.delete(n):o.add(n),I.set(e,o),m()},multiSelection(e){return[...I.get(e)??[]].sort((n,s)=>n-s)},confirmMulti(e){let n=t.pending,s=n?.questions[e];if(!n||!s)return;let o=[...I.get(e)??[]].sort((g,y)=>g-y).map(g=>s.options[g]?.label).filter(g=>g!=null);if(o.length===0)return;I.delete(e);let a=o.join(", ");j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m()},goWithRecommendations(){let e=t.pending;if(!e)return{picks:""};let n=ce(e),s=null;return e.questions.forEach((o,a)=>{if(e.resolution[a])return;let g=o.recommended_index,y=g!=null?o.options[g]?.label:void 0;if(y==null){s===null&&(s=a);return}j(a,{form:"assumed",selected_index:g,free_text:null,choice:y})}),s!==null?(e.cursor=s,m(),{blocked:s}):(L(),m(),{picks:n})},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let s=n-1;s>=0;s--)if(e.resolution[s]){e.cursor=s,m();return}},continueParked(){if(i){for(t.checkpoint=!1,l({kind:"continued"});p.length>0;)f+=1,i({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});f+=1,i({type:"user_message",message_id:`u${f}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),m()}},note(e){l({kind:"note",text:e}),m()},aliasOf(e){return Q.get(e)},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid);W(new Map(e.filter(n=>n.id).map(n=>[n.ref,n.id]))),m()},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0,t.busySince=void 0}m()},ledger(e){e.kind==="commit"&&W(),(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(T(),q()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),l(e),e.kind==="commit"&&(e.ok?q(!0):se()),m()},senderAlive(){return i!=null},completeSession(){H(),i?.({type:"session_complete"}),t.status="idle",t.busySince=void 0,m()},requestPause(){H(),t.status="pausing",t.busySince=void 0;let e=i;Promise.resolve().then(()=>e?.({type:"pause"})),m()},ask(e){return t.pending=K(e),F=new Map(e.map((n,s)=>[n.id,s+1])),t.status="awaiting-input",t.busySince=void 0,m(),new Promise(n=>{P=n})},noteCoercion(e,n){l({kind:"answer",receipt:{form:"assumed",qNum:F.get(e.id)??0,stub:re(e),choice:n,note:"your typed answer couldn't be used here"}}),m()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=ne(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)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 s=`\xB7 ${te(e)}`,o=t.ledger.length-1;for(;o>=0&&t.ledger[o].kind==="tool";)o--;let a=t.ledger[o];a&&a.kind==="note"&&a.text===s||l({kind:"note",text:s})}}if(e.type==="reasoning_delta"){U();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=G;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(G={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},U();return}case"progress":break;case"proposal":{u+=1,T(),t.stream=null,t.busySince&&(l({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=de(e.proposal),s=r.dedupFlags?.(e.proposal);if(s)for(let o of n){let a=s.get(o.temp_ref);a&&(o.matches_existing=a)}t.turns.push({role:"agent",turnIndex:u,items:n,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:u,heading:"use-cases",items:n},A={turnIndex:u,heading:"use-cases",items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{u+=1,T(),t.stream=null,t.busySince&&(l({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:s}=ge(e.design),o=e.design.phase==="wiring"?"acceptance criteria + exercises":s.split(" + ").map(a=>le[a]??a).join(" + ");l({kind:"banner",text:`designing: ${o}`}),t.turns.push({role:"agent",turnIndex:u,items:n,itemsHeading:s,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:u,heading:s,items:n},A={turnIndex:u,heading:s,items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=K(e.questions),t.status="awaiting-input",t.busySince=void 0;break;case"chat_ops":{u+=1,T(),t.stream=null,t.status==="streaming"&&(t.status="idle",t.busySince=void 0);let n=e.chat_ops??e,s=Array.isArray(n.ops)?n.ops:[],o=n.text??e.text??"",a=r.refreshGraph?.()??r.graph,g=d=>Q.get(d)??d,y=s.map(d=>{if(!d.target)return d;let x=g(d.target),v=d.expected_cid;if(v==null&&a){let J=a.resolve(x);J&&(v=a.tipOf(J.cid))}let $=d.payload?.redirect_to,D=$&&g($);return x===d.target&&v===d.expected_cid&&D===$?d:{...d,target:x,expected_cid:v,...D!==$?{payload:{...d.payload,redirect_to:D}}:{}}}),E;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");E=ie(y,r.descriptor??{mint_gate:[]},{turn:u,...c?{convSourceId:c}:{}})}catch(d){t.error=d instanceof Error?d.message:String(d),t.turns.push({role:"agent",turnIndex:u,text:o,narration:t.error}),o&&l({kind:"agent",text:o}),l({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:N}=E;if(N.length>0){let d=N[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${d.kinds.filter(x=>x!=="edit").join("/")} on ${d.target}?`},t.turns.push({role:"agent",turnIndex:u,text:o}),o&&l({kind:"agent",text:o});break}if(_(S),r.commitChatTurn&&S.length>0){let d=r.commitChatTurn({contextDir:r.contextDir??"",graph:r.refreshGraph?.()??r.graph,ops:S,by:r.by??{kind:"human",id:"owner"},...r.descriptor?.mint_gate?{mintable:r.descriptor.mint_gate}:{}});if(d.errors)t.error=d.errors.map(x=>x.detail).join("; "),t.turns.push({role:"agent",turnIndex:u,text:o}),l({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:d.errors.map(x=>`${x.code}: ${x.detail}`)}),p.push(["COMMIT FAILED (chat turn) \u2014 nothing landed; do not assume any of your last ops applied.",...d.errors.map(x=>`- ${x.code}: ${x.detail}`),...d.errors.some(x=>x.code==="UNKNOWN_FIELD")?["If you were changing citations or matched-existing content, that is proposal territory (approve/re-propose) \u2014 a chat edit can only replace a node's own schema fields."]:[]].join(`
4
+ `)),o&&l({kind:"agent",text:o});else{d.applied.length>0&&r.session?.markApplied(d.applied);let x=k(d);t.turns.push({role:"agent",turnIndex:u,text:o,narration:x}),l({kind:"commit",ok:!0,line:x});let v=r.refreshGraph?.();if(v&&b&&b(v),v)try{w+=1;let V=r.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=Z({verb:V,commitN:w,phase:"chat",committed:d.minted.map(D=>({cid:D.cid,...D.slug?{logical_id:D.slug}:{}}))},v);p.push($.text)}catch{}o&&l({kind:"agent",text:o})}}else t.turns.push({role:"agent",turnIndex:u,text:o}),o&&l({kind:"agent",text:o});C(o);break}case"done":case"session_complete":T(),q(),t.status="idle",t.busySince=void 0,i=null;break;case"error":T(),q(),t.stream=null,t.status="idle",t.busySince=void 0,t.error=e.message,i=null,l({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}m()}}}export{ce as a,re as b,be as c};