@sylphx/flow 0.2.1 → 0.2.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.
- package/assets/agents/coder.md +1 -1
- package/assets/agents/orchestrator.md +1 -1
- package/assets/agents/reviewer.md +1 -1
- package/assets/agents/writer.md +13 -13
- package/assets/slash-commands/context.md +112 -0
- package/dist/assets/agents/coder.md +32 -0
- package/dist/assets/agents/orchestrator.md +36 -0
- package/dist/assets/agents/reviewer.md +30 -0
- package/dist/assets/agents/writer.md +30 -0
- package/dist/assets/knowledge/data/sql.md +216 -0
- package/dist/assets/knowledge/guides/saas-template.md +85 -0
- package/dist/assets/knowledge/guides/system-prompt.md +344 -0
- package/dist/assets/knowledge/guides/tech-stack.md +92 -0
- package/dist/assets/knowledge/guides/ui-ux.md +44 -0
- package/dist/assets/knowledge/stacks/nextjs-app.md +165 -0
- package/dist/assets/knowledge/stacks/node-api.md +220 -0
- package/dist/assets/knowledge/stacks/react-app.md +232 -0
- package/dist/assets/knowledge/universal/deployment.md +109 -0
- package/dist/assets/knowledge/universal/performance.md +121 -0
- package/dist/assets/knowledge/universal/security.md +79 -0
- package/dist/assets/knowledge/universal/testing.md +111 -0
- package/dist/assets/output-styles/silent.md +23 -0
- package/dist/assets/rules/core.md +144 -0
- package/dist/assets/slash-commands/commit.md +23 -0
- package/dist/assets/slash-commands/context.md +112 -0
- package/dist/assets/slash-commands/explain.md +35 -0
- package/dist/assets/slash-commands/mep.md +63 -0
- package/dist/assets/slash-commands/review.md +39 -0
- package/dist/assets/slash-commands/test.md +30 -0
- package/dist/chunk-1rptg3yg.js +4 -0
- package/dist/chunk-1rptg3yg.js.map +10 -0
- package/dist/{chunk-124wqbdb.js → chunk-4fr8q0jy.js} +3 -3
- package/dist/{chunk-124wqbdb.js.map → chunk-4fr8q0jy.js.map} +1 -1
- package/dist/{chunk-f6y5vttn.js → chunk-5szm4n3x.js} +3 -3
- package/dist/{chunk-f6y5vttn.js.map → chunk-5szm4n3x.js.map} +1 -1
- package/dist/chunk-7nht27vs.js +4 -0
- package/dist/{chunk-g9t3me0w.js.map → chunk-7nht27vs.js.map} +2 -2
- package/dist/chunk-8krxe10w.js +3 -0
- package/dist/{chunk-e966bjm5.js.map → chunk-8krxe10w.js.map} +2 -2
- package/dist/{chunk-wpe7rw5c.js → chunk-8z1sf25t.js} +3 -3
- package/dist/{chunk-wpe7rw5c.js.map → chunk-8z1sf25t.js.map} +1 -1
- package/dist/chunk-9c2nr2fz.js +25 -0
- package/dist/chunk-9c2nr2fz.js.map +61 -0
- package/dist/{chunk-4p754rhd.js → chunk-asr22mbn.js} +2 -2
- package/dist/{chunk-4p754rhd.js.map → chunk-asr22mbn.js.map} +2 -2
- package/dist/chunk-bnxtqetr.js +23 -0
- package/dist/chunk-bnxtqetr.js.map +11 -0
- package/dist/chunk-cs1s5c3g.js +54 -0
- package/dist/chunk-cs1s5c3g.js.map +53 -0
- package/dist/chunk-cv1nhr27.js +2 -0
- package/dist/{chunk-hshjnpm0.js.map → chunk-cv1nhr27.js.map} +1 -1
- package/dist/chunk-d4hj6d4t.js +6 -0
- package/dist/chunk-d4hj6d4t.js.map +11 -0
- package/dist/chunk-f06ma45b.js +15 -0
- package/dist/chunk-f06ma45b.js.map +16 -0
- package/dist/chunk-fs3f7acb.js +4 -0
- package/dist/chunk-fs3f7acb.js.map +12 -0
- package/dist/{chunk-5r4afhzp.js → chunk-gh83x9ya.js} +3 -3
- package/dist/{chunk-5r4afhzp.js.map → chunk-gh83x9ya.js.map} +1 -1
- package/dist/{chunk-qa8b725g.js → chunk-gyq335sw.js} +6 -5
- package/dist/{chunk-qa8b725g.js.map → chunk-gyq335sw.js.map} +1 -1
- package/dist/{chunk-hs3nxzyz.js → chunk-hft1735c.js} +2 -2
- package/dist/{chunk-hs3nxzyz.js.map → chunk-hft1735c.js.map} +2 -2
- package/dist/chunk-hj6r7703.js +3 -0
- package/dist/{chunk-78bfvh46.js.map → chunk-hj6r7703.js.map} +2 -2
- package/dist/chunk-hxj4eapp.js +14 -0
- package/dist/chunk-hxj4eapp.js.map +20 -0
- package/dist/chunk-jgsq3xax.js +23 -0
- package/dist/chunk-jgsq3xax.js.map +132 -0
- package/dist/{chunk-646h52kd.js → chunk-m9nt0bj3.js} +3 -3
- package/dist/{chunk-646h52kd.js.map → chunk-m9nt0bj3.js.map} +1 -1
- package/dist/{chunk-bd11hvvz.js → chunk-ndah8mn9.js} +2 -2
- package/dist/{chunk-bd11hvvz.js.map → chunk-ndah8mn9.js.map} +1 -1
- package/dist/chunk-s6g21d1g.js +27 -0
- package/dist/{chunk-0h7sfwq3.js.map → chunk-s6g21d1g.js.map} +4 -5
- package/dist/{chunk-hshjnpm0.js → chunk-sxy6vp20.js} +2 -2
- package/dist/chunk-sxy6vp20.js.map +9 -0
- package/dist/chunk-vjf57v4h.js +4 -0
- package/dist/chunk-vjf57v4h.js.map +10 -0
- package/dist/{chunk-jxny6xft.js → chunk-w2vbmr93.js} +2 -2
- package/dist/{chunk-jxny6xft.js.map → chunk-w2vbmr93.js.map} +1 -1
- package/dist/chunk-wd9qbbe5.js +5 -0
- package/dist/chunk-wd9qbbe5.js.map +10 -0
- package/dist/chunk-wnaa55wn.js +108 -0
- package/dist/chunk-wnaa55wn.js.map +24 -0
- package/dist/chunk-wrx1n6q6.js +16 -0
- package/dist/chunk-wrx1n6q6.js.map +16 -0
- package/dist/chunk-xata5rw6.js +119 -0
- package/dist/{chunk-878q8xdr.js.map → chunk-xata5rw6.js.map} +7 -18
- package/dist/chunk-z2rtyk3d.js +7 -0
- package/dist/{chunk-ygdr4fw7.js.map → chunk-z2rtyk3d.js.map} +2 -2
- package/dist/index.js +446 -482
- package/dist/index.js.map +301 -202
- package/package.json +4 -1
- package/dist/chunk-0h7sfwq3.js +0 -27
- package/dist/chunk-78bfvh46.js +0 -3
- package/dist/chunk-878q8xdr.js +0 -86
- package/dist/chunk-e966bjm5.js +0 -3
- package/dist/chunk-fxwaa2mg.js +0 -4
- package/dist/chunk-fxwaa2mg.js.map +0 -10
- package/dist/chunk-g9t3me0w.js +0 -4
- package/dist/chunk-ygdr4fw7.js +0 -7
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
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/
|
|
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/core/session-service.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
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
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
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
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
|
|
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"
|
|
9
|
+
"/**\n * Session Service\n * Centralized session management for headless mode\n * Uses database for persistence\n */\n\nimport chalk from 'chalk';\nimport { loadAIConfig, getConfiguredProviders } from '../config/ai-config.js';\nimport type { ProviderId, ProviderConfig } from '../config/ai-config.js';\nimport type { Session } from '../types/session.types.js';\nimport { getProvider } from '../providers/index.js';\nimport { fetchModels } from '../utils/ai-model-fetcher.js';\nimport { getSessionRepository } from '../db/database.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 // Get session repository\n const repository = await getSessionRepository();\n\n // Try to continue last session\n if (continueSession) {\n const lastSession = await repository.getLastSession();\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 in database\n return await repository.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
10
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "5DB7F8CFD6AEECD564756E2164756E21",
|
|
14
13
|
"names": []
|
|
15
14
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import{createRequire as k}from"node:module";var g=Object.create;var{getPrototypeOf:h,defineProperty:f,getOwnPropertyNames:i}=Object;var j=Object.prototype.hasOwnProperty;var l=(a,b,c)=>{c=a!=null?g(h(a)):{};let d=b||!a||!a.__esModule?f(c,"default",{value:a,enumerable:!0}):c;for(let e of i(a))if(!j.call(d,e))f(d,e,{get:()=>a[e],enumerable:!0});return d};var m=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var n=(a,b)=>{for(var c in b)f(a,c,{get:b[c],enumerable:!0,configurable:!0,set:(d)=>b[c]=()=>d})};var p=k(import.meta.url);
|
|
2
|
-
export{l as
|
|
2
|
+
export{l as Lb,m as Mb,n as Nb,p as Ob};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=C23385FB828F6E4864756E2164756E21
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import"./chunk-sxy6vp20.js";import{spawn as E}from"node:child_process";class D{processes=new Map;idCounter=0;spawn(k,j){let q=`bash-${Date.now()}-${this.idCounter++}`,z=E("bash",["-c",k],{cwd:j||process.cwd(),shell:!1}),C={id:q,command:k,process:z,stdout:[],stderr:[],startTime:Date.now(),exitCode:null,cwd:j||process.cwd()};return z.stdout?.on("data",(x)=>{C.stdout.push(x.toString())}),z.stderr?.on("data",(x)=>{C.stderr.push(x.toString())}),z.on("exit",(x)=>{C.exitCode=x}),this.processes.set(q,C),q}getOutput(k){let j=this.processes.get(k);if(!j)return null;return{stdout:j.stdout.join(""),stderr:j.stderr.join(""),exitCode:j.exitCode,isRunning:j.exitCode===null,command:j.command,duration:Date.now()-j.startTime}}kill(k){let j=this.processes.get(k);if(!j)return!1;if(j.exitCode===null)j.process.kill("SIGTERM"),setTimeout(()=>{if(j.exitCode===null)j.process.kill("SIGKILL")},5000);return!0}list(){return Array.from(this.processes.values()).map((k)=>({id:k.id,command:k.command,isRunning:k.exitCode===null,duration:Date.now()-k.startTime,cwd:k.cwd}))}cleanup(){let k=Date.now()-3600000;for(let[j,q]of this.processes.entries())if(q.exitCode!==null&&q.startTime<k)this.processes.delete(j)}}var F=new D;setInterval(()=>{F.cleanup()},600000);export{F as bashManager};
|
|
2
|
+
export{F as V};
|
|
3
|
+
|
|
4
|
+
//# debugId=AED4369F20D7045B64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/tools/bash-manager.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Background Bash Process Manager\n * Manages long-running bash processes\n */\n\nimport { spawn } from 'node:child_process';\nimport type { ChildProcess } from 'node:child_process';\n\ninterface BashProcess {\n id: string;\n command: string;\n process: ChildProcess;\n stdout: string[];\n stderr: string[];\n startTime: number;\n exitCode: number | null;\n cwd: string;\n}\n\nclass BashManager {\n private processes = new Map<string, BashProcess>();\n private idCounter = 0;\n\n /**\n * Spawn a background bash process\n */\n spawn(command: string, cwd?: string): string {\n const id = `bash-${Date.now()}-${this.idCounter++}`;\n\n const bashProcess = spawn('bash', ['-c', command], {\n cwd: cwd || process.cwd(),\n shell: false,\n });\n\n const processInfo: BashProcess = {\n id,\n command,\n process: bashProcess,\n stdout: [],\n stderr: [],\n startTime: Date.now(),\n exitCode: null,\n cwd: cwd || process.cwd(),\n };\n\n // Collect stdout\n bashProcess.stdout?.on('data', (data: Buffer) => {\n processInfo.stdout.push(data.toString());\n });\n\n // Collect stderr\n bashProcess.stderr?.on('data', (data: Buffer) => {\n processInfo.stderr.push(data.toString());\n });\n\n // Handle exit\n bashProcess.on('exit', (code) => {\n processInfo.exitCode = code;\n });\n\n this.processes.set(id, processInfo);\n return id;\n }\n\n /**\n * Get output from a bash process\n */\n getOutput(id: string): {\n stdout: string;\n stderr: string;\n exitCode: number | null;\n isRunning: boolean;\n command: string;\n duration: number;\n } | null {\n const proc = this.processes.get(id);\n if (!proc) return null;\n\n return {\n stdout: proc.stdout.join(''),\n stderr: proc.stderr.join(''),\n exitCode: proc.exitCode,\n isRunning: proc.exitCode === null,\n command: proc.command,\n duration: Date.now() - proc.startTime,\n };\n }\n\n /**\n * Kill a bash process\n */\n kill(id: string): boolean {\n const proc = this.processes.get(id);\n if (!proc) return false;\n\n if (proc.exitCode === null) {\n proc.process.kill('SIGTERM');\n\n // Force kill after 5s if still running\n setTimeout(() => {\n if (proc.exitCode === null) {\n proc.process.kill('SIGKILL');\n }\n }, 5000);\n }\n\n return true;\n }\n\n /**\n * List all bash processes\n */\n list(): Array<{\n id: string;\n command: string;\n isRunning: boolean;\n duration: number;\n cwd: string;\n }> {\n return Array.from(this.processes.values()).map((proc) => ({\n id: proc.id,\n command: proc.command,\n isRunning: proc.exitCode === null,\n duration: Date.now() - proc.startTime,\n cwd: proc.cwd,\n }));\n }\n\n /**\n * Clean up completed processes older than 1 hour\n */\n cleanup() {\n const oneHourAgo = Date.now() - 60 * 60 * 1000;\n\n for (const [id, proc] of this.processes.entries()) {\n if (proc.exitCode !== null && proc.startTime < oneHourAgo) {\n this.processes.delete(id);\n }\n }\n }\n}\n\n// Singleton instance\nexport const bashManager = new BashManager();\n\n// Auto-cleanup every 10 minutes\nsetInterval(() => {\n bashManager.cleanup();\n}, 10 * 60 * 1000);\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "4BAKA,gBAAS,2BAcT,MAAM,CAAY,CACR,UAAY,IAAI,IAChB,UAAY,EAKpB,KAAK,CAAC,EAAiB,EAAsB,CAC3C,IAAM,EAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,cAEhC,EAAc,EAAM,OAAQ,CAAC,KAAM,CAAO,EAAG,CACjD,IAAK,GAAO,QAAQ,IAAI,EACxB,MAAO,EACT,CAAC,EAEK,EAA2B,CAC/B,KACA,UACA,QAAS,EACT,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,UAAW,KAAK,IAAI,EACpB,SAAU,KACV,IAAK,GAAO,QAAQ,IAAI,CAC1B,EAkBA,OAfA,EAAY,QAAQ,GAAG,OAAQ,CAAC,IAAiB,CAC/C,EAAY,OAAO,KAAK,EAAK,SAAS,CAAC,EACxC,EAGD,EAAY,QAAQ,GAAG,OAAQ,CAAC,IAAiB,CAC/C,EAAY,OAAO,KAAK,EAAK,SAAS,CAAC,EACxC,EAGD,EAAY,GAAG,OAAQ,CAAC,IAAS,CAC/B,EAAY,SAAW,EACxB,EAED,KAAK,UAAU,IAAI,EAAI,CAAW,EAC3B,EAMT,SAAS,CAAC,EAOD,CACP,IAAM,EAAO,KAAK,UAAU,IAAI,CAAE,EAClC,GAAI,CAAC,EAAM,OAAO,KAElB,MAAO,CACL,OAAQ,EAAK,OAAO,KAAK,EAAE,EAC3B,OAAQ,EAAK,OAAO,KAAK,EAAE,EAC3B,SAAU,EAAK,SACf,UAAW,EAAK,WAAa,KAC7B,QAAS,EAAK,QACd,SAAU,KAAK,IAAI,EAAI,EAAK,SAC9B,EAMF,IAAI,CAAC,EAAqB,CACxB,IAAM,EAAO,KAAK,UAAU,IAAI,CAAE,EAClC,GAAI,CAAC,EAAM,MAAO,GAElB,GAAI,EAAK,WAAa,KACpB,EAAK,QAAQ,KAAK,SAAS,EAG3B,WAAW,IAAM,CACf,GAAI,EAAK,WAAa,KACpB,EAAK,QAAQ,KAAK,SAAS,GAE5B,IAAI,EAGT,MAAO,GAMT,IAAI,EAMD,CACD,OAAO,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,CAAC,KAAU,CACxD,GAAI,EAAK,GACT,QAAS,EAAK,QACd,UAAW,EAAK,WAAa,KAC7B,SAAU,KAAK,IAAI,EAAI,EAAK,UAC5B,IAAK,EAAK,GACZ,EAAE,EAMJ,OAAO,EAAG,CACR,IAAM,EAAa,KAAK,IAAI,EAAI,QAEhC,QAAY,EAAI,KAAS,KAAK,UAAU,QAAQ,EAC9C,GAAI,EAAK,WAAa,MAAQ,EAAK,UAAY,EAC7C,KAAK,UAAU,OAAO,CAAE,EAIhC,CAGO,IAAM,EAAc,IAAI,EAG/B,YAAY,IAAM,CAChB,EAAY,QAAQ,GACnB,MAAc",
|
|
8
|
+
"debugId": "AED4369F20D7045B64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{W as V}from"./chunk-5szm4n3x.js";import{X as U}from"./chunk-8z1sf25t.js";import{Mb as R}from"./chunk-sxy6vp20.js";var E=R((M,Q)=>{var{defineProperty:K,getOwnPropertyDescriptor:W,getOwnPropertyNames:X}=Object,Y=Object.prototype.hasOwnProperty,Z=(q,v)=>{for(var z in v)K(q,z,{get:v[z],enumerable:!0})},$=(q,v,z,F)=>{if(v&&typeof v==="object"||typeof v==="function"){for(let G of X(v))if(!Y.call(q,G)&&G!==z)K(q,G,{get:()=>v[G],enumerable:!(F=W(v,G))||F.enumerable})}return q},A=(q)=>$(K({},"__esModule",{value:!0}),q),L={};Z(L,{refreshToken:()=>D});Q.exports=A(L);var H=U(),B=V();async function D(){let{projectId:q,teamId:v}=(0,B.findProjectInfo)(),z=(0,B.loadToken)(q);if(!z||(0,B.isExpired)((0,B.getTokenPayload)(z.token))){let F=(0,B.getVercelCliToken)();if(!F)throw new H.VercelOidcTokenError("Failed to refresh OIDC token: login to vercel cli");if(!q)throw new H.VercelOidcTokenError("Failed to refresh OIDC token: project id not found");if(z=await(0,B.getVercelOidcToken)(F,q,v),!z)throw new H.VercelOidcTokenError("Failed to refresh OIDC token");(0,B.saveToken)(z,q)}process.env.VERCEL_OIDC_TOKEN=z.token;return}});export default E();
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=C2AB45DE24B1888864756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_exports = {};\n__export(token_exports, {\n refreshToken: () => refreshToken\n});\nmodule.exports = __toCommonJS(token_exports);\nvar import_token_error = require(\"./token-error\");\nvar import_token_util = require(\"./token-util\");\nasync function refreshToken() {\n const { projectId, teamId } = (0, import_token_util.findProjectInfo)();\n let maybeToken = (0, import_token_util.loadToken)(projectId);\n if (!maybeToken || (0, import_token_util.isExpired)((0, import_token_util.getTokenPayload)(maybeToken.token))) {\n const authToken = (0, import_token_util.getVercelCliToken)();\n if (!authToken) {\n throw new import_token_error.VercelOidcTokenError(\n \"Failed to refresh OIDC token: login to vercel cli\"\n );\n }\n if (!projectId) {\n throw new import_token_error.VercelOidcTokenError(\n \"Failed to refresh OIDC token: project id not found\"\n );\n }\n maybeToken = await (0, import_token_util.getVercelOidcToken)(authToken, projectId, teamId);\n if (!maybeToken) {\n throw new import_token_error.VercelOidcTokenError(\"Failed to refresh OIDC token\");\n }\n (0, import_token_util.saveToken)(maybeToken, projectId);\n }\n process.env.VERCEL_OIDC_TOKEN = maybeToken.token;\n return;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n refreshToken\n});\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "qJACA,FAAuB,SAAnB,EAC0B,yBAA1B,EAC2B,oBAA3B,GADmB,OAEnB,EAAe,OAAO,UAAU,eAChC,EAAW,CAAC,EAAQ,IAAQ,CAC9B,QAAS,KAAQ,EACf,EAAU,EAAQ,EAAM,CAAE,IAAK,EAAI,GAAO,WAAY,EAAK,CAAC,GAE5D,EAAc,CAAC,EAAI,EAAM,EAAQ,IAAS,CAC5C,GAAI,GAAQ,OAAO,IAAS,UAAY,OAAO,IAAS,YACtD,QAAS,KAAO,EAAkB,CAAI,EACpC,GAAI,CAAC,EAAa,KAAK,EAAI,CAAG,GAAK,IAAQ,EACzC,EAAU,EAAI,EAAK,CAAE,IAAK,IAAM,EAAK,GAAM,WAAY,EAAE,EAAO,EAAiB,EAAM,CAAG,IAAM,EAAK,UAAW,CAAC,EAEvH,OAAO,GAEL,EAAe,CAAC,IAAQ,EAAY,EAAU,CAAC,EAAG,aAAc,CAAE,MAAO,EAAK,CAAC,EAAG,CAAG,EACrF,EAAgB,CAAC,EACrB,EAAS,EAAe,CACtB,aAAc,IAAM,CACtB,CAAC,EACD,EAAO,QAAU,EAAa,CAAa,EAC3C,IAAI,MACA,MACJ,eAAe,CAAY,EAAG,CAC5B,IAAQ,YAAW,WAAY,EAAG,EAAkB,iBAAiB,EACjE,GAAc,EAAG,EAAkB,WAAW,CAAS,EAC3D,GAAI,CAAC,IAAe,EAAG,EAAkB,YAAY,EAAG,EAAkB,iBAAiB,EAAW,KAAK,CAAC,EAAG,CAC7G,IAAM,GAAa,EAAG,EAAkB,mBAAmB,EAC3D,GAAI,CAAC,EACH,MAAM,IAAI,EAAmB,qBAC3B,mDACF,EAEF,GAAI,CAAC,EACH,MAAM,IAAI,EAAmB,qBAC3B,oDACF,EAGF,GADA,EAAa,MAAO,EAAG,EAAkB,oBAAoB,EAAW,EAAW,CAAM,EACrF,CAAC,EACH,MAAM,IAAI,EAAmB,qBAAqB,8BAA8B,GAEjF,EAAG,EAAkB,WAAW,EAAY,CAAS,EAExD,QAAQ,IAAI,kBAAoB,EAAW,MAC3C",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "C2AB45DE24B1888864756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{z as J}from"./chunk-bnxtqetr.js";import"./chunk-f06ma45b.js";import"./chunk-9c2nr2fz.js";import"./chunk-wrx1n6q6.js";import"./chunk-d4hj6d4t.js";import"./chunk-fs3f7acb.js";import"./chunk-cs1s5c3g.js";import"./chunk-vjf57v4h.js";import"./chunk-8z1sf25t.js";import"./chunk-jgsq3xax.js";import"./chunk-m9nt0bj3.js";import"./chunk-hxj4eapp.js";import"./chunk-cv1nhr27.js";import"./chunk-gyq335sw.js";import"./chunk-sxy6vp20.js";function K(b){if(!b||b.trim().length===0)return"New Chat";let z=b.trim().replace(/\n+/g," "),B=50;if(z.length<=B)return z;let q=z.substring(0,B),D=q.lastIndexOf(" ");if(D>30)return q.substring(0,D)+"...";return q+"..."}async function P(b,z,B,q,D){if(!b||b.trim().length===0)return"New Chat";try{let G=J(z,B,q,[{role:"user",content:`Generate a concise, descriptive title (max 50 characters) for a chat that starts with this message. Only respond with the title, nothing else:
|
|
2
|
+
|
|
3
|
+
${b}`}],[]),F="";for await(let H of G.textStream)F+=H,D(H);let E=F.trim().replace(/["\n]/g,"");return E.length>50?E.substring(0,50)+"...":E}catch(G){return K(b)}}function Q(b,z){let B=b||"New Chat",q=new Date(z),D=new Date;if(q.toDateString()===D.toDateString()){let E=q.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"});return`${B} (${E})`}let F=q.toLocaleDateString("en-US",{month:"short",day:"numeric"});return`${B} (${F})`}export{P as generateSessionTitleWithStreaming,K as generateSessionTitle,Q as formatSessionDisplay};
|
|
4
|
+
|
|
5
|
+
//# debugId=400125EE223A9C9E64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/session-title.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Session Title Generation Utility\n * Generate concise titles from user messages\n */\n\nimport { createAIStream } from '../core/ai-sdk.js';\nimport type { ProviderId } from '../types/config.types.js';\n\n/**\n * Generate a session title from the first user message\n * Takes the first 50 characters and adds ellipsis if truncated\n */\nexport function generateSessionTitle(firstMessage: string): string {\n if (!firstMessage || firstMessage.trim().length === 0) {\n return 'New Chat';\n }\n\n // Remove leading/trailing whitespace and newlines\n const cleaned = firstMessage.trim().replace(/\\n+/g, ' ');\n\n // Truncate to 50 characters\n const maxLength = 50;\n if (cleaned.length <= maxLength) {\n return cleaned;\n }\n\n // Find last space before maxLength to avoid cutting words\n const truncated = cleaned.substring(0, maxLength);\n const lastSpace = truncated.lastIndexOf(' ');\n\n if (lastSpace > 30) {\n // If there's a space in reasonable range, cut there\n return truncated.substring(0, lastSpace) + '...';\n }\n\n // Otherwise just truncate and add ellipsis\n return truncated + '...';\n}\n\n/**\n * Generate a session title using LLM with streaming\n */\nexport async function generateSessionTitleWithStreaming(\n firstMessage: string,\n provider: ProviderId,\n modelName: string,\n providerConfig: any,\n onChunk: (chunk: string) => void\n): Promise<string> {\n if (!firstMessage || firstMessage.trim().length === 0) {\n return 'New Chat';\n }\n\n try {\n const stream = createAIStream(\n provider,\n modelName,\n providerConfig,\n [\n {\n role: 'user',\n content: `Generate a concise, descriptive title (max 50 characters) for a chat that starts with this message. Only respond with the title, nothing else:\\n\\n${firstMessage}`,\n },\n ],\n [], // no tools for title generation\n );\n\n let fullTitle = '';\n\n for await (const chunk of stream.textStream) {\n fullTitle += chunk;\n onChunk(chunk);\n }\n\n // Clean up title\n const cleaned = fullTitle.trim().replace(/[\"\\n]/g, '');\n return cleaned.length > 50 ? cleaned.substring(0, 50) + '...' : cleaned;\n } catch (error) {\n // Fallback to simple title generation\n return generateSessionTitle(firstMessage);\n }\n}\n\n/**\n * Format session title for display with timestamp\n */\nexport function formatSessionDisplay(title: string | undefined, created: number): string {\n const displayTitle = title || 'New Chat';\n const date = new Date(created);\n const now = new Date();\n\n // Show time if today, otherwise show date\n const isToday = date.toDateString() === now.toDateString();\n\n if (isToday) {\n const timeStr = date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n });\n return `${displayTitle} (${timeStr})`;\n }\n\n const dateStr = date.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n });\n return `${displayTitle} (${dateStr})`;\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "ogBAYO,GAAS,LAAoB,LAAC,JAA8B,LACjE,HAAI,LAAC,HAAgB,JAAa,DAAK,JAAE,GAAW,JAClD,AAAO,WAIT,IAAM,EAAU,EAAa,KAAK,EAAE,QAAQ,OAAQ,GAAG,EAGjD,EAAY,GAClB,GAAI,EAAQ,QAAU,EACpB,OAAO,EAIT,IAAM,EAAY,EAAQ,UAAU,EAAG,CAAS,EAC1C,EAAY,EAAU,YAAY,GAAG,EAE3C,GAAI,EAAY,GAEd,OAAO,EAAU,UAAU,EAAG,CAAS,EAAI,MAI7C,OAAO,EAAY,MAMrB,eAAsB,CAAiC,CACrD,EACA,EACA,EACA,EACA,EACiB,CACjB,GAAI,CAAC,GAAgB,EAAa,KAAK,EAAE,SAAW,EAClD,MAAO,WAGT,GAAI,CACF,IAAM,EAAS,EACb,EACA,EACA,EACA,CACE,CACE,KAAM,OACN,QAAS;AAAA;AAAA,EAAqJ,GAChK,CACF,EACA,CAAC,CACH,EAEI,EAAY,GAEhB,cAAiB,KAAS,EAAO,WAC/B,GAAa,EACb,EAAQ,CAAK,EAIf,IAAM,EAAU,EAAU,KAAK,EAAE,QAAQ,SAAU,EAAE,EACrD,OAAO,EAAQ,OAAS,GAAK,EAAQ,UAAU,EAAG,EAAE,EAAI,MAAQ,EAChE,MAAO,EAAO,CAEd,OAAO,EAAqB,CAAY,GAOrC,SAAS,CAAoB,CAAC,EAA2B,EAAyB,CACvF,IAAM,EAAe,GAAS,WACxB,EAAO,IAAI,KAAK,CAAO,EACvB,EAAM,IAAI,KAKhB,GAFgB,EAAK,aAAa,IAAM,EAAI,aAAa,EAE5C,CACX,IAAM,EAAU,EAAK,mBAAmB,QAAS,CAC/C,KAAM,UACN,OAAQ,SACV,CAAC,EACD,MAAO,GAAG,MAAiB,KAG7B,IAAM,EAAU,EAAK,mBAAmB,QAAS,CAC/C,MAAO,QACP,IAAK,SACP,CAAC,EACD,MAAO,GAAG,MAAiB",
|
|
8
|
+
"debugId": "400125EE223A9C9E64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import{Lb as j,Ob as L}from"./chunk-sxy6vp20.js";async function k($,q){let{AI_PROVIDERS:H}=await import("./chunk-z2rtyk3d.js"),{getProvider:F}=await import("./chunk-xata5rw6.js"),z=$.getConfig(),G=F(q).getConfigSchema(),Y=G.map((h)=>({label:h.label,value:h.key}));$.sendMessage(`Configure ${H[q].name} - Select setting:`);let W=await $.waitForInput({type:"selection",questions:[{id:"key",question:"Which setting do you want to configure?",options:Y}]}),J=typeof W==="object"&&!Array.isArray(W)?W.key:"";if(!J)return"Configuration cancelled.";let Q=G.find((h)=>h.key===J),Z;if(Q?.type==="boolean"){$.sendMessage(`Select value for ${J}:`);let h=await $.waitForInput({type:"selection",questions:[{id:"value",question:`${Q.label}:`,options:[{label:"true",value:"true"},{label:"false",value:"false"}]}]});Z=typeof h==="object"&&!Array.isArray(h)?h.value:""}else{$.sendMessage(`Enter value for ${J}:`);let h=await $.waitForInput({type:"text",prompt:`${J}:`});Z=typeof h==="string"?h:""}if(!Z)return"Value is required.";let b={...z,providers:{...z.providers,[q]:{...z.providers?.[q],[J]:Z}}};if(!z?.defaultProvider)b.defaultProvider=q;$.setAIConfig(b),await $.saveConfig(b);let U=G.find((h)=>h.key===J)?.secret?"***":Z;return`Set ${H[q].name} ${J} to: ${U}`}var J$={id:"provider",label:"/provider",description:"Manage AI providers",args:[{name:"action",description:'Action: "use" or "set"',required:!1,loadOptions:async($)=>{return[{id:"use",label:"use",value:"use"},{id:"set",label:"set",value:"set"}]}},{name:"provider-name",description:"Provider name (anthropic, openai, google, openrouter)",required:!1,loadOptions:async($)=>{let{AI_PROVIDERS:q}=await import("./chunk-z2rtyk3d.js");return Object.values(q).map((H)=>({id:H.id,label:H.name,value:H.id}))}},{name:"key",description:"Setting key (for set action)",required:!1,loadOptions:async($)=>{let q=$[1];if(!q)return[];try{let{getProvider:H}=await import("./chunk-xata5rw6.js");return H(q).getConfigSchema().map((G)=>({id:G.key,label:G.label,value:G.key}))}catch(H){return[]}}},{name:"value",description:"Setting value (for set action)",required:!1,loadOptions:async($)=>{let q=$[1],H=$[2];if(!q||!H)return[];try{let{getProvider:F}=await import("./chunk-xata5rw6.js");if(F(q).getConfigSchema().find((Y)=>Y.key===H)?.type==="boolean")return[{id:"true",label:"true",value:"true"},{id:"false",label:"false",value:"false"}];return[]}catch(F){return[]}}}],execute:async($)=>{let{AI_PROVIDERS:q}=await import("./chunk-z2rtyk3d.js"),H=$.getConfig();if($.args.length===0){$.sendMessage("What do you want to do?");let F=await $.waitForInput({type:"selection",questions:[{id:"action",question:"Select action:",options:[{label:"Use a provider",value:"use"},{label:"Configure a provider",value:"set"}]}]}),z=typeof F==="object"&&!Array.isArray(F)?F.action:"";if(!z)return"Action cancelled.";let{getProvider:X}=await import("./chunk-xata5rw6.js"),G=Object.values(q).map((J)=>{let Q=!1;try{let Z=X(J.id),b=H?.providers?.[J.id];Q=b?Z.isConfigured(b):!1}catch{}return{label:`${J.name} ${Q?"✓":""}`,value:J.id}});$.sendMessage(z==="use"?"Which provider do you want to use?":"Which provider do you want to configure?");let Y=await $.waitForInput({type:"selection",questions:[{id:"provider",question:z==="use"?"Select provider to use:":"Select provider to configure:",options:G}]}),W=typeof Y==="object"&&!Array.isArray(Y)?Y.provider:"";if(!W)return"Provider selection cancelled.";if(z==="use"){let{getProvider:J}=await import("./chunk-xata5rw6.js"),Q=J(W),Z=H?.providers?.[W];if(!Z||!Q.isConfigured(Z)){$.sendMessage(`${q[W].name} is not configured yet.`);let O=await $.waitForInput({type:"selection",questions:[{id:"configure",question:"Do you want to configure it now?",options:[{label:"Yes, configure now",value:"yes"},{label:"No, cancel",value:"no"}]}]});if(!(typeof O==="object"&&!Array.isArray(O)?O.configure==="yes":!1))return"Cancelled. You can configure later using: /provider set";let M=await k($,W),D=$.getConfig(),y=D?.providers?.[W];if(!y||!Q.isConfigured(y))return`${M}
|
|
2
|
+
|
|
3
|
+
Provider still not fully configured. Please continue configuration with: /provider set ${W}`;$.sendMessage(M);let _=y,E={...D,defaultProvider:W},{getDefaultModel:u}=await import("./chunk-s6g21d1g.js"),T=await u(W,_);if(!T)return`Provider configured but failed to get default model for ${q[W].name}`;E.providers={...E.providers,[W]:{..._,"default-model":T}},$.setAIConfig(E),await $.saveConfig(E),$.setUISelectedProvider(W),$.setUISelectedModel(T);let w=$.getCurrentSessionId();if(w)$.updateSessionProvider(w,W,T);else $.createSession(W,T);return`Now using ${q[W].name} with model: ${T}`}let b={...H,defaultProvider:W},{getDefaultModel:K}=await import("./chunk-s6g21d1g.js"),U=await K(W,Z);if(!U)return`Failed to get default model for ${q[W].name}`;b.providers={...b.providers,[W]:{...Z,"default-model":U}},$.setAIConfig(b),await $.saveConfig(b);let h=$.getCurrentSessionId();if(h)$.updateSessionProvider(h,W,U);else $.createSession(W,U);return`Switched to ${q[W].name}`}else return await k($,W)}if($.args.length===1&&$.args[0]==="use"){let{getProvider:F}=await import("./chunk-xata5rw6.js"),z=Object.values(q).map((K)=>{let U=!1;try{let h=F(K.id),O=H?.providers?.[K.id];U=O?h.isConfigured(O):!1}catch{}return{label:`${K.name} ${U?"✓":""}`,value:K.id}});$.sendMessage("Which provider do you want to use?");let X=await $.waitForInput({type:"selection",questions:[{id:"provider",question:"Select provider:",options:z}]}),G=typeof X==="object"&&!Array.isArray(X)?X.provider:"";if(!G)return"Provider selection cancelled.";let Y=F(G),W=H?.providers?.[G];if(!W||!Y.isConfigured(W)){$.sendMessage(`${q[G].name} is not configured yet.`);let K=await $.waitForInput({type:"selection",questions:[{id:"configure",question:"Do you want to configure it now?",options:[{label:"Yes, configure now",value:"yes"},{label:"No, cancel",value:"no"}]}]});if(!(typeof K==="object"&&!Array.isArray(K)?K.configure==="yes":!1))return"Cancelled. You can configure later using: /provider set";let h=await k($,G),O=$.getConfig(),B=O?.providers?.[G];if(!B||!Y.isConfigured(B))return`${h}
|
|
4
|
+
|
|
5
|
+
Provider still not fully configured. Please continue configuration with: /provider set ${G}`;$.sendMessage(h);let M=B,D={...O,defaultProvider:G},{getDefaultModel:y}=await import("./chunk-s6g21d1g.js"),_=await y(G,M);if(!_)return`Provider configured but failed to get default model for ${q[G].name}`;D.providers={...D.providers,[G]:{...M,"default-model":_}},$.setAIConfig(D),await $.saveConfig(D),$.setUISelectedProvider(G),$.setUISelectedModel(_);let E=$.getCurrentSessionId();if(E)$.updateSessionProvider(E,G,_);else $.createSession(G,_);return`Now using ${q[G].name} with model: ${_}`}let J={...H,defaultProvider:G},{getDefaultModel:Q}=await import("./chunk-s6g21d1g.js"),Z=await Q(G,W);if(!Z)return`Failed to get default model for ${q[G].name}`;J.providers={...J.providers,[G]:{...W,"default-model":Z}},$.setAIConfig(J),await $.saveConfig(J);let b=$.getCurrentSessionId();if(b)$.updateSessionProvider(b,G,Z);else $.createSession(G,Z);return`Switched to ${q[G].name}`}if($.args.length===2&&$.args[0]==="use"){let F=$.args[1];if(!(F in q))return`Invalid provider: ${F}. Available: ${Object.keys(q).join(", ")}`;let{getProvider:z}=await import("./chunk-xata5rw6.js"),X=z(F),G=H?.providers?.[F];if(!G||!X.isConfigured(G))return`${q[F].name} is not configured. Use: /provider set ${F}`;let Y={...H,defaultProvider:F},{getDefaultModel:W}=await import("./chunk-s6g21d1g.js"),J=await W(F,G);if(!J)return`Failed to get default model for ${q[F].name}`;Y.providers={...Y.providers,[F]:{...G,"default-model":J}},$.setAIConfig(Y),await $.saveConfig(Y);let Q=$.getCurrentSessionId();if(Q)$.updateSessionProvider(Q,F,J);else $.createSession(F,J);return`Switched to ${q[F].name}`}if($.args.length===1&&$.args[0]==="set"){let F=Object.values(q).map((b)=>({label:b.name,value:b.id}));$.sendMessage("Which provider do you want to configure?");let z=await $.waitForInput({type:"selection",questions:[{id:"provider",question:"Select provider:",options:F}]}),X=typeof z==="object"&&!Array.isArray(z)?z.provider:"";if(!X)return"Provider selection cancelled.";let{getProvider:G}=await import("./chunk-xata5rw6.js"),W=G(X).getConfigSchema(),J=W.map((b)=>({label:b.label,value:b.key}));$.sendMessage(`Configure ${q[X].name} - Select setting:`);let Q=await $.waitForInput({type:"selection",questions:[{id:"key",question:"Which setting do you want to configure?",options:J}]}),Z=typeof Q==="object"&&!Array.isArray(Q)?Q.key:"";if(!Z)return"Configuration cancelled.";{let b=W.find((B)=>B.key===Z),K;if(b?.type==="boolean"){$.sendMessage(`Select value for ${Z}:`);let B=await $.waitForInput({type:"selection",questions:[{id:"value",question:`${b.label}:`,options:[{label:"true",value:"true"},{label:"false",value:"false"}]}]});K=typeof B==="object"&&!Array.isArray(B)?B.value:""}else{$.sendMessage(`Enter value for ${Z}:`);let B=await $.waitForInput({type:"text",placeholder:`Enter ${Z}...`});K=typeof B==="string"?B:""}if(!K)return"Value is required.";let U={...H,providers:{...H.providers,[X]:{...H.providers?.[X],[Z]:K}}};if(!H?.defaultProvider)U.defaultProvider=X;$.setAIConfig(U),await $.saveConfig(U);let O=W.find((B)=>B.key===Z)?.secret?"***":K;return`Set ${q[X].name} ${Z} to: ${O}`}}if($.args.length===2&&$.args[0]==="set"){let F=$.args[1];if(!(F in q))return`Invalid provider: ${F}. Available: ${Object.keys(q).join(", ")}`;let{getProvider:z}=await import("./chunk-xata5rw6.js"),G=z(F).getConfigSchema(),Y=G.map((Q)=>({label:Q.label,value:Q.key}));$.sendMessage(`Configure ${q[F].name} - Select setting:`);let W=await $.waitForInput({type:"selection",questions:[{id:"key",question:"Which setting do you want to configure?",options:Y}]}),J=typeof W==="object"&&!Array.isArray(W)?W.key:"";if(!J)return"Configuration cancelled.";{let Q=G.find((h)=>h.key===J),Z;if(Q?.type==="boolean"){$.sendMessage(`Select value for ${J}:`);let h=await $.waitForInput({type:"selection",questions:[{id:"value",question:`${Q.label}:`,options:[{label:"true",value:"true"},{label:"false",value:"false"}]}]});Z=typeof h==="object"&&!Array.isArray(h)?h.value:""}else{$.sendMessage(`Enter value for ${J}:`);let h=await $.waitForInput({type:"text",placeholder:`Enter ${J}...`});Z=typeof h==="string"?h:""}if(!Z)return"Value is required.";let b={...H,providers:{...H.providers,[F]:{...H.providers?.[F],[J]:Z}}};if(!H?.defaultProvider)b.defaultProvider=F;$.setAIConfig(b),await $.saveConfig(b);let U=G.find((h)=>h.key===J)?.secret?"***":Z;return`Set ${q[F].name} ${J} to: ${U}`}}if($.args.length>=4&&$.args[0]==="set"){let F=$.args[1],z=$.args[2],X=$.args.slice(3).join(" ");if(!(F in q))return`Invalid provider: ${F}. Available: ${Object.keys(q).join(", ")}`;let{getProvider:G}=await import("./chunk-xata5rw6.js"),W=G(F).getConfigSchema(),J=W.map((K)=>K.key);if(!J.includes(z))return`Invalid key: ${z}. Valid keys for ${F}: ${J.join(", ")}`;let Q={...H,providers:{...H.providers,[F]:{...H.providers?.[F],[z]:X}}};if(!H?.defaultProvider)Q.defaultProvider=F;$.setAIConfig(Q),await $.saveConfig(Q);let b=W.find((K)=>K.key===z)?.secret?"***":X;return`Set ${q[F].name} ${z} to: ${b}`}return`Usage:
|
|
6
|
+
/provider - Select action and provider
|
|
7
|
+
/provider use - Select provider to use
|
|
8
|
+
/provider use [name] - Switch to provider
|
|
9
|
+
/provider set - Configure a provider
|
|
10
|
+
/provider set [name] - Configure specific provider
|
|
11
|
+
/provider set [name] [key] [value] - Set provider config directly`}},p=J$;var Q$={id:"model",label:"/model",description:"Switch AI model",args:[{name:"model-name",description:"Model to switch to",required:!1,loadOptions:async($,q)=>{try{let H=q?.getConfig();if(!H?.providers)return[];let z=q?.getCurrentSession()?.provider||H.defaultProvider;if(!z)return[];let X=H.providers[z];if(!X)return[];try{let{fetchModels:G}=await import("./chunk-7nht27vs.js");return(await G(z,X)).map((W)=>({id:W.id,label:W.name,value:W.id}))}catch(G){if(q)q.addLog(`Failed to fetch models for ${z}: ${G instanceof Error?G.message:String(G)}`);return[]}}catch(H){if(q)q.addLog(`Error loading models: ${H instanceof Error?H.message:String(H)}`);return[]}}}],execute:async($)=>{let q;if($.args.length===0)try{let Y=$.getConfig();if(!Y?.providers)return"No providers configured. Please configure a provider first.";let J=$.getCurrentSession()?.provider||Y.defaultProvider;if(!J)return"No provider selected. Use /provider to select a provider first.";let Q=Y.providers[J];if(!Q)return`Provider ${J} is not configured.`;let Z=[];try{let{fetchModels:K}=await import("./chunk-7nht27vs.js"),U=await K(J,Q);Z=U.map((h)=>({label:h.name,value:h.id})),$.addLog(`Loaded ${U.length} models from ${J}`)}catch(K){let U=K instanceof Error?K.message:String(K);return $.addLog(`Failed to fetch models for ${J}: ${U}`),`Failed to load models from ${J}: ${U}`}if(Z.length===0)return`No models available for ${J}`;$.sendMessage("Which model do you want to use?");let b=await $.waitForInput({type:"selection",questions:[{id:"model",question:"Which model do you want to use?",options:Z}]});q=typeof b==="object"&&!Array.isArray(b)?b.model:""}catch(Y){return`Failed to load models: ${Y instanceof Error?Y.message:String(Y)}`}else q=$.args[0];let H=$.getCurrentSession(),F=$.getConfig(),z=H?.provider||F?.defaultProvider;if(!z)return"No provider configured. Please configure a provider first.";let X={...F,defaultModel:q,providers:{...F.providers,[z]:{...F.providers?.[z],"default-model":q}}};$.setAIConfig(X),await $.saveConfig(X);let G=$.getCurrentSessionId();if(G)$.updateSessionModel(G,q);else $.createSession(z,q);return`Switched to model: ${q}`}},v=Q$;var X$={id:"logs",label:"/logs",description:"View debug logs",execute:async($)=>{return $.navigateTo("logs"),"Opening debug logs..."}},I=X$;var Y$={id:"help",label:"/help",description:"Show available commands",execute:async($)=>{let{commands:q}=await import("./chunk-wnaa55wn.js");return`Available commands:
|
|
12
|
+
${q.map((F)=>{let z=F.args?` ${F.args.map((X)=>`[${X.name}]`).join(" ")}`:"";return`${F.label}${z} - ${F.description}`}).join(`
|
|
13
|
+
`)}`}},f=Y$;var Z$={id:"survey",label:"/survey",description:"Test multi-question selection (demo)",execute:async($)=>{$.sendMessage("Let me ask you a few questions...");let q=await $.waitForInput({type:"selection",questions:[{id:"language",question:"What is your favorite programming language?",options:[{label:"TypeScript"},{label:"JavaScript"},{label:"Python"},{label:"Rust"},{label:"Go"}]},{id:"framework",question:"Which framework do you prefer?",options:[{label:"React"},{label:"Vue"},{label:"Angular"},{label:"Svelte"},{label:"Solid"}]},{id:"editor",question:"What is your favorite code editor?",options:[{label:"Visual Studio Code"},{label:"Vim/Neovim"},{label:"Emacs"},{label:"Sublime Text"},{label:"Atom"}]}]});if(typeof q==="object"&&!Array.isArray(q))return`Survey completed! Your answers: ${Object.entries(q).map(([F,z])=>`${F}: ${z}`).join(", ")}`;return"Survey cancelled."}},l=Z$;var b$={id:"context",label:"/context",description:"Display context window usage and token breakdown",execute:async($)=>{let{countTokens:q,formatTokenCount:H}=await import("./chunk-1rptg3yg.js"),{getSystemPrompt:F}=await import("./chunk-bnxtqetr.js"),{getAISDKTools:z}=await import("./chunk-f06ma45b.js"),X=$.getCurrentSession();if(!X)return"No active session. Start chatting first to see context usage.";let G=X.model,W=((N)=>{if(N.includes("gpt-4")){if(N.includes("32k")||N.includes("turbo"))return 128000;if(N.includes("vision"))return 128000;return 8192}if(N.includes("gpt-3.5")){if(N.includes("16k"))return 16385;return 4096}if(N.includes("claude-3")){if(N.includes("opus"))return 200000;if(N.includes("sonnet"))return 200000;if(N.includes("haiku"))return 200000}return 200000})(G);$.addLog(`[Context] Calculating token counts for ${G} (limit: ${H(W)})...`);let J=F(),Q=await q(J,G),{getEnabledRulesContent:Z}=await import("./chunk-d4hj6d4t.js"),{getCurrentSystemPrompt:b}=await import("./chunk-fs3f7acb.js"),K="You are Sylphx, an AI development assistant.",U={};try{U["Base prompt"]=await q(K,G);let N=Z();if(N)U.Rules=await q(N,G);let V=b();U["Agent prompt"]=await q(V,G)}catch(N){$.addLog(`[Context] Failed to calculate system prompt breakdown: ${N}`)}let h=z(),O={},B=0;for(let[N,V]of Object.entries(h)){let S={name:N,description:V.description||"",parameters:V.parameters||{}},R=JSON.stringify(S,null,0),P=await q(R,G);O[N]=P,B+=P}let M=0;for(let N of X.messages){let V=N.content;if(N.attachments&&N.attachments.length>0)try{let{readFile:R}=await import("node:fs/promises"),C=(await Promise.all(N.attachments.map(async(A)=>{try{let m=await R(A.path,"utf8");return{path:A.relativePath,content:m}}catch{return{path:A.relativePath,content:"[Error reading file]"}}}))).map((A)=>`
|
|
14
|
+
|
|
15
|
+
<file path="${A.path}">
|
|
16
|
+
${A.content}
|
|
17
|
+
</file>`).join("");V+=C}catch(R){console.warn("[Context] Failed to read attachments for token count:",R)}let S=await q(V,G);M+=S}let D=Q+B+M,y=W-D,_=Math.floor(W*0.225),E=y-_,u=(D/W*100).toFixed(1),T=(Q/W*100).toFixed(1),w=(B/W*100).toFixed(1),o=(M/W*100).toFixed(1),t=(E/W*100).toFixed(1),e=(_/W*100).toFixed(1),$$=()=>{let V=Math.floor(Q/W*30),S=Math.floor(B/W*30),R=Math.floor(M/W*30),C=30-(V+S+R),A="█".repeat(V)+"░".repeat(30-V),m="░".repeat(V)+"█".repeat(S)+"░".repeat(30-V-S),z$="░".repeat(V+S)+"█".repeat(R)+"░".repeat(C);return[A,m,z$]},[q$,W$,F$]=$$(),G$=Object.entries(O).sort((N,V)=>V[1]-N[1]).map(([N,V])=>` ${N}: ${H(V)} tokens`).join(`
|
|
18
|
+
`),H$=Object.entries(U).map(([N,V])=>` ${N}: ${H(V)} tokens`).join(`
|
|
19
|
+
`);return`
|
|
20
|
+
Context Usage: ${H(D)}/${H(W)} tokens (${u}%)
|
|
21
|
+
Model: ${G}
|
|
22
|
+
|
|
23
|
+
Visual Breakdown:
|
|
24
|
+
${q$} System prompt: ${H(Q)} (${T}%)
|
|
25
|
+
${W$} Tools: ${H(B)} (${w}%)
|
|
26
|
+
${F$} Messages: ${H(M)} (${o}%)
|
|
27
|
+
|
|
28
|
+
Available Space:
|
|
29
|
+
• Free: ${H(E)} tokens (${t}%)
|
|
30
|
+
• Buffer: ${H(_)} tokens (${e}%)
|
|
31
|
+
|
|
32
|
+
System Prompt Breakdown:
|
|
33
|
+
${H$}
|
|
34
|
+
|
|
35
|
+
System Tools (${Object.keys(h).length} total):
|
|
36
|
+
${G$}
|
|
37
|
+
`.trim()}},g=b$;var h$={id:"sessions",label:"/sessions",description:"View and switch between chat sessions",execute:async($)=>{let{formatSessionDisplay:q}=await import("./chunk-wd9qbbe5.js"),H=$.getSessions();if(H.length===0)return"No sessions available. Start chatting to create a session.";let F=$.getCurrentSessionId(),z=[...H].sort((Q,Z)=>{let b=Z.updated-Q.updated;if(b!==0)return b;return Z.created-Q.created}),X=z.map((Q)=>{let Z=Q.id===F,b=q(Q.title,Q.created);return{label:Z?`${b} (current)`:b,value:Q.id}});$.sendMessage("Select a session to switch to:");let G=await $.waitForInput({type:"selection",questions:[{id:"session",question:"Which session do you want to switch to?",options:X}]}),Y=typeof G==="object"&&!Array.isArray(G)?G.session:"";if(!Y)return"Session selection cancelled.";$.setCurrentSession(Y);let W=z.find((Q)=>Q.id===Y);return`Switched to session: ${W?q(W.title,W.created):"Unknown session"}`}},a=h$;var U$={id:"new",label:"/new",description:"Create a new chat session",execute:async($)=>{let q=$.getConfig();if(!q?.defaultProvider||!q?.defaultModel)return"No AI provider configured. Use /provider to configure a provider first.";let H=$.createSession(q.defaultProvider,q.defaultModel);return $.setCurrentSession(H),`Created new chat session with ${q.defaultProvider} (${q.defaultModel})`}},x=U$;var K$={id:"bashes",label:"/bashes",description:"Manage background bash processes",execute:async($)=>{let{bashManager:q}=await import("./chunk-vjf57v4h.js"),H=q.list();if(H.length===0)return"No background bash processes found.";let F=H.map((W)=>{let J=W.isRunning?"[*] Running":"[x] Completed",Q=Math.floor(W.duration/1000),Z=Q>60?`${Math.floor(Q/60)}m ${Q%60}s`:`${Q}s`;return{label:`${J} [${Z}] ${W.command}`,value:W.id}});$.sendMessage(`Found ${H.length} background bash process${H.length!==1?"es":""}:`);let z=await $.waitForInput({type:"selection",questions:[{id:"action",question:"What do you want to do?",options:[{label:"View details",value:"view"},{label:"Kill a process",value:"kill"},{label:"Cancel",value:"cancel"}]}]}),X=typeof z==="object"&&!Array.isArray(z)?z.action:"";if(!X||X==="cancel")return"Cancelled.";$.sendMessage("Select a process:");let G=await $.waitForInput({type:"selection",questions:[{id:"process",question:"Which process?",options:F}]}),Y=typeof G==="object"&&!Array.isArray(G)?G.process:"";if(!Y)return"No process selected.";if(X==="view"){let W=q.getOutput(Y);if(!W)return"Process not found.";let J=W.isRunning?"Running":`Completed (exit code: ${W.exitCode})`,Q=Math.floor(W.duration/1000),Z=`
|
|
38
|
+
Process: ${Y}
|
|
39
|
+
Command: ${W.command}
|
|
40
|
+
Status: ${J}
|
|
41
|
+
Duration: ${Q}s
|
|
42
|
+
|
|
43
|
+
=== stdout ===
|
|
44
|
+
${W.stdout||"(empty)"}
|
|
45
|
+
`;if(W.stderr)Z+=`
|
|
46
|
+
=== stderr ===
|
|
47
|
+
${W.stderr}`;return Z.trim()}if(X==="kill"){if(!q.kill(Y))return"Failed to kill process (not found).";return`Sent termination signal to process ${Y}`}return"Unknown action."}},c=K$;var j$={id:"agent",label:"/agent",description:"Switch between AI agents with different system prompts",args:[{name:"agent-name",description:"Agent to switch to (coder, planner, etc.)",required:!1,loadOptions:async($)=>{let{getAllAgents:q}=await import("./chunk-fs3f7acb.js");return q().map((F)=>({id:F.id,label:`${F.metadata.name} - ${F.metadata.description}`,value:F.id}))}}],execute:async($)=>{let{getAllAgents:q,getCurrentAgent:H,switchAgent:F}=await import("./chunk-fs3f7acb.js"),z;if($.args.length===0){let W=q(),J=H();if(W.length===0)return"No agents available.";let Q=W.map((b)=>{return{label:b.id===J.id?`${b.metadata.name} (current) - ${b.metadata.description}`:`${b.metadata.name} - ${b.metadata.description}`,value:b.id}});$.sendMessage("Which agent do you want to use?");let Z=await $.waitForInput({type:"selection",questions:[{id:"agent",question:"Select agent:",options:Q}]});if(z=typeof Z==="object"&&!Array.isArray(Z)?Z.agent:"",!z)return"Agent selection cancelled."}else z=$.args[0];if(!F(z))return`Agent not found: ${z}. Use /agent to see available agents.`;let{getAgentById:G}=await import("./chunk-fs3f7acb.js"),Y=G(z);if(!Y)return"Failed to get agent details.";return`Switched to agent: ${Y.metadata.name}
|
|
48
|
+
${Y.metadata.description}`}},s=j$;var L$={id:"rules",label:"/rules",description:"Select enabled shared system prompt rules",execute:async($)=>{let{getAllRules:q,getEnabledRuleIds:H,setEnabledRules:F}=await import("./chunk-d4hj6d4t.js"),z=q(),X=H();if(z.length===0)return"No rules available.";let G=z.map((U)=>({label:`${U.metadata.name} - ${U.metadata.description}`,value:U.id}));$.sendMessage(`Select rules to enable (currently ${X.length} enabled):`);let Y=await $.waitForInput({type:"selection",questions:[{id:"rules",question:"Select all rules you want to enable:",options:G,multiSelect:!0,preSelected:X}]}),W=typeof Y==="object"&&!Array.isArray(Y)?Array.isArray(Y.rules)?Y.rules:[]:[];if(!Array.isArray(W))return"Rule selection cancelled.";if(!F(W))return"Failed to update rules.";let Q=W.length,Z=z.length-Q,K=z.filter((U)=>W.includes(U.id)).map((U)=>` • ${U.metadata.name}`).join(`
|
|
49
|
+
`);return`Updated rules configuration:
|
|
50
|
+
${Q} enabled, ${Z} disabled
|
|
51
|
+
|
|
52
|
+
Enabled rules:
|
|
53
|
+
${K||" (none)"}`}},i=L$;var N$={id:"compact",label:"/compact",description:"Summarize current session and create a new session with the summary",execute:async($)=>{let q=$.getCurrentSession();if(!q)return"No active session to compact.";if(q.messages.length===0)return"Current session has no messages to compact.";let H=$.getConfig();if(!H?.defaultProvider||!H?.defaultModel)return"No AI provider configured. Use /provider to configure a provider first.";$.sendMessage("Analyzing conversation and creating detailed summary...");try{let{getProvider:F}=await import("./chunk-xata5rw6.js"),{streamText:z}=await import("./chunk-9c2nr2fz.js"),{getSystemPrompt:X}=await import("./chunk-bnxtqetr.js"),G=F(q.provider),Y=H.providers?.[q.provider];if(!Y||!G.isConfigured(Y))return`Provider ${q.provider} is not properly configured.`;let W=G.createClient(Y,q.model),Q=`You are a conversation summarizer. Your task is to create a comprehensive, detailed summary of the following conversation that preserves ALL important information.
|
|
54
|
+
|
|
55
|
+
CRITICAL REQUIREMENTS:
|
|
56
|
+
1. DO NOT omit any important details, decisions, code snippets, file paths, commands, or configurations
|
|
57
|
+
2. Preserve technical accuracy - include exact function names, variable names, file paths, and command syntax
|
|
58
|
+
3. Maintain chronological flow of the conversation
|
|
59
|
+
4. Highlight key decisions, problems solved, and solutions implemented
|
|
60
|
+
5. Include all context that would be needed to continue this conversation naturally
|
|
61
|
+
6. Use clear markdown formatting with sections and bullet points
|
|
62
|
+
7. If code was discussed or written, include the essential parts or describe what was implemented
|
|
63
|
+
|
|
64
|
+
The summary will be used to start a fresh conversation while maintaining full context.
|
|
65
|
+
|
|
66
|
+
CONVERSATION TO SUMMARIZE:
|
|
67
|
+
${q.messages.map((M)=>{let y=M.content.filter((_)=>_.type==="text").map((_)=>_.content).join(`
|
|
68
|
+
`);if(M.attachments&&M.attachments.length>0){let _=M.attachments.map((E)=>`[Attached: ${E.relativePath}]`).join(`
|
|
69
|
+
`);y+=`
|
|
70
|
+
${_}`}return`${M.role==="user"?"User":"Assistant"}: ${y}`}).join(`
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
`)}
|
|
75
|
+
|
|
76
|
+
Please provide a detailed, structured summary now:`,Z=await z({model:W,messages:[{role:"user",content:Q}],maxTokens:4096}),b="";for await(let M of Z.textStream)b+=M;if(!b||b.trim().length===0)return"Failed to generate summary. Please try again.";let K=$.createSession(q.provider,q.model),{useAppStore:U}=await import("./chunk-wrx1n6q6.js");U.getState().addMessage(K,"user",[{type:"text",content:`# Previous Conversation Summary
|
|
77
|
+
|
|
78
|
+
${b}
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
*This is a summary of our previous conversation. You can reference any details from above as we continue our discussion.*`}]),$.setCurrentSession(K);let O=q.messages.length;return`✓ Compacted session "${q.title||"Untitled session"}" (${O} messages)
|
|
83
|
+
✓ Created new session with detailed summary
|
|
84
|
+
✓ Switched to new session
|
|
85
|
+
|
|
86
|
+
You can now continue the conversation with full context preserved.`}catch(F){let z=F instanceof Error?F.message:String(F);return $.addLog(`[Compact] Error: ${z}`),`Failed to compact session: ${z}`}}},d=N$;var r={id:"notifications",label:"/notifications",description:"Manage notification settings for AI responses",args:[{name:"action",description:"Action to perform (show, enable, disable)",required:!0,suggestions:["show","enable","disable"]},{name:"type",description:"Notification type to configure (os, terminal, sound, all)",required:!1,suggestions:["os","terminal","sound","all"]}],async execute($,q){let{updateNotificationSettings:H,notificationSettings:F}=q;if($.length===0){q.updateOutput(`
|
|
87
|
+
❌ Please specify an action: show, enable, or disable
|
|
88
|
+
`);return}let z=$[0].toLowerCase();switch(z){case"show":q.updateOutput(`
|
|
89
|
+
\uD83D\uDD14 Notification Settings:
|
|
90
|
+
`),q.updateOutput(` OS Notifications: ${F.osNotifications?"✅ Enabled":"❌ Disabled"}
|
|
91
|
+
`),q.updateOutput(` Terminal Notifications: ${F.terminalNotifications?"✅ Enabled":"❌ Disabled"}
|
|
92
|
+
`),q.updateOutput(` Sound Effects: ${F.sound?"✅ Enabled":"❌ Disabled"}
|
|
93
|
+
`),q.updateOutput(`
|
|
94
|
+
Use /notifications enable/disable [type] to change settings.
|
|
95
|
+
`);break;case"enable":case"disable":{let X=z==="enable";if($.length===1||$[1]==="all")H({osNotifications:X,terminalNotifications:X,sound:X}),q.updateOutput(`
|
|
96
|
+
${X?"✅":"❌"} All notifications ${X?"enabled":"disabled"}
|
|
97
|
+
`);else{let G=$[1].toLowerCase(),Y={};switch(G){case"os":Y.osNotifications=X;break;case"terminal":Y.terminalNotifications=X;break;case"sound":Y.sound=X;break;default:q.updateOutput(`
|
|
98
|
+
❌ Unknown notification type: ${G}
|
|
99
|
+
`),q.updateOutput(`Valid types: os, terminal, sound, all
|
|
100
|
+
`);return}H(Y),q.updateOutput(`
|
|
101
|
+
${X?"✅":"❌"} ${G} notifications ${X?"enabled":"disabled"}
|
|
102
|
+
`)}break}default:q.updateOutput(`
|
|
103
|
+
❌ Unknown action: ${z}
|
|
104
|
+
`),q.updateOutput(`Valid actions: show, enable, disable
|
|
105
|
+
`)}}};var n=[p,v,s,i,d,r,I,f,l,g,a,x,c];function d$($){return n.find((q)=>q.id===$)}function r$($){return n.find((q)=>q.label===$)}export{r$ as getCommandByLabel,d$ as getCommand,n as commands};
|
|
106
|
+
export{n as s};
|
|
107
|
+
|
|
108
|
+
//# debugId=B900832BE92D553664756E2164756E21
|