@sylphx/flow 0.2.11 → 0.2.13
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/README.md +36 -0
- package/assets/rules/core.md +56 -3
- package/dist/assets/rules/core.md +56 -3
- package/dist/chunk-01gv4qey.js +4 -0
- package/dist/chunk-01gv4qey.js.map +11 -0
- package/dist/chunk-1e8xf3f6.js +27 -0
- package/dist/{chunk-s323r5xg.js.map → chunk-1e8xf3f6.js.map} +5 -5
- package/dist/{chunk-f9yb2zk3.js → chunk-3m9whg4q.js} +2 -2
- package/dist/{chunk-f9yb2zk3.js.map → chunk-3m9whg4q.js.map} +1 -1
- package/dist/chunk-3qxj0zy3.js +23 -0
- package/dist/chunk-3qxj0zy3.js.map +11 -0
- package/dist/{chunk-sgafqzer.js → chunk-3w6pd43t.js} +3 -3
- package/dist/{chunk-sgafqzer.js.map → chunk-3w6pd43t.js.map} +2 -2
- package/dist/chunk-4e5g3df9.js +105 -0
- package/dist/chunk-4e5g3df9.js.map +27 -0
- package/dist/{chunk-d6k94684.js → chunk-4nm4ere4.js} +3 -3
- package/dist/{chunk-d6k94684.js.map → chunk-4nm4ere4.js.map} +1 -1
- package/dist/{chunk-ceyg2zjg.js → chunk-4vrj3f8r.js} +3 -3
- package/dist/{chunk-ceyg2zjg.js.map → chunk-4vrj3f8r.js.map} +1 -1
- package/dist/chunk-5njgv5k5.js +161 -0
- package/dist/{chunk-rsagxdqj.js.map → chunk-5njgv5k5.js.map} +4 -6
- package/dist/{chunk-6eb5a8kv.js → chunk-67n29s4q.js} +4 -4
- package/dist/chunk-67n29s4q.js.map +10 -0
- package/dist/chunk-7yyg008s.js +27 -0
- package/dist/{chunk-pzp2kw7j.js.map → chunk-7yyg008s.js.map} +2 -2
- package/dist/{chunk-66qzap9m.js → chunk-86ce45n6.js} +2 -2
- package/dist/{chunk-66qzap9m.js.map → chunk-86ce45n6.js.map} +1 -1
- package/dist/{chunk-fyvtp08n.js → chunk-99pz5wm0.js} +2 -2
- package/dist/{chunk-fyvtp08n.js.map → chunk-99pz5wm0.js.map} +1 -1
- package/dist/{chunk-51kpynby.js → chunk-g4baca7p.js} +3 -3
- package/dist/{chunk-51kpynby.js.map → chunk-g4baca7p.js.map} +1 -1
- package/dist/chunk-gc66xe7z.js +4 -0
- package/dist/{chunk-8ep9gk6d.js.map → chunk-gc66xe7z.js.map} +2 -2
- package/dist/{chunk-2nfq57ym.js → chunk-hj6qtsqp.js} +2 -2
- package/dist/{chunk-2nfq57ym.js.map → chunk-hj6qtsqp.js.map} +2 -2
- package/dist/{chunk-etqfkn4f.js → chunk-jbd95k1f.js} +3 -3
- package/dist/{chunk-etqfkn4f.js.map → chunk-jbd95k1f.js.map} +1 -1
- package/dist/chunk-jk1ebfqn.js +23 -0
- package/dist/{chunk-1ej6vegq.js.map → chunk-jk1ebfqn.js.map} +5 -5
- package/dist/{chunk-z61qdct1.js → chunk-kn908zkk.js} +2 -2
- package/dist/{chunk-z61qdct1.js.map → chunk-kn908zkk.js.map} +1 -1
- package/dist/{chunk-rvx8bgqk.js → chunk-mw13a082.js} +3 -3
- package/dist/{chunk-rvx8bgqk.js.map → chunk-mw13a082.js.map} +1 -1
- package/dist/chunk-n8vzewr3.js +4 -0
- package/dist/chunk-n8vzewr3.js.map +12 -0
- package/dist/chunk-nke51f3c.js +4 -0
- package/dist/chunk-nke51f3c.js.map +10 -0
- package/dist/{chunk-ny1s8fnh.js → chunk-ns5atzyz.js} +2 -2
- package/dist/{chunk-ny1s8fnh.js.map → chunk-ns5atzyz.js.map} +1 -1
- package/dist/{chunk-372bgp30.js → chunk-q4nh3vst.js} +3 -3
- package/dist/{chunk-372bgp30.js.map → chunk-q4nh3vst.js.map} +1 -1
- package/dist/{chunk-585jp0rg.js → chunk-q5gqgs0p.js} +3 -3
- package/dist/chunk-q5gqgs0p.js.map +10 -0
- package/dist/chunk-qpej66sh.js +6 -0
- package/dist/chunk-qpej66sh.js.map +11 -0
- package/dist/{chunk-f676awyz.js → chunk-s9bsh0gp.js} +3 -3
- package/dist/{chunk-f676awyz.js.map → chunk-s9bsh0gp.js.map} +1 -1
- package/dist/chunk-wnhhwtsy.js +19 -0
- package/dist/chunk-wnhhwtsy.js.map +11 -0
- package/dist/{chunk-mtrcdhzn.js → chunk-xs370t8p.js} +3 -3
- package/dist/{chunk-mtrcdhzn.js.map → chunk-xs370t8p.js.map} +8 -8
- package/dist/chunk-xtrn4wn0.js +3 -0
- package/dist/{chunk-b0047ggx.js.map → chunk-xtrn4wn0.js.map} +2 -2
- package/dist/index.js +341 -348
- package/dist/index.js.map +54 -33
- package/drizzle/0002_lyrical_random.sql +2 -0
- package/drizzle/0003_romantic_lockjaw.sql +4 -0
- package/drizzle/0004_blushing_meteorite.sql +6 -0
- package/drizzle/meta/0002_snapshot.json +920 -0
- package/drizzle/meta/0003_snapshot.json +920 -0
- package/drizzle/meta/0004_snapshot.json +921 -0
- package/drizzle/meta/_journal.json +21 -0
- package/package.json +4 -1
- package/dist/chunk-057m762a.js +0 -4
- package/dist/chunk-057m762a.js.map +0 -10
- package/dist/chunk-1ej6vegq.js +0 -23
- package/dist/chunk-585jp0rg.js.map +0 -10
- package/dist/chunk-5hcagq8j.js +0 -107
- package/dist/chunk-5hcagq8j.js.map +0 -25
- package/dist/chunk-6eb5a8kv.js.map +0 -10
- package/dist/chunk-7h737bp8.js +0 -4
- package/dist/chunk-7h737bp8.js.map +0 -12
- package/dist/chunk-8ep9gk6d.js +0 -4
- package/dist/chunk-b0047ggx.js +0 -3
- package/dist/chunk-cjy100rr.js +0 -6
- package/dist/chunk-cjy100rr.js.map +0 -11
- package/dist/chunk-dpba9y5x.js +0 -23
- package/dist/chunk-dpba9y5x.js.map +0 -11
- package/dist/chunk-pzp2kw7j.js +0 -27
- package/dist/chunk-r19ma0z2.js +0 -19
- package/dist/chunk-r19ma0z2.js.map +0 -10
- package/dist/chunk-rsagxdqj.js +0 -161
- package/dist/chunk-s323r5xg.js +0 -27
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
var k=(h)=>({_tag:"Success",value:h}),q=(h)=>({_tag:"Failure",error:h});var w=(h,j=(b)=>b)=>{try{return k(h())}catch(b){return q(j(b))}},x=async(h,j=(b)=>b)=>{try{let b=await h();return k(b)}catch(b){return q(j(b))}};
|
|
2
|
-
export{k as
|
|
2
|
+
export{k as Ea,q as Fa,w as Ga,x as Ha};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=06829951B2492ABA64756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Result type for functional error handling\n * Represents success or failure without exceptions\n *\n * DESIGN RATIONALE:\n * - Explicit error handling at type level\n * - Composable through map/flatMap\n * - Forces caller to handle errors\n * - No hidden control flow (no thrown exceptions)\n */\n\nexport type Result<T, E = Error> = Success<T> | Failure<E>;\n\nexport interface Success<T> {\n readonly _tag: 'Success';\n readonly value: T;\n}\n\nexport interface Failure<E> {\n readonly _tag: 'Failure';\n readonly error: E;\n}\n\n/**\n * Constructors\n */\n\nexport const success = <T>(value: T): Success<T> => ({\n _tag: 'Success',\n value,\n});\n\nexport const failure = <E>(error: E): Failure<E> => ({\n _tag: 'Failure',\n error,\n});\n\n/**\n * Type guards\n */\n\nexport const isSuccess = <T, E>(result: Result<T, E>): result is Success<T> =>\n result._tag === 'Success';\n\nexport const isFailure = <T, E>(result: Result<T, E>): result is Failure<E> =>\n result._tag === 'Failure';\n\n/**\n * Transformations\n */\n\n/**\n * Transform the success value\n * Failure propagates unchanged\n */\nexport const map =\n <T, U, E>(fn: (value: T) => U) =>\n (result: Result<T, E>): Result<U, E> => {\n if (isSuccess(result)) {\n return success(fn(result.value));\n }\n return result;\n };\n\n/**\n * Transform the success value with a function that returns a Result\n * Enables chaining operations that can fail\n * Failure propagates unchanged\n */\nexport const flatMap =\n <T, U, E>(fn: (value: T) => Result<U, E>) =>\n (result: Result<T, E>): Result<U, E> => {\n if (isSuccess(result)) {\n return fn(result.value);\n }\n return result;\n };\n\n/**\n * Transform the error\n * Success propagates unchanged\n */\nexport const mapError =\n <T, E, F>(fn: (error: E) => F) =>\n (result: Result<T, E>): Result<T, F> => {\n if (isFailure(result)) {\n return failure(fn(result.error));\n }\n return result;\n };\n\n/**\n * Extract value or provide default\n */\nexport const getOrElse =\n <T>(defaultValue: T) =>\n <E>(result: Result<T, E>): T => {\n if (isSuccess(result)) {\n return result.value;\n }\n return defaultValue;\n };\n\n/**\n * Extract value or compute default\n */\nexport const getOrElseLazy =\n <T>(fn: () => T) =>\n <E>(result: Result<T, E>): T => {\n if (isSuccess(result)) {\n return result.value;\n }\n return fn();\n };\n\n/**\n * Pattern matching\n */\nexport const match =\n <T, E, U>(onSuccess: (value: T) => U, onFailure: (error: E) => U) =>\n (result: Result<T, E>): U => {\n if (isSuccess(result)) {\n return onSuccess(result.value);\n }\n return onFailure(result.error);\n };\n\n/**\n * Convert thrown exception to Result\n */\nexport const tryCatch = <T, E = Error>(\n fn: () => T,\n onError: (error: unknown) => E = (error: unknown) => error as E\n): Result<T, E> => {\n try {\n return success(fn());\n } catch (error) {\n return failure(onError(error));\n }\n};\n\n/**\n * Convert Promise to Result\n */\nexport const tryCatchAsync = async <T, E = Error>(\n fn: () => Promise<T>,\n onError: (error: unknown) => E = (error: unknown) => error as E\n): Promise<Result<T, E>> => {\n try {\n const value = await fn();\n return success(value);\n } catch (error) {\n return failure(onError(error));\n }\n};\n\n/**\n * Combine multiple Results into a single Result containing an array\n * Fails if any Result is a Failure (short-circuits on first failure)\n */\nexport const all = <T, E>(results: Result<T, E>[]): Result<T[], E> => {\n const values: T[] = [];\n\n for (const result of results) {\n if (isFailure(result)) {\n return result;\n }\n values.push(result.value);\n }\n\n return success(values);\n};\n\n/**\n * Run side effect for success case\n */\nexport const tap =\n <T, E>(fn: (value: T) => void) =>\n (result: Result<T, E>): Result<T, E> => {\n if (isSuccess(result)) {\n fn(result.value);\n }\n return result;\n };\n\n/**\n * Run side effect for failure case\n */\nexport const tapError =\n <T, E>(fn: (error: E) => void) =>\n (result: Result<T, E>): Result<T, E> => {\n if (isFailure(result)) {\n fn(result.error);\n }\n return result;\n };\n\n/**\n * Functional pipe for composing Result transformations\n */\nexport const pipe =\n <T, E>(result: Result<T, E>) =>\n <U>(fn: (result: Result<T, E>) => U): U =>\n fn(result);\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "AA2BO,IAAM,EAAU,CAAI,KAA0B,CACnD,KAAM,UACN,OACF,GAEa,EAAU,CAAI,KAA0B,CACnD,KAAM,UACN,OACF,GA+FO,IAAM,EAAW,CACtB,EACA,EAAiC,CAAC,IAAmB,IACpC,CACjB,GAAI,CACF,OAAO,EAAQ,EAAG,CAAC,EACnB,MAAO,EAAO,CACd,OAAO,EAAQ,EAAQ,CAAK,CAAC,IAOpB,EAAgB,MAC3B,EACA,EAAiC,CAAC,IAAmB,IAC3B,CAC1B,GAAI,CACF,IAAM,EAAQ,MAAM,EAAG,EACvB,OAAO,EAAQ,CAAK,EACpB,MAAO,EAAO,CACd,OAAO,EAAQ,EAAQ,CAAK,CAAC",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "06829951B2492ABA64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-
|
|
2
|
-
export{F as
|
|
1
|
+
import"./chunk-3m9whg4q.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 R};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=7683EBF0DF52C33064756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
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
6
|
],
|
|
7
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": "
|
|
8
|
+
"debugId": "7683EBF0DF52C33064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Q as U}from"./chunk-q4nh3vst.js";import{Tb as C}from"./chunk-3m9whg4q.js";var b=C(U(),1);import{readFile as B,readdir as M,access as w}from"node:fs/promises";import{join as $,parse as y,relative as N,dirname as j}from"node:path";import{homedir as G}from"node:os";import{fileURLToPath as S}from"node:url";async function D(k,H=!1,x){try{let q=await B(k,"utf-8"),{data:Q,content:J}=b.default(q);if(!Q.name||typeof Q.name!=="string")return console.error(`Agent file ${k} missing required 'name' field`),null;let W={name:Q.name,description:Q.description||""};return{id:x||y(k).name,metadata:W,systemPrompt:J.trim(),isBuiltin:H,filePath:k}}catch(q){return console.error(`Failed to load agent from ${k}:`,q),null}}async function R(k,H=!1){try{let q=(await M(k,{recursive:!0,withFileTypes:!0})).filter((J)=>J.isFile()&&J.name.endsWith(".md")).map((J)=>{let W=$(J.parentPath||J.path,J.name),Z=N(k,W).replace(/\.md$/,"");return{fullPath:W,agentId:Z}});return(await Promise.all(q.map(({fullPath:J,agentId:W})=>D(J,H,W)))).filter((J)=>J!==null)}catch(x){return[]}}async function L(){let k=S(import.meta.url),H=j(k),x=$(H,"..","assets","agents"),q=$(H,"..","..","assets","agents");try{return await w(x),x}catch{return q}}function m(k){let H=$(G(),".sylphx-flow","agents"),x=$(k,".sylphx-flow","agents");return[H,x]}async function v(k){let H=await L(),[x,q]=m(k),[Q,J,W]=await Promise.all([R(H,!0),R(x,!1),R(q,!1)]),Z=new Map;for(let X of Q)Z.set(X.id,X);for(let X of J)Z.set(X.id,X);for(let X of W)Z.set(X.id,X);return Array.from(Z.values())}var Y="coder";var O=null,V=null,z={id:Y,metadata:{name:"Coder",description:"Fallback agent (agent manager not initialized)"},systemPrompt:"You are a helpful coding assistant.",isBuiltin:!0};function p(k){V=k}async function u(k){let H=await v(k),x=new Map;for(let q of H)x.set(q.id,q);if(O={agents:x,cwd:k},V){let q=V();if(q.getState){let Q=q.getState().currentAgentId||Y;if(!x.has(Q))q.getState().setCurrentAgentId(Y)}}}function l(){if(!O)return[z];return Array.from(O.agents.values())}function o(k){if(!O)return k===Y?z:null;return O.agents.get(k)||null}function E(){let k=K();if(!O)return z;return O.agents.get(k)||z}function K(){if(V){let k=V();if(k.getState)return k.getState().currentAgentId||Y}return Y}function s(k){if(!O)return!1;if(!O.agents.get(k))return!1;if(V){let x=V();if(x.getState)x.getState().setCurrentAgentId(k)}return!0}async function A(){if(!O)return;let k=O.cwd,H=K();if(await u(k),O&&!O.agents.has(H)){if(V){let x=V();if(x.getState)x.getState().setCurrentAgentId(Y)}}}function d(){return E().systemPrompt}export{s as switchAgent,p as setAppStoreGetter,A as reloadAgents,u as initializeAgentManager,d as getCurrentSystemPrompt,K as getCurrentAgentId,E as getCurrentAgent,l as getAllAgents,o as getAgentById};
|
|
2
|
+
export{p as K,u as L,l as M,o as N,s as O,d as P};
|
|
3
|
+
|
|
4
|
+
//# debugId=14D7D6301BF6514364756E2164756E21
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/agent-loader.ts", "../src/core/builtin-agents.ts", "../src/core/agent-manager.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Agent Loader\n * Loads agent definitions from markdown files with front matter\n */\n\nimport { readFile, readdir, access } from 'node:fs/promises';\nimport { join, parse, relative, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport { fileURLToPath } from 'node:url';\nimport matter from 'gray-matter';\nimport type { Agent, AgentMetadata } from '../types/agent.types.js';\n\n/**\n * Load a single agent from a markdown file\n */\nexport async function loadAgentFromFile(\n filePath: string,\n isBuiltin: boolean = false,\n agentId?: string\n): Promise<Agent | null> {\n try {\n const content = await readFile(filePath, 'utf-8');\n const { data, content: systemPrompt } = matter(content);\n\n // Validate front matter\n if (!data.name || typeof data.name !== 'string') {\n console.error(`Agent file ${filePath} missing required 'name' field`);\n return null;\n }\n\n const metadata: AgentMetadata = {\n name: data.name,\n description: data.description || '',\n };\n\n // Get agent ID from parameter or filename\n const id = agentId || parse(filePath).name;\n\n return {\n id,\n metadata,\n systemPrompt: systemPrompt.trim(),\n isBuiltin,\n filePath,\n };\n } catch (error) {\n console.error(`Failed to load agent from ${filePath}:`, error);\n return null;\n }\n}\n\n/**\n * Load all agents from a directory (recursively)\n */\nexport async function loadAgentsFromDirectory(dirPath: string, isBuiltin: boolean = false): Promise<Agent[]> {\n try {\n // Read directory recursively to support subdirectories\n const files = await readdir(dirPath, { recursive: true, withFileTypes: true });\n\n // Filter for .md files and calculate agent IDs from relative paths\n const agentFiles = files\n .filter((f) => f.isFile() && f.name.endsWith('.md'))\n .map((f) => {\n const fullPath = join(f.parentPath || f.path, f.name);\n // Calculate relative path from dirPath and remove .md extension\n const relativePath = relative(dirPath, fullPath).replace(/\\.md$/, '');\n return { fullPath, agentId: relativePath };\n });\n\n const agents = await Promise.all(\n agentFiles.map(({ fullPath, agentId }) => loadAgentFromFile(fullPath, isBuiltin, agentId))\n );\n\n return agents.filter((agent): agent is Agent => agent !== null);\n } catch (error) {\n // Directory doesn't exist or can't be read\n return [];\n }\n}\n\n/**\n * Get system agents path (bundled with the app)\n */\nexport async function getSystemAgentsPath(): Promise<string> {\n // Get the directory of the current module (cross-platform)\n const currentFile = fileURLToPath(import.meta.url);\n const currentDir = dirname(currentFile);\n\n // In production (dist), assets are at dist/assets/agents\n // In development (src), go up to project root: src/core -> project root\n const distPath = join(currentDir, '..', 'assets', 'agents');\n const devPath = join(currentDir, '..', '..', 'assets', 'agents');\n\n // Check which one exists (try dist first, then dev)\n try {\n await access(distPath);\n return distPath;\n } catch {\n return devPath;\n }\n}\n\n/**\n * Get all agent search paths\n */\nexport function getAgentSearchPaths(cwd: string): string[] {\n const globalPath = join(homedir(), '.sylphx-flow', 'agents');\n const projectPath = join(cwd, '.sylphx-flow', 'agents');\n\n return [globalPath, projectPath];\n}\n\n/**\n * Load all available agents from all sources\n */\nexport async function loadAllAgents(cwd: string): Promise<Agent[]> {\n const systemPath = await getSystemAgentsPath();\n const [globalPath, projectPath] = getAgentSearchPaths(cwd);\n\n const [systemAgents, globalAgents, projectAgents] = await Promise.all([\n loadAgentsFromDirectory(systemPath, true), // System agents are marked as builtin\n loadAgentsFromDirectory(globalPath, false),\n loadAgentsFromDirectory(projectPath, false),\n ]);\n\n // Priority: system < global < project\n // Use Map to deduplicate by ID (later entries override earlier ones)\n const agentMap = new Map<string, Agent>();\n\n // Add system agents first (lowest priority)\n for (const agent of systemAgents) {\n agentMap.set(agent.id, agent);\n }\n\n // Add global agents (override system)\n for (const agent of globalAgents) {\n agentMap.set(agent.id, agent);\n }\n\n // Add project agents (override globals and system)\n for (const agent of projectAgents) {\n agentMap.set(agent.id, agent);\n }\n\n return Array.from(agentMap.values());\n}\n",
|
|
6
|
+
"/**\n * Agent Constants\n * Default agent ID for fallback purposes\n */\n\n/**\n * Default agent ID (must match an agent in assets/agents/)\n */\nexport const DEFAULT_AGENT_ID = 'coder';\n",
|
|
7
|
+
"/**\n * Agent Manager\n * Manages agent state and operations\n */\n\nimport type { Agent } from '../types/agent.types.js';\nimport { loadAllAgents } from './agent-loader.js';\nimport { DEFAULT_AGENT_ID } from './builtin-agents.js';\n\n/**\n * Agent manager state\n */\ninterface AgentManagerState {\n agents: Map<string, Agent>;\n cwd: string;\n}\n\nlet state: AgentManagerState | null = null;\n\n/**\n * Get the app store (lazy import to avoid circular dependencies)\n */\nlet getAppStore: (() => any) | null = null;\n\n/**\n * Fallback agent when state is not initialized\n */\nconst FALLBACK_AGENT: Agent = {\n id: DEFAULT_AGENT_ID,\n metadata: {\n name: 'Coder',\n description: 'Fallback agent (agent manager not initialized)',\n },\n systemPrompt: 'You are a helpful coding assistant.',\n isBuiltin: true,\n};\n\n/**\n * Set the app store getter (called during initialization)\n */\nexport function setAppStoreGetter(getter: () => any): void {\n getAppStore = getter;\n}\n\n/**\n * Initialize agent manager\n */\nexport async function initializeAgentManager(cwd: string): Promise<void> {\n const allAgents = await loadAllAgents(cwd);\n\n const agentMap = new Map<string, Agent>();\n for (const agent of allAgents) {\n agentMap.set(agent.id, agent);\n }\n\n state = {\n agents: agentMap,\n cwd,\n };\n\n // Initialize store with default agent if store is available\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const currentAgentId = store.getState().currentAgentId || DEFAULT_AGENT_ID;\n // Ensure the current agent exists, fallback to default if not\n if (!agentMap.has(currentAgentId)) {\n store.getState().setCurrentAgentId(DEFAULT_AGENT_ID);\n }\n }\n }\n}\n\n/**\n * Get all available agents\n */\nexport function getAllAgents(): Agent[] {\n if (!state) {\n return [FALLBACK_AGENT];\n }\n return Array.from(state.agents.values());\n}\n\n/**\n * Get agent by ID\n */\nexport function getAgentById(id: string): Agent | null {\n if (!state) {\n return id === DEFAULT_AGENT_ID ? FALLBACK_AGENT : null;\n }\n return state.agents.get(id) || null;\n}\n\n/**\n * Get current agent\n */\nexport function getCurrentAgent(): Agent {\n const currentAgentId = getCurrentAgentId();\n\n if (!state) {\n return FALLBACK_AGENT;\n }\n return state.agents.get(currentAgentId) || FALLBACK_AGENT;\n}\n\n/**\n * Get current agent ID\n */\nexport function getCurrentAgentId(): string {\n // Try to get from store first\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n return store.getState().currentAgentId || DEFAULT_AGENT_ID;\n }\n }\n // Fallback to default\n return DEFAULT_AGENT_ID;\n}\n\n/**\n * Switch to a different agent\n */\nexport function switchAgent(agentId: string): boolean {\n if (!state) {\n return false;\n }\n\n const agent = state.agents.get(agentId);\n if (!agent) {\n return false;\n }\n\n // Update store if available (this triggers reactive updates)\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n store.getState().setCurrentAgentId(agentId);\n }\n }\n\n return true;\n}\n\n/**\n * Reload agents from disk\n */\nexport async function reloadAgents(): Promise<void> {\n if (!state) {\n return;\n }\n\n const cwd = state.cwd;\n const currentAgentId = getCurrentAgentId();\n\n await initializeAgentManager(cwd);\n\n // Restore current agent if it still exists, otherwise reset to default\n if (state && !state.agents.has(currentAgentId)) {\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n store.getState().setCurrentAgentId(DEFAULT_AGENT_ID);\n }\n }\n }\n}\n\n/**\n * Get system prompt for current agent\n */\nexport function getCurrentSystemPrompt(): string {\n return getCurrentAgent().systemPrompt;\n}\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "14D7D6301BF6514364756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Ja as b}from"./chunk-xs370t8p.js";import"./chunk-cv1nhr27.js";import"./chunk-jbd95k1f.js";import"./chunk-4vrj3f8r.js";import"./chunk-3m9whg4q.js";async function A(k,q={}){return b(k).fetchModels(q)}export{A as fetchModels};
|
|
2
|
+
export{A as Ia};
|
|
3
|
+
|
|
4
|
+
//# debugId=3D515B38D283FE2564756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/ai-model-fetcher.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * AI Model Fetcher\n * Dynamically fetch available models from providers using provider registry\n */\n\nimport type { ProviderId } from '../types/provider.types.js';\nimport type { ProviderConfig, ModelInfo } from '../providers/base-provider.js';\nimport { getProvider } from '../providers/index.js';\n\n// Re-export ModelInfo for backward compatibility\nexport type { ModelInfo } from '../providers/base-provider.js';\n\n/**\n * Fetch models for a provider using provider registry\n */\nexport async function fetchModels(provider: ProviderId, config: ProviderConfig = {}): Promise<ModelInfo[]> {\n const providerInstance = getProvider(provider);\n return providerInstance.fetchModels(config);\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "iLAeA,SAAsB,LAAW,LAAC,JAAsB,EAAyB,CAAC,EAAyB,CAEzG,OADyB,EAAY,CAAQ,EACrB,YAAY,CAAM",
|
|
8
|
+
"debugId": "3D515B38D283FE2564756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{b as v}from"./chunk-waemzsf4.js";import{
|
|
1
|
+
import{b as v}from"./chunk-waemzsf4.js";import{Ha as q}from"./chunk-kn908zkk.js";import"./chunk-3m9whg4q.js";import w from"node:fs/promises";import B from"node:path";var I=(...b)=>B.join(...b),J=(...b)=>B.resolve(...b),K=(b)=>B.dirname(b),L=(b,k)=>B.basename(b,k),M=(b)=>B.extname(b),N=async(b)=>{return q(async()=>{return await w.readFile(b,"utf-8")},(k)=>v(`Failed to read file: ${b}`,b,"read",{cause:k instanceof Error?k:void 0}))},O=async(b,k)=>{return q(async()=>{await w.writeFile(b,k,"utf-8")},(z)=>v(`Failed to write file: ${b}`,b,"write",{cause:z instanceof Error?z:void 0}))},Q=async(b)=>{return q(async()=>{await w.unlink(b)},(k)=>v(`Failed to delete file: ${b}`,b,"delete",{cause:k instanceof Error?k:void 0}))},R=async(b,k)=>{return q(async()=>{await w.mkdir(b,{recursive:k?.recursive??!0})},(z)=>v(`Failed to create directory: ${b}`,b,"create",{cause:z instanceof Error?z:void 0}))},T=async(b)=>{return q(async()=>{try{return await w.access(b),!0}catch{return!1}},(k)=>v(`Failed to check if path exists: ${b}`,b,"stat",{cause:k instanceof Error?k:void 0}))},U=async(b)=>{return q(async()=>{return await w.readdir(b)},(k)=>v(`Failed to read directory: ${b}`,b,"read",{cause:k instanceof Error?k:void 0}))},V=async(b)=>{return q(async()=>{let k=await w.stat(b);return{isFile:k.isFile(),isDirectory:k.isDirectory(),size:k.size}},(k)=>v(`Failed to get stats for: ${b}`,b,"stat",{cause:k instanceof Error?k:void 0}))};export{O as writeFile,J as resolvePath,N as readFile,U as readDirectory,T as pathExists,I as joinPath,V as getStats,M as extname,K as dirname,Q as deleteFile,R as createDirectory,L as basename};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=296D87B6E16F668564756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Functional composable for file system operations\n * Returns Result instead of throwing exceptions\n *\n * DESIGN RATIONALE:\n * - Explicit error handling\n * - Composable file operations\n * - Type-safe path handling\n * - Separation of concerns (pure path operations vs side effects)\n */\n\nimport fsPromises from 'node:fs/promises';\nimport path from 'node:path';\nimport type { FileSystemError } from '../../core/functional/error-types.js';\nimport { fileSystemError } from '../../core/functional/error-types.js';\nimport type { Result } from '../../core/functional/result.js';\nimport { tryCatchAsync } from '../../core/functional/result.js';\n\n/**\n * Pure path operations (no side effects)\n */\n\nexport const joinPath = (...segments: string[]): string => path.join(...segments);\n\nexport const resolvePath = (...segments: string[]): string => path.resolve(...segments);\n\nexport const dirname = (filePath: string): string => path.dirname(filePath);\n\nexport const basename = (filePath: string, ext?: string): string => path.basename(filePath, ext);\n\nexport const extname = (filePath: string): string => path.extname(filePath);\n\n/**\n * File system operations (side effects, return Result)\n */\n\nexport const readFile = async (filePath: string): Promise<Result<string, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n return await fsPromises.readFile(filePath, 'utf-8');\n },\n (error) =>\n fileSystemError(`Failed to read file: ${filePath}`, filePath, 'read', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const writeFile = async (\n filePath: string,\n content: string\n): Promise<Result<void, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n await fsPromises.writeFile(filePath, content, 'utf-8');\n },\n (error) =>\n fileSystemError(`Failed to write file: ${filePath}`, filePath, 'write', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const deleteFile = async (filePath: string): Promise<Result<void, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n await fsPromises.unlink(filePath);\n },\n (error) =>\n fileSystemError(`Failed to delete file: ${filePath}`, filePath, 'delete', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const createDirectory = async (\n dirPath: string,\n options?: { recursive?: boolean }\n): Promise<Result<void, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n await fsPromises.mkdir(dirPath, { recursive: options?.recursive ?? true });\n },\n (error) =>\n fileSystemError(`Failed to create directory: ${dirPath}`, dirPath, 'create', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const pathExists = async (filePath: string): Promise<Result<boolean, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n try {\n await fsPromises.access(filePath);\n return true;\n } catch {\n return false;\n }\n },\n (error) =>\n fileSystemError(`Failed to check if path exists: ${filePath}`, filePath, 'stat', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const readDirectory = async (\n dirPath: string\n): Promise<Result<string[], FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n return await fsPromises.readdir(dirPath);\n },\n (error) =>\n fileSystemError(`Failed to read directory: ${dirPath}`, dirPath, 'read', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n\nexport const getStats = async (\n filePath: string\n): Promise<Result<{ isFile: boolean; isDirectory: boolean; size: number }, FileSystemError>> => {\n return tryCatchAsync(\n async () => {\n const stats = await fsPromises.stat(filePath);\n return {\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n size: stats.size,\n };\n },\n (error) =>\n fileSystemError(`Failed to get stats for: ${filePath}`, filePath, 'stat', {\n cause: error instanceof Error ? error : undefined,\n })\n );\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "yHAWA,0BACA,mBAUO,IAAM,EAAW,IAAI,IAA+B,EAAK,KAAK,GAAG,CAAQ,EAEnE,EAAc,IAAI,IAA+B,EAAK,QAAQ,GAAG,CAAQ,EAEzE,EAAU,CAAC,IAA6B,EAAK,QAAQ,CAAQ,EAE7D,EAAW,CAAC,EAAkB,IAAyB,EAAK,SAAS,EAAU,CAAG,EAElF,EAAU,CAAC,IAA6B,EAAK,QAAQ,CAAQ,EAM7D,EAAW,MAAO,IAA+D,CAC5F,OAAO,EACL,SAAY,CACV,OAAO,MAAM,EAAW,SAAS,EAAU,OAAO,GAEpD,CAAC,IACC,EAAgB,wBAAwB,IAAY,EAAU,OAAQ,CACpE,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAY,MACvB,EACA,IAC2C,CAC3C,OAAO,EACL,SAAY,CACV,MAAM,EAAW,UAAU,EAAU,EAAS,OAAO,GAEvD,CAAC,IACC,EAAgB,yBAAyB,IAAY,EAAU,QAAS,CACtE,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAa,MAAO,IAA6D,CAC5F,OAAO,EACL,SAAY,CACV,MAAM,EAAW,OAAO,CAAQ,GAElC,CAAC,IACC,EAAgB,0BAA0B,IAAY,EAAU,SAAU,CACxE,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAkB,MAC7B,EACA,IAC2C,CAC3C,OAAO,EACL,SAAY,CACV,MAAM,EAAW,MAAM,EAAS,CAAE,UAAW,GAAS,WAAa,EAAK,CAAC,GAE3E,CAAC,IACC,EAAgB,+BAA+B,IAAW,EAAS,SAAU,CAC3E,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAa,MAAO,IAAgE,CAC/F,OAAO,EACL,SAAY,CACV,GAAI,CAEF,OADA,MAAM,EAAW,OAAO,CAAQ,EACzB,GACP,KAAM,CACN,MAAO,KAGX,CAAC,IACC,EAAgB,mCAAmC,IAAY,EAAU,OAAQ,CAC/E,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAgB,MAC3B,IAC+C,CAC/C,OAAO,EACL,SAAY,CACV,OAAO,MAAM,EAAW,QAAQ,CAAO,GAEzC,CAAC,IACC,EAAgB,6BAA6B,IAAW,EAAS,OAAQ,CACvE,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL,GAGW,EAAW,MACtB,IAC8F,CAC9F,OAAO,EACL,SAAY,CACV,IAAM,EAAQ,MAAM,EAAW,KAAK,CAAQ,EAC5C,MAAO,CACL,OAAQ,EAAM,OAAO,EACrB,YAAa,EAAM,YAAY,EAC/B,KAAM,EAAM,IACd,GAEF,CAAC,IACC,EAAgB,4BAA4B,IAAY,EAAU,OAAQ,CACxE,MAAO,aAAiB,MAAQ,EAAQ,MAC1C,CAAC,CACL",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "296D87B6E16F668564756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Ub as K,Wb as n}from"./chunk-3m9whg4q.js";var d=K((e4,u0)=>{var s1=Object.prototype.toString;u0.exports=function(J){if(J===void 0)return"undefined";if(J===null)return"null";var Z=typeof J;if(Z==="boolean")return"boolean";if(Z==="string")return"string";if(Z==="number")return"number";if(Z==="symbol")return"symbol";if(Z==="function")return Jq(J)?"generatorfunction":"function";if(a1(J))return"array";if(Vq(J))return"buffer";if($q(J))return"arguments";if(t1(J))return"date";if(e1(J))return"error";if(qq(J))return"regexp";switch(v0(J)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(Zq(J))return"generator";switch(Z=s1.call(J),Z){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return Z.slice(8,-1).toLowerCase().replace(/\s/g,"")};function v0(q){return typeof q.constructor==="function"?q.constructor.name:null}function a1(q){if(Array.isArray)return Array.isArray(q);return q instanceof Array}function e1(q){return q instanceof Error||typeof q.message==="string"&&q.constructor&&typeof q.constructor.stackTraceLimit==="number"}function t1(q){if(q instanceof Date)return!0;return typeof q.toDateString==="function"&&typeof q.getDate==="function"&&typeof q.setDate==="function"}function qq(q){if(q instanceof RegExp)return!0;return typeof q.flags==="string"&&typeof q.ignoreCase==="boolean"&&typeof q.multiline==="boolean"&&typeof q.global==="boolean"}function Jq(q,J){return v0(q)==="GeneratorFunction"}function Zq(q){return typeof q.throw==="function"&&typeof q.return==="function"&&typeof q.next==="function"}function $q(q){try{if(typeof q.length==="number"&&typeof q.callee==="function")return!0}catch(J){if(J.message.indexOf("callee")!==-1)return!0}return!1}function Vq(q){if(q.constructor&&typeof q.constructor.isBuffer==="function")return q.constructor.isBuffer(q);return!1}});var g0=K((t4,b0)=>{/*!
|
|
2
2
|
* is-extendable <https://github.com/jonschlinkert/is-extendable>
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) 2015, Jon Schlinkert.
|
|
@@ -49,6 +49,6 @@ return `+str.trim()+`;
|
|
|
49
49
|
`:q}});var _1=K((u5,h1)=>{var h4=t();h1.exports=function(q,J){let Z=h4(J);if(q.data==null)q.data={};if(typeof Z.excerpt==="function")return Z.excerpt(q,Z);let V=q.data.excerpt_separator||Z.excerpt_separator;if(V==null&&(Z.excerpt===!1||Z.excerpt==null))return q;let $=typeof Z.excerpt==="string"?Z.excerpt:V||Z.delimiters[0],Y=q.content.indexOf($);if(Y!==-1)q.excerpt=q.content.slice(0,Y);return q}});var c1=K((b5,p1)=>{var r1=d(),_4=y0(),c=M0();p1.exports=function(q){if(r1(q)!=="object")q={content:q};if(r1(q.data)!=="object")q.data={};if(q.contents&&q.content==null)q.content=q.contents;return c.define(q,"orig",c.toBuffer(q.content)),c.define(q,"language",q.language||""),c.define(q,"matter",q.matter||""),c.define(q,"stringify",function(J,Z){if(Z&&Z.language)q.language=Z.language;return _4(q,J,Z)}),q.content=c.toString(q.content),q.isEmpty=!1,q.excerpt="",q}});var l1=K((g5,d1)=>{var r4=C0(),p4=t();d1.exports=function(q,J,Z){let V=p4(Z),$=r4(q,V);if(typeof $.parse!=="function")throw TypeError('expected "'+q+'.parse" to be a function');return $.parse(J,V)}});var a4=K((m5,i1)=>{var c4=n("fs"),d4=p0(),I0=t(),l4=y0(),n1=_1(),n4=x0(),o4=c1(),i4=l1(),o1=M0();function R(q,J){if(q==="")return{data:{},content:q,excerpt:"",orig:q};let Z=o4(q),V=R.cache[Z.content];if(!J){if(V)return Z=Object.assign({},V),Z.orig=V.orig,Z;R.cache[Z.content]=Z}return s4(Z,J)}function s4(q,J){let Z=I0(J),V=Z.delimiters[0],$=`
|
|
50
50
|
`+Z.delimiters[1],Y=q.content;if(Z.language)q.language=Z.language;let z=V.length;if(!o1.startsWith(Y,V,z))return n1(q,Z),q;if(Y.charAt(z)===V.slice(-1))return q;Y=Y.slice(z);let X=Y.length,G=R.language(Y,Z);if(G.name)q.language=G.name,Y=Y.slice(G.raw.length);let Q=Y.indexOf($);if(Q===-1)Q=X;if(q.matter=Y.slice(0,Q),q.matter.replace(/^\s*#[^\n]+/gm,"").trim()==="")q.isEmpty=!0,q.empty=q.content,q.data={};else q.data=i4(q.language,q.matter,Z);if(Q===X)q.content="";else{if(q.content=Y.slice(Q+$.length),q.content[0]==="\r")q.content=q.content.slice(1);if(q.content[0]===`
|
|
51
51
|
`)q.content=q.content.slice(1)}if(n1(q,Z),Z.sections===!0||typeof Z.section==="function")d4(q,Z.section);return q}R.engines=n4;R.stringify=function(q,J,Z){if(typeof q==="string")q=R(q,Z);return l4(q,J,Z)};R.read=function(q,J){let Z=c4.readFileSync(q,"utf8"),V=R(Z,J);return V.path=q,V};R.test=function(q,J){return o1.startsWith(q,I0(J).delimiters[0])};R.language=function(q,J){let V=I0(J).delimiters[0];if(R.test(q))q=q.slice(V.length);let $=q.slice(0,q.search(/\r?\n/));return{raw:$,name:$?$.trim():""}};R.cache={};R.clearCache=function(){R.cache={}};i1.exports=R});
|
|
52
|
-
export{a4 as
|
|
52
|
+
export{a4 as Q};
|
|
53
53
|
|
|
54
|
-
//# debugId=
|
|
54
|
+
//# debugId=8359AA9ACA39D5E164756E2164756E21
|
|
@@ -48,6 +48,6 @@
|
|
|
48
48
|
"'use strict';\n\nconst fs = require('fs');\nconst sections = require('section-matter');\nconst defaults = require('./lib/defaults');\nconst stringify = require('./lib/stringify');\nconst excerpt = require('./lib/excerpt');\nconst engines = require('./lib/engines');\nconst toFile = require('./lib/to-file');\nconst parse = require('./lib/parse');\nconst utils = require('./lib/utils');\n\n/**\n * Takes a string or object with `content` property, extracts\n * and parses front-matter from the string, then returns an object\n * with `data`, `content` and other [useful properties](#returned-object).\n *\n * ```js\n * const matter = require('gray-matter');\n * console.log(matter('---\\ntitle: Home\\n---\\nOther stuff'));\n * //=> { data: { title: 'Home'}, content: 'Other stuff' }\n * ```\n * @param {Object|String} `input` String, or object with `content` string\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction matter(input, options) {\n if (input === '') {\n return { data: {}, content: input, excerpt: '', orig: input };\n }\n\n let file = toFile(input);\n const cached = matter.cache[file.content];\n\n if (!options) {\n if (cached) {\n file = Object.assign({}, cached);\n file.orig = cached.orig;\n return file;\n }\n\n // only cache if there are no options passed. if we cache when options\n // are passed, we would need to also cache options values, which would\n // negate any performance benefits of caching\n matter.cache[file.content] = file;\n }\n\n return parseMatter(file, options);\n}\n\n/**\n * Parse front matter\n */\n\nfunction parseMatter(file, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n const close = '\\n' + opts.delimiters[1];\n let str = file.content;\n\n if (opts.language) {\n file.language = opts.language;\n }\n\n // get the length of the opening delimiter\n const openLen = open.length;\n if (!utils.startsWith(str, open, openLen)) {\n excerpt(file, opts);\n return file;\n }\n\n // if the next character after the opening delimiter is\n // a character from the delimiter, then it's not a front-\n // matter delimiter\n if (str.charAt(openLen) === open.slice(-1)) {\n return file;\n }\n\n // strip the opening delimiter\n str = str.slice(openLen);\n const len = str.length;\n\n // use the language defined after first delimiter, if it exists\n const language = matter.language(str, opts);\n if (language.name) {\n file.language = language.name;\n str = str.slice(language.raw.length);\n }\n\n // get the index of the closing delimiter\n let closeIndex = str.indexOf(close);\n if (closeIndex === -1) {\n closeIndex = len;\n }\n\n // get the raw front-matter block\n file.matter = str.slice(0, closeIndex);\n\n const block = file.matter.replace(/^\\s*#[^\\n]+/gm, '').trim();\n if (block === '') {\n file.isEmpty = true;\n file.empty = file.content;\n file.data = {};\n } else {\n\n // create file.data by parsing the raw file.matter block\n file.data = parse(file.language, file.matter, opts);\n }\n\n // update file.content\n if (closeIndex === len) {\n file.content = '';\n } else {\n file.content = str.slice(closeIndex + close.length);\n if (file.content[0] === '\\r') {\n file.content = file.content.slice(1);\n }\n if (file.content[0] === '\\n') {\n file.content = file.content.slice(1);\n }\n }\n\n excerpt(file, opts);\n\n if (opts.sections === true || typeof opts.section === 'function') {\n sections(file, opts.section);\n }\n return file;\n}\n\n/**\n * Expose engines\n */\n\nmatter.engines = engines;\n\n/**\n * Stringify an object to YAML or the specified language, and\n * append it to the given string. By default, only YAML and JSON\n * can be stringified. See the [engines](#engines) section to learn\n * how to stringify other languages.\n *\n * ```js\n * console.log(matter.stringify('foo bar baz', {title: 'Home'}));\n * // results in:\n * // ---\n * // title: Home\n * // ---\n * // foo bar baz\n * ```\n * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string.\n * @param {Object} `data` Front matter to stringify.\n * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml].\n * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string.\n * @api public\n */\n\nmatter.stringify = function(file, data, options) {\n if (typeof file === 'string') file = matter(file, options);\n return stringify(file, data, options);\n};\n\n/**\n * Synchronously read a file from the file system and parse\n * front matter. Returns the same object as the [main function](#matter).\n *\n * ```js\n * const file = matter.read('./content/blog-post.md');\n * ```\n * @param {String} `filepath` file path of the file to read.\n * @param {Object} `options` [Options](#options) to pass to gray-matter.\n * @return {Object} Returns [an object](#returned-object) with `data` and `content`\n * @api public\n */\n\nmatter.read = function(filepath, options) {\n const str = fs.readFileSync(filepath, 'utf8');\n const file = matter(str, options);\n file.path = filepath;\n return file;\n};\n\n/**\n * Returns true if the given `string` has front matter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Boolean} True if front matter exists.\n * @api public\n */\n\nmatter.test = function(str, options) {\n return utils.startsWith(str, defaults(options).delimiters[0]);\n};\n\n/**\n * Detect the language to use, if one is defined after the\n * first front-matter delimiter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed\n */\n\nmatter.language = function(str, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n\n if (matter.test(str)) {\n str = str.slice(open.length);\n }\n\n const language = str.slice(0, str.search(/\\r?\\n/));\n return {\n raw: language,\n name: language ? language.trim() : ''\n };\n};\n\n/**\n * Expose `matter`\n */\n\nmatter.cache = {};\nmatter.clearCache = function() {\n matter.cache = {};\n};\nmodule.exports = matter;\n"
|
|
49
49
|
],
|
|
50
50
|
"mappings": "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",
|
|
51
|
-
"debugId": "
|
|
51
|
+
"debugId": "8359AA9ACA39D5E164756E2164756E21",
|
|
52
52
|
"names": []
|
|
53
53
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-
|
|
2
|
-
export{p as
|
|
1
|
+
import"./chunk-3m9whg4q.js";import{AutoTokenizer as B}from"@huggingface/transformers";var Q=new Map,V=new Set,W=new Set,G=3,U={"gpt-4":"Xenova/gpt-4","gpt-4-turbo":"Xenova/gpt-4","gpt-4o":"Xenova/gpt-4","gpt-3.5-turbo":"Xenova/gpt-3.5-turbo","gpt-3.5":"Xenova/gpt-3.5-turbo","claude-3-opus":"Xenova/claude-tokenizer","claude-3-sonnet":"Xenova/claude-tokenizer","claude-3-haiku":"Xenova/claude-tokenizer","claude-3.5-sonnet":"Xenova/claude-tokenizer","claude-3.5-haiku":"Xenova/claude-tokenizer",starcoder:"bigcode/starcoder",starcoder2:"bigcode/starcoder2-3b",codellama:"codellama/CodeLlama-7b-hf",gemini:"Xenova/gpt-4",default:"Xenova/gpt-4"};function H(j){if(!j)return U.default;if(U[j])return U[j];let q=j.toLowerCase();for(let[J,P]of Object.entries(U))if(q.includes(J))return P;return U.default}function Y(j){if(!j)return 0;let q=j.split(/\s+/).filter(Boolean).length,J=j.length,P=Math.ceil(J/3.5),v=Math.ceil(q*1.3);return Math.round((P+v)/2)}async function S(j){let q=H(j);if(Q.has(q))return Q.get(q);if(W.has(q))return null;while(V.has(q))await new Promise((J)=>setTimeout(J,100));if(Q.has(q))return Q.get(q);if(W.has(q))return null;try{V.add(q);let J=await B.from_pretrained(q,{cache_dir:"./models/.cache",local_files_only:!1});if(Q.size>=G){let P=Q.keys().next().value;if(P)Q.delete(P)}return Q.set(q,J),V.delete(q),J}catch(J){return console.warn("[TokenCounter] BPE tokenizer initialization failed, using fallback estimation:",J),W.add(q),V.delete(q),null}}async function $(j,q){if(!j)return 0;let J=await S(q);if(!J)return Y(j);try{let P=await J(j);if(P.input_ids&&P.input_ids.size)return P.input_ids.size;if(Array.isArray(P.input_ids))return P.input_ids.length;if(P.input_ids.data)return P.input_ids.data.length;return Y(j)}catch(P){return console.warn("[TokenCounter] Token counting failed, using fallback:",P),Y(j)}}function X(j){return Y(j)}function p(j){if(j<1000)return j.toString();if(j<1e6)return`${(j/1000).toFixed(1)}K`;return`${(j/1e6).toFixed(1)}M`}async function y(j,q){return $(j,q)}async function A(j,q){let J=await $(j,q);return`${p(J)} Tokens`}function b(j){let q=X(j);return`${p(q)} Tokens`}async function f(j,q){return Promise.all(j.map((J)=>$(J,q)))}function D(j){return j.map(X)}async function L(j){let q=H(j),J=await S(j);return{modelName:j||"default",tokenizerName:q,loaded:J!==null,failed:W.has(q)}}function R(){return Object.keys(U).filter((j)=>j!=="default")}export{L as getTokenizerInfo,R as getSupportedModels,p as formatTokenCount,D as estimateTokensBatch,X as estimateTokens,y as countTokensForModel,f as countTokensBatch,$ as countTokens,b as countAndFormatSync,A as countAndFormat};
|
|
2
|
+
export{p as j,L as k};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=EA8532F97BD1FE4A64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/token-counter.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Token Counter Utility\n * BPE-based token counting using Hugging Face AutoTokenizer\n *\n * Primary method: BPE tokenizer (auto-selected by Hugging Face)\n * Fallback: Fast estimation when tokenizer unavailable\n */\n\nimport { AutoTokenizer } from '@huggingface/transformers';\n\n// Cache for multiple tokenizers (keyed by tokenizer name)\n// Limited to 3 tokenizers to prevent memory leak (each ~100-500MB)\nconst tokenizerCache = new Map<string, any>();\nconst tokenizerInitializing = new Set<string>();\nconst tokenizerFailed = new Set<string>();\nconst MAX_CACHED_TOKENIZERS = 3;\n\n/**\n * Map provider model names to tokenizer names\n * AutoTokenizer will automatically find the right tokenizer for each model\n */\nconst MODEL_TO_TOKENIZER: Record<string, string> = {\n // OpenAI models\n 'gpt-4': 'Xenova/gpt-4',\n 'gpt-4-turbo': 'Xenova/gpt-4',\n 'gpt-4o': 'Xenova/gpt-4',\n 'gpt-3.5-turbo': 'Xenova/gpt-3.5-turbo',\n 'gpt-3.5': 'Xenova/gpt-3.5-turbo',\n\n // Anthropic Claude models\n 'claude-3-opus': 'Xenova/claude-tokenizer',\n 'claude-3-sonnet': 'Xenova/claude-tokenizer',\n 'claude-3-haiku': 'Xenova/claude-tokenizer',\n 'claude-3.5-sonnet': 'Xenova/claude-tokenizer',\n 'claude-3.5-haiku': 'Xenova/claude-tokenizer',\n\n // Code models\n 'starcoder': 'bigcode/starcoder',\n 'starcoder2': 'bigcode/starcoder2-3b',\n 'codellama': 'codellama/CodeLlama-7b-hf',\n\n // Google models\n 'gemini': 'Xenova/gpt-4', // Fallback to GPT-4 (no official Gemini tokenizer)\n\n // Fallback\n 'default': 'Xenova/gpt-4',\n};\n\n/**\n * Get tokenizer name for a model\n * AutoTokenizer will find the right tokenizer automatically\n */\nfunction getTokenizerForModel(modelName?: string): string {\n if (!modelName) return MODEL_TO_TOKENIZER['default']!;\n\n // Direct match\n if (MODEL_TO_TOKENIZER[modelName]) {\n return MODEL_TO_TOKENIZER[modelName]!;\n }\n\n // Fuzzy match (e.g., \"gpt-4-turbo-preview\" → \"gpt-4\")\n const modelLower = modelName.toLowerCase();\n for (const [key, tokenizer] of Object.entries(MODEL_TO_TOKENIZER)) {\n if (modelLower.includes(key)) {\n return tokenizer;\n }\n }\n\n // Default fallback\n return MODEL_TO_TOKENIZER['default']!;\n}\n\n/**\n * Fast fallback estimation (only when BPE tokenizer unavailable)\n * Based on ~3.5 chars per token for code\n */\nfunction estimateFallback(text: string): number {\n if (!text) return 0;\n\n const words = text.split(/\\s+/).filter(Boolean).length;\n const chars = text.length;\n\n const charBasedEstimate = Math.ceil(chars / 3.5);\n const wordBasedEstimate = Math.ceil(words * 1.3);\n\n return Math.round((charBasedEstimate + wordBasedEstimate) / 2);\n}\n\n/**\n * Initialize BPE tokenizer (lazy, cached per tokenizer name)\n * Uses Hugging Face AutoTokenizer to automatically select best tokenizer\n */\nasync function ensureTokenizer(modelName?: string): Promise<any | null> {\n // Get tokenizer name for this model\n const tokenizerName = getTokenizerForModel(modelName);\n\n // Check if already cached\n if (tokenizerCache.has(tokenizerName)) {\n return tokenizerCache.get(tokenizerName);\n }\n\n // Check if previous initialization failed\n if (tokenizerFailed.has(tokenizerName)) {\n return null;\n }\n\n // Wait if initialization in progress for this tokenizer\n while (tokenizerInitializing.has(tokenizerName)) {\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n\n // Check again after waiting\n if (tokenizerCache.has(tokenizerName)) {\n return tokenizerCache.get(tokenizerName);\n }\n if (tokenizerFailed.has(tokenizerName)) {\n return null;\n }\n\n // Initialize with Hugging Face AutoTokenizer\n try {\n tokenizerInitializing.add(tokenizerName);\n\n // Let Hugging Face auto-select and load the best tokenizer\n const tokenizer = await AutoTokenizer.from_pretrained(tokenizerName, {\n // Cache models locally for faster subsequent loads\n cache_dir: './models/.cache',\n // Use local files if available, otherwise download\n local_files_only: false,\n });\n\n // Limit cache size - evict oldest tokenizer if limit reached\n if (tokenizerCache.size >= MAX_CACHED_TOKENIZERS) {\n const oldestKey = tokenizerCache.keys().next().value;\n if (oldestKey) {\n tokenizerCache.delete(oldestKey);\n }\n }\n\n tokenizerCache.set(tokenizerName, tokenizer);\n tokenizerInitializing.delete(tokenizerName);\n return tokenizer;\n } catch (error) {\n console.warn('[TokenCounter] BPE tokenizer initialization failed, using fallback estimation:', error);\n tokenizerFailed.add(tokenizerName);\n tokenizerInitializing.delete(tokenizerName);\n return null;\n }\n}\n\n/**\n * Count tokens using BPE tokenizer (Hugging Face AutoTokenizer)\n * Falls back to estimation if tokenizer unavailable\n *\n * @param text Text to count tokens for\n * @param modelName Optional model name to use specific tokenizer\n * @returns Token count\n */\nexport async function countTokens(text: string, modelName?: string): Promise<number> {\n if (!text) return 0;\n\n const tokenizer = await ensureTokenizer(modelName);\n\n if (!tokenizer) {\n // Tokenizer unavailable, use fallback\n return estimateFallback(text);\n }\n\n try {\n // Use Hugging Face tokenizer API\n const encoded = await tokenizer(text);\n\n // Get token count from encoded result\n if (encoded.input_ids && encoded.input_ids.size) {\n return encoded.input_ids.size;\n }\n\n // Fallback: count array length\n if (Array.isArray(encoded.input_ids)) {\n return encoded.input_ids.length;\n }\n\n // Fallback: if it's a tensor, get its length\n if (encoded.input_ids.data) {\n return encoded.input_ids.data.length;\n }\n\n // Last resort fallback\n return estimateFallback(text);\n } catch (error) {\n console.warn('[TokenCounter] Token counting failed, using fallback:', error);\n return estimateFallback(text);\n }\n}\n\n/**\n * Synchronous token estimation (for cases where async is not possible)\n * Uses fallback estimation only\n */\nexport function estimateTokens(text: string): number {\n return estimateFallback(text);\n}\n\n/**\n * Format token count for display\n * Examples: 150 -> \"150\", 1500 -> \"1.5K\", 1500000 -> \"1.5M\"\n */\nexport function formatTokenCount(count: number): string {\n if (count < 1000) {\n return count.toString();\n }\n\n if (count < 1000000) {\n const k = count / 1000;\n return `${k.toFixed(1)}K`;\n }\n\n const m = count / 1000000;\n return `${m.toFixed(1)}M`;\n}\n\n/**\n * Count tokens for specific model\n * Uses the correct tokenizer for that model\n */\nexport async function countTokensForModel(text: string, modelName: string): Promise<number> {\n return countTokens(text, modelName);\n}\n\n/**\n * Count tokens with display formatting\n * Uses BPE tokenizer (async)\n */\nexport async function countAndFormat(text: string, modelName?: string): Promise<string> {\n const count = await countTokens(text, modelName);\n return `${formatTokenCount(count)} Tokens`;\n}\n\n/**\n * Count tokens with display formatting (sync, estimation only)\n * Use this only when async is not possible\n */\nexport function countAndFormatSync(text: string): string {\n const count = estimateTokens(text);\n return `${formatTokenCount(count)} Tokens`;\n}\n\n/**\n * Batch count tokens for multiple texts\n * Uses BPE tokenizer\n */\nexport async function countTokensBatch(texts: string[], modelName?: string): Promise<number[]> {\n return Promise.all(texts.map(text => countTokens(text, modelName)));\n}\n\n/**\n * Batch count tokens (sync estimation fallback)\n */\nexport function estimateTokensBatch(texts: string[]): number[] {\n return texts.map(estimateTokens);\n}\n\n/**\n * Get tokenizer info (for debugging)\n */\nexport async function getTokenizerInfo(modelName?: string): Promise<{\n modelName: string;\n tokenizerName: string;\n loaded: boolean;\n failed: boolean;\n} | null> {\n const tokenizerName = getTokenizerForModel(modelName);\n const tokenizer = await ensureTokenizer(modelName);\n\n return {\n modelName: modelName || 'default',\n tokenizerName,\n loaded: tokenizer !== null,\n failed: tokenizerFailed.has(tokenizerName),\n };\n}\n\n/**\n * Get supported models\n */\nexport function getSupportedModels(): string[] {\n return Object.keys(MODEL_TO_TOKENIZER).filter(k => k !== 'default');\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "4BAQA,wBAAS,kCAIT,IAAM,EAAiB,IAAI,IACrB,EAAwB,IAAI,IAC5B,EAAkB,IAAI,IACtB,EAAwB,EAMxB,EAA6C,CAEjD,QAAS,eACT,cAAe,eACf,SAAU,eACV,gBAAiB,uBACjB,UAAW,uBAGX,gBAAiB,0BACjB,kBAAmB,0BACnB,iBAAkB,0BAClB,oBAAqB,0BACrB,mBAAoB,0BAGpB,UAAa,oBACb,WAAc,wBACd,UAAa,4BAGb,OAAU,eAGV,QAAW,cACb,EAMA,SAAS,CAAoB,CAAC,EAA4B,CACxD,GAAI,CAAC,EAAW,OAAO,EAAmB,QAG1C,GAAI,EAAmB,GACrB,OAAO,EAAmB,GAI5B,IAAM,EAAa,EAAU,YAAY,EACzC,QAAY,EAAK,KAAc,OAAO,QAAQ,CAAkB,EAC9D,GAAI,EAAW,SAAS,CAAG,EACzB,OAAO,EAKX,OAAO,EAAmB,QAO5B,SAAS,CAAgB,CAAC,EAAsB,CAC9C,GAAI,CAAC,EAAM,MAAO,GAElB,IAAM,EAAQ,EAAK,MAAM,KAAK,EAAE,OAAO,OAAO,EAAE,OAC1C,EAAQ,EAAK,OAEb,EAAoB,KAAK,KAAK,EAAQ,GAAG,EACzC,EAAoB,KAAK,KAAK,EAAQ,GAAG,EAE/C,OAAO,KAAK,OAAO,EAAoB,GAAqB,CAAC,EAO/D,eAAe,CAAe,CAAC,EAAyC,CAEtE,IAAM,EAAgB,EAAqB,CAAS,EAGpD,GAAI,EAAe,IAAI,CAAa,EAClC,OAAO,EAAe,IAAI,CAAa,EAIzC,GAAI,EAAgB,IAAI,CAAa,EACnC,OAAO,KAIT,MAAO,EAAsB,IAAI,CAAa,EAC5C,MAAM,IAAI,QAAQ,KAAW,WAAW,EAAS,GAAG,CAAC,EAIvD,GAAI,EAAe,IAAI,CAAa,EAClC,OAAO,EAAe,IAAI,CAAa,EAEzC,GAAI,EAAgB,IAAI,CAAa,EACnC,OAAO,KAIT,GAAI,CACF,EAAsB,IAAI,CAAa,EAGvC,IAAM,EAAY,MAAM,EAAc,gBAAgB,EAAe,CAEnE,UAAW,kBAEX,iBAAkB,EACpB,CAAC,EAGD,GAAI,EAAe,MAAQ,EAAuB,CAChD,IAAM,EAAY,EAAe,KAAK,EAAE,KAAK,EAAE,MAC/C,GAAI,EACF,EAAe,OAAO,CAAS,EAMnC,OAFA,EAAe,IAAI,EAAe,CAAS,EAC3C,EAAsB,OAAO,CAAa,EACnC,EACP,MAAO,EAAO,CAId,OAHA,QAAQ,KAAK,iFAAkF,CAAK,EACpG,EAAgB,IAAI,CAAa,EACjC,EAAsB,OAAO,CAAa,EACnC,MAYX,eAAsB,CAAW,CAAC,EAAc,EAAqC,CACnF,GAAI,CAAC,EAAM,MAAO,GAElB,IAAM,EAAY,MAAM,EAAgB,CAAS,EAEjD,GAAI,CAAC,EAEH,OAAO,EAAiB,CAAI,EAG9B,GAAI,CAEF,IAAM,EAAU,MAAM,EAAU,CAAI,EAGpC,GAAI,EAAQ,WAAa,EAAQ,UAAU,KACzC,OAAO,EAAQ,UAAU,KAI3B,GAAI,MAAM,QAAQ,EAAQ,SAAS,EACjC,OAAO,EAAQ,UAAU,OAI3B,GAAI,EAAQ,UAAU,KACpB,OAAO,EAAQ,UAAU,KAAK,OAIhC,OAAO,EAAiB,CAAI,EAC5B,MAAO,EAAO,CAEd,OADA,QAAQ,KAAK,wDAAyD,CAAK,EACpE,EAAiB,CAAI,GAQzB,SAAS,CAAc,CAAC,EAAsB,CACnD,OAAO,EAAiB,CAAI,EAOvB,SAAS,CAAgB,CAAC,EAAuB,CACtD,GAAI,EAAQ,KACV,OAAO,EAAM,SAAS,EAGxB,GAAI,EAAQ,IAEV,MAAO,IADG,EAAQ,MACN,QAAQ,CAAC,KAIvB,MAAO,IADG,EAAQ,KACN,QAAQ,CAAC,KAOvB,eAAsB,CAAmB,CAAC,EAAc,EAAoC,CAC1F,OAAO,EAAY,EAAM,CAAS,EAOpC,eAAsB,CAAc,CAAC,EAAc,EAAqC,CACtF,IAAM,EAAQ,MAAM,EAAY,EAAM,CAAS,EAC/C,MAAO,GAAG,EAAiB,CAAK,WAO3B,SAAS,CAAkB,CAAC,EAAsB,CACvD,IAAM,EAAQ,EAAe,CAAI,EACjC,MAAO,GAAG,EAAiB,CAAK,WAOlC,eAAsB,CAAgB,CAAC,EAAiB,EAAuC,CAC7F,OAAO,QAAQ,IAAI,EAAM,IAAI,KAAQ,EAAY,EAAM,CAAS,CAAC,CAAC,EAM7D,SAAS,CAAmB,CAAC,EAA2B,CAC7D,OAAO,EAAM,IAAI,CAAc,EAMjC,eAAsB,CAAgB,CAAC,EAK7B,CACR,IAAM,EAAgB,EAAqB,CAAS,EAC9C,EAAY,MAAM,EAAgB,CAAS,EAEjD,MAAO,CACL,UAAW,GAAa,UACxB,gBACA,OAAQ,IAAc,KACtB,OAAQ,EAAgB,IAAI,CAAa,CAC3C,EAMK,SAAS,CAAkB,EAAa,CAC7C,OAAO,OAAO,KAAK,CAAkB,EAAE,OAAO,KAAK,IAAM,SAAS",
|
|
8
|
+
"debugId": "EA8532F97BD1FE4A64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{Q as C}from"./chunk-q4nh3vst.js";import{Tb as z}from"./chunk-3m9whg4q.js";var Z=z(C(),1);import{readFile as G,readdir as L,access as T}from"node:fs/promises";import{join as X,parse as U,relative as B,dirname as D}from"node:path";import{homedir as v}from"node:os";import{fileURLToPath as M}from"node:url";async function y(k,q=!1,x){try{let H=await G(k,"utf-8"),{data:O,content:K}=Z.default(H);if(!O.name||typeof O.name!=="string")return console.error(`Rule file ${k} missing required 'name' field`),null;let Q={name:O.name,description:O.description||"",enabled:O.enabled!==void 0?Boolean(O.enabled):!0};return{id:x||U(k).name,metadata:Q,content:K.trim(),isBuiltin:q,filePath:k}}catch(H){return console.error(`Failed to load rule from ${k}:`,H),null}}async function Y(k,q=!1){try{let H=(await L(k,{recursive:!0,withFileTypes:!0})).filter((K)=>K.isFile()&&K.name.endsWith(".md")).map((K)=>{let Q=X(K.parentPath||K.path,K.name),W=B(k,Q).replace(/\.md$/,"");return{fullPath:Q,ruleId:W}});return(await Promise.all(H.map(({fullPath:K,ruleId:Q})=>y(K,q,Q)))).filter((K)=>K!==null)}catch(x){return[]}}async function F(){let k=M(import.meta.url),q=D(k),x=X(q,"..","assets","rules"),H=X(q,"..","..","assets","rules");try{return await T(x),x}catch{return H}}function w(k){let q=X(v(),".sylphx-flow","rules"),x=X(k,".sylphx-flow","rules");return[q,x]}async function _(k){let q=await F(),[x,H]=w(k),[O,K,Q]=await Promise.all([Y(q,!0),Y(x,!1),Y(H,!1)]),W=new Map;for(let V of O)W.set(V.id,V);for(let V of K)W.set(V.id,V);for(let V of Q)W.set(V.id,V);return Array.from(W.values())}var J=null,N=null;function g(k){N=k}async function j(k){let q=await _(k),x=new Map;for(let H of q)x.set(H.id,H);if(J={rules:x,cwd:k},N){let H=N();if(H.getState){if((H.getState().enabledRuleIds||[]).length===0){let K=q.filter((Q)=>Q.metadata.enabled!==!1).map((Q)=>Q.id);if(K.length>0)H.getState().setEnabledRuleIds(K)}}}}function f(){if(!J)return[];return Array.from(J.rules.values())}function P(k){if(!J)return null;return J.rules.get(k)||null}function $(){if(N){let k=N();if(k.getState)return k.getState().enabledRuleIds||[]}return[]}function E(){if(!J)return[];return $().map((q)=>J.rules.get(q)).filter((q)=>q!==null)}function c(k){if(!J||!J.rules.has(k))return!1;if(N){let q=N();if(q.getState){let x=q.getState().enabledRuleIds||[];if(x.includes(k))q.getState().setEnabledRuleIds(x.filter((H)=>H!==k));else q.getState().setEnabledRuleIds([...x,k]);return!0}}return!1}function h(k){if(!J||!J.rules.has(k))return!1;if(N){let q=N();if(q.getState){let x=q.getState().enabledRuleIds||[];if(!x.includes(k))q.getState().setEnabledRuleIds([...x,k]);return!0}}return!1}function p(k){if(!J||!J.rules.has(k))return!1;if(N){let q=N();if(q.getState){let x=q.getState().enabledRuleIds||[];return q.getState().setEnabledRuleIds(x.filter((H)=>H!==k)),!0}}return!1}async function n(){if(!J)return;let k=J.cwd,q=$();if(await j(k),J&&N){let x=N();if(x.getState){let H=q.filter((O)=>J.rules.has(O));x.getState().setEnabledRuleIds(H)}}}function i(k){if(!J)return!1;let q=k.filter((x)=>J.rules.has(x));if(N){let x=N();if(x.getState)return x.getState().setEnabledRuleIds(q),!0}return!1}function o(){let k=E();if(k.length===0)return"";return k.map((q)=>q.content).join(`
|
|
2
|
+
|
|
3
|
+
`)}export{c as toggleRule,g as setRuleAppStoreGetter,i as setEnabledRules,n as reloadRules,j as initializeRuleManager,P as getRuleById,o as getEnabledRulesContent,E as getEnabledRules,$ as getEnabledRuleIds,f as getAllRules,h as enableRule,p as disableRule};
|
|
4
|
+
export{g as F,j as G,f as H,c as I,o as J};
|
|
5
|
+
|
|
6
|
+
//# debugId=E8841C8E4E0A1CC464756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/rule-loader.ts", "../src/core/rule-manager.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Rule Loader\n * Loads rule definitions from markdown files with front matter\n */\n\nimport { readFile, readdir, access } from 'node:fs/promises';\nimport { join, parse, relative, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport { fileURLToPath } from 'node:url';\nimport matter from 'gray-matter';\nimport type { Rule, RuleMetadata } from '../types/rule.types.js';\n\n/**\n * Load a single rule from a markdown file\n */\nexport async function loadRuleFromFile(\n filePath: string,\n isBuiltin: boolean = false,\n ruleId?: string\n): Promise<Rule | null> {\n try {\n const fileContent = await readFile(filePath, 'utf-8');\n const { data, content } = matter(fileContent);\n\n // Validate front matter\n if (!data.name || typeof data.name !== 'string') {\n console.error(`Rule file ${filePath} missing required 'name' field`);\n return null;\n }\n\n const metadata: RuleMetadata = {\n name: data.name,\n description: data.description || '',\n enabled: data.enabled !== undefined ? Boolean(data.enabled) : true,\n };\n\n // Get rule ID from parameter or filename\n const id = ruleId || parse(filePath).name;\n\n return {\n id,\n metadata,\n content: content.trim(),\n isBuiltin,\n filePath,\n };\n } catch (error) {\n console.error(`Failed to load rule from ${filePath}:`, error);\n return null;\n }\n}\n\n/**\n * Load all rules from a directory (recursively)\n */\nexport async function loadRulesFromDirectory(dirPath: string, isBuiltin: boolean = false): Promise<Rule[]> {\n try {\n // Read directory recursively to support subdirectories\n const files = await readdir(dirPath, { recursive: true, withFileTypes: true });\n\n // Filter for .md files and calculate rule IDs from relative paths\n const ruleFiles = files\n .filter((f) => f.isFile() && f.name.endsWith('.md'))\n .map((f) => {\n const fullPath = join(f.parentPath || f.path, f.name);\n // Calculate relative path from dirPath and remove .md extension\n const relativePath = relative(dirPath, fullPath).replace(/\\.md$/, '');\n return { fullPath, ruleId: relativePath };\n });\n\n const rules = await Promise.all(\n ruleFiles.map(({ fullPath, ruleId }) => loadRuleFromFile(fullPath, isBuiltin, ruleId))\n );\n\n return rules.filter((rule): rule is Rule => rule !== null);\n } catch (error) {\n // Directory doesn't exist or can't be read\n return [];\n }\n}\n\n/**\n * Get system rules path (bundled with the app)\n */\nexport async function getSystemRulesPath(): Promise<string> {\n // Get the directory of the current module (cross-platform)\n const currentFile = fileURLToPath(import.meta.url);\n const currentDir = dirname(currentFile);\n\n // In production (dist), assets are at dist/assets/rules\n // In development (src), go up to project root: src/core -> project root\n const distPath = join(currentDir, '..', 'assets', 'rules');\n const devPath = join(currentDir, '..', '..', 'assets', 'rules');\n\n // Check which one exists (try dist first, then dev)\n try {\n await access(distPath);\n return distPath;\n } catch {\n return devPath;\n }\n}\n\n/**\n * Get all rule search paths\n */\nexport function getRuleSearchPaths(cwd: string): string[] {\n const globalPath = join(homedir(), '.sylphx-flow', 'rules');\n const projectPath = join(cwd, '.sylphx-flow', 'rules');\n\n return [globalPath, projectPath];\n}\n\n/**\n * Load all available rules from all sources\n */\nexport async function loadAllRules(cwd: string): Promise<Rule[]> {\n const systemPath = await getSystemRulesPath();\n const [globalPath, projectPath] = getRuleSearchPaths(cwd);\n\n const [systemRules, globalRules, projectRules] = await Promise.all([\n loadRulesFromDirectory(systemPath, true), // System rules are marked as builtin\n loadRulesFromDirectory(globalPath, false),\n loadRulesFromDirectory(projectPath, false),\n ]);\n\n // Priority: system < global < project\n // Use Map to deduplicate by ID (later entries override earlier ones)\n const ruleMap = new Map<string, Rule>();\n\n // Add system rules first (lowest priority)\n for (const rule of systemRules) {\n ruleMap.set(rule.id, rule);\n }\n\n // Add global rules (override system)\n for (const rule of globalRules) {\n ruleMap.set(rule.id, rule);\n }\n\n // Add project rules (override globals and system)\n for (const rule of projectRules) {\n ruleMap.set(rule.id, rule);\n }\n\n return Array.from(ruleMap.values());\n}\n",
|
|
6
|
+
"/**\n * Rule Manager\n * Manages rule state and operations\n */\n\nimport type { Rule } from '../types/rule.types.js';\nimport { loadAllRules } from './rule-loader.js';\n\n/**\n * Rule manager state\n */\ninterface RuleManagerState {\n rules: Map<string, Rule>;\n cwd: string;\n}\n\nlet state: RuleManagerState | null = null;\n\n/**\n * Get the app store (lazy import to avoid circular dependencies)\n */\nlet getAppStore: (() => any) | null = null;\n\n/**\n * Set the app store getter (called during initialization)\n */\nexport function setRuleAppStoreGetter(getter: () => any): void {\n getAppStore = getter;\n}\n\n/**\n * Initialize rule manager\n */\nexport async function initializeRuleManager(cwd: string): Promise<void> {\n const allRules = await loadAllRules(cwd);\n\n const ruleMap = new Map<string, Rule>();\n for (const rule of allRules) {\n ruleMap.set(rule.id, rule);\n }\n\n state = {\n rules: ruleMap,\n cwd,\n };\n\n // Initialize store with default enabled rules\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const currentEnabledRules = store.getState().enabledRuleIds || [];\n\n // If no rules are enabled yet, enable all rules that have enabled: true in metadata\n if (currentEnabledRules.length === 0) {\n const defaultEnabledRules = allRules\n .filter((rule) => rule.metadata.enabled !== false)\n .map((rule) => rule.id);\n\n if (defaultEnabledRules.length > 0) {\n store.getState().setEnabledRuleIds(defaultEnabledRules);\n }\n }\n }\n }\n}\n\n/**\n * Get all available rules\n */\nexport function getAllRules(): Rule[] {\n if (!state) {\n return [];\n }\n return Array.from(state.rules.values());\n}\n\n/**\n * Get rule by ID\n */\nexport function getRuleById(id: string): Rule | null {\n if (!state) {\n return null;\n }\n return state.rules.get(id) || null;\n}\n\n/**\n * Get enabled rule IDs from store\n */\nexport function getEnabledRuleIds(): string[] {\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n return store.getState().enabledRuleIds || [];\n }\n }\n return [];\n}\n\n/**\n * Get enabled rules\n */\nexport function getEnabledRules(): Rule[] {\n if (!state) {\n return [];\n }\n\n const enabledIds = getEnabledRuleIds();\n return enabledIds\n .map((id) => state!.rules.get(id))\n .filter((rule): rule is Rule => rule !== null);\n}\n\n/**\n * Toggle a rule on/off\n */\nexport function toggleRule(ruleId: string): boolean {\n if (!state || !state.rules.has(ruleId)) {\n return false;\n }\n\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const currentEnabled = store.getState().enabledRuleIds || [];\n\n if (currentEnabled.includes(ruleId)) {\n // Disable: remove from list\n store.getState().setEnabledRuleIds(currentEnabled.filter((id) => id !== ruleId));\n } else {\n // Enable: add to list\n store.getState().setEnabledRuleIds([...currentEnabled, ruleId]);\n }\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Enable a rule\n */\nexport function enableRule(ruleId: string): boolean {\n if (!state || !state.rules.has(ruleId)) {\n return false;\n }\n\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const currentEnabled = store.getState().enabledRuleIds || [];\n\n if (!currentEnabled.includes(ruleId)) {\n store.getState().setEnabledRuleIds([...currentEnabled, ruleId]);\n }\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Disable a rule\n */\nexport function disableRule(ruleId: string): boolean {\n if (!state || !state.rules.has(ruleId)) {\n return false;\n }\n\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const currentEnabled = store.getState().enabledRuleIds || [];\n store.getState().setEnabledRuleIds(currentEnabled.filter((id) => id !== ruleId));\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Reload rules from disk\n */\nexport async function reloadRules(): Promise<void> {\n if (!state) {\n return;\n }\n\n const cwd = state.cwd;\n const currentEnabled = getEnabledRuleIds();\n\n await initializeRuleManager(cwd);\n\n // Keep only enabled rules that still exist\n if (state && getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n const validEnabled = currentEnabled.filter((id) => state!.rules.has(id));\n store.getState().setEnabledRuleIds(validEnabled);\n }\n }\n}\n\n/**\n * Set enabled rules (replaces current enabled rules)\n */\nexport function setEnabledRules(ruleIds: string[]): boolean {\n if (!state) {\n return false;\n }\n\n // Validate all rule IDs exist\n const validRuleIds = ruleIds.filter((id) => state!.rules.has(id));\n\n if (getAppStore) {\n const store = getAppStore();\n if (store.getState) {\n store.getState().setEnabledRuleIds(validRuleIds);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Get combined content of all enabled rules\n */\nexport function getEnabledRulesContent(): string {\n const enabledRules = getEnabledRules();\n\n if (enabledRules.length === 0) {\n return '';\n }\n\n return enabledRules.map((rule) => rule.content).join('\\n\\n');\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "E8841C8E4E0A1CC464756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{X as
|
|
1
|
+
import{Ub as I}from"./chunk-3m9whg4q.js";var X=I((Y,H)=>{var{defineProperty:z,getOwnPropertyDescriptor:K,getOwnPropertyNames:L}=Object,Q=Object.prototype.hasOwnProperty,R=(j,b)=>{for(var v in b)z(j,v,{get:b[v],enumerable:!0})},U=(j,b,v,B)=>{if(b&&typeof b==="object"||typeof b==="function"){for(let q of L(b))if(!Q.call(j,q)&&q!==v)z(j,q,{get:()=>b[q],enumerable:!(B=K(b,q))||B.enumerable})}return j},W=(j)=>U(z({},"__esModule",{value:!0}),j),F={};R(F,{VercelOidcTokenError:()=>G});H.exports=W(F);class G extends Error{constructor(j,b){super(j);this.name="VercelOidcTokenError",this.cause=b}toString(){if(this.cause)return`${this.name}: ${this.message}: ${this.cause}`;return`${this.name}: ${this.message}`}}});
|
|
2
|
+
export{X as U};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=B7BCE56989FD943264756E2164756E21
|
|
@@ -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_error_exports = {};\n__export(token_error_exports, {\n VercelOidcTokenError: () => VercelOidcTokenError\n});\nmodule.exports = __toCommonJS(token_error_exports);\nclass VercelOidcTokenError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = \"VercelOidcTokenError\";\n this.cause = cause;\n }\n toString() {\n if (this.cause) {\n return `${this.name}: ${this.message}: ${this.cause}`;\n }\n return `${this.name}: ${this.message}`;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n VercelOidcTokenError\n});\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "yDACA,IAAuB,eAAnB,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,EAAsB,CAAC,EAC3B,EAAS,EAAqB,CAC5B,qBAAsB,IAAM,CAC9B,CAAC,EACD,EAAO,QAAU,EAAa,CAAmB,EACjD,MAAM,UAA6B,KAAM,CACvC,WAAW,CAAC,EAAS,EAAO,CAC1B,MAAM,CAAO,EACb,KAAK,KAAO,uBACZ,KAAK,MAAQ,EAEf,QAAQ,EAAG,CACT,GAAI,KAAK,MACP,MAAO,GAAG,KAAK,SAAS,KAAK,YAAY,KAAK,QAEhD,MAAO,GAAG,KAAK,SAAS,KAAK,UAEjC",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "B7BCE56989FD943264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{r as Z}from"./chunk-3qxj0zy3.js";import"./chunk-1e8xf3f6.js";import"./chunk-qpej66sh.js";import"./chunk-n8vzewr3.js";import"./chunk-q4nh3vst.js";import"./chunk-mw13a082.js";import"./chunk-3w6pd43t.js";import"./chunk-s9bsh0gp.js";import"./chunk-jk1ebfqn.js";import"./chunk-01gv4qey.js";import"./chunk-g4baca7p.js";import"./chunk-cv1nhr27.js";import"./chunk-jbd95k1f.js";import"./chunk-4vrj3f8r.js";import{Tb as A,Wb as E}from"./chunk-3m9whg4q.js";function $(z,H=50){if(!z||z.trim().length===0)return"New Chat";let D=X(z);return Y(D,H)}function X(z){return z.trim().replace(/\n+/g," ")}function Y(z,H=50){if(z.length<=H)return z;let D=z.substring(0,H),B=D.lastIndexOf(" "),J=Math.floor(H*0.6);if(B>J)return D.substring(0,B)+"...";return D+"..."}function q(z,H){let D=z||"New Chat",B=new Date(H),J=new Date;if(B.toDateString()===J.toDateString()){let U=B.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"});return`${D} (${U})`}let O=B.toLocaleDateString("en-US",{month:"short",day:"numeric"});return`${D} (${O})`}function w(z){let D=Date.now()-z,B=Math.floor(D/1000),J=Math.floor(B/60),K=Math.floor(J/60),O=Math.floor(K/24);if(B<30)return"just now";else if(B<60)return`${B}s ago`;else if(J<60)return`${J}m ago`;else if(K<24)return`${K}h ago`;else if(O<7)return`${O} ${O===1?"day":"days"} ago`;else{let U=new Date(z);return U.toLocaleDateString("en-US",{month:"short",day:"numeric",year:U.getFullYear()!==new Date().getFullYear()?"numeric":void 0})}}async function Q(z,H,D,B,J){if(!z||z.trim().length===0)return"New Chat";try{let{getProvider:K}=await import("./chunk-xs370t8p.js"),U=K(H).createClient(B,D),_=Z({model:U,messages:[{role:"user",content:`You need to generate a SHORT, DESCRIPTIVE title (maximum 50 characters) for a chat conversation.
|
|
2
|
+
|
|
3
|
+
User's first message: "${z}"
|
|
4
|
+
|
|
5
|
+
Requirements:
|
|
6
|
+
- Summarize the TOPIC or INTENT, don't just copy the message
|
|
7
|
+
- Be concise and descriptive
|
|
8
|
+
- Maximum 50 characters
|
|
9
|
+
- Output ONLY the title, nothing else
|
|
10
|
+
|
|
11
|
+
Examples:
|
|
12
|
+
- Message: "How do I implement authentication?" → Title: "Authentication Implementation"
|
|
13
|
+
- Message: "你好,请帮我修复这个 bug" → Title: "Bug 修复请求"
|
|
14
|
+
- Message: "Can you help me with React hooks?" → Title: "React Hooks Help"
|
|
15
|
+
|
|
16
|
+
Now generate the title:`}]}),W="";for await(let V of _)if(V.type==="text-delta"&&V.textDelta)W+=V.textDelta,J(V.textDelta);let F=W.trim();return F=F.replace(/^["'「『]+|["'」』]+$/g,""),F=F.replace(/^(Title:|标题:)\s*/i,""),F=F.replace(/\n+/g," "),F=F.trim(),F.length>50?F.substring(0,50)+"...":F}catch(K){return generateSessionTitle(z)}}export{Y as truncateTitle,Q as generateSessionTitleWithStreaming,$ as generateSessionTitle,q as formatSessionDisplay,w as formatRelativeTime,X as cleanTitle};
|
|
17
|
+
export{$ as l,Q as m};
|
|
18
|
+
|
|
19
|
+
//# debugId=C1E6EF4D915BD17A64756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/features/session/utils/title.ts", "../src/utils/session-title.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Session Title Utils\n * Pure functions for session title generation and formatting\n */\n\n/**\n * Generate a session title from the first user message\n * Takes the first 50 characters and adds ellipsis if truncated\n * Pure function - no side effects\n */\nexport function generateSessionTitle(firstMessage: string, maxLength = 50): string {\n if (!firstMessage || firstMessage.trim().length === 0) {\n return 'New Chat';\n }\n\n // Remove leading/trailing whitespace and normalize newlines\n const cleaned = cleanTitle(firstMessage);\n\n // Truncate to maxLength\n return truncateTitle(cleaned, maxLength);\n}\n\n/**\n * Clean title text\n * Removes leading/trailing whitespace and normalizes newlines to spaces\n */\nexport function cleanTitle(title: string): string {\n return title.trim().replace(/\\n+/g, ' ');\n}\n\n/**\n * Truncate title to max length\n * Tries to break at word boundaries when possible\n */\nexport function truncateTitle(title: string, maxLength = 50): string {\n if (title.length <= maxLength) {\n return title;\n }\n\n // Find last space before maxLength to avoid cutting words\n const truncated = title.substring(0, maxLength);\n const lastSpace = truncated.lastIndexOf(' ');\n\n // If there's a space in reasonable range (> 60% of maxLength), cut there\n const minReasonableLength = Math.floor(maxLength * 0.6);\n\n if (lastSpace > minReasonableLength) {\n return truncated.substring(0, lastSpace) + '...';\n }\n\n // Otherwise just truncate and add ellipsis\n return truncated + '...';\n}\n\n/**\n * Remove common title prefixes and quotes\n * Used to clean AI-generated titles\n */\nexport function removeQuotes(title: string): string {\n // Remove matching leading/trailing quotes (English, Chinese, Japanese)\n // Only remove if quotes appear at BOTH start and end\n let result = title;\n\n // Try to remove matching pairs of quotes\n const quotesPairs = [\n ['\"', '\"'],\n [\"'\", \"'\"],\n ['「', '」'],\n ['『', '』'],\n ];\n\n for (const [open, close] of quotesPairs) {\n // Keep removing matching pairs as long as they exist\n while (result.startsWith(open) && result.endsWith(close) && result.length > 1) {\n result = result.slice(open.length, -close.length);\n }\n }\n\n return result;\n}\n\n/**\n * Remove common \"Title:\" prefixes\n */\nexport function removeTitlePrefix(title: string): string {\n return title.replace(/^(Title:|标题:)\\s*/i, '');\n}\n\n/**\n * Clean AI-generated title\n * Removes quotes, prefixes, extra whitespace\n */\nexport function cleanAITitle(title: string, maxLength = 50): string {\n let cleaned = title.trim();\n\n // Remove quotes and prefixes iteratively until no more changes\n let previous = '';\n while (previous !== cleaned) {\n previous = cleaned;\n cleaned = removeTitlePrefix(cleaned);\n cleaned = removeQuotes(cleaned);\n }\n\n // Replace newlines with spaces\n cleaned = cleaned.replace(/\\n+/g, ' ');\n\n // Remove extra whitespace\n cleaned = cleaned.replace(/\\s+/g, ' ').trim();\n\n // Truncate if needed\n return truncateTitle(cleaned, maxLength);\n}\n\n/**\n * Format session title for display with timestamp\n * Returns \"Title (HH:MM)\" for today, \"Title (Mon DD)\" for other dates\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\n/**\n * Format relative time for session display\n * Returns \"just now\", \"5m ago\", \"2h ago\", \"3 days ago\", etc.\n */\nexport function formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (seconds < 30) {\n return 'just now';\n } else if (seconds < 60) {\n return `${seconds}s ago`;\n } else if (minutes < 60) {\n return `${minutes}m ago`;\n } else if (hours < 24) {\n return `${hours}h ago`;\n } else if (days < 7) {\n return `${days} ${days === 1 ? 'day' : 'days'} ago`;\n } else {\n // For older sessions, show date\n const date = new Date(timestamp);\n return date.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: date.getFullYear() !== new Date().getFullYear() ? 'numeric' : undefined,\n });\n }\n}\n\n/**\n * Check if title needs truncation\n */\nexport function needsTruncation(title: string, maxLength = 50): boolean {\n return title.length > maxLength;\n}\n\n/**\n * Validate title\n * Returns true if title is valid (not empty, not too long)\n */\nexport function isValidTitle(title: string, maxLength = 100): boolean {\n const trimmed = title.trim();\n return trimmed.length > 0 && trimmed.length <= maxLength;\n}\n\n/**\n * Get title length\n * Returns length after trimming\n */\nexport function getTitleLength(title: string): number {\n return title.trim().length;\n}\n\n/**\n * Compare titles for sorting\n * Case-insensitive alphabetical comparison\n */\nexport function compareTitles(a: string, b: string): number {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n}\n\n/**\n * Extract title from message content\n * Takes first line or first N characters\n */\nexport function extractTitleFromMessage(message: string, maxLength = 50): string {\n // Take first line\n const firstLine = message.split('\\n')[0];\n\n // Clean and truncate\n return generateSessionTitle(firstLine, maxLength);\n}\n",
|
|
6
|
+
"/**\n * Session Title Generation Utility\n * Re-exports pure functions from feature and adds streaming functionality\n */\n\nimport { createAIStream } from '../core/ai-sdk.js';\nimport type { ProviderId } from '../types/config.types.js';\n\n// Re-export pure functions from feature\nexport {\n generateSessionTitle,\n formatSessionDisplay,\n formatRelativeTime,\n cleanTitle,\n truncateTitle,\n} from '../features/session/utils/title.js';\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 // Get the provider instance and create the model\n const { getProvider } = await import('../providers/index.js');\n const providerInstance = getProvider(provider);\n const model = providerInstance.createClient(providerConfig, modelName);\n\n const streamGenerator = createAIStream({\n model,\n messages: [\n {\n role: 'user',\n content: `You need to generate a SHORT, DESCRIPTIVE title (maximum 50 characters) for a chat conversation.\n\nUser's first message: \"${firstMessage}\"\n\nRequirements:\n- Summarize the TOPIC or INTENT, don't just copy the message\n- Be concise and descriptive\n- Maximum 50 characters\n- Output ONLY the title, nothing else\n\nExamples:\n- Message: \"How do I implement authentication?\" → Title: \"Authentication Implementation\"\n- Message: \"你好,请帮我修复这个 bug\" → Title: \"Bug 修复请求\"\n- Message: \"Can you help me with React hooks?\" → Title: \"React Hooks Help\"\n\nNow generate the title:`,\n },\n ],\n });\n\n let fullTitle = '';\n\n // Iterate the async generator and stream to UI\n for await (const chunk of streamGenerator) {\n if (chunk.type === 'text-delta' && chunk.textDelta) {\n fullTitle += chunk.textDelta;\n onChunk(chunk.textDelta);\n }\n }\n\n // Clean up title\n let cleaned = fullTitle.trim();\n cleaned = cleaned.replace(/^[\"'「『]+|[\"'」』]+$/g, ''); // Remove quotes\n cleaned = cleaned.replace(/^(Title:|标题:)\\s*/i, ''); // Remove \"Title:\" prefix\n cleaned = cleaned.replace(/\\n+/g, ' '); // Replace newlines with spaces\n cleaned = cleaned.trim();\n\n // Return truncated if needed\n return cleaned.length > 50 ? cleaned.substring(0, 50) + '...' : cleaned;\n } catch (error) {\n // Fallback to simple title generation on any error\n return generateSessionTitle(firstMessage);\n }\n}\n\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "yhBAUO,GAAS,LAAoB,LAAC,JAAsB,JAAY,HAAY,LACjF,HAAI,LAAC,HAAgB,JAAa,DAAK,JAAE,GAAW,EAClD,MAAO,WAIT,IAAM,EAAU,EAAW,CAAY,EAGvC,OAAO,EAAc,EAAS,CAAS,EAOlC,SAAS,CAAU,CAAC,EAAuB,CAChD,OAAO,EAAM,KAAK,EAAE,QAAQ,OAAQ,GAAG,EAOlC,SAAS,CAAa,CAAC,EAAe,EAAY,GAAY,CACnE,GAAI,EAAM,QAAU,EAClB,OAAO,EAIT,IAAM,EAAY,EAAM,UAAU,EAAG,CAAS,EACxC,EAAY,EAAU,YAAY,GAAG,EAGrC,EAAsB,KAAK,MAAM,EAAY,GAAG,EAEtD,GAAI,EAAY,EACd,OAAO,EAAU,UAAU,EAAG,CAAS,EAAI,MAI7C,OAAO,EAAY,MAkEd,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,KAOtB,SAAS,CAAkB,CAAC,EAA2B,CAE5D,IAAM,EADM,KAAK,IAAI,EACF,EAEb,EAAU,KAAK,MAAM,EAAO,IAAI,EAChC,EAAU,KAAK,MAAM,EAAU,EAAE,EACjC,EAAQ,KAAK,MAAM,EAAU,EAAE,EAC/B,EAAO,KAAK,MAAM,EAAQ,EAAE,EAElC,GAAI,EAAU,GACZ,MAAO,WACF,QAAI,EAAU,GACnB,MAAO,GAAG,SACL,QAAI,EAAU,GACnB,MAAO,GAAG,SACL,QAAI,EAAQ,GACjB,MAAO,GAAG,SACL,QAAI,EAAO,EAChB,MAAO,GAAG,KAAQ,IAAS,EAAI,MAAQ,aAClC,KAEL,IAAM,EAAO,IAAI,KAAK,CAAS,EAC/B,OAAO,EAAK,mBAAmB,QAAS,CACtC,MAAO,QACP,IAAK,UACL,KAAM,EAAK,YAAY,IAAM,IAAI,KAAK,EAAE,YAAY,EAAI,UAAY,MACtE,CAAC,GCtJL,eAAsB,CAAiC,CACrD,EACA,EACA,EACA,EACA,EACiB,CACjB,GAAI,CAAC,GAAgB,EAAa,KAAK,EAAE,SAAW,EAClD,MAAO,WAGT,GAAI,CAEF,IAAQ,eAAgB,KAAa,+BAE/B,EADmB,EAAY,CAAQ,EACd,aAAa,EAAgB,CAAS,EAE/D,EAAkB,EAAe,CACrC,QACA,SAAU,CACR,CACE,KAAM,OACN,QAAS;AAAA;AAAA,yBAEM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAcjB,CACF,CACF,CAAC,EAEG,EAAY,GAGhB,cAAiB,KAAS,EACxB,GAAI,EAAM,OAAS,cAAgB,EAAM,UACvC,GAAa,EAAM,UACnB,EAAQ,EAAM,SAAS,EAK3B,IAAI,EAAU,EAAU,KAAK,EAO7B,OANA,EAAU,EAAQ,QAAQ,qBAAqB,EAAE,EACjD,EAAU,EAAQ,QAAQ,oBAAoB,EAAE,EAChD,EAAU,EAAQ,QAAQ,OAAQ,GAAG,EACrC,EAAU,EAAQ,KAAK,EAGhB,EAAQ,OAAS,GAAK,EAAQ,UAAU,EAAG,EAAE,EAAI,MAAQ,EAChE,MAAO,EAAO,CAEd,OAAO,qBAAqB,CAAY",
|
|
9
|
+
"debugId": "C1E6EF4D915BD17A64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|