flavor-code 1.3.23 → 1.4.0-beta.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 (156) hide show
  1. package/README.md +437 -434
  2. package/README.zh-CN.md +434 -431
  3. package/dist/agent/loop.d.ts +3 -0
  4. package/dist/{app-NTEUPJKJ.js → app-H7RYDMD3.js} +45 -157
  5. package/dist/{chunk-7OICVL2M.js → chunk-2BF7CVWZ.js} +0 -42
  6. package/dist/{chunk-VEUSROUQ.js → chunk-3BHKW5A7.js} +1 -1
  7. package/dist/{chunk-SUSLIHXO.js → chunk-IQAZ42TM.js} +1 -1
  8. package/dist/{chunk-RPFWB45Y.js → chunk-KBHWS7M6.js} +5 -5
  9. package/dist/{chunk-Z62P4LL7.js → chunk-NIKCPCJG.js} +9345 -8623
  10. package/dist/{chunk-RQTYHUMK.js → chunk-ZJCAQXA7.js} +17 -1
  11. package/dist/{claude-ink-6CEG2XZZ.js → claude-ink-ECZ6QF3P.js} +2 -3
  12. package/dist/cli-main.js +27 -11
  13. package/dist/config/load.d.ts +2 -0
  14. package/dist/desktop/main.js +1550 -816
  15. package/dist/desktop-renderer/assets/index-Bk6FYhyh.css +1 -0
  16. package/dist/desktop-renderer/assets/{index-D75ozXnZ.js → index-CYd5JkTR.js} +3 -3
  17. package/dist/desktop-renderer/assets/{interactive-terminal-CTFo4fK9.js → interactive-terminal-j52Ty3QO.js} +1 -1
  18. package/dist/desktop-renderer/index.html +2 -2
  19. package/dist/doctor.d.ts +38 -0
  20. package/dist/execution/docker.d.ts +5 -1
  21. package/dist/execution/types.d.ts +11 -0
  22. package/dist/git/service.d.ts +3 -3
  23. package/dist/git/tools.d.ts +1 -1
  24. package/dist/harness/local.d.ts +2 -0
  25. package/dist/init/project.d.ts +0 -6
  26. package/dist/jobs/registry.d.ts +2 -1
  27. package/dist/{load-4FWNXE6F.js → load-SLSL3IWR.js} +1 -1
  28. package/dist/sdk/index.js +4 -4
  29. package/dist/tools/lsp.d.ts +13 -10
  30. package/dist/tools/runtime.d.ts +2 -1
  31. package/dist/tools/search.d.ts +1 -0
  32. package/dist/tools/shell.d.ts +17 -12
  33. package/dist/tools/types.d.ts +2 -1
  34. package/dist/ui/commands.d.ts +1 -1
  35. package/dist/ui/session.d.ts +1 -0
  36. package/dist/update/check.d.ts +20 -0
  37. package/dist/utils/abort.d.ts +4 -0
  38. package/dist/utils/execFileNoThrow.d.ts +1 -0
  39. package/dist/utils/process-tree.d.ts +2 -0
  40. package/dist/utils/semver.d.ts +3 -0
  41. package/dist/utils/spawn-executable.d.ts +2 -0
  42. package/package.json +2 -2
  43. package//346/212/200/346/234/257/346/226/271/346/241/210/346/212/245/345/221/212.md +5848 -5848
  44. package/dist/astgraph/db.mjs +0 -237
  45. package/dist/astgraph/extract.mjs +0 -239
  46. package/dist/astgraph/flavor-plugin.json +0 -25
  47. package/dist/astgraph/grammars.mjs +0 -68
  48. package/dist/astgraph/index.js +0 -301
  49. package/dist/astgraph/indexer.mjs +0 -175
  50. package/dist/astgraph/query.mjs +0 -165
  51. package/dist/astgraph/resolve.mjs +0 -93
  52. package/dist/astgraph/vendor/tree-sitter-javascript.wasm +0 -0
  53. package/dist/astgraph/vendor/tree-sitter-tsx.wasm +0 -0
  54. package/dist/astgraph/vendor/tree-sitter-typescript.wasm +0 -0
  55. package/dist/astgraph/vendor/tree-sitter.js +0 -3980
  56. package/dist/astgraph/vendor/tree-sitter.wasm +0 -0
  57. package/dist/astgraph/vendor/zod/LICENSE +0 -21
  58. package/dist/astgraph/vendor/zod/index.js +0 -4
  59. package/dist/astgraph/vendor/zod/locales/index.js +0 -1
  60. package/dist/astgraph/vendor/zod/locales/package.json +0 -7
  61. package/dist/astgraph/vendor/zod/package.json +0 -135
  62. package/dist/astgraph/vendor/zod/v4/classic/checks.js +0 -1
  63. package/dist/astgraph/vendor/zod/v4/classic/coerce.js +0 -17
  64. package/dist/astgraph/vendor/zod/v4/classic/compat.js +0 -31
  65. package/dist/astgraph/vendor/zod/v4/classic/errors.js +0 -48
  66. package/dist/astgraph/vendor/zod/v4/classic/external.js +0 -20
  67. package/dist/astgraph/vendor/zod/v4/classic/from-json-schema.js +0 -599
  68. package/dist/astgraph/vendor/zod/v4/classic/index.js +0 -4
  69. package/dist/astgraph/vendor/zod/v4/classic/iso.js +0 -30
  70. package/dist/astgraph/vendor/zod/v4/classic/package.json +0 -7
  71. package/dist/astgraph/vendor/zod/v4/classic/parse.js +0 -15
  72. package/dist/astgraph/vendor/zod/v4/classic/schemas.js +0 -1395
  73. package/dist/astgraph/vendor/zod/v4/core/api.js +0 -1087
  74. package/dist/astgraph/vendor/zod/v4/core/checks.js +0 -575
  75. package/dist/astgraph/vendor/zod/v4/core/core.js +0 -78
  76. package/dist/astgraph/vendor/zod/v4/core/doc.js +0 -35
  77. package/dist/astgraph/vendor/zod/v4/core/errors.js +0 -185
  78. package/dist/astgraph/vendor/zod/v4/core/index.js +0 -16
  79. package/dist/astgraph/vendor/zod/v4/core/json-schema-generator.js +0 -95
  80. package/dist/astgraph/vendor/zod/v4/core/json-schema-processors.js +0 -601
  81. package/dist/astgraph/vendor/zod/v4/core/json-schema.js +0 -1
  82. package/dist/astgraph/vendor/zod/v4/core/package.json +0 -7
  83. package/dist/astgraph/vendor/zod/v4/core/parse.js +0 -93
  84. package/dist/astgraph/vendor/zod/v4/core/regexes.js +0 -139
  85. package/dist/astgraph/vendor/zod/v4/core/registries.js +0 -51
  86. package/dist/astgraph/vendor/zod/v4/core/schemas.js +0 -2239
  87. package/dist/astgraph/vendor/zod/v4/core/standard-schema.js +0 -1
  88. package/dist/astgraph/vendor/zod/v4/core/to-json-schema.js +0 -448
  89. package/dist/astgraph/vendor/zod/v4/core/util.js +0 -674
  90. package/dist/astgraph/vendor/zod/v4/core/versions.js +0 -5
  91. package/dist/astgraph/vendor/zod/v4/index.js +0 -3
  92. package/dist/astgraph/vendor/zod/v4/locales/ar.js +0 -106
  93. package/dist/astgraph/vendor/zod/v4/locales/az.js +0 -105
  94. package/dist/astgraph/vendor/zod/v4/locales/be.js +0 -156
  95. package/dist/astgraph/vendor/zod/v4/locales/bg.js +0 -120
  96. package/dist/astgraph/vendor/zod/v4/locales/ca.js +0 -107
  97. package/dist/astgraph/vendor/zod/v4/locales/cs.js +0 -111
  98. package/dist/astgraph/vendor/zod/v4/locales/da.js +0 -115
  99. package/dist/astgraph/vendor/zod/v4/locales/de.js +0 -108
  100. package/dist/astgraph/vendor/zod/v4/locales/el.js +0 -109
  101. package/dist/astgraph/vendor/zod/v4/locales/en.js +0 -113
  102. package/dist/astgraph/vendor/zod/v4/locales/eo.js +0 -109
  103. package/dist/astgraph/vendor/zod/v4/locales/es.js +0 -132
  104. package/dist/astgraph/vendor/zod/v4/locales/fa.js +0 -114
  105. package/dist/astgraph/vendor/zod/v4/locales/fi.js +0 -112
  106. package/dist/astgraph/vendor/zod/v4/locales/fr-CA.js +0 -107
  107. package/dist/astgraph/vendor/zod/v4/locales/fr.js +0 -125
  108. package/dist/astgraph/vendor/zod/v4/locales/he.js +0 -214
  109. package/dist/astgraph/vendor/zod/v4/locales/hr.js +0 -122
  110. package/dist/astgraph/vendor/zod/v4/locales/hu.js +0 -108
  111. package/dist/astgraph/vendor/zod/v4/locales/hy.js +0 -147
  112. package/dist/astgraph/vendor/zod/v4/locales/id.js +0 -106
  113. package/dist/astgraph/vendor/zod/v4/locales/index.js +0 -52
  114. package/dist/astgraph/vendor/zod/v4/locales/is.js +0 -109
  115. package/dist/astgraph/vendor/zod/v4/locales/it.js +0 -108
  116. package/dist/astgraph/vendor/zod/v4/locales/ja.js +0 -107
  117. package/dist/astgraph/vendor/zod/v4/locales/ka.js +0 -112
  118. package/dist/astgraph/vendor/zod/v4/locales/kh.js +0 -5
  119. package/dist/astgraph/vendor/zod/v4/locales/km.js +0 -110
  120. package/dist/astgraph/vendor/zod/v4/locales/ko.js +0 -111
  121. package/dist/astgraph/vendor/zod/v4/locales/lt.js +0 -203
  122. package/dist/astgraph/vendor/zod/v4/locales/mk.js +0 -109
  123. package/dist/astgraph/vendor/zod/v4/locales/ms.js +0 -107
  124. package/dist/astgraph/vendor/zod/v4/locales/nl.js +0 -110
  125. package/dist/astgraph/vendor/zod/v4/locales/no.js +0 -108
  126. package/dist/astgraph/vendor/zod/v4/locales/ota.js +0 -109
  127. package/dist/astgraph/vendor/zod/v4/locales/package.json +0 -7
  128. package/dist/astgraph/vendor/zod/v4/locales/pl.js +0 -109
  129. package/dist/astgraph/vendor/zod/v4/locales/ps.js +0 -114
  130. package/dist/astgraph/vendor/zod/v4/locales/pt.js +0 -108
  131. package/dist/astgraph/vendor/zod/v4/locales/ro.js +0 -119
  132. package/dist/astgraph/vendor/zod/v4/locales/ru.js +0 -156
  133. package/dist/astgraph/vendor/zod/v4/locales/sl.js +0 -109
  134. package/dist/astgraph/vendor/zod/v4/locales/sv.js +0 -110
  135. package/dist/astgraph/vendor/zod/v4/locales/ta.js +0 -110
  136. package/dist/astgraph/vendor/zod/v4/locales/th.js +0 -110
  137. package/dist/astgraph/vendor/zod/v4/locales/tr.js +0 -105
  138. package/dist/astgraph/vendor/zod/v4/locales/ua.js +0 -5
  139. package/dist/astgraph/vendor/zod/v4/locales/uk.js +0 -108
  140. package/dist/astgraph/vendor/zod/v4/locales/ur.js +0 -110
  141. package/dist/astgraph/vendor/zod/v4/locales/uz.js +0 -110
  142. package/dist/astgraph/vendor/zod/v4/locales/vi.js +0 -108
  143. package/dist/astgraph/vendor/zod/v4/locales/yo.js +0 -107
  144. package/dist/astgraph/vendor/zod/v4/locales/zh-CN.js +0 -109
  145. package/dist/astgraph/vendor/zod/v4/locales/zh-TW.js +0 -107
  146. package/dist/astgraph/vendor/zod/v4/mini/checks.js +0 -1
  147. package/dist/astgraph/vendor/zod/v4/mini/coerce.js +0 -22
  148. package/dist/astgraph/vendor/zod/v4/mini/external.js +0 -14
  149. package/dist/astgraph/vendor/zod/v4/mini/index.js +0 -3
  150. package/dist/astgraph/vendor/zod/v4/mini/iso.js +0 -34
  151. package/dist/astgraph/vendor/zod/v4/mini/package.json +0 -7
  152. package/dist/astgraph/vendor/zod/v4/mini/parse.js +0 -1
  153. package/dist/astgraph/vendor/zod/v4/mini/schemas.js +0 -961
  154. package/dist/astgraph/vendor/zod/v4/package.json +0 -7
  155. package/dist/chunk-OTYFL4AG.js +0 -16
  156. package/dist/desktop-renderer/assets/index-ZZsUx916.css +0 -1
@@ -1,4 +1,4 @@
1
- import{i as e,n as t,r as n,t as r}from"./index-D75ozXnZ.js";var i=e(n(),1),a=2,o=1,s=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),s=window.getComputedStyle(this._terminal.element),c={top:parseInt(s.getPropertyValue(`padding-top`)),bottom:parseInt(s.getPropertyValue(`padding-bottom`)),right:parseInt(s.getPropertyValue(`padding-right`)),left:parseInt(s.getPropertyValue(`padding-left`))},l=c.top+c.bottom,u=c.right+c.left,d=r-l,f=i-u-t;return{cols:Math.max(a,Math.floor(f/e.css.cell.width)),rows:Math.max(o,Math.floor(d/e.css.cell.height))}}},c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=(e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})},d=(e,t,n,r)=>{for(var i=r>1?void 0:r?l(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&c(t,n,i),i},f=(e,t)=>(n,r)=>t(n,r,e),p=`Terminal input`,m={get:()=>p,set:e=>p=e},h=`Too much output to announce, navigate to rows manually to read`,g={get:()=>h,set:e=>h=e};function _(e){return e.replace(/\r?\n/g,`\r`)}function ee(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function te(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function ne(e,t,n,r){e.stopPropagation(),e.clipboardData&&re(e.clipboardData.getData(`text/plain`),t,n,r)}function re(e,t,n,r){e=_(e),e=ee(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function ie(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function ae(e,t,n,r,i){ie(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function v(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function oe(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var se=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},y=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new b}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},b=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},x=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new b,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?v(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},de=`di$target`,fe=`di$dependencies`,S=new Map;function pe(e){return e[fe]||[]}function C(e){if(S.has(e))return S.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);me(t,e,r)};return t._id=e,S.set(e,t),t}function me(e,t,n){t[de]===t?t[fe].push({id:e,index:n}):(t[fe]=[{id:e,index:n}],t[de]=t)}var w=C(`BufferService`),he=C(`CoreMouseService`),T=C(`CoreService`),ge=C(`CharsetService`),E=C(`InstantiationService`),_e=C(`LogService`),D=C(`OptionsService`),ve=C(`OscLinkService`),ye=C(`UnicodeService`),be=C(`DecorationService`),xe=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new x,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Se(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};xe=d([f(0,w),f(1,D),f(2,ve)],xe);function Se(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ import{i as e,n as t,r as n,t as r}from"./index-CYd5JkTR.js";var i=e(n(),1),a=2,o=1,s=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),s=window.getComputedStyle(this._terminal.element),c={top:parseInt(s.getPropertyValue(`padding-top`)),bottom:parseInt(s.getPropertyValue(`padding-bottom`)),right:parseInt(s.getPropertyValue(`padding-right`)),left:parseInt(s.getPropertyValue(`padding-left`))},l=c.top+c.bottom,u=c.right+c.left,d=r-l,f=i-u-t;return{cols:Math.max(a,Math.floor(f/e.css.cell.width)),rows:Math.max(o,Math.floor(d/e.css.cell.height))}}},c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=(e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})},d=(e,t,n,r)=>{for(var i=r>1?void 0:r?l(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&c(t,n,i),i},f=(e,t)=>(n,r)=>t(n,r,e),p=`Terminal input`,m={get:()=>p,set:e=>p=e},h=`Too much output to announce, navigate to rows manually to read`,g={get:()=>h,set:e=>h=e};function _(e){return e.replace(/\r?\n/g,`\r`)}function ee(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function te(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function ne(e,t,n,r){e.stopPropagation(),e.clipboardData&&re(e.clipboardData.getData(`text/plain`),t,n,r)}function re(e,t,n,r){e=_(e),e=ee(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function ie(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function ae(e,t,n,r,i){ie(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function v(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function oe(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var se=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},y=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new b}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},b=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},x=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new b,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?v(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},de=`di$target`,fe=`di$dependencies`,S=new Map;function pe(e){return e[fe]||[]}function C(e){if(S.has(e))return S.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);me(t,e,r)};return t._id=e,S.set(e,t),t}function me(e,t,n){t[de]===t?t[fe].push({id:e,index:n}):(t[fe]=[{id:e,index:n}],t[de]=t)}var w=C(`BufferService`),he=C(`CoreMouseService`),T=C(`CoreService`),ge=C(`CharsetService`),E=C(`InstantiationService`),_e=C(`LogService`),D=C(`OptionsService`),ve=C(`OscLinkService`),ye=C(`UnicodeService`),be=C(`DecorationService`),xe=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new x,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Se(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};xe=d([f(0,w),f(1,D),f(2,ve)],xe);function Se(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}var Ce=C(`CharSizeService`),we=C(`CoreBrowserService`),Te=C(`MouseService`),Ee=C(`RenderService`),De=C(`SelectionService`),Oe=C(`CharacterJoinerService`),ke=C(`ThemeService`),Ae=C(`LinkProviderService`),je=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Le.isErrorNoTelemetry(e)?new Le(e.message+`
4
4
 
@@ -6,8 +6,8 @@
6
6
  <meta name="color-scheme" content="light" />
7
7
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' http://127.0.0.1:* http://localhost:* http://[::1]:* ws://127.0.0.1:* ws://localhost:* ws://[::1]:*; frame-src http://127.0.0.1:* http://localhost:* http://[::1]:*" />
8
8
  <title>Flavor Code</title>
9
- <script type="module" crossorigin src="./assets/index-D75ozXnZ.js"></script>
10
- <link rel="stylesheet" crossorigin href="./assets/index-ZZsUx916.css">
9
+ <script type="module" crossorigin src="./assets/index-CYd5JkTR.js"></script>
10
+ <link rel="stylesheet" crossorigin href="./assets/index-Bk6FYhyh.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
@@ -0,0 +1,38 @@
1
+ import { loadConfig } from "./config/load.js";
2
+ import { fetchLatestVersion } from "./update/check.js";
3
+ export type DoctorStatus = "pass" | "warn" | "fail";
4
+ export interface DoctorCheck {
5
+ name: string;
6
+ status: DoctorStatus;
7
+ message: string;
8
+ }
9
+ export interface DoctorReport {
10
+ version: string;
11
+ platform: NodeJS.Platform | string;
12
+ arch: string;
13
+ workspace: string;
14
+ checks: DoctorCheck[];
15
+ summary: {
16
+ passed: number;
17
+ warnings: number;
18
+ failed: number;
19
+ };
20
+ ok: boolean;
21
+ }
22
+ export interface DoctorOptions {
23
+ workspace?: string;
24
+ home?: string;
25
+ environment?: NodeJS.ProcessEnv;
26
+ platform?: NodeJS.Platform | string;
27
+ arch?: string;
28
+ nodeVersion?: string;
29
+ registryTimeoutMs?: number;
30
+ }
31
+ export interface DoctorDependencies {
32
+ loadConfig?: typeof loadConfig;
33
+ fetchLatestVersion?: typeof fetchLatestVersion;
34
+ rgPath?: string;
35
+ probeShell?: (platform: NodeJS.Platform | string, environment: NodeJS.ProcessEnv) => Promise<string | undefined>;
36
+ }
37
+ export declare function runDoctor(options?: DoctorOptions, dependencies?: DoctorDependencies): Promise<DoctorReport>;
38
+ export declare function formatDoctorReport(report: DoctorReport): string;
@@ -17,7 +17,7 @@ export interface DockerExecutionEnvironmentOptions {
17
17
  network?: boolean;
18
18
  memory?: string;
19
19
  cpus?: number;
20
- run?(invocation: DockerInvocation, signal?: AbortSignal, timeoutMs?: number): Promise<ExecutionResult>;
20
+ run?(invocation: DockerInvocation, signal?: AbortSignal, timeoutMs?: number, maxOutputBytes?: number): Promise<ExecutionResult>;
21
21
  }
22
22
  export declare function buildDockerInvocation(options: DockerInvocationOptions): DockerInvocation;
23
23
  export declare class DockerExecutionEnvironment implements ExecutionEnvironment {
@@ -27,3 +27,7 @@ export declare class DockerExecutionEnvironment implements ExecutionEnvironment
27
27
  exec(request: ExecutionRequest, signal?: AbortSignal): Promise<ExecutionResult>;
28
28
  dispose(): Promise<void>;
29
29
  }
30
+ export declare function runDockerInvocation(invocation: {
31
+ command: string;
32
+ args: string[];
33
+ }, signal?: AbortSignal, timeoutMs?: number, maxOutputBytes?: number): Promise<ExecutionResult>;
@@ -3,6 +3,12 @@ export interface ExecutionRequest {
3
3
  args: readonly string[];
4
4
  cwd: string;
5
5
  timeoutMs?: number;
6
+ maxOutputBytes?: number;
7
+ }
8
+ export interface ExecutionTruncationMetadata {
9
+ truncated: boolean;
10
+ originalBytes: number;
11
+ limitBytes: number;
6
12
  }
7
13
  export interface ExecutionResult {
8
14
  exitCode: number | null;
@@ -10,6 +16,11 @@ export interface ExecutionResult {
10
16
  stdout: string;
11
17
  stderr: string;
12
18
  terminationReason: "timeout" | "cancelled" | null;
19
+ truncated?: boolean;
20
+ truncation?: {
21
+ stdout: ExecutionTruncationMetadata;
22
+ stderr: ExecutionTruncationMetadata;
23
+ };
13
24
  }
14
25
  export interface ExecutionEnvironment {
15
26
  readonly kind: "local" | "docker";
@@ -4,8 +4,8 @@ export interface GitResult {
4
4
  stderr: string;
5
5
  code: number;
6
6
  }
7
- export declare function git(workspace: string, args: readonly string[], timeoutMs?: number): Promise<GitResult>;
8
- export declare function isGitRepository(workspace: string): Promise<boolean>;
7
+ export declare function git(workspace: string, args: readonly string[], timeoutMs?: number, signal?: AbortSignal): Promise<GitResult>;
8
+ export declare function isGitRepository(workspace: string, signal?: AbortSignal): Promise<boolean>;
9
9
  export interface GitChangeSummary {
10
10
  branch: string;
11
11
  head: string;
@@ -38,6 +38,6 @@ export interface GitHistoryEntry {
38
38
  subject: string;
39
39
  }
40
40
  /** Commit history for the repository, or for one file when a path is given. */
41
- export declare function fileHistory(workspace: string, path: string | undefined, limit: number): Promise<GitHistoryEntry[]>;
41
+ export declare function fileHistory(workspace: string, path: string | undefined, limit: number, signal?: AbortSignal): Promise<GitHistoryEntry[]>;
42
42
  /** Short branch@sha marker used to tag session checkpoints with git state. */
43
43
  export declare function gitMarker(workspace: string): Promise<string | undefined>;
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import type { ToolDefinition } from "../tools/types.js";
3
3
  declare const GitHistoryInput: z.ZodObject<{
4
4
  path: z.ZodOptional<z.ZodString>;
5
- limit: z.ZodOptional<z.ZodNumber>;
5
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
6
6
  }, z.core.$strip>;
7
7
  export type GitHistoryInput = z.infer<typeof GitHistoryInput>;
8
8
  export declare function createGitHistoryTool(workspace: string): ToolDefinition<GitHistoryInput, string>;
@@ -21,6 +21,8 @@ export interface LocalHarnessOptions {
21
21
  approve?: ApprovalCallback;
22
22
  maxIterationsMain?: number;
23
23
  maxIterationsSubagent?: number;
24
+ softLimitFactor?: number;
25
+ extendIterations?: number;
24
26
  hasActiveProgress?(): boolean;
25
27
  hallucinationGuard?: HallucinationGuard;
26
28
  /** When true, non-destructive tools skip the approval callback. Destructive tools still require confirmation. */
@@ -24,10 +24,4 @@ export interface InitResult {
24
24
  facts: ProjectFacts;
25
25
  }
26
26
  export declare function inspectProject(cwd: string): Promise<ProjectFacts>;
27
- /**
28
- * Copy the astgraph plugin (runtime + vendored WASM grammars + zod) into the
29
- * workspace's project plugin directory. An existing installation is never
30
- * overwritten.
31
- */
32
- export declare function copyAstgraphPlugin(cwd: string): Promise<void>;
33
27
  export declare function initializeFlavor(cwd: string): Promise<InitResult>;
@@ -28,6 +28,7 @@ export interface JobHandle {
28
28
  append(text: string): void;
29
29
  complete(result?: {
30
30
  exitCode?: number | null;
31
+ error?: string;
31
32
  }): void;
32
33
  fail(error: unknown): void;
33
34
  cancel(): void;
@@ -42,7 +43,7 @@ export declare class JobRegistry {
42
43
  list(owner?: string): readonly JobSnapshot[];
43
44
  read(id: string, owner: string, cursor?: number): JobReadResult;
44
45
  wait(id: string, owner: string, signal?: AbortSignal): Promise<JobSnapshot>;
45
- kill(id: string, owner: string): void;
46
+ kill(id: string, owner: string): void | Promise<void>;
46
47
  subscribe(listener: (jobs: readonly JobSnapshot[]) => void): () => void;
47
48
  dispose(): Promise<void>;
48
49
  }
@@ -7,7 +7,7 @@ import {
7
7
  setProjectMcpServerDisabled,
8
8
  setProjectProviderConfig,
9
9
  setProjectSkillDisabled
10
- } from "./chunk-RPFWB45Y.js";
10
+ } from "./chunk-KBHWS7M6.js";
11
11
  import "./chunk-S32JRDZK.js";
12
12
  export {
13
13
  loadConfig,
package/dist/sdk/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  FlavorRpcServer,
5
5
  TraceRecordSchema,
6
6
  TraceRecorder
7
- } from "../chunk-VEUSROUQ.js";
7
+ } from "../chunk-3BHKW5A7.js";
8
8
  import {
9
9
  AgentMessageQueue,
10
10
  DockerExecutionEnvironment,
@@ -13,10 +13,10 @@ import {
13
13
  WorkspaceCheckpointStore,
14
14
  buildDockerInvocation,
15
15
  createProductionRuntime
16
- } from "../chunk-Z62P4LL7.js";
16
+ } from "../chunk-NIKCPCJG.js";
17
17
  import "../chunk-CIVPKHF4.js";
18
- import "../chunk-RPFWB45Y.js";
19
- import "../chunk-RQTYHUMK.js";
18
+ import "../chunk-KBHWS7M6.js";
19
+ import "../chunk-ZJCAQXA7.js";
20
20
  import "../chunk-S32JRDZK.js";
21
21
 
22
22
  // src/trace/replay.ts
@@ -14,10 +14,13 @@ interface LspLocation {
14
14
  }
15
15
  interface LspHover {
16
16
  contents: {
17
- kind: string;
17
+ kind?: string;
18
18
  language?: string;
19
19
  value: string;
20
- } | string;
20
+ } | string | Array<string | {
21
+ language: string;
22
+ value: string;
23
+ }>;
21
24
  range?: {
22
25
  start: {
23
26
  line: number;
@@ -52,10 +55,10 @@ interface LanguageServerConfig {
52
55
  rootFiles: string[];
53
56
  }
54
57
  export interface LspManager {
55
- findReferences(uri: string, line: number, character: number): Promise<LspLocation[]>;
56
- hover(uri: string, line: number, character: number): Promise<LspHover | null>;
57
- diagnostics(uri: string): Promise<LspDiagnostic[]>;
58
- dispose(): void;
58
+ findReferences(uri: string, line: number, character: number, signal?: AbortSignal): Promise<LspLocation[]>;
59
+ hover(uri: string, line: number, character: number, signal?: AbortSignal): Promise<LspHover | null>;
60
+ diagnostics(uri: string, signal?: AbortSignal): Promise<LspDiagnostic[]>;
61
+ dispose(): void | Promise<void>;
59
62
  }
60
63
  export declare class RealLspManager implements LspManager {
61
64
  #private;
@@ -64,10 +67,10 @@ export declare class RealLspManager implements LspManager {
64
67
  serverConfigs?: LanguageServerConfig[];
65
68
  onStatus?: ((message: string) => void) | undefined;
66
69
  });
67
- dispose(): void;
68
- findReferences(uri: string, line: number, character: number): Promise<LspLocation[]>;
69
- hover(uri: string, line: number, character: number): Promise<LspHover | null>;
70
- diagnostics(uri: string): Promise<LspDiagnostic[]>;
70
+ dispose(): Promise<void>;
71
+ findReferences(uri: string, line: number, character: number, signal?: AbortSignal): Promise<LspLocation[]>;
72
+ hover(uri: string, line: number, character: number, signal?: AbortSignal): Promise<LspHover | null>;
73
+ diagnostics(uri: string, signal?: AbortSignal): Promise<LspDiagnostic[]>;
71
74
  }
72
75
  export interface LspToolOptions {
73
76
  manager?: LspManager;
@@ -36,7 +36,8 @@ export interface ToolOutputOverflow {
36
36
  preview: string;
37
37
  originalChars: number;
38
38
  previewChars: number;
39
- savedTo: string;
39
+ savedTo?: string;
40
+ storageError?: string;
40
41
  }
41
42
  export declare const DEFAULT_TOOL_OUTPUT_LIMITS: Readonly<ToolOutputLimits>;
42
43
  export type ToolInputValidation = {
@@ -8,6 +8,7 @@ declare const GlobInput: z.ZodObject<{
8
8
  }, z.core.$strip>;
9
9
  declare const GrepInput: z.ZodObject<{
10
10
  pattern: z.ZodString;
11
+ fixedStrings: z.ZodOptional<z.ZodNullable<z.ZodPreprocess<z.ZodBoolean>>>;
11
12
  path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
13
  glob: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
14
  fileType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
@@ -16,12 +16,18 @@ export interface ShellToolOptions {
16
16
  defaultTimeoutMs?: number;
17
17
  executionEnvironment?: ExecutionEnvironment;
18
18
  jobs?: JobRegistry;
19
+ environment?: NodeJS.ProcessEnv;
19
20
  }
20
21
  export interface TruncationMetadata {
21
22
  truncated: boolean;
22
23
  originalBytes: number;
23
24
  limitBytes: number;
24
25
  }
26
+ export interface ShellDiagnostic {
27
+ kind: "command-not-found" | "path-not-found" | "permission-denied" | "shell-syntax" | "timeout" | "cancelled" | "non-zero-exit";
28
+ message: string;
29
+ hint?: string;
30
+ }
25
31
  export interface ShellResult {
26
32
  exitCode: number | null;
27
33
  signal: NodeJS.Signals | null;
@@ -33,6 +39,7 @@ export interface ShellResult {
33
39
  stderr: TruncationMetadata;
34
40
  };
35
41
  terminationReason: "timeout" | "cancelled" | null;
42
+ diagnostic?: ShellDiagnostic;
36
43
  }
37
44
  export interface ShellBackgroundResult extends ShellResult {
38
45
  jobId: string;
@@ -55,17 +62,15 @@ export declare function normalizeShellCommand(input: {
55
62
  command: string;
56
63
  args: string[];
57
64
  };
58
- type WindowsShellKind = "pwsh" | "powershell" | "cmd";
59
- /**
60
- * Build the command line handed to cmd.exe via `spawn(shell: true)` on Windows.
61
- * `commandLine` is the pre-quoted line used directly for the cmd.exe fallback.
62
- *
63
- * For PowerShell we do not pass the raw line through cmd: `-EncodedCommand`
64
- * (UTF-16LE base64) carries the script untouched, so arguments with spaces,
65
- * quotes or `&` reach the child program exactly as given. `chcp 65001` keeps
66
- * the console code page UTF-8 so redirected pipes decode consistently.
67
- */
68
- export declare function buildWindowsCommandLine(kind: WindowsShellKind, commandLine: string, command: string, args: readonly string[]): string;
65
+ export type RuntimeShell = {
66
+ kind: "pwsh" | "powershell" | "cmd";
67
+ command: string;
68
+ } | {
69
+ kind: "posix";
70
+ command: string;
71
+ };
72
+ /** The shell reported to the model, checked by doctor, and used for fallbacks. */
73
+ export declare function resolveRuntimeShell(platform?: NodeJS.Platform | string, environment?: NodeJS.ProcessEnv): RuntimeShell | undefined;
69
74
  export declare function createShellTool(workspace: string, options?: ShellToolOptions): ShellTool;
70
- export declare function executeShell(root: string, input: z.infer<typeof ShellInput>, cancellation: AbortSignal, maxBytes: number, onOutput?: (stream: "stdout" | "stderr", text: string) => void): Promise<ShellResult>;
75
+ export declare function executeShell(root: string, input: z.infer<typeof ShellInput>, cancellation: AbortSignal, maxBytes: number, environment?: NodeJS.ProcessEnv, onOutput?: (stream: "stdout" | "stderr", text: string) => void): Promise<ShellResult>;
71
76
  export {};
@@ -39,6 +39,7 @@ export interface TerminalToolPresentation {
39
39
  command?: string;
40
40
  stdout?: string;
41
41
  stderr?: string;
42
+ diagnostic?: string;
42
43
  exitCode?: number | null;
43
44
  state?: "running" | "completed" | "failed" | "cancelled";
44
45
  truncated?: boolean;
@@ -76,7 +77,7 @@ export interface JobToolPresentation {
76
77
  }
77
78
  export type ToolPresentation = ChangeSetPresentation | FileChangePresentation | GenericToolPresentation | TerminalToolPresentation | WebToolPresentation | JobToolPresentation;
78
79
  export declare function withToolPresentation<T extends object>(output: T, presentation: ToolPresentation): T;
79
- export declare function getToolPresentation(output: unknown): FileChangePresentation | undefined;
80
+ export declare function getToolPresentation(output: unknown): ToolPresentation | undefined;
80
81
  export interface ToolDefinition<T, O = unknown> {
81
82
  name: string;
82
83
  description: string;
@@ -1,4 +1,4 @@
1
- export declare const MVP_COMMANDS: readonly ["model", "init", "config", "login", "logout", "permissions", "skills", "plugins", "hooks", "tasks", "finish", "compact", "clear", "help", "exit", "audit", "usage", "loop", "goal", "evolve", "mcp", "commit", "review", "explain", "ide", "memory", "remember", "forget", "forget-cold", "checkpoint", "tree", "rewind", "unrevert", "fork", "pals", "chat", "co-work", "tool"];
1
+ export declare const MVP_COMMANDS: readonly ["model", "init", "config", "login", "logout", "permissions", "skills", "plugins", "hooks", "tasks", "finish", "compact", "clear", "help", "exit", "audit", "usage", "doctor", "loop", "goal", "evolve", "mcp", "commit", "review", "explain", "ide", "memory", "remember", "forget", "forget-cold", "checkpoint", "tree", "rewind", "unrevert", "fork", "pals", "chat", "co-work", "tool"];
2
2
  export declare const COMMAND_DESCRIPTIONS: Record<(typeof MVP_COMMANDS)[number], string>;
3
3
  export type PermissionCommandMode = PermissionMode;
4
4
  export type ModelRole = "main" | "subagent";
@@ -130,6 +130,7 @@ export interface SessionServices {
130
130
  hooksStatus(): readonly unknown[];
131
131
  tasks(): unknown;
132
132
  audit(toolFilter?: string): string | Promise<string>;
133
+ doctor?(): string | Promise<string>;
133
134
  evolve(args: readonly string[]): string | Promise<string>;
134
135
  gitCommit?(hint: string | undefined, signal: AbortSignal): Promise<string>;
135
136
  gitReview?(focus: string | undefined, signal: AbortSignal): Promise<string>;
@@ -0,0 +1,20 @@
1
+ export declare const NPM_PACKAGE_NAME = "flavor-code";
2
+ interface RegistryResponse {
3
+ ok: boolean;
4
+ json(): Promise<unknown>;
5
+ }
6
+ export type RegistryFetch = (url: string, init?: {
7
+ signal?: AbortSignal;
8
+ }) => Promise<RegistryResponse>;
9
+ export interface UpdateCheckOptions {
10
+ /** Injectable fetch for tests; defaults to the global Node fetch. */
11
+ fetchImpl?: RegistryFetch;
12
+ timeoutMs?: number;
13
+ }
14
+ /** Returns `latest` only when it is a valid semver strictly newer than `current`. */
15
+ export declare function findNewerVersion(current: string, latest: string): string | undefined;
16
+ /** Fetch the latest published version from the npm registry; undefined on any failure. */
17
+ export declare function fetchLatestVersion(options?: UpdateCheckOptions): Promise<string | undefined>;
18
+ /** Resolves the newer version to upgrade to, or undefined when up to date / unreachable. */
19
+ export declare function checkForUpdate(current: string, options?: UpdateCheckOptions): Promise<string | undefined>;
20
+ export {};
@@ -0,0 +1,4 @@
1
+ /** Wait without retaining an abort listener after the operation settles.
2
+ * The operation must still receive the signal when it supports cancellation.
3
+ */
4
+ export declare function waitWithSignal<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T>;
@@ -4,6 +4,7 @@ export interface ExecFileNoThrowOptions {
4
4
  env?: NodeJS.ProcessEnv;
5
5
  stdin?: "ignore" | "inherit" | "pipe";
6
6
  input?: string;
7
+ signal?: AbortSignal;
7
8
  }
8
9
  export declare function execFileNoThrow(file: string, args: string[], options?: ExecFileNoThrowOptions): Promise<{
9
10
  stdout: string;
@@ -0,0 +1,2 @@
1
+ /** POSIX callers must spawn the root in its own process group (detached=true). */
2
+ export declare function terminateProcessTree(pid: number | undefined): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare function gte(a: string, b: string): boolean;
2
+ export declare function gt(a: string, b: string): boolean;
3
+ export declare function isValidVersion(value: string): boolean;
@@ -14,3 +14,5 @@ export interface PrepareSpawnOptions {
14
14
  * the original argv boundary and all other platforms are unchanged.
15
15
  */
16
16
  export declare function prepareSpawnInvocation(command: string, args: readonly string[], options?: PrepareSpawnOptions): PreparedSpawnInvocation;
17
+ /** Resolve an executable exactly as the structured Shell runner will see it. */
18
+ export declare function resolveExecutablePath(command: string, options?: PrepareSpawnOptions): string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flavor-code",
3
- "version": "1.3.23",
3
+ "version": "1.4.0-beta.3",
4
4
  "author": "YachuanWzh",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -31,7 +31,7 @@
31
31
  "scripts": {
32
32
  "build": "npm run build:icons && npm run build:cli && npm run build:desktop",
33
33
  "build:icons": "node scripts/build-icons.mjs",
34
- "build:cli": "tsup && tsc -p tsconfig.sdk.json && node -e \"require('fs').cpSync('src/init/astgraph','dist/astgraph',{recursive:true})\"",
34
+ "build:cli": "tsup && tsc -p tsconfig.sdk.json",
35
35
  "build:desktop": "npm run build:desktop:main && npm run build:desktop:renderer",
36
36
  "build:desktop:main": "tsup --config tsup.desktop.config.ts",
37
37
  "build:desktop:renderer": "vite build --config vite.desktop.config.ts",