@rulemetric/cli 0.12.5 → 0.12.7
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-2TJ7Q2OU.js +1 -0
- package/dist/{chunk-VEFLUZH5.js → chunk-3DZD322E.js} +1 -1
- package/dist/{chunk-A5P3RCPI.js → chunk-5N5S3NKS.js} +1 -1
- package/dist/{chunk-RUTWW6N6.js → chunk-C6GLNE6X.js} +1 -1
- package/dist/{chunk-2MD5QLYF.js → chunk-CPDMJGTC.js} +1 -1
- package/dist/{chunk-Y3BYR4M7.js → chunk-DCH3QWB7.js} +1 -1
- package/dist/chunk-EVD5A3VI.js +1 -0
- package/dist/{chunk-7PWPWJXC.js → chunk-FUYR7CFD.js} +1 -1
- package/dist/{chunk-R6MCQNSH.js → chunk-INSKP5ED.js} +1 -1
- package/dist/{chunk-EHNPJJIH.js → chunk-NVABG3AO.js} +1 -1
- package/dist/chunk-OZQNSELV.js +31 -0
- package/dist/{chunk-GCLTMV7V.js → chunk-PVPYLKB3.js} +1 -1
- package/dist/{chunk-YXNAGHHQ.js → chunk-RLEMDKQ4.js} +1 -1
- package/dist/chunk-TYFEWLYZ.js +2 -0
- package/dist/{chunk-BXFDEQCX.js → chunk-UKOI2Q4J.js} +1 -1
- package/dist/chunk-UUFCTEBT.js +1 -0
- package/dist/chunk-VS5ROGDP.js +1 -0
- package/dist/{chunk-2DWUGAJ4.js → chunk-WO6MS654.js} +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/evals/agent.js +1 -1
- package/dist/commands/evals/refine-cases.js +1 -1
- package/dist/commands/gateway/ensure.js +1 -1
- package/dist/commands/hooks/install.js +1 -1
- package/dist/commands/hooks/uninstall.js +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/suggestions/accept.js +1 -1
- package/dist/commands/suggestions/undo.js +1 -1
- package/dist/lib/agent-loop.js +1 -1
- package/dist/lib/antigravity-capture-status.js +1 -0
- package/dist/lib/claude-hook-timeouts.js +1 -0
- package/dist/lib/editor-proxy-pins.js +1 -1
- package/dist/lib/evolution-enrolment.js +1 -1
- package/dist/lib/hooks-config.js +1 -1
- package/dist/lib/instructions/acceptance/accept-hook.js +1 -1
- package/dist/lib/instructions/acceptance/hook-install.js +1 -1
- package/dist/lib/instructions/acceptance/reverse-applications.js +1 -1
- package/dist/lib/instructions/acceptance/suggestion-accept.js +1 -1
- package/dist/lib/jobs/handlers/cron-auto-accept-suggestions.js +1 -1
- package/dist/lib/jobs/handlers/cron-instruction-evolution.js +1 -1
- package/dist/lib/jobs/handlers/cron-refine-cases.js +1 -1
- package/dist/lib/jobs/handlers/process-insights.js +1 -1
- package/dist/lib/mac-sleep-log.js +1 -0
- package/dist/lib/machine-pause-detector.js +1 -0
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/refine-cases.js +1 -1
- package/dist/lib/setup-steps.js +1 -1
- package/oclif.manifest.json +326 -326
- package/package.json +8 -8
- package/dist/chunk-3QXRLIGC.js +0 -31
- package/dist/chunk-7R3WWD7V.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulemetric/cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.7",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -80,9 +80,9 @@
|
|
|
80
80
|
"postgres": "^3.4.0",
|
|
81
81
|
"react": "^19.0.0",
|
|
82
82
|
"zod": "^3.24.0",
|
|
83
|
-
"@rulemetric/hooks": "0.12.
|
|
84
|
-
"@rulemetric/proxy": "0.12.
|
|
85
|
-
"@rulemetric/skills-registry": "0.12.
|
|
83
|
+
"@rulemetric/hooks": "0.12.7",
|
|
84
|
+
"@rulemetric/proxy": "0.12.7",
|
|
85
|
+
"@rulemetric/skills-registry": "0.12.7"
|
|
86
86
|
},
|
|
87
87
|
"//deps": "Worker (`evals agent`) runtime deps: the @opentelemetry/* set, @sentry/node, and postgres are STATIC top-level imports loaded at worker startup (via bundled @rulemetric/{telemetry,db}) — they MUST be runtime deps or a clean `npm i -g` crashes with ModuleLoadError. `better-sqlite3` is optionalDependencies (below): it's a native module, lazy `require()`'d inside a try/catch (packages/session providers cursor/opencode) so a missing binary degrades gracefully — making it a hard dep would break `npm i -g` on platforms without prebuilt binaries. `resend` stays a devDep: lazy `await import('resend')` guarded by RESEND_API_KEY, which end-user workers never set (provider falls back to noop). Classification verified via import-graph scan of dist/commands/evals/agent.js + per-importer static/lazy check.",
|
|
88
88
|
"optionalDependencies": {
|
|
@@ -102,14 +102,14 @@
|
|
|
102
102
|
"tsx": "^4.19.0",
|
|
103
103
|
"typescript": "^5.9.0",
|
|
104
104
|
"vitest": "^3.2.0",
|
|
105
|
+
"@rulemetric/api": "0.0.1",
|
|
105
106
|
"@rulemetric/core": "0.0.1",
|
|
106
|
-
"@rulemetric/db": "0.0.1",
|
|
107
107
|
"@rulemetric/effectiveness": "0.0.1",
|
|
108
|
-
"@rulemetric/email": "0.0.1",
|
|
109
108
|
"@rulemetric/session": "0.2.1",
|
|
109
|
+
"@rulemetric/email": "0.0.1",
|
|
110
110
|
"@rulemetric/telemetry": "0.0.1",
|
|
111
|
-
"@rulemetric/
|
|
112
|
-
"@rulemetric/
|
|
111
|
+
"@rulemetric/db": "0.0.1",
|
|
112
|
+
"@rulemetric/typescript-config": "0.0.0"
|
|
113
113
|
},
|
|
114
114
|
"scripts": {
|
|
115
115
|
"build": "node scripts/build.mjs",
|
package/dist/chunk-3QXRLIGC.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import{f as x}from"./chunk-HFGO5762.js";import{a as r}from"./chunk-ZLLER3HP.js";import{execSync as h}from"node:child_process";import{existsSync as c,mkdirSync as y,readFileSync as p,writeFileSync as a,unlinkSync as S,copyFileSync as $}from"node:fs";import{homedir as f}from"node:os";import{join as i,dirname as N}from"node:path";function q(t,e=f()){let o=["claude_code"];return c(i(e,".codex"))&&o.push("codex"),c(i(t,".cursor"))&&o.push("cursor"),c(i(t,".github"))&&o.push("copilot_agent"),c(i(t,".agents"))&&o.push("antigravity"),o}r(q,"detectInstalledTools");function U(t){let e=t?`PATH="${t}:$PATH" `:"",o=r(n=>({command:`${e}rulemetric hooks run ${n}`}),"cmd");return{version:1,hooks:{sessionStart:[o("session-start")],beforeSubmitPrompt:[o("user-prompt")],afterFileEdit:[o("post-tool-use")],beforeShellExecution:[o("post-tool-use")],afterShellExecution:[o("post-tool-use")],beforeMCPExecution:[o("post-tool-use")],afterMCPExecution:[o("post-tool-use")],afterAgentResponse:[o("assistant-response")],stop:[o("post-tool-use")],sessionEnd:[o("session-end")]}}}r(U,"generateCursorHooksConfig");function L(t){let e=t?`PATH="${t}:$PATH" `:"",o=r(n=>({type:"command",bash:`${e}rulemetric hooks run ${n}`}),"cmd");return{version:1,hooks:{sessionStart:[o("session-start")],userPromptSubmitted:[o("user-prompt")],postToolUse:[o("post-tool-use")],sessionEnd:[o("session-end")]}}}r(L,"generateCopilotHooksConfig");function B(t){let e=t?`PATH="${t}:$PATH" `:"",o=r(n=>({type:"command",command:`${e}rulemetric hooks run ${n}`}),"mk");return{SessionStart:[{hooks:[o("session-start")]}],UserPromptSubmit:[{hooks:[o("user-prompt")]}],PostToolUse:[{matcher:".*",hooks:[o("post-tool-use")]}],SessionEnd:[{hooks:[o("session-end")]}]}}r(B,"generateClaudeCodeHooksConfig");function J(t){if(!c(t))return{settings:{},recoveredBackup:null};let e=p(t,"utf-8");try{return{settings:JSON.parse(e),recoveredBackup:null}}catch{let o=`${t}.corrupt.bak`;return a(o,e),{settings:{},recoveredBackup:o}}}r(J,"readClaudeSettings");function b(t,e){y(N(t),{recursive:!0});let o=null;return c(t)&&(o=`${t}.bak`,$(t,o)),a(t,JSON.stringify(e,null,2)+`
|
|
2
|
-
`),{backupPath:o}}r(b,"writeClaudeSettingsWithBackup");function k(t){if(!c(t))return{};let e=p(t,"utf-8");try{return JSON.parse(e)}catch{try{a(`${t}.corrupt.bak`,e)}catch{}return null}}r(k,"readMergeableJson");function Q(t,e){let o=B(e),n=t.hooks??{};for(let[s,u]of Object.entries(o)){let l=n[s]??[];l.some(m=>m?.hooks?.some(d=>typeof d?.command=="string"&&d.command.includes("rulemetric")))||(n[s]=[...l,...u])}t.hooks=n}r(Q,"mergeClaudeCodeHooks");function Z(t){if(!t.hooks||typeof t.hooks!="object")return!1;let e=t.hooks;return Object.values(e).some(o=>Array.isArray(o)&&o.some(n=>n?.hooks?.some(s=>typeof s?.command=="string"&&s.command.includes("rulemetric"))))}r(Z,"hasRulemetricClaudeHooks");function D(t){if(!t.hooks||typeof t.hooks!="object")return!1;let e=t.hooks,o=0;for(let n of Object.keys(e)){let s=e[n];if(!Array.isArray(s))continue;let u=s.filter(l=>{let g=l?.hooks?.some(m=>typeof m?.command=="string"&&m.command.includes("rulemetric"));return g&&(o+=1),!g});u.length===0?delete e[n]:e[n]=u}return Object.keys(e).length===0&&delete t.hooks,o>0}r(D,"removeClaudeCodeHooks");var X="localhost,127.0.0.1,*.supabase.co,*.supabase.in";function tt(t,e){return i(t,e?"settings.json":"settings.local.json")}r(tt,"claudeSettingsInstallPath");function M(t,e){let o=t.env;if(!o||typeof o!="object")return!1;let n=!1,s=o.HTTPS_PROXY;(s===`http://localhost:${e}`||s===`http://127.0.0.1:${e}`)&&(delete o.HTTPS_PROXY,n=!0),o.NO_PROXY===X&&(delete o.NO_PROXY,n=!0);let u=o.NODE_EXTRA_CA_CERTS;return typeof u=="string"&&u.includes(".mitmproxy")&&u.endsWith("mitmproxy-ca-cert.pem")&&(delete o.NODE_EXTRA_CA_CERTS,n=!0),n&&Object.keys(o).length===0&&delete t.env,n}r(M,"removeRulemetricProxyEnv");function C(t,e){let o=D(t),n=M(t,e),s=x(t);return{removedHooks:o,removedProxyEnv:n,removedStatusline:s,removed:o||n||s}}r(C,"removeRulemetricMachineState");function et(t,e){let o={migrated:!1,backupPath:null,removedHooks:!1,removedProxyEnv:!1,removedStatusline:!1,removed:!1};if(!c(t))return o;let n;try{n=JSON.parse(p(t,"utf-8"))}catch{return o}let s=C(n,e);if(!s.removed)return o;let{backupPath:u}=b(t,n);return{...s,migrated:!0,backupPath:u}}r(et,"migrateSharedClaudeSettings");function ot(t,e){let o=[];for(let n of["settings.json","settings.local.json"]){let s=i(t,n);if(!c(s))continue;let{settings:u,recoveredBackup:l}=J(s),g=C(u,e);g.removed&&b(s,u),o.push({...g,configPath:s,fileName:n,recoveredBackup:l,changed:g.removed})}return o}r(ot,"cleanClaudeSettingsFiles");function R(t,e){if(!c(t))return null;let o=i(t,"hooks.json"),n=U(e),s=k(o);if(s===null)return null;let u=s,l={...u.hooks??{}},g=r(d=>typeof d=="object"&&d!==null&&"command"in d&&typeof d.command=="string"&&d.command.includes("rulemetric"),"isRulemetricHook");for(let[d,w]of Object.entries(n.hooks)){let j=(l[d]??[]).filter(_=>!g(_));l[d]=[...j,...w]}let m={version:u.version??n.version,hooks:l};return a(o,JSON.stringify(m,null,2)+`
|
|
3
|
-
`),o}r(R,"writeCursorHooksToDir");function nt(t,e){return R(i(t,".cursor"),e)}r(nt,"writeCursorHooks");function rt(t,e=f()){let o=i(e,".cursor");return c(o)?R(o,t):null}r(rt,"writeCursorUserHooks");function st(t,e){let o=i(t,".github");if(!c(o))return null;let n=i(o,"hooks");y(n,{recursive:!0});let s=i(n,"rulemetric.json"),u=L(e);return a(s,JSON.stringify(u,null,2)+`
|
|
4
|
-
`),s}r(st,"writeCopilotHooks");function A(t){if(!c(t))return!1;let e;try{e=JSON.parse(p(t,"utf-8"))}catch{return!1}if(!e.hooks)return!1;let o=!1;for(let[n,s]of Object.entries(e.hooks)){let u=s.filter(l=>{if(typeof l!="object"||l===null||!("command"in l))return!0;let g=l.command;return typeof g=="string"&&g.includes("rulemetric")?(o=!0,!1):!0});u.length===0?delete e.hooks[n]:e.hooks[n]=u}return o&&a(t,JSON.stringify(e,null,2)+`
|
|
5
|
-
`),o}r(A,"removeCursorHooksFromFile");function it(t){return A(i(t,".cursor","hooks.json"))}r(it,"removeCursorHooks");function ut(){return A(i(f(),".cursor","hooks.json"))}r(ut,"removeCursorUserHooks");function ct(t,e,o){let n=i(t,".cursor");if(!c(n))return!1;let s=i(n,"settings.json"),u=k(s);return u===null?!1:(u["http.proxy"]=`http://localhost:${e}`,u["http.proxyStrictSSL"]=c(o),a(s,JSON.stringify(u,null,2)+`
|
|
6
|
-
`),!0)}r(ct,"writeCursorProxyConfig");function lt(t,e,o){let n=i(t,".vscode");if(!c(n))return!1;let s=i(n,"settings.json"),u=k(s);if(u===null)return!1;u["http.proxy"]=`http://localhost:${e}`,u["http.proxyStrictSSL"]=c(o);let l=u["github.copilot.advanced"]??{};return l["debug.overrideProxyUrl"]=`http://localhost:${e}`,u["github.copilot.advanced"]=l,a(s,JSON.stringify(u,null,2)+`
|
|
7
|
-
`),!0}r(lt,"writeVSCodeProxyConfig");function at(t){let e=i(t,".vscode","settings.json");if(!c(e))return!1;let o;try{o=JSON.parse(p(e,"utf-8"))}catch{return!1}let n=!1;o["http.proxy"]&&(delete o["http.proxy"],delete o["http.proxyStrictSSL"],n=!0);let s=o["github.copilot.advanced"];return s?.["debug.overrideProxyUrl"]&&(delete s["debug.overrideProxyUrl"],Object.keys(s).length===0&&delete o["github.copilot.advanced"],n=!0),n&&a(e,JSON.stringify(o,null,2)+`
|
|
8
|
-
`),n}r(at,"removeVSCodeProxyConfig");function gt(t){let e=i(t,".github","hooks","rulemetric.json");return c(e)?(S(e),!0):!1}r(gt,"removeCopilotHooks");var H="com.rulemetric.env";function P(){return i(f(),"Library","LaunchAgents",`${H}.plist`)}r(P,"getLaunchAgentPath");function ft(t,e){if(process.platform!=="darwin")return!1;let o=`http://localhost:${t}`;try{h(`launchctl setenv HTTPS_PROXY ${o}`,{stdio:"pipe"}),c(e)&&h(`launchctl setenv NODE_EXTRA_CA_CERTS ${e}`,{stdio:"pipe"})}catch{return!1}let n=P(),s=i(f(),"Library","LaunchAgents");y(s,{recursive:!0});let u=c(e)?`launchctl setenv NODE_EXTRA_CA_CERTS ${e};`:"",l=`if nc -z -w 1 127.0.0.1 ${t} 2>/dev/null; then launchctl setenv HTTPS_PROXY ${o};${u} else launchctl unsetenv HTTPS_PROXY; launchctl unsetenv NODE_EXTRA_CA_CERTS; fi`,g=`<?xml version="1.0" encoding="UTF-8"?>
|
|
9
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
|
10
|
-
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
11
|
-
<plist version="1.0">
|
|
12
|
-
<dict>
|
|
13
|
-
<key>Label</key>
|
|
14
|
-
<string>${H}</string>
|
|
15
|
-
<key>ProgramArguments</key>
|
|
16
|
-
<array>
|
|
17
|
-
<string>/bin/sh</string>
|
|
18
|
-
<string>-c</string>
|
|
19
|
-
<string>${l}</string>
|
|
20
|
-
</array>
|
|
21
|
-
<key>RunAtLoad</key>
|
|
22
|
-
<true/>
|
|
23
|
-
</dict>
|
|
24
|
-
</plist>
|
|
25
|
-
`;return a(n,g),!0}r(ft,"installMacOSProxyEnv");function dt(){if(process.platform!=="darwin")return!1;let t=!1;try{h("launchctl unsetenv HTTPS_PROXY",{stdio:"pipe"}),h("launchctl unsetenv NODE_EXTRA_CA_CERTS",{stdio:"pipe"})}catch{}let e=P();return c(e)&&(S(e),t=!0),t}r(dt,"uninstallMacOSProxyEnv");function O(){return process.platform==="darwin"?i(f(),"Library","Application Support","Code","User","settings.json"):process.platform==="win32"?i(process.env.APPDATA??"","Code","User","settings.json"):i(f(),".config","Code","User","settings.json")}r(O,"getVSCodeUserSettingsPath");function pt(t){let e=O();if(!c(i(e,"..")))return!1;let o=k(e);return o===null||o["http.proxy"]&&!o["http.proxy"].includes("localhost")?!1:(o["http.proxy"]=`http://localhost:${t}`,o["http.proxyStrictSSL"]=!1,a(e,JSON.stringify(o,null,2)+`
|
|
26
|
-
`),!0)}r(pt,"writeVSCodeUserProxyConfig");function mt(){let t=O();if(!c(t))return!1;let e;try{e=JSON.parse(p(t,"utf-8"))}catch{return!1}return e["http.proxy"]?.includes("localhost")?(delete e["http.proxy"],delete e["http.proxyStrictSSL"],a(t,JSON.stringify(e,null,2)+`
|
|
27
|
-
`),!0):!1}r(mt,"removeVSCodeUserProxyConfig");function T(){return process.platform==="darwin"?i(f(),"Library","Application Support","Cursor","User","settings.json"):process.platform==="win32"?i(process.env.APPDATA??"","Cursor","User","settings.json"):i(f(),".config","Cursor","User","settings.json")}r(T,"getCursorUserSettingsPath");function kt(t){let e=T();if(!c(i(e,"..")))return!1;let o=k(e);return o===null||o["http.proxy"]&&!o["http.proxy"].includes("localhost")?!1:(o["http.proxy"]=`http://localhost:${t}`,o["http.proxyStrictSSL"]=!1,a(e,JSON.stringify(o,null,2)+`
|
|
28
|
-
`),!0)}r(kt,"writeCursorUserProxyConfig");function ht(){let t=T();if(!c(t))return!1;let e;try{e=JSON.parse(p(t,"utf-8"))}catch{return!1}return e["http.proxy"]?.includes("localhost")?(delete e["http.proxy"],delete e["http.proxyStrictSSL"],a(t,JSON.stringify(e,null,2)+`
|
|
29
|
-
`),!0):!1}r(ht,"removeCursorUserProxyConfig");function F(){let t=process.execPath,e=process.argv[1];return e&&e.endsWith("run.js")?`${t} ${e}`:"rulemetric"}r(F,"getRulemetricCommand");function Y(){let t=F(),e=r(o=>({type:"command",command:`RULEMETRIC_HOOK_TOOL=antigravity ${t} hooks run ${o}`,timeout:30}),"mk");return{rulemetric:{enabled:!0,SessionStart:[{hooks:[e("session-start")]}],PostToolUse:[{matcher:".*",hooks:[e("post-tool-use")]}],SessionEnd:[{hooks:[e("session-end")]}]}}}r(Y,"generateAntigravityHooksConfig");function E(t){let e=i(t,"hooks.json"),o=k(e);if(o===null)return null;let n=Y(),s={...o,rulemetric:n.rulemetric};return y(t,{recursive:!0}),a(e,JSON.stringify(s,null,2)+`
|
|
30
|
-
`),e}r(E,"writeAntigravityHooksToDir");function yt(t){return E(i(t,".agents"))}r(yt,"writeAntigravityHooks");function vt(t=f()){let e=i(t,".gemini");return c(e)?E(i(e,"config")):null}r(vt,"writeAntigravityUserHooks");function v(t){if(!c(t))return!1;let e;try{e=JSON.parse(p(t,"utf-8"))}catch{return!1}if(!("rulemetric"in e))return!1;if(delete e.rulemetric,Object.keys(e).length===0)try{S(t)}catch{}else a(t,JSON.stringify(e,null,2)+`
|
|
31
|
-
`);return!0}r(v,"removeAntigravityHooksFromFile");function St(t){return v(i(t,".agents","hooks.json"))}r(St,"removeAntigravityHooks");function xt(){let t=v(i(f(),".gemini","config","hooks.json")),e=v(i(f(),".gemini","hooks.json"));return t||e}r(xt,"removeAntigravityUserHooks");export{q as a,U as b,L as c,B as d,J as e,b as f,Q as g,Z as h,D as i,X as j,tt as k,M as l,C as m,et as n,ot as o,nt as p,rt as q,st as r,it as s,ut as t,ct as u,lt as v,at as w,gt as x,ft as y,dt as z,O as A,pt as B,mt as C,T as D,kt as E,ht as F,Y as G,yt as H,vt as I,St as J,xt as K};
|
package/dist/chunk-7R3WWD7V.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as G}from"./chunk-2KJAM2NG.js";import{b as q}from"./chunk-IEQDLURA.js";import{a as M}from"./chunk-W67DO5PT.js";import{a as L}from"./chunk-2DWUGAJ4.js";import{a as B}from"./chunk-UTAETY5Z.js";import{b as N}from"./chunk-E4RGYYBC.js";import{a as V}from"./chunk-O65AQZYB.js";import{a as W}from"./chunk-ARC4Q3GL.js";import{a as x}from"./chunk-ZYGBABMZ.js";import{b as T}from"./chunk-5RBLIVBF.js";import{a as C}from"./chunk-5OX6YKTR.js";import{a as U}from"./chunk-R6MCQNSH.js";import{a as O}from"./chunk-UA5GEVGW.js";import{a as A}from"./chunk-PZS55PW2.js";import{a as K}from"./chunk-AKXGUQ5B.js";import{e as S}from"./chunk-Z4YVOVMM.js";import{b as D}from"./chunk-NKJTNGXR.js";import{a as P}from"./chunk-MJ5H7RDK.js";import{a as F}from"./chunk-RUTWW6N6.js";import{a as $}from"./chunk-S2SKT5PV.js";import{a as J}from"./chunk-GRPUY2EZ.js";import{a as y}from"./chunk-UXB6DRR7.js";import{l as R}from"./chunk-7PWPWJXC.js";import{d as H}from"./chunk-NF2BIEAF.js";import{b as E,e as I,f as _}from"./chunk-UGACB66X.js";import{a}from"./chunk-ZLLER3HP.js";var j={process_eval:M,process_insights:L,process_launch:N,process_send_message:x,process_conversation:P,process_session_goal:C,distill_memories:D,memory_ab:V,process_run_cleanup:W,cron_refine_cases:U,cron_retire_unused_skills:K,cron_reconcile_attribution:y,cron_suggest_instructions:S,cron_refresh_skills:A,cron_refresh_pricing:O,cron_eval_autorun:$,cron_auto_accept_suggestions:F,cron_instruction_training:J,cron_instruction_evolution:R,process_judge_review:B},Q=Object.keys(j),ne=new Set([]);function re(e=process.env){return e.DATABASE_URL?Q:Q.filter(n=>!ne.has(n))}a(re,"availableCapabilities");var te=3e4,oe=3e4,se=3e4,X=500,Y=1e4,ae=`thin-agent-${process.pid}`,b=null;function ie(e,n,r,c){let i;try{let u=H();i={claude:u.claudeBin!=null,codex:u.codexBin!=null,codexModel:u.codexConfiguredModel}}catch{}let m=a(u=>{_("/api/workers/heartbeat",{workerType:"cli-worker",clientName:ae,clientVersion:c,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:u,metadata:{capabilities:e,mode:"thin-agent",llmEngines:i}}).then(d=>{let l=d?.advisory;l&&l.message!==b?(b=l.message,s(r,{event:"worker_advisory",code:l.code,message:l.message})):l||(b=null)}).catch(d=>{s(r,{event:"presence_heartbeat_error",error:d instanceof Error?d.message:String(d)})})},"send");m("alive");let o=setInterval(()=>m("alive"),se);n.addEventListener("abort",()=>{clearInterval(o),m("shutting_down")},{once:!0})}a(ie,"startPresenceHeartbeat");function s(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}a(s,"structuredLog");function z(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let c=setTimeout(()=>{n.removeEventListener("abort",i),r(!0)},e),i=a(()=>{clearTimeout(c),n.removeEventListener("abort",i),r(!1)},"onAbort");n.addEventListener("abort",i,{once:!0})})}a(z,"abortableSleep");async function le(e,n){let r=`capabilities=${encodeURIComponent(e.join(","))}&waitMs=${n}`,c=await I(`/api/work/next?${r}`);return c==null||typeof c=="string"?null:c}a(le,"pollForWork");function ce(e,n){return{logger:{info:a(r=>n(r),"info"),warn:a(r=>n(r),"warn"),error:a(r=>n(r),"error")},job:{attempts:e}}}a(ce,"makeHelpers");async function de(e,n,r){let c=j[e.kind],i=Date.now();if(s(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!c){let o=`unknown kind: ${e.kind}`;s(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:o}),await _(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:o,terminal:!0}).catch(()=>{});return}let m=setInterval(()=>{s(r,{event:"heartbeat",jobId:e.id}),_(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(o=>{s(r,{event:"heartbeat_error",jobId:e.id,error:o instanceof Error?o.message:String(o)})})},n);try{let o=ce(e.attempts,r),u=await c(e.payload,o)??{};clearInterval(m),s(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-i}),await _(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:u})}catch(o){clearInterval(m);let u=T(o),d=o instanceof Error?o.message:String(o);s(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-i,terminal:u,error:d}),await _(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:d,terminal:u}).catch(l=>{s(r,{event:"fail_post_error",jobId:e.id,error:l instanceof Error?l.message:String(l)})})}}a(de,"runOne");var Z=new Set(["process_eval","process_conversation","process_insights","process_session_goal","distill_memories","memory_ab","cron_suggest_instructions","cron_eval_autorun","cron_instruction_evolution","process_judge_review"]);async function Ve(e){let n=e.log??(()=>{}),r=e.pollWaitMs??te,c=e.heartbeatIntervalMs??oe,i=e.capabilities??re();s(n,{event:"agent_start",capabilities:i,pollWaitMs:r,heartbeatIntervalMs:c});try{let t=q();t.removed.length>0&&s(n,{event:"eval_worktrees_swept",removed:t.removed.length})}catch(t){s(n,{event:"eval_worktree_sweep_failed",error:t instanceof Error?t.message:String(t)})}ie(i,e.signal,n,e.version),G({signal:e.signal,log:n}).catch(t=>{s(n,{event:"tt_heartbeat_fatal",error:t instanceof Error?t.message:String(t)})});let m=5*6e4,o=0,u=a(()=>{if(!e.readInstalledVersion||!e.version)return!1;let t=Date.now();if(t-o<m)return!1;o=t;let f=e.readInstalledVersion();return!!(f&&f!==e.version)},"versionDrifted"),d=new AbortController,l=d.signal;e.signal.aborted?d.abort():e.signal.addEventListener("abort",()=>d.abort(),{once:!0});let v=a(async(t,f)=>{let g=X;for(;!l.aborted;){if(u()){s(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),d.abort(),e.onVersionDrift?.();break}let h=null;try{h=await le([...f],r)}catch(p){let ee=p instanceof E?p.statusCode:void 0;if(s(n,{event:"poll_error",lane:t,status:ee,error:p instanceof Error?p.message:String(p)}),!await z(g,l))break;g=Math.min(g*2,Y);continue}if(!h){if(s(n,{event:"poll_204",lane:t}),!await z(g,l))break;g=Math.min(g*2,Y);continue}g=X,await de(h,c,n)}},"runLane"),k=i.filter(t=>Z.has(t)),w=i.filter(t=>!Z.has(t));k.length>0&&w.length>0?(s(n,{event:"agent_lanes",heavy:k.length,fast:w.length}),await Promise.all([v("heavy",k),v("fast",w)])):await v("single",i),s(n,{event:"agent_stop"})}a(Ve,"runAgentLoop");export{j as a,Q as b,re as c,le as d,Ve as e};
|