@rulemetric/cli 0.9.0 → 0.11.0
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/README.md +1 -2
- package/dist/base-command.js +1 -1
- package/dist/chunk-35KBN23A.js +1 -0
- package/dist/{chunk-PQN2GAG4.js → chunk-7FWIIVMC.js} +1 -1
- package/dist/{chunk-X3VL5H24.js → chunk-AC2NUNFC.js} +1 -1
- package/dist/{chunk-7FZB65VH.js → chunk-AJN2BLMV.js} +1 -1
- package/dist/{chunk-HYDGERWD.js → chunk-BMDHPIW6.js} +1 -1
- package/dist/{chunk-IVDTORX5.js → chunk-BMN2WZM2.js} +1 -1
- package/dist/{chunk-UUZB4IKU.js → chunk-CLCRZWAG.js} +1 -1
- package/dist/chunk-DN2T3FXN.js +1 -0
- package/dist/chunk-E4U6AOTM.js +46 -0
- package/dist/{chunk-CBUTNIJA.js → chunk-EJZGGT52.js} +1 -1
- package/dist/{chunk-KHWG7ZG4.js → chunk-FAOSXPRO.js} +1 -1
- package/dist/{chunk-FWTYR36W.js → chunk-FF5TAMDH.js} +1 -1
- package/dist/chunk-FK73GD2X.js +2 -0
- package/dist/{chunk-YFQ4FOAS.js → chunk-FM4LTGMI.js} +1 -1
- package/dist/chunk-FOUGYDLH.js +11 -0
- package/dist/{chunk-GF76D2DU.js → chunk-GL3ZDOKJ.js} +1 -1
- package/dist/{chunk-5EDINFHF.js → chunk-HWZTQXNM.js} +1 -1
- package/dist/chunk-IOV2BEW7.js +13 -0
- package/dist/{chunk-VFYT3SC5.js → chunk-IPL2DHU4.js} +1 -1
- package/dist/{chunk-MO57LGGK.js → chunk-KDFBKYXK.js} +1 -1
- package/dist/{chunk-LLIHRQPH.js → chunk-LWUA3NUZ.js} +1 -1
- package/dist/chunk-LZO6YBUW.js +2 -0
- package/dist/{chunk-QAV4HW7D.js → chunk-MPDSQALK.js} +1 -1
- package/dist/{chunk-X23L2MF6.js → chunk-NBTC5FNV.js} +1 -1
- package/dist/{chunk-C2275MFP.js → chunk-NPNSUG3N.js} +1 -1
- package/dist/{chunk-S62MK372.js → chunk-OUXWBHCI.js} +1 -1
- package/dist/chunk-PK6PSCIP.js +1 -0
- package/dist/chunk-PZNWH4VQ.js +7 -0
- package/dist/{chunk-BPP7AEFW.js → chunk-R4SSIFKY.js} +1 -1
- package/dist/{chunk-3DGL2ZY3.js → chunk-R4W4QDTP.js} +1 -1
- package/dist/{chunk-EQHKCGSX.js → chunk-RE7DDQ3O.js} +1 -1
- package/dist/{chunk-E2NVNLFD.js → chunk-RS4LSJI2.js} +1 -1
- package/dist/{chunk-QTZPLAYC.js → chunk-RUIX6AZ6.js} +1 -1
- package/dist/{chunk-WKDXH7NO.js → chunk-SBFTRVZM.js} +1 -1
- package/dist/{chunk-SYTQDPPN.js → chunk-SBJNQ5Q6.js} +1 -1
- package/dist/{chunk-VA5DPQB4.js → chunk-SV7FDAKW.js} +1 -1
- package/dist/{chunk-B22HYCBV.js → chunk-TU2AR6XO.js} +1 -1
- package/dist/{chunk-CDDICCY2.js → chunk-UT3EQR4C.js} +1 -1
- package/dist/{chunk-KWNIKGAE.js → chunk-V5XRGRJC.js} +1 -1
- package/dist/{chunk-2B7Y6JNB.js → chunk-W44E3DYZ.js} +1 -1
- package/dist/{chunk-K4B24SMJ.js → chunk-W4ZDAJ6S.js} +1 -1
- package/dist/{chunk-PKLXZYBY.js → chunk-WOBFJCMO.js} +1 -1
- package/dist/chunk-XK52UAFB.js +17 -0
- package/dist/{chunk-6M74HH6Y.js → chunk-XVRQ5WUB.js} +1 -1
- package/dist/{chunk-X3RTCN6S.js → chunk-YWALNDT3.js} +1 -1
- package/dist/{chunk-SANYAPBK.js → chunk-YZNP4TW4.js} +1 -1
- package/dist/{chunk-3AZV7ZPJ.js → chunk-ZXOAI65J.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/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/experiments/list.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/instructions/create.js +1 -1
- package/dist/commands/instructions/dedupe.js +1 -0
- 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/restore.js +1 -1
- package/dist/commands/instructions/retract.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 -1
- package/dist/commands/local/up.js +1 -1
- 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 +4 -4
- 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/auto.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/commands/suggestions/undo.js +1 -1
- package/dist/dashboard/Dashboard.js +1 -1
- package/dist/dashboard/data.js +1 -1
- package/dist/dashboard/launcher/ActiveJobsList.js +1 -1
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
- package/dist/dashboard/launcher/NewLaunchForm.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/claude-md-blocks.js +1 -0
- 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-resume.js +1 -1
- package/dist/lib/eval-run-batch.js +1 -1
- package/dist/lib/eval-workspace.js +1 -1
- package/dist/lib/evolution-enrolment.js +1 -1
- package/dist/lib/handlers/cron-auto-accept-suggestions.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-instruction-training.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-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/judge-review-runner.js +1 -1
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/research-client.js +1 -1
- package/dist/lib/retraction.js +1 -1
- package/dist/lib/setup-steps.js +1 -1
- package/dist/lib/skill-paths.js +1 -0
- package/dist/lib/suggestion-accept.js +1 -1
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/terminal-target-heartbeat.js +1 -1
- package/oclif.manifest.json +151 -257
- package/package.json +7 -7
- package/dist/chunk-3PUOJ6F2.js +0 -45
- package/dist/chunk-DZ3FBQYD.js +0 -17
- package/dist/chunk-FP6QAPNK.js +0 -1
- package/dist/chunk-JZ5Z2BRO.js +0 -7
- package/dist/chunk-L2CFSMBC.js +0 -1
- package/dist/chunk-MMPZIZYZ.js +0 -10
- package/dist/chunk-QWPWY3SW.js +0 -1
- package/dist/chunk-R6JXE273.js +0 -13
- package/dist/commands/convert.js +0 -1
- package/dist/commands/converters.js +0 -1
- package/dist/commands/import.js +0 -1
package/README.md
CHANGED
|
@@ -80,8 +80,7 @@ the active org in the web UI, which the CLI cache picks up).
|
|
|
80
80
|
## Other top-level commands
|
|
81
81
|
|
|
82
82
|
- `rulemetric instructions ...` — list, get, create, delete, fork, promote, pull, upstream, versions
|
|
83
|
-
- `rulemetric
|
|
84
|
-
- `rulemetric import ...` — bulk import from a project tree
|
|
83
|
+
- `rulemetric skills search|install ...` — install a skill to `.agents/skills/` + `.claude/skills/`
|
|
85
84
|
- `rulemetric sessions ...` — list, start, end, import, analyze
|
|
86
85
|
- `rulemetric evals ...` — eval target/case/run/optimize commands + `agent` (background worker)
|
|
87
86
|
- `rulemetric hooks install|uninstall|run <name>` — manage tool hook scripts
|
package/dist/base-command.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-FAOSXPRO.js";import"./chunk-IZTIYR5Q.js";import"./chunk-CLCRZWAG.js";import"./chunk-RE7DDQ3O.js";import"./chunk-SV7FDAKW.js";import"./chunk-3AV3GTMP.js";import"./chunk-MPDSQALK.js";import"./chunk-E4U6AOTM.js";import"./chunk-PZNWH4VQ.js";import"./chunk-ZLLER3HP.js";export{a as BaseCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p,c as Fr}from"./chunk-ZLLER3HP.js";import{boolean as Jr,date as Qr,index as Ot,integer as Yr,jsonb as $r,pgTable as qt,text as A,timestamp as L,uniqueIndex as Wr,uuid as ae}from"drizzle-orm/pg-core";var Co=qt("announcements",{id:ae("id").primaryKey().defaultRandom(),version:A("version").notNull().unique(),releaseDate:Qr("release_date").notNull(),subject:A("subject").notNull(),htmlBody:A("html_body").notNull(),textBody:A("text_body").notNull(),sections:$r("sections").notNull().default({}),status:A("status").notNull().default("draft"),recipientCount:Yr("recipient_count"),sentAt:L("sent_at",{withTimezone:!0}),sentBy:ae("sent_by"),error:A("error"),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ot("idx_announcements_status").on(e.status),Ot("idx_announcements_created").on(e.createdAt)]),Oo=qt("announcement_deliveries",{id:ae("id").primaryKey().defaultRandom(),announcementId:ae("announcement_id").notNull(),userId:ae("user_id").notNull(),email:A("email").notNull(),status:A("status").notNull().default("pending"),providerId:A("provider_id"),error:A("error"),sentAt:L("sent_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Wr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Ot("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),qo=qt("notification_preferences",{userId:ae("user_id").primaryKey(),productAnnouncements:Jr("product_announcements").notNull().default(!0),unsubscribeToken:A("unsubscribe_token").notNull().unique(),unsubscribedAt:L("unsubscribed_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as Ze,integer as Mt,pgTable as Xr,real as Lo,text as et,timestamp as Ht,uuid as Uo}from"drizzle-orm/pg-core";import{pgTable as Xe,text as de,timestamp as je,jsonb as Mo,uuid as X,primaryKey as Ho}from"drizzle-orm/pg-core";var l=Xe("organizations",{id:X("id").primaryKey().defaultRandom(),name:de("name").unique().notNull(),slug:de("slug").unique().notNull(),metadata:Mo("metadata"),createdAt:je("created_at",{withTimezone:!0}).defaultNow(),updatedAt:je("updated_at",{withTimezone:!0}).defaultNow()}),v=Xe("teams",{id:X("id").primaryKey().defaultRandom(),orgId:X("org_id").references(()=>l.id,{onDelete:"cascade"}),name:de("name").notNull(),slug:de("slug").notNull(),metadata:Mo("metadata"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()}),ue=Xe("user_organizations",{userId:X("user_id").notNull(),orgId:X("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:de("role").notNull().default("member"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()},e=>[Ho({columns:[e.userId,e.orgId]})]),le=Xe("user_teams",{userId:X("user_id").notNull(),teamId:X("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:de("role").notNull().default("member"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()},e=>[Ho({columns:[e.userId,e.teamId]})]);var o=Xr("profiles",{id:Uo("id").primaryKey(),email:et("email"),displayName:et("display_name"),activeOrgId:Uo("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:Ze("is_superadmin").notNull().default(!1),claudeCodePlan:et("claude_code_plan"),planSource:et("plan_source").notNull().default("detected"),setupCompletedAt:Ht("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Ze("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:Ze("auto_accept_suggestions").notNull().default(!0),evolutionPaused:Ze("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:Lo("suggestion_confidence_threshold").notNull().default(.7),autoAcceptMinScore:Lo("auto_accept_min_score"),autoAcceptMaxPerRun:Mt("auto_accept_max_per_run"),autoAcceptMaxPerWindow:Mt("auto_accept_max_per_window"),autoAcceptWindowDays:Mt("auto_accept_window_days"),createdAt:Ht("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ht("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Zr,text as Lt,timestamp as tt,uuid as ot,index as Bo}from"drizzle-orm/pg-core";var E=Zr("org_invitations",{id:ot("id").primaryKey().defaultRandom(),orgId:ot("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:Lt("email").notNull(),role:Lt("role").notNull().default("member"),teamId:ot("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:ot("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:Lt("token").notNull().unique(),expiresAt:tt("expires_at",{withTimezone:!0}).notNull(),acceptedAt:tt("accepted_at",{withTimezone:!0}),revokedAt:tt("revoked_at",{withTimezone:!0}),createdAt:tt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Bo("idx_org_invitations_token").on(e.token),Bo("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Ut,text as f,timestamp as U,jsonb as nt,uuid as j,integer as rt,boolean as es,uniqueIndex as st,index as ze}from"drizzle-orm/pg-core";var n=Ut("instructions",{id:j("id").primaryKey().defaultRandom(),name:f("name").notNull(),description:f("description").notNull(),type:f("type").notNull().default("instruction"),scope:f("scope").notNull(),scopeRef:j("scope_ref"),version:f("version").notNull(),content:f("content").notNull(),frontmatter:nt("frontmatter").notNull(),slots:nt("slots"),tags:f("tags").array(),compatibility:f("compatibility").array(),createdBy:j("created_by"),createdAt:U("created_at",{withTimezone:!0}).defaultNow(),updatedAt:U("updated_at",{withTimezone:!0}).defaultNow(),archived:es("archived").default(!1),archivedAt:U("archived_at",{withTimezone:!0}),archivedBy:j("archived_by"),forkedFromId:j("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:f("upstream_version"),badge:f("badge"),contentHash:f("content_hash"),contextIdentity:f("context_identity"),scanScore:rt("scan_score"),scanFindings:nt("scan_findings"),popularityScore:rt("popularity_score"),sourceUpdatedAt:U("source_updated_at",{withTimezone:!0})},e=>[st("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),ze("idx_instructions_scope").on(e.scope,e.scopeRef),ze("idx_instructions_created_by").on(e.createdBy),ze("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),ze("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),Vo=Ut("instruction_version_identities",{id:j("id").primaryKey().defaultRandom(),instructionId:j("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:f("content_hash").notNull(),versionOrdinal:rt("version_ordinal").notNull(),content:f("content"),firstSeenAt:U("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:U("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:U("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[st("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),st("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),ze("idx_ivi_instruction").on(e.instructionId)]),ce=Ut("instruction_versions",{id:j("id").primaryKey().defaultRandom(),instructionId:j("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:rt("version_number").notNull(),content:f("content").notNull(),frontmatter:nt("frontmatter").notNull(),changeSummary:f("change_summary"),createdBy:j("created_by"),createdAt:U("created_at",{withTimezone:!0}).defaultNow()},e=>[st("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as ts,text as os,timestamp as ns,jsonb as rs,uuid as Bt,index as Go}from"drizzle-orm/pg-core";var me=ts("instruction_events",{id:Bt("id").primaryKey().defaultRandom(),instructionId:Bt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:os("event_type").notNull(),actorId:Bt("actor_id").notNull(),metadata:rs("metadata"),createdAt:ns("created_at",{withTimezone:!0}).defaultNow()},e=>[Go("idx_instruction_events_instruction").on(e.instructionId),Go("idx_instruction_events_type").on(e.eventType)]);import{boolean as ss,jsonb as is,pgTable as Gt,primaryKey as Fo,text as Z,timestamp as Re,uniqueIndex as Vt,uuid as ee}from"drizzle-orm/pg-core";import{sql as as}from"drizzle-orm";var r=Gt("projects",{id:ee("id").primaryKey().defaultRandom(),orgId:ee("org_id").references(()=>l.id,{onDelete:"cascade"}),name:Z("name").notNull(),description:Z("description"),githubRepo:Z("github_repo"),gitRemoteUrl:Z("git_remote_url"),gitRootCommit:Z("git_root_commit"),gitRemoteAliases:Z("git_remote_aliases").array().notNull().default([]),metadata:is("metadata"),createdBy:ee("created_by"),createdAt:Re("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Re("updated_at",{withTimezone:!0}).defaultNow()},e=>[Vt("projects_org_name_idx").on(e.orgId,e.name),Vt("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(as`${e.gitRemoteUrl} IS NOT NULL`)]),B=Gt("project_instructions",{projectId:ee("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),instructionId:ee("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:Re("added_at",{withTimezone:!0}).defaultNow(),addedBy:ee("added_by")},e=>[Fo({columns:[e.projectId,e.instructionId]})]),Jo=Gt("project_checkouts",{projectId:ee("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),path:Z("path").notNull(),isWorktree:ss("is_worktree").notNull().default(!1),firstSeen:Re("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:Re("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[Fo({columns:[e.projectId,e.path]}),Vt("project_checkouts_path_unique").on(e.path)]);import{pgTable as Qt,text as I,timestamp as ke,jsonb as te,uuid as b,integer as at,uniqueIndex as Yo,index as z}from"drizzle-orm/pg-core";import{pgTable as ds,text as _e,timestamp as Ft,jsonb as Qo,uuid as it,integer as us,boolean as ls,index as Jt}from"drizzle-orm/pg-core";var g=ds("agent_runs",{id:it("id").primaryKey().defaultRandom(),userId:it("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:it("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:it("project_id").references(()=>r.id,{onDelete:"set null"}),projectPath:_e("project_path"),gitRemote:_e("git_remote"),baseBranch:_e("base_branch"),title:_e("title"),prompt:_e("prompt"),toolSpec:Qo("tool_spec").notNull().default([]),autoWorktree:ls("auto_worktree").notNull().default(!0),status:_e("status").notNull().default("pending"),sessionCount:us("session_count").notNull().default(0),metadata:Qo("metadata").notNull().default({}),createdAt:Ft("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ft("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Ft("completed_at",{withTimezone:!0})},e=>[Jt("idx_agent_runs_user").on(e.userId),Jt("idx_agent_runs_org_created").on(e.orgId,e.createdAt),Jt("idx_agent_runs_project").on(e.projectId)]);var u=Qt("sessions",{id:b("id").primaryKey().defaultRandom(),userId:b("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:b("project_id").references(()=>r.id,{onDelete:"set null"}),orgId:b("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:ke("started_at",{withTimezone:!0}).notNull(),endedAt:ke("ended_at",{withTimezone:!0}),eventCount:at("event_count").default(0),tokenUsage:te("token_usage"),analysis:te("analysis"),analyzedAt:ke("analyzed_at",{withTimezone:!0}),analyzedEventCount:at("analyzed_event_count"),analyzedTurnCount:at("analyzed_turn_count"),metadata:te("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:b("run_id").references(()=>g.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:ke("created_at",{withTimezone:!0}).defaultNow()},e=>[z("idx_sessions_user").on(e.userId),z("idx_sessions_tool").on(e.tool),z("idx_sessions_started_at").on(e.startedAt),z("idx_sessions_project").on(e.projectId),z("idx_sessions_org_started_at").on(e.orgId,e.startedAt),z("idx_sessions_run").on(e.runId),Yo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),pe=Qt("session_events",{id:b("id").primaryKey().defaultRandom(),sessionId:b("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),sequence:at("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:te("tool_input"),toolOutput:te("tool_output"),tokenUsage:te("token_usage"),model:I("model"),timestamp:ke("timestamp",{withTimezone:!0}).notNull(),metadata:te("metadata").default({})},e=>[Yo("session_events_session_sequence_idx").on(e.sessionId,e.sequence),z("idx_session_events_session_id").on(e.sessionId),z("idx_session_events_event_type").on(e.eventType),z("idx_session_events_model").on(e.model)]),V=Qt("session_instructions",{sessionId:b("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),instructionId:b("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[z("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as $o,text as dt,timestamp as Wo,uuid as R,integer as Xo,index as fe,unique as cs}from"drizzle-orm/pg-core";var S=$o("treatment_assignments",{id:R("id").primaryKey().defaultRandom(),userId:R("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:dt("treatment_type").notNull(),treatmentId:R("treatment_id").notNull(),treatmentVersion:Xo("treatment_version").notNull().default(1),projectId:R("project_id").references(()=>r.id,{onDelete:"set null"}),assignedBy:R("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:dt("method").notNull(),assignedAt:Wo("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[fe("idx_treatment_assignments_user").on(e.userId),fe("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),fe("idx_treatment_assignments_project").on(e.projectId)]),P=$o("treatment_exposures",{id:R("id").primaryKey().defaultRandom(),sessionId:R("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),userId:R("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:dt("treatment_type").notNull(),treatmentId:R("treatment_id").notNull(),treatmentVersion:Xo("treatment_version").notNull().default(1),assignmentId:R("assignment_id").references(()=>S.id,{onDelete:"set null"}),method:dt("method").notNull(),exposedAt:Wo("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[cs("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),fe("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),fe("idx_treatment_exposures_user").on(e.userId),fe("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as ms,text as Yt,timestamp as _s,uuid as ut,integer as ps,index as Zo,uniqueIndex as fs}from"drizzle-orm/pg-core";var en=ms("pending_treatment_exposures",{id:ut("id").primaryKey().defaultRandom(),userId:ut("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Yt("external_session_id").notNull(),treatmentType:Yt("treatment_type").notNull(),treatmentId:ut("treatment_id").notNull(),treatmentVersion:ps("treatment_version").notNull().default(1),method:Yt("method").notNull().default("injected"),projectId:ut("project_id").references(()=>r.id,{onDelete:"set null"}),createdAt:_s("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[fs("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Zo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Zo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as tn,text as G,timestamp as on,uuid as xe,numeric as xs,index as $t,unique as Ns}from"drizzle-orm/pg-core";var Ee=tn("instruction_experiments",{id:xe("id").primaryKey().defaultRandom(),userId:xe("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:xe("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:G("project_path").notNull(),status:G("status").notNull().default("running"),treatedShare:xs("treated_share").notNull().default("0.5"),salt:G("salt").notNull(),contentHash:G("content_hash"),source:G("source").notNull().default("manual"),stoppedReason:G("stopped_reason"),createdAt:on("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[$t("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),nn=tn("instruction_experiment_arms",{id:xe("id").primaryKey().defaultRandom(),experimentId:xe("experiment_id").notNull().references(()=>Ee.id,{onDelete:"cascade"}),userId:xe("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:G("external_session_id").notNull(),arm:G("arm").notNull(),assignedAt:on("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ns("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),$t("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),$t("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{pgTable as gs,text as Wt,timestamp as hs,uuid as lt,numeric as Xt,integer as rn,jsonb as vs,index as Is,unique as ys}from"drizzle-orm/pg-core";var sn=gs("instruction_verdicts",{id:lt("id").primaryKey().defaultRandom(),userId:lt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:lt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:Wt("content_hash").notNull(),projectPath:Wt("project_path").notNull(),segment:vs("segment").notNull().default({}),decision:Wt("decision").notNull(),delta:Xt("delta").notNull(),ciLower:Xt("ci_lower").notNull(),ciUpper:Xt("ci_upper").notNull(),nTreated:rn("n_treated").notNull(),nControl:rn("n_control").notNull(),experimentId:lt("experiment_id").references(()=>Ee.id,{onDelete:"set null"}),decidedAt:hs("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ys("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),Is("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as Ts,text as ct,timestamp as Zt,uuid as eo,integer as ws,unique as As,index as Ds}from"drizzle-orm/pg-core";var an=Ts("insight_recommendation_log",{id:eo("id").primaryKey().defaultRandom(),userId:eo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:ct("project_path").notNull().default(""),category:ct("category").notNull(),contentHash:ct("content_hash").notNull(),label:ct("label").notNull().default(""),firstSeenAt:Zt("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Zt("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:ws("times_generated").notNull().default(1),lastJobId:eo("last_job_id"),dismissedAt:Zt("dismissed_at",{withTimezone:!0})},e=>[As("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),Ds("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as js,text as Ne,timestamp as to,uuid as be,integer as dn,index as mt}from"drizzle-orm/pg-core";var y=js("memories",{id:be("id").primaryKey().defaultRandom(),userId:be("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:be("org_id"),projectId:be("project_id").references(()=>r.id,{onDelete:"set null"}),version:dn("version").notNull().default(1),parentId:be("parent_id").references(()=>y.id,{onDelete:"set null"}),kind:Ne("kind").notNull(),title:Ne("title").notNull(),body:Ne("body").notNull(),source:Ne("source").notNull(),status:Ne("status").notNull().default("active"),trustClass:Ne("trust_class"),trustVersion:dn("trust_version"),trustComputedAt:to("trust_computed_at",{withTimezone:!0}),createdAt:to("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:to("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[mt("idx_memories_user").on(e.userId),mt("idx_memories_project").on(e.projectId),mt("idx_memories_parent").on(e.parentId),mt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as zs,text as Se,timestamp as oo,uuid as no,integer as un,jsonb as Rs,index as ln}from"drizzle-orm/pg-core";var cn=zs("memory_experiments",{id:no("id").primaryKey().defaultRandom(),memoryId:no("memory_id").notNull().references(()=>y.id,{onDelete:"cascade"}),userId:no("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:un("memory_version").notNull().default(1),taskPrompt:Se("task_prompt").notNull(),expectations:Se("expectations").array().notNull().default([]),trials:un("trials").notNull().default(10),model:Se("model"),status:Se("status").notNull().default("pending"),result:Rs("result").$type(),error:Se("error"),createdAt:oo("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:oo("started_at",{withTimezone:!0}),completedAt:oo("completed_at",{withTimezone:!0})},e=>[ln("idx_memory_experiments_memory").on(e.memoryId),ln("idx_memory_experiments_user").on(e.userId)]);import{pgTable as ks,text as ge,timestamp as ro,uuid as so,jsonb as Es,uniqueIndex as bs,index as mn}from"drizzle-orm/pg-core";var _t=ks("session_terminal_targets",{id:so("id").primaryKey().defaultRandom(),userId:so("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:so("session_id").references(()=>u.id,{onDelete:"set null"}),externalSessionId:ge("external_session_id"),kind:ge("kind").notNull(),target:ge("target").notNull(),status:ge("status").notNull().default("active"),attachCommand:ge("attach_command").notNull(),projectPath:ge("project_path"),metadata:Es("metadata").notNull().default({}),lastSeenAt:ro("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:ro("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ro("updated_at",{withTimezone:!0}).defaultNow()},e=>[bs("idx_session_terminal_targets_user_target").on(e.userId,e.target),mn("idx_session_terminal_targets_session").on(e.sessionId),mn("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as Ss,index as pt,jsonb as _n,pgTable as Ps,text as oe,timestamp as Pe,uuid as ft,integer as pn}from"drizzle-orm/pg-core";var fn=Ps("session_send_jobs",{id:ft("id").primaryKey().defaultRandom(),userId:ft("user_id").notNull(),sessionId:ft("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),terminalTargetId:ft("terminal_target_id").references(()=>_t.id,{onDelete:"set null"}),target:oe("target").notNull(),message:oe("message").notNull(),submit:Ss("submit").notNull().default(!0),delivery:oe("delivery").notNull().default("live"),status:oe("status").notNull().default("pending"),result:_n("result"),error:oe("error"),attempts:pn("attempts").notNull().default(0),taskKind:oe("task_kind"),payload:_n("payload"),claimedBy:oe("claimed_by"),claimedAt:Pe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Pe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:pn("lease_recoveries").notNull().default(0),createdAt:Pe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Pe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Pe("completed_at",{withTimezone:!0})},e=>[pt("idx_session_send_jobs_user").on(e.userId),pt("idx_session_send_jobs_session").on(e.sessionId),pt("idx_session_send_jobs_status").on(e.status),pt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Nn,text as ne,timestamp as xt,jsonb as gn,uuid as F,integer as Ks,boolean as Cs,uniqueIndex as Os,index as xn,primaryKey as qs}from"drizzle-orm/pg-core";var D=Nn("packs",{id:F("id").primaryKey().defaultRandom(),name:ne("name").notNull(),description:ne("description").notNull(),scope:ne("scope").notNull(),scopeRef:F("scope_ref"),version:ne("version").notNull().default("1.0.0"),tags:ne("tags").array(),badge:ne("badge"),metadata:gn("metadata"),createdBy:F("created_by"),createdAt:xt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:xt("updated_at",{withTimezone:!0}).defaultNow(),archived:Cs("archived").default(!1),archivedAt:xt("archived_at",{withTimezone:!0}),archivedBy:F("archived_by"),forkedFromId:F("forked_from_id").references(()=>D.id,{onDelete:"set null"}),upstreamVersion:ne("upstream_version")},e=>[Os("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),xn("idx_packs_scope").on(e.scope,e.scopeRef),xn("idx_packs_created_by").on(e.createdBy)]),J=Nn("pack_instructions",{packId:F("pack_id").references(()=>D.id,{onDelete:"cascade"}).notNull(),instructionId:F("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:Ks("position").notNull().default(0),slotOverrides:gn("slot_overrides"),addedAt:xt("added_at",{withTimezone:!0}).defaultNow(),addedBy:F("added_by")},e=>[qs({columns:[e.packId,e.instructionId]})]);import{pgTable as Ms,text as io,timestamp as Hs,jsonb as Ls,uuid as ao,index as he}from"drizzle-orm/pg-core";var ve=Ms("instruction_usage_events",{id:ao("id").primaryKey().defaultRandom(),instructionId:ao("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:ao("user_id").notNull(),surface:io("surface").notNull(),action:io("action").notNull(),metadata:Ls("metadata"),traceId:io("trace_id"),createdAt:Hs("created_at",{withTimezone:!0}).defaultNow()},e=>[he("idx_usage_events_instruction").on(e.instructionId),he("idx_usage_events_user").on(e.userId),he("idx_usage_events_surface").on(e.surface),he("idx_usage_events_action").on(e.action),he("idx_usage_events_created_at").on(e.createdAt),he("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as Us,text as Nt,timestamp as hn,jsonb as Bs,uuid as vn,index as uo}from"drizzle-orm/pg-core";var In=Us("worker_connections",{id:vn("id").primaryKey().defaultRandom(),userId:vn("user_id").notNull(),workerType:Nt("worker_type").notNull().default("mcp"),clientName:Nt("client_name").notNull(),clientVersion:Nt("client_version"),workerVersion:Nt("worker_version"),lastHeartbeat:hn("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:hn("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Bs("metadata")},e=>[uo("idx_worker_connections_user").on(e.userId),uo("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),uo("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Vs,text as gt,timestamp as Gs,jsonb as Fs,uuid as yn,index as Tn}from"drizzle-orm/pg-core";var wn=Vs("cli_setup_events",{id:yn("id").primaryKey().defaultRandom(),userId:yn("user_id").notNull(),deviceId:gt("device_id").notNull(),event:gt("event").notNull(),cliVersion:gt("cli_version"),os:gt("os"),props:Fs("props").notNull().default({}),createdAt:Gs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Tn("idx_cli_setup_events_user").on(e.userId,e.createdAt),Tn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as Js,text as re,integer as Qs,boolean as Ys,timestamp as $s,jsonb as Ws,uuid as Xs,index as An}from"drizzle-orm/pg-core";var Dn=Js("cli_error_events",{id:Xs("id").primaryKey().defaultRandom(),deviceId:re("device_id"),event:re("event").notNull(),command:re("command"),statusCode:Qs("status_code"),message:re("message"),cliVersion:re("cli_version"),os:re("os"),nodeVersion:re("node_version"),proxied:Ys("proxied"),props:Ws("props").notNull().default({}),createdAt:$s("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[An("idx_cli_error_events_created").on(e.createdAt),An("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as Zs}from"drizzle-orm";import{pgTable as se,text as m,timestamp as h,jsonb as T,uuid as c,integer as K,boolean as Ke,index as x,unique as jn}from"drizzle-orm/pg-core";var s=se("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:m("name").notNull(),type:m("type").notNull(),content:m("content").notNull(),description:m("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:K("version").notNull().default(1),parentId:c("parent_id").references(()=>s.id,{onDelete:"set null"}),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("eval_targets_name_user_idx").on(e.name,e.userId),x("idx_eval_targets_user").on(e.userId),x("idx_eval_targets_type").on(e.type),x("idx_eval_targets_parent").on(e.parentId)]),C=se("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),name:m("name").notNull(),prompt:m("prompt").notNull(),expectedOutput:m("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),retiredAt:h("retired_at",{withTimezone:!0}),retiredReason:m("retired_reason"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:h("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[x("idx_evals_target").on(e.evalTargetId),x("idx_evals_target_active").on(e.evalTargetId).where(Zs`${e.retiredAt} IS NULL`)]),k=se("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>C.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),evalTargetVersion:K("eval_target_version").notNull(),configuration:m("configuration").notNull(),runNumber:K("run_number").notNull().default(1),iteration:K("iteration").notNull().default(1),status:m("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_runs_eval").on(e.evalId),x("idx_eval_runs_target").on(e.evalTargetId),x("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),zn=se("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>s.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>s.id,{onDelete:"cascade"}),targetAVersion:K("target_a_version").notNull(),targetBVersion:K("target_b_version").notNull(),isSwapped:Ke("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>s.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:m("raw_output"),model:m("model"),status:m("status").notNull().default("completed"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_comparisons_target_a").on(e.targetAId),x("idx_eval_comparisons_target_b").on(e.targetBId),x("idx_eval_comparisons_user").on(e.userId)]),Rn=se("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>k.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:Ke("judge_passed").notNull(),judgeMethod:m("judge_method").notNull(),judgeModel:m("judge_model"),verdict:m("verdict").notNull(),flag:m("flag"),note:m("note"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_grade_annotations_target").on(e.evalTargetId),x("idx_eval_grade_annotations_run").on(e.evalRunId),jn("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),kn=se("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>k.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:Ke("judge_passed").notNull(),humanPassed:Ke("human_passed").notNull(),reviewerEngine:m("reviewer_engine").notNull(),reviewerModel:m("reviewer_model").notNull(),reviewerPassed:Ke("reviewer_passed").notNull(),resolvedAt:h("resolved_at",{withTimezone:!0}),resolution:m("resolution"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_jrv_target").on(e.evalTargetId),jn("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),Ie=se("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),iteration:K("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_benchmarks_target").on(e.evalTargetId)]);import{sql as lo}from"drizzle-orm";import{pgTable as ei,text as O,timestamp as ti,jsonb as ht,uuid as vt,boolean as oi,index as Ce,uniqueIndex as ni}from"drizzle-orm/pg-core";var En=ei("instruction_promotions",{id:vt("id").primaryKey().defaultRandom(),userId:vt("user_id").notNull(),evalTargetId:vt("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),instructionId:vt("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:O("from_content_hash").notNull(),toContentHash:O("to_content_hash").notNull(),fromContent:O("from_content").notNull(),toContent:O("to_content").notNull(),proposalSource:O("proposal_source").notNull(),proposalRationale:O("proposal_rationale").notNull().default(""),decision:O("decision").notNull(),applied:oi("applied").notNull().default(!1),refusals:ht("refusals").notNull().default([]),rationale:O("rationale").notNull().default(""),effectClass:O("effect_class").notNull(),verdict:ht("verdict").notNull().default({}),gates:ht("gates").notNull().default({}),touchedSections:ht("touched_sections").notNull().default([]),createdAt:ti("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ce("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(lo`${e.applied}`),Ce("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Ce("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Ce("idx_instruction_promotions_to_hash").on(e.toContentHash),ni("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(lo`${e.applied}`),Ce("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(lo`${e.applied}`)]);import{pgTable as ri,text as Q,timestamp as si,jsonb as Oe,uuid as co,integer as mo,real as ii,index as qe,uniqueIndex as bn}from"drizzle-orm/pg-core";var Y=ri("context_snapshots",{id:co("id").primaryKey().defaultRandom(),sessionId:co("session_id").references(()=>u.id,{onDelete:"cascade"}),userId:co("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:mo("sequence").notNull().default(0),provider:Q("provider").notNull(),model:Q("model").notNull(),systemPrompt:Q("system_prompt").notNull(),injectedInstructions:Oe("injected_instructions").notNull().default([]),messagesSummary:Oe("messages_summary").notNull(),tools:Oe("tools").notNull().default([]),systemHash:Q("system_hash").notNull(),requestHash:Q("request_hash").notNull().default(""),toolsHash:Q("tools_hash"),injectedHash:Q("injected_hash"),messagesDelta:Oe("messages_delta").default([]),messagesDeltaRef:Q("messages_delta_ref"),maxTokens:mo("max_tokens"),temperature:ii("temperature"),estimatedTokens:mo("estimated_tokens"),capturedAt:si("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Oe("metadata").default({})},e=>[qe("idx_context_snapshots_session").on(e.sessionId),qe("idx_context_snapshots_user").on(e.userId),qe("idx_context_snapshots_hash").on(e.systemHash),qe("idx_context_snapshots_request_hash").on(e.requestHash),bn("idx_snapshots_session_request").on(e.sessionId,e.requestHash),bn("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),qe("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc())]);import{pgTable as ai,text as Sn,timestamp as di,jsonb as ui,integer as li,index as ci}from"drizzle-orm/pg-core";var Pn=ai("content_blobs",{hash:Sn("hash").primaryKey(),contentType:Sn("content_type").notNull(),content:ui("content").notNull(),sizeBytes:li("size_bytes").notNull().default(0),createdAt:di("created_at",{withTimezone:!0}).defaultNow()},e=>[ci("idx_content_blobs_type").on(e.contentType)]);import{pgTable as mi,text as It,timestamp as Me,jsonb as yt,uuid as _o,index as Tt,integer as Kn}from"drizzle-orm/pg-core";var ye=mi("eval_jobs",{id:_o("id").primaryKey().defaultRandom(),userId:_o("user_id").notNull(),evalTargetId:_o("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),status:It("status").notNull().default("pending"),config:yt("config").notNull().default({}),progress:yt("progress").notNull().default({}),result:yt("result"),error:It("error"),attempts:Kn("attempts").notNull().default(0),taskKind:It("task_kind"),payload:yt("payload"),claimedBy:It("claimed_by"),claimedAt:Me("claimed_at",{withTimezone:!0}),leaseExpiresAt:Me("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Kn("lease_recoveries").notNull().default(0),createdAt:Me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Me("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Me("completed_at",{withTimezone:!0})},e=>[Tt("idx_eval_jobs_user").on(e.userId),Tt("idx_eval_jobs_target").on(e.evalTargetId),Tt("idx_eval_jobs_status").on(e.status),Tt("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as _i,text as He,timestamp as Le,jsonb as Cn,uuid as On,integer as qn,index as Mn}from"drizzle-orm/pg-core";var Hn=_i("agent_jobs",{id:On("id").primaryKey().defaultRandom(),userId:On("user_id").notNull(),taskKind:He("task_kind").notNull(),status:He("status").notNull().default("pending"),payload:Cn("payload").notNull(),dedupeKey:He("dedupe_key"),result:Cn("result"),error:He("error"),attempts:qn("attempts").notNull().default(0),claimedBy:He("claimed_by"),claimedAt:Le("claimed_at",{withTimezone:!0}),leaseExpiresAt:Le("lease_expires_at",{withTimezone:!0}),leaseRecoveries:qn("lease_recoveries").notNull().default(0),createdAt:Le("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Le("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Le("completed_at",{withTimezone:!0})},e=>[Mn("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),Mn("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as pi,text as Ue,timestamp as Be,jsonb as wt,uuid as po,index as At,integer as Ln}from"drizzle-orm/pg-core";var Un=pi("insights_jobs",{id:po("id").primaryKey().defaultRandom(),userId:po("user_id").notNull(),status:Ue("status").notNull().default("pending"),projectPath:Ue("project_path"),projectId:po("project_id").references(()=>r.id,{onDelete:"set null"}),config:wt("config").notNull().default({}),progress:wt("progress").notNull().default({}),result:wt("result"),error:Ue("error"),attempts:Ln("attempts").notNull().default(0),taskKind:Ue("task_kind"),payload:wt("payload"),claimedBy:Ue("claimed_by"),claimedAt:Be("claimed_at",{withTimezone:!0}),leaseExpiresAt:Be("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Ln("lease_recoveries").notNull().default(0),createdAt:Be("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Be("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Be("completed_at",{withTimezone:!0})},e=>[At("idx_insights_jobs_user").on(e.userId),At("idx_insights_jobs_status").on(e.status),At("idx_insights_jobs_pending").on(e.userId,e.status),At("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as fi,text as fo,timestamp as Dt,uuid as Bn,index as xi,uniqueIndex as Ni}from"drizzle-orm/pg-core";var Te=fi("api_keys",{id:Bn("id").primaryKey().defaultRandom(),userId:Bn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:fo("name").notNull(),keyHash:fo("key_hash").notNull(),keyPrefix:fo("key_prefix").notNull(),lastUsedAt:Dt("last_used_at",{withTimezone:!0}),expiresAt:Dt("expires_at",{withTimezone:!0}),revokedAt:Dt("revoked_at",{withTimezone:!0}),createdAt:Dt("created_at",{withTimezone:!0}).defaultNow()},e=>[xi("idx_api_keys_user").on(e.userId),Ni("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as gi,text as xo,timestamp as Vn,uuid as hi,index as vi}from"drizzle-orm/pg-core";var Gn=gi("extension_auth_codes",{code:xo("code").primaryKey(),userId:hi("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:xo("editor"),email:xo("email"),expiresAt:Vn("expires_at",{withTimezone:!0}).notNull(),createdAt:Vn("created_at",{withTimezone:!0}).defaultNow()},e=>[vi("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Ii,text as yi,timestamp as Fn,jsonb as Ti,uuid as No,index as Jn}from"drizzle-orm/pg-core";var we=Ii("eval_conversations",{id:No("id").primaryKey().defaultRandom(),evalTargetId:No("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),userId:No("user_id").notNull(),messages:Ti("messages").notNull().default([]),status:yi("status").notNull().default("active"),createdAt:Fn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Fn("updated_at",{withTimezone:!0}).defaultNow()},e=>[Jn("idx_eval_conversations_target").on(e.evalTargetId),Jn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as wi,text as q,timestamp as Qn,jsonb as Ai,uuid as go}from"drizzle-orm/pg-core";var Yn=wi("skill_submissions",{id:go("id").primaryKey().defaultRandom(),skillId:q("skill_id").notNull(),name:q("name").notNull(),description:q("description").notNull(),category:q("category").notNull(),tools:q("tools").array().notNull(),tags:q("tags").array().default([]),content:q("content").notNull(),status:q("status").notNull().default("pending"),submittedBy:go("submitted_by").notNull(),reviewedBy:go("reviewed_by"),reviewNote:q("review_note"),metadata:Ai("metadata"),createdAt:Qn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Qn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Di,text as Ve,timestamp as $n,jsonb as ji,uuid as zi,uniqueIndex as Ri,index as Wn}from"drizzle-orm/pg-core";var Xn=Di("harness_releases",{id:zi("id").primaryKey().defaultRandom(),harness:Ve("harness").notNull(),version:Ve("version").notNull(),publishedAt:$n("published_at",{withTimezone:!0}).notNull(),title:Ve("title"),body:Ve("body"),categories:ji("categories").default({}),url:Ve("url"),createdAt:$n("created_at",{withTimezone:!0}).defaultNow()},e=>[Ri("idx_harness_releases_unique").on(e.harness,e.version),Wn("idx_harness_releases_harness").on(e.harness),Wn("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as ki,text as Ae,timestamp as Zn,jsonb as Ei,uuid as er,index as tr,uniqueIndex as bi}from"drizzle-orm/pg-core";var ho=ki("notifications",{id:er("id").primaryKey().defaultRandom(),userId:er("user_id").notNull(),type:Ae("type").notNull(),title:Ae("title").notNull(),body:Ae("body"),url:Ae("url"),sourceTable:Ae("source_table"),sourceId:Ae("source_id"),metadata:Ei("metadata").notNull().default({}),readAt:Zn("read_at",{withTimezone:!0}),createdAt:Zn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[tr("idx_notifications_user_created").on(e.userId,e.createdAt),tr("idx_notifications_user_unread").on(e.userId),bi("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as Si,text as Ge,timestamp as Fe,jsonb as vo,uuid as Io,index as jt,integer as or}from"drizzle-orm/pg-core";var De=Si("launch_jobs",{id:Io("id").primaryKey().defaultRandom(),userId:Io("user_id").notNull(),tool:Ge("tool").notNull(),status:Ge("status").notNull().default("pending"),config:vo("config").notNull().default({}),result:vo("result"),error:Ge("error"),attempts:or("attempts").notNull().default(0),taskKind:Ge("task_kind"),payload:vo("payload"),claimedBy:Ge("claimed_by"),claimedAt:Fe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Fe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:or("lease_recoveries").notNull().default(0),createdAt:Fe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Fe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Fe("completed_at",{withTimezone:!0}),runId:Io("run_id").references(()=>g.id,{onDelete:"set null"})},e=>[jt("idx_launch_jobs_user").on(e.userId),jt("idx_launch_jobs_status").on(e.status),jt("idx_launch_jobs_pending").on(e.userId,e.status),jt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as nr,uuid as M,text as $,real as Pi,timestamp as Je,boolean as Ki,uniqueIndex as Ci,index as Qe}from"drizzle-orm/pg-core";var rr=["add","remove","trim"],yo=nr("instruction_suggestions",{id:M("id").primaryKey().defaultRandom(),userId:M("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:M("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:$("project_path").notNull(),projectId:M("project_id").references(()=>r.id,{onDelete:"set null"}),score:Pi("score").notNull(),reason:$("reason").notNull(),kind:$("kind").$type().notNull().default("add"),generatedAt:Je("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Ki("is_stale").notNull().default(!1),dismissedAt:Je("dismissed_at",{withTimezone:!0}),acceptedAt:Je("accepted_at",{withTimezone:!0}),declinedAt:Je("declined_at",{withTimezone:!0}),declinedReason:$("declined_reason"),promotedToInstructionId:M("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Ci("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),Qe("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),Qe("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),Qe("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),sr=nr("instruction_suggestion_events",{id:M("id").primaryKey().defaultRandom(),suggestionId:M("suggestion_id").notNull().references(()=>yo.id,{onDelete:"cascade"}),userId:M("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:$("event_type").notNull(),tool:$("tool"),sessionId:M("session_id"),projectPath:$("project_path").notNull(),actor:$("actor"),createdAt:Je("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qe("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),Qe("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as Oi,text as To,integer as qi,numeric as Ye,timestamp as wo,index as Mi,primaryKey as Hi}from"drizzle-orm/pg-core";var ir=Oi("model_pricing",{provider:To("provider").notNull(),modelId:To("model_id").notNull(),inputPerM:Ye("input_per_m").notNull(),outputPerM:Ye("output_per_m").notNull(),cacheReadPerM:Ye("cache_read_per_m").notNull(),cacheWrite5mPerM:Ye("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:Ye("cache_write_1h_per_m").notNull(),contextWindow:qi("context_window"),effectiveFrom:wo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:wo("effective_until",{withTimezone:!0}),source:To("source").notNull(),verifiedAt:wo("verified_at",{withTimezone:!0})},e=>[Hi({columns:[e.provider,e.modelId,e.effectiveFrom]}),Mi("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Li,text as ie,numeric as ar,timestamp as dr,uuid as ur,jsonb as Ui,index as lr}from"drizzle-orm/pg-core";var cr=Li("limit_observations",{id:ur("id").primaryKey().defaultRandom(),observedAt:dr("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:ie("provider").notNull(),plan:ie("plan").notNull(),limitType:ie("limit_type").notNull(),value:ar("value").notNull(),unit:ie("unit").notNull(),comparator:ie("comparator").notNull().default("="),resetsAt:dr("resets_at",{withTimezone:!0}),sourceType:ie("source_type").notNull(),sourceUrl:ie("source_url"),sourceEvidence:Ui("source_evidence"),confidence:ar("confidence").notNull(),userId:ur("user_id")},e=>[lr("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),lr("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as Bi,text as zt,timestamp as Vi,uuid as Gi,jsonb as Fi,boolean as Ji,uniqueIndex as Qi}from"drizzle-orm/pg-core";var mr=Bi("provider_docs_snapshots",{id:Gi("id").primaryKey().defaultRandom(),fetchedAt:Vi("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:zt("provider").notNull(),docUrl:zt("doc_url").notNull(),contentHash:zt("content_hash").notNull(),content:zt("content").notNull(),parseSuccess:Ji("parse_success").notNull(),parseErrors:Fi("parse_errors")},e=>[Qi("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Yi,text as Rt,numeric as _r,timestamp as pr,uuid as $i,primaryKey as Wi,index as Xi}from"drizzle-orm/pg-core";var fr=Yi("plan_limits_active",{provider:Rt("provider").notNull(),plan:Rt("plan").notNull(),limitType:Rt("limit_type").notNull(),value:_r("value").notNull(),unit:Rt("unit").notNull(),effectiveFrom:pr("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:pr("effective_until",{withTimezone:!0}),confidence:_r("confidence").notNull(),sourceObservationIds:$i("source_observation_ids").array().notNull()},e=>[Wi({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),Xi("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as Zi,text as Ao,timestamp as ea,uuid as xr,jsonb as ta,index as oa}from"drizzle-orm/pg-core";var Nr=Zi("alert_dispatches",{id:xr("id").primaryKey().defaultRandom(),userId:xr("user_id").notNull(),alertKey:Ao("alert_key").notNull(),severity:Ao("severity").notNull(),lastDispatchedAt:ea("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:ta("last_state").notNull(),channel:Ao("channel").notNull()},e=>[oa("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{pgTable as na,text as Do,timestamp as gr,uuid as jo,integer as ra,index as sa,unique as ia}from"drizzle-orm/pg-core";var hr=na("scaffolding_fingerprints",{id:jo("id").primaryKey().defaultRandom(),userId:jo("user_id").notNull(),harness:Do("harness").notNull(),model:Do("model").notNull(),toolsHash:Do("tools_hash").notNull(),firstSeenAt:gr("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:gr("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:ra("snapshot_count").notNull().default(1),firstSessionId:jo("first_session_id")},e=>[ia("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),sa("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as aa,text as zo,timestamp as da,jsonb as ua,uuid as vr,integer as la,unique as ca}from"drizzle-orm/pg-core";var Ir=aa("scaffolding_segments",{id:vr("id").primaryKey().defaultRandom(),userId:vr("user_id").notNull(),harness:zo("harness").notNull(),model:zo("model").notNull(),coreNames:ua("core_names").notNull(),coreHash:zo("core_hash").notNull(),activeFingerprints:la("active_fingerprints").notNull(),computedAt:da("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ca("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{drizzle as Dr}from"drizzle-orm/postgres-js";import jr from"postgres";var kt={};Fr(kt,{SUGGESTION_KINDS:()=>rr,agentJobs:()=>Hn,agentRuns:()=>g,agentRunsRelations:()=>Da,alertDispatches:()=>Nr,announcementDeliveries:()=>Oo,announcements:()=>Co,apiKeys:()=>Te,apiKeysRelations:()=>_a,benchmarks:()=>Ie,benchmarksRelations:()=>qa,cliErrorEvents:()=>Dn,cliSetupEvents:()=>wn,contentBlobs:()=>Pn,contextSnapshots:()=>Y,contextSnapshotsRelations:()=>La,evalComparisons:()=>zn,evalConversations:()=>we,evalConversationsRelations:()=>Ha,evalGradeAnnotations:()=>Rn,evalJobs:()=>ye,evalJobsRelations:()=>Ma,evalRuns:()=>k,evalRunsRelations:()=>Oa,evalTargets:()=>s,evalTargetsRelations:()=>Ka,evals:()=>C,evalsRelations:()=>Ca,extensionAuthCodes:()=>Gn,harnessReleases:()=>Xn,insightRecommendationLog:()=>an,insightsJobs:()=>Un,instructionEvents:()=>me,instructionEventsRelations:()=>va,instructionExperimentArms:()=>nn,instructionExperiments:()=>Ee,instructionPromotions:()=>En,instructionSuggestionEvents:()=>sr,instructionSuggestions:()=>yo,instructionUsageEvents:()=>ve,instructionUsageEventsRelations:()=>Pa,instructionVerdicts:()=>sn,instructionVersionIdentities:()=>Vo,instructionVersions:()=>ce,instructionVersionsRelations:()=>ya,instructions:()=>n,instructionsRelations:()=>ha,judgeReviewerVerdicts:()=>kn,launchJobs:()=>De,launchJobsRelations:()=>ja,limitObservations:()=>cr,memories:()=>y,memoriesRelations:()=>Ia,memoryExperiments:()=>cn,modelPricing:()=>ir,notificationPreferences:()=>qo,notifications:()=>ho,orgInvitations:()=>E,orgInvitationsRelations:()=>xa,organizations:()=>l,organizationsRelations:()=>pa,packInstructions:()=>J,packInstructionsRelations:()=>Sa,packs:()=>D,packsRelations:()=>ba,pendingTreatmentExposures:()=>en,planLimitsActive:()=>fr,profiles:()=>o,profilesRelations:()=>ma,projectCheckouts:()=>Jo,projectInstructions:()=>B,projectInstructionsRelations:()=>wa,projects:()=>r,projectsRelations:()=>Ta,providerDocsSnapshots:()=>mr,scaffoldingFingerprints:()=>hr,scaffoldingSegments:()=>Ir,sessionEvents:()=>pe,sessionEventsRelations:()=>za,sessionInstructions:()=>V,sessionInstructionsRelations:()=>Ra,sessionSendJobs:()=>fn,sessionTerminalTargets:()=>_t,sessions:()=>u,sessionsRelations:()=>Aa,skillSubmissions:()=>Yn,teams:()=>v,teamsRelations:()=>fa,treatmentAssignments:()=>S,treatmentAssignmentsRelations:()=>ka,treatmentExposures:()=>P,treatmentExposuresRelations:()=>Ea,userOrganizations:()=>ue,userOrganizationsRelations:()=>Na,userTeams:()=>le,userTeamsRelations:()=>ga,workerConnections:()=>In});import{relations as i}from"drizzle-orm";var ma=i(o,({many:e})=>({sessions:e(u),contextSnapshots:e(Y),apiKeys:e(Te)})),_a=i(Te,({one:e})=>({profile:e(o,{fields:[Te.userId],references:[o.id]})})),pa=i(l,({many:e})=>({teams:e(v),userOrganizations:e(ue),projects:e(r),invitations:e(E)})),fa=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(le),invitations:t(E)})),xa=i(E,({one:e})=>({organization:e(l,{fields:[E.orgId],references:[l.id]}),team:e(v,{fields:[E.teamId],references:[v.id]}),inviter:e(o,{fields:[E.invitedBy],references:[o.id]})})),Na=i(ue,({one:e})=>({organization:e(l,{fields:[ue.orgId],references:[l.id]})})),ga=i(le,({one:e})=>({team:e(v,{fields:[le.teamId],references:[v.id]})})),ha=i(n,({one:e,many:t})=>({versions:t(ce),projectInstructions:t(B),events:t(me),usageEvents:t(ve),sessionInstructions:t(V),packInstructions:t(J),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),va=i(me,({one:e})=>({instruction:e(n,{fields:[me.instructionId],references:[n.id]})})),Ia=i(y,({one:e,many:t})=>({project:e(r,{fields:[y.projectId],references:[r.id]}),parent:e(y,{fields:[y.parentId],references:[y.id]}),versions:t(y)})),ya=i(ce,({one:e})=>({instruction:e(n,{fields:[ce.instructionId],references:[n.id]})})),Ta=i(r,({one:e,many:t})=>({organization:e(l,{fields:[r.orgId],references:[l.id]}),projectInstructions:t(B),sessions:t(u)})),wa=i(B,({one:e})=>({project:e(r,{fields:[B.projectId],references:[r.id]}),instruction:e(n,{fields:[B.instructionId],references:[n.id]})})),Aa=i(u,({one:e,many:t})=>({profile:e(o,{fields:[u.userId],references:[o.id]}),project:e(r,{fields:[u.projectId],references:[r.id]}),run:e(g,{fields:[u.runId],references:[g.id]}),events:t(pe),sessionInstructions:t(V),treatmentExposures:t(P),contextSnapshots:t(Y)})),Da=i(g,({one:e,many:t})=>({profile:e(o,{fields:[g.userId],references:[o.id]}),organization:e(l,{fields:[g.orgId],references:[l.id]}),project:e(r,{fields:[g.projectId],references:[r.id]}),sessions:t(u),launchJobs:t(De)})),ja=i(De,({one:e})=>({run:e(g,{fields:[De.runId],references:[g.id]})})),za=i(pe,({one:e})=>({session:e(u,{fields:[pe.sessionId],references:[u.id]})})),Ra=i(V,({one:e})=>({session:e(u,{fields:[V.sessionId],references:[u.id]}),instruction:e(n,{fields:[V.instructionId],references:[n.id]})})),ka=i(S,({one:e,many:t})=>({owner:e(o,{fields:[S.userId],references:[o.id]}),project:e(r,{fields:[S.projectId],references:[r.id]}),exposures:t(P)})),Ea=i(P,({one:e})=>({session:e(u,{fields:[P.sessionId],references:[u.id]}),owner:e(o,{fields:[P.userId],references:[o.id]}),assignment:e(S,{fields:[P.assignmentId],references:[S.id]})})),ba=i(D,({one:e,many:t})=>({packInstructions:t(J),forkedFrom:e(D,{fields:[D.forkedFromId],references:[D.id]})})),Sa=i(J,({one:e})=>({pack:e(D,{fields:[J.packId],references:[D.id]}),instruction:e(n,{fields:[J.instructionId],references:[n.id]})})),Pa=i(ve,({one:e})=>({instruction:e(n,{fields:[ve.instructionId],references:[n.id]})})),Ka=i(s,({one:e,many:t})=>({parent:e(s,{fields:[s.parentId],references:[s.id]}),evals:t(C),evalRuns:t(k),benchmarks:t(Ie),evalJobs:t(ye),evalConversations:t(we)})),Ca=i(C,({one:e,many:t})=>({evalTarget:e(s,{fields:[C.evalTargetId],references:[s.id]}),runs:t(k)})),Oa=i(k,({one:e})=>({eval:e(C,{fields:[k.evalId],references:[C.id]}),evalTarget:e(s,{fields:[k.evalTargetId],references:[s.id]})})),qa=i(Ie,({one:e})=>({evalTarget:e(s,{fields:[Ie.evalTargetId],references:[s.id]})})),Ma=i(ye,({one:e})=>({evalTarget:e(s,{fields:[ye.evalTargetId],references:[s.id]})})),Ha=i(we,({one:e})=>({evalTarget:e(s,{fields:[we.evalTargetId],references:[s.id]})})),La=i(Y,({one:e})=>({session:e(u,{fields:[Y.sessionId],references:[u.id]}),profile:e(o,{fields:[Y.userId],references:[o.id]})}));var $e=0,yr=0,We=0,Tr=0;var Ua=0;function Ro(){$e++,$e>yr&&(yr=$e)}p(Ro,"trackDbOpStart");function ko(){$e>0&&$e--}p(ko,"trackDbOpEnd");function Eo(){We++,We>Tr&&(Tr=We)}p(Eo,"trackHeavyDbOpStart");function bo(){We>0&&We--}p(bo,"trackHeavyDbOpEnd");function wr(){Ua++}p(wr,"recordQueryDeadline");var bt,Pt,So=!1,Et;var Ar,Kt,St;function zr(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}p(zr,"getEnv");function Rr(){if(So)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!bt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,a=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,d=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,_=Number(process.env.PG_IDLE_TIMEOUT)||5,N=Number(process.env.PG_KEEP_ALIVE_S)||60;Pt=jr(zr("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:_,keep_alive:N,max_lifetime:300,connection:{application_name:e,...d>0?{statement_timeout:d}:{}}}),bt=Dr(Pt,{schema:kt})}return bt}p(Rr,"getDb");function kr(){if(So)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!St){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Kt=jr(zr("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:Number(process.env.PG_CONNECT_TIMEOUT_S)||10,idle_timeout:Number(process.env.PG_IDLE_TIMEOUT)||5,keep_alive:Number(process.env.PG_KEEP_ALIVE_S)||60,max_lifetime:300,connection:{application_name:e}}),St=Dr(Kt,{schema:kt})}return St}p(kr,"getHeavyDb");async function Ba(){if(Et)return Et;So=!0;let e=Pt,t=Ar,a=Kt;return Pt=void 0,bt=void 0,Ar=void 0,Kt=void 0,St=void 0,Et=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),a?a.end({timeout:5}):Promise.resolve()]).then(()=>{}),Et}p(Ba,"closeDb");var Va=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function Er(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Va.has(a)}p(Er,"isRetryableConnectError");var Ga=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function br(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Ga.has(a)}p(br,"isRetryableResetError");async function Sr(e,t={}){let a=t.attempts??3,d=t.baseMs??100,_;for(let N=0;N<a;N++)try{return await e()}catch(w){_=w;let H=Er(w)||t.retryResets===!0&&br(w);if(N===a-1||!H)throw w;await new Promise(W=>setTimeout(W,d*2**N))}throw _}p(Sr,"withDbRetry");var Ct=class extends Error{static{p(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 the DB pool is likely saturated (acquire-wait) or holding a dead socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function Pr(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}p(Pr,"queryDeadlineMs");function Kr(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}p(Kr,"heavyQueryDeadlineMs");function Fa(e,t,a=!0){let d,_=new Promise((N,w)=>{d=setTimeout(()=>{a&&wr(),w(new Ct(t))},t);let H=d;typeof H.unref=="function"&&H.unref()});return Promise.race([e,_]).finally(()=>clearTimeout(d))}p(Fa,"raceWithDeadline");var Cr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),Or=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function Po(e,t=!1,a=0,d=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(_,N,w){if(N==="then"){let W=Reflect.get(_,N,w);return typeof W!="function"?W:(Hr,Lr)=>{let Ur=d?Eo:Ro,Br=d?bo:ko;Ur();let Ko=Sr(()=>new Promise((Vr,Gr)=>W.call(_,Vr,Gr)),{retryResets:t});return(a>0?Fa(Ko,a,!d):Ko).finally(Br).then(Hr,Lr)}}let H=Reflect.get(_,N,w);return typeof H=="function"?(...W)=>Po(H.apply(_,W),t,a,d):H}})}p(Po,"wrapBuilder");function qr(e,t=!1){let a=t?Eo:Ro,d=t?bo:ko;a();try{return Promise.resolve(e()).finally(d)}catch(_){throw d(),_}}p(qr,"gaugeTransaction");var Mr=new Proxy({},{get(e,t){let a=Rr(),d=a[t];if(typeof t=="string"&&Cr.has(t)&&typeof d=="function"){let _=Or.has(t),N=Pr();return(...w)=>Po(d.apply(a,w),_,N)}return t==="transaction"&&typeof d=="function"?(..._)=>qr(()=>d.apply(a,_)):d}}),Ja=new Proxy({},{get(e,t){let a=kr(),d=a[t];if(typeof t=="string"&&Cr.has(t)&&typeof d=="function"){let _=Or.has(t);return(...N)=>Po(d.apply(a,N),_,Kr(),!0)}return t==="transaction"&&typeof d=="function"?(..._)=>qr(()=>d.apply(a,_),!0):d}});export{Co as a,Rr as b,Ba as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-MPDSQALK.js";import{a as e}from"./chunk-ZLLER3HP.js";function i(){return process.env.RULEMETRIC_API_URL??a}e(i,"apiUrl");function u(){let n=process.env.RULEMETRIC_API_KEY??process.env.RULEMETRIC_ACCESS_TOKEN;if(!n)throw new Error("not signed in \u2014 run `rulemetric auth login`");return n}e(u,"authToken");async function t(n,o){let r=await fetch(`${i()}${n}`,{...o,headers:{Authorization:`Bearer ${u()}`,"Content-Type":"application/json",...o?.headers??{}},signal:AbortSignal.timeout(1e4)});if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);return await r.json()}e(t,"request");function c({limit:n}){return t(`/api/launch-jobs?limit=${n}`)}e(c,"fetchLaunchJobs");function h(n){return t("/api/launch-jobs",{method:"POST",body:JSON.stringify(n)})}e(h,"createLaunchJob");function l(n){return t(`/api/launch-jobs/${n}/cancel`,{method:"POST"})}e(l,"cancelLaunchJob");function p(){return t("/api/launchers")}e(p,"listLaunchers");export{c as a,h as b,l as c,p as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as d}from"./chunk-CJRYYV76.js";import{b as u}from"./chunk-
|
|
1
|
+
import{a as d}from"./chunk-CJRYYV76.js";import{b as u}from"./chunk-KDFBKYXK.js";import{e as o}from"./chunk-MPDSQALK.js";import{a as c}from"./chunk-ZLLER3HP.js";async function w(e,g){let i=c(a=>g?.logger?.info?.(a)??console.log(a),"log"),{evalTargetId:n}=e,s=await o(`/api/eval-targets/${n}/judge-calibration`),t=d({powered:s.powerCheck.powered,mde:s.powerCheck.mde??Number.POSITIVE_INFINITY},s.caseDiscrimination??{total:0,discriminating:0,nonDiscriminating:0,unpaired:0},{runsCompleted:0,maxRuns:e.maxRuns??24,batchesRun:0,maxBatches:1});if(t.action==="stop")return i(`[cron_eval_autorun] ${n}: ${t.reason}`),{skipped:t.code,reason:t.reason};let r=await o(`/api/eval-targets/${n}`),l=(await o(`/api/eval-targets/${n}/evals`)).filter(a=>!a.retiredAt);if(l.length===0)return{skipped:"no-live-cases"};let{completed:m,failed:p}=await u({cases:l,targetContent:r.content,concurrency:2,runNumber:1,opts:{targetId:n,targetVersion:r.version??1,iteration:1,timeout:e.timeout??24e4,model:e.model,graderModel:e.graderModel,skipGrading:!1,targetType:r.type,targetName:r.name},onLog:i});return i(`[cron_eval_autorun] ${r.name}: ${m} completed, ${p} failed`),{ranRuns:m,reason:t.reason}}c(w,"cronEvalAutorun");export{w as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as E}from"./chunk-
|
|
1
|
+
import{a as E}from"./chunk-KDFBKYXK.js";import{b as R,c as x}from"./chunk-KGURGIZ2.js";import{f as F}from"./chunk-MPDSQALK.js";import{a as s}from"./chunk-ZLLER3HP.js";var A="with_candidate",$="with_prior_version";function k(n){let t=n.filter(e=>e.configuration===A),r=[];for(let e of t){let u=n.find(o=>o.configuration===$&&o.evalId===e.evalId&&o.runNumber===e.runNumber);if(!u)continue;let l=h(e),f=h(u);l==null||f==null||r.push({withScore:l,withoutScore:f})}return r}s(k,"pairCandidateRuns");function h(n){return n.status!=="completed"?null:n.grading?.summary?.pass_rate??null}s(h,"evidenceOf");function P(n){let t=[],r=0;for(let e of n){if(e.status==="failed"){t.push(e.failure??{kind:"unknown",class:"infrastructure"});continue}h(e)==null&&(r+=1)}return{infrastructureFailed:t.length,ungradeable:r,summary:R(t)}}s(P,"accountForFailures");function Q(n){let{pairs:t,minPairs:r,accounting:e}=n;return t>=r?{kind:"proceed"}:e.infrastructureFailed<=0?{kind:"proceed"}:{kind:"infrastructure-incomplete",reason:`${t}/${r} pair(s) \u2014 ${e.infrastructureFailed} run(s) never executed (${e.summary.describe()}). Retry when the environment recovers; this is not a statement about the target.`}}s(Q,"attributeShortfall");function w(n,t,r,e){let u=[];for(let l of n)u.push({eval_:l,configuration:A,targetContent:t,runNumber:e}),u.push({eval_:l,configuration:$,targetContent:r,runNumber:e});return u}s(w,"buildCandidateQueue");async function N(n){let{cases:t,candidateContent:r,priorVersionContent:e,concurrency:u,runNumber:l,opts:f,onLog:o=s(()=>{},"onLog")}=n,p=w(t,r,e,l),i=[],b=Math.max(1,u),g=null;for(let a=0;a<p.length;a+=b){let d=p.slice(a,a+b);i.push(...await Promise.all(d.map(c=>E(c,f,o))));let y=i.find(c=>c.failure&&x(c.failure.kind));if(y?.failure){g=y.failure.kind;let c=p.length-i.length;o(` \u26D4 aborting batch \u2014 ${g}: the account is out of quota. Skipped ${c} remaining run(s) that would certainly have failed.`);break}}for(let a of i)try{await F("/api/eval-runs",a)}catch(d){o(` \u26A0 failed to post a run result: ${d instanceof Error?d.message:String(d)}`)}let C=k(i),m=P(i),v=t.length-C.length;if(v>0){let a=m.infrastructureFailed?` \u2014 ${m.infrastructureFailed} run(s) never executed (${m.summary.describe()})`:"";o(` \u26A0 ${v}/${t.length} case(s) produced no usable pair (failed or ungradeable arm)${a}`)}return{completed:i.filter(a=>a.status==="completed").length,failed:i.filter(a=>a.status==="failed").length,results:i,pairs:C,accounting:m,abortedForQuota:g}}s(N,"runCandidateBatchAndPost");export{A as a,$ as b,k as c,P as d,Q as e,w as f,N as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as j}from"./chunk-
|
|
1
|
+
import{a as j}from"./chunk-UT3EQR4C.js";import{a as E}from"./chunk-NBTC5FNV.js";import{a as J}from"./chunk-TU2AR6XO.js";import{d as T}from"./chunk-NJ5UED3H.js";import{b as I,c as P,d as v}from"./chunk-7FWIIVMC.js";import{a as b}from"./chunk-ZLLER3HP.js";import{useEffect as R,useState as i}from"react";import{Box as l,Text as s,useInput as Z}from"ink";import{jsx as t,jsxs as a}from"react/jsx-runtime";function K({onClose:A,activeOrg:F,defaultProjectPath:y,width:_}){let{jobs:u,error:L,loading:$,refetch:S}=j(20),[M,C]=i([]),[d,m]=i("list"),[f,w]=i(0),[h,g]=i(null),[x,B]=i(null),[p,c]=i(null);R(()=>{v().then(C).catch(o=>{let r=o instanceof Error?o.message:String(o);c(`couldn't load launchers: ${r}`),C([{tool:"claude_code",capabilities:{headless:!0,interactive:!0,remoteSpawn:!0}}])})},[]),R(()=>{if(!p)return;let o=setTimeout(()=>c(null),5e3);return()=>clearTimeout(o)},[p]),Z((o,r)=>{if(h){if(o==="y"||o==="Y"){let e=h.id;g(null),P(e).then(()=>{S(),c(`cancelled ${e.slice(0,8)}`)}).catch(n=>c(`cancel failed: ${n instanceof Error?n.message:String(n)}`))}else(o==="n"||o==="N"||r.escape)&&g(null);return}if(r.escape){if(d!=="none"){m("none");return}A();return}if(r.tab){m(e=>e==="list"?"form":e==="form"?"none":"list");return}if(o!=="q"&&d==="list"){if(r.upArrow)w(e=>Math.max(0,e-1));else if(r.downArrow)w(e=>Math.min(u.length-1,e+1));else if(o==="c"){let e=u[f];e&&(e.status==="running"||e.status==="queued"||e.status==="pending")&&g(e)}else if(o==="r"){let e=u[f],n=e?.result?.externalSessionId;e&&e.tool==="claude_code"&&n?(B({tool:"claude_code",projectPath:e.config.projectPath,resumeSessionId:n}),m("form")):c("resume needs a Claude Code session with a session id")}else if(o==="o"){let n=u[f]?.result?.externalSessionId;if(n){let O=process.env.RULEMETRIC_WEB_URL??"http://localhost:5174";import("node:child_process").then(({spawn:U})=>{U("open",[`${O}/sessions/${n}`],{detached:!0,stdio:"ignore"}).unref()})}}}});async function N(o){await I(o),B(null),m("list"),c("launched"),S()}return b(N,"handleSubmit"),a(l,{flexDirection:"column",borderStyle:"round",borderColor:T,width:_,paddingX:1,children:[a(l,{children:[t(s,{bold:!0,color:T,children:"Launcher"}),t(s,{dimColor:!0,children:" active org: "}),t(s,{children:F??"(none)"}),$&&t(s,{dimColor:!0,children:" loading\u2026"}),L&&a(s,{color:"#F55B5B",children:[" \u26A0 ",L]})]}),t(l,{marginTop:1,children:t(E,{jobs:u,selectedIndex:f,focused:d==="list"})}),t(l,{marginTop:1,children:t(J,{launchers:M,defaultProjectPath:x?.projectPath??y,defaultTool:x?.tool,defaultResumeSessionId:x?.resumeSessionId,focused:d==="form",onSubmit:N})}),h&&t(l,{marginTop:1,children:a(s,{color:"#FFD700",children:["Cancel job ",h.id.slice(0,8),"? (y/n)"]})}),p&&t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\xB7 ",p]})}),t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\u2191\u2193 select tab focus c cancel r resume o open esc ",d==="none"?"close":"back"]})})]})}b(K,"LauncherOverlay");export{K as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as Ce}from"./chunk-RZTVYUX4.js";import{a as we,b as Pe,c as ye,d as ve,e as ee,f as ke}from"./chunk-FWTYR36W.js";import{b as le,i as ce,j as ue,k as pe,l as de,m as ge,n as me}from"./chunk-BL4BN6RU.js";import{c as $e}from"./chunk-G7V4ZZZ3.js";import{d as fe,e as he,g as be}from"./chunk-7FZB65VH.js";import{d as oe,e as Z,f as se}from"./chunk-G5BXZT6F.js";import{e as P,f as K}from"./chunk-QAV4HW7D.js";import{a as u}from"./chunk-ZLLER3HP.js";import{createHash as Te}from"node:crypto";import{existsSync as Ae,readFileSync as Re,writeFileSync as Me}from"node:fs";var M=u(a=>Te("sha256").update(a).digest("hex"),"sha256"),xe=1.3,te=4,We=20;function Ne(a,o){if(!a.configured||o<=0)return te;let t=Math.ceil(a.minPairs*xe/o);return Math.min(We,Math.max(te,t))}u(Ne,"passCapFor");function Le(a,o=10,t=te){if(a<=0)return{passes:0,expectedPairs:0,feasible:!1,reason:"no live cases"};let l=Math.ceil(o*xe),e=Math.min(t,Math.ceil(l/a)),r=e*a;return r<o?{passes:e,expectedPairs:r,feasible:!1,reason:`${a} live case(s) x ${t} passes = ${a*t} pairs at best, below the ${o} a controlled verdict requires \u2014 add cases rather than replaying these`}:{passes:e,expectedPairs:r,feasible:!0}}u(Le,"planPasses");var Fe=60,je=u(a=>typeof a=="object"&&a!==null&&typeof a.withScore=="number"&&typeof a.withoutScore=="number","isPair");function Ue(a,o,t){let l=[...a].sort((e,r)=>Date.parse(r.createdAt)-Date.parse(e.createdAt));for(let e of l){if(e.applied)continue;let r=e.gates?.accumulation;if(!r||typeof r!="object"||r.priorContentHash!==o||r.targetPairs!==t||typeof r.candidateContentHash!="string"||!Array.isArray(r.pairs))continue;let i=r.pairs.filter(je);if(i.length===r.pairs.length&&!(i.length>=t))return{promotionId:e.id,candidateContentHash:r.candidateContentHash,pairs:i,runs:typeof r.runs=="number"?r.runs:1}}return null}u(Ue,"findOpenAccumulation");var qe=5,Ee=u(a=>Array.isArray(a)?a.filter(o=>typeof o=="string"):[],"stringList"),F=u(a=>typeof a=="number"&&Number.isFinite(a)?a:null,"finite");function Ge(a,o,t=qe){let l=[...a].filter(i=>i.fromContentHash===o).sort((i,m)=>Date.parse(m.createdAt)-Date.parse(i.createdAt)),e=[],r=new Set;for(let i of l){let m=i.toContentHash??i.id;if(r.has(m))continue;r.add(m);let y=i.verdict??null,S=F(y?.delta),I=F(y?.ci?.lower),C=F(y?.ci?.upper),j=F(y?.nWith),p=y?.sufficient===!0&&S!=null&&I!=null&&C!=null&&j!=null?{delta:S,ciLower:I,ciUpper:C,nPairs:j}:null;if(e.push({decision:typeof i.decision=="string"?i.decision:"unknown",applied:i.applied===!0,at:typeof i.createdAt=="string"?i.createdAt:"",rationale:typeof i.proposalRationale=="string"?i.proposalRationale:"",touched:Ee(i.touchedSections),refusals:Ee(i.refusals),measured:p}),e.length>=t)break}return e}u(Ge,"summarisePriorDecisions");function Be(a,o){let t=o.accumulate??(a.autoEvolveAccumulate===!0||a.autoEvolveAccumulate==="true"),l=o.accumulateTargetPairs??a.autoEvolveAccumulateTarget,e=typeof l=="string"?Number.parseInt(l,10):l,r=typeof e=="number"&&Number.isInteger(e)&&e>0?e:Fe;return{enabled:t,targetPairs:r}}u(Be,"readAccumulateConfig");function Xe(a){let o=a.accumulateEnabled&&a.pairCount<a.targetPairs;return{apply:a.consented&&!o,peeking:o}}u(Xe,"resolveApply");async function rt(a,o){let t=u(n=>o?.logger?.info?.(n)??console.log(n),"log"),{evalTargetId:l}=a,e=`[cron_instruction_evolution] ${l}`,r=await P(`/api/eval-targets/${l}`),i=r.metadata??{},m=null,y=!1;if(r.name.startsWith("/")&&Ae(r.name))try{if(m=Re(r.name,"utf8"),m!==r.content){let n=await K(`/api/eval-targets/${l}/sync-content`,{content:m});y=n.synced,t(`${e}: target content drifted from disk by ${Math.abs(m.length-r.content.length)} chars \u2014 synced to disk truth (v${n.version}). Prior verdicts against the old text dissolve via content-hash keying.`),r={...r,content:m,version:n.version}}}catch(n){t(`${e}: disk sync failed (${n instanceof Error?n.message:String(n)}) \u2014 measuring the stored snapshot`)}let S=!1;try{S=(await P("/api/settings/evolution-account")).paused}catch(n){t(`${e}: could not read the account switch (${n instanceof Error?n.message:String(n)}) \u2014 pausing to be safe`),S=!0}if(S)return t(`${e}: PAUSED for the whole account (profiles.evolution_paused) \u2014 no model budget spent.`),{skipped:"paused-account"};if(ue(i))return t(`${e}: PAUSED (metadata.autoEvolvePaused) \u2014 no model budget spent. Opt-in is intact.`),{skipped:"paused"};let I=a.apply??(i.autoEvolveApply===!0||i.autoEvolveApply==="true"),C=ze(i);if(C==null){if(I)return t(`${e}: refusing \u2014 metadata.immutableSections is unset. Set it (use [] to explicitly protect nothing) before letting the loop edit this target unattended.`),{skipped:"immutable-sections-unset"};t(`${e}: metadata.immutableSections unset \u2014 measure-only cycle proceeds with [] (nothing protected). Writing still requires setting it explicitly.`),C=[]}let p=(await P(`/api/eval-targets/${l}/evals`)).filter(n=>!n.retiredAt);if(p.length===0)return{skipped:"no-live-cases"};let W=ce(i);W.note&&t(`${e}: ${W.note}`);let v=Le(p.length,W.minPairs,Ne(W,p.length));if(!v.feasible)return t(`${e}: cannot reach a sufficient verdict \u2014 ${v.reason}`),{skipped:"cannot-reach-min-n",reason:v.reason};let De=pe({liveCases:p.length,passes:v.passes});t(`${e}: budget for this run \u2014 ${me(De)}`);let U=await P(`/api/eval-targets/${l}/judge-calibration`);if(!U.powerCheck.adequate){let n=(U.powerCheck.reasons??[]).join("; ");return t(`${e}: not adequately powered, skipping before spending budget \u2014 ${n}`),{skipped:"not-adequate",reason:n}}let ne=se,Ie=Date.now()-ne*24*60*60*1e3,q=await P(`/api/eval-targets/${l}/promotions?limit=200`),re=q.promotions.filter(n=>n.applied&&Date.parse(n.createdAt)>=Ie).length;if(re>=Z)return t(`${e}: change budget looks exhausted (${re}/${Z} applied in ${ne}d), skipping before spending budget`),{skipped:"budget-exhausted"};try{let n=await P("/api/usage/current-limits"),c=$e({limits:n,now:new Date});if(!c.ok)return t(`${e}: deferring before spending budget \u2014 ${c.reason}`),{skipped:"quota-exhausted",reason:c.reason}}catch(n){t(`${e}: quota unknown (${n instanceof Error?n.message:String(n)}) \u2014 proceeding`)}let N=oe();if(!N.green)return t(`${e}: A/A canary is RED \u2014 halting. ${N.failures.join(" | ")}`),{skipped:"canary-red",reason:N.failures.join(" | ")};let G=r.content,x=M(G),d=Be(i,a),k=d.enabled?Ue(q.promotions,x,d.targetPairs):null,f,L,w=[],H=0,B=le,h=k?null:Pe(i,x);if(h){f=h.content,L="",B=0;try{w=await ve({evalTargetId:l,candidateContentHash:h.hash})}catch(n){return t(`${e}: could not rebuild banked pairs (${n instanceof Error?n.message:String(n)})`),{skipped:"resume-read-failed",reason:h.hash}}t(`${e}: resuming interrupted cycle \u2014 ${w.length}/${h.plannedPairs} pair(s) rebuilt from eval_runs, no proposal call spent`)}else if(k){let n=await P(`/api/promotions/${k.promotionId}`);if(M(n.toContent)!==k.candidateContentHash)return t(`${e}: stored candidate does not match its recorded hash \u2014 refusing to continue`),{skipped:"accumulation-hash-mismatch",reason:k.promotionId};f=n.toContent,L=n.proposalRationale??"",w=k.pairs,H=k.runs,B=0,t(`${e}: continuing accumulation ${k.promotionId} \u2014 ${w.length}/${d.targetPairs} pair(s) carried from ${H} prior run(s)`)}else{let n=U.caseDiscrimination?.cases??[],c=[];if(r.name.startsWith("/")){let s=r.name.slice(0,r.name.lastIndexOf("/"));try{let $=await P(`/api/insights/evidence?projectPath=${encodeURIComponent(s)}`);$.analyzedAt&&(c=[...$.friction.map(Y=>`Real-session friction (insights, ${$.analyzedAt.slice(0,10)}): ${Y}`),...$.whatWorks.map(Y=>`Working well in real sessions \u2014 do not break: ${Y}`)],c.length>0&&t(`${e}: proposer sees ${$.friction.length} friction + ${$.whatWorks.length} what-works item(s) from insights`))}catch($){t(`${e}: insights evidence unavailable (${$ instanceof Error?$.message:String($)}) \u2014 proposing without it`)}}let O=[];try{O=Ge(q.promotions,x)}catch(s){t(`${e}: could not summarise prior decisions (${s instanceof Error?s.message:String(s)}) \u2014 proposing without them`)}O.length>0&&t(`${e}: proposer sees ${O.length} prior decision(s) against this exact body (${O.map(s=>`${s.decision}${s.measured?"/measured":""}`).join(", ")})`);let T=await Ce({currentContent:r.content,targetType:r.type,targetName:r.name,immutableSections:C,evidence:{nonDiscriminating:n.filter(s=>!s.discriminating).map(s=>`${s.name??s.assertion??"unnamed"} \u2014 ${s.note}`),weakest:n.filter(s=>s.discriminating&&s.withPassRate<s.withoutPassRate).map(s=>({name:s.name??s.assertion??"unnamed",withPassRate:s.withPassRate,withoutPassRate:s.withoutPassRate})),priorDecisions:O,notes:c}});if(!T.ok)return t(`${e}: no usable proposal \u2014 ${T.reason}`),{skipped:"no-proposal",reason:T.reason};f=T.proposal.candidateContent,L=T.proposal.rationale}let D=h?ye({plannedPairs:h.plannedPairs||v.expectedPairs,carriedPairs:w.length,liveCases:p.length}):v.passes;t(`${e}: measuring ${p.length} case(s) x ${D} pass(es) = up to ${p.length*D} pairs, candidate vs prior version`+(h?` (resumed; ${w.length} pair(s) already banked)`:""));let A=[],X=[],He=Date.now(),ae=0,z=0;for(let n=1;n<=D;n++){let c=await be({cases:p,candidateContent:f,priorVersionContent:G,concurrency:a.concurrency??2,runNumber:n,opts:{targetId:l,targetVersion:r.version??1,iteration:1,timeout:a.timeout??24e4,model:a.model,graderModel:a.graderModel,skipGrading:!1,targetType:r.type,targetName:r.name,candidateContentHash:M(f)},onLog:t});if(A.push(...c.pairs),X.push(...c.results),ae+=c.completed,z+=c.failed,t(`${e}: pass ${n}/${D} \u2014 ${c.pairs.length} pair(s), running total ${A.length}`),c.abortedForQuota){t(`${e}: stopping after pass ${n}/${D} \u2014 ${c.abortedForQuota}. Remaining passes would spend against an exhausted account.`);break}}let R=[...w,...A],_=fe(X),Q=A.length>0,g=de({runs:X,plannedPairs:v.expectedPairs,usablePairs:A.length,verdictPairs:Q?R.length:A.length,proposalCalls:B,passes:D,liveCases:p.length,wallMs:Date.now()-He});if(t(`${e}: ${ae} completed, ${z} failed, ${A.length} usable pair(s) \u2014 spent ~${g.modelCalls} model calls (${g.proposalCalls} proposal + ${g.executorCalls} executor + >=${g.graderCalls} grader) in ${(g.wallMs/6e4).toFixed(1)} min`+(Q?`; the ${g.verdictPairs} pair(s) behind this verdict resolve +/-${ge(g.mde)} at 80% power`:"")),!Q)return{skipped:_.infrastructureFailed?"infrastructure-failure":"no-pairs",reason:_.infrastructureFailed?`${_.infrastructureFailed} run(s) never executed (${_.summary.describe()}) \u2014 the environment failed, not the target`:`${z} run(s) failed or were ungradeable`,cost:g};let V=he({pairs:R.length,minPairs:10,accounting:_});if(V.kind==="infrastructure-incomplete")return t(`${e}: not posting a verdict \u2014 ${V.reason}`),await ee({evalTargetId:l,meta:i,blob:ke({content:f,hash:M(f),priorHash:x,plannedPairs:h?.plannedPairs||v.expectedPairs,now:new Date}),log:t,tag:e}),{skipped:"infrastructure-incomplete",reason:V.reason,cost:g};d.enabled&&t(`${e}: accumulated ${R.length}/${d.targetPairs} pair(s) over ${H+1} run(s) on one candidate`);let ie=I,{apply:_e,peeking:Oe}=Xe({consented:ie,accumulateEnabled:d.enabled,pairCount:R.length,targetPairs:d.targetPairs});ie&&Oe&&t(`${e}: interim readout at ${R.length}/${d.targetPairs} pairs \u2014 recording the decision but not acting until the target is reached`);let b=await K(`/api/eval-targets/${l}/promotions`,{candidateContent:f,proposalSource:"llm",proposalRationale:L,pairs:R,canaryGreen:N.green,measuredAgainstContentHash:x,immutableSections:C,apply:_e,measurementCost:g,...d.enabled?{accumulation:{candidateContentHash:M(f),priorContentHash:x,targetPairs:d.targetPairs,carriedPairs:w.length,runs:H+1}}:{}});t(`${e}: ${b.decision}${b.applied?" (APPLIED)":""} \u2014 ${b.rationale}`+(b.refusals.length>0?` | refusals: ${b.refusals.join("; ")}`:"")),(h||i[we])&&await ee({evalTargetId:l,meta:i,blob:null,log:t,tag:e});let J=!1,E;if(b.applied&&r.name.startsWith("/"))try{Ae(r.name)?Re(r.name,"utf8")!==G?E="file changed since measurement started \u2014 refusing to clobber; next cycle re-syncs":(Me(r.name,f,"utf8"),J=!0):E="file no longer exists on disk",t(J?`${e}: measured improvement written to ${r.name} (undo: git checkout -- ${r.name})`:`${e}: NOT written to disk \u2014 ${E}`)}catch(n){E=n instanceof Error?n.message:String(n),t(`${e}: disk write-back failed \u2014 ${E}. The eval target is updated; the file is not.`)}return{decision:b.decision,applied:b.applied,nPairs:R.length,promotionId:b.id,cost:g,diskSynced:y,...b.applied?{fileWritten:J,...E?{fileWriteSkipped:E}:{}}:{},...d.enabled?{carriedPairs:w.length,accumulationRuns:H+1}:{}}}u(rt,"cronInstructionEvolution");function ze(a){let o=a.immutableSections;return o==null||!Array.isArray(o)?null:o.filter(t=>typeof t=="string")}u(ze,"readImmutableSections");export{xe as a,te as b,We as c,Ne as d,Le as e,Fe as f,Ue as g,qe as h,Ge as i,Be as j,Xe as k,rt as l,ze as m};
|
|
1
|
+
import{i as Ce}from"./chunk-RZTVYUX4.js";import{b as le,i as ce,j as ue,k as pe,l as de,m as ge,n as me}from"./chunk-BL4BN6RU.js";import{c as $e}from"./chunk-G7V4ZZZ3.js";import{a as we,b as Pe,c as ye,d as ve,e as ee,f as ke}from"./chunk-FF5TAMDH.js";import{d as fe,e as he,g as be}from"./chunk-AJN2BLMV.js";import{d as oe,e as Z,f as se}from"./chunk-G5BXZT6F.js";import{e as P,f as K}from"./chunk-MPDSQALK.js";import{a as u}from"./chunk-ZLLER3HP.js";import{createHash as Te}from"node:crypto";import{existsSync as Ae,readFileSync as Re,writeFileSync as Me}from"node:fs";var M=u(a=>Te("sha256").update(a).digest("hex"),"sha256"),xe=1.3,te=4,We=20;function Ne(a,o){if(!a.configured||o<=0)return te;let t=Math.ceil(a.minPairs*xe/o);return Math.min(We,Math.max(te,t))}u(Ne,"passCapFor");function Le(a,o=10,t=te){if(a<=0)return{passes:0,expectedPairs:0,feasible:!1,reason:"no live cases"};let l=Math.ceil(o*xe),e=Math.min(t,Math.ceil(l/a)),r=e*a;return r<o?{passes:e,expectedPairs:r,feasible:!1,reason:`${a} live case(s) x ${t} passes = ${a*t} pairs at best, below the ${o} a controlled verdict requires \u2014 add cases rather than replaying these`}:{passes:e,expectedPairs:r,feasible:!0}}u(Le,"planPasses");var Fe=60,je=u(a=>typeof a=="object"&&a!==null&&typeof a.withScore=="number"&&typeof a.withoutScore=="number","isPair");function Ue(a,o,t){let l=[...a].sort((e,r)=>Date.parse(r.createdAt)-Date.parse(e.createdAt));for(let e of l){if(e.applied)continue;let r=e.gates?.accumulation;if(!r||typeof r!="object"||r.priorContentHash!==o||r.targetPairs!==t||typeof r.candidateContentHash!="string"||!Array.isArray(r.pairs))continue;let i=r.pairs.filter(je);if(i.length===r.pairs.length&&!(i.length>=t))return{promotionId:e.id,candidateContentHash:r.candidateContentHash,pairs:i,runs:typeof r.runs=="number"?r.runs:1}}return null}u(Ue,"findOpenAccumulation");var qe=5,Ee=u(a=>Array.isArray(a)?a.filter(o=>typeof o=="string"):[],"stringList"),F=u(a=>typeof a=="number"&&Number.isFinite(a)?a:null,"finite");function Ge(a,o,t=qe){let l=[...a].filter(i=>i.fromContentHash===o).sort((i,m)=>Date.parse(m.createdAt)-Date.parse(i.createdAt)),e=[],r=new Set;for(let i of l){let m=i.toContentHash??i.id;if(r.has(m))continue;r.add(m);let y=i.verdict??null,S=F(y?.delta),I=F(y?.ci?.lower),C=F(y?.ci?.upper),j=F(y?.nWith),p=y?.sufficient===!0&&S!=null&&I!=null&&C!=null&&j!=null?{delta:S,ciLower:I,ciUpper:C,nPairs:j}:null;if(e.push({decision:typeof i.decision=="string"?i.decision:"unknown",applied:i.applied===!0,at:typeof i.createdAt=="string"?i.createdAt:"",rationale:typeof i.proposalRationale=="string"?i.proposalRationale:"",touched:Ee(i.touchedSections),refusals:Ee(i.refusals),measured:p}),e.length>=t)break}return e}u(Ge,"summarisePriorDecisions");function Be(a,o){let t=o.accumulate??(a.autoEvolveAccumulate===!0||a.autoEvolveAccumulate==="true"),l=o.accumulateTargetPairs??a.autoEvolveAccumulateTarget,e=typeof l=="string"?Number.parseInt(l,10):l,r=typeof e=="number"&&Number.isInteger(e)&&e>0?e:Fe;return{enabled:t,targetPairs:r}}u(Be,"readAccumulateConfig");function Xe(a){let o=a.accumulateEnabled&&a.pairCount<a.targetPairs;return{apply:a.consented&&!o,peeking:o}}u(Xe,"resolveApply");async function rt(a,o){let t=u(n=>o?.logger?.info?.(n)??console.log(n),"log"),{evalTargetId:l}=a,e=`[cron_instruction_evolution] ${l}`,r=await P(`/api/eval-targets/${l}`),i=r.metadata??{},m=null,y=!1;if(r.name.startsWith("/")&&Ae(r.name))try{if(m=Re(r.name,"utf8"),m!==r.content){let n=await K(`/api/eval-targets/${l}/sync-content`,{content:m});y=n.synced,t(`${e}: target content drifted from disk by ${Math.abs(m.length-r.content.length)} chars \u2014 synced to disk truth (v${n.version}). Prior verdicts against the old text dissolve via content-hash keying.`),r={...r,content:m,version:n.version}}}catch(n){t(`${e}: disk sync failed (${n instanceof Error?n.message:String(n)}) \u2014 measuring the stored snapshot`)}let S=!1;try{S=(await P("/api/settings/evolution-account")).paused}catch(n){t(`${e}: could not read the account switch (${n instanceof Error?n.message:String(n)}) \u2014 pausing to be safe`),S=!0}if(S)return t(`${e}: PAUSED for the whole account (profiles.evolution_paused) \u2014 no model budget spent.`),{skipped:"paused-account"};if(ue(i))return t(`${e}: PAUSED (metadata.autoEvolvePaused) \u2014 no model budget spent. Opt-in is intact.`),{skipped:"paused"};let I=a.apply??(i.autoEvolveApply===!0||i.autoEvolveApply==="true"),C=ze(i);if(C==null){if(I)return t(`${e}: refusing \u2014 metadata.immutableSections is unset. Set it (use [] to explicitly protect nothing) before letting the loop edit this target unattended.`),{skipped:"immutable-sections-unset"};t(`${e}: metadata.immutableSections unset \u2014 measure-only cycle proceeds with [] (nothing protected). Writing still requires setting it explicitly.`),C=[]}let p=(await P(`/api/eval-targets/${l}/evals`)).filter(n=>!n.retiredAt);if(p.length===0)return{skipped:"no-live-cases"};let W=ce(i);W.note&&t(`${e}: ${W.note}`);let v=Le(p.length,W.minPairs,Ne(W,p.length));if(!v.feasible)return t(`${e}: cannot reach a sufficient verdict \u2014 ${v.reason}`),{skipped:"cannot-reach-min-n",reason:v.reason};let De=pe({liveCases:p.length,passes:v.passes});t(`${e}: budget for this run \u2014 ${me(De)}`);let U=await P(`/api/eval-targets/${l}/judge-calibration`);if(!U.powerCheck.adequate){let n=(U.powerCheck.reasons??[]).join("; ");return t(`${e}: not adequately powered, skipping before spending budget \u2014 ${n}`),{skipped:"not-adequate",reason:n}}let ne=se,Ie=Date.now()-ne*24*60*60*1e3,q=await P(`/api/eval-targets/${l}/promotions?limit=200`),re=q.promotions.filter(n=>n.applied&&Date.parse(n.createdAt)>=Ie).length;if(re>=Z)return t(`${e}: change budget looks exhausted (${re}/${Z} applied in ${ne}d), skipping before spending budget`),{skipped:"budget-exhausted"};try{let n=await P("/api/usage/current-limits"),c=$e({limits:n,now:new Date});if(!c.ok)return t(`${e}: deferring before spending budget \u2014 ${c.reason}`),{skipped:"quota-exhausted",reason:c.reason}}catch(n){t(`${e}: quota unknown (${n instanceof Error?n.message:String(n)}) \u2014 proceeding`)}let N=oe();if(!N.green)return t(`${e}: A/A canary is RED \u2014 halting. ${N.failures.join(" | ")}`),{skipped:"canary-red",reason:N.failures.join(" | ")};let G=r.content,x=M(G),d=Be(i,a),k=d.enabled?Ue(q.promotions,x,d.targetPairs):null,f,L,w=[],H=0,B=le,h=k?null:Pe(i,x);if(h){f=h.content,L="",B=0;try{w=await ve({evalTargetId:l,candidateContentHash:h.hash})}catch(n){return t(`${e}: could not rebuild banked pairs (${n instanceof Error?n.message:String(n)})`),{skipped:"resume-read-failed",reason:h.hash}}t(`${e}: resuming interrupted cycle \u2014 ${w.length}/${h.plannedPairs} pair(s) rebuilt from eval_runs, no proposal call spent`)}else if(k){let n=await P(`/api/promotions/${k.promotionId}`);if(M(n.toContent)!==k.candidateContentHash)return t(`${e}: stored candidate does not match its recorded hash \u2014 refusing to continue`),{skipped:"accumulation-hash-mismatch",reason:k.promotionId};f=n.toContent,L=n.proposalRationale??"",w=k.pairs,H=k.runs,B=0,t(`${e}: continuing accumulation ${k.promotionId} \u2014 ${w.length}/${d.targetPairs} pair(s) carried from ${H} prior run(s)`)}else{let n=U.caseDiscrimination?.cases??[],c=[];if(r.name.startsWith("/")){let s=r.name.slice(0,r.name.lastIndexOf("/"));try{let $=await P(`/api/insights/evidence?projectPath=${encodeURIComponent(s)}`);$.analyzedAt&&(c=[...$.friction.map(Y=>`Real-session friction (insights, ${$.analyzedAt.slice(0,10)}): ${Y}`),...$.whatWorks.map(Y=>`Working well in real sessions \u2014 do not break: ${Y}`)],c.length>0&&t(`${e}: proposer sees ${$.friction.length} friction + ${$.whatWorks.length} what-works item(s) from insights`))}catch($){t(`${e}: insights evidence unavailable (${$ instanceof Error?$.message:String($)}) \u2014 proposing without it`)}}let O=[];try{O=Ge(q.promotions,x)}catch(s){t(`${e}: could not summarise prior decisions (${s instanceof Error?s.message:String(s)}) \u2014 proposing without them`)}O.length>0&&t(`${e}: proposer sees ${O.length} prior decision(s) against this exact body (${O.map(s=>`${s.decision}${s.measured?"/measured":""}`).join(", ")})`);let T=await Ce({currentContent:r.content,targetType:r.type,targetName:r.name,immutableSections:C,evidence:{nonDiscriminating:n.filter(s=>!s.discriminating).map(s=>`${s.name??s.assertion??"unnamed"} \u2014 ${s.note}`),weakest:n.filter(s=>s.discriminating&&s.withPassRate<s.withoutPassRate).map(s=>({name:s.name??s.assertion??"unnamed",withPassRate:s.withPassRate,withoutPassRate:s.withoutPassRate})),priorDecisions:O,notes:c}});if(!T.ok)return t(`${e}: no usable proposal \u2014 ${T.reason}`),{skipped:"no-proposal",reason:T.reason};f=T.proposal.candidateContent,L=T.proposal.rationale}let D=h?ye({plannedPairs:h.plannedPairs||v.expectedPairs,carriedPairs:w.length,liveCases:p.length}):v.passes;t(`${e}: measuring ${p.length} case(s) x ${D} pass(es) = up to ${p.length*D} pairs, candidate vs prior version`+(h?` (resumed; ${w.length} pair(s) already banked)`:""));let A=[],X=[],He=Date.now(),ae=0,z=0;for(let n=1;n<=D;n++){let c=await be({cases:p,candidateContent:f,priorVersionContent:G,concurrency:a.concurrency??2,runNumber:n,opts:{targetId:l,targetVersion:r.version??1,iteration:1,timeout:a.timeout??24e4,model:a.model,graderModel:a.graderModel,skipGrading:!1,targetType:r.type,targetName:r.name,candidateContentHash:M(f)},onLog:t});if(A.push(...c.pairs),X.push(...c.results),ae+=c.completed,z+=c.failed,t(`${e}: pass ${n}/${D} \u2014 ${c.pairs.length} pair(s), running total ${A.length}`),c.abortedForQuota){t(`${e}: stopping after pass ${n}/${D} \u2014 ${c.abortedForQuota}. Remaining passes would spend against an exhausted account.`);break}}let R=[...w,...A],_=fe(X),Q=A.length>0,g=de({runs:X,plannedPairs:v.expectedPairs,usablePairs:A.length,verdictPairs:Q?R.length:A.length,proposalCalls:B,passes:D,liveCases:p.length,wallMs:Date.now()-He});if(t(`${e}: ${ae} completed, ${z} failed, ${A.length} usable pair(s) \u2014 spent ~${g.modelCalls} model calls (${g.proposalCalls} proposal + ${g.executorCalls} executor + >=${g.graderCalls} grader) in ${(g.wallMs/6e4).toFixed(1)} min`+(Q?`; the ${g.verdictPairs} pair(s) behind this verdict resolve +/-${ge(g.mde)} at 80% power`:"")),!Q)return{skipped:_.infrastructureFailed?"infrastructure-failure":"no-pairs",reason:_.infrastructureFailed?`${_.infrastructureFailed} run(s) never executed (${_.summary.describe()}) \u2014 the environment failed, not the target`:`${z} run(s) failed or were ungradeable`,cost:g};let V=he({pairs:R.length,minPairs:10,accounting:_});if(V.kind==="infrastructure-incomplete")return t(`${e}: not posting a verdict \u2014 ${V.reason}`),await ee({evalTargetId:l,meta:i,blob:ke({content:f,hash:M(f),priorHash:x,plannedPairs:h?.plannedPairs||v.expectedPairs,now:new Date}),log:t,tag:e}),{skipped:"infrastructure-incomplete",reason:V.reason,cost:g};d.enabled&&t(`${e}: accumulated ${R.length}/${d.targetPairs} pair(s) over ${H+1} run(s) on one candidate`);let ie=I,{apply:_e,peeking:Oe}=Xe({consented:ie,accumulateEnabled:d.enabled,pairCount:R.length,targetPairs:d.targetPairs});ie&&Oe&&t(`${e}: interim readout at ${R.length}/${d.targetPairs} pairs \u2014 recording the decision but not acting until the target is reached`);let b=await K(`/api/eval-targets/${l}/promotions`,{candidateContent:f,proposalSource:"llm",proposalRationale:L,pairs:R,canaryGreen:N.green,measuredAgainstContentHash:x,immutableSections:C,apply:_e,measurementCost:g,...d.enabled?{accumulation:{candidateContentHash:M(f),priorContentHash:x,targetPairs:d.targetPairs,carriedPairs:w.length,runs:H+1}}:{}});t(`${e}: ${b.decision}${b.applied?" (APPLIED)":""} \u2014 ${b.rationale}`+(b.refusals.length>0?` | refusals: ${b.refusals.join("; ")}`:"")),(h||i[we])&&await ee({evalTargetId:l,meta:i,blob:null,log:t,tag:e});let J=!1,E;if(b.applied&&r.name.startsWith("/"))try{Ae(r.name)?Re(r.name,"utf8")!==G?E="file changed since measurement started \u2014 refusing to clobber; next cycle re-syncs":(Me(r.name,f,"utf8"),J=!0):E="file no longer exists on disk",t(J?`${e}: measured improvement written to ${r.name} (undo: git checkout -- ${r.name})`:`${e}: NOT written to disk \u2014 ${E}`)}catch(n){E=n instanceof Error?n.message:String(n),t(`${e}: disk write-back failed \u2014 ${E}. The eval target is updated; the file is not.`)}return{decision:b.decision,applied:b.applied,nPairs:R.length,promotionId:b.id,cost:g,diskSynced:y,...b.applied?{fileWritten:J,...E?{fileWriteSkipped:E}:{}}:{},...d.enabled?{carriedPairs:w.length,accumulationRuns:H+1}:{}}}u(rt,"cronInstructionEvolution");function ze(a){let o=a.immutableSections;return o==null||!Array.isArray(o)?null:o.filter(t=>typeof t=="string")}u(ze,"readImmutableSections");export{xe as a,te as b,We as c,Ne as d,Le as e,Fe as f,Ue as g,qe as h,Ge as i,Be as j,Xe as k,rt as l,ze as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as d,d as m}from"./chunk-
|
|
1
|
+
import{a as d,d as m}from"./chunk-MPDSQALK.js";import{a as c,l as a}from"./chunk-PZNWH4VQ.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as g,randomUUID as v}from"node:crypto";import{hostname as y,platform as p}from"node:os";import{existsSync as P,mkdirSync as _,readFileSync as h,writeFileSync as R}from"node:fs";import{join as E}from"node:path";var O="device-id";function u(){let e=o(t=>t==="1"||t==="true","off");return e(process.env.RULEMETRIC_NO_TELEMETRY)||e(process.env.DO_NOT_TRACK)}o(u,"telemetryDisabled");function l(){let e=a(),t=E(e,O);try{if(P(t)){let r=h(t,"utf-8").trim();if(r)return r}}catch{}let n=g("sha256").update(`${v()}:${y()}`).digest("hex").slice(0,32);try{_(e,{recursive:!0}),R(t,n,{mode:384})}catch{}return n}o(l,"getDeviceId");async function U(e,t={},n){if(!u())try{await m("/api/telemetry/cli-events",{method:"POST",body:{event:e,deviceId:l(),cliVersion:n,os:p(),props:t},timeoutMs:5e3})}catch{}}o(U,"emitSetupEvent");async function w(e){if(u())return;let n=`${process.env.RULEMETRIC_API_URL??c().apiUrl??d}/api/telemetry/cli-error`,r=process.env.HTTPS_PROXY,s=process.env.HTTP_PROXY,T=r!==void 0||s!==void 0;delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY;let i=new AbortController,f=setTimeout(()=>i.abort(),4e3);try{await globalThis.fetch(n,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`rulemetric-cli/${e.cliVersion??"unknown"}`},body:JSON.stringify({event:e.event??"onboarding_error",deviceId:l(),command:e.command,statusCode:e.statusCode,message:e.message?e.message.slice(0,500):void 0,cliVersion:e.cliVersion,os:p(),nodeVersion:process.version,proxied:T,props:e.props}),signal:i.signal})}catch{}finally{clearTimeout(f),r!==void 0&&(process.env.HTTPS_PROXY=r),s!==void 0&&(process.env.HTTP_PROXY=s)}}o(w,"emitErrorBeacon");export{u as a,l as b,U as c,w as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as m}from"./chunk-Z72VHGV7.js";import{c as g,e as k}from"./chunk-LZO6YBUW.js";import{a as l}from"./chunk-ZLLER3HP.js";import{mkdirSync as E,readdirSync as w,rmSync as S,writeFileSync as h}from"node:fs";import{join as p,relative as b,sep as x}from"node:path";var A="v2-neutral-workspace",I=["CLAUDE.md","CLAUDE.local.md","AGENTS.md"],W=new Set(["node_modules",".git","dist","build",".next","coverage"]);function y(e){let i=[],n=new Set(I),t=l(a=>{let r;try{r=w(a,{withFileTypes:!0})}catch{return}for(let s of r){let o=p(a,s.name);if(s.isDirectory()){if(W.has(s.name)||s.name.startsWith(".")&&s.name!==".claude")continue;t(o)}else n.has(s.name)&&i.push(b(e,o))}},"walk");return t(e),i}l(y,"findAmbientInstructionFiles");function C(e){let i=[];for(let n of y(e))try{S(p(e,n),{force:!0}),i.push(n)}catch{}return i}l(C,"stripAmbientInstructions");function F(e){return/[a-z0-9]/i.test(e??"")?g(e??""):"eval-target-skill"}l(F,"skillSlug");function O(e={}){let{baseDir:i,targetType:n,targetContent:t,targetName:a}=e,r=m(i),s=C(r.workDir),o="none",d,u=[];if(t)switch(n){case"prompt":d=t,o="system_prompt";break;case"skill":{let c=F(a),v=k({dirName:c,content:t});f(r.workDir,p(".claude","skills",c,"SKILL.md"),v.text),o="skill";break}default:f(r.workDir,"CLAUDE.md",t),u.push("CLAUDE.md"),o="claude_md";break}let D=y(r.workDir).filter(c=>!u.includes(c));return{workDir:r.workDir,systemPrompt:d,delivery:o,methodology:A,isWorktree:r.isWorktree,strippedFiles:s,leakedFiles:D,cleanup:r.cleanup}}l(O,"createEvalWorkspace");function f(e,i,n){let t=p(e,i),a=t.slice(0,t.lastIndexOf(x));E(a,{recursive:!0}),h(t,n,"utf8")}l(f,"writeFileInWorkspace");export{A as a,I as b,y as c,F as d,O as e};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import{a as s}from"./chunk-ZLLER3HP.js";function D(e){if(!e||typeof e!="object")return e;let r=e,n=r.project_areas;if(n!==void 0&&!Array.isArray(n)){let t=n&&typeof n=="object"?n.areas:void 0;r.project_areas=Array.isArray(t)?t:void 0}return e}s(D,"normalizeRecommendations");import{z as p}from"zod";var _=["org","team","project","personal"],I=p.object({name:p.string().min(1),description:p.string().min(1),type:p.literal("instruction").default("instruction"),scope:p.enum(_),version:p.string().min(1),tags:p.array(p.string()).optional(),compatibility:p.array(p.string()).optional(),slots:p.record(p.string(),p.string()).optional(),metadata:p.record(p.string(),p.unknown()).optional()});import{z as d}from"zod";var L=d.object({name:d.string().min(1),description:d.string().min(1),type:d.literal("prompt"),version:d.string().min(1),tags:d.array(d.string()).optional(),variables:d.array(d.string()).optional(),metadata:d.record(d.string(),d.unknown()).optional()});function h(e,r){let n=r.map(t=>`- ID: ${t.id}
|
|
2
|
+
Name: ${t.name}
|
|
3
|
+
Description: ${t.description}
|
|
4
|
+
Tags: ${t.tags.join(", ")}
|
|
5
|
+
Preview: ${t.contentPreview}`).join(`
|
|
6
|
+
|
|
7
|
+
`);return`You are an expert at matching AI coding instructions to software projects.
|
|
8
|
+
|
|
9
|
+
## Project
|
|
10
|
+
- Name: ${e.name}
|
|
11
|
+
- Description: ${e.description??"No description"}
|
|
12
|
+
- Languages: ${e.languages.join(", ")||"Unknown"}
|
|
13
|
+
- Topics: ${e.topics.join(", ")||"None"}
|
|
14
|
+
- Dependencies: ${e.dependencies.join(", ")||"None"}
|
|
15
|
+
|
|
16
|
+
## Available Instructions
|
|
17
|
+
|
|
18
|
+
${n}
|
|
19
|
+
|
|
20
|
+
## Task
|
|
21
|
+
|
|
22
|
+
Analyze the project and recommend which instructions would be most useful. Consider:
|
|
23
|
+
1. Language and framework alignment
|
|
24
|
+
2. Project purpose and what standards/practices would help
|
|
25
|
+
3. Security, testing, and quality needs based on the project type
|
|
26
|
+
|
|
27
|
+
Return your response as JSON in this exact format:
|
|
28
|
+
{
|
|
29
|
+
"recommendations": [
|
|
30
|
+
{ "instructionId": "<id>", "score": <0.0-1.0>, "reason": "<one sentence explanation>" }
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
Only include instructions with a relevance score >= 0.5. Order by score descending. Return valid JSON only, no markdown fences.`}s(h,"buildRecommendationPrompt");var w=32e3,A={name:"x".repeat(64),description:"x".repeat(256),languages:["TypeScript","Python","Go"],topics:["x".repeat(32)],dependencies:["x".repeat(32)]};function R(e,r={}){if(e.length===0)return[];let n=r.charBudget??w,t=h(A,[]).length,o=[],i=[],l=0;for(let c of e){let a=b(c);i.length>0&&t+l+a>n&&(o.push(i),i=[],l=0),i.push(c),l+=a}return i.length>0&&o.push(i),o}s(R,"batchCandidatesForPrompt");function b(e){return`- ID: ${e.id}
|
|
35
|
+
Name: ${e.name}
|
|
36
|
+
Description: ${e.description}
|
|
37
|
+
Tags: ${e.tags.join(", ")}
|
|
38
|
+
Preview: ${e.contentPreview}`.length+2}s(b,"renderedSize");var P=["Added","Changed","Fixed","Removed","Deprecated","Security"],j=/^##\s+\[([^\]]+)\](?:\s*[-–]\s*(\d{4}-\d{2}-\d{2}))?\s*$/,$=/^###\s+(.+?)\s*$/,M=/^[-*]\s+(.*\S)\s*$/,B=/^ {2,}(\S.*)$/;function H(e){let r=e.split(/\r?\n/),n=[],t=null,o=null,i=null;for(let l of r){let c=l.match(j);if(c){t&&n.push(t);let u=c[1].trim();t={version:u,date:c[2]??null,unreleased:u.toLowerCase()==="unreleased",sections:{}},o=null,i=null;continue}if(!t)continue;let a=l.match($);if(a){let u=a[1].trim();P.includes(u)?(o=u,t.sections[o]||(t.sections[o]=[]),i=t.sections[o]):(o=null,i=null);continue}if(!o||!i)continue;let m=l.match(M);if(m){i.push(m[1]);continue}let f=l.match(B);if(f&&i.length>0){i[i.length-1]+=" "+f[1].trim();continue}}return t&&n.push(t),{entries:n}}s(H,"parseChangelog");function K(e){return e.entries.filter(r=>r.unreleased?!1:Object.values(r.sections).some(n=>n&&n.length>0))}s(K,"announceableEntries");function v(e){let r=/^(#{1,6})\s+/.exec(e);return r?r[1].length:0}s(v,"headingLevel");function C(e){return e.replace(/^#{1,6}\s+/,"").replace(/[`*_~]/g,"").trim().toLowerCase()}s(C,"normaliseHeading");function z(e,r){let n=C(r);if(n.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};let t=e.split(`
|
|
39
|
+
`),o=[];for(let u=0;u<t.length;u+=1)v(t[u])>0&&C(t[u])===n&&o.push(u);if(o.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};if(o.length>1)return{content:e,removed:!1,removedText:null,reason:"ambiguous"};let i=o[0],l=v(t[i]),c=t.length;for(let u=i+1;u<t.length;u+=1){let g=v(t[u]);if(g>0&&g<=l){c=u;break}}let a=t.slice(i,c).join(`
|
|
40
|
+
`),m=[...t.slice(0,i),...t.slice(c)];return m.join("").trim().length===0?{content:e,removed:!1,removedText:null,reason:"would-empty-file"}:{content:m.join(`
|
|
41
|
+
`).replace(/\n{3,}/g,`
|
|
42
|
+
|
|
43
|
+
`),removed:!0,removedText:a}}s(z,"removeMarkdownSection");function U(e,r){let n=r.trim();if(n.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};let t=e.indexOf(n);if(t===-1)return{content:e,removed:!1,removedText:null,reason:"not-found"};if(e.indexOf(n,t+1)!==-1)return{content:e,removed:!1,removedText:null,reason:"ambiguous"};let o=(e.slice(0,t)+e.slice(t+n.length)).replace(/\n{3,}/g,`
|
|
44
|
+
|
|
45
|
+
`);return o.trim().length===0?{content:e,removed:!1,removedText:null,reason:"would-empty-file"}:{content:o,removed:!0,removedText:n}}s(U,"removeExactBlock");var N=["HTTPS_PROXY","HTTP_PROXY","NODE_EXTRA_CA_CERTS"];function F(e,r){if(!e||typeof e!="object")return{value:e,removed:!1,removedDescriptions:[],reason:"not-found"};let n=structuredClone(e);if(!n.hooks)return{value:n,removed:!1,removedDescriptions:[],reason:"not-found"};let t=[];for(let[o,i]of Object.entries(n.hooks)){if(!Array.isArray(i))continue;let l=i.filter(c=>{let a=(c.hooks??[]).some(m=>typeof m.command=="string"&&m.command.includes(r));return a&&t.push(`${o}: ${c.matcher??"*"} \u2192 ${(c.hooks??[]).map(m=>m.command).join(", ")}`),!a});l.length===0?delete n.hooks[o]:n.hooks[o]=l}return Object.keys(n.hooks).length===0&&delete n.hooks,{value:n,removed:t.length>0,removedDescriptions:t,...t.length===0?{reason:"not-found"}:{}}}s(F,"removeHookByCommand");function G(e,r){if(!e||typeof e!="object")return{value:e,removed:!1,removedDescriptions:[],reason:"not-found"};let n=structuredClone(e);return!n.mcpServers||!(r in n.mcpServers)?{value:n,removed:!1,removedDescriptions:[],reason:"not-found"}:(delete n.mcpServers[r],Object.keys(n.mcpServers).length===0&&delete n.mcpServers,{value:n,removed:!0,removedDescriptions:[`mcpServers.${r}`]})}s(G,"removeMcpServer");function x(e){if(!e||typeof e!="object")return[];let r=e.env;return r?N.filter(n=>n in r):[]}s(x,"protectedEnvKeysPresent");function Y(e,r){let n=x(e),t=new Set(x(r));return n.filter(o=>!t.has(o))}s(Y,"lostProtectedEnvKeys");function V(e,r){let n=`HTTP ${e}`;if(!r||typeof r!="object")return{message:n};let t=r,o=typeof t.error=="string"&&t.error?t.error:t.error?JSON.stringify(t.error):n,i=typeof t.code=="string"&&t.code?t.code:void 0;return i?{message:o,code:i}:{message:o}}s(V,"parseApiError");var X=/[\p{L}\p{N}]+/gu;function y(e){let r=new Set;for(let n of e.toLowerCase().matchAll(X)){let t=` ${n[0]} `;for(let o=0;o+3<=t.length;o+=1)r.add(t.slice(o,o+3))}return r}s(y,"trigrams");function E(e,r){let n=y(e),t=y(r);if(n.size===0||t.size===0)return 0;let o=0,[i,l]=n.size<=t.size?[n,t]:[t,n];for(let a of i)l.has(a)&&(o+=1);let c=n.size+t.size-o;return c===0?0:o/c}s(E,"trigramSimilarity");var S=.3,J=15;function T(e){let n=e.replace(/<!--[\s\S]*?-->/g," ").replace(/```[\s\S]*?```/g," "),t=[];for(let o of n.split(`
|
|
46
|
+
`)){let i=o.trim();if(i.length===0||i.startsWith("#"))continue;let l=i.replace(/^(?:[-*+]|\d+[.)])\s+/,"").trim();if(l.length!==0)for(let c of l.split(/(?<=[.!?])\s+(?=[A-Z(`"'*])/)){let a=c.trim();a.length>=J&&t.push(a)}}return t}s(T,"splitDirectives");function O(e,r,n=S){let t=T(e);if(t.length===0)return{redundant:!1,coverage:0,matches:[],novel:[]};let o=r.flatMap(c=>T(c.content).map(a=>({text:a,id:c.id,source:c.source}))),i=[],l=[];for(let c of t){let a=null;for(let m of o){let f=E(c,m.text);f<n||(a===null||f>a.similarity)&&(a={directive:c,matchedDirective:m.text,matchedId:m.id,matchedSource:m.source,similarity:f})}a?i.push(a):l.push(c)}return{redundant:l.length===0,coverage:i.length/t.length,matches:i,novel:l}}s(O,"assessRedundancy");function W(e,r=S){let n=[];for(let t=0;t<e.length;t+=1){let o=O(e[t].content,e.slice(0,t),r);o.matches.length>0&&n.push({instruction:e[t],verdict:o})}return n}s(W,"findInternalRedundancy");import be from"gray-matter";import{z as k}from"zod";var Be=k.object({type:k.enum(["instruction","prompt"])});export{D as a,h as b,R as c,H as d,K as e,z as f,U as g,F as h,G as i,Y as j,V as k,O as l,W as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as h}from"./chunk-JPUH3V67.js";import{b as E}from"./chunk-G5BXZT6F.js";import{d as P}from"./chunk-TZA4HAVF.js";import{b as d,e as p,h as w}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-JPUH3V67.js";import{b as E}from"./chunk-G5BXZT6F.js";import{d as P}from"./chunk-TZA4HAVF.js";import{b as d,e as p,h as w}from"./chunk-MPDSQALK.js";import{a as u}from"./chunk-ZLLER3HP.js";var b=u(n=>(n.summary.pass_rate??0)>=1?1:0,"fullPassScore");async function G(n,i={}){let c=i.executeEval??P,g=i.grade??h,v=i.getExperiment??(async r=>{try{return await p(`/api/memory-experiments/${r}`)}catch(t){if(t instanceof d&&t.statusCode===404)return null;throw t}}),M=i.getMemoryBody??(async r=>{try{return(await p(`/api/memories/${r}`)).body}catch(t){if(t instanceof d&&t.statusCode===404)return null;throw t}}),s=i.updateExperiment??(async(r,t)=>{await w(`/api/memory-experiments/${r}`,t)}),e=await v(n.experimentId);if(!e)return{skipped:"not_found"};if(e.status==="completed"||e.status==="failed")return{skipped:"already_terminal",status:e.status};let y=await M(e.memoryId);if(y==null)return await s(e.id,{status:"failed",error:"memory no longer exists"}),{skipped:"memory_gone",status:"failed"};await s(e.id,{status:"running"});let f=e.expectations??[],o=e.model??void 0,a=[],x=0;try{for(let t=0;t<e.trials;t++){let l=await c({prompt:e.taskPrompt,targetContent:y,model:o}),m=await c({prompt:e.taskPrompt,model:o});if(l.error||m.error){x++;continue}let[k,R]=await Promise.all([g({prompt:e.taskPrompt,output:l.output,expectations:f,model:o}),g({prompt:e.taskPrompt,output:m.output,expectations:f,model:o})]);a.push({withScore:b(k),withoutScore:b(R),withLatency:l.durationMs/1e3,withoutLatency:m.durationMs/1e3})}if(a.length===0){let t=`no trials completed (${x}/${e.trials} runs errored \u2014 is the claude CLI available?)`;return await s(e.id,{status:"failed",error:t}),{status:"failed",requestedTrials:e.trials,completedTrials:0}}let r=E(a);return await s(e.id,{status:"completed",result:{verdict:r,pairs:a,completedTrials:a.length,model:o??null}}),{status:"completed",requestedTrials:e.trials,completedTrials:a.length,significant:r.significant,delta:r.delta}}catch(r){let t=r instanceof Error?r.message:String(r);return await s(e.id,{status:"failed",error:t.slice(0,500)}).catch(()=>{}),{status:"failed",requestedTrials:e.trials,completedTrials:a.length}}}u(G,"processMemoryAb");export{G as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as c,c as d}from"./chunk-IZTIYR5Q.js";import{d as u}from"./chunk-
|
|
1
|
+
import{a as c,c as d}from"./chunk-IZTIYR5Q.js";import{d as u}from"./chunk-CLCRZWAG.js";import{a}from"./chunk-RE7DDQ3O.js";import{a as n}from"./chunk-SV7FDAKW.js";import{b as i}from"./chunk-MPDSQALK.js";import{g as r}from"./chunk-PZNWH4VQ.js";import{a as s}from"./chunk-ZLLER3HP.js";import{Command as f,Flags as h}from"@oclif/core";function p(t){return t instanceof i?t.statusCode>=500||t.statusCode===408||t.statusCode===0:/fetch failed|ECONNREFUSED|ECONNRESET|ETIMEDOUT|EAI_AGAIN|bad gateway|timed out/i.test(t.message??"")}s(p,"isAvailabilityError");var m=class extends f{static{s(this,"BaseCommand")}static baseFlags={"api-url":h.string({description:"Override API base URL",env:"RULEMETRIC_API_URL",hidden:!0})};async init(){await super.init();let{flags:e}=await this.parse(this.constructor);e["api-url"]&&(process.env.RULEMETRIC_API_URL=e["api-url"]);let o=d(this.config.version);o&&!this.argv.includes("--quiet")&&!process.env.RULEMETRIC_QUIET&&process.stderr.write(`
|
|
2
2
|
${o}
|
|
3
3
|
|
|
4
4
|
`),c();try{await a()}catch{}}requireAuth(){r()||this.error("Not logged in. Run `rulemetric auth login` to authenticate."),n()}async catch(e){throw p(e)&&await u({command:this.id,statusCode:e instanceof i?e.statusCode:void 0,message:e.message,cliVersion:this.config.version}),e instanceof i&&(e.statusCode===401&&this.error("Session expired. Run `rulemetric auth login` to re-authenticate."),this.error(e.message)),(e.message?.includes("fetch failed")||e.message?.includes("ECONNREFUSED"))&&this.error("Could not connect to the API server. Is it running?"),e}};export{m as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c}from"./chunk-
|
|
1
|
+
import{c}from"./chunk-AJN2BLMV.js";import{e as p,g as u}from"./chunk-MPDSQALK.js";import{a as o}from"./chunk-ZLLER3HP.js";var l="openCandidate";function g(n,i){let t=(n??{})[l];if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;return typeof e.content!="string"||!e.content||typeof e.hash!="string"||!e.hash||typeof e.priorHash!="string"||e.priorHash!==i?null:{content:e.content,hash:e.hash,priorHash:e.priorHash,plannedPairs:typeof e.plannedPairs=="number"?e.plannedPairs:0,updatedAt:typeof e.updatedAt=="string"?e.updatedAt:""}}o(g,"resolveOpenCandidate");function m(n){let{plannedPairs:i,carriedPairs:t,liveCases:e}=n;if(e<=0)return 0;let a=i-t;return a<=0?0:Math.ceil(a/e)}o(m,"owedPasses");var d=100;async function b(n){let{evalTargetId:i,candidateContentHash:t}=n,e=[];for(let a=0;;a+=d){let r=await p(`/api/eval-targets/${i}/runs?candidateContentHash=${encodeURIComponent(t)}&limit=${d}&offset=${a}`);if(!Array.isArray(r)||r.length===0||(e.push(...r),r.length<d))break}return c(e)}o(b,"fetchCarriedPairs");async function P(n){let{evalTargetId:i,meta:t,blob:e,log:a,tag:r}=n;try{let s={...t};e?s[l]=e:delete s[l],await u(`/api/eval-targets/${i}`,{metadata:s}),a(e?`${r}: banked candidate ${e.hash.slice(0,8)} \u2014 the next run resumes instead of restarting`:`${r}: cleared the banked candidate (this cycle reached a decision)`)}catch(s){a(`${r}: could not update the candidate bank (${s instanceof Error?s.message:String(s)})`)}}o(P,"bankOpenCandidate");function C(n){return{content:n.content,hash:n.hash,priorHash:n.priorHash,plannedPairs:n.plannedPairs,updatedAt:n.now.toISOString()}}o(C,"buildOpenCandidate");export{l as a,g as b,m as c,b as d,P as e,C as f};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a}from"./chunk-ZLLER3HP.js";import*as c from"node:fs";import*as s from"node:path";var f=a(t=>`<!-- rulemetric:start ${t} -->`,"BLOCK_START"),g=a(t=>`<!-- rulemetric:end ${t} -->`,"BLOCK_END"),u=/<!-- rulemetric:start ([^\s>]+) -->\n?([\s\S]*?)<!-- rulemetric:end \1 -->/g,d=12;function l(t,o){let r=[],e=t;for(let n of t.matchAll(u))r.push({id:n[1],content:n[2],source:o}),e=e.replace(n[0],`
|
|
2
|
+
`);let i=e.trim();return{managed:r,handwritten:i.length>0?{id:`${o}#handwritten`,content:i,source:o}:null}}a(l,"parseClaudeMd");function p(t){if(!c.existsSync(t))return null;try{return l(c.readFileSync(t,"utf8"),t)}catch{return null}}a(p,"readClaudeMd");function m(t){let o=[],r=s.resolve(t);for(let i=0;i<d&&(o.push(s.join(r,"CLAUDE.md")),!c.existsSync(s.join(r,".git")));i+=1){let n=s.dirname(r);if(n===r)break;r=n}let e=[];for(let i of o.reverse()){let n=p(i);n&&(n.handwritten&&e.push(n.handwritten),e.push(...n.managed))}return e}a(m,"readInstructionContext");export{f as a,g as b,l as c,p as d,m as e};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as E,d as R}from"./chunk-
|
|
1
|
+
import{b as E,d as R}from"./chunk-MPDSQALK.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as C}from"node:crypto";import{existsSync as A,mkdirSync as I,readFileSync as p,renameSync as L,rmdirSync as M,writeFileSync as m}from"node:fs";import{homedir as U,tmpdir as x}from"node:os";import{join as c}from"node:path";var $=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function v(t){return $.test(t)?t:`antigravity-${C("sha256").update(t).digest("hex").slice(0,16)}`}o(v,"hookSessionKey");var _=100,F=new Set(["RUN_COMMAND","VIEW_FILE","LIST_DIRECTORY","CODE_ACTION","GREP_SEARCH","SEARCH_WEB"]),H=new Set(["CONVERSATION_HISTORY","KNOWLEDGE_ARTIFACTS","CHECKPOINT"]);function T(){return process.env.RULEMETRIC_CONFIG_DIR??c(U(),".config","rulemetric")}o(T,"configDir");function O(){return c(T(),"antigravity-state")}o(O,"stateDir");function P(t){return c(O(),`${t}.json`)}o(P,"stateFile");function k(){let t=c(T(),"env");if(A(t))try{let n=p(t,"utf-8");for(let r of n.split(/\r?\n/)){let e=r.match(/^([A-Z_][A-Z0-9_]*)=(.*)$/);if(!e)continue;let i=e[1];if(process.env[i]!==void 0)continue;let s=e[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),process.env[i]=s}}catch{}}o(k,"loadEnvFile");function b(t){try{let n=p(P(t),"utf-8"),r=JSON.parse(n);if(r&&typeof r=="object"&&"lastStepIdx"in r){let e=r.lastStepIdx;if(typeof e=="number"&&Number.isFinite(e))return{lastStepIdx:e}}}catch{}return null}o(b,"loadState");function g(t,n){I(O(),{recursive:!0});let r=P(t),e=`${r}.tmp`;m(e,JSON.stringify(n),{mode:384});try{L(e,r)}catch{m(r,JSON.stringify(n),{mode:384})}}o(g,"saveState");function N(t){let n=process.env.TMPDIR??x(),r=c(n,"rulemetric"),e=c(r,v(t));try{return p(e,"utf-8").trim()||null}catch{return null}}o(N,"resolveRwSessionId");function W(t){let n=process.env.TMPDIR??x(),r=c(n,"rulemetric"),e=v(t),i=c(r,`${e}.seq`),s=c(r,`${e}.seqlock`),l=Date.now()+5e3;for(;Date.now()<l;)try{I(s);break}catch{}let a=1;try{a=parseInt(p(i,"utf-8").trim(),10)+1,(!Number.isFinite(a)||a<1)&&(a=1)}catch{a=1}try{m(i,String(a))}catch{}try{M(s)}catch{}return a}o(W,"nextSequence");function Y(t,n){let r;try{r=p(t,"utf-8")}catch{return[]}let e=[];for(let i of r.split(/\r?\n/))if(i.trim())try{let s=JSON.parse(i);typeof s.step_index=="number"&&s.step_index>n&&e.push(s)}catch{}return e.sort((i,s)=>i.step_index-s.step_index),e}o(Y,"readNewRecords");function G(t){let n;try{n=p(t,"utf-8")}catch{return-1}let r=-1;for(let e of n.split(/\r?\n/))if(e.trim())try{let i=JSON.parse(e);typeof i.step_index=="number"&&i.step_index>r&&(r=i.step_index)}catch{}return r}o(G,"findMaxStepIndex");function J(t){let n=t.match(/<USER_REQUEST>\s*([\s\S]*?)\s*<\/USER_REQUEST>/);return n?n[1].trim():t.trim()}o(J,"extractUserPrompt");function j(t,n){let r=t.created_at??new Date().toISOString(),e={antigravityStepIndex:t.step_index,antigravitySource:t.source,antigravityType:t.type};if(H.has(t.type)||F.has(t.type))return null;if(t.source==="USER_EXPLICIT"&&t.type==="USER_INPUT")return{sequence:n,eventType:"user_message",content:J(t.content??""),timestamp:r,metadata:e};if(t.source==="MODEL"&&t.type==="PLANNER_RESPONSE"){let i=[];return t.thinking&&t.thinking.trim()&&i.push(`[thinking]
|
|
2
2
|
${t.thinking.trim()}`),t.content&&t.content.trim()&&i.push(t.content.trim()),t.tool_calls&&t.tool_calls.length>0&&(e.antigravityToolCalls=t.tool_calls.map(s=>s.name).filter(Boolean)),{sequence:n,eventType:"assistant_response",content:i.join(`
|
|
3
3
|
|
|
4
4
|
`)||null,timestamp:r,metadata:e}}return t.source==="MODEL"&&t.type==="GENERIC"?{sequence:n,eventType:"tool_result",content:t.content??null,timestamp:r,metadata:e}:t.source==="SYSTEM"&&(t.type==="SYSTEM_MESSAGE"||t.type==="ERROR_MESSAGE")?null:{sequence:n,eventType:`antigravity_${t.type.toLowerCase()}`,content:t.content??null,timestamp:r,metadata:e}}o(j,"classifyRecord");function q(t){try{let n=JSON.parse(t);return n&&typeof n=="object"?n:null}catch{return null}}o(q,"parseHookPayload");async function K(t,n,r,e,i={}){let s=i.errorSink??(u=>process.stderr.write(u)),l=0,a=0,d=0,S=0,f=e;for(let u of t){l++,i.onProgress?.({attempted:l,total:t.length,record:u});let w=W(r),y=j(u,w);if(!y)S++;else try{await R(`/api/sessions/${n}/events`,{method:"POST",body:y}),a++}catch(h){d++;let D=h instanceof E?h.statusCode:"unknown";s(`[antigravity-tailer] failed step=${u.step_index} type=${u.type} status=${D}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{a as p,b as h,e as A}from"./chunk-FK73GD2X.js";import{g as w}from"./chunk-LZO6YBUW.js";import{e as f,f as u,i as I}from"./chunk-MPDSQALK.js";import{l as y}from"./chunk-E4U6AOTM.js";import{a as s}from"./chunk-ZLLER3HP.js";import*as c from"node:fs";import*as d from"node:path";var v=new Set(["hook","mcp","subagent","feature"]);function P(t,e,n){let i=d.join(t,"CLAUDE.md"),o=p(e),a=h(e),r=c.existsSync(i)?c.readFileSync(i,"utf8"):"";if(r.includes(o))return!1;let g=`${r.length>0&&!r.endsWith(`
|
|
2
|
+
`)?`
|
|
3
|
+
|
|
4
|
+
`:r.length>0?`
|
|
5
|
+
`:""}
|
|
6
|
+
${o}
|
|
7
|
+
${n}
|
|
8
|
+
${a}
|
|
9
|
+
`;return c.writeFileSync(i,r+g,"utf8"),!0}s(P,"appendToCLAUDEmd");function b(t,e){let n=d.join(t,"CLAUDE.md");if(!c.existsSync(n))return!1;let i=p(e),o=h(e),a=c.readFileSync(n,"utf8"),r=a.indexOf(i);if(r===-1)return!1;let l=a.indexOf(o,r);if(l===-1)return!1;let g=a.slice(0,r),k=a.slice(l+o.length),S=(g.replace(/\n+$/,"")+`
|
|
10
|
+
`+k.replace(/^\n+/,"")).replace(/^\n+/,"");return c.writeFileSync(n,S,"utf8"),!0}s(b,"removeFromCLAUDEmd");function $(t,e=90){return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}s($,"truncate");function T(t){return f(`/api/instruction-suggestions/${encodeURIComponent(t)}`)}s(T,"fetchSuggestion");async function m(t,e,n,i){await u(`/api/instruction-suggestions/${encodeURIComponent(t)}/events`,{eventType:"accepted",projectPath:e,instructionId:n,actor:i})}s(m,"logAccepted");async function x(t,e,n,i){await u(`/api/instruction-suggestions/${encodeURIComponent(t)}/events`,{eventType:"redundant",projectPath:e,instructionId:n,actor:i})}s(x,"logRedundant");async function O(t){let e=t.suggestion??await T(t.suggestionId);if(e.kind==="remove")return R(t,e);if(e.kind==="trim")return D(t,e);let n=e.instructionId;e.instructionScope==="public"&&(n=(await u(`/api/instructions/${encodeURIComponent(e.instructionId)}/promote-from-public`,{targetScope:"personal"})).instructionId);let i=await f(`/api/instructions/${encodeURIComponent(n)}`);if(!t.force){let a=y(i.content,A(t.dir));if(a.redundant)return await x(t.suggestionId,t.projectPath,n,t.actor),{action:"redundant",instructionId:n,name:i.name,fileModified:!1,redundancy:a,messages:[`Skipped: ${i.name} already applies here in different words \u2014 adding it would spend context to say the same thing twice.`,...a.matches.map(r=>` "${$(r.directive)}"
|
|
11
|
+
already covered by ${r.matchedSource??r.matchedId} (${(r.similarity*100).toFixed(0)}% match): "${$(r.matchedDirective)}"`),"Add it anyway with `--force` if the overlap is not real."]}}if(i.type==="skill")return C(t,{...i,id:n});if(v.has(i.type??""))return{action:"manual-required",instructionId:n,name:i.name,fileModified:!1,messages:[`Not installed: ${i.name} is a ${i.type} artifact, and installing one runs code or edits tool configuration \u2014 that always requires a human.`,` Review it: rulemetric instructions get ${n}`,"Nothing was written. This proposal will keep appearing until you act on it or dismiss it."]};let o=P(t.dir,n,i.content);return await m(t.suggestionId,t.projectPath,n,t.actor),{action:o?"added":"already-present",instructionId:n,name:i.name,fileModified:o,messages:o?[`Accepted: added ${i.name} to CLAUDE.md. It will be active starting in your next session.`]:[`Already present: ${i.name} is already in CLAUDE.md (block id: ${n}).`]}}s(O,"acceptSuggestion");async function C(t,e){let n=w({dir:t.dir,name:e.name,content:e.content,description:e.description});await m(t.suggestionId,t.projectPath,e.id,t.actor);let i=[`Accepted: installed skill ${n.dirName} to ${d.relative(t.dir,n.skillFile)}.`];n.linkKind==="none"&&i.push("Claude Code will NOT see it yet \u2014 its path is taken by a directory this command did not create."),i.push("It loads on demand, so it costs no context until a task matches its description.");for(let o of n.warnings)i.push(` Warning: ${o}`);return{action:"added",instructionId:e.id,name:e.name,fileModified:!0,messages:i}}s(C,"acceptSkill");async function D(t,e){let n=e.estimatedTokens?` It currently costs roughly ${e.estimatedTokens} tokens per session (estimated).`:"";return await m(t.suggestionId,t.projectPath,e.instructionId,t.actor),{action:"acknowledged",instructionId:e.instructionId,name:e.name,fileModified:!1,messages:[`Noted: ${e.name} is measured neutral, not harmful.${n}`,"Nothing was changed \u2014 trimming is a judgement call about which parts carry the value,","and the measurement only found the absence of a detectable effect, not which half to cut.",` View it: rulemetric instructions get ${e.instructionId}`," Then edit CLAUDE.md (or the instruction) and let the next measurement cycle re-check it.","This suggestion will stop re-surfacing."]}}s(D,"acknowledgeTrim");async function R(t,e){let n=b(t.dir,e.instructionId);await I(`/api/instructions/${encodeURIComponent(e.instructionId)}`);let i=e.estimatedTokens?` Frees roughly ${e.estimatedTokens} tokens of context per session (estimated).`:"",o=n?[`Retired: removed ${e.name} from CLAUDE.md and archived it.${i}`]:[`Archived ${e.name}.${i}`,"CLAUDE.md was not modified \u2014 no rulemetric-managed block for this instruction was found in this directory. If you added it by hand, remove it yourself."];return o.push("Undo with: rulemetric instructions restore "+e.instructionId),await m(t.suggestionId,t.projectPath,e.instructionId,t.actor),{action:n?"retired":"archived-only",instructionId:e.instructionId,name:e.name,fileModified:n,messages:o}}s(R,"acceptRemoval");export{P as a,b,T as c,O as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as J}from"./chunk-
|
|
1
|
+
import{c as J}from"./chunk-LWUA3NUZ.js";import{a as D}from"./chunk-EJZGGT52.js";import{a as V}from"./chunk-YWALNDT3.js";import{a as P}from"./chunk-RSKQRVPJ.js";import{a as x}from"./chunk-OUXWBHCI.js";import{e as S}from"./chunk-R4W4QDTP.js";import{b as C}from"./chunk-RUIX6AZ6.js";import{a as N}from"./chunk-SBFTRVZM.js";import{a as T}from"./chunk-V5XRGRJC.js";import{a as M}from"./chunk-XK52UAFB.js";import{a as B}from"./chunk-NPNSUG3N.js";import{b as L}from"./chunk-YZNP4TW4.js";import{b as R}from"./chunk-5RBLIVBF.js";import{a as $}from"./chunk-PK6PSCIP.js";import{a as W}from"./chunk-AC2NUNFC.js";import{a as F}from"./chunk-W4ZDAJ6S.js";import{a as O}from"./chunk-XVRQ5WUB.js";import{a as A}from"./chunk-UF6US7VU.js";import{l as H}from"./chunk-BMN2WZM2.js";import{d as y}from"./chunk-NTKO4H2K.js";import{b as E,e as I,f}from"./chunk-MPDSQALK.js";import{a as o}from"./chunk-ZLLER3HP.js";var X={process_eval:T,process_insights:M,process_launch:L,process_send_message:P,process_conversation:N,process_session_goal:x,distill_memories:C,memory_ab:D,process_run_cleanup:V,cron_suggest_instructions:S,cron_refresh_skills:A,cron_refresh_pricing:O,cron_eval_autorun:W,cron_auto_accept_suggestions:$,cron_instruction_training:F,cron_instruction_evolution:H,process_judge_review:B},K=Object.keys(X),z=new Set([]);function Z(e=process.env){return e.DATABASE_URL?K:K.filter(n=>!z.has(n))}o(Z,"availableCapabilities");var j=3e4,ee=3e4,ne=3e4,U=250,G=5e3,re=`thin-agent-${process.pid}`,h=null;function te(e,n,r,l){let a;try{let u=y();a={claude:u.claudeBin!=null,codex:u.codexBin!=null,codexModel:u.codexConfiguredModel}}catch{}let m=o(u=>{f("/api/workers/heartbeat",{workerType:"cli-worker",clientName:re,clientVersion:l,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:u,metadata:{capabilities:e,mode:"thin-agent",llmEngines:a}}).then(c=>{let i=c?.advisory;i&&i.message!==h?(h=i.message,s(r,{event:"worker_advisory",code:i.code,message:i.message})):i||(h=null)}).catch(c=>{s(r,{event:"presence_heartbeat_error",error:c instanceof Error?c.message:String(c)})})},"send");m("alive");let t=setInterval(()=>m("alive"),ne);n.addEventListener("abort",()=>{clearInterval(t),m("shutting_down")},{once:!0})}o(te,"startPresenceHeartbeat");function s(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}o(s,"structuredLog");function q(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let l=setTimeout(()=>{n.removeEventListener("abort",a),r(!0)},e),a=o(()=>{clearTimeout(l),n.removeEventListener("abort",a),r(!1)},"onAbort");n.addEventListener("abort",a,{once:!0})})}o(q,"abortableSleep");async function oe(e,n){let r=`capabilities=${encodeURIComponent(e.join(","))}&waitMs=${n}`,l=await I(`/api/work/next?${r}`);return l==null||typeof l=="string"?null:l}o(oe,"pollForWork");function se(e,n){return{logger:{info:o(r=>n(r),"info"),warn:o(r=>n(r),"warn"),error:o(r=>n(r),"error")},job:{attempts:e}}}o(se,"makeHelpers");async function ae(e,n,r){let l=X[e.kind],a=Date.now();if(s(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!l){let t=`unknown kind: ${e.kind}`;s(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:t}),await f(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:t,terminal:!0}).catch(()=>{});return}let m=setInterval(()=>{s(r,{event:"heartbeat",jobId:e.id}),f(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(t=>{s(r,{event:"heartbeat_error",jobId:e.id,error:t instanceof Error?t.message:String(t)})})},n);try{let t=se(e.attempts,r),u=await l(e.payload,t)??{};clearInterval(m),s(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-a}),await f(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:u})}catch(t){clearInterval(m);let u=R(t),c=t instanceof Error?t.message:String(t);s(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-a,terminal:u,error:c}),await f(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:c,terminal:u}).catch(i=>{s(r,{event:"fail_post_error",jobId:e.id,error:i instanceof Error?i.message:String(i)})})}}o(ae,"runOne");var Q=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 Te(e){let n=e.log??(()=>{}),r=e.pollWaitMs??j,l=e.heartbeatIntervalMs??ee,a=e.capabilities??Z();s(n,{event:"agent_start",capabilities:a,pollWaitMs:r,heartbeatIntervalMs:l}),te(a,e.signal,n,e.version),J({signal:e.signal,log:n}).catch(d=>{s(n,{event:"tt_heartbeat_fatal",error:d instanceof Error?d.message:String(d)})});let m=5*6e4,t=0,u=o(()=>{if(!e.readInstalledVersion||!e.version)return!1;let d=Date.now();if(d-t<m)return!1;t=d;let _=e.readInstalledVersion();return!!(_&&_!==e.version)},"versionDrifted"),c=new AbortController,i=c.signal;e.signal.aborted?c.abort():e.signal.addEventListener("abort",()=>c.abort(),{once:!0});let v=o(async(d,_)=>{let g=U;for(;!i.aborted;){if(u()){s(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),c.abort(),e.onVersionDrift?.();break}let b=null;try{b=await oe([..._],r)}catch(p){let Y=p instanceof E?p.statusCode:void 0;if(s(n,{event:"poll_error",lane:d,status:Y,error:p instanceof Error?p.message:String(p)}),!await q(g,i))break;g=Math.min(g*2,G);continue}if(!b){if(s(n,{event:"poll_204",lane:d}),!await q(g,i))break;g=Math.min(g*2,G);continue}g=U,await ae(b,l,n)}},"runLane"),k=a.filter(d=>Q.has(d)),w=a.filter(d=>!Q.has(d));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",a),s(n,{event:"agent_stop"})}o(Te,"runAgentLoop");export{X as a,K as b,Z as c,oe as d,Te as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as $}from"./chunk-G5BXZT6F.js";import{e as w,f as k}from"./chunk-
|
|
1
|
+
import{b as $}from"./chunk-G5BXZT6F.js";import{e as w,f as k}from"./chunk-MPDSQALK.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{a as g,c as w}from"./chunk-LZO6YBUW.js";import{f as p,g as m,h as k,i as h,j as y}from"./chunk-E4U6AOTM.js";import{a as s}from"./chunk-ZLLER3HP.js";import{existsSync as u,readFileSync as f,writeFileSync as v,copyFileSync as R,rmSync as P,statSync as x,readdirSync as $,mkdirSync as j}from"node:fs";import{join as i,dirname as L}from"node:path";import{homedir as c}from"node:os";var I=["/plugins/cache/","/plugins/marketplaces/","/node_modules/","/.git/"];function _(e){return I.some(t=>e.includes(t))}s(_,"isUnownedPath");function K(e,t){let n=i(c(),".config","rulemetric","retraction-backups",t),r=e.replace(/^\/+/,"").replace(/\//g,"__");return i(n,r)}s(K,"backupPathFor");function b(e){return e.split(`
|
|
2
|
+
`).slice(0,40).map(t=>`- ${t}`).join(`
|
|
3
|
+
`)}s(b,"shortDiff");function d(e,t,n){return{kind:e,path:t,ok:!1,refusal:n,preview:"",warnings:[]}}s(d,"refuse");function B(e){let[t,...n]=e.split("::"),r=n.join("::");if(!r)return null;switch(t){case"claude_md":return{kind:"claude_md_section",target:r};case"memory":return{kind:"memory_section",target:r};case"skill":return{kind:"skill_file",target:r};default:return null}}s(B,"pathFromContextIdentity");function D(e,t){let n=e.replace(/^skills--/,""),r=w(e);return[...(r===n?[n]:[r,n]).flatMap(a=>[i(t,...g.split("/"),a,"SKILL.md"),i(t,".claude","skills",a,"SKILL.md"),i(t,".claude","skills",`${a}.md`),i(c(),...g.split("/"),a,"SKILL.md"),i(c(),".claude","skills",a,"SKILL.md"),i(c(),".claude","skills",`${a}.md`)]),...F(n)]}s(D,"candidateSkillPaths");function F(e){let t=i(c(),".claude","plugins","marketplaces");if(!u(t))return[];let n=[];try{for(let r of $(t))n.push(i(t,r,"skills",e,"SKILL.md"),i(t,r,"plugins",e,"SKILL.md"),i(t,r,"skills",`${e}.md`))}catch{}return n}s(F,"pluginSkillPaths");function H(e){switch(e.kind){case"claude_md_section":case"memory_section":case"claude_md_block":return C(e);case"skill_file":return E(e);case"settings_hook":case"mcp_server":return N(e)}}s(H,"planRetraction");function C(e){let t=e.target;if(!u(t))return d(e.kind,t,`File does not exist: ${t}`);if(_(t))return d(e.kind,t,`Refusing to edit a path this tool does not own: ${t}`);let n=f(t,"utf-8"),r=e.body?m(n,e.body):p(n,e.heading??"");if(!r.removed){let l={"not-found":"The content is not present in this file (already removed, or edited since).",ambiguous:"The content appears more than once \u2014 refusing to guess which copy the verdict was about.","would-empty-file":"Removing it would empty the file. Delete the file by hand if that is really the intent."}[r.reason??"not-found"];return d(e.kind,t,l)}let o=[];return S(t,e.cwd)||o.push("This file is not tracked by git in this repo \u2014 the timestamped backup is your only undo."),{kind:e.kind,path:t,ok:!0,preview:b(r.removedText??""),nextContent:r.content,warnings:o}}s(C,"planFileEdit");function E(e){let t=e.target.startsWith("/")?[e.target]:D(e.target,e.cwd),n=t.find(l=>u(l));if(!n)return d("skill_file",t[0]??e.target,`No local skill file found for "${e.target}". Searched:
|
|
4
|
+
${t.join(`
|
|
5
|
+
`)}`);if(_(n))return d("skill_file",n,`"${e.target}" is installed by a plugin (${n}).
|
|
6
|
+
Deleting it would be undone by the next plugin update, and the files are not ours to remove.
|
|
7
|
+
Uninstall the plugin that provides it instead.`);let r=f(n,"utf-8"),o=[];return S(n,e.cwd)||o.push("Not tracked by git \u2014 the timestamped backup is your only undo."),{kind:"skill_file",path:n,ok:!0,deletesFile:!0,preview:b(r.split(`
|
|
8
|
+
`).slice(0,20).join(`
|
|
9
|
+
`)),warnings:o}}s(E,"planSkillDelete");function N(e){let t=e.kind==="mcp_server"?[i(e.cwd,".mcp.json"),i(e.cwd,".claude","settings.json"),i(c(),".claude","settings.json")]:[i(e.cwd,".claude","settings.json"),i(c(),".claude","settings.json"),i(e.cwd,".claude","settings.local.json")];for(let n of t){if(!u(n))continue;let r;try{r=JSON.parse(f(n,"utf-8"))}catch{continue}let o=e.kind==="mcp_server"?h(r,e.target):k(r,e.target);if(!o.removed)continue;let l=y(r,o.value);return l.length>0?d(e.kind,n,`Refusing: this rewrite would drop ${l.join(", ")} from ${n}. A settings file missing these breaks Claude Code entirely.`):{kind:e.kind,path:n,ok:!0,preview:o.removedDescriptions.map(a=>`- ${a}`).join(`
|
|
10
|
+
`),nextContent:`${JSON.stringify(o.value,null,2)}
|
|
11
|
+
`,warnings:n.endsWith("settings.local.json")?["Editing settings.local.json \u2014 this file also carries the proxy env block."]:[]}}return d(e.kind,t[0],`"${e.target}" was not found in any settings file. Searched:
|
|
12
|
+
${t.join(`
|
|
13
|
+
`)}`)}s(N,"planSettingsEdit");function S(e,t){try{let n=i(t,".git");return e.startsWith(t)&&u(n)&&x(n).isDirectory()}catch{return!1}}s(S,"isGitTracked");function J(e,t){if(!e.ok)return{applied:!1,backupPath:null,error:e.refusal??"plan is not applicable"};let n=K(e.path,t);try{j(L(n),{recursive:!0}),R(e.path,n)}catch(r){return{applied:!1,backupPath:null,error:`backup failed, nothing written: ${String(r)}`}}try{return e.deletesFile?P(e.path,{force:!0}):v(e.path,e.nextContent??""),{applied:!0,backupPath:n}}catch(r){return{applied:!1,backupPath:n,error:`write failed: ${String(r)}`}}}s(J,"applyRetraction");export{K as a,B as b,D as c,H as d,J as e};
|