@sylphx/flow 0.1.7 → 0.2.0

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 (45) hide show
  1. package/dist/{chunk-aa4cgtk7.js → chunk-2sxe8t33.js} +2 -2
  2. package/dist/{chunk-aa4cgtk7.js.map → chunk-2sxe8t33.js.map} +1 -1
  3. package/dist/chunk-54jnh3ev.js +4 -0
  4. package/dist/chunk-54jnh3ev.js.map +10 -0
  5. package/dist/{chunk-6r3jzv7f.js → chunk-5q22r8rv.js} +3 -3
  6. package/dist/{chunk-6r3jzv7f.js.map → chunk-5q22r8rv.js.map} +1 -1
  7. package/dist/{chunk-v45sm94y.js → chunk-5x5bm9m5.js} +3 -3
  8. package/dist/{chunk-v45sm94y.js.map → chunk-5x5bm9m5.js.map} +1 -1
  9. package/dist/chunk-663e2x2k.js +3 -0
  10. package/dist/{chunk-4psv4dr6.js.map → chunk-663e2x2k.js.map} +2 -2
  11. package/dist/{chunk-fgvn27jn.js → chunk-72zcfcy9.js} +3 -3
  12. package/dist/{chunk-fgvn27jn.js.map → chunk-72zcfcy9.js.map} +1 -1
  13. package/dist/chunk-9ntypdnt.js +3 -0
  14. package/dist/{chunk-kdha6vwb.js.map → chunk-9ntypdnt.js.map} +2 -2
  15. package/dist/{chunk-jr6q8myj.js → chunk-aqc8rkrn.js} +3 -3
  16. package/dist/{chunk-jr6q8myj.js.map → chunk-aqc8rkrn.js.map} +1 -1
  17. package/dist/{chunk-fkw4ccxy.js → chunk-cgd3ffjk.js} +3 -3
  18. package/dist/{chunk-fkw4ccxy.js.map → chunk-cgd3ffjk.js.map} +1 -1
  19. package/dist/{chunk-6bwzk9kv.js → chunk-crhdp3mm.js} +2 -2
  20. package/dist/{chunk-6bwzk9kv.js.map → chunk-crhdp3mm.js.map} +1 -1
  21. package/dist/chunk-dn65d94r.js +7 -0
  22. package/dist/chunk-dn65d94r.js.map +10 -0
  23. package/dist/{chunk-3t1504hw.js → chunk-j07c4re1.js} +3 -3
  24. package/dist/{chunk-3t1504hw.js.map → chunk-j07c4re1.js.map} +1 -1
  25. package/dist/{chunk-3fc49zg7.js → chunk-tjxmyx7a.js} +2 -2
  26. package/dist/{chunk-3fc49zg7.js.map → chunk-tjxmyx7a.js.map} +1 -1
  27. package/dist/{chunk-m00p2ert.js → chunk-waemzsf4.js} +2 -2
  28. package/dist/{chunk-m00p2ert.js.map → chunk-waemzsf4.js.map} +1 -1
  29. package/dist/{chunk-03csvy0b.js → chunk-wkbpwkvw.js} +2 -2
  30. package/dist/{chunk-03csvy0b.js.map → chunk-wkbpwkvw.js.map} +1 -1
  31. package/dist/{chunk-mbd0qsd9.js → chunk-yvh7p6vf.js} +2 -2
  32. package/dist/{chunk-mbd0qsd9.js.map → chunk-yvh7p6vf.js.map} +1 -1
  33. package/dist/chunk-z93nw3rq.js +86 -0
  34. package/dist/chunk-z93nw3rq.js.map +37 -0
  35. package/dist/chunk-zx5x51az.js +27 -0
  36. package/dist/chunk-zx5x51az.js.map +15 -0
  37. package/dist/index.js +277 -286
  38. package/dist/index.js.map +15 -17
  39. package/package.json +3 -1
  40. package/dist/chunk-4psv4dr6.js +0 -3
  41. package/dist/chunk-dpp0b7br.js +0 -43
  42. package/dist/chunk-dpp0b7br.js.map +0 -31
  43. package/dist/chunk-hhy4cr5s.js +0 -7
  44. package/dist/chunk-hhy4cr5s.js.map +0 -10
  45. package/dist/chunk-kdha6vwb.js +0 -3
@@ -0,0 +1,27 @@
1
+ import{C as i,E as n}from"./chunk-dn65d94r.js";import"./chunk-crhdp3mm.js";import{J as t}from"./chunk-54jnh3ev.js";import{oa as a}from"./chunk-z93nw3rq.js";import"./chunk-j07c4re1.js";import"./chunk-wkbpwkvw.js";var b=(q=0)=>(V)=>`\x1B[${V+q}m`,I=(q=0)=>(V)=>`\x1B[${38+q};5;${V}m`,F=(q=0)=>(V,z,H)=>`\x1B[${38+q};2;${V};${z};${H}m`,Q={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},j1=Object.keys(Q.modifier),r=Object.keys(Q.color),l=Object.keys(Q.bgColor),w1=[...r,...l];function o(){let q=new Map;for(let[V,z]of Object.entries(Q)){for(let[H,J]of Object.entries(z))Q[H]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},z[H]=Q[H],q.set(J[0],J[1]);Object.defineProperty(Q,V,{value:z,enumerable:!1})}return Object.defineProperty(Q,"codes",{value:q,enumerable:!1}),Q.color.close="\x1B[39m",Q.bgColor.close="\x1B[49m",Q.color.ansi=b(),Q.color.ansi256=I(),Q.color.ansi16m=F(),Q.bgColor.ansi=b(10),Q.bgColor.ansi256=I(10),Q.bgColor.ansi16m=F(10),Object.defineProperties(Q,{rgbToAnsi256:{value(V,z,H){if(V===z&&z===H){if(V<8)return 16;if(V>248)return 231;return Math.round((V-8)/247*24)+232}return 16+36*Math.round(V/255*5)+6*Math.round(z/255*5)+Math.round(H/255*5)},enumerable:!1},hexToRgb:{value(V){let z=/[a-f\d]{6}|[a-f\d]{3}/i.exec(V.toString(16));if(!z)return[0,0,0];let[H]=z;if(H.length===3)H=[...H].map((K)=>K+K).join("");let J=Number.parseInt(H,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:(V)=>Q.rgbToAnsi256(...Q.hexToRgb(V)),enumerable:!1},ansi256ToAnsi:{value(V){if(V<8)return 30+V;if(V<16)return 90+(V-8);let z,H,J;if(V>=232)z=((V-232)*10+8)/255,H=z,J=z;else{V-=16;let O=V%36;z=Math.floor(V/36)/5,H=Math.floor(O/6)/5,J=O%6/5}let K=Math.max(z,H,J)*2;if(K===0)return 30;let X=30+(Math.round(J)<<2|Math.round(H)<<1|Math.round(z));if(K===2)X+=60;return X},enumerable:!1},rgbToAnsi:{value:(V,z,H)=>Q.ansi256ToAnsi(Q.rgbToAnsi256(V,z,H)),enumerable:!1},hexToAnsi:{value:(V)=>Q.ansi256ToAnsi(Q.hexToAnsi256(V)),enumerable:!1}}),Q}var s=o(),$=s;import Y from"node:process";import e from"node:os";import _ from"node:tty";function Z(q,V=globalThis.Deno?globalThis.Deno.args:Y.argv){let z=q.startsWith("-")?"":q.length===1?"-":"--",H=V.indexOf(z+q),J=V.indexOf("--");return H!==-1&&(J===-1||H<J)}var{env:U}=Y,w;if(Z("no-color")||Z("no-colors")||Z("color=false")||Z("color=never"))w=0;else if(Z("color")||Z("colors")||Z("color=true")||Z("color=always"))w=1;function V1(){if("FORCE_COLOR"in U){if(U.FORCE_COLOR==="true")return 1;if(U.FORCE_COLOR==="false")return 0;return U.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(U.FORCE_COLOR,10),3)}}function q1(q){if(q===0)return!1;return{level:q,hasBasic:!0,has256:q>=2,has16m:q>=3}}function z1(q,{streamIsTTY:V,sniffFlags:z=!0}={}){let H=V1();if(H!==void 0)w=H;let J=z?w:H;if(J===0)return 0;if(z){if(Z("color=16m")||Z("color=full")||Z("color=truecolor"))return 3;if(Z("color=256"))return 2}if("TF_BUILD"in U&&"AGENT_NAME"in U)return 1;if(q&&!V&&J===void 0)return 0;let K=J||0;if(U.TERM==="dumb")return K;if(Y.platform==="win32"){let X=e.release().split(".");if(Number(X[0])>=10&&Number(X[2])>=10586)return Number(X[2])>=14931?3:2;return 1}if("CI"in U){if(["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some((X)=>(X in U)))return 3;if(["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((X)=>(X in U))||U.CI_NAME==="codeship")return 1;return K}if("TEAMCITY_VERSION"in U)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(U.TEAMCITY_VERSION)?1:0;if(U.COLORTERM==="truecolor")return 3;if(U.TERM==="xterm-kitty")return 3;if(U.TERM==="xterm-ghostty")return 3;if(U.TERM==="wezterm")return 3;if("TERM_PROGRAM"in U){let X=Number.parseInt((U.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(U.TERM_PROGRAM){case"iTerm.app":return X>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(U.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(U.TERM))return 1;if("COLORTERM"in U)return 1;return K}function C(q,V={}){let z=z1(q,{streamIsTTY:q&&q.isTTY,...V});return q1(z)}var H1={stdout:C({isTTY:_.isatty(1)}),stderr:C({isTTY:_.isatty(2)})},k=H1;function f(q,V,z){let H=q.indexOf(V);if(H===-1)return q;let J=V.length,K=0,X="";do X+=q.slice(K,H)+V+z,K=H+J,H=q.indexOf(V,K);while(H!==-1);return X+=q.slice(K),X}function S(q,V,z,H){let J=0,K="";do{let X=q[H-1]==="\r";K+=q.slice(J,X?H-1:H)+V+(X?`\r
2
+ `:`
3
+ `)+z,J=H+1,H=q.indexOf(`
4
+ `,J)}while(H!==-1);return K+=q.slice(J),K}var{stdout:h,stderr:u}=k,L=Symbol("GENERATOR"),G=Symbol("STYLER"),D=Symbol("IS_EMPTY"),m=["ansi","ansi","ansi256","ansi16m"],B=Object.create(null),J1=(q,V={})=>{if(V.level&&!(Number.isInteger(V.level)&&V.level>=0&&V.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let z=h?h.level:0;q.level=V.level===void 0?z:V.level};var K1=(q)=>{let V=(...z)=>z.join(" ");return J1(V,q),Object.setPrototypeOf(V,x.prototype),V};function x(q){return K1(q)}Object.setPrototypeOf(x.prototype,Function.prototype);for(let[q,V]of Object.entries($))B[q]={get(){let z=P(this,N(V.open,V.close,this[G]),this[D]);return Object.defineProperty(this,q,{value:z}),z}};B.visible={get(){let q=P(this,this[G],!0);return Object.defineProperty(this,"visible",{value:q}),q}};var M=(q,V,z,...H)=>{if(q==="rgb"){if(V==="ansi16m")return $[z].ansi16m(...H);if(V==="ansi256")return $[z].ansi256($.rgbToAnsi256(...H));return $[z].ansi($.rgbToAnsi(...H))}if(q==="hex")return M("rgb",V,z,...$.hexToRgb(...H));return $[z][q](...H)},Q1=["rgb","hex","ansi256"];for(let q of Q1){B[q]={get(){let{level:z}=this;return function(...H){let J=N(M(q,m[z],"color",...H),$.color.close,this[G]);return P(this,J,this[D])}}};let V="bg"+q[0].toUpperCase()+q.slice(1);B[V]={get(){let{level:z}=this;return function(...H){let J=N(M(q,m[z],"bgColor",...H),$.bgColor.close,this[G]);return P(this,J,this[D])}}}}var U1=Object.defineProperties(()=>{},{...B,level:{enumerable:!0,get(){return this[L].level},set(q){this[L].level=q}}}),N=(q,V,z)=>{let H,J;if(z===void 0)H=q,J=V;else H=z.openAll+q,J=V+z.closeAll;return{open:q,close:V,openAll:H,closeAll:J,parent:z}},P=(q,V,z)=>{let H=(...J)=>W1(H,J.length===1?""+J[0]:J.join(" "));return Object.setPrototypeOf(H,U1),H[L]=q,H[G]=V,H[D]=z,H},W1=(q,V)=>{if(q.level<=0||!V)return q[D]?"":V;let z=q[G];if(z===void 0)return V;let{openAll:H,closeAll:J}=z;if(V.includes("\x1B"))while(z!==void 0)V=f(V,z.close,z.open),z=z.parent;let K=V.indexOf(`
5
+ `);if(K!==-1)V=S(V,J,H,K);return H+V+J};Object.defineProperties(x.prototype,B);var X1=x(),b1=x({level:u?u.level:0});var W=X1;import{readFile as v,writeFile as y,mkdir as Z1}from"node:fs/promises";import{join as R}from"node:path";import{homedir as $1}from"node:os";var T=R($1(),".sylphx","sessions"),p=R(T,".last-session");async function A(){await Z1(T,{recursive:!0})}function c(q){return R(T,`${q}.json`)}async function g(q,V){await A();let z={id:`session-${Date.now()}`,provider:q,model:V,messages:[],created:Date.now(),updated:Date.now()};return await G1(z),await D1(z.id),z}async function G1(q){await A(),q.updated=Date.now();let V=c(q.id);await y(V,JSON.stringify(q,null,2),"utf8")}async function B1(q){try{let V=c(q),z=await v(V,"utf8");return JSON.parse(z)}catch{return null}}async function O1(){try{return(await v(p,"utf8")).trim()}catch{return null}}async function D1(q){await A(),await y(p,q,"utf8")}async function d(){let q=await O1();if(!q)return null;return B1(q)}function k1(q,V,z){return{...q,messages:[...q.messages,{role:V,content:z,timestamp:Date.now()}]}}async function x1(q,V){let z=V["default-model"];if(z)return z;try{return(await t(q,V))[0]?.id||null}catch{return null}}async function y1(q){let V=process.cwd(),z=await i(V);if(z._tag==="Failure")return console.error(W.red("✗ Failed to load AI config")),null;let H=z.value,J=await n(V);if(J.length===0)return console.error(W.yellow(`
6
+ ⚠️ No AI provider configured
7
+ `)),console.error(W.dim(`Run: sylphx code (to configure AI)
8
+ `)),null;let K=H.defaultProvider??J[0];if(!K)return console.error(W.yellow(`
9
+ ⚠️ No provider configured
10
+ `)),null;let X=H.providers?.[K];if(!X)return console.error(W.yellow(`
11
+ ⚠️ Provider not configured
12
+ `)),null;let O=a(K);if(!O.isConfigured(X))return console.error(W.yellow(`
13
+ ⚠️ ${O.name} is not properly configured
14
+ `)),console.error(W.dim(`Run: sylphx code (to configure AI)
15
+ `)),null;if(q){let j=await d();if(j)return console.error(W.dim(`Continuing session: ${j.id}`)),console.error(W.dim(`Messages: ${j.messages.length}
16
+ `)),j;console.error(W.yellow(`No previous session found, creating new one
17
+ `))}let E=await x1(K,X);if(!E)return console.error(W.yellow(`
18
+ ⚠️ No models available for this provider
19
+ `)),null;return await g(K,E)}function p1(){console.error(W.red(`
20
+ ✗ No text response received from model
21
+ `)),console.error(W.yellow("The model may have called tools but did not generate a final text response.")),console.error(W.yellow(`This usually means:
22
+ `)),console.error(W.dim(" • The current model does not fully support multi-step tool calling")),console.error(W.dim(` • Some models can call tools but cannot process results and respond
23
+ `)),console.error(W.green("Recommended models with full tool support:")),console.error(W.green(" • anthropic/claude-3.5-sonnet")),console.error(W.green(" • anthropic/claude-3.5-haiku")),console.error(W.green(" • openai/gpt-4o")),console.error(W.green(` • google/gemini-2.0-flash-exp
24
+ `)),console.error(W.dim("\uD83D\uDCA1 Tip: Ask questions that don't require tools, or switch to a model above")),console.error(W.dim("To configure: Run `sylphx code` (TUI mode) then type /provider\n"))}export{p1 as showModelToolSupportError,y1 as getOrCreateSession,x1 as getDefaultModel};
25
+ export{W as w,G1 as x,k1 as y,y1 as z,p1 as A};
26
+
27
+ //# debugId=24DCE4247A9658CA64756E2164756E21
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/chalk/source/vendor/ansi-styles/index.js", "../node_modules/chalk/source/vendor/supports-color/index.js", "../node_modules/chalk/source/utilities.js", "../node_modules/chalk/source/index.js", "../src/utils/session-manager.ts", "../src/core/session-service.ts"],
4
+ "sourcesContent": [
5
+ "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n",
6
+ "import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n",
7
+ "// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n",
8
+ "import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n",
9
+ "/**\n * Session Manager\n * Manage chat sessions for headless mode\n */\n\nimport { readFile, writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type { ProviderId } from '../config/ai-config.js';\nimport type { Session } from '../types/session.types.js';\n\nexport type { Session } from '../types/session.types.js';\n\nconst SESSION_DIR = join(homedir(), '.sylphx', 'sessions');\nconst LAST_SESSION_FILE = join(SESSION_DIR, '.last-session');\n\n/**\n * Ensure session directory exists\n */\nasync function ensureSessionDir(): Promise<void> {\n await mkdir(SESSION_DIR, { recursive: true });\n}\n\n/**\n * Get session file path\n */\nfunction getSessionPath(sessionId: string): string {\n return join(SESSION_DIR, `${sessionId}.json`);\n}\n\n/**\n * Create new session\n */\nexport async function createSession(provider: ProviderId, model: string): Promise<Session> {\n await ensureSessionDir();\n\n const session: Session = {\n id: `session-${Date.now()}`,\n provider,\n model,\n messages: [],\n created: Date.now(),\n updated: Date.now(),\n };\n\n await saveSession(session);\n await setLastSession(session.id);\n\n return session;\n}\n\n/**\n * Save session to file\n */\nexport async function saveSession(session: Session): Promise<void> {\n await ensureSessionDir();\n session.updated = Date.now();\n const path = getSessionPath(session.id);\n await writeFile(path, JSON.stringify(session, null, 2), 'utf8');\n}\n\n/**\n * Load session from file\n */\nexport async function loadSession(sessionId: string): Promise<Session | null> {\n try {\n const path = getSessionPath(sessionId);\n const content = await readFile(path, 'utf8');\n return JSON.parse(content);\n } catch {\n return null;\n }\n}\n\n/**\n * Get last session ID\n */\nexport async function getLastSessionId(): Promise<string | null> {\n try {\n const content = await readFile(LAST_SESSION_FILE, 'utf8');\n return content.trim();\n } catch {\n return null;\n }\n}\n\n/**\n * Set last session ID\n */\nexport async function setLastSession(sessionId: string): Promise<void> {\n await ensureSessionDir();\n await writeFile(LAST_SESSION_FILE, sessionId, 'utf8');\n}\n\n/**\n * Load last session\n */\nexport async function loadLastSession(): Promise<Session | null> {\n const sessionId = await getLastSessionId();\n if (!sessionId) return null;\n return loadSession(sessionId);\n}\n\n/**\n * Add message to session\n */\nexport function addMessage(\n session: Session,\n role: 'user' | 'assistant',\n content: string\n): Session {\n return {\n ...session,\n messages: [\n ...session.messages,\n {\n role,\n content,\n timestamp: Date.now(),\n },\n ],\n };\n}\n\n/**\n * Clear session messages but keep metadata\n */\nexport function clearSessionMessages(session: Session): Session {\n return {\n ...session,\n messages: [],\n updated: Date.now(),\n };\n}\n",
10
+ "/**\n * Session Service\n * Centralized session management for headless mode\n */\n\nimport chalk from 'chalk';\nimport { loadAIConfig, getConfiguredProviders } from '../config/ai-config.js';\nimport type { ProviderId, ProviderConfig } from '../config/ai-config.js';\nimport { createSession, loadLastSession } from '../utils/session-manager.js';\nimport type { Session } from '../types/session.types.js';\nimport { getProvider } from '../providers/index.js';\nimport { fetchModels } from '../utils/ai-model-fetcher.js';\n\n/**\n * Get default model for a provider\n * Priority: config default-model > first available model\n */\nexport async function getDefaultModel(providerId: ProviderId, providerConfig: ProviderConfig): Promise<string | null> {\n // Try config first\n const configModel = providerConfig['default-model'] as string | undefined;\n if (configModel) {\n return configModel;\n }\n\n // Fetch first available model\n try {\n const models = await fetchModels(providerId, providerConfig);\n return models[0]?.id || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Get or create session for headless mode\n */\nexport async function getOrCreateSession(continueSession: boolean): Promise<Session | null> {\n const cwd = process.cwd();\n const configResult = await loadAIConfig(cwd);\n\n if (configResult._tag === 'Failure') {\n console.error(chalk.red('✗ Failed to load AI config'));\n return null;\n }\n\n const config = configResult.value;\n const configuredProviders = await getConfiguredProviders(cwd);\n\n if (configuredProviders.length === 0) {\n console.error(chalk.yellow('\\n⚠️ No AI provider configured\\n'));\n console.error(chalk.dim('Run: sylphx code (to configure AI)\\n'));\n return null;\n }\n\n const providerId = config.defaultProvider ?? configuredProviders[0];\n if (!providerId) {\n console.error(chalk.yellow('\\n⚠️ No provider configured\\n'));\n return null;\n }\n\n const providerConfig = config.providers?.[providerId];\n if (!providerConfig) {\n console.error(chalk.yellow('\\n⚠️ Provider not configured\\n'));\n return null;\n }\n\n // Check if provider is properly configured\n const provider = getProvider(providerId);\n if (!provider.isConfigured(providerConfig)) {\n console.error(chalk.yellow(`\\n⚠️ ${provider.name} is not properly configured\\n`));\n console.error(chalk.dim('Run: sylphx code (to configure AI)\\n'));\n return null;\n }\n\n // Try to continue last session\n if (continueSession) {\n const lastSession = await loadLastSession();\n if (lastSession) {\n console.error(chalk.dim(`Continuing session: ${lastSession.id}`));\n console.error(chalk.dim(`Messages: ${lastSession.messages.length}\\n`));\n return lastSession;\n }\n console.error(chalk.yellow('No previous session found, creating new one\\n'));\n }\n\n // Get default model (last used or first available)\n const modelName = await getDefaultModel(providerId, providerConfig);\n if (!modelName) {\n console.error(chalk.yellow('\\n⚠️ No models available for this provider\\n'));\n return null;\n }\n\n // Create new session\n return await createSession(providerId, modelName);\n}\n\n/**\n * Show error message for models without tool support\n */\nexport function showModelToolSupportError(): void {\n console.error(chalk.red('\\n✗ No text response received from model\\n'));\n console.error(\n chalk.yellow('The model may have called tools but did not generate a final text response.')\n );\n console.error(\n chalk.yellow('This usually means:\\n')\n );\n console.error(chalk.dim(' • The current model does not fully support multi-step tool calling'));\n console.error(chalk.dim(' • Some models can call tools but cannot process results and respond\\n'));\n console.error(chalk.green('Recommended models with full tool support:'));\n console.error(chalk.green(' • anthropic/claude-3.5-sonnet'));\n console.error(chalk.green(' • anthropic/claude-3.5-haiku'));\n console.error(chalk.green(' • openai/gpt-4o'));\n console.error(chalk.green(' • google/gemini-2.0-flash-exp\\n'));\n console.error(chalk.dim('💡 Tip: Ask questions that don\\'t require tools, or switch to a model above'));\n console.error(chalk.dim('To configure: Run `sylphx code` (TUI mode) then type /provider\\n'));\n}\n"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "24DCE4247A9658CA64756E2164756E21",
14
+ "names": []
15
+ }