@sylphx/flow 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/assets/agents/coder.md +1 -1
  2. package/assets/agents/orchestrator.md +1 -1
  3. package/assets/agents/reviewer.md +1 -1
  4. package/assets/agents/writer.md +13 -13
  5. package/assets/slash-commands/context.md +112 -0
  6. package/dist/assets/agents/coder.md +32 -0
  7. package/dist/assets/agents/orchestrator.md +36 -0
  8. package/dist/assets/agents/reviewer.md +30 -0
  9. package/dist/assets/agents/writer.md +30 -0
  10. package/dist/assets/knowledge/data/sql.md +216 -0
  11. package/dist/assets/knowledge/guides/saas-template.md +85 -0
  12. package/dist/assets/knowledge/guides/system-prompt.md +344 -0
  13. package/dist/assets/knowledge/guides/tech-stack.md +92 -0
  14. package/dist/assets/knowledge/guides/ui-ux.md +44 -0
  15. package/dist/assets/knowledge/stacks/nextjs-app.md +165 -0
  16. package/dist/assets/knowledge/stacks/node-api.md +220 -0
  17. package/dist/assets/knowledge/stacks/react-app.md +232 -0
  18. package/dist/assets/knowledge/universal/deployment.md +109 -0
  19. package/dist/assets/knowledge/universal/performance.md +121 -0
  20. package/dist/assets/knowledge/universal/security.md +79 -0
  21. package/dist/assets/knowledge/universal/testing.md +111 -0
  22. package/dist/assets/output-styles/silent.md +23 -0
  23. package/dist/assets/rules/core.md +144 -0
  24. package/dist/assets/slash-commands/commit.md +23 -0
  25. package/dist/assets/slash-commands/context.md +112 -0
  26. package/dist/assets/slash-commands/explain.md +35 -0
  27. package/dist/assets/slash-commands/mep.md +63 -0
  28. package/dist/assets/slash-commands/review.md +39 -0
  29. package/dist/assets/slash-commands/test.md +30 -0
  30. package/dist/chunk-1rptg3yg.js +4 -0
  31. package/dist/chunk-1rptg3yg.js.map +10 -0
  32. package/dist/{chunk-124wqbdb.js → chunk-4fr8q0jy.js} +3 -3
  33. package/dist/{chunk-124wqbdb.js.map → chunk-4fr8q0jy.js.map} +1 -1
  34. package/dist/{chunk-f6y5vttn.js → chunk-5szm4n3x.js} +3 -3
  35. package/dist/{chunk-f6y5vttn.js.map → chunk-5szm4n3x.js.map} +1 -1
  36. package/dist/chunk-7nht27vs.js +4 -0
  37. package/dist/{chunk-g9t3me0w.js.map → chunk-7nht27vs.js.map} +2 -2
  38. package/dist/chunk-8krxe10w.js +3 -0
  39. package/dist/{chunk-e966bjm5.js.map → chunk-8krxe10w.js.map} +2 -2
  40. package/dist/{chunk-wpe7rw5c.js → chunk-8z1sf25t.js} +3 -3
  41. package/dist/{chunk-wpe7rw5c.js.map → chunk-8z1sf25t.js.map} +1 -1
  42. package/dist/chunk-9c2nr2fz.js +25 -0
  43. package/dist/chunk-9c2nr2fz.js.map +61 -0
  44. package/dist/{chunk-4p754rhd.js → chunk-asr22mbn.js} +2 -2
  45. package/dist/{chunk-4p754rhd.js.map → chunk-asr22mbn.js.map} +2 -2
  46. package/dist/chunk-bnxtqetr.js +23 -0
  47. package/dist/chunk-bnxtqetr.js.map +11 -0
  48. package/dist/chunk-cs1s5c3g.js +54 -0
  49. package/dist/chunk-cs1s5c3g.js.map +53 -0
  50. package/dist/chunk-cv1nhr27.js +2 -0
  51. package/dist/{chunk-hshjnpm0.js.map → chunk-cv1nhr27.js.map} +1 -1
  52. package/dist/chunk-d4hj6d4t.js +6 -0
  53. package/dist/chunk-d4hj6d4t.js.map +11 -0
  54. package/dist/chunk-f06ma45b.js +15 -0
  55. package/dist/chunk-f06ma45b.js.map +16 -0
  56. package/dist/chunk-fs3f7acb.js +4 -0
  57. package/dist/chunk-fs3f7acb.js.map +12 -0
  58. package/dist/{chunk-5r4afhzp.js → chunk-gh83x9ya.js} +3 -3
  59. package/dist/{chunk-5r4afhzp.js.map → chunk-gh83x9ya.js.map} +1 -1
  60. package/dist/{chunk-qa8b725g.js → chunk-gyq335sw.js} +6 -5
  61. package/dist/{chunk-qa8b725g.js.map → chunk-gyq335sw.js.map} +1 -1
  62. package/dist/{chunk-hs3nxzyz.js → chunk-hft1735c.js} +2 -2
  63. package/dist/{chunk-hs3nxzyz.js.map → chunk-hft1735c.js.map} +2 -2
  64. package/dist/chunk-hj6r7703.js +3 -0
  65. package/dist/{chunk-78bfvh46.js.map → chunk-hj6r7703.js.map} +2 -2
  66. package/dist/chunk-hxj4eapp.js +14 -0
  67. package/dist/chunk-hxj4eapp.js.map +20 -0
  68. package/dist/chunk-jgsq3xax.js +23 -0
  69. package/dist/chunk-jgsq3xax.js.map +132 -0
  70. package/dist/{chunk-646h52kd.js → chunk-m9nt0bj3.js} +3 -3
  71. package/dist/{chunk-646h52kd.js.map → chunk-m9nt0bj3.js.map} +1 -1
  72. package/dist/{chunk-bd11hvvz.js → chunk-ndah8mn9.js} +2 -2
  73. package/dist/{chunk-bd11hvvz.js.map → chunk-ndah8mn9.js.map} +1 -1
  74. package/dist/chunk-s6g21d1g.js +27 -0
  75. package/dist/{chunk-0h7sfwq3.js.map → chunk-s6g21d1g.js.map} +4 -5
  76. package/dist/{chunk-hshjnpm0.js → chunk-sxy6vp20.js} +2 -2
  77. package/dist/chunk-sxy6vp20.js.map +9 -0
  78. package/dist/chunk-vjf57v4h.js +4 -0
  79. package/dist/chunk-vjf57v4h.js.map +10 -0
  80. package/dist/{chunk-jxny6xft.js → chunk-w2vbmr93.js} +2 -2
  81. package/dist/{chunk-jxny6xft.js.map → chunk-w2vbmr93.js.map} +1 -1
  82. package/dist/chunk-wd9qbbe5.js +5 -0
  83. package/dist/chunk-wd9qbbe5.js.map +10 -0
  84. package/dist/chunk-wnaa55wn.js +108 -0
  85. package/dist/chunk-wnaa55wn.js.map +24 -0
  86. package/dist/chunk-wrx1n6q6.js +16 -0
  87. package/dist/chunk-wrx1n6q6.js.map +16 -0
  88. package/dist/chunk-xata5rw6.js +119 -0
  89. package/dist/{chunk-878q8xdr.js.map → chunk-xata5rw6.js.map} +7 -18
  90. package/dist/chunk-z2rtyk3d.js +7 -0
  91. package/dist/{chunk-ygdr4fw7.js.map → chunk-z2rtyk3d.js.map} +2 -2
  92. package/dist/index.js +446 -482
  93. package/dist/index.js.map +301 -202
  94. package/package.json +4 -1
  95. package/dist/chunk-0h7sfwq3.js +0 -27
  96. package/dist/chunk-78bfvh46.js +0 -3
  97. package/dist/chunk-878q8xdr.js +0 -86
  98. package/dist/chunk-e966bjm5.js +0 -3
  99. package/dist/chunk-fxwaa2mg.js +0 -4
  100. package/dist/chunk-fxwaa2mg.js.map +0 -10
  101. package/dist/chunk-g9t3me0w.js +0 -4
  102. package/dist/chunk-ygdr4fw7.js +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylphx/flow",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Sylphx Flow - Type-safe development flow for modern web development",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -66,12 +66,14 @@
66
66
  "@ai-sdk/openai": "^2.0.59",
67
67
  "@ai-sdk/openai-compatible": "^1.0.25",
68
68
  "@huggingface/transformers": "^3.7.6",
69
+ "@jescalan/ink-markdown": "^2.0.0",
69
70
  "@lancedb/lancedb": "^0.22.2",
70
71
  "@libsql/client": "^0.15.15",
71
72
  "@modelcontextprotocol/sdk": "^1.20.2",
72
73
  "@openrouter/ai-sdk-provider": "^1.2.0",
73
74
  "ai": "^5.0.86",
74
75
  "ai-sdk-provider-claude-code": "^2.1.0",
76
+ "apache-arrow": "^21.1.0",
75
77
  "boxen": "^8.0.1",
76
78
  "chalk": "^5.6.2",
77
79
  "chokidar": "^4.0.3",
@@ -80,6 +82,7 @@
80
82
  "commander": "^14.0.2",
81
83
  "drizzle-orm": "^0.44.7",
82
84
  "gradient-string": "^3.0.0",
85
+ "gray-matter": "^4.0.3",
83
86
  "ignore": "^7.0.5",
84
87
  "immer": "^10.2.0",
85
88
  "ink": "^6.4.0",
@@ -1,27 +0,0 @@
1
- import{D as i,F as n}from"./chunk-ygdr4fw7.js";import"./chunk-bd11hvvz.js";import{K as t}from"./chunk-g9t3me0w.js";import{pa as a}from"./chunk-878q8xdr.js";import"./chunk-qa8b725g.js";import"./chunk-hshjnpm0.js";var b=(q=0)=>(V)=>`\x1B[${V+q}m`,I=(q=0)=>(V)=>`\x1B[${38+q};5;${V}m`,F=(q=0)=>(V,z,H)=>`\x1B[${38+q};2;${V};${z};${H}m`,Q={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},j1=Object.keys(Q.modifier),r=Object.keys(Q.color),l=Object.keys(Q.bgColor),w1=[...r,...l];function o(){let q=new Map;for(let[V,z]of Object.entries(Q)){for(let[H,J]of Object.entries(z))Q[H]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},z[H]=Q[H],q.set(J[0],J[1]);Object.defineProperty(Q,V,{value:z,enumerable:!1})}return Object.defineProperty(Q,"codes",{value:q,enumerable:!1}),Q.color.close="\x1B[39m",Q.bgColor.close="\x1B[49m",Q.color.ansi=b(),Q.color.ansi256=I(),Q.color.ansi16m=F(),Q.bgColor.ansi=b(10),Q.bgColor.ansi256=I(10),Q.bgColor.ansi16m=F(10),Object.defineProperties(Q,{rgbToAnsi256:{value(V,z,H){if(V===z&&z===H){if(V<8)return 16;if(V>248)return 231;return Math.round((V-8)/247*24)+232}return 16+36*Math.round(V/255*5)+6*Math.round(z/255*5)+Math.round(H/255*5)},enumerable:!1},hexToRgb:{value(V){let z=/[a-f\d]{6}|[a-f\d]{3}/i.exec(V.toString(16));if(!z)return[0,0,0];let[H]=z;if(H.length===3)H=[...H].map((K)=>K+K).join("");let J=Number.parseInt(H,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:(V)=>Q.rgbToAnsi256(...Q.hexToRgb(V)),enumerable:!1},ansi256ToAnsi:{value(V){if(V<8)return 30+V;if(V<16)return 90+(V-8);let z,H,J;if(V>=232)z=((V-232)*10+8)/255,H=z,J=z;else{V-=16;let O=V%36;z=Math.floor(V/36)/5,H=Math.floor(O/6)/5,J=O%6/5}let K=Math.max(z,H,J)*2;if(K===0)return 30;let X=30+(Math.round(J)<<2|Math.round(H)<<1|Math.round(z));if(K===2)X+=60;return X},enumerable:!1},rgbToAnsi:{value:(V,z,H)=>Q.ansi256ToAnsi(Q.rgbToAnsi256(V,z,H)),enumerable:!1},hexToAnsi:{value:(V)=>Q.ansi256ToAnsi(Q.hexToAnsi256(V)),enumerable:!1}}),Q}var s=o(),$=s;import Y from"node:process";import e from"node:os";import _ from"node:tty";function Z(q,V=globalThis.Deno?globalThis.Deno.args:Y.argv){let z=q.startsWith("-")?"":q.length===1?"-":"--",H=V.indexOf(z+q),J=V.indexOf("--");return H!==-1&&(J===-1||H<J)}var{env:U}=Y,w;if(Z("no-color")||Z("no-colors")||Z("color=false")||Z("color=never"))w=0;else if(Z("color")||Z("colors")||Z("color=true")||Z("color=always"))w=1;function V1(){if("FORCE_COLOR"in U){if(U.FORCE_COLOR==="true")return 1;if(U.FORCE_COLOR==="false")return 0;return U.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(U.FORCE_COLOR,10),3)}}function q1(q){if(q===0)return!1;return{level:q,hasBasic:!0,has256:q>=2,has16m:q>=3}}function z1(q,{streamIsTTY:V,sniffFlags:z=!0}={}){let H=V1();if(H!==void 0)w=H;let J=z?w:H;if(J===0)return 0;if(z){if(Z("color=16m")||Z("color=full")||Z("color=truecolor"))return 3;if(Z("color=256"))return 2}if("TF_BUILD"in U&&"AGENT_NAME"in U)return 1;if(q&&!V&&J===void 0)return 0;let K=J||0;if(U.TERM==="dumb")return K;if(Y.platform==="win32"){let X=e.release().split(".");if(Number(X[0])>=10&&Number(X[2])>=10586)return Number(X[2])>=14931?3:2;return 1}if("CI"in U){if(["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some((X)=>(X in U)))return 3;if(["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((X)=>(X in U))||U.CI_NAME==="codeship")return 1;return K}if("TEAMCITY_VERSION"in U)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(U.TEAMCITY_VERSION)?1:0;if(U.COLORTERM==="truecolor")return 3;if(U.TERM==="xterm-kitty")return 3;if(U.TERM==="xterm-ghostty")return 3;if(U.TERM==="wezterm")return 3;if("TERM_PROGRAM"in U){let X=Number.parseInt((U.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(U.TERM_PROGRAM){case"iTerm.app":return X>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(U.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(U.TERM))return 1;if("COLORTERM"in U)return 1;return K}function C(q,V={}){let z=z1(q,{streamIsTTY:q&&q.isTTY,...V});return q1(z)}var H1={stdout:C({isTTY:_.isatty(1)}),stderr:C({isTTY:_.isatty(2)})},k=H1;function f(q,V,z){let H=q.indexOf(V);if(H===-1)return q;let J=V.length,K=0,X="";do X+=q.slice(K,H)+V+z,K=H+J,H=q.indexOf(V,K);while(H!==-1);return X+=q.slice(K),X}function S(q,V,z,H){let J=0,K="";do{let X=q[H-1]==="\r";K+=q.slice(J,X?H-1:H)+V+(X?`\r
2
- `:`
3
- `)+z,J=H+1,H=q.indexOf(`
4
- `,J)}while(H!==-1);return K+=q.slice(J),K}var{stdout:h,stderr:u}=k,L=Symbol("GENERATOR"),G=Symbol("STYLER"),D=Symbol("IS_EMPTY"),m=["ansi","ansi","ansi256","ansi16m"],B=Object.create(null),J1=(q,V={})=>{if(V.level&&!(Number.isInteger(V.level)&&V.level>=0&&V.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let z=h?h.level:0;q.level=V.level===void 0?z:V.level};var K1=(q)=>{let V=(...z)=>z.join(" ");return J1(V,q),Object.setPrototypeOf(V,x.prototype),V};function x(q){return K1(q)}Object.setPrototypeOf(x.prototype,Function.prototype);for(let[q,V]of Object.entries($))B[q]={get(){let z=P(this,N(V.open,V.close,this[G]),this[D]);return Object.defineProperty(this,q,{value:z}),z}};B.visible={get(){let q=P(this,this[G],!0);return Object.defineProperty(this,"visible",{value:q}),q}};var M=(q,V,z,...H)=>{if(q==="rgb"){if(V==="ansi16m")return $[z].ansi16m(...H);if(V==="ansi256")return $[z].ansi256($.rgbToAnsi256(...H));return $[z].ansi($.rgbToAnsi(...H))}if(q==="hex")return M("rgb",V,z,...$.hexToRgb(...H));return $[z][q](...H)},Q1=["rgb","hex","ansi256"];for(let q of Q1){B[q]={get(){let{level:z}=this;return function(...H){let J=N(M(q,m[z],"color",...H),$.color.close,this[G]);return P(this,J,this[D])}}};let V="bg"+q[0].toUpperCase()+q.slice(1);B[V]={get(){let{level:z}=this;return function(...H){let J=N(M(q,m[z],"bgColor",...H),$.bgColor.close,this[G]);return P(this,J,this[D])}}}}var U1=Object.defineProperties(()=>{},{...B,level:{enumerable:!0,get(){return this[L].level},set(q){this[L].level=q}}}),N=(q,V,z)=>{let H,J;if(z===void 0)H=q,J=V;else H=z.openAll+q,J=V+z.closeAll;return{open:q,close:V,openAll:H,closeAll:J,parent:z}},P=(q,V,z)=>{let H=(...J)=>W1(H,J.length===1?""+J[0]:J.join(" "));return Object.setPrototypeOf(H,U1),H[L]=q,H[G]=V,H[D]=z,H},W1=(q,V)=>{if(q.level<=0||!V)return q[D]?"":V;let z=q[G];if(z===void 0)return V;let{openAll:H,closeAll:J}=z;if(V.includes("\x1B"))while(z!==void 0)V=f(V,z.close,z.open),z=z.parent;let K=V.indexOf(`
5
- `);if(K!==-1)V=S(V,J,H,K);return H+V+J};Object.defineProperties(x.prototype,B);var X1=x(),b1=x({level:u?u.level:0});var W=X1;import{readFile as v,writeFile as y,mkdir as Z1}from"node:fs/promises";import{join as R}from"node:path";import{homedir as $1}from"node:os";var T=R($1(),".sylphx","sessions"),p=R(T,".last-session");async function A(){await Z1(T,{recursive:!0})}function c(q){return R(T,`${q}.json`)}async function g(q,V){await A();let z={id:`session-${Date.now()}`,provider:q,model:V,messages:[],created:Date.now(),updated:Date.now()};return await G1(z),await D1(z.id),z}async function G1(q){await A(),q.updated=Date.now();let V=c(q.id);await y(V,JSON.stringify(q,null,2),"utf8")}async function B1(q){try{let V=c(q),z=await v(V,"utf8");return JSON.parse(z)}catch{return null}}async function O1(){try{return(await v(p,"utf8")).trim()}catch{return null}}async function D1(q){await A(),await y(p,q,"utf8")}async function d(){let q=await O1();if(!q)return null;return B1(q)}function k1(q,V,z){return{...q,messages:[...q.messages,{role:V,content:z,timestamp:Date.now()}]}}async function x1(q,V){let z=V["default-model"];if(z)return z;try{return(await t(q,V))[0]?.id||null}catch{return null}}async function y1(q){let V=process.cwd(),z=await i(V);if(z._tag==="Failure")return console.error(W.red("✗ Failed to load AI config")),null;let H=z.value,J=await n(V);if(J.length===0)return console.error(W.yellow(`
6
- ⚠️ No AI provider configured
7
- `)),console.error(W.dim(`Run: sylphx code (to configure AI)
8
- `)),null;let K=H.defaultProvider??J[0];if(!K)return console.error(W.yellow(`
9
- ⚠️ No provider configured
10
- `)),null;let X=H.providers?.[K];if(!X)return console.error(W.yellow(`
11
- ⚠️ Provider not configured
12
- `)),null;let O=a(K);if(!O.isConfigured(X))return console.error(W.yellow(`
13
- ⚠️ ${O.name} is not properly configured
14
- `)),console.error(W.dim(`Run: sylphx code (to configure AI)
15
- `)),null;if(q){let j=await d();if(j)return console.error(W.dim(`Continuing session: ${j.id}`)),console.error(W.dim(`Messages: ${j.messages.length}
16
- `)),j;console.error(W.yellow(`No previous session found, creating new one
17
- `))}let E=await x1(K,X);if(!E)return console.error(W.yellow(`
18
- ⚠️ No models available for this provider
19
- `)),null;return await g(K,E)}function p1(){console.error(W.red(`
20
- ✗ No text response received from model
21
- `)),console.error(W.yellow("The model may have called tools but did not generate a final text response.")),console.error(W.yellow(`This usually means:
22
- `)),console.error(W.dim(" • The current model does not fully support multi-step tool calling")),console.error(W.dim(` • Some models can call tools but cannot process results and respond
23
- `)),console.error(W.green("Recommended models with full tool support:")),console.error(W.green(" • anthropic/claude-3.5-sonnet")),console.error(W.green(" • anthropic/claude-3.5-haiku")),console.error(W.green(" • openai/gpt-4o")),console.error(W.green(` • google/gemini-2.0-flash-exp
24
- `)),console.error(W.dim("\uD83D\uDCA1 Tip: Ask questions that don't require tools, or switch to a model above")),console.error(W.dim("To configure: Run `sylphx code` (TUI mode) then type /provider\n"))}export{p1 as showModelToolSupportError,y1 as getOrCreateSession,x1 as getDefaultModel};
25
- export{W as x,G1 as y,k1 as z,y1 as A,p1 as B};
26
-
27
- //# debugId=5B213C576E9FB39964756E2164756E21
@@ -1,3 +0,0 @@
1
- import{a as M}from"./chunk-waemzsf4.js";import{G as J,H as V,I as X}from"./chunk-bd11hvvz.js";import"./chunk-hshjnpm0.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=A531F8F84EE2C92D64756E2164756E21