@sylphx/flow 0.1.8 → 0.2.1
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/dist/chunk-0h7sfwq3.js +27 -0
- package/dist/chunk-0h7sfwq3.js.map +15 -0
- package/dist/{chunk-fgvn27jn.js → chunk-124wqbdb.js} +3 -3
- package/dist/{chunk-fgvn27jn.js.map → chunk-124wqbdb.js.map} +1 -1
- package/dist/{chunk-3fc49zg7.js → chunk-4p754rhd.js} +2 -2
- package/dist/{chunk-3fc49zg7.js.map → chunk-4p754rhd.js.map} +1 -1
- package/dist/{chunk-v45sm94y.js → chunk-5r4afhzp.js} +3 -3
- package/dist/{chunk-v45sm94y.js.map → chunk-5r4afhzp.js.map} +1 -1
- package/dist/{chunk-jr6q8myj.js → chunk-646h52kd.js} +3 -3
- package/dist/{chunk-jr6q8myj.js.map → chunk-646h52kd.js.map} +1 -1
- package/dist/chunk-78bfvh46.js +3 -0
- package/dist/{chunk-kdha6vwb.js.map → chunk-78bfvh46.js.map} +2 -2
- package/dist/chunk-878q8xdr.js +86 -0
- package/dist/chunk-878q8xdr.js.map +37 -0
- package/dist/{chunk-6bwzk9kv.js → chunk-bd11hvvz.js} +2 -2
- package/dist/{chunk-6bwzk9kv.js.map → chunk-bd11hvvz.js.map} +1 -1
- package/dist/chunk-e966bjm5.js +3 -0
- package/dist/{chunk-4psv4dr6.js.map → chunk-e966bjm5.js.map} +2 -2
- package/dist/{chunk-6r3jzv7f.js → chunk-f6y5vttn.js} +3 -3
- package/dist/{chunk-6r3jzv7f.js.map → chunk-f6y5vttn.js.map} +1 -1
- package/dist/chunk-fxwaa2mg.js +4 -0
- package/dist/chunk-fxwaa2mg.js.map +10 -0
- package/dist/chunk-g9t3me0w.js +4 -0
- package/dist/chunk-g9t3me0w.js.map +10 -0
- package/dist/{chunk-mbd0qsd9.js → chunk-hs3nxzyz.js} +2 -2
- package/dist/{chunk-mbd0qsd9.js.map → chunk-hs3nxzyz.js.map} +1 -1
- package/dist/{chunk-03csvy0b.js → chunk-hshjnpm0.js} +2 -2
- package/dist/{chunk-03csvy0b.js.map → chunk-hshjnpm0.js.map} +1 -1
- package/dist/{chunk-aa4cgtk7.js → chunk-jxny6xft.js} +2 -2
- package/dist/{chunk-aa4cgtk7.js.map → chunk-jxny6xft.js.map} +1 -1
- package/dist/{chunk-3t1504hw.js → chunk-qa8b725g.js} +3 -3
- package/dist/{chunk-3t1504hw.js.map → chunk-qa8b725g.js.map} +1 -1
- package/dist/{chunk-m00p2ert.js → chunk-waemzsf4.js} +2 -2
- package/dist/{chunk-m00p2ert.js.map → chunk-waemzsf4.js.map} +1 -1
- package/dist/{chunk-fkw4ccxy.js → chunk-wpe7rw5c.js} +3 -3
- package/dist/{chunk-fkw4ccxy.js.map → chunk-wpe7rw5c.js.map} +1 -1
- package/dist/chunk-ygdr4fw7.js +7 -0
- package/dist/chunk-ygdr4fw7.js.map +10 -0
- package/dist/index.js +286 -286
- package/dist/index.js.map +18 -18
- package/package.json +3 -1
- package/dist/chunk-4psv4dr6.js +0 -3
- package/dist/chunk-dpp0b7br.js +0 -43
- package/dist/chunk-dpp0b7br.js.map +0 -31
- package/dist/chunk-hhy4cr5s.js +0 -7
- package/dist/chunk-hhy4cr5s.js.map +0 -10
- package/dist/chunk-kdha6vwb.js +0 -3
package/dist/chunk-hhy4cr5s.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{fa as Q}from"./chunk-3t1504hw.js";import{na as J}from"./chunk-6bwzk9kv.js";import"./chunk-03csvy0b.js";import V from"node:fs/promises";import B from"node:path";import N from"node:os";var z={anthropic:{id:"anthropic",name:"Anthropic",models:["claude-3-5-sonnet-20241022","claude-3-5-haiku-20241022","claude-3-opus-20240229","claude-3-sonnet-20240229","claude-3-haiku-20240307"],requiresKey:!0,keyName:"ANTHROPIC_API_KEY"},openai:{id:"openai",name:"OpenAI",models:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-3.5-turbo"],requiresKey:!0,keyName:"OPENAI_API_KEY"},google:{id:"google",name:"Google",models:["gemini-2.0-flash-exp","gemini-1.5-pro","gemini-1.5-flash"],requiresKey:!0,keyName:"GOOGLE_API_KEY"},openrouter:{id:"openrouter",name:"OpenRouter",models:["anthropic/claude-3.5-sonnet","anthropic/claude-3-opus","openai/gpt-4o","openai/gpt-4-turbo","google/gemini-2.0-flash-exp","meta-llama/llama-3.3-70b-instruct","meta-llama/llama-3.1-405b-instruct","google/gemini-pro-1.5","anthropic/claude-3-haiku","mistralai/mistral-large","deepseek/deepseek-chat","qwen/qwen-2.5-72b-instruct"],requiresKey:!0,keyName:"OPENROUTER_API_KEY"}},Y=Q.object({defaultProvider:Q.enum(["anthropic","openai","google","openrouter"]).optional(),defaultModel:Q.string().optional(),providers:Q.object({anthropic:Q.object({apiKey:Q.string().optional(),defaultModel:Q.string().optional()}).optional(),openai:Q.object({apiKey:Q.string().optional(),baseUrl:Q.string().optional(),defaultModel:Q.string().optional()}).optional(),google:Q.object({apiKey:Q.string().optional(),defaultModel:Q.string().optional()}).optional(),openrouter:Q.object({apiKey:Q.string().optional(),defaultModel:Q.string().optional()}).optional()}).optional()}),j=B.join(N.homedir(),".sylphx-flow","settings.json"),E=".sylphx-flow/settings.json",O=".sylphx-flow/settings.local.json",R=".sylphx-flow/ai-config.json",M=(q=process.cwd())=>({global:j,project:B.join(q,E),local:B.join(q,O),legacy:B.join(q,R)}),x=async(q)=>{try{let k=await V.readFile(q,"utf8"),D=JSON.parse(k);return Y.parse(D)}catch(k){if(k.code==="ENOENT")return null;throw k}},$=(q,k)=>{return{defaultProvider:k.defaultProvider??q.defaultProvider,defaultModel:k.defaultModel??q.defaultModel,providers:{anthropic:{...q.providers?.anthropic,...k.providers?.anthropic},openai:{...q.providers?.openai,...k.providers?.openai},google:{...q.providers?.google,...k.providers?.google},openrouter:{...q.providers?.openrouter,...k.providers?.openrouter}}}},A=async(q=process.cwd())=>{let k=M(q);try{return await V.access(k.global).catch(()=>{}),!0}catch{}try{return await V.access(k.project),!0}catch{}try{return await V.access(k.local),!0}catch{}try{return await V.access(k.legacy),!0}catch{}return!1},T=async(q=process.cwd())=>{return J(async()=>{let k=M(q),[D,H,U,W]=await Promise.all([x(k.global),x(k.project),x(k.local),x(k.legacy)]);if(W&&!D){await _(q);let K=await x(k.global);if(K){let Z={};if(Z=$(Z,K),H)Z=$(Z,H);if(U)Z=$(Z,U);return Z}}let X={};if(D)X=$(X,D);if(H)X=$(X,H);if(U)X=$(X,U);if(W)X=$(X,W);return X},(k)=>Error(`Failed to load AI config: ${k.message}`))},S=async(q,k=process.cwd())=>{let H=M(k).global;return J(async()=>{await V.mkdir(B.dirname(H),{recursive:!0});let U=Y.parse(q);await V.writeFile(H,JSON.stringify(U,null,2)+`
|
|
2
|
-
`,"utf8")},(U)=>Error(`Failed to save AI config: ${U.message}`))},b=async(q,k,D=process.cwd())=>{let U=M(D)[k];return J(async()=>{await V.mkdir(B.dirname(U),{recursive:!0});let W=Y.parse(q);await V.writeFile(U,JSON.stringify(W,null,2)+`
|
|
3
|
-
`,"utf8")},(W)=>Error(`Failed to save AI config to ${k}: ${W.message}`))},I=async(q,k=process.cwd())=>{let D=await T(k);if(D._tag==="Failure")return D;let H={...D.value,...q,providers:{...D.value.providers,...q.providers}};return S(H,k)},u=async(q,k=process.cwd())=>{let D=await T(k);if(D._tag==="Success")return D.value.providers?.[q]?.apiKey;return},m=async(q,k,D=process.cwd())=>{let H=await T(D),U=H._tag==="Success"?H.value:{},W={...U,providers:{...U.providers,[q]:{...U.providers?.[q],apiKey:k}}};return S(W,D)},w=async(q=process.cwd())=>{let k=await T(q);if(k._tag==="Failure")return[];let D=[],H=k.value;if(H.providers?.anthropic?.apiKey)D.push("anthropic");if(H.providers?.openai?.apiKey)D.push("openai");if(H.providers?.google?.apiKey)D.push("google");if(H.providers?.openrouter?.apiKey)D.push("openrouter");return D},_=async(q=process.cwd())=>{return J(async()=>{let k=M(q),D=await x(k.legacy);if(!D)return;if(await x(k.global)){console.log("Legacy config found but global config already exists. Skipping migration."),console.log(`You can manually delete ${k.legacy} if migration is complete.`);return}await V.mkdir(B.dirname(k.global),{recursive:!0}),await V.writeFile(k.global,JSON.stringify(D,null,2)+`
|
|
4
|
-
`,"utf8"),console.log(`✓ Migrated configuration from ${k.legacy} to ${k.global}`),console.log(` You can now safely delete the legacy file: ${k.legacy}`)},(k)=>Error(`Failed to migrate legacy config: ${k.message}`))};export{I as updateAIConfig,m as setProviderKey,b as saveAIConfigTo,S as saveAIConfig,_ as migrateLegacyConfig,T as loadAIConfig,u as getProviderKey,w as getConfiguredProviders,M as getAIConfigPaths,A as aiConfigExists,z as AI_PROVIDERS};
|
|
5
|
-
export{z as s,T as t,S as u,w as v};
|
|
6
|
-
|
|
7
|
-
//# debugId=8EDBF6EB88D80CED64756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/config/ai-config.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"/**\n * AI Configuration Management\n *\n * Three-tier configuration system:\n * 1. Global: ~/.sylphx-flow/settings.json (user defaults, contains API keys)\n * 2. Project: ./.sylphx-flow/settings.json (project preferences, no secrets)\n * 3. Local: ./.sylphx-flow/settings.local.json (local overrides, gitignored)\n *\n * Priority: local > project > global\n */\n\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport os from 'node:os';\nimport { z } from 'zod';\nimport { type Result, success, tryCatchAsync } from '../core/functional/result.js';\n\n/**\n * Available AI providers\n */\nexport const AI_PROVIDERS = {\n anthropic: {\n id: 'anthropic',\n name: 'Anthropic',\n models: [\n 'claude-3-5-sonnet-20241022',\n 'claude-3-5-haiku-20241022',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-3-haiku-20240307',\n ],\n requiresKey: true,\n keyName: 'ANTHROPIC_API_KEY',\n },\n openai: {\n id: 'openai',\n name: 'OpenAI',\n models: [\n 'gpt-4o',\n 'gpt-4o-mini',\n 'gpt-4-turbo',\n 'gpt-4',\n 'gpt-3.5-turbo',\n ],\n requiresKey: true,\n keyName: 'OPENAI_API_KEY',\n },\n google: {\n id: 'google',\n name: 'Google',\n models: [\n 'gemini-2.0-flash-exp',\n 'gemini-1.5-pro',\n 'gemini-1.5-flash',\n ],\n requiresKey: true,\n keyName: 'GOOGLE_API_KEY',\n },\n openrouter: {\n id: 'openrouter',\n name: 'OpenRouter',\n models: [\n // Popular models via OpenRouter\n 'anthropic/claude-3.5-sonnet',\n 'anthropic/claude-3-opus',\n 'openai/gpt-4o',\n 'openai/gpt-4-turbo',\n 'google/gemini-2.0-flash-exp',\n 'meta-llama/llama-3.3-70b-instruct',\n 'meta-llama/llama-3.1-405b-instruct',\n 'google/gemini-pro-1.5',\n 'anthropic/claude-3-haiku',\n 'mistralai/mistral-large',\n 'deepseek/deepseek-chat',\n 'qwen/qwen-2.5-72b-instruct',\n ],\n requiresKey: true,\n keyName: 'OPENROUTER_API_KEY',\n },\n} as const;\n\nexport type ProviderId = keyof typeof AI_PROVIDERS;\n\n/**\n * AI configuration schema\n */\nconst aiConfigSchema = z.object({\n defaultProvider: z.enum(['anthropic', 'openai', 'google', 'openrouter']).optional(),\n defaultModel: z.string().optional(),\n providers: z.object({\n anthropic: z.object({\n apiKey: z.string().optional(),\n defaultModel: z.string().optional(),\n }).optional(),\n openai: z.object({\n apiKey: z.string().optional(),\n baseUrl: z.string().optional(),\n defaultModel: z.string().optional(),\n }).optional(),\n google: z.object({\n apiKey: z.string().optional(),\n defaultModel: z.string().optional(),\n }).optional(),\n openrouter: z.object({\n apiKey: z.string().optional(),\n defaultModel: z.string().optional(),\n }).optional(),\n }).optional(),\n});\n\nexport type AIConfig = z.infer<typeof aiConfigSchema>;\n\n/**\n * Configuration file paths\n */\nconst GLOBAL_CONFIG_FILE = path.join(os.homedir(), '.sylphx-flow', 'settings.json');\nconst PROJECT_CONFIG_FILE = '.sylphx-flow/settings.json';\nconst LOCAL_CONFIG_FILE = '.sylphx-flow/settings.local.json';\n\n/**\n * Deprecated config file (for migration)\n */\nconst LEGACY_CONFIG_FILE = '.sylphx-flow/ai-config.json';\n\n/**\n * Get AI config file paths in priority order\n */\nexport const getAIConfigPaths = (cwd: string = process.cwd()): {\n global: string;\n project: string;\n local: string;\n legacy: string;\n} => ({\n global: GLOBAL_CONFIG_FILE,\n project: path.join(cwd, PROJECT_CONFIG_FILE),\n local: path.join(cwd, LOCAL_CONFIG_FILE),\n legacy: path.join(cwd, LEGACY_CONFIG_FILE),\n});\n\n/**\n * Load config from a single file\n */\nconst loadConfigFile = async (filePath: string): Promise<AIConfig | null> => {\n try {\n const content = await fs.readFile(filePath, 'utf8');\n const parsed = JSON.parse(content);\n return aiConfigSchema.parse(parsed);\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return null; // File doesn't exist\n }\n throw error; // Re-throw other errors\n }\n};\n\n/**\n * Deep merge two configs (b overwrites a)\n */\nconst mergeConfigs = (a: AIConfig, b: AIConfig): AIConfig => {\n return {\n defaultProvider: b.defaultProvider ?? a.defaultProvider,\n defaultModel: b.defaultModel ?? a.defaultModel,\n providers: {\n anthropic: {\n ...a.providers?.anthropic,\n ...b.providers?.anthropic,\n },\n openai: {\n ...a.providers?.openai,\n ...b.providers?.openai,\n },\n google: {\n ...a.providers?.google,\n ...b.providers?.google,\n },\n openrouter: {\n ...a.providers?.openrouter,\n ...b.providers?.openrouter,\n },\n },\n };\n};\n\n/**\n * Check if any AI config exists\n */\nexport const aiConfigExists = async (cwd: string = process.cwd()): Promise<boolean> => {\n const paths = getAIConfigPaths(cwd);\n try {\n // Check any of the config files\n await fs.access(paths.global).catch(() => {});\n return true;\n } catch {}\n\n try {\n await fs.access(paths.project);\n return true;\n } catch {}\n\n try {\n await fs.access(paths.local);\n return true;\n } catch {}\n\n try {\n await fs.access(paths.legacy);\n return true;\n } catch {}\n\n return false;\n};\n\n/**\n * Load AI configuration\n * Merges global, project, and local configs with priority: local > project > global\n * Automatically migrates legacy config on first load\n */\nexport const loadAIConfig = async (cwd: string = process.cwd()): Promise<Result<AIConfig, Error>> => {\n return tryCatchAsync(\n async () => {\n const paths = getAIConfigPaths(cwd);\n\n // Load all config files\n const [globalConfig, projectConfig, localConfig, legacyConfig] = await Promise.all([\n loadConfigFile(paths.global),\n loadConfigFile(paths.project),\n loadConfigFile(paths.local),\n loadConfigFile(paths.legacy),\n ]);\n\n // Auto-migrate legacy config if it exists and global doesn't\n if (legacyConfig && !globalConfig) {\n await migrateLegacyConfig(cwd);\n // Reload global config after migration\n const migratedGlobal = await loadConfigFile(paths.global);\n if (migratedGlobal) {\n // Start with empty config\n let merged: AIConfig = {};\n\n // Merge in priority order: global < project < local\n merged = mergeConfigs(merged, migratedGlobal);\n if (projectConfig) merged = mergeConfigs(merged, projectConfig);\n if (localConfig) merged = mergeConfigs(merged, localConfig);\n\n return merged;\n }\n }\n\n // Start with empty config\n let merged: AIConfig = {};\n\n // Merge in priority order: global < project < local < legacy (for backwards compat)\n if (globalConfig) merged = mergeConfigs(merged, globalConfig);\n if (projectConfig) merged = mergeConfigs(merged, projectConfig);\n if (localConfig) merged = mergeConfigs(merged, localConfig);\n if (legacyConfig) merged = mergeConfigs(merged, legacyConfig);\n\n return merged;\n },\n (error: any) => new Error(`Failed to load AI config: ${error.message}`)\n );\n};\n\n/**\n * Save AI configuration to global settings\n * By default, all configuration (including API keys) goes to ~/.sylphx-flow/settings.json\n */\nexport const saveAIConfig = async (\n config: AIConfig,\n cwd: string = process.cwd()\n): Promise<Result<void, Error>> => {\n const paths = getAIConfigPaths(cwd);\n const configPath = paths.global; // Save to global by default\n\n return tryCatchAsync(\n async () => {\n // Ensure directory exists\n await fs.mkdir(path.dirname(configPath), { recursive: true });\n\n // Validate config\n const validated = aiConfigSchema.parse(config);\n\n // Write config\n await fs.writeFile(configPath, JSON.stringify(validated, null, 2) + '\\n', 'utf8');\n },\n (error: any) => new Error(`Failed to save AI config: ${error.message}`)\n );\n};\n\n/**\n * Save AI configuration to a specific location\n */\nexport const saveAIConfigTo = async (\n config: AIConfig,\n location: 'global' | 'project' | 'local',\n cwd: string = process.cwd()\n): Promise<Result<void, Error>> => {\n const paths = getAIConfigPaths(cwd);\n const configPath = paths[location];\n\n return tryCatchAsync(\n async () => {\n // Ensure directory exists\n await fs.mkdir(path.dirname(configPath), { recursive: true });\n\n // Validate config\n const validated = aiConfigSchema.parse(config);\n\n // Write config\n await fs.writeFile(configPath, JSON.stringify(validated, null, 2) + '\\n', 'utf8');\n },\n (error: any) => new Error(`Failed to save AI config to ${location}: ${error.message}`)\n );\n};\n\n/**\n * Update AI configuration (merge with existing)\n */\nexport const updateAIConfig = async (\n updates: Partial<AIConfig>,\n cwd: string = process.cwd()\n): Promise<Result<void, Error>> => {\n const currentResult = await loadAIConfig(cwd);\n\n if (currentResult._tag === 'Failure') {\n return currentResult;\n }\n\n const merged: AIConfig = {\n ...currentResult.value,\n ...updates,\n providers: {\n ...currentResult.value.providers,\n ...updates.providers,\n },\n };\n\n return saveAIConfig(merged, cwd);\n};\n\n/**\n * Get API key for a provider\n */\nexport const getProviderKey = async (\n providerId: ProviderId,\n cwd: string = process.cwd()\n): Promise<string | undefined> => {\n const result = await loadAIConfig(cwd);\n if (result._tag === 'Success') {\n return result.value.providers?.[providerId]?.apiKey;\n }\n return undefined;\n};\n\n/**\n * Set API key for a provider\n */\nexport const setProviderKey = async (\n providerId: ProviderId,\n apiKey: string,\n cwd: string = process.cwd()\n): Promise<Result<void, Error>> => {\n const currentResult = await loadAIConfig(cwd);\n\n const current = currentResult._tag === 'Success' ? currentResult.value : {};\n\n const updated: AIConfig = {\n ...current,\n providers: {\n ...current.providers,\n [providerId]: {\n ...current.providers?.[providerId],\n apiKey,\n },\n },\n };\n\n return saveAIConfig(updated, cwd);\n};\n\n/**\n * Get configured providers (those with API keys)\n */\nexport const getConfiguredProviders = async (\n cwd: string = process.cwd()\n): Promise<ProviderId[]> => {\n const result = await loadAIConfig(cwd);\n\n if (result._tag === 'Failure') {\n return [];\n }\n\n const providers: ProviderId[] = [];\n const config = result.value;\n\n if (config.providers?.anthropic?.apiKey) {\n providers.push('anthropic');\n }\n if (config.providers?.openai?.apiKey) {\n providers.push('openai');\n }\n if (config.providers?.google?.apiKey) {\n providers.push('google');\n }\n if (config.providers?.openrouter?.apiKey) {\n providers.push('openrouter');\n }\n\n return providers;\n};\n\n/**\n * Migrate legacy ai-config.json to new settings system\n * Automatically called on first load if legacy config exists\n */\nexport const migrateLegacyConfig = async (cwd: string = process.cwd()): Promise<Result<void, Error>> => {\n return tryCatchAsync(\n async () => {\n const paths = getAIConfigPaths(cwd);\n\n // Check if legacy config exists\n const legacyConfig = await loadConfigFile(paths.legacy);\n if (!legacyConfig) {\n return; // No legacy config to migrate\n }\n\n // Check if global config already exists\n const globalConfig = await loadConfigFile(paths.global);\n if (globalConfig) {\n // Global config exists, don't overwrite it\n console.log('Legacy config found but global config already exists. Skipping migration.');\n console.log(`You can manually delete ${paths.legacy} if migration is complete.`);\n return;\n }\n\n // Migrate to global config\n await fs.mkdir(path.dirname(paths.global), { recursive: true });\n await fs.writeFile(paths.global, JSON.stringify(legacyConfig, null, 2) + '\\n', 'utf8');\n\n console.log(`✓ Migrated configuration from ${paths.legacy} to ${paths.global}`);\n console.log(` You can now safely delete the legacy file: ${paths.legacy}`);\n },\n (error: any) => new Error(`Failed to migrate legacy config: ${error.message}`)\n );\n};\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "8EDBF6EB88D80CED64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-kdha6vwb.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{ia as M}from"./chunk-m00p2ert.js";import{ka as J,la as V,ma as X}from"./chunk-6bwzk9kv.js";import"./chunk-03csvy0b.js";var j=async(q)=>{return{sessionCommand:`sylphx-flow hook --type session --target ${q}`,messageCommand:`sylphx-flow hook --type message --target ${q}`,notificationCommand:`sylphx-flow hook --type notification --target ${q}`}},B={sessionCommand:"sylphx-flow hook --type session --target claude-code",messageCommand:"sylphx-flow hook --type message --target claude-code",notificationCommand:"sylphx-flow hook --type notification --target claude-code"},Z=(q)=>{return X(()=>JSON.parse(q),(v)=>M("Failed to parse Claude Code settings",{cause:v instanceof Error?v:void 0}))},Y=(q=B)=>{let v=q.sessionCommand||B.sessionCommand,G=q.messageCommand||B.messageCommand,N=q.notificationCommand||B.notificationCommand;return{SessionStart:[{hooks:[{type:"command",command:v}]}],UserPromptSubmit:[{hooks:[{type:"command",command:G}]}],Notification:[{matcher:"",hooks:[{type:"command",command:N}]}]}},$=(q,v=B)=>{let G=Y(v);return{...q,hooks:{...q.hooks||{},...G}}},W=(q=B)=>{return{hooks:Y(q)}},Q=(q)=>{return JSON.stringify(q,null,2)},y=()=>{return"Claude Code hooks configured: SessionStart (static info) + UserPromptSubmit (dynamic info)"},R=(q,v=B)=>{if(q===null||q.trim()===""){let P=W(v);return J(Q(P))}let G=Z(q);if(G._tag==="Failure"){let P=W(v);return J(Q(P))}let N=$(G.value,v);return J(Q(N))},z=(q)=>{if(q.sessionCommand!==void 0&&q.sessionCommand.trim()==="")return V(M("Session command cannot be empty"));if(q.messageCommand!==void 0&&q.messageCommand.trim()==="")return V(M("Message command cannot be empty"));return J(q)};export{z as validateHookConfig,Q as serializeSettings,R as processSettings,Z as parseSettings,$ as mergeSettings,y as getSuccessMessage,j as generateHookCommands,W as createSettings,Y as buildHookConfiguration,B as DEFAULT_HOOKS};
|
|
2
|
-
|
|
3
|
-
//# debugId=2E0BDFAF7FA45BC764756E2164756E21
|