@systemfsoftware/omp-claude-compat 1.1.3 → 1.1.5
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.
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import{FileSystem as e}from"@effect/platform/FileSystem";import{Context as t,Effect as n,Layer as r,MutableHashMap as i,Option as a,ParseResult as o,Ref as s,Schema as c}from"effect";import{Path as l}from"@effect/platform/Path";const u={arrays:`merge`,sets:`merge`,maps:`merge`};function d(e,t,n){return f(e,t,new Set,n??u)}function f(e,t,n,r){let i={},a=new Set([...g(e),...g(t)]);for(let o of a){if(o===`__proto__`)continue;let a=e[o];if(!Object.hasOwn(t,o)){i[o]=a;continue}let s=t[o];if(h(a)&&h(s)&&!n.has(a)&&!n.has(s)){n.add(a),n.add(s),i[o]=ee(a,s,n,r);continue}i[o]=s}return i}function ee(e,t,n,r){if(p(e)&&p(t))return f(e,t,n,r);if(m(e)&&m(t)){if(Array.isArray(e)&&Array.isArray(t))return r.arrays===`merge`?e.concat(t):t;if(e instanceof Map&&t instanceof Map){if(r.maps===`merge`){let n=new Map(e);for(let[e,r]of t)n.set(e,r);return n}return t}if(e instanceof Set&&t instanceof Set){if(r.sets===`merge`){let n=new Set(e);for(let e of t)n.add(e);return n}return t}}return t}function p(e){return Object.getPrototypeOf(e)===Object.prototype}function m(e){return typeof e[Symbol.iterator]==`function`}function h(e){return typeof e==`object`&&!!e}function g(e){let t=Object.keys(e),n=Object.getOwnPropertySymbols(e);if(n.length===0)return t;for(let r of n)Object.prototype.propertyIsEnumerable.call(e,r)&&t.push(r);return t}function te(e){return e%4==0&&e%100!=0||e%400==0}var _=class{#e=/[ \t]/;#t=0;#n;constructor(e){this.#n=e}get position(){return this.#t}get source(){return this.#n}char(e=0){return this.#n[this.#t+e]??``}slice(e,t){return this.#n.slice(this.#t+e,this.#t+t)}next(e=1){this.#t+=e}skipWhitespaces(){for(;this.#e.test(this.char())&&!this.eof();)this.next();if(!this.isCurrentCharEOL()&&/\s/.test(this.char())){let e=`\\u`+this.char().charCodeAt(0).toString(16),t=this.#t;throw SyntaxError(`Cannot parse the TOML: It contains invalid whitespace at position '${t}': \`${e}\``)}}nextUntilChar(e={skipComments:!0}){for(;!this.eof();){let t=this.char();if(this.#e.test(t)||this.isCurrentCharEOL())this.next();else if(e.skipComments&&this.char()===`#`)for(;!this.isCurrentCharEOL()&&!this.eof();)this.next();else break}}eof(){return this.#t>=this.#n.length}isCurrentCharEOL(){return this.char()===`
|
|
2
|
+
`||this.startsWith(`\r
|
|
3
|
+
`)}startsWith(e){return this.#n.startsWith(e,this.#t)}match(e){if(!e.sticky)throw Error(`RegExp ${e} does not have a sticky 'y' flag`);return e.lastIndex=this.#t,this.#n.match(e)}};function v(e){return{ok:!0,body:e}}function y(){return{ok:!1}}function b(e,t={__proto__:null}){return e.reduceRight((e,t)=>({[t]:e}),t)}function x(e){return typeof e==`object`&&!!e}function S(e,t){let n=t[0];if(!n)throw Error(`Cannot parse the TOML: key length is not a positive number`);return e[n]}function ne(e,t){let{keys:n,type:r,value:i}=t,a=S(e,n);if(a===void 0)return Object.assign(e,b(n,i));if(Array.isArray(a))return C(a.at(-1),{type:r,keys:n.slice(1),value:i}),e;if(x(a))return C(a,{type:r,keys:n.slice(1),value:i}),e;throw Error(`Unexpected assign`)}function re(e,t){let{type:n,keys:r,value:i}=t,a=S(e,r);if(a===void 0)return Object.assign(e,b(r,[i]));if(Array.isArray(a))return t.keys.length===1?a.push(i):C(a.at(-1),{type:t.type,keys:t.keys.slice(1),value:t.value}),e;if(x(a))return C(a,{type:n,keys:r.slice(1),value:i}),e;throw Error(`Unexpected assign`)}function C(e,t){switch(t.type){case`Block`:return d(e,t.value);case`Table`:return ne(e,t);case`TableArray`:return re(e,t)}}function w(e){return t=>{for(let n of e){let e=n(t);if(e.ok)return e}return y()}}function ie(e,t){let n=D(t);return r=>{let i=[],a=e(r);if(!a.ok)return v(i);for(i.push(a.body);!r.eof()&&n(r).ok;){let n=e(r);if(!n.ok)throw SyntaxError(`Invalid token after "${t}"`);i.push(n.body)}return v(i)}}function ae(e,t){let n=D(t);return r=>{let i=e(r);if(!i.ok)return y();let a=[i.body];for(;!r.eof()&&n(r).ok;){let n=e(r);if(!n.ok)throw SyntaxError(`Invalid token after "${t}"`);a.push(n.body)}return v(a)}}function oe(e,t,n){let r=D(t);return i=>{let a=i.position,o=e(i);if(!o.ok)return y();if(!r(i).ok)throw SyntaxError(`key/value pair doesn't have "${t}"`);let s=n(i);if(!s.ok){let e=i.source.indexOf(`
|
|
4
|
+
`,i.position),t=e>0?e:i.source.length,n=i.source.slice(a,t);throw SyntaxError(`Cannot parse value on line '${n}'`)}return v(b(o.body,s.body))}}function se(e){return t=>{let n=e(t);if(!n.ok)return y();let r={__proto__:null};for(let e of n.body)typeof e==`object`&&e&&(r=d(r,e));return v(r)}}function T(e){return t=>{let n=[];for(;!t.eof();){let r=e(t);if(!r.ok)break;n.push(r.body),t.nextUntilChar()}return n.length===0?y():v(n)}}function E(e,t,n){let r=D(e),i=D(n);return a=>{if(!r(a).ok)return y();let o=t(a);if(!o.ok)throw SyntaxError(`Invalid token after "${e}"`);if(!i(a).ok)throw SyntaxError(`Not closed by "${n}" after started with "${e}"`);return v(o.body)}}function D(e){return t=>(t.skipWhitespaces(),t.startsWith(e)?(t.next(e.length),t.skipWhitespaces(),v(void 0)):y())}const ce=/[A-Za-z0-9_-]+/y;function le(e){e.skipWhitespaces();let t=e.match(ce)?.[0];return t?(e.next(t.length),v(t)):y()}function O(e){if(e.char()!==`\\`)return y();switch(e.next(),e.char()){case`b`:return e.next(),v(`\b`);case`t`:return e.next(),v(` `);case`n`:return e.next(),v(`
|
|
5
|
+
`);case`f`:return e.next(),v(`\f`);case`r`:return e.next(),v(`\r`);case`u`:case`U`:{let t=e.char()===`u`?4:6,n=parseInt(`0x`+e.slice(1,1+t),16),r=String.fromCodePoint(n);return e.next(t+1),v(r)}case`"`:return e.next(),v(`"`);case`\\`:return e.next(),v(`\\`);default:throw SyntaxError(`Invalid escape sequence: \\${e.char()}`)}}function k(e){if(e.skipWhitespaces(),e.char()!==`"`)return y();e.next();let t=[];for(;e.char()!==`"`&&!e.eof();){if(e.char()===`
|
|
6
|
+
`)throw SyntaxError(`Single-line string cannot contain EOL`);let n=O(e);n.ok?t.push(n.body):(t.push(e.char()),e.next())}if(e.eof())throw SyntaxError(`Single-line string is not closed:\n${t.join(``)}`);return e.next(),v(t.join(``))}function A(e){if(e.skipWhitespaces(),e.char()!==`'`)return y();e.next();let t=[];for(;e.char()!==`'`&&!e.eof();){if(e.char()===`
|
|
7
|
+
`)throw SyntaxError(`Single-line string cannot contain EOL`);t.push(e.char()),e.next()}if(e.eof())throw SyntaxError(`Single-line string is not closed:\n${t.join(``)}`);return e.next(),v(t.join(``))}function ue(e){if(e.skipWhitespaces(),!e.startsWith(`"""`))return y();e.next(3),e.char()===`
|
|
8
|
+
`?e.next():e.startsWith(`\r
|
|
9
|
+
`)&&e.next(2);let t=[];for(;!e.startsWith(`"""`)&&!e.eof();){if(e.startsWith(`\\
|
|
10
|
+
`)){e.next(),e.nextUntilChar({skipComments:!1});continue}else if(e.startsWith(`\\\r
|
|
11
|
+
`)){e.next(),e.nextUntilChar({skipComments:!1});continue}let n=O(e);n.ok?t.push(n.body):(t.push(e.char()),e.next())}if(e.eof())throw SyntaxError(`Multi-line string is not closed:\n${t.join(``)}`);return e.char(3)===`"`&&(t.push(`"`),e.next()),e.next(3),v(t.join(``))}function j(e){if(e.skipWhitespaces(),!e.startsWith(`'''`))return y();e.next(3),e.char()===`
|
|
12
|
+
`?e.next():e.startsWith(`\r
|
|
13
|
+
`)&&e.next(2);let t=[];for(;!e.startsWith(`'''`)&&!e.eof();)t.push(e.char()),e.next();if(e.eof())throw SyntaxError(`Multi-line string is not closed:\n${t.join(``)}`);return e.char(3)===`'`&&(t.push(`'`),e.next()),e.next(3),v(t.join(``))}const M=/(?:true|false)\b/y;function N(e){e.skipWhitespaces();let t=e.match(M);if(!t)return y();let n=t[0];return e.next(n.length),v(n===`true`)}const P=new Map([[`inf`,1/0],[`+inf`,1/0],[`-inf`,-1/0]]),F=/[+-]?inf\b/y;function I(e){e.skipWhitespaces();let t=e.match(F);if(!t)return y();let n=t[0];return e.next(n.length),v(P.get(n))}const L=/[+-]?nan\b/y;function R(e){e.skipWhitespaces();let t=e.match(L);if(!t)return y();let n=t[0];return e.next(n.length),v(NaN)}const z=ae(w([le,k,A]),`.`),B=/0b[01]+(?:_[01]+)*\b/y;function V(e){e.skipWhitespaces();let t=e.match(B)?.[0];if(!t)return y();e.next(t.length);let n=t.slice(2).replaceAll(`_`,``),r=parseInt(n,2);return isNaN(r)?y():v(r)}const H=/0o[0-7]+(?:_[0-7]+)*\b/y;function U(e){e.skipWhitespaces();let t=e.match(H)?.[0];if(!t)return y();e.next(t.length);let n=t.slice(2).replaceAll(`_`,``),r=parseInt(n,8);return isNaN(r)?y():v(r)}const de=/0x[0-9a-f]+(?:_[0-9a-f]+)*\b/iy;function fe(e){e.skipWhitespaces();let t=e.match(de)?.[0];if(!t)return y();e.next(t.length);let n=t.slice(2).replaceAll(`_`,``),r=parseInt(n,16);return isNaN(r)?y():v(r)}const pe=/[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)\b/y;function me(e){e.skipWhitespaces();let t=e.match(pe)?.[0];if(!t)return y();e.next(t.length);let n=t.replaceAll(`_`,``);return v(parseInt(n,10))}const he=/[+-]?(?:0|[1-9][0-9]*(?:_[0-9]+)*)(?:\.[0-9]+(?:_[0-9]+)*)?(?:e[+-]?[0-9]+(?:_[0-9]+)*)?\b/iy;function ge(e){e.skipWhitespaces();let t=e.match(he)?.[0];if(!t)return y();e.next(t.length);let n=t.replaceAll(`_`,``),r=parseFloat(n);return isNaN(r)?y():v(r)}const _e=/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})(?:[ 0-9TZ.:+-]+)?\b/y;function W(e){e.skipWhitespaces();let t=e.match(_e);if(!t)return y();let n=t[0];e.next(n.length);let r=t.groups;if(r.month==`02`){let e=parseInt(r.day);if(e>29)throw SyntaxError(`Invalid date string "${t}"`);let n=parseInt(r.year);if(e>28&&!te(n))throw SyntaxError(`Invalid date string "${t}"`)}let i=new Date(n.trim());if(isNaN(i.getTime()))throw SyntaxError(`Invalid date string "${t}"`);return v(i)}const ve=/(\d{2}):(\d{2}):(\d{2})(?:\.[0-9]+)?\b/y;function ye(e){e.skipWhitespaces();let t=e.match(ve)?.[0];return t?(e.next(t.length),v(t)):y()}function be(e){if(e.skipWhitespaces(),e.char()!==`[`)return y();e.next();let t=[];for(;!e.eof();){e.nextUntilChar();let n=G(e);if(!n.ok||(t.push(n.body),e.skipWhitespaces(),e.char()!==`,`))break;e.next()}if(e.nextUntilChar(),e.char()!==`]`)throw SyntaxError(`Array is not closed`);return e.next(),v(t)}function xe(e){if(e.nextUntilChar(),e.char(1)===`}`)return e.next(2),v({__proto__:null});let t=E(`{`,ie(K,`,`),`}`)(e);if(!t.ok)return y();let n={__proto__:null};for(let e of t.body)n=d(n,e);return v(n)}const G=w([ue,j,k,A,N,I,R,W,ye,V,U,fe,ge,me,be,xe]),K=oe(z,`=`,G);function q(e){e.nextUntilChar();let t=se(T(K))(e);return t.ok?v({type:`Block`,value:t.body}):y()}const Se=E(`[`,z,`]`);function Ce(e){e.nextUntilChar();let t=Se(e);if(!t.ok)return y();e.nextUntilChar();let n=q(e);return v({type:`Table`,keys:t.body,value:n.ok?n.body.value:{__proto__:null}})}const we=E(`[[`,z,`]]`);function Te(e){e.nextUntilChar();let t=we(e);if(!t.ok)return y();e.nextUntilChar();let n=q(e);return v({type:`TableArray`,keys:t.body,value:n.ok?n.body.value:{__proto__:null}})}function Ee(e){let t=T(w([q,Te,Ce]))(e);return t.ok?v(t.body.reduce(C,{__proto__:null})):v({__proto__:null})}function J(e,t){let n=e.source.slice(0,e.position).split(`
|
|
14
|
+
`);return`Parse error on line ${n.length}, column ${n.at(-1)?.length??0}: ${t}`}function De(e){return t=>{let n=new _(t);try{let t=e(n);if(t.ok&&n.eof())return t.body;let r=`Unexpected character: "${n.char()}"`;throw SyntaxError(J(n,r))}catch(e){throw e instanceof Error?SyntaxError(J(n,e.message)):SyntaxError(J(n,`Invalid error type caught`))}}}function Oe(e){return De(Ee)(e)}const ke={ctx_execute:!0,ctx_batch_execute:!0};function Ae(e,t){return ke[e]?e!==`ctx_execute`||t.language===`shell`:!1}function je(e,t){if(Ae(e,t)){if(e===`ctx_execute`)return typeof t.code==`string`?t.code:void 0;if(Array.isArray(t.commands))return t.commands.map(e=>typeof e==`object`&&e?e.command:``).filter(e=>typeof e==`string`).join(`
|
|
15
|
+
`)}}const Y=new Map;function Me(e,t){if(!t||t.length===0)return!0;let n=t.split(`|`).map(e=>e.trim()).filter(Boolean).join(`|`);if(n.length===0)return!0;let r=Y.get(n);if(r!==void 0)return r.test(e);let i=RegExp(`^(?:${n})$`);return Y.set(n,i),i.test(e)}function Ne(e){return{session_id:e(),agent_id:null}}const X=c.Record({key:c.String,value:c.Array(c.String)}).pipe(c.brand(`TomlConfig`)),Pe=c.transformOrFail(c.String,c.typeSchema(X),{strict:!0,decode:e=>o.try({try:()=>Oe(e),catch:e=>new o.Unexpected(e,`TOML parse error`)}).pipe(o.flatMap(e=>o.decodeUnknown(X)(e))),encode:(e,t,n)=>o.fail(new o.Forbidden(n,e,`TomlConfigFromText is decode-only`))}),Z=`systemfsoftware.toml`,Q=c.decodeSync(X)({});var $=class extends t.Tag(`TomlLoader`)(){};const Fe=r.effect($,n.gen(function*(){let t=yield*s.make(i.empty()),r=yield*e,o=yield*l;return $.of({load:n.fn(`TomlLoader.load`)(function*(e){let l=yield*s.get(t),u=i.get(l,e);if(a.isSome(u))return u.value;let d=o.join(e,Z);if(!(yield*r.exists(d)))return yield*s.update(t,t=>(i.set(t,e,Q),t)),Q;let f=yield*r.readFileString(d).pipe(n.flatMap(c.decodeUnknown(Pe)),n.tapError(e=>n.logError(`[toml-loader] malformed ${Z} at ${d} — failing open, which voids EVERY key in the file, not just the malformed one`,e)),n.catchAll(()=>n.succeed(Q)));return yield*s.update(t,t=>(i.set(t,e,f),t)),f})})})),Ie={Write:!0,Edit:!0,Read:!0,MultiEdit:!0,Update:!0,Create:!0},Le={Edit:!0,MultiEdit:!0,Update:!0};function Re(e){return Array.isArray(e)&&e.length>0&&e.every(e=>typeof e==`object`&&!!e&&(`new_text`in e||`old_text`in e))}function ze(e,t){let n=t;if(Ie[e]===!0&&`path`in n&&!(`file_path`in n)){let{path:e,...t}=n;n={file_path:e,...t}}if(Le[e]===!0&&`edits`in n&&Re(n.edits)&&!(`new_string`in n)){let e=n.edits.map(e=>({old_string:typeof e.old_text==`string`?e.old_text:``,new_string:typeof e.new_text==`string`?e.new_text:``}));n={...n,edits:e,old_string:e.map(e=>e.old_string).join(`
|
|
16
|
+
`),new_string:e.map(e=>e.new_string).join(`
|
|
17
|
+
`)}}return n}function Be(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}export{ze as a,Me as i,Fe as n,Be as o,je as r,Ne as s,$ as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,i as t,o as n,r,s as i}from"./dist-spu_CyKU.js";import{Command as a}from"@effect/platform";import{CommandExecutor as o}from"@effect/platform/CommandExecutor";import{FileSystem as s}from"@effect/platform/FileSystem";import{Effect as c,Either as l,Match as u,Option as d,Schema as f,Stream as p}from"effect";import{homedir as m}from"node:os";f.Struct({code:f.Number,stdout:f.String,stderr:f.String});var h=class extends f.TaggedClass()(`Block`,{reason:f.String}){},g=class extends f.TaggedClass()(`Allow`,{}){},_=class extends f.TaggedClass()(`Warning`,{message:f.String}){};f.Union(h,g,_);var v=class extends f.TaggedClass()(`Blocked`,{reason:f.String}){},y=class extends f.TaggedClass()(`Continue`,{warning:f.optional(f.String),updatedInput:f.optional(f.Record({key:f.String,value:f.Unknown}))}){};f.Union(v,y);const b=f.Struct({decision:f.optional(f.String),reason:f.optional(f.String),hookSpecificOutput:f.optional(f.Struct({permissionDecision:f.optional(f.String),permissionDecisionReason:f.optional(f.String),updatedInput:f.optional(f.Record({key:f.String,value:f.Unknown}))}))}),x=f.decodeUnknownEither(f.parseJson(b)),S=f.Struct({type:f.Literal(`command`),command:f.String,async:f.optional(f.Boolean),timeout:f.optional(f.Number)}),C=f.Struct({matcher:f.optional(f.String),hooks:f.Array(S)}),w=f.Struct({PreToolUse:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]}),PostToolUse:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]}),UserPromptSubmit:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]}),Stop:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]}),SessionStart:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]}),SessionEnd:f.optionalWith(f.Array(C),{exact:!0,default:()=>[]})}),T=f.Struct({hooks:w,disableAllHooks:f.optional(f.Boolean)}),E=f.Struct({...w.fields,disableAllHooks:f.optional(f.Boolean)}),D=f.Union(T,E),O=f.decodeUnknownEither(D);function k(e){return l.map(O(e),e=>{if(`hooks`in e)return e;let{disableAllHooks:t,...n}=e;return{hooks:n,disableAllHooks:t}})}const A=[`PreToolUse`,`PostToolUse`,`UserPromptSubmit`,`SessionStart`,`SessionEnd`,`Stop`];function j(e){let t={hooks:{PreToolUse:[],PostToolUse:[],UserPromptSubmit:[],SessionStart:[],SessionEnd:[],Stop:[]}};for(let n of e){for(let e of A)t.hooks[e]=(t.hooks[e]??[]).concat(Array.from(n.hooks[e]));n.disableAllHooks!==void 0&&(t.disableAllHooks=n.disableAllHooks)}return t}function M(e){return e.disableAllHooks===!0}var N=class extends f.TaggedError()(`HookVerdictError`,{raw:f.String}){},P=class extends f.TaggedClass()(`ExitBlock`,{}){},F=class extends f.TaggedClass()(`ExitParse`,{}){},I=class extends f.TaggedClass()(`ExitOther`,{}){};f.Union(P,F,I);const L=e=>u.value(e).pipe(u.when(2,()=>new P({})),u.when(0,()=>new F({})),u.orElse(()=>new I({}))),R=(e,t)=>u.value(e.trim()).pipe(u.when(``,()=>`Blocked by ${t} hook`),u.orElse(e=>e)),z=(e,t)=>u.value(e.hookSpecificOutput?.permissionDecision??e.decision).pipe(u.when(`deny`,()=>new h({reason:e.hookSpecificOutput?.permissionDecisionReason??`Blocked by ${t} hook`})),u.when(`block`,()=>new h({reason:e.reason??`Blocked by ${t} hook`})),u.orElse(()=>new g({}))),B=e=>u.value(e.trim()).pipe(u.when(``,()=>new g({})),u.orElse(e=>new _({message:e}))),V=(e,t)=>u.value(L(e.code)).pipe(u.tag(`ExitBlock`,()=>l.right(new h({reason:R(e.stderr,t)}))),u.tag(`ExitParse`,()=>l.match(x(e.stdout),{onLeft:()=>l.left(new N({raw:e.stdout})),onRight:e=>l.right(z(e,t))})),u.tag(`ExitOther`,()=>l.right(B(e.stderr))),u.exhaustive);function H(e,t){let n=e.replace(/"\$OMP_PROJECT_DIR"|'\$OMP_PROJECT_DIR'/g,JSON.stringify(t)).replace(/"\$\{OMP_PROJECT_DIR\}"|'\$\{OMP_PROJECT_DIR\}'/g,JSON.stringify(t)).replace(/"\$CLAUDE_PROJECT_DIR"|'\$CLAUDE_PROJECT_DIR'/g,JSON.stringify(t)).replace(/"\$\{CLAUDE_PROJECT_DIR\}"|'\$\{CLAUDE_PROJECT_DIR\}'/g,JSON.stringify(t)).replace(/\$OMP_PROJECT_DIR|\$\{OMP_PROJECT_DIR\}/g,JSON.stringify(t)).replace(/\$CLAUDE_PROJECT_DIR|\$\{CLAUDE_PROJECT_DIR\}/g,JSON.stringify(t)).trim();return{cmd:`sh`,args:[`-c`,n.startsWith(`"`)&&n.endsWith(`"`)?n.slice(1,-1):n]}}const U=c.fn(`loadSettingsFile`)(function*(e){let t=yield*(yield*s).readFileString(e).pipe(c.catchAll(()=>c.succeed(``)));if(t===``)return null;let n=f.decodeUnknownEither(f.parseJson(f.Record({key:f.String,value:f.Unknown})))(t);if(l.isLeft(n))return null;let r=n.right,i=k(r);return l.isLeft(i)?null:i.right}),W=c.fn(`loadSettings`)(function*(e){let t=[`${m()}/.claude/settings.json`,`${e}/.claude/settings.json`,`${e}/.claude/settings.local.json`,`/etc/claude-code/managed-settings.json`];return yield*G(t)}),G=c.fn(`loadSettingsWithPaths`)(function*(e){let t=[];for(let n of e){let e=yield*U(n);e!==null&&t.push(e)}return t.length===0?null:j(t)}),K=c.fn(`runHookScript`)(function*(e,t,n,r){let i=yield*o,{cmd:s,args:l}=H(e,n),u=JSON.stringify(t),d=a.make(s,...l).pipe(a.workingDirectory(n),a.env({OMP_PROJECT_DIR:n,CLAUDE_PROJECT_DIR:n}),a.feed(u),a.stdout(`pipe`),a.stderr(`pipe`));return yield*c.scoped(c.gen(function*(){let e=yield*i.start(d),t=yield*e.stdout.pipe(p.decodeText(),p.mkString),n=yield*e.stderr.pipe(p.decodeText(),p.mkString),r=yield*e.exitCode;return{code:typeof r==`number`?r:Number(r),stdout:t,stderr:n}})).pipe(c.timeout(r),c.catchTag(`TimeoutException`,()=>c.succeed({code:-1,stdout:``,stderr:`timeout after ${r}ms`})))}),q=c.fn(`runHooksForEvent`)(function*(e,n,r,i,a){let o=i.cwd,s,f=!1,p=r;for(let r of e)if(t(n,r.matcher))for(let e of r.hooks){let t=(e.timeout??10)*1e3;if(e.async){yield*c.forkDaemon(K(e.command,p,o,t));continue}let n=yield*K(e.command,p,o,t),r=V(n,a),i=l.match(r,{onLeft:e=>u.value(e).pipe(u.tag(`HookVerdictError`,e=>new _({message:`Hook exited 0 but produced invalid JSON: ${e.raw.slice(0,200)}`})),u.exhaustive),onRight:e=>e}),m=u.value(i).pipe(u.tag(`Block`,e=>new v({reason:e.reason})),u.tag(`Warning`,e=>new y({warning:e.message})),u.tag(`Allow`,()=>{let e=x(n.stdout);return new y({updatedInput:l.isRight(e)?e.right.hookSpecificOutput?.updatedInput:void 0})}),u.exhaustive),h=u.value(m).pipe(u.tag(`Blocked`,e=>d.some({block:!0,reason:e.reason})),u.tag(`Continue`,e=>(e.warning!==void 0&&s===void 0&&(s=e.warning),e.updatedInput!==void 0&&(p={...p,...e.updatedInput},f=!0),d.none())),u.exhaustive);if(d.isSome(h))return h.value}return{...f?{updatedInput:p}:{},...s===void 0?{}:{warning:s}}}),J=c.fn(`runPreToolUseHooks`)(function*(t,a,o){if(M(t))return;let s=n(a.toolName),c=i(()=>o.sessionManager.getSessionId()),l={...c,tool_name:s,tool_input:e(s,a.input),tool_call_id:a.toolCallId},u=r(a.toolName,a.input);if(u!==void 0&&u.length>0){let e={...c,tool_name:`Bash`,tool_input:{command:u},tool_call_id:a.toolCallId},n=yield*q(t.hooks.PreToolUse,`Bash`,e,o,`PreToolUse`);if(n.block)return n.reason===void 0?{block:!0}:{block:!0,reason:n.reason}}let d=yield*q(t.hooks.PreToolUse,s,l,o,`PreToolUse`);if(d.block)return d.reason===void 0?{block:!0}:{block:!0,reason:d.reason};if(d.updatedInput&&typeof d.updatedInput==`object`&&`tool_input`in d.updatedInput&&d.updatedInput.tool_input&&typeof d.updatedInput.tool_input==`object`){let e=d.updatedInput.tool_input;for(let[t,n]of Object.entries(e))a.input[t]=n}}),Y=c.fn(`runPostToolUseHooks`)(function*(t,r,a){let o=n(r.toolName);if(M(t))return;let s={...i(()=>a.sessionManager.getSessionId()),tool_name:o,tool_input:e(o,r.input),tool_call_id:r.toolCallId,output:r.content,is_error:r.isError??!1};return yield*q(t.hooks.PostToolUse,o,s,a,`PostToolUse`)}),X=c.fn(`runUserPromptSubmitHooks`)(function*(e,t,n){let r=e.hooks.UserPromptSubmit;if(M(e)||r.length===0)return;let a=n.cwd,o=``,s={...i(()=>n.sessionManager.getSessionId()),prompt:t.text,source:t.source};for(let e of r)for(let t of e.hooks){let e=yield*K(t.command,s,a,(t.timeout??10)*1e3);if(e.code!==0)continue;let n=e.stdout.trim();n.length>0&&(o+=(o.length>0?`
|
|
2
|
+
|
|
3
|
+
`:``)+n)}if(o.length===0)return;let c={text:`${o}\n\n${t.text}`};return t.images!==void 0&&(c.images=t.images),c}),Z=c.fn(`runSessionStartHooks`)(function*(e,n,r){if(M(e))return;let a=e.hooks.SessionStart;if(a.length===0)return;let o=r.cwd,s={...i(()=>r.sessionManager.getSessionId()),reason:n};for(let e of a)if(!(e.matcher&&!t(n,e.matcher)))for(let t of e.hooks){let e=(t.timeout??10)*1e3;if(t.async){yield*c.forkDaemon(K(t.command,s,o,e));continue}yield*K(t.command,s,o,e)}}),Q=c.fn(`runLifecycleHooks`)(function*(e,t){if(e.length===0)return;let n=t.cwd,r={...i(()=>t.sessionManager.getSessionId())};for(let t of e)for(let e of t.hooks){let t=(e.timeout??10)*1e3;e.async?yield*c.forkDaemon(K(e.command,r,n,t)):yield*K(e.command,r,n,t)}});export{W as loadSettings,Q as runLifecycleHooks,Y as runPostToolUseHooks,J as runPreToolUseHooks,Z as runSessionStartHooks,X as runUserPromptSubmitHooks};
|