@rulemetric/cli 0.7.39 → 0.7.41
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/base-command.js +1 -1
- package/dist/{chunk-TYL5LNTJ.js → chunk-2J3IHWE2.js} +1 -1
- package/dist/{chunk-ZYI66XKV.js → chunk-2RCWYVEU.js} +1 -1
- package/dist/{chunk-6Q4GWZQV.js → chunk-3HZU6FNG.js} +1 -1
- package/dist/{chunk-VLXCQ2DC.js → chunk-3QXRLIGC.js} +1 -1
- package/dist/chunk-45DOTNQM.js +1 -0
- package/dist/{chunk-G6XGDHGC.js → chunk-4Q72B377.js} +1 -1
- package/dist/{chunk-Q4APAZUC.js → chunk-5KD2N2MH.js} +1 -1
- package/dist/{chunk-GPTPK6QX.js → chunk-5R5RGKOW.js} +3 -3
- package/dist/{chunk-ZR3MUNLS.js → chunk-5RUEROLC.js} +1 -1
- package/dist/{chunk-TIOKY2IA.js → chunk-5XUN743A.js} +1 -1
- package/dist/{chunk-VSUL3MNG.js → chunk-5ZACMVV3.js} +1 -1
- package/dist/{chunk-SNJ2NIIE.js → chunk-6ME5OTS5.js} +1 -1
- package/dist/{chunk-V44SRRYR.js → chunk-6VKQT2J3.js} +1 -1
- package/dist/{chunk-X64R6JCJ.js → chunk-AI6FMGKM.js} +1 -1
- package/dist/{chunk-KQCAELPN.js → chunk-ATL4WZBF.js} +1 -1
- package/dist/{chunk-W2MOTOQE.js → chunk-BLCMXTIK.js} +1 -1
- package/dist/{chunk-WFYQ6SPJ.js → chunk-C7YRLB37.js} +1 -1
- package/dist/{chunk-2ZAKZEXW.js → chunk-DBELYMDA.js} +1 -1
- package/dist/{chunk-5KP66L7P.js → chunk-EDJMMKA5.js} +1 -1
- package/dist/{chunk-CYKELSHS.js → chunk-EHNPJJIH.js} +1 -1
- package/dist/{chunk-SWSGNEVO.js → chunk-EN43UYBN.js} +1 -1
- package/dist/{chunk-BPQ66YTY.js → chunk-FAXV5AAG.js} +1 -1
- package/dist/{chunk-I2DZGJRR.js → chunk-HFGO5762.js} +8 -2
- package/dist/chunk-HRXACKAH.js +2 -0
- package/dist/{chunk-ZYVWALMS.js → chunk-HXZM2UHO.js} +1 -1
- package/dist/{chunk-RQ424GI6.js → chunk-IQCE4VBP.js} +1 -1
- package/dist/{chunk-QV4A73AC.js → chunk-JCXKWHZX.js} +1 -1
- package/dist/chunk-JZ5Z2BRO.js +7 -0
- package/dist/{chunk-HUADECKZ.js → chunk-KGQ5W54Y.js} +1 -1
- package/dist/chunk-KLEF5D3A.js +1 -0
- package/dist/{chunk-XXDZJ6YI.js → chunk-LLNQZ4SZ.js} +1 -1
- package/dist/{chunk-PPKPCXJD.js → chunk-LWI5K6T4.js} +1 -1
- package/dist/{chunk-H7J27U4P.js → chunk-MOAJLSYV.js} +1 -1
- package/dist/{chunk-U6XEU573.js → chunk-NIRD7ETU.js} +1 -1
- package/dist/{chunk-NKPLTT7J.js → chunk-O2BKBW7Z.js} +1 -1
- package/dist/{chunk-PBPNIKQA.js → chunk-OMD3JCGB.js} +1 -1
- package/dist/{chunk-IQTSUAGM.js → chunk-QUDMK76I.js} +1 -1
- package/dist/{chunk-VLOX6KOM.js → chunk-QY3UKLDE.js} +1 -1
- package/dist/{chunk-XICLXXRH.js → chunk-RJLAAKEN.js} +1 -1
- package/dist/{chunk-RDET7CKR.js → chunk-ULMEKK7C.js} +1 -1
- package/dist/chunk-XB4OMOSE.js +6 -0
- package/dist/{chunk-IXLDCX7M.js → chunk-YW3JQKGY.js} +1 -1
- package/dist/{chunk-VTA6HDVW.js → chunk-Z2MZOQCD.js} +1 -1
- package/dist/commands/antigravity/backfill.js +1 -1
- package/dist/commands/auth/create-key.js +1 -1
- package/dist/commands/auth/login.js +1 -1
- package/dist/commands/auth/logout.js +1 -1
- package/dist/commands/auth/revoke-key.js +1 -1
- package/dist/commands/auth/signup.js +1 -1
- package/dist/commands/auth/status.js +1 -1
- package/dist/commands/capture/scope.js +1 -1
- package/dist/commands/catalog/index.js +1 -1
- package/dist/commands/catalog/recommend.js +1 -1
- package/dist/commands/convert.js +1 -1
- package/dist/commands/converters.js +1 -1
- package/dist/commands/crons/list.js +1 -1
- package/dist/commands/crons/run.js +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/eval-targets/create.js +1 -1
- package/dist/commands/eval-targets/list.js +1 -1
- package/dist/commands/evals/agent.js +1 -1
- package/dist/commands/evals/auto-run.js +1 -1
- package/dist/commands/evals/benchmark.js +1 -1
- package/dist/commands/evals/compare.js +1 -1
- package/dist/commands/evals/create.js +1 -1
- package/dist/commands/evals/optimize-description.js +1 -1
- package/dist/commands/evals/optimize.js +1 -1
- package/dist/commands/evals/refine-cases.js +1 -1
- package/dist/commands/evals/run.js +1 -1
- package/dist/commands/evals/validate-judge.js +1 -1
- package/dist/commands/gateway/ensure.js +1 -1
- package/dist/commands/hooks/install.js +1 -1
- package/dist/commands/hooks/run.js +1 -1
- package/dist/commands/hooks/uninstall.js +1 -1
- package/dist/commands/import.js +1 -1
- package/dist/commands/instructions/create.js +1 -1
- package/dist/commands/instructions/delete.js +1 -1
- package/dist/commands/instructions/fork.js +1 -1
- package/dist/commands/instructions/get.js +1 -1
- package/dist/commands/instructions/list.js +1 -1
- package/dist/commands/instructions/promote.js +1 -1
- package/dist/commands/instructions/pull.js +1 -1
- package/dist/commands/instructions/upstream.js +1 -1
- package/dist/commands/instructions/versions.js +1 -1
- package/dist/commands/launcher.js +1 -1
- package/dist/commands/local/down.js +1 -0
- package/dist/commands/local/up.js +52 -0
- package/dist/commands/org/current.js +1 -1
- package/dist/commands/org/list.js +1 -1
- package/dist/commands/org/switch.js +1 -1
- package/dist/commands/packs/add-instruction.js +1 -1
- package/dist/commands/packs/apply.js +1 -1
- package/dist/commands/packs/create.js +1 -1
- package/dist/commands/packs/fork.js +1 -1
- package/dist/commands/packs/get.js +1 -1
- package/dist/commands/packs/list.js +1 -1
- package/dist/commands/packs/remove-instruction.js +1 -1
- package/dist/commands/proxy/env.js +1 -1
- package/dist/commands/proxy/logs.js +1 -1
- package/dist/commands/proxy/restart.js +1 -1
- package/dist/commands/proxy/setup.js +1 -1
- package/dist/commands/proxy/start.js +1 -1
- package/dist/commands/proxy/status.js +1 -1
- package/dist/commands/proxy/stop.js +1 -1
- package/dist/commands/research/backfill.js +1 -1
- package/dist/commands/research/tail-transcript.js +1 -1
- package/dist/commands/service/install.js +1 -1
- package/dist/commands/service/status.js +1 -1
- package/dist/commands/service/uninstall.js +1 -1
- package/dist/commands/sessions/analyze.js +1 -1
- package/dist/commands/sessions/delete.js +1 -1
- package/dist/commands/sessions/end.js +1 -1
- package/dist/commands/sessions/import.js +1 -1
- package/dist/commands/sessions/list.js +1 -1
- package/dist/commands/sessions/start.js +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/skills/export-approved.js +1 -1
- package/dist/commands/skills/install.js +1 -1
- package/dist/commands/skills/list.js +1 -1
- package/dist/commands/skills/publish.js +1 -1
- package/dist/commands/skills/search.js +1 -1
- package/dist/commands/skills/update.js +1 -1
- package/dist/commands/suggestions/accept.js +1 -1
- package/dist/commands/suggestions/dismiss.js +1 -1
- package/dist/commands/suggestions/list.js +1 -1
- package/dist/commands/suggestions/refresh.js +1 -1
- package/dist/dashboard/Dashboard.js +1 -1
- package/dist/dashboard/data.js +1 -1
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
- package/dist/dashboard/launcher/api.js +1 -1
- package/dist/dashboard/launcher/useLaunchJobs.js +1 -1
- package/dist/lib/active-org-refresh.js +1 -1
- package/dist/lib/agent-loop.js +1 -1
- package/dist/lib/antigravity-transcript.js +1 -1
- package/dist/lib/api-client.js +1 -1
- package/dist/lib/auth.js +1 -1
- package/dist/lib/editor-proxy-pins.js +1 -1
- package/dist/lib/ensure-api-key.js +1 -1
- package/dist/lib/ensure-fresh-token.js +1 -1
- package/dist/lib/eval-benchmark.js +1 -1
- package/dist/lib/eval-candidate-run.js +1 -1
- package/dist/lib/eval-conversation-handler.js +1 -1
- package/dist/lib/eval-run-batch.js +1 -1
- package/dist/lib/handlers/cron-eval-autorun.js +1 -1
- package/dist/lib/handlers/cron-instruction-evolution.js +1 -1
- package/dist/lib/handlers/cron-refresh-pricing.js +1 -1
- package/dist/lib/handlers/cron-suggest-instructions.js +1 -1
- package/dist/lib/handlers/distill-memories.js +1 -1
- package/dist/lib/handlers/process-announcement.js +1 -1
- package/dist/lib/handlers/process-changelog.js +1 -1
- package/dist/lib/handlers/process-conversation.js +1 -1
- package/dist/lib/handlers/process-eval.js +1 -1
- package/dist/lib/handlers/process-insights.js +1 -1
- package/dist/lib/handlers/process-judge-review.js +1 -1
- package/dist/lib/handlers/process-launch.js +1 -1
- package/dist/lib/handlers/process-memory-ab.js +1 -1
- package/dist/lib/handlers/process-run-cleanup.js +1 -1
- package/dist/lib/handlers/process-session-goal.js +1 -1
- package/dist/lib/hooks-config.js +1 -1
- package/dist/lib/judge-review-runner.js +1 -1
- package/dist/lib/launchd.js +1 -0
- package/dist/lib/local-runtime.js +1 -0
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/research-client.js +1 -1
- package/dist/lib/setup-steps.js +1 -1
- package/dist/lib/statusline-shim.js +1 -1
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/terminal-target-heartbeat.js +1 -1
- package/oclif.manifest.json +111 -1
- package/package.json +5 -5
- package/dist/chunk-H2ORWIEY.js +0 -1
- package/dist/chunk-JGLVVIEM.js +0 -1
- package/dist/chunk-O6C2UGBY.js +0 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as h}from"../../chunk-
|
|
1
|
+
import{a as h}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import{f as d}from"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as p}from"../../chunk-ZLLER3HP.js";import*as a from"node:fs";import*as i from"node:path";import{Args as k,Flags as o}from"@oclif/core";var c=class f extends h{static{p(this,"SkillsPublish")}static description="Submit a skill file to the RuleMetric skills registry";static examples=["<%= config.bin %> skills publish ./my-skill.md","<%= config.bin %> skills publish ./my-skill.md --category workflow --tool claude_code"];static args={file:k.string({description:"Path to skill file (.md)",required:!0})};static flags={name:o.string({description:"Skill name (defaults to filename)"}),description:o.string({description:"One-line description"}),category:o.string({description:"Skill category",options:["workflow","language","framework","tool","security","testing","architecture","devops","documentation","performance","other"],default:"other"}),tool:o.string({description:"Primary tool this skill targets",options:["claude_code","cursor","copilot","windsurf","universal"],default:"universal"}),tags:o.string({description:"Comma-separated tags",default:""})};async run(){let{args:u,flags:e}=await this.parse(f);this.requireAuth();let s=i.resolve(u.file);a.existsSync(s)||this.error(`File not found: ${s}`);let l=a.readFileSync(s,"utf-8");l.trim().length<20&&this.error("Skill content is too short (minimum 20 characters)");let g=i.basename(s,i.extname(s)),r=e.name??g.replace(/[-_]+/g," ").replace(/\b\w/g,t=>t.toUpperCase()),m=g.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),n=e.tags?e.tags.split(",").map(t=>t.trim()).filter(Boolean):[];this.log(`Publishing skill: ${r} (${m})`),this.log(` Category: ${e.category}`),this.log(` Tool: ${e.tool}`),n.length>0&&this.log(` Tags: ${n.join(", ")}`),this.log(` Content: ${l.length} characters
|
|
2
2
|
`);let y={id:m,name:r,description:e.description??`Community skill: ${r}`,category:e.category,tools:[e.tool],tags:n,content:l};try{let t=await d("/api/skills/publish",y);this.log(`Published! ${t.message??`Skill "${r}" submitted to the registry.`}`)}catch(t){throw t instanceof Error&&this.error(`Failed to publish: ${t.message}`),t}}};export{c as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as n}from"../../chunk-CDI5CCHU.js";import{a}from"../../chunk-
|
|
1
|
+
import{a as n}from"../../chunk-CDI5CCHU.js";import{a}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{Args as d,Flags as o}from"@oclif/core";var l=class r extends a{static{e(this,"SkillsSearch")}static description="Search the community skills registry";static examples=['<%= config.bin %> skills search "tdd"',"<%= config.bin %> skills search --tool cursor --category testing","<%= config.bin %> skills search --language python"];static args={query:d.string({description:"Search term",required:!1})};static flags={tool:o.string({description:"Filter by tool",options:["claude_code","cursor","copilot","windsurf","cline","universal"]}),category:o.string({description:"Filter by category",options:["workflow","language","framework","tool","security","testing","architecture","devops","documentation","performance"]}),language:o.string({description:"Filter by programming language"}),framework:o.string({description:"Filter by framework"}),limit:o.integer({description:"Max results",default:20})};async run(){let{args:g,flags:i}=await this.parse(r),s=(await n(this)).search({query:g.query,tool:i.tool,category:i.category,language:i.language,framework:i.framework,limit:i.limit});if(s.length===0){this.log("No skills found matching your criteria."),this.log(`
|
|
2
2
|
Try a broader search or run: rulemetric skills list`);return}this.log(`Found ${s.length} skill${s.length===1?"":"s"}:
|
|
3
3
|
`);for(let t of s){let c=t.popularity?.stars?` (${m(t.popularity.stars)} stars)`:"",u=t.tools.join(", ");this.log(` ${t.id}`),this.log(` ${t.name} \u2014 ${t.description}`),this.log(` tools: ${u} category: ${t.category}${c}`),t.tags.length>0&&this.log(` tags: ${t.tags.join(", ")}`),this.log("")}this.log("Run: rulemetric skills install <id> to install a skill")}};function m(r){return r>=1e3?`${(r/1e3).toFixed(1)}k`:String(r)}e(m,"formatStars");export{l as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as n}from"../../chunk-
|
|
1
|
+
import{a as n}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as e}from"../../chunk-ZLLER3HP.js";import*as s from"node:fs";import*as r from"node:path";import*as m from"node:os";import{Flags as h}from"@oclif/core";import{fetchAllSources as y,TIER_1_SOURCES as c,TIER_2_SOURCES as S}from"@rulemetric/skills-registry";var i=r.join(m.homedir(),".config","rulemetric"),f=r.join(i,"skills-registry.json"),t=class g extends n{static{e(this,"SkillsUpdate")}static description="Fetch latest skills from GitHub sources and update local registry";static examples=["<%= config.bin %> skills update","<%= config.bin %> skills update --all"];static flags={all:h.boolean({description:"Include Tier 2 (niche) sources",default:!1})};async run(){let{flags:o}=await this.parse(g),l=o.all?[...c,...S]:c;this.log(`Fetching skills from ${l.length} sources${o.all?" (Tier 1 + 2)":""}...
|
|
2
2
|
`);let a=await y(l,{onProgress:e((p,u)=>{this.log(` ${p}: ${u} skills`)},"onProgress")}),d={version:"1.0.0",generatedAt:new Date().toISOString(),skills:a.entries};s.existsSync(i)||s.mkdirSync(i,{recursive:!0}),s.writeFileSync(f,JSON.stringify(d)),this.log(`
|
|
3
3
|
Updated registry: ${a.entries.length} skills cached at ${f}`)}};export{t as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as l}from"../../chunk-MODXEGCU.js";import{a as g}from"../../chunk-WLVQJH4E.js";import{a as u}from"../../chunk-
|
|
1
|
+
import{a as l}from"../../chunk-MODXEGCU.js";import{a as g}from"../../chunk-WLVQJH4E.js";import{a as u}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import{e as d,f as p}from"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as c}from"../../chunk-ZLLER3HP.js";import*as o from"node:fs";import*as f from"node:path";import{Args as $}from"@oclif/core";function U(r,i,a){let e=f.join(r,"CLAUDE.md"),t=`<!-- rulemetric:start ${i} -->`,s=`<!-- rulemetric:end ${i} -->`,n=o.existsSync(e)?o.readFileSync(e,"utf8"):"";if(n.includes(t))return!1;let h=`${n.length>0&&!n.endsWith(`
|
|
2
2
|
`)?`
|
|
3
3
|
|
|
4
4
|
`:n.length>0?`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-MODXEGCU.js";import{a as r}from"../../chunk-WLVQJH4E.js";import{a as o}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-MODXEGCU.js";import{a as r}from"../../chunk-WLVQJH4E.js";import{a as o}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import{f as t}from"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{Args as m}from"@oclif/core";var s=class n extends o{static{e(this,"SuggestionsDismiss")}static description="Dismiss a suggestion so it will not re-surface for 30 days";static examples=["<%= config.bin %> suggestions dismiss <id>"];static args={id:m.string({description:"Suggestion UUID from `suggestions list`",required:!0})};async run(){let{args:i}=await this.parse(n);this.requireAuth(),r(i.id,"suggestion ID");let d=a(process.cwd());await t(`/api/instruction-suggestions/${encodeURIComponent(i.id)}/events`,{eventType:"dismissed",projectPath:d}),this.log("Dismissed. Won't re-surface for 30 days.")}};export{s as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d}from"../../chunk-MODXEGCU.js";import{a as g}from"../../chunk-
|
|
1
|
+
import{a as d}from"../../chunk-MODXEGCU.js";import{a as g}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import{e as a}from"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as c}from"../../chunk-ZLLER3HP.js";import{Flags as f}from"@oclif/core";import{printTable as h}from"@oclif/table";var o=class p extends g{static{c(this,"SuggestionsList")}static description="List instruction suggestions for a project";static examples=["<%= config.bin %> suggestions list","<%= config.bin %> suggestions list --project /path/to/project"];static flags={project:f.string({char:"p",description:"Project path (defaults to current directory)"})};async run(){let{flags:u}=await this.parse(p);this.requireAuth();let m=d(u.project??process.cwd()),l=encodeURIComponent(m),s=await a(`/api/instruction-suggestions?projectPath=${l}&limit=10`);if(s.suggestions.length===0){this.log("No suggestions for this project. They are recomputed daily at 04:30 UTC by a server-side cron and run on your background worker \u2014 make sure one is running (`rulemetric evals agent`, or `rulemetric service install --worker-only`).");return}h({data:s.suggestions.map(e=>({ID:e.id,Scope:e.instructionScope,Name:e.name,Score:e.score.toFixed(2),Reason:e.reason.length>60?e.reason.slice(0,59)+"\u2026":e.reason})),columns:["ID","Scope","Name","Score","Reason"]});let t=s.stats??{},r=(t.surfaced??0)+(t.surfaced_with_content??0)+(t.proxy_injected??0),i=(t.accepted??0)+(t.promoted??0),n=t.dismissed??0;r+i+n>0&&this.log(`
|
|
2
2
|
Lifetime for this project: ${r} surfaced \xB7 ${i} accepted \xB7 ${n} dismissed`)}};export{o as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i}from"../../chunk-
|
|
1
|
+
import{a as i}from"../../chunk-LWI5K6T4.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-6VKQT2J3.js";import"../../chunk-NIRD7ETU.js";import"../../chunk-QY3UKLDE.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import{a as r}from"../../chunk-ZLLER3HP.js";var e=class extends i{static{r(this,"SuggestionsRefresh")}static description="Information about refreshing instruction suggestions";static examples=["<%= config.bin %> suggestions refresh"];async run(){this.log("Suggestions are recomputed automatically: a server-side cron enqueues a job daily at 04:30 UTC, and your background worker picks it up \u2014 there is no manual trigger."),this.log("Just make sure a worker is running: `rulemetric evals agent` (foreground), or install it persistently with `rulemetric service install --worker-only`.")}};export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as M}from"../chunk-O2SDD2WW.js";import{a as E}from"../chunk-GBMF3TP6.js";import{a as O}from"../chunk-WSCK4WNK.js";import{a as D}from"../chunk-4Z5ECCJE.js";import{a as $}from"../chunk-3HZU6FNG.js";import"../chunk-X23L2MF6.js";import"../chunk-B22HYCBV.js";import"../chunk-ZXF5NE54.js";import"../chunk-ULMEKK7C.js";import"../chunk-5RUEROLC.js";import{a as F}from"../chunk-DVN7GFJG.js";import"../chunk-ARNZQBMX.js";import{a as u,b as T,d as a,e as v}from"../chunk-NJ5UED3H.js";import{a as B,b as S,c as R}from"../chunk-4Q72B377.js";import"../chunk-7DFNBRLY.js";import{a as X}from"../chunk-3AV3GTMP.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import{a as m}from"../chunk-ZLLER3HP.js";import{useState as w,useEffect as nt,useCallback as G,useRef as st}from"react";import{render as U,Box as c,Text as o,useInput as at,useApp as lt}from"ink";import{Fragment as ht,jsx as t,jsxs as h}from"react/jsx-runtime";var dt=90;function J(){let s=process.stdout.columns||80,n=Math.min(160,s),i=n>=dt,d=i?Math.floor(n/2):n,b=Math.max(6,Math.min(10,d-34));return{dashWidth:n,wide:i,halfWidth:d,barWidth:b}}m(J,"getLayout");function z({active:s,providerName:n}){return h(c,{justifyContent:"space-between",paddingX:1,children:[t(c,{gap:1,children:u.map(i=>t(o,{bold:s===i,color:s===i?a:v,children:s===i?`[ ${T[i]} ]`:` ${T[i]} `},i))}),n&&t(o,{color:a,bold:!0,children:n})]})}m(z,"PeriodTabs");function H({width:s,insightsFocused:n=!1}){return t(c,{borderStyle:"round",borderColor:v,width:s,justifyContent:"center",paddingX:1,children:h(o,{children:[t(o,{color:a,bold:!0,children:"<"}),t(o,{color:a,children:">"}),t(o,{dimColor:!0,children:" switch "}),t(o,{color:a,bold:!0,children:"q"}),t(o,{dimColor:!0,children:" quit "}),t(o,{color:a,bold:!0,children:"s"}),h(o,{dimColor:!0,children:[" ",n?"back":"suggestions"," "]}),t(o,{color:a,bold:!0,children:"1"}),t(o,{dimColor:!0,children:"-"}),t(o,{color:a,bold:!0,children:"5"}),t(o,{dimColor:!0,children:" period "}),t(o,{color:a,bold:!0,children:"r"}),t(o,{dimColor:!0,children:" refresh "}),t(o,{color:a,bold:!0,children:"n"}),t(o,{dimColor:!0,children:" new session "}),t(o,{color:a,bold:!0,children:"l"}),t(o,{dimColor:!0,children:" launcher"})]})})}m(H,"StatusBar");function ct({wide:s,width:n,children:i}){return s?t(c,{width:n,children:i}):t(ht,{children:i})}m(ct,"Row");function ut({initialLocal:s,initialApi:n,initialInstructions:i,initialPeriod:d,initialLauncherFocused:b=!1}){let{exit:j}=lt(),[e,L]=w(d),[K,Q]=w(s),[W,V]=w(n),[Z,tt]=w(i),[ot,k]=w(!1),[p,I]=w(!1),[Y,_]=w(b),et=X()?.orgSlug??null,y=st(null),it=J(),g=G(async()=>{k(!0);let[r,x,P]=await Promise.all([B(),S(),R()]);Q(r),V(x),tt(P),k(!1)},[]);nt(()=>{let r=setInterval(g,3e4);return()=>clearInterval(r)},[g]);let f=G(r=>{r!==e&&(L(r),y.current&&clearTimeout(y.current),y.current=setTimeout(g,300))},[e,g]);at((r,x)=>{if(Y)return;if(r==="q"){if(p){I(!1);return}j();return}if(r==="s"){I(A=>!A);return}if(x.escape&&p){I(!1);return}if(r==="l"&&!p){_(!0);return}if(p)return;if(r==="r"){g();return}if(r==="n"){import("../dist-FAVALJ5C.js").then(({getLauncher:A})=>{A("claude_code").launch({projectPath:process.cwd(),mode:"interactive"})});return}let P=u.indexOf(e);x.leftArrow?f(u[(P-1+u.length)%u.length]):x.rightArrow||x.tab?f(u[(P+1)%u.length]):r==="1"?f("today"):r==="2"?f("week"):r==="3"?f("30days"):r==="4"?f("month"):r==="5"&&f("all")});let{dashWidth:l,wide:q,halfWidth:rt,barWidth:C}=it,N=q?rt:l;return ot?h(c,{flexDirection:"column",width:l,children:[t(z,{active:e}),t(c,{borderStyle:"round",borderColor:a,paddingX:1,width:l,children:h(o,{dimColor:!0,children:["Loading ",T[e],"..."]})}),t(H,{width:l})]}):Y?t(c,{flexDirection:"column",width:l,children:t($,{onClose:()=>_(!1),activeOrg:et,defaultProjectPath:process.cwd(),width:l})}):h(c,{flexDirection:"column",width:l,children:[t(z,{active:e}),t(D,{local:K,api:W,label:T[e],width:l}),h(ct,{wide:q,width:l,children:[t(O,{api:W,width:N,barWidth:C}),t(F,{api:W,width:N,barWidth:C})]}),t(E,{instructions:Z,width:l,barWidth:C}),t(M,{api:W,width:l,focused:p}),t(H,{width:l,insightsFocused:p})]})}m(ut,"InteractiveDashboard");async function yt(s="week",n={}){let[i,d,b]=await Promise.all([B(),S(),R()]);if(process.stdin.isTTY&&process.stdout.isTTY){let{waitUntilExit:e}=U(t(ut,{initialLocal:i,initialApi:d,initialInstructions:b,initialPeriod:s,initialLauncherFocused:n.openLauncher??!1}));await e()}else{let e=J(),{unmount:L}=U(h(c,{flexDirection:"column",width:e.dashWidth,children:[t(D,{local:i,api:d,label:T[s],width:e.dashWidth}),t(O,{api:d,width:e.dashWidth,barWidth:e.barWidth}),t(F,{api:d,width:e.dashWidth,barWidth:e.barWidth}),t(E,{instructions:b,width:e.dashWidth,barWidth:e.barWidth}),t(M,{api:d,width:e.dashWidth})]}),{patchConsole:!1});L()}}m(yt,"renderDashboard");export{yt as renderDashboard};
|
package/dist/dashboard/data.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-4Q72B377.js";import"../chunk-7DFNBRLY.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{b as loadApiInsights,c as loadLinkedInstructions,a as loadLocalStats};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-3HZU6FNG.js";import"../../chunk-X23L2MF6.js";import"../../chunk-B22HYCBV.js";import"../../chunk-ZXF5NE54.js";import"../../chunk-ULMEKK7C.js";import"../../chunk-5RUEROLC.js";import"../../chunk-NJ5UED3H.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as LauncherOverlay};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"../../chunk-
|
|
1
|
+
import{a,b,c,d}from"../../chunk-5RUEROLC.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{c as cancelLaunchJob,b as createLaunchJob,a as fetchLaunchJobs,d as listLaunchers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-ULMEKK7C.js";import"../../chunk-5RUEROLC.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as useLaunchJobs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-QY3UKLDE.js";import"../chunk-3AV3GTMP.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{c as _resetRefreshAttempt,b as bootstrapActiveOrg,a as maybeRefreshActiveOrg};
|
package/dist/lib/agent-loop.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-OMD3JCGB.js";import"../chunk-5XUN743A.js";import"../chunk-QUDMK76I.js";import"../chunk-C7YRLB37.js";import"../chunk-RSKQRVPJ.js";import"../chunk-HXZM2UHO.js";import"../chunk-YW3JQKGY.js";import"../chunk-2J3IHWE2.js";import"../chunk-N7TGRFVZ.js";import"../chunk-45DOTNQM.js";import"../chunk-O2BKBW7Z.js";import"../chunk-KGQ5W54Y.js";import"../chunk-JCXKWHZX.js";import"../chunk-QFVGUZDO.js";import"../chunk-MOAJLSYV.js";import"../chunk-BLCMXTIK.js";import"../chunk-6QKI756T.js";import"../chunk-5RBLIVBF.js";import"../chunk-EN43UYBN.js";import"../chunk-FAXV5AAG.js";import"../chunk-UF6US7VU.js";import"../chunk-6ME5OTS5.js";import"../chunk-5R5RGKOW.js";import"../chunk-YQ56FQEO.js";import"../chunk-5KD2N2MH.js";import"../chunk-GIRPEMTW.js";import"../chunk-MODXEGCU.js";import"../chunk-7DFNBRLY.js";import"../chunk-4VZLIGMS.js";import"../chunk-CNOD6HWU.js";import"../chunk-AI6FMGKM.js";import"../chunk-6UEFCMR2.js";import"../chunk-2RCWYVEU.js";import"../chunk-RMDLJN4L.js";import"../chunk-BL4BN6RU.js";import"../chunk-DBELYMDA.js";import"../chunk-NTKO4H2K.js";import"../chunk-CJRYYV76.js";import"../chunk-ATL4WZBF.js";import"../chunk-L2CFSMBC.js";import"../chunk-Z72VHGV7.js";import"../chunk-4L2ZEIRE.js";import"../chunk-CDY7TQFZ.js";import"../chunk-XRTZU7IZ.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-G5BXZT6F.js";import"../chunk-HMMO27U4.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{b as CAPABILITIES,a as HANDLERS,c as availableCapabilities,d as pollForWork,e as runAgentLoop};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g}from"../chunk-IQCE4VBP.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{d as classifyRecord,e as emitRecordsAsEvents,c as extractUserPrompt,b as findMaxStepIndex,a as readNewRecords,g as stateApi,f as tailAntigravityTranscript};
|
package/dist/lib/api-client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i}from"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{b as ApiError,a as DEFAULT_API_URL,d as api,i as apiDelete,e as apiGet,h as apiPatch,f as apiPost,g as apiPut,c as getBaseUrl};
|
package/dist/lib/auth.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m}from"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{m as CONFIG_DIR,b as __resetEnvFileAuthCache,j as clearEnvFile,f as clearToken,c as createAuthStore,l as getDefaultConfigDir,g as isAuthenticated,a as loadEnvFileAuth,e as loadToken,k as removeApiKeyFromEnv,i as saveApiKey,h as saveEnvFile,d as saveToken};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-EHNPJJIH.js";import"../chunk-3QXRLIGC.js";import"../chunk-HFGO5762.js";import"../chunk-ZLLER3HP.js";export{a as defaultEditorPinPaths,c as repinEditorProxies,b as unpinEditorProxies};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-RJLAAKEN.js";import"../chunk-6VKQT2J3.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as ensureDeviceApiKey};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-NIRD7ETU.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as ensureFreshToken};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-5ZACMVV3.js";import"../chunk-G5BXZT6F.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{b as aggregateBenchmark,c as postBenchmark,a as summarizeRuns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-DBELYMDA.js";import"../chunk-ATL4WZBF.js";import"../chunk-L2CFSMBC.js";import"../chunk-Z72VHGV7.js";import"../chunk-4L2ZEIRE.js";import"../chunk-CDY7TQFZ.js";import"../chunk-XRTZU7IZ.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-HMMO27U4.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as CANDIDATE_ARM,b as PRIOR_VERSION_ARM,d as buildCandidateQueue,c as pairCandidateRuns,e as runCandidateBatchAndPost};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-5KD2N2MH.js";import"../chunk-4VZLIGMS.js";import"../chunk-CNOD6HWU.js";import"../chunk-4L2ZEIRE.js";import"../chunk-CDY7TQFZ.js";import"../chunk-XRTZU7IZ.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-HMMO27U4.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as processConversationJob};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-ATL4WZBF.js";import"../chunk-L2CFSMBC.js";import"../chunk-Z72VHGV7.js";import"../chunk-4L2ZEIRE.js";import"../chunk-CDY7TQFZ.js";import"../chunk-XRTZU7IZ.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-HMMO27U4.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as executeAndGradeCase,b as runBatchAndPost};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-EN43UYBN.js";import"../../chunk-CJRYYV76.js";import"../../chunk-ATL4WZBF.js";import"../../chunk-L2CFSMBC.js";import"../../chunk-Z72VHGV7.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-HMMO27U4.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as cronEvalAutorun};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"../../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k}from"../../chunk-2RCWYVEU.js";import"../../chunk-RMDLJN4L.js";import"../../chunk-BL4BN6RU.js";import"../../chunk-DBELYMDA.js";import"../../chunk-ATL4WZBF.js";import"../../chunk-L2CFSMBC.js";import"../../chunk-Z72VHGV7.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-G5BXZT6F.js";import"../../chunk-HMMO27U4.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{f as DEFAULT_ACCUMULATE_TARGET_PAIRS,b as MAX_PASSES,c as MAX_PASSES_CEILING,a as PAIR_HEADROOM,j as cronInstructionEvolution,g as findOpenAccumulation,d as passCapFor,e as planPasses,h as readAccumulateConfig,k as readImmutableSections,i as resolveApply};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-FAXV5AAG.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as cronRefreshPricing};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-6ME5OTS5.js";import"../../chunk-5R5RGKOW.js";import"../../chunk-GIRPEMTW.js";import"../../chunk-MODXEGCU.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{b as cronSuggestInstructions,a as isScorableProjectPath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-YW3JQKGY.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{b as distillMemories,a as selectNewMemories};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-2J3IHWE2.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-45DOTNQM.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-EDJMMKA5.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-45DOTNQM.js";import"../../chunk-5R5RGKOW.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-O2BKBW7Z.js";import"../../chunk-5KD2N2MH.js";import"../../chunk-4VZLIGMS.js";import"../../chunk-CNOD6HWU.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-HMMO27U4.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as processConversation};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-KGQ5W54Y.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-YQ56FQEO.js";import"../../chunk-CNOD6HWU.js";import"../../chunk-L2CFSMBC.js";import"../../chunk-Z72VHGV7.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-HMMO27U4.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as processEval};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-JCXKWHZX.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-5R5RGKOW.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as processInsights};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-MOAJLSYV.js";import"../../chunk-AI6FMGKM.js";import"../../chunk-6UEFCMR2.js";import"../../chunk-NTKO4H2K.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-HMMO27U4.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as processJudgeReview};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-BLCMXTIK.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{b as processLaunch,a as resolveWorktreeForLaunch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-QUDMK76I.js";import"../../chunk-45DOTNQM.js";import"../../chunk-4L2ZEIRE.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-XRTZU7IZ.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-G5BXZT6F.js";import"../../chunk-HMMO27U4.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-C7YRLB37.js";import"../../chunk-45DOTNQM.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-HXZM2UHO.js";import"../../chunk-B3BHB26P.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-KLEF5D3A.js";import"../../chunk-JZ5Z2BRO.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
|
package/dist/lib/hooks-config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A,B,C,D,E,F,G,H,I,J,K,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../chunk-
|
|
1
|
+
import{A,B,C,D,E,F,G,H,I,J,K,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../chunk-3QXRLIGC.js";import"../chunk-HFGO5762.js";import"../chunk-ZLLER3HP.js";export{j as RULEMETRIC_NO_PROXY,k as claudeSettingsInstallPath,o as cleanClaudeSettingsFiles,a as detectInstalledTools,G as generateAntigravityHooksConfig,d as generateClaudeCodeHooksConfig,c as generateCopilotHooksConfig,b as generateCursorHooksConfig,D as getCursorUserSettingsPath,A as getVSCodeUserSettingsPath,h as hasRulemetricClaudeHooks,y as installMacOSProxyEnv,g as mergeClaudeCodeHooks,n as migrateSharedClaudeSettings,e as readClaudeSettings,J as removeAntigravityHooks,K as removeAntigravityUserHooks,i as removeClaudeCodeHooks,x as removeCopilotHooks,s as removeCursorHooks,t as removeCursorUserHooks,F as removeCursorUserProxyConfig,m as removeRulemetricMachineState,l as removeRulemetricProxyEnv,w as removeVSCodeProxyConfig,C as removeVSCodeUserProxyConfig,z as uninstallMacOSProxyEnv,H as writeAntigravityHooks,I as writeAntigravityUserHooks,f as writeClaudeSettingsWithBackup,r as writeCopilotHooks,p as writeCursorHooks,u as writeCursorProxyConfig,q as writeCursorUserHooks,E as writeCursorUserProxyConfig,v as writeVSCodeProxyConfig,B as writeVSCodeUserProxyConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"../chunk-
|
|
1
|
+
import{a,b,c,d}from"../chunk-AI6FMGKM.js";import"../chunk-6UEFCMR2.js";import"../chunk-NTKO4H2K.js";import"../chunk-4L2ZEIRE.js";import"../chunk-CDY7TQFZ.js";import"../chunk-XRTZU7IZ.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-HMMO27U4.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{c as JudgeReviewSkip,b as llmExpectationIndexes,a as reviewMatchesReviewer,d as runJudgeReviewPass};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d}from"../chunk-XB4OMOSE.js";import"../chunk-ZLLER3HP.js";export{c as bootoutAndWrite,d as bootstrapPlist,b as buildEnvDictEntries,a as escapeXml};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n}from"../chunk-HRXACKAH.js";import"../chunk-ZLLER3HP.js";export{a as LOCAL_DIR,d as LOCAL_PLIST_LABEL,f as LOCAL_PORT_MAP,e as LOCAL_PROJECT_ID,b as RUNTIME_DIR,c as SUPABASE_WORKDIR,n as buildServerEnv,h as findLocalPackage,g as inspectLocalPackage,j as installLocalPackage,m as parseStatusEnv,l as prepareSupabaseWorkdir,k as rewriteConfigToml,i as versionSkew};
|
package/dist/lib/manual-tasks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"../chunk-
|
|
1
|
+
import{a as l}from"../chunk-EDJMMKA5.js";import"../chunk-N7TGRFVZ.js";import"../chunk-45DOTNQM.js";import{a as u}from"../chunk-UF6US7VU.js";import{b as g}from"../chunk-6ME5OTS5.js";import"../chunk-5R5RGKOW.js";import"../chunk-GIRPEMTW.js";import"../chunk-MODXEGCU.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import{a as i}from"../chunk-GY5IJ4RS.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import{a as o}from"../chunk-ZLLER3HP.js";var c={cron_check_changelog:o(async(r,e)=>{let s=await l({logger:{info:o(t=>e.logger.info(t),"info"),warn:o(t=>e.logger.warn(t),"warn")}});e.logger.info(`[cron_check_changelog] result: created=${s.createdCount} skipped=${s.skippedCount}`)},"cron_check_changelog"),cron_suggest_instructions:o((r,e)=>g(r,e),"cron_suggest_instructions"),cron_refresh_skills:o((r,e)=>u(r,e),"cron_refresh_skills")},p=i.map(r=>{let e=c[r.name];if(!e)throw new Error(`manual-tasks: no handler registered for "${r.name}"`);return{...r,handler:e}});async function m(r){let e=p.find(n=>n.name===r);if(!e)return{name:r,durationMs:0,ok:!1,error:`Unknown task: ${r}`,logs:[]};let s=[],t={logger:{info:o(n=>s.push({level:"info",message:n}),"info"),warn:o(n=>s.push({level:"warn",message:n}),"warn"),error:o(n=>s.push({level:"error",message:n}),"error")},job:{attempts:0}},a=Date.now();try{return await e.handler({},t),{name:r,durationMs:Date.now()-a,ok:!0,logs:s}}catch(n){return{name:r,durationMs:Date.now()-a,ok:!1,error:n instanceof Error?n.message:String(n),logs:s}}}o(m,"runManualTask");export{p as MANUAL_TASKS,m as runManualTask};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-LLNQZ4SZ.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as postObservation,b as postObservations};
|
package/dist/lib/setup-steps.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j}from"../chunk-Z2MZOQCD.js";import"../chunk-3QXRLIGC.js";import"../chunk-HFGO5762.js";import"../chunk-QWCEZEDO.js";import"../chunk-KKDHD4XA.js";import"../chunk-SZ62CP55.js";import"../chunk-NTKO4H2K.js";import"../chunk-B3BHB26P.js";import"../chunk-N7ODX6PO.js";import"../chunk-PJ3WHQ67.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{c as ALL_STEP_IDS,a as CORE_STEP_IDS,b as OPTIONAL_STEP_IDS,g as STEPS,j as computeStatus,d as defaultContext,h as getStep,i as isStepId,e as maskToken,f as renderDiff};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g}from"../chunk-HFGO5762.js";import"../chunk-ZLLER3HP.js";export{c as STATUSLINE_SETTINGS_VALUE,a as STATUSLINE_SHIM_PATH,g as isStatuslineShimInstalled,d as readCurrentStatusLine,e as removeStatuslineShim,f as removeStatuslineShimAnyHome,b as writeStatuslineShim};
|
package/dist/lib/telemetry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"../chunk-
|
|
1
|
+
import{a,b,c,d}from"../chunk-6VKQT2J3.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{d as emitErrorBeacon,c as emitSetupEvent,b as getDeviceId,a as telemetryDisabled};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-5XUN743A.js";import"../chunk-N7ODX6PO.js";import"../chunk-KLEF5D3A.js";import"../chunk-JZ5Z2BRO.js";import"../chunk-ZLLER3HP.js";export{a as probeAndReport,b as runOneHeartbeatCycle,c as startTerminalTargetHeartbeat};
|
package/oclif.manifest.json
CHANGED
|
@@ -2601,6 +2601,116 @@
|
|
|
2601
2601
|
"versions.js"
|
|
2602
2602
|
]
|
|
2603
2603
|
},
|
|
2604
|
+
"local:down": {
|
|
2605
|
+
"aliases": [],
|
|
2606
|
+
"args": {},
|
|
2607
|
+
"description": "Stop the local RuleMetric server and database stack. Data is preserved (restart with `rulemetric local up`); use --delete-data to also wipe the local database.",
|
|
2608
|
+
"flags": {
|
|
2609
|
+
"api-url": {
|
|
2610
|
+
"description": "Override API base URL",
|
|
2611
|
+
"env": "RULEMETRIC_API_URL",
|
|
2612
|
+
"hidden": true,
|
|
2613
|
+
"name": "api-url",
|
|
2614
|
+
"hasDynamicHelp": false,
|
|
2615
|
+
"multiple": false,
|
|
2616
|
+
"type": "option"
|
|
2617
|
+
},
|
|
2618
|
+
"delete-data": {
|
|
2619
|
+
"description": "Also delete the local database volumes (irreversible)",
|
|
2620
|
+
"name": "delete-data",
|
|
2621
|
+
"allowNo": false,
|
|
2622
|
+
"type": "boolean"
|
|
2623
|
+
}
|
|
2624
|
+
},
|
|
2625
|
+
"hasDynamicHelp": false,
|
|
2626
|
+
"hiddenAliases": [],
|
|
2627
|
+
"id": "local:down",
|
|
2628
|
+
"pluginAlias": "@rulemetric/cli",
|
|
2629
|
+
"pluginName": "@rulemetric/cli",
|
|
2630
|
+
"pluginType": "core",
|
|
2631
|
+
"strict": true,
|
|
2632
|
+
"enableJsonFlag": false,
|
|
2633
|
+
"isESM": true,
|
|
2634
|
+
"relativePath": [
|
|
2635
|
+
"dist",
|
|
2636
|
+
"commands",
|
|
2637
|
+
"local",
|
|
2638
|
+
"down.js"
|
|
2639
|
+
]
|
|
2640
|
+
},
|
|
2641
|
+
"local:up": {
|
|
2642
|
+
"aliases": [],
|
|
2643
|
+
"args": {},
|
|
2644
|
+
"description": "Run RuleMetric fully locally: start a local Supabase stack (Docker), apply migrations, and serve the API + dashboard from the @rulemetric/local runtime — all data on this machine, zero cloud contact. Downloads the runtime package on first run.",
|
|
2645
|
+
"examples": [
|
|
2646
|
+
"<%= config.bin %> local up --email you@example.com --password <pw>",
|
|
2647
|
+
"<%= config.bin %> local up --port 3000",
|
|
2648
|
+
"<%= config.bin %> local up --foreground"
|
|
2649
|
+
],
|
|
2650
|
+
"flags": {
|
|
2651
|
+
"api-url": {
|
|
2652
|
+
"description": "Override API base URL",
|
|
2653
|
+
"env": "RULEMETRIC_API_URL",
|
|
2654
|
+
"hidden": true,
|
|
2655
|
+
"name": "api-url",
|
|
2656
|
+
"hasDynamicHelp": false,
|
|
2657
|
+
"multiple": false,
|
|
2658
|
+
"type": "option"
|
|
2659
|
+
},
|
|
2660
|
+
"port": {
|
|
2661
|
+
"char": "p",
|
|
2662
|
+
"description": "Local API + dashboard port",
|
|
2663
|
+
"name": "port",
|
|
2664
|
+
"default": 3000,
|
|
2665
|
+
"hasDynamicHelp": false,
|
|
2666
|
+
"multiple": false,
|
|
2667
|
+
"type": "option"
|
|
2668
|
+
},
|
|
2669
|
+
"email": {
|
|
2670
|
+
"char": "e",
|
|
2671
|
+
"description": "Create the first user with this email (with --password)",
|
|
2672
|
+
"name": "email",
|
|
2673
|
+
"hasDynamicHelp": false,
|
|
2674
|
+
"multiple": false,
|
|
2675
|
+
"type": "option"
|
|
2676
|
+
},
|
|
2677
|
+
"password": {
|
|
2678
|
+
"description": "Password for the first user (min 8 chars)",
|
|
2679
|
+
"name": "password",
|
|
2680
|
+
"hasDynamicHelp": false,
|
|
2681
|
+
"multiple": false,
|
|
2682
|
+
"type": "option"
|
|
2683
|
+
},
|
|
2684
|
+
"foreground": {
|
|
2685
|
+
"description": "Run the server in this terminal instead of installing a launchd service (works on any OS; skips user provisioning)",
|
|
2686
|
+
"name": "foreground",
|
|
2687
|
+
"allowNo": false,
|
|
2688
|
+
"type": "boolean"
|
|
2689
|
+
},
|
|
2690
|
+
"yes": {
|
|
2691
|
+
"char": "y",
|
|
2692
|
+
"description": "Skip the runtime-download confirmation",
|
|
2693
|
+
"name": "yes",
|
|
2694
|
+
"allowNo": false,
|
|
2695
|
+
"type": "boolean"
|
|
2696
|
+
}
|
|
2697
|
+
},
|
|
2698
|
+
"hasDynamicHelp": false,
|
|
2699
|
+
"hiddenAliases": [],
|
|
2700
|
+
"id": "local:up",
|
|
2701
|
+
"pluginAlias": "@rulemetric/cli",
|
|
2702
|
+
"pluginName": "@rulemetric/cli",
|
|
2703
|
+
"pluginType": "core",
|
|
2704
|
+
"strict": true,
|
|
2705
|
+
"enableJsonFlag": false,
|
|
2706
|
+
"isESM": true,
|
|
2707
|
+
"relativePath": [
|
|
2708
|
+
"dist",
|
|
2709
|
+
"commands",
|
|
2710
|
+
"local",
|
|
2711
|
+
"up.js"
|
|
2712
|
+
]
|
|
2713
|
+
},
|
|
2604
2714
|
"org:current": {
|
|
2605
2715
|
"aliases": [],
|
|
2606
2716
|
"args": {},
|
|
@@ -4507,5 +4617,5 @@
|
|
|
4507
4617
|
]
|
|
4508
4618
|
}
|
|
4509
4619
|
},
|
|
4510
|
-
"version": "0.7.
|
|
4620
|
+
"version": "0.7.41"
|
|
4511
4621
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulemetric/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.41",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -77,9 +77,9 @@
|
|
|
77
77
|
"postgres": "^3.4.0",
|
|
78
78
|
"react": "^19.0.0",
|
|
79
79
|
"zod": "^3.24.0",
|
|
80
|
-
"@rulemetric/
|
|
81
|
-
"@rulemetric/
|
|
82
|
-
"@rulemetric/skills-registry": "0.7.
|
|
80
|
+
"@rulemetric/proxy": "0.7.41",
|
|
81
|
+
"@rulemetric/hooks": "0.7.41",
|
|
82
|
+
"@rulemetric/skills-registry": "0.7.41"
|
|
83
83
|
},
|
|
84
84
|
"//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.",
|
|
85
85
|
"optionalDependencies": {
|
|
@@ -101,9 +101,9 @@
|
|
|
101
101
|
"@rulemetric/core": "0.0.1",
|
|
102
102
|
"@rulemetric/db": "0.0.1",
|
|
103
103
|
"@rulemetric/effectiveness": "0.0.1",
|
|
104
|
+
"@rulemetric/telemetry": "0.0.1",
|
|
104
105
|
"@rulemetric/email": "0.0.1",
|
|
105
106
|
"@rulemetric/session": "0.2.1",
|
|
106
|
-
"@rulemetric/telemetry": "0.0.1",
|
|
107
107
|
"@rulemetric/typescript-config": "0.0.0"
|
|
108
108
|
},
|
|
109
109
|
"scripts": {
|
package/dist/chunk-H2ORWIEY.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as T,e as w}from"./chunk-O6C2UGBY.js";import{a as s}from"./chunk-ZLLER3HP.js";import{fileURLToPath as x}from"node:url";import{existsSync as A,readFileSync as E}from"node:fs";import{dirname as v,join as O}from"node:path";function _(){let e=v(x(import.meta.url));for(let t=0;t<8;t++){let c=O(e,"package.json");if(A(c))try{let i=JSON.parse(E(c,"utf8"));if(i.name==="@rulemetric/cli"&&i.version)return i.version}catch{}let o=v(e);if(o===e)break;e=o}return"0.0.0"}s(_,"readCliVersion");var k=_(),L="https://rulemetric.com",l=class extends Error{constructor(c,o){super(o);this.statusCode=c;this.name="ApiError"}static{s(this,"ApiError")}};function H(){let e=process.env.RULEMETRIC_API_URL??T().apiUrl??L,t=new URL(e);if(t.protocol==="http:"&&t.hostname!=="localhost"&&t.hostname!=="127.0.0.1")throw new Error(`API URL must use HTTPS for non-localhost hosts: ${e}`);return e}s(H,"getBaseUrl");async function a(e,t={}){let o=`${H()}${e}`,i={"Content-Type":"application/json","User-Agent":`rulemetric-cli/${k}`,...t.headers},m=T(),d=process.env.RULEMETRIC_API_KEY||m.apiKey||w()?.accessToken||m.accessToken;d&&(i.Authorization=`Bearer ${d}`);let h=new URL(o),f=h.hostname==="localhost"||h.hostname==="127.0.0.1",P=process.env.HTTPS_PROXY,g=process.env.HTTP_PROXY;f&&(delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY);let p=t.timeoutMs?new AbortController:void 0,y=!1,R=p?setTimeout(()=>{y=!0,p.abort()},t.timeoutMs):void 0,r;try{r=await fetch(o,{method:t.method??"GET",headers:i,body:t.body?JSON.stringify(t.body):void 0,signal:p?.signal})}catch(u){if(y){let U=new URL(o).host,b=Math.round(t.timeoutMs/1e3);throw new l(408,`Request to ${U} timed out after ${b}s. This is usually transient or a local proxy/gateway issue \u2014 retry, and if it persists check HTTPS_PROXY / the RuleMetric gateway (:8787).`)}throw u}finally{R&&clearTimeout(R),f&&(P!==void 0&&(process.env.HTTPS_PROXY=P),g!==void 0&&(process.env.HTTP_PROXY=g))}let n;if(r.headers.get("content-type")?.includes("application/json")?n=await r.json():n=await r.text(),!r.ok){let u=n&&typeof n=="object"&&"error"in n?String(n.error):`HTTP ${r.status}`;throw new l(r.status,u)}return n}s(a,"api");var C=s(e=>a(e),"apiGet"),X=s((e,t)=>a(e,{method:"POST",body:t}),"apiPost"),I=s((e,t)=>a(e,{method:"PUT",body:t}),"apiPut"),B=s((e,t)=>a(e,{method:"PATCH",body:t}),"apiPatch"),D=s(e=>a(e,{method:"DELETE"}),"apiDelete");export{L as a,l as b,H as c,a as d,C as e,X as f,I as g,B as h,D as i};
|