@rulemetric/cli 0.14.2 → 0.15.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/dist/{chunk-6AAAHV2B.js → chunk-3H44B6PB.js} +1 -1
- package/dist/chunk-4DA6L7KL.js +1 -0
- package/dist/chunk-4GOXEEXZ.js +1 -0
- package/dist/{chunk-VCUW2NAP.js → chunk-5Z6XXOJL.js} +1 -1
- package/dist/{chunk-Q36QSFSB.js → chunk-6QMIDH6X.js} +1 -1
- package/dist/{chunk-WIKCYUZC.js → chunk-74KE4VOX.js} +1 -1
- package/dist/{chunk-6TGFU6RU.js → chunk-7LFCZI64.js} +1 -1
- package/dist/{chunk-7H4HJ2RV.js → chunk-AFEJYDUK.js} +1 -1
- package/dist/{chunk-QENSCK77.js → chunk-CIKQXFQ2.js} +1 -1
- package/dist/chunk-CMDOLJ23.js +1 -0
- package/dist/chunk-DYET4EYU.js +1 -0
- package/dist/{chunk-RR7V5CK5.js → chunk-EJY5GK6A.js} +1 -1
- package/dist/{chunk-T47SFA5X.js → chunk-FADINV4H.js} +1 -1
- package/dist/{chunk-DVU5PHPM.js → chunk-FG343JM3.js} +1 -1
- package/dist/chunk-HT6R6KR3.js +3 -0
- package/dist/{chunk-DXNUCWUX.js → chunk-HXOQUYG3.js} +1 -1
- package/dist/{chunk-HM63AB2C.js → chunk-IFIWDL7G.js} +1 -1
- package/dist/chunk-JNLDISBA.js +4 -0
- package/dist/{chunk-FS3TAQAE.js → chunk-JOXTWLLK.js} +1 -1
- package/dist/{chunk-5VNEHPGC.js → chunk-JSGXFD42.js} +1 -1
- package/dist/chunk-JU5ZNXPK.js +1 -0
- package/dist/{chunk-H4QPAEEA.js → chunk-JUBXWTJA.js} +1 -1
- package/dist/{chunk-7MTYUTUN.js → chunk-KR36ZDGN.js} +1 -1
- package/dist/{chunk-O4K4M5G6.js → chunk-LJE5J3EW.js} +1 -1
- package/dist/{chunk-PXYK4MBX.js → chunk-LLXC5SRC.js} +1 -1
- package/dist/chunk-N2PP2A7M.js +1 -0
- package/dist/{chunk-KOYHJFB3.js → chunk-PDXHRF4E.js} +1 -1
- package/dist/{chunk-F5PJN2EY.js → chunk-Q7IDLOSP.js} +1 -1
- package/dist/{chunk-H2FMAJUJ.js → chunk-QFTAU33Y.js} +1 -1
- package/dist/{chunk-EBWV4SUS.js → chunk-RDL4HXFL.js} +1 -1
- package/dist/{chunk-ZK3ACE4T.js → chunk-T7HZZ4DJ.js} +1 -1
- package/dist/{chunk-LB24UKHZ.js → chunk-TWPD3ICV.js} +1 -1
- package/dist/chunk-V576KKH6.js +1 -0
- package/dist/{chunk-VXNICAVG.js → chunk-VUNJGZPP.js} +1 -1
- package/dist/{chunk-J6RQ5AH2.js → chunk-W6MMJRFZ.js} +1 -1
- package/dist/{chunk-XZW5ZHFC.js → chunk-WQFR2LOY.js} +1 -1
- package/dist/{chunk-7BCZDVIU.js → chunk-XCH4HPEZ.js} +1 -1
- package/dist/{chunk-RSVNQ2XI.js → chunk-YXMAGC53.js} +1 -1
- package/dist/commands/diagnostics.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/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/lib/agent-loop.js +1 -1
- package/dist/lib/codex-exec.js +1 -1
- package/dist/lib/eval-analyzer.js +1 -1
- package/dist/lib/eval-benchmark.js +1 -1
- package/dist/lib/eval-candidate-run.js +1 -1
- package/dist/lib/eval-case-generator.js +1 -1
- package/dist/lib/eval-conversation-handler.js +1 -1
- package/dist/lib/eval-executor.js +1 -1
- package/dist/lib/eval-grader.js +1 -1
- package/dist/lib/eval-meta-judge.js +1 -1
- package/dist/lib/eval-resume.js +1 -1
- package/dist/lib/eval-run-batch.js +1 -1
- package/dist/lib/eval-trigger-tester.js +1 -1
- package/dist/lib/evolution-cost.js +1 -1
- package/dist/lib/evolution-enrolment.js +1 -1
- package/dist/lib/instruction-proposer.js +1 -1
- package/dist/lib/instruction-restoration.js +1 -0
- package/dist/lib/jobs/handlers/cron-eval-autorun.js +1 -1
- package/dist/lib/jobs/handlers/cron-instruction-evolution.js +1 -1
- package/dist/lib/jobs/handlers/cron-refine-cases.js +1 -1
- package/dist/lib/jobs/handlers/cron-refresh-pricing.js +1 -1
- package/dist/lib/jobs/handlers/cron-suggest-instructions.js +1 -1
- package/dist/lib/jobs/handlers/distill-memories.js +1 -1
- package/dist/lib/jobs/handlers/process-changelog.js +1 -1
- package/dist/lib/jobs/handlers/process-conversation.js +1 -1
- package/dist/lib/jobs/handlers/process-eval.js +1 -1
- package/dist/lib/jobs/handlers/process-insights.js +1 -1
- package/dist/lib/jobs/handlers/process-judge-review.js +1 -1
- package/dist/lib/jobs/handlers/process-memory-ab.js +1 -1
- package/dist/lib/jobs/handlers/process-session-goal.js +1 -1
- package/dist/lib/judge-review-runner.js +1 -1
- package/dist/lib/llm-client.js +1 -1
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/measurement-llm.js +1 -1
- package/dist/lib/optimize-compare.js +1 -1
- package/dist/lib/refine-cases.js +1 -1
- package/dist/lib/study-fixture.js +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +6 -6
- package/dist/chunk-3NWJ7CZ2.js +0 -1
- package/dist/chunk-FBSZ6KCM.js +0 -1
- package/dist/chunk-H33XYL7O.js +0 -1
- package/dist/chunk-Q776YUBD.js +0 -1
- package/dist/chunk-SG4UDDHB.js +0 -4
- package/dist/chunk-VBXL7XO7.js +0 -1
- package/dist/chunk-ZTQUGAZG.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as m,c as Ds}from"./chunk-ZLLER3HP.js";import{boolean as sn,date as js,index as Qt,integer as zs,jsonb as Rs,pgTable as Yt,text as D,timestamp as G,uniqueIndex as ks,uuid as me}from"drizzle-orm/pg-core";var an=Yt("announcements",{id:me("id").primaryKey().defaultRandom(),version:D("version").notNull().unique(),releaseDate:js("release_date").notNull(),subject:D("subject").notNull(),htmlBody:D("html_body").notNull(),textBody:D("text_body").notNull(),sections:Rs("sections").notNull().default({}),status:D("status").notNull().default("draft"),recipientCount:zs("recipient_count"),sentAt:G("sent_at",{withTimezone:!0}),sentBy:me("sent_by"),error:D("error"),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:G("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qt("idx_announcements_status").on(e.status),Qt("idx_announcements_created").on(e.createdAt)]),dn=Yt("announcement_deliveries",{id:me("id").primaryKey().defaultRandom(),announcementId:me("announcement_id").notNull(),userId:me("user_id").notNull(),email:D("email").notNull(),status:D("status").notNull().default("pending"),providerId:D("provider_id"),error:D("error"),sentAt:G("sent_at",{withTimezone:!0}),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ks("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Qt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),un=Yt("notification_preferences",{userId:me("user_id").primaryKey(),productAnnouncements:sn("product_announcements").notNull().default(!0),weeklyDigest:sn("weekly_digest").notNull().default(!0),unsubscribeToken:D("unsubscribe_token").notNull().unique(),unsubscribedAt:G("unsubscribed_at",{withTimezone:!0}),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:G("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as lt,integer as qe,jsonb as Es,pgTable as Ss,real as pn,text as Oe,timestamp as Wt,uuid as _n}from"drizzle-orm/pg-core";import{pgTable as ut,text as fe,timestamp as Ce,jsonb as ln,uuid as ne,primaryKey as cn}from"drizzle-orm/pg-core";var l=ut("organizations",{id:ne("id").primaryKey().defaultRandom(),name:fe("name").unique().notNull(),slug:fe("slug").unique().notNull(),metadata:ln("metadata"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ce("updated_at",{withTimezone:!0}).defaultNow()}),v=ut("teams",{id:ne("id").primaryKey().defaultRandom(),orgId:ne("org_id").references(()=>l.id,{onDelete:"cascade"}),name:fe("name").notNull(),slug:fe("slug").notNull(),metadata:ln("metadata"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()}),Ne=ut("user_organizations",{userId:ne("user_id").notNull(),orgId:ne("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:fe("role").notNull().default("member"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()},e=>[cn({columns:[e.userId,e.orgId]})]),xe=ut("user_teams",{userId:ne("user_id").notNull(),teamId:ne("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:fe("role").notNull().default("member"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()},e=>[cn({columns:[e.userId,e.teamId]})]);var o=Ss("profiles",{id:_n("id").primaryKey(),email:Oe("email"),measurementPreferences:Es("measurement_preferences"),displayName:Oe("display_name"),activeOrgId:_n("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:lt("is_superadmin").notNull().default(!1),claudeCodePlan:Oe("claude_code_plan"),planSource:Oe("plan_source").notNull().default("detected"),setupCompletedAt:Wt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:lt("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:lt("auto_accept_suggestions").notNull().default(!0),evolutionPaused:lt("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:pn("suggestion_confidence_threshold").notNull().default(.7),autoAcceptMinScore:pn("auto_accept_min_score"),autoAcceptMaxPerRun:qe("auto_accept_max_per_run"),autoAcceptMaxPerWindow:qe("auto_accept_max_per_window"),autoAcceptWindowDays:qe("auto_accept_window_days"),trialMaxConcurrent:qe("trial_max_concurrent"),trialMaxPerRun:qe("trial_max_per_run"),harborAbCadence:Oe("harbor_ab_cadence").notNull().default("off"),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Wt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as bs,text as Xt,timestamp as ct,uuid as pt,index as mn}from"drizzle-orm/pg-core";var P=bs("org_invitations",{id:pt("id").primaryKey().defaultRandom(),orgId:pt("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:Xt("email").notNull(),role:Xt("role").notNull().default("member"),teamId:pt("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:pt("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:Xt("token").notNull().unique(),expiresAt:ct("expires_at",{withTimezone:!0}).notNull(),acceptedAt:ct("accepted_at",{withTimezone:!0}),revokedAt:ct("revoked_at",{withTimezone:!0}),createdAt:ct("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[mn("idx_org_invitations_token").on(e.token),mn("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Zt,text as N,timestamp as V,jsonb as _t,uuid as z,integer as mt,boolean as Ps,uniqueIndex as ft,index as Me}from"drizzle-orm/pg-core";var n=Zt("instructions",{id:z("id").primaryKey().defaultRandom(),name:N("name").notNull(),description:N("description").notNull(),type:N("type").notNull().default("instruction"),scope:N("scope").notNull(),scopeRef:z("scope_ref"),version:N("version").notNull(),content:N("content").notNull(),frontmatter:_t("frontmatter").notNull(),slots:_t("slots"),tags:N("tags").array(),compatibility:N("compatibility").array(),createdBy:z("created_by"),createdAt:V("created_at",{withTimezone:!0}).defaultNow(),updatedAt:V("updated_at",{withTimezone:!0}).defaultNow(),archived:Ps("archived").default(!1),archivedAt:V("archived_at",{withTimezone:!0}),archivedBy:z("archived_by"),forkedFromId:z("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:N("upstream_version"),badge:N("badge"),contentHash:N("content_hash"),contextIdentity:N("context_identity"),scanScore:mt("scan_score"),scanFindings:_t("scan_findings"),popularityScore:mt("popularity_score"),sourceUpdatedAt:V("source_updated_at",{withTimezone:!0})},e=>[ft("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Me("idx_instructions_scope").on(e.scope,e.scopeRef),Me("idx_instructions_created_by").on(e.createdBy),Me("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),Me("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),fn=Zt("instruction_version_identities",{id:z("id").primaryKey().defaultRandom(),instructionId:z("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:N("content_hash").notNull(),versionOrdinal:mt("version_ordinal").notNull(),content:N("content"),firstSeenAt:V("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:V("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:V("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ft("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),ft("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),Me("idx_ivi_instruction").on(e.instructionId)]),he=Zt("instruction_versions",{id:z("id").primaryKey().defaultRandom(),instructionId:z("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:mt("version_number").notNull(),content:N("content").notNull(),frontmatter:_t("frontmatter").notNull(),changeSummary:N("change_summary"),createdBy:z("created_by"),createdAt:V("created_at",{withTimezone:!0}).defaultNow()},e=>[ft("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as Ks,text as Cs,timestamp as qs,jsonb as Os,uuid as eo,index as Nn}from"drizzle-orm/pg-core";var ge=Ks("instruction_events",{id:eo("id").primaryKey().defaultRandom(),instructionId:eo("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:Cs("event_type").notNull(),actorId:eo("actor_id").notNull(),metadata:Os("metadata"),createdAt:qs("created_at",{withTimezone:!0}).defaultNow()},e=>[Nn("idx_instruction_events_instruction").on(e.instructionId),Nn("idx_instruction_events_type").on(e.eventType)]);import{boolean as Ms,jsonb as Hs,pgTable as oo,primaryKey as xn,text as re,timestamp as He,uniqueIndex as to,uuid as se}from"drizzle-orm/pg-core";import{sql as Ls}from"drizzle-orm";var s=oo("projects",{id:se("id").primaryKey().defaultRandom(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}),name:re("name").notNull(),description:re("description"),githubRepo:re("github_repo"),gitRemoteUrl:re("git_remote_url"),gitRootCommit:re("git_root_commit"),gitRemoteAliases:re("git_remote_aliases").array().notNull().default([]),metadata:Hs("metadata"),createdBy:se("created_by"),createdAt:He("created_at",{withTimezone:!0}).defaultNow(),updatedAt:He("updated_at",{withTimezone:!0}).defaultNow()},e=>[to("projects_org_name_idx").on(e.orgId,e.name),to("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Ls`${e.gitRemoteUrl} IS NOT NULL`)]),F=oo("project_instructions",{projectId:se("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:se("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:He("added_at",{withTimezone:!0}).defaultNow(),addedBy:se("added_by")},e=>[xn({columns:[e.projectId,e.instructionId]})]),hn=oo("project_checkouts",{projectId:se("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:re("path").notNull(),isWorktree:Ms("is_worktree").notNull().default(!1),firstSeen:He("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:He("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[xn({columns:[e.projectId,e.path]}),to("project_checkouts_path_unique").on(e.path)]);import{pgTable as so,text as I,timestamp as Le,jsonb as ie,uuid as K,integer as xt,uniqueIndex as vn,index as R}from"drizzle-orm/pg-core";import{pgTable as Us,text as ve,timestamp as no,jsonb as gn,uuid as Nt,integer as Bs,boolean as Gs,index as ro}from"drizzle-orm/pg-core";var h=Us("agent_runs",{id:Nt("id").primaryKey().defaultRandom(),userId:Nt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Nt("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:Nt("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:ve("project_path"),gitRemote:ve("git_remote"),baseBranch:ve("base_branch"),title:ve("title"),prompt:ve("prompt"),toolSpec:gn("tool_spec").notNull().default([]),autoWorktree:Gs("auto_worktree").notNull().default(!0),status:ve("status").notNull().default("pending"),sessionCount:Bs("session_count").notNull().default(0),metadata:gn("metadata").notNull().default({}),createdAt:no("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:no("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:no("completed_at",{withTimezone:!0})},e=>[ro("idx_agent_runs_user").on(e.userId),ro("idx_agent_runs_org_created").on(e.orgId,e.createdAt),ro("idx_agent_runs_project").on(e.projectId)]);var a=so("sessions",{id:K("id").primaryKey().defaultRandom(),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:K("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:K("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:Le("started_at",{withTimezone:!0}).notNull(),endedAt:Le("ended_at",{withTimezone:!0}),eventCount:xt("event_count").default(0),tokenUsage:ie("token_usage"),analysis:ie("analysis"),analyzedAt:Le("analyzed_at",{withTimezone:!0}),analyzedEventCount:xt("analyzed_event_count"),analyzedTurnCount:xt("analyzed_turn_count"),metadata:ie("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:K("run_id").references(()=>h.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow()},e=>[R("idx_sessions_user").on(e.userId),R("idx_sessions_tool").on(e.tool),R("idx_sessions_started_at").on(e.startedAt),R("idx_sessions_project").on(e.projectId),R("idx_sessions_org_started_at").on(e.orgId,e.startedAt),R("idx_sessions_run").on(e.runId),vn("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),Ie=so("session_events",{id:K("id").primaryKey().defaultRandom(),sessionId:K("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),sequence:xt("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:ie("tool_input"),toolOutput:ie("tool_output"),tokenUsage:ie("token_usage"),model:I("model"),timestamp:Le("timestamp",{withTimezone:!0}).notNull(),metadata:ie("metadata").default({})},e=>[vn("session_events_session_sequence_idx").on(e.sessionId,e.sequence),R("idx_session_events_session_id").on(e.sessionId),R("idx_session_events_event_type").on(e.eventType),R("idx_session_events_model").on(e.model)]),$=so("session_instructions",{sessionId:K("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),instructionId:K("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[R("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as In,text as ht,timestamp as yn,uuid as k,integer as wn,index as ye,unique as Vs}from"drizzle-orm/pg-core";var C=In("treatment_assignments",{id:k("id").primaryKey().defaultRandom(),userId:k("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ht("treatment_type").notNull(),treatmentId:k("treatment_id").notNull(),treatmentVersion:wn("treatment_version").notNull().default(1),projectId:k("project_id").references(()=>s.id,{onDelete:"set null"}),assignedBy:k("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:ht("method").notNull(),assignedAt:yn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ye("idx_treatment_assignments_user").on(e.userId),ye("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),ye("idx_treatment_assignments_project").on(e.projectId)]),q=In("treatment_exposures",{id:k("id").primaryKey().defaultRandom(),sessionId:k("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),userId:k("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ht("treatment_type").notNull(),treatmentId:k("treatment_id").notNull(),treatmentVersion:wn("treatment_version").notNull().default(1),assignmentId:k("assignment_id").references(()=>C.id,{onDelete:"set null"}),method:ht("method").notNull(),exposedAt:yn("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vs("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),ye("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),ye("idx_treatment_exposures_user").on(e.userId),ye("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as Fs,text as io,timestamp as $s,uuid as gt,integer as Js,index as Tn,uniqueIndex as Qs}from"drizzle-orm/pg-core";var An=Fs("pending_treatment_exposures",{id:gt("id").primaryKey().defaultRandom(),userId:gt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:io("external_session_id").notNull(),treatmentType:io("treatment_type").notNull(),treatmentId:gt("treatment_id").notNull(),treatmentVersion:Js("treatment_version").notNull().default(1),method:io("method").notNull().default("injected"),projectId:gt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:$s("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qs("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Tn("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Tn("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Dn,text as J,timestamp as jn,uuid as we,numeric as Ys,index as ao,unique as Ws}from"drizzle-orm/pg-core";var Ue=Dn("instruction_experiments",{id:we("id").primaryKey().defaultRandom(),userId:we("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:we("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:J("project_path").notNull(),status:J("status").notNull().default("running"),treatedShare:Ys("treated_share").notNull().default("0.5"),salt:J("salt").notNull(),contentHash:J("content_hash"),source:J("source").notNull().default("manual"),stoppedReason:J("stopped_reason"),createdAt:jn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ao("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),zn=Dn("instruction_experiment_arms",{id:we("id").primaryKey().defaultRandom(),experimentId:we("experiment_id").notNull().references(()=>Ue.id,{onDelete:"cascade"}),userId:we("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:J("external_session_id").notNull(),arm:J("arm").notNull(),assignedAt:jn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ws("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),ao("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),ao("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{pgTable as Xs,text as uo,timestamp as Zs,uuid as vt,numeric as lo,integer as Rn,jsonb as ei,index as ti,unique as oi}from"drizzle-orm/pg-core";var kn=Xs("instruction_verdicts",{id:vt("id").primaryKey().defaultRandom(),userId:vt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:vt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:uo("content_hash").notNull(),projectPath:uo("project_path").notNull(),segment:ei("segment").notNull().default({}),decision:uo("decision").notNull(),delta:lo("delta").notNull(),ciLower:lo("ci_lower").notNull(),ciUpper:lo("ci_upper").notNull(),nTreated:Rn("n_treated").notNull(),nControl:Rn("n_control").notNull(),experimentId:vt("experiment_id").references(()=>Ue.id,{onDelete:"set null"}),decidedAt:Zs("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[oi("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),ti("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as ni,text as It,timestamp as co,uuid as po,integer as ri,unique as si,index as ii}from"drizzle-orm/pg-core";var En=ni("insight_recommendation_log",{id:po("id").primaryKey().defaultRandom(),userId:po("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:It("project_path").notNull().default(""),category:It("category").notNull(),contentHash:It("content_hash").notNull(),label:It("label").notNull().default(""),firstSeenAt:co("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:co("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:ri("times_generated").notNull().default(1),lastJobId:po("last_job_id"),dismissedAt:co("dismissed_at",{withTimezone:!0})},e=>[si("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),ii("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as ai,text as Te,timestamp as _o,uuid as Be,integer as Sn,index as yt}from"drizzle-orm/pg-core";var w=ai("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(()=>s.id,{onDelete:"set null"}),version:Sn("version").notNull().default(1),parentId:Be("parent_id").references(()=>w.id,{onDelete:"set null"}),kind:Te("kind").notNull(),title:Te("title").notNull(),body:Te("body").notNull(),source:Te("source").notNull(),status:Te("status").notNull().default("active"),trustClass:Te("trust_class"),trustVersion:Sn("trust_version"),trustComputedAt:_o("trust_computed_at",{withTimezone:!0}),createdAt:_o("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:_o("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[yt("idx_memories_user").on(e.userId),yt("idx_memories_project").on(e.projectId),yt("idx_memories_parent").on(e.parentId),yt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as di,text as ae,timestamp as mo,uuid as fo,integer as bn,jsonb as ui,index as Pn}from"drizzle-orm/pg-core";var Kn=di("memory_experiments",{id:fo("id").primaryKey().defaultRandom(),memoryId:fo("memory_id").notNull().references(()=>w.id,{onDelete:"cascade"}),userId:fo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:bn("memory_version").notNull().default(1),memoryBody:ae("memory_body"),taskPrompt:ae("task_prompt").notNull(),expectations:ae("expectations").array().notNull().default([]),trials:bn("trials").notNull().default(10),model:ae("model"),engine:ae("engine").$type().notNull().default("claude"),status:ae("status").notNull().default("pending"),result:ui("result").$type(),error:ae("error"),createdAt:mo("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:mo("started_at",{withTimezone:!0}),completedAt:mo("completed_at",{withTimezone:!0})},e=>[Pn("idx_memory_experiments_memory").on(e.memoryId),Pn("idx_memory_experiments_user").on(e.userId)]);import{pgTable as li,text as Ae,timestamp as No,uuid as xo,jsonb as ci,uniqueIndex as pi,index as Cn}from"drizzle-orm/pg-core";var wt=li("session_terminal_targets",{id:xo("id").primaryKey().defaultRandom(),userId:xo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:xo("session_id").references(()=>a.id,{onDelete:"set null"}),externalSessionId:Ae("external_session_id"),kind:Ae("kind").notNull(),target:Ae("target").notNull(),status:Ae("status").notNull().default("active"),attachCommand:Ae("attach_command").notNull(),projectPath:Ae("project_path"),metadata:ci("metadata").notNull().default({}),lastSeenAt:No("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:No("created_at",{withTimezone:!0}).defaultNow(),updatedAt:No("updated_at",{withTimezone:!0}).defaultNow()},e=>[pi("idx_session_terminal_targets_user_target").on(e.userId,e.target),Cn("idx_session_terminal_targets_session").on(e.sessionId),Cn("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as _i,index as Tt,jsonb as qn,pgTable as mi,text as de,timestamp as Ge,uuid as At,integer as ho}from"drizzle-orm/pg-core";var On=mi("session_send_jobs",{id:At("id").primaryKey().defaultRandom(),userId:At("user_id").notNull(),sessionId:At("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),terminalTargetId:At("terminal_target_id").references(()=>wt.id,{onDelete:"set null"}),target:de("target").notNull(),message:de("message").notNull(),submit:_i("submit").notNull().default(!0),delivery:de("delivery").notNull().default("live"),status:de("status").notNull().default("pending"),result:qn("result"),error:de("error"),attempts:ho("attempts").notNull().default(0),taskKind:de("task_kind"),payload:qn("payload"),claimedBy:de("claimed_by"),claimedAt:Ge("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ge("lease_expires_at",{withTimezone:!0}),leaseRecoveries:ho("lease_recoveries").notNull().default(0),hostSuspendRecoveries:ho("host_suspend_recoveries").notNull().default(0),createdAt:Ge("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ge("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ge("completed_at",{withTimezone:!0})},e=>[Tt("idx_session_send_jobs_user").on(e.userId),Tt("idx_session_send_jobs_session").on(e.sessionId),Tt("idx_session_send_jobs_status").on(e.status),Tt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Hn,text as ue,timestamp as Dt,jsonb as Ln,uuid as Q,integer as fi,boolean as Ni,uniqueIndex as xi,index as Mn,primaryKey as hi}from"drizzle-orm/pg-core";var j=Hn("packs",{id:Q("id").primaryKey().defaultRandom(),name:ue("name").notNull(),description:ue("description").notNull(),scope:ue("scope").notNull(),scopeRef:Q("scope_ref"),version:ue("version").notNull().default("1.0.0"),tags:ue("tags").array(),badge:ue("badge"),metadata:Ln("metadata"),createdBy:Q("created_by"),createdAt:Dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Dt("updated_at",{withTimezone:!0}).defaultNow(),archived:Ni("archived").default(!1),archivedAt:Dt("archived_at",{withTimezone:!0}),archivedBy:Q("archived_by"),forkedFromId:Q("forked_from_id").references(()=>j.id,{onDelete:"set null"}),upstreamVersion:ue("upstream_version")},e=>[xi("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Mn("idx_packs_scope").on(e.scope,e.scopeRef),Mn("idx_packs_created_by").on(e.createdBy)]),Y=Hn("pack_instructions",{packId:Q("pack_id").references(()=>j.id,{onDelete:"cascade"}).notNull(),instructionId:Q("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:fi("position").notNull().default(0),slotOverrides:Ln("slot_overrides"),addedAt:Dt("added_at",{withTimezone:!0}).defaultNow(),addedBy:Q("added_by")},e=>[hi({columns:[e.packId,e.instructionId]})]);import{pgTable as gi,text as go,timestamp as vi,jsonb as Ii,uuid as vo,index as De}from"drizzle-orm/pg-core";var je=gi("instruction_usage_events",{id:vo("id").primaryKey().defaultRandom(),instructionId:vo("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:vo("user_id").notNull(),surface:go("surface").notNull(),action:go("action").notNull(),metadata:Ii("metadata"),traceId:go("trace_id"),createdAt:vi("created_at",{withTimezone:!0}).defaultNow()},e=>[De("idx_usage_events_instruction").on(e.instructionId),De("idx_usage_events_user").on(e.userId),De("idx_usage_events_surface").on(e.surface),De("idx_usage_events_action").on(e.action),De("idx_usage_events_created_at").on(e.createdAt),De("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as yi,text as jt,timestamp as zt,jsonb as wi,uuid as Un,index as Io}from"drizzle-orm/pg-core";var Bn=yi("worker_connections",{id:Un("id").primaryKey().defaultRandom(),userId:Un("user_id").notNull(),workerType:jt("worker_type").notNull().default("mcp"),clientName:jt("client_name").notNull(),clientVersion:jt("client_version"),workerVersion:jt("worker_version"),lastHeartbeat:zt("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),presenceGapStartedAt:zt("presence_gap_started_at",{withTimezone:!0}),presenceGapEndedAt:zt("presence_gap_ended_at",{withTimezone:!0}),connectedAt:zt("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:wi("metadata")},e=>[Io("idx_worker_connections_user").on(e.userId),Io("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Io("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Ti,text as Rt,timestamp as Ai,jsonb as Di,uuid as Gn,index as Vn}from"drizzle-orm/pg-core";var Fn=Ti("cli_setup_events",{id:Gn("id").primaryKey().defaultRandom(),userId:Gn("user_id").notNull(),deviceId:Rt("device_id").notNull(),event:Rt("event").notNull(),cliVersion:Rt("cli_version"),os:Rt("os"),props:Di("props").notNull().default({}),createdAt:Ai("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vn("idx_cli_setup_events_user").on(e.userId,e.createdAt),Vn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ji,text as le,integer as zi,boolean as Ri,timestamp as ki,jsonb as Ei,uuid as Si,index as $n}from"drizzle-orm/pg-core";var Jn=ji("cli_error_events",{id:Si("id").primaryKey().defaultRandom(),deviceId:le("device_id"),event:le("event").notNull(),command:le("command"),statusCode:zi("status_code"),message:le("message"),cliVersion:le("cli_version"),os:le("os"),nodeVersion:le("node_version"),proxied:Ri("proxied"),props:Ei("props").notNull().default({}),createdAt:ki("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[$n("idx_cli_error_events_created").on(e.createdAt),$n("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as yo}from"drizzle-orm";import{pgTable as ce,text as p,timestamp as g,jsonb as T,uuid as c,integer as O,boolean as Ve,index as f,unique as Qn}from"drizzle-orm/pg-core";var r=ce("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:p("name").notNull(),type:p("type").notNull(),content:p("content").notNull(),description:p("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:O("version").notNull().default(1),parentId:c("parent_id").references(()=>r.id,{onDelete:"set null"}),instructionId:c("instruction_id").references(()=>n.id,{onDelete:"set null"}),projectPath:p("project_path"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("eval_targets_name_user_idx").on(e.name,e.userId),f("idx_eval_targets_user").on(e.userId),f("idx_eval_targets_type").on(e.type),f("idx_eval_targets_parent").on(e.parentId),f("idx_eval_targets_instruction").on(e.instructionId).where(yo`${e.instructionId} IS NOT NULL`),f("idx_eval_targets_project").on(e.projectPath).where(yo`${e.projectPath} IS NOT NULL`)]),M=ce("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),name:p("name").notNull(),prompt:p("prompt").notNull(),expectedOutput:p("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),retiredAt:g("retired_at",{withTimezone:!0}),retiredReason:p("retired_reason"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:g("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[f("idx_evals_target").on(e.evalTargetId),f("idx_evals_target_active").on(e.evalTargetId).where(yo`${e.retiredAt} IS NULL`)]),E=ce("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>M.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalTargetVersion:O("eval_target_version").notNull(),configuration:p("configuration").notNull(),runNumber:O("run_number").notNull().default(1),iteration:O("iteration").notNull().default(1),status:p("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_runs_eval").on(e.evalId),f("idx_eval_runs_target").on(e.evalTargetId),f("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),Yn=ce("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetAVersion:O("target_a_version").notNull(),targetBVersion:O("target_b_version").notNull(),isSwapped:Ve("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>r.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:p("raw_output"),model:p("model"),status:p("status").notNull().default("completed"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_comparisons_target_a").on(e.targetAId),f("idx_eval_comparisons_target_b").on(e.targetBId),f("idx_eval_comparisons_user").on(e.userId)]),Wn=ce("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>E.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),expectationIndex:O("expectation_index").notNull(),expectationText:p("expectation_text").notNull(),judgePassed:Ve("judge_passed").notNull(),judgeMethod:p("judge_method").notNull(),judgeModel:p("judge_model"),verdict:p("verdict").notNull(),flag:p("flag"),note:p("note"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_grade_annotations_target").on(e.evalTargetId),f("idx_eval_grade_annotations_run").on(e.evalRunId),Qn("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),Xn=ce("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>E.id,{onDelete:"cascade"}),expectationIndex:O("expectation_index").notNull(),expectationText:p("expectation_text").notNull(),judgePassed:Ve("judge_passed").notNull(),humanPassed:Ve("human_passed").notNull(),reviewerEngine:p("reviewer_engine").notNull(),reviewerModel:p("reviewer_model").notNull(),reviewerPassed:Ve("reviewer_passed").notNull(),resolvedAt:g("resolved_at",{withTimezone:!0}),resolution:p("resolution"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_jrv_target").on(e.evalTargetId),Qn("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),ze=ce("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),iteration:O("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_benchmarks_target").on(e.evalTargetId)]);import{sql as wo}from"drizzle-orm";import{pgTable as bi,text as H,timestamp as Pi,jsonb as kt,uuid as Et,boolean as Ki,index as Fe,uniqueIndex as Ci}from"drizzle-orm/pg-core";var Zn=bi("instruction_promotions",{id:Et("id").primaryKey().defaultRandom(),userId:Et("user_id").notNull(),evalTargetId:Et("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),instructionId:Et("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:H("from_content_hash").notNull(),toContentHash:H("to_content_hash").notNull(),fromContent:H("from_content").notNull(),toContent:H("to_content").notNull(),proposalSource:H("proposal_source").notNull(),proposalRationale:H("proposal_rationale").notNull().default(""),decision:H("decision").notNull(),applied:Ki("applied").notNull().default(!1),refusals:kt("refusals").notNull().default([]),rationale:H("rationale").notNull().default(""),effectClass:H("effect_class").notNull(),verdict:kt("verdict").notNull().default({}),gates:kt("gates").notNull().default({}),touchedSections:kt("touched_sections").notNull().default([]),createdAt:Pi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Fe("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(wo`${e.applied}`),Fe("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Fe("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Fe("idx_instruction_promotions_to_hash").on(e.toContentHash),Ci("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(wo`${e.applied}`),Fe("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(wo`${e.applied}`)]);import{index as $e,integer as qi,jsonb as Oi,pgTable as Mi,text as y,timestamp as Re,uniqueIndex as Hi,uuid as Je}from"drizzle-orm/pg-core";var er=Mi("recommendation_applications",{id:Je("id").primaryKey().defaultRandom(),userId:Je("user_id").notNull(),instructionId:Je("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectId:Je("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:y("project_path").notNull(),harness:y("harness").notNull(),targetPath:y("target_path").notNull(),status:y("status").notNull().default("proposed"),applyMode:y("apply_mode").notNull(),beforeHash:y("before_hash"),appliedHash:y("applied_hash"),appliedAt:Re("applied_at",{withTimezone:!0}),measurementStartedAt:Re("measurement_started_at",{withTimezone:!0}),measurementEndedAt:Re("measurement_ended_at",{withTimezone:!0}),verdict:y("verdict"),verdictDetail:y("verdict_detail"),revertedAt:Re("reverted_at",{withTimezone:!0}),boundaryClass:y("boundary_class"),targets:y("targets").array().notNull().default([]),inverse:Oi("inverse"),requires:y("requires").array().notNull().default([]),provides:y("provides").array().notNull().default([]),applyBatchId:Je("apply_batch_id"),applySeq:qi("apply_seq"),createdAt:Re("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Re("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Hi("uq_recommendation_applications_target").on(e.userId,e.instructionId,e.projectPath,e.harness,e.targetPath),$e("idx_recommendation_applications_user_status").on(e.userId,e.status,e.updatedAt.desc()),$e("idx_recommendation_applications_user_harness").on(e.userId,e.harness,e.updatedAt.desc()),$e("idx_recommendation_applications_project").on(e.projectId,e.updatedAt.desc()),$e("idx_recommendation_applications_batch").on(e.userId,e.applyBatchId,e.applySeq.desc()),$e("idx_recommendation_applications_requires").using("gin",e.requires)]);import{pgTable as Li,text as S,timestamp as tr,jsonb as Qe,uuid as To,integer as ke,real as Ui,index as W,uniqueIndex as or}from"drizzle-orm/pg-core";import{sql as Ao}from"drizzle-orm";var X=Li("context_snapshots",{id:To("id").primaryKey().defaultRandom(),sessionId:To("session_id").references(()=>a.id,{onDelete:"cascade"}),userId:To("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:ke("sequence").notNull().default(0),provider:S("provider").notNull(),model:S("model").notNull(),systemPrompt:S("system_prompt").notNull(),injectedInstructions:Qe("injected_instructions").notNull().default([]),messagesSummary:Qe("messages_summary").notNull(),tools:Qe("tools").notNull().default([]),systemHash:S("system_hash").notNull(),requestHash:S("request_hash").notNull().default(""),toolsHash:S("tools_hash"),injectedHash:S("injected_hash"),messagesDelta:Qe("messages_delta").default([]),messagesDeltaRef:S("messages_delta_ref"),messagesBaseLength:ke("messages_base_length"),payloadPrunedAt:tr("payload_pruned_at",{withTimezone:!0}),deltaOffloadState:S("delta_offload_state").notNull().default("inline"),deltaGzipBytes:ke("delta_gzip_bytes"),deltaOffloadError:S("delta_offload_error"),deltaOffloadAttempts:ke("delta_offload_attempts").notNull().default(0),maxTokens:ke("max_tokens"),temperature:Ui("temperature"),estimatedTokens:ke("estimated_tokens"),capturedAt:tr("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Qe("metadata").default({})},e=>[W("idx_context_snapshots_session").on(e.sessionId),W("idx_context_snapshots_user").on(e.userId),W("idx_context_snapshots_hash").on(e.systemHash),W("idx_context_snapshots_request_hash").on(e.requestHash),or("idx_snapshots_session_request").on(e.sessionId,e.requestHash),or("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),W("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc()),W("idx_snapshots_unpruned_captured").on(e.capturedAt,e.id).where(Ao`${e.payloadPrunedAt} is null`),W("idx_snapshots_pending_offload").on(e.deltaOffloadState,e.capturedAt,e.id).where(Ao`${e.deltaOffloadState} = 'pending'`),W("idx_snapshots_delta_ref").on(e.messagesDeltaRef).where(Ao`${e.messagesDeltaRef} is not null`)]);import{pgTable as Bi,text as nr,timestamp as rr,jsonb as Gi,integer as Vi,index as Fi}from"drizzle-orm/pg-core";var sr=Bi("content_blobs",{hash:nr("hash").primaryKey(),contentType:nr("content_type").notNull(),content:Gi("content").notNull(),sizeBytes:Vi("size_bytes").notNull().default(0),createdAt:rr("created_at",{withTimezone:!0}).defaultNow(),lastReferencedAt:rr("last_referenced_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Fi("idx_content_blobs_type").on(e.contentType)]);import{integer as ir,jsonb as $i,pgTable as Ji,timestamp as Qi,uuid as Yi}from"drizzle-orm/pg-core";var ar=Ji("session_capture_heads",{sessionId:Yi("session_id").primaryKey().references(()=>a.id,{onDelete:"cascade"}),sequence:ir("sequence").notNull(),rawMessageHashes:$i("raw_message_hashes").notNull().$type(),version:ir("version").notNull(),updatedAt:Qi("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{index as Wi,integer as dr,pgTable as Xi,text as Do,timestamp as ur,uniqueIndex as Zi,uuid as ea}from"drizzle-orm/pg-core";import{sql as ta}from"drizzle-orm";var lr=Xi("snapshot_delta_objects",{ref:Do("ref").primaryKey(),snapshotId:ea("snapshot_id"),compressedBytes:dr("compressed_bytes").notNull(),state:Do("state").notNull(),createdAt:ur("created_at",{withTimezone:!0}).notNull().defaultNow(),lastAttemptAt:ur("last_attempt_at",{withTimezone:!0}),attempts:dr("attempts").notNull().default(0),lastError:Do("last_error")},e=>[Wi("idx_snapshot_delta_objects_state_created").on(e.state,e.createdAt),Zi("snapshot_delta_objects_snapshot_id_unique").on(e.snapshotId).where(ta`${e.snapshotId} is not null`)]);import{pgTable as oa,text as St,timestamp as Ye,jsonb as bt,uuid as jo,index as Pt,integer as zo}from"drizzle-orm/pg-core";var b=oa("eval_jobs",{id:jo("id").primaryKey().defaultRandom(),userId:jo("user_id").notNull(),evalTargetId:jo("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),status:St("status").notNull().default("pending"),config:bt("config").notNull().default({}),progress:bt("progress").notNull().default({}),result:bt("result"),error:St("error"),attempts:zo("attempts").notNull().default(0),taskKind:St("task_kind"),payload:bt("payload"),claimedBy:St("claimed_by"),claimedAt:Ye("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ye("lease_expires_at",{withTimezone:!0}),leaseRecoveries:zo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:zo("host_suspend_recoveries").notNull().default(0),createdAt:Ye("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ye("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ye("completed_at",{withTimezone:!0})},e=>[Pt("idx_eval_jobs_user").on(e.userId),Pt("idx_eval_jobs_target").on(e.evalTargetId),Pt("idx_eval_jobs_status").on(e.status),Pt("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as na,text as We,timestamp as Xe,jsonb as cr,uuid as pr,integer as Ro,index as _r}from"drizzle-orm/pg-core";var mr=na("agent_jobs",{id:pr("id").primaryKey().defaultRandom(),userId:pr("user_id").notNull(),taskKind:We("task_kind").notNull(),status:We("status").notNull().default("pending"),payload:cr("payload").notNull(),dedupeKey:We("dedupe_key"),result:cr("result"),error:We("error"),attempts:Ro("attempts").notNull().default(0),claimedBy:We("claimed_by"),claimedAt:Xe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Xe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Ro("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Ro("host_suspend_recoveries").notNull().default(0),createdAt:Xe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Xe("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Xe("completed_at",{withTimezone:!0})},e=>[_r("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),_r("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as ra,text as Ze,timestamp as et,jsonb as Kt,uuid as ko,index as Ct,integer as Eo}from"drizzle-orm/pg-core";var fr=ra("insights_jobs",{id:ko("id").primaryKey().defaultRandom(),userId:ko("user_id").notNull(),status:Ze("status").notNull().default("pending"),projectPath:Ze("project_path"),projectId:ko("project_id").references(()=>s.id,{onDelete:"set null"}),config:Kt("config").notNull().default({}),progress:Kt("progress").notNull().default({}),result:Kt("result"),error:Ze("error"),attempts:Eo("attempts").notNull().default(0),taskKind:Ze("task_kind"),payload:Kt("payload"),claimedBy:Ze("claimed_by"),claimedAt:et("claimed_at",{withTimezone:!0}),leaseExpiresAt:et("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Eo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Eo("host_suspend_recoveries").notNull().default(0),createdAt:et("created_at",{withTimezone:!0}).defaultNow(),updatedAt:et("updated_at",{withTimezone:!0}).defaultNow(),completedAt:et("completed_at",{withTimezone:!0})},e=>[Ct("idx_insights_jobs_user").on(e.userId),Ct("idx_insights_jobs_status").on(e.status),Ct("idx_insights_jobs_pending").on(e.userId,e.status),Ct("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as sa,text as So,timestamp as qt,uuid as Nr,index as ia,uniqueIndex as aa}from"drizzle-orm/pg-core";var Ee=sa("api_keys",{id:Nr("id").primaryKey().defaultRandom(),userId:Nr("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:So("name").notNull(),keyHash:So("key_hash").notNull(),keyPrefix:So("key_prefix").notNull(),lastUsedAt:qt("last_used_at",{withTimezone:!0}),expiresAt:qt("expires_at",{withTimezone:!0}),revokedAt:qt("revoked_at",{withTimezone:!0}),createdAt:qt("created_at",{withTimezone:!0}).defaultNow()},e=>[ia("idx_api_keys_user").on(e.userId),aa("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as da,text as bo,timestamp as xr,uuid as ua,index as la}from"drizzle-orm/pg-core";var hr=da("extension_auth_codes",{code:bo("code").primaryKey(),userId:ua("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:bo("editor"),email:bo("email"),expiresAt:xr("expires_at",{withTimezone:!0}).notNull(),createdAt:xr("created_at",{withTimezone:!0}).defaultNow()},e=>[la("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as ca,text as pa,timestamp as gr,jsonb as _a,uuid as Po,index as vr}from"drizzle-orm/pg-core";var Se=ca("eval_conversations",{id:Po("id").primaryKey().defaultRandom(),evalTargetId:Po("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),userId:Po("user_id").notNull(),messages:_a("messages").notNull().default([]),status:pa("status").notNull().default("active"),createdAt:gr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:gr("updated_at",{withTimezone:!0}).defaultNow()},e=>[vr("idx_eval_conversations_target").on(e.evalTargetId),vr("idx_eval_conversations_user").on(e.userId)]);import{pgTable as ma,text as L,timestamp as Ir,jsonb as fa,uuid as Ko}from"drizzle-orm/pg-core";var yr=ma("skill_submissions",{id:Ko("id").primaryKey().defaultRandom(),skillId:L("skill_id").notNull(),name:L("name").notNull(),description:L("description").notNull(),category:L("category").notNull(),tools:L("tools").array().notNull(),tags:L("tags").array().default([]),content:L("content").notNull(),status:L("status").notNull().default("pending"),submittedBy:Ko("submitted_by").notNull(),reviewedBy:Ko("reviewed_by"),reviewNote:L("review_note"),metadata:fa("metadata"),createdAt:Ir("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ir("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Na,text as tt,timestamp as wr,jsonb as xa,uuid as ha,uniqueIndex as ga,index as Tr}from"drizzle-orm/pg-core";var Ar=Na("harness_releases",{id:ha("id").primaryKey().defaultRandom(),harness:tt("harness").notNull(),version:tt("version").notNull(),publishedAt:wr("published_at",{withTimezone:!0}).notNull(),title:tt("title"),body:tt("body"),categories:xa("categories").default({}),url:tt("url"),createdAt:wr("created_at",{withTimezone:!0}).defaultNow()},e=>[ga("idx_harness_releases_unique").on(e.harness,e.version),Tr("idx_harness_releases_harness").on(e.harness),Tr("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as va,text as be,timestamp as Dr,jsonb as Ia,uuid as jr,index as zr,uniqueIndex as ya}from"drizzle-orm/pg-core";var Co=va("notifications",{id:jr("id").primaryKey().defaultRandom(),userId:jr("user_id").notNull(),type:be("type").notNull(),title:be("title").notNull(),body:be("body"),url:be("url"),sourceTable:be("source_table"),sourceId:be("source_id"),metadata:Ia("metadata").notNull().default({}),readAt:Dr("read_at",{withTimezone:!0}),createdAt:Dr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[zr("idx_notifications_user_created").on(e.userId,e.createdAt),zr("idx_notifications_user_unread").on(e.userId),ya("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as wa,text as ot,timestamp as nt,jsonb as qo,uuid as Oo,index as Ot,integer as Mo}from"drizzle-orm/pg-core";var Pe=wa("launch_jobs",{id:Oo("id").primaryKey().defaultRandom(),userId:Oo("user_id").notNull(),tool:ot("tool").notNull(),status:ot("status").notNull().default("pending"),config:qo("config").notNull().default({}),result:qo("result"),error:ot("error"),attempts:Mo("attempts").notNull().default(0),taskKind:ot("task_kind"),payload:qo("payload"),claimedBy:ot("claimed_by"),claimedAt:nt("claimed_at",{withTimezone:!0}),leaseExpiresAt:nt("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Mo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Mo("host_suspend_recoveries").notNull().default(0),createdAt:nt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:nt("updated_at",{withTimezone:!0}).defaultNow(),completedAt:nt("completed_at",{withTimezone:!0}),runId:Oo("run_id").references(()=>h.id,{onDelete:"set null"})},e=>[Ot("idx_launch_jobs_user").on(e.userId),Ot("idx_launch_jobs_status").on(e.status),Ot("idx_launch_jobs_pending").on(e.userId,e.status),Ot("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Rr,uuid as U,text as Z,real as Ta,timestamp as rt,boolean as Aa,uniqueIndex as Da,index as st}from"drizzle-orm/pg-core";var kr=["add","remove","trim"],Ho=Rr("instruction_suggestions",{id:U("id").primaryKey().defaultRandom(),userId:U("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:U("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:Z("project_path").notNull(),projectId:U("project_id").references(()=>s.id,{onDelete:"set null"}),score:Ta("score").notNull(),reason:Z("reason").notNull(),kind:Z("kind").$type().notNull().default("add"),generatedAt:rt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Aa("is_stale").notNull().default(!1),dismissedAt:rt("dismissed_at",{withTimezone:!0}),acceptedAt:rt("accepted_at",{withTimezone:!0}),declinedAt:rt("declined_at",{withTimezone:!0}),declinedReason:Z("declined_reason"),promotedToInstructionId:U("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Da("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),st("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),st("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),st("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),Er=Rr("instruction_suggestion_events",{id:U("id").primaryKey().defaultRandom(),suggestionId:U("suggestion_id").notNull().references(()=>Ho.id,{onDelete:"cascade"}),userId:U("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:Z("event_type").notNull(),tool:Z("tool"),sessionId:U("session_id"),projectPath:Z("project_path").notNull(),actor:Z("actor"),createdAt:rt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[st("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),st("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as ja,text as Lo,integer as za,numeric as it,timestamp as Uo,index as Ra,primaryKey as ka}from"drizzle-orm/pg-core";var Sr=ja("model_pricing",{provider:Lo("provider").notNull(),modelId:Lo("model_id").notNull(),inputPerM:it("input_per_m").notNull(),outputPerM:it("output_per_m").notNull(),cacheReadPerM:it("cache_read_per_m").notNull(),cacheWrite5mPerM:it("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:it("cache_write_1h_per_m").notNull(),contextWindow:za("context_window"),effectiveFrom:Uo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Uo("effective_until",{withTimezone:!0}),source:Lo("source").notNull(),verifiedAt:Uo("verified_at",{withTimezone:!0})},e=>[ka({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ra("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Ea,text as pe,numeric as br,timestamp as Pr,uuid as Kr,jsonb as Sa,index as Cr}from"drizzle-orm/pg-core";var qr=Ea("limit_observations",{id:Kr("id").primaryKey().defaultRandom(),observedAt:Pr("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:pe("provider").notNull(),plan:pe("plan").notNull(),limitType:pe("limit_type").notNull(),value:br("value").notNull(),unit:pe("unit").notNull(),comparator:pe("comparator").notNull().default("="),resetsAt:Pr("resets_at",{withTimezone:!0}),sourceType:pe("source_type").notNull(),sourceUrl:pe("source_url"),sourceEvidence:Sa("source_evidence"),confidence:br("confidence").notNull(),userId:Kr("user_id")},e=>[Cr("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Cr("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as ba,text as Mt,timestamp as Pa,uuid as Ka,jsonb as Ca,boolean as qa,uniqueIndex as Oa}from"drizzle-orm/pg-core";var Or=ba("provider_docs_snapshots",{id:Ka("id").primaryKey().defaultRandom(),fetchedAt:Pa("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:Mt("provider").notNull(),docUrl:Mt("doc_url").notNull(),contentHash:Mt("content_hash").notNull(),content:Mt("content").notNull(),parseSuccess:qa("parse_success").notNull(),parseErrors:Ca("parse_errors")},e=>[Oa("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Ma,text as Ht,numeric as Mr,timestamp as Hr,uuid as Ha,primaryKey as La,index as Ua}from"drizzle-orm/pg-core";var Lr=Ma("plan_limits_active",{provider:Ht("provider").notNull(),plan:Ht("plan").notNull(),limitType:Ht("limit_type").notNull(),value:Mr("value").notNull(),unit:Ht("unit").notNull(),effectiveFrom:Hr("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Hr("effective_until",{withTimezone:!0}),confidence:Mr("confidence").notNull(),sourceObservationIds:Ha("source_observation_ids").array().notNull()},e=>[La({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),Ua("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as Ba,text as Bo,timestamp as Ga,uuid as Ur,jsonb as Va,index as Fa}from"drizzle-orm/pg-core";var Br=Ba("alert_dispatches",{id:Ur("id").primaryKey().defaultRandom(),userId:Ur("user_id").notNull(),alertKey:Bo("alert_key").notNull(),severity:Bo("severity").notNull(),lastDispatchedAt:Ga("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:Va("last_state").notNull(),channel:Bo("channel").notNull()},e=>[Fa("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{date as Gr,integer as Go,pgTable as Vr,primaryKey as $a,text as Ja,timestamp as Vo,uuid as Qa}from"drizzle-orm/pg-core";var Fr=Vr("weekly_digest_deliveries",{userId:Qa("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),weekStart:Gr("week_start").notNull(),sentAt:Vo("sent_at",{withTimezone:!0}).notNull().defaultNow(),providerMessageId:Ja("provider_message_id")},e=>[$a({columns:[e.userId,e.weekStart]})]),$r=Vr("weekly_digest_runs",{weekStart:Gr("week_start").primaryKey(),startedAt:Vo("started_at",{withTimezone:!0}).notNull().defaultNow(),finishedAt:Vo("finished_at",{withTimezone:!0}),sent:Go("sent"),skipped:Go("skipped"),failed:Go("failed")});import{pgTable as Ya,text as Fo,timestamp as Jr,uuid as $o,integer as Wa,index as Xa,unique as Za}from"drizzle-orm/pg-core";var Qr=Ya("scaffolding_fingerprints",{id:$o("id").primaryKey().defaultRandom(),userId:$o("user_id").notNull(),harness:Fo("harness").notNull(),model:Fo("model").notNull(),toolsHash:Fo("tools_hash").notNull(),firstSeenAt:Jr("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Jr("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:Wa("snapshot_count").notNull().default(1),firstSessionId:$o("first_session_id")},e=>[Za("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),Xa("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as ed,text as Jo,timestamp as td,jsonb as od,uuid as Yr,integer as nd,unique as rd}from"drizzle-orm/pg-core";var Wr=ed("scaffolding_segments",{id:Yr("id").primaryKey().defaultRandom(),userId:Yr("user_id").notNull(),harness:Jo("harness").notNull(),model:Jo("model").notNull(),coreNames:od("core_names").notNull(),coreHash:Jo("core_hash").notNull(),activeFingerprints:nd("active_fingerprints").notNull(),computedAt:td("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[rd("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{pgTable as sd,text as ee,timestamp as Xr,uuid as Qo,uniqueIndex as id,index as ad}from"drizzle-orm/pg-core";var Zr=["blog","docs","changelog"],Yo=sd("vendor_guidance_snapshots",{id:Qo("id").primaryKey().defaultRandom(),fetchedAt:Xr("fetched_at",{withTimezone:!0}).notNull().defaultNow(),sourceId:ee("source_id").notNull(),harness:ee("harness").notNull(),vendor:ee("vendor").notNull(),kind:ee("kind").$type().notNull(),url:ee("url").notNull(),title:ee("title").notNull(),contentHash:ee("content_hash").notNull(),text:ee("text").notNull(),previousSnapshotId:Qo("previous_snapshot_id").references(()=>Yo.id,{onDelete:"set null"}),pitchedAt:Xr("pitched_at",{withTimezone:!0}),pitchInstructionId:Qo("pitch_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[id("idx_vendor_guidance_dedup").on(e.sourceId,e.contentHash),ad("idx_vendor_guidance_source_fetched").on(e.sourceId,e.fetchedAt)]);import{pgTable as ts,uuid as Ke,text as Lt,jsonb as es,timestamp as Wo,uniqueIndex as dd,integer as ud,unique as ld}from"drizzle-orm/pg-core";var te=ts("performance_studies",{id:Ke("id").primaryKey().defaultRandom(),userId:Ke("user_id").notNull(),evalTargetId:Ke("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:Lt("project_path").notNull(),protocol:es("protocol").notNull(),protocolHash:Lt("protocol_hash").notNull(),result:es("result"),finalizedAt:Wo("finalized_at",{withTimezone:!0}),createdAt:Wo("created_at",{withTimezone:!0}).defaultNow().notNull()},e=>[dd("performance_studies_protocol_unique").on(e.userId,e.evalTargetId,e.protocolHash)]),_e=ts("performance_study_calls",{id:Ke("id").primaryKey().defaultRandom(),studyId:Ke("study_id").notNull().references(()=>te.id,{onDelete:"cascade"}),jobId:Ke("job_id").notNull().references(()=>b.id,{onDelete:"cascade"}),taskId:Lt("task_id").notNull(),arm:Lt("arm").notNull(),repetition:ud("repetition").notNull(),reservedAt:Wo("reserved_at",{withTimezone:!0}).defaultNow().notNull()},e=>[ld("performance_study_calls_study_id_task_id_arm_repetition_key").on(e.studyId,e.taskId,e.arm,e.repetition)]);import{drizzle as is}from"drizzle-orm/postgres-js";import as from"postgres";var Ut={};Ds(Ut,{GUIDANCE_KINDS:()=>Zr,SUGGESTION_KINDS:()=>kr,agentJobs:()=>mr,agentRuns:()=>h,agentRunsRelations:()=>Ad,alertDispatches:()=>Br,announcementDeliveries:()=>dn,announcements:()=>an,apiKeys:()=>Ee,apiKeysRelations:()=>pd,benchmarks:()=>ze,benchmarksRelations:()=>qd,cliErrorEvents:()=>Jn,cliSetupEvents:()=>Fn,contentBlobs:()=>sr,contextSnapshots:()=>X,contextSnapshotsRelations:()=>Hd,evalComparisons:()=>Yn,evalConversations:()=>Se,evalConversationsRelations:()=>Md,evalGradeAnnotations:()=>Wn,evalJobs:()=>b,evalJobsRelations:()=>Od,evalRuns:()=>E,evalRunsRelations:()=>Cd,evalTargets:()=>r,evalTargetsRelations:()=>Pd,evals:()=>M,evalsRelations:()=>Kd,extensionAuthCodes:()=>hr,harnessReleases:()=>Ar,insightRecommendationLog:()=>En,insightsJobs:()=>fr,instructionEvents:()=>ge,instructionEventsRelations:()=>gd,instructionExperimentArms:()=>zn,instructionExperiments:()=>Ue,instructionPromotions:()=>Zn,instructionSuggestionEvents:()=>Er,instructionSuggestions:()=>Ho,instructionUsageEvents:()=>je,instructionUsageEventsRelations:()=>bd,instructionVerdicts:()=>kn,instructionVersionIdentities:()=>fn,instructionVersions:()=>he,instructionVersionsRelations:()=>Id,instructions:()=>n,instructionsRelations:()=>hd,judgeReviewerVerdicts:()=>Xn,launchJobs:()=>Pe,launchJobsRelations:()=>Dd,limitObservations:()=>qr,memories:()=>w,memoriesRelations:()=>vd,memoryExperiments:()=>Kn,modelPricing:()=>Sr,notificationPreferences:()=>un,notifications:()=>Co,orgInvitations:()=>P,orgInvitationsRelations:()=>fd,organizations:()=>l,organizationsRelations:()=>_d,packInstructions:()=>Y,packInstructionsRelations:()=>Sd,packs:()=>j,packsRelations:()=>Ed,pendingTreatmentExposures:()=>An,performanceStudies:()=>te,performanceStudiesRelations:()=>Ld,performanceStudyCalls:()=>_e,performanceStudyCallsRelations:()=>Ud,planLimitsActive:()=>Lr,profiles:()=>o,profilesRelations:()=>cd,projectCheckouts:()=>hn,projectInstructions:()=>F,projectInstructionsRelations:()=>wd,projects:()=>s,projectsRelations:()=>yd,providerDocsSnapshots:()=>Or,recommendationApplications:()=>er,scaffoldingFingerprints:()=>Qr,scaffoldingSegments:()=>Wr,sessionCaptureHeads:()=>ar,sessionEvents:()=>Ie,sessionEventsRelations:()=>jd,sessionInstructions:()=>$,sessionInstructionsRelations:()=>zd,sessionSendJobs:()=>On,sessionTerminalTargets:()=>wt,sessions:()=>a,sessionsRelations:()=>Td,skillSubmissions:()=>yr,snapshotDeltaObjects:()=>lr,teams:()=>v,teamsRelations:()=>md,treatmentAssignments:()=>C,treatmentAssignmentsRelations:()=>Rd,treatmentExposures:()=>q,treatmentExposuresRelations:()=>kd,userOrganizations:()=>Ne,userOrganizationsRelations:()=>Nd,userTeams:()=>xe,userTeamsRelations:()=>xd,vendorGuidanceSnapshots:()=>Yo,weeklyDigestDeliveries:()=>Fr,weeklyDigestRuns:()=>$r,workerConnections:()=>Bn});import{relations as i}from"drizzle-orm";var cd=i(o,({many:e})=>({sessions:e(a),contextSnapshots:e(X),apiKeys:e(Ee)})),pd=i(Ee,({one:e})=>({profile:e(o,{fields:[Ee.userId],references:[o.id]})})),_d=i(l,({many:e})=>({teams:e(v),userOrganizations:e(Ne),projects:e(s),invitations:e(P)})),md=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(xe),invitations:t(P)})),fd=i(P,({one:e})=>({organization:e(l,{fields:[P.orgId],references:[l.id]}),team:e(v,{fields:[P.teamId],references:[v.id]}),inviter:e(o,{fields:[P.invitedBy],references:[o.id]})})),Nd=i(Ne,({one:e})=>({organization:e(l,{fields:[Ne.orgId],references:[l.id]})})),xd=i(xe,({one:e})=>({team:e(v,{fields:[xe.teamId],references:[v.id]})})),hd=i(n,({one:e,many:t})=>({versions:t(he),projectInstructions:t(F),events:t(ge),usageEvents:t(je),sessionInstructions:t($),packInstructions:t(Y),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),gd=i(ge,({one:e})=>({instruction:e(n,{fields:[ge.instructionId],references:[n.id]})})),vd=i(w,({one:e,many:t})=>({project:e(s,{fields:[w.projectId],references:[s.id]}),parent:e(w,{fields:[w.parentId],references:[w.id]}),versions:t(w)})),Id=i(he,({one:e})=>({instruction:e(n,{fields:[he.instructionId],references:[n.id]})})),yd=i(s,({one:e,many:t})=>({organization:e(l,{fields:[s.orgId],references:[l.id]}),projectInstructions:t(F),sessions:t(a)})),wd=i(F,({one:e})=>({project:e(s,{fields:[F.projectId],references:[s.id]}),instruction:e(n,{fields:[F.instructionId],references:[n.id]})})),Td=i(a,({one:e,many:t})=>({profile:e(o,{fields:[a.userId],references:[o.id]}),project:e(s,{fields:[a.projectId],references:[s.id]}),run:e(h,{fields:[a.runId],references:[h.id]}),events:t(Ie),sessionInstructions:t($),treatmentExposures:t(q),contextSnapshots:t(X)})),Ad=i(h,({one:e,many:t})=>({profile:e(o,{fields:[h.userId],references:[o.id]}),organization:e(l,{fields:[h.orgId],references:[l.id]}),project:e(s,{fields:[h.projectId],references:[s.id]}),sessions:t(a),launchJobs:t(Pe)})),Dd=i(Pe,({one:e})=>({run:e(h,{fields:[Pe.runId],references:[h.id]})})),jd=i(Ie,({one:e})=>({session:e(a,{fields:[Ie.sessionId],references:[a.id]})})),zd=i($,({one:e})=>({session:e(a,{fields:[$.sessionId],references:[a.id]}),instruction:e(n,{fields:[$.instructionId],references:[n.id]})})),Rd=i(C,({one:e,many:t})=>({owner:e(o,{fields:[C.userId],references:[o.id]}),project:e(s,{fields:[C.projectId],references:[s.id]}),exposures:t(q)})),kd=i(q,({one:e})=>({session:e(a,{fields:[q.sessionId],references:[a.id]}),owner:e(o,{fields:[q.userId],references:[o.id]}),assignment:e(C,{fields:[q.assignmentId],references:[C.id]})})),Ed=i(j,({one:e,many:t})=>({packInstructions:t(Y),forkedFrom:e(j,{fields:[j.forkedFromId],references:[j.id]})})),Sd=i(Y,({one:e})=>({pack:e(j,{fields:[Y.packId],references:[j.id]}),instruction:e(n,{fields:[Y.instructionId],references:[n.id]})})),bd=i(je,({one:e})=>({instruction:e(n,{fields:[je.instructionId],references:[n.id]})})),Pd=i(r,({one:e,many:t})=>({parent:e(r,{fields:[r.parentId],references:[r.id]}),evals:t(M),evalRuns:t(E),benchmarks:t(ze),evalJobs:t(b),evalConversations:t(Se)})),Kd=i(M,({one:e,many:t})=>({evalTarget:e(r,{fields:[M.evalTargetId],references:[r.id]}),runs:t(E)})),Cd=i(E,({one:e})=>({eval:e(M,{fields:[E.evalId],references:[M.id]}),evalTarget:e(r,{fields:[E.evalTargetId],references:[r.id]})})),qd=i(ze,({one:e})=>({evalTarget:e(r,{fields:[ze.evalTargetId],references:[r.id]})})),Od=i(b,({one:e})=>({evalTarget:e(r,{fields:[b.evalTargetId],references:[r.id]})})),Md=i(Se,({one:e})=>({evalTarget:e(r,{fields:[Se.evalTargetId],references:[r.id]})})),Hd=i(X,({one:e})=>({session:e(a,{fields:[X.sessionId],references:[a.id]}),profile:e(o,{fields:[X.userId],references:[o.id]})})),Ld=i(te,({one:e,many:t})=>({target:e(r,{fields:[te.evalTargetId],references:[r.id]}),calls:t(_e)})),Ud=i(_e,({one:e})=>({study:e(te,{fields:[_e.studyId],references:[te.id]}),job:e(b,{fields:[_e.jobId],references:[b.id]})}));var at=0,os=0,dt=0,ns=0;var Bd=0;function Xo(){at++,at>os&&(os=at)}m(Xo,"trackDbOpStart");function Zo(){at>0&&at--}m(Zo,"trackDbOpEnd");function en(){dt++,dt>ns&&(ns=dt)}m(en,"trackHeavyDbOpStart");function tn(){dt>0&&dt--}m(tn,"trackHeavyDbOpEnd");function rs(){Bd++}m(rs,"recordQueryDeadline");var Gt,Ft,on=!1,Bt;var ss,$t,Vt;function ds(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(ds,"getEnv");function us(){if(on)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Gt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,d=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,u=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,_=Number(process.env.PG_IDLE_TIMEOUT)||5,x=Number(process.env.PG_KEEP_ALIVE_S)||60;Ft=as(ds("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:d,idle_timeout:_,keep_alive:x,max_lifetime:300,connection:{application_name:e,...u>0?{statement_timeout:u}:{}}}),Gt=is(Ft,{schema:Ut})}return Gt}m(us,"getDb");function ls(){if(on)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Vt){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;$t=as(ds("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}}),Vt=is($t,{schema:Ut})}return Vt}m(ls,"getHeavyDb");async function Gd(){if(Bt)return Bt;on=!0;let e=Ft,t=ss,d=$t;return Ft=void 0,Gt=void 0,ss=void 0,$t=void 0,Vt=void 0,Bt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),d?d.end({timeout:5}):Promise.resolve()]).then(()=>{}),Bt}m(Gd,"closeDb");var Vd=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function cs(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&Vd.has(d)}m(cs,"isRetryableConnectError");var Fd=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function ps(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&Fd.has(d)}m(ps,"isRetryableResetError");async function _s(e,t={}){let d=t.attempts??3,u=t.baseMs??100,_;for(let x=0;x<d;x++)try{return await e()}catch(A){_=A;let B=cs(A)||t.retryResets===!0&&ps(A);if(x===d-1||!B)throw A;await new Promise(oe=>setTimeout(oe,u*2**x))}throw _}m(_s,"withDbRetry");var Jt=class extends Error{static{m(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 ms(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(ms,"queryDeadlineMs");function fs(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}m(fs,"heavyQueryDeadlineMs");function $d(e,t,d=!0){let u,_=new Promise((x,A)=>{u=setTimeout(()=>{d&&rs(),A(new Jt(t))},t);let B=u;typeof B.unref=="function"&&B.unref()});return Promise.race([e,_]).finally(()=>clearTimeout(u))}m($d,"raceWithDeadline");var Ns=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),xs=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function nn(e,t=!1,d=0,u=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(_,x,A){if(x==="then"){let oe=Reflect.get(_,x,A);return typeof oe!="function"?oe:(vs,Is)=>{let ys=u?en:Xo,ws=u?tn:Zo;ys();let rn=_s(()=>new Promise((Ts,As)=>oe.call(_,Ts,As)),{retryResets:t});return(d>0?$d(rn,d,!u):rn).finally(ws).then(vs,Is)}}let B=Reflect.get(_,x,A);return typeof B=="function"?(...oe)=>nn(B.apply(_,oe),t,d,u):B}})}m(nn,"wrapBuilder");function hs(e,t=!1){let d=t?en:Xo,u=t?tn:Zo;d();try{return Promise.resolve(e()).finally(u)}catch(_){throw u(),_}}m(hs,"gaugeTransaction");var gs=new Proxy({},{get(e,t){let d=us(),u=d[t];if(typeof t=="string"&&Ns.has(t)&&typeof u=="function"){let _=xs.has(t),x=ms();return(...A)=>nn(u.apply(d,A),_,x)}return t==="transaction"&&typeof u=="function"?(..._)=>hs(()=>u.apply(d,_)):u}}),Jd=new Proxy({},{get(e,t){let d=ls(),u=d[t];if(typeof t=="string"&&Ns.has(t)&&typeof u=="function"){let _=xs.has(t);return(...x)=>nn(u.apply(d,x),_,fs(),!0)}return t==="transaction"&&typeof u=="function"?(..._)=>hs(()=>u.apply(d,_),!0):u}});export{an as a,us as b,Gd as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as E}from"./chunk-DQYYHX6K.js";import{a as I}from"./chunk-RBSEE2Z6.js";import{a as w}from"./chunk-M7QSC64D.js";import{c as v,e as h}from"./chunk-
|
|
1
|
+
import{a as E}from"./chunk-DQYYHX6K.js";import{a as I}from"./chunk-RBSEE2Z6.js";import{a as w}from"./chunk-M7QSC64D.js";import{c as v,e as h}from"./chunk-FADINV4H.js";import{b as R}from"./chunk-SWSOEYC7.js";import{e as m}from"./chunk-GIXHG5FK.js";import{a as d}from"./chunk-ZLLER3HP.js";var T=6e5;async function P(e,$){let i=d(n=>$?.logger?.info?.(n)??console.log(n),"log"),{evalTargetId:r}=e,k=e.measurement?v(e):{},o=await m(`/api/eval-targets/${r}/judge-calibration`),l=!e.measurement||o.methodology?.measurement?.engine===e.measurement.engine&&o.methodology.measurement.model===e.measurement.model&&o.methodology.current===R(e.measurement.engine),a=I({powered:l&&o.powerCheck.powered,mde:l?o.powerCheck.mde??Number.POSITIVE_INFINITY:Number.POSITIVE_INFINITY},(l?o.caseDiscrimination:void 0)??{total:0,discriminating:0,nonDiscriminating:0,unpaired:0},{runsCompleted:0,maxRuns:e.maxRuns??24,batchesRun:0,maxBatches:1});if(a.action==="stop")return i(`[cron_eval_autorun] ${r}: ${a.reason}`),{skipped:a.code,reason:a.reason};let t=await m(`/api/eval-targets/${r}`);if(t.metadata?.autoRunEnabled===!1)return{skipped:"paused",reason:"Nightly measurement is off for this target."};let c=w(t);if(c)return i(`[cron_eval_autorun] ${r}: ${c.reason}`),c;let p=(await m(`/api/eval-targets/${r}/evals`)).filter(n=>!n.retiredAt);if(p.length===0)return{skipped:"no-live-cases"};let{completed:f,failed:b,results:N}=await h({cases:E(p,e.maxRuns??12),targetContent:t.content,concurrency:2,runNumber:Math.floor(Date.now()/1e3),opts:{targetId:r,targetVersion:t.version??1,iteration:1,timeout:e.timeout??T,model:e.model,graderModel:e.graderModel,graderEngine:e.graderEngine,...k,skipGrading:!1,targetType:t.type,targetName:t.name},onLog:i}),g={};for(let n of N){if(n.status!=="failed")continue;let s=n.failure?.kind??"unknown";g[s]=(g[s]??0)+1}let u=Object.entries(g).sort(([,n],[,s])=>s-n).map(([n,s])=>`${n}x${s}`).join(", ");return i(`[cron_eval_autorun] ${t.name}: ${f} completed, ${b} failed`+(u===""?"":` (${u})`)),{ranRuns:f,failedRuns:b,...u===""?{}:{failures:u},reason:a.reason}}d(P,"cronEvalAutorun");export{P as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{e as b,g as y}from"./chunk-
|
|
1
|
+
import{e as b,g as y}from"./chunk-XCH4HPEZ.js";import{e as M,f as w}from"./chunk-GIXHG5FK.js";import{a as u}from"./chunk-ZLLER3HP.js";var $={anthropic:["https://platform.claude.com/docs/en/about-claude/pricing.md"],openai:["https://platform.openai.com/docs/pricing"]},R=.7,v=16e3,x=["You extract LLM API pricing from a provider pricing page.","You will be given the page text in <data> tags and, in this system prompt,","a list of model ids to find. For EACH requested model id, return its","published USD price per 1,000,000 tokens.","","Rules:","- Only report a model if you can find its rate ON THE PAGE. If it is not on"," the page, set found=false and omit the numbers \u2014 never guess from memory.","- inputPerM and outputPerM are the standard (non-batch, non-priority) rates.","- cacheReadPerM: the cached/discounted-input rate if published, else omit.","- For Anthropic models ONLY, if cache-write rates are not explicitly listed,"," compute them as cacheWrite5mPerM = inputPerM * 1.25 and"," cacheWrite1hPerM = inputPerM * 2.0. For all other providers, omit them.","- confidence is 0..1: how sure you are the numbers are correct for THIS id.","- contextWindow in tokens if stated, else omit.","","Respond with ONLY a JSON object of the form:",'{"rates":[{"modelId":"...","found":true,"confidence":0.9,"inputPerM":5,"outputPerM":25,"cacheReadPerM":0.5,"contextWindow":1000000}]}'].join(`
|
|
2
2
|
`);async function C(f){try{let n=await fetch(f,{headers:{accept:"text/plain, text/markdown, text/html"}});if(!n.ok)return null;let i=await n.text();return i.length>v?i.slice(0,v):i}catch{return null}}u(C,"fetchPage");var L=u(async(f,n)=>{let i=await M("/api/pricing/coverage"),I=[...i.unpriced,...i.stale],m=new Map;for(let r of I)m.set(`${r.provider}::${r.modelId}`,r);let a=[...m.values()];if(a.length===0)return n.logger.info("[cron-refresh-pricing] coverage clean \u2014 nothing unpriced or stale"),{status:"clean",checked:i.unpriced.length+i.stale.length};if(b()==="none")return n.logger.warn(`[cron-refresh-pricing] ${a.length} model(s) need pricing but no LLM backend (install the claude CLI or set ANTHROPIC_API_KEY) \u2014 skipping`),{status:"no-llm",pending:a.length};let d=new Map;for(let r of a){let o=d.get(r.provider)??[];o.push(r.modelId),d.set(r.provider,o)}let t={written:0,unchanged:0,flagged:0,rejected:0,skipped:0},c=[];for(let[r,o]of d){let h=$[r];if(!h){n.logger.warn(`[cron-refresh-pricing] no pricing source configured for provider '${r}' (${o.length} model(s)) \u2014 skipping`),t.skipped+=o.length;continue}let p="",l="";for(let e of h){let s=await C(e);s&&(p+=`
|
|
3
3
|
|
|
4
4
|
=== ${e} ===
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as M}from"./chunk-5RBLIVBF.js";import{c as q}from"./chunk-GLBWNB2N.js";import{a as K,b as Y}from"./chunk-CQD2R3BA.js";import{a as A,d as N}from"./chunk-3UKZJAFS.js";import{a as j,b as k,c as V,d as D}from"./chunk-77FH6UZP.js";import{a as Z}from"./chunk-KE5K3F7J.js";import{b as W,e as B,g as T}from"./chunk-
|
|
1
|
+
import{a as M}from"./chunk-5RBLIVBF.js";import{c as q}from"./chunk-GLBWNB2N.js";import{a as K,b as Y}from"./chunk-CQD2R3BA.js";import{a as A,d as N}from"./chunk-3UKZJAFS.js";import{a as j,b as k,c as V,d as D}from"./chunk-77FH6UZP.js";import{a as Z}from"./chunk-KE5K3F7J.js";import{b as W,e as B,g as T}from"./chunk-XCH4HPEZ.js";import{e as h,f as U,h as m}from"./chunk-GIXHG5FK.js";import{a as L,b as H}from"./chunk-X6CF5KTW.js";import{a as f}from"./chunk-ZLLER3HP.js";var Q=f((l,{limit:a,sort:n,eventTypes:s})=>h(`/api/sessions/${l}/events?limit=${a}&sort=${n}&eventType=${encodeURIComponent(s.join(","))}&hasContent=true`),"fetchTranscriptTurns");async function ms(l,a){let{mirrorId:n,projectPath:s,projectId:r,config:u}=l,e=f(t=>a.logger.info(t),"log");if(u?.sessionId)return es({mirrorId:n,sessionId:u.sessionId},e);e(`Processing insights job ${n}...`),await m(`/api/insights-jobs/${n}/progress`,{status:"running",progress:{step:"reading_data"}});try{let{repaired:t}=await U("/api/sessions/repair-analyzed-at",{});t>0&&e(` Repaired analyzed_at on ${t} orphan session(s).`)}catch(t){e(` Warning: analyzed_at repair failed: ${t instanceof Error?t.message:String(t)}`)}let p=20,C=200,z=15*6e4,F=3,E=Date.now()+z,I=B()==="none"?"no-llm-backend":null;if(I&&a.logger.warn?.("[process-insights] no LLM backend (no claude/codex CLI and no ANTHROPIC_API_KEY) \u2014 facet grading SKIPPED for this run; the summary below is computed from already-graded sessions only"),!I){let t=0,i=0;try{for(;t<C&&Date.now()<E;){let c=await h(`/api/sessions?needsFacets=true&graderVersion=${2}&limit=${p}&offset=${i}`);if(c.length===0)break;e(` Generating facets for ${c.length} un-analyzed sessions (drained ${t} so far)...`);for(let b=0;b<c.length&&!(t>=C||Date.now()>=E);b+=F){let R=c.slice(b,b+F);await Promise.all(R.map(async g=>{if(!(t>=C||Date.now()>=E))try{let d=await N(ss=>Q(g.id,ss));if(d.turnCount<2){t++,i++;return}let O=await T(D,d.text,4096);O&&typeof O.outcome=="string"?(await m(`/api/sessions/${g.id}/enrich`,{analysis:{source:"generated_facets",...O,graderVersion:2},...g.eventCount!=null?{analyzedEventCount:g.eventCount}:{},analyzedTurnCount:d.turnCount}),e(` Generated facets for session ${g.id} (${g.tool}, ${d.turnCount} turns)`)):i++,t++}catch(d){e(` Failed to generate facets for session ${g.id}: ${d instanceof Error?d.message:String(d)}`),t++,i++}}))}if(c.length<p)break}}catch(c){e(` Warning: facet generation failed after ${t} sessions: ${c instanceof Error?c.message:String(c)}`)}if(t>0){let c=Date.now()>=E?`time budget (${Math.round(z/6e4)}m)`:t>=C?`hard cap (${C})`:"queue empty";e(` Facet drain stopped on ${c} after ${t} session(s); the rest resume next run.`)}}let _=await ns(s,r);if(!_)throw new M("No session data found \u2014 ensure sessions are captured and enriched.");e(` Found ${_.stats.sessions} sessions, generating recommendations...`);let y=await Y({projectId:r,projectPath:s},h);_.summary+=`
|
|
2
2
|
|
|
3
3
|
${y.text}`,e(` Session evidence: ${y.sessionIds.length} usable, ${y.failedSessionIds.length} unavailable`);let S=await ts(s,e);S&&e(` Generator memory: ${S.split(`
|
|
4
4
|
`).length} lines of prior-advice context`);let o={},$=[],w=k.length+1;for(let t=0;t<k.length;t++){let i=k[t];e(` [${t+1}/${w}] Generating ${i.name}...`);try{await m(`/api/insights-jobs/${n}/progress`,{status:"running",progress:{step:i.name,current:t+1,total:w,partial:{...o}}})}catch(d){e(` Warning: progress update failed for ${i.name}: ${d instanceof Error?d.message:String(d)}`)}e(` Running LLM prompt for ${i.name}...`);let c=i.usesGeneratorMemory&&S?`${_.summary}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as S,b as P}from"./chunk-PPAHIVG5.js";import{a as E,b as C,c as _}from"./chunk-CT7FWSIU.js";import{a as V,b as v,c as T}from"./chunk-5MXZJWQS.js";import{a as b}from"./chunk-N7ODX6PO.js";import{d as K}from"./chunk-
|
|
1
|
+
import{a as S,b as P}from"./chunk-PPAHIVG5.js";import{a as E,b as C,c as _}from"./chunk-CT7FWSIU.js";import{a as V,b as v,c as T}from"./chunk-5MXZJWQS.js";import{a as b}from"./chunk-N7ODX6PO.js";import{d as K}from"./chunk-JNLDISBA.js";import{c as z,d as H}from"./chunk-GPBN4ROE.js";import{a as g,b as U}from"./chunk-6XTLP2G7.js";import{a as c}from"./chunk-ZLLER3HP.js";import{execSync as M,spawn as ee}from"node:child_process";import{tmpdir as B}from"node:os";import{mkdtempSync as te,rmSync as ne,writeFileSync as re}from"node:fs";import{join as Y}from"node:path";function oe(t,o){let{available:r,backend:n}=o??{available:c(l=>g(l)!==null,"available"),backend:A()},e=P(t);if(r(e.bin))return{bin:e.bin,args:e.args,delivery:e.delivery??"stdin",substitutedFrom:null};let i=n==="codex-cli"?S.codex:n==="claude-cli"?S.claude_code:n==="copilot-cli"?S.copilot:null;return!i||!r(i.bin)?null:{bin:i.bin,args:i.args,delivery:i.delivery??"stdin",substitutedFrom:e.bin}}c(oe,"planToolExecution");function X(t,o=300){let r=t.trim().replace(/\s+/g," ");return r.length>o?`${r.slice(0,o)}\u2026`:r}c(X,"excerpt");async function ye(t,o,r){let n=oe(t);if(!n){let s=`no engine can run ${t}'s prompt: ${P(t).bin} is not installed and no substitutable backend was detected`;return console.warn(`[llm-client] ${s}`),{ok:!1,reason:s}}let{bin:e,args:i,delivery:l}=n;n.substitutedFrom&&console.warn(`[llm-client] ${n.substitutedFrom} is not installed \u2014 running ${t}'s analysis prompt on ${e} instead`);let a=g(e);if(!a){let s=`${e} not found on PATH, well-known dirs, or the node bin dir`;return console.warn(`[llm-client] ${s}`),{ok:!1,reason:s}}let u=`${o}
|
|
2
2
|
|
|
3
3
|
SESSION DATA:
|
|
4
4
|
${r}`,m={...b()};delete m.HTTPS_PROXY;let p=null,y=i,$=u;if(l==="argv-file"){p=te(Y(B(),"rulemetric-tool-prompt-"));let s=Y(p,"session-data.txt");re(s,r),y=[...i,`@${s}`,`${o}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as E}from"./chunk-
|
|
1
|
+
import{d as E}from"./chunk-FADINV4H.js";import{b as F,c as x}from"./chunk-KGURGIZ2.js";import{f as R}from"./chunk-GIXHG5FK.js";import{a}from"./chunk-ZLLER3HP.js";var _="with_candidate",w="with_prior_version";function S(e){return JSON.stringify([e.outputs.engine??null,e.outputs.model??null,e.outputs.methodology??null,e.outputs.deliveryRegime??null,e.grading.judge_engine??null,e.grading.judge_model??null])}a(S,"observedExecutionKey");function I(e){let r=e.filter(n=>n.status==="completed"),i=new Set(r.map(n=>JSON.stringify([n.outputs.engine??null,n.outputs.model??null,n.outputs.methodology??null,n.outputs.deliveryRegime??null]))),t=new Set(r.filter(n=>n.grading.judge_model!=null).map(n=>JSON.stringify([n.grading.judge_engine??"claude",n.grading.judge_model])));return i.size===1&&t.size<=1?JSON.stringify([[...i][0],[...t][0]??null]):null}a(I,"measurementBatchKey");function A(e){let r=e.filter(t=>t.configuration===_),i=[];for(let t of r){let n=e.find(s=>s.configuration===w&&s.evalId===t.evalId&&s.runNumber===t.runNumber);if(!n||S(n)!==S(t))continue;let l=h(t),m=h(n);l==null||m==null||i.push({withScore:l,withoutScore:m})}return i}a(A,"pairCandidateRuns");function h(e){return e.status!=="completed"?null:e.grading?.summary?.pass_rate??null}a(h,"evidenceOf");function $(e){let r=[],i=0;for(let t of e){if(t.status==="failed"){r.push(t.failure??{kind:"unknown",class:"infrastructure"});continue}h(t)==null&&(i+=1)}return{infrastructureFailed:r.length,ungradeable:i,summary:F(r)}}a($,"accountForFailures");function Q(e){let{pairs:r,minPairs:i,accounting:t}=e;return r>=i?{kind:"proceed"}:t.infrastructureFailed<=0?{kind:"proceed"}:{kind:"infrastructure-incomplete",reason:`${r}/${i} pair(s) \u2014 ${t.infrastructureFailed} run(s) never executed (${t.summary.describe()}). Retry when the environment recovers; this is not a statement about the target.`}}a(Q,"attributeShortfall");function k(e,r,i,t){let n=[];for(let l of e)n.push({eval_:l,configuration:_,targetContent:r,runNumber:t}),n.push({eval_:l,configuration:w,targetContent:i,runNumber:t});return n}a(k,"buildCandidateQueue");async function j(e){let{cases:r,candidateContent:i,priorVersionContent:t,concurrency:n,runNumber:l,opts:m,onLog:s=a(()=>{},"onLog")}=e,g=k(r,i,t,l),o=[],y=Math.max(1,n),p=null;for(let u=0;u<g.length;u+=y){let d=g.slice(u,u+y);o.push(...await Promise.all(d.map(c=>E(c,m,s))));let C=o.find(c=>c.failure&&x(c.failure.kind));if(C?.failure){p=C.failure.kind;let c=g.length-o.length;s(` \u26D4 aborting batch \u2014 ${p}: the account is out of quota. Skipped ${c} remaining run(s) that would certainly have failed.`);break}}for(let u of o)try{await R("/api/eval-runs",u)}catch(d){s(` \u26A0 failed to post a run result: ${d instanceof Error?d.message:String(d)}`)}let b=A(o),f=$(o),v=r.length-b.length;if(v>0){let u=f.infrastructureFailed?` \u2014 ${f.infrastructureFailed} run(s) never executed (${f.summary.describe()})`:"";s(` \u26A0 ${v}/${r.length} case(s) produced no usable pair (failed or ungradeable arm)${u}`)}return{completed:o.filter(u=>u.status==="completed").length,failed:o.filter(u=>u.status==="failed").length,results:o,pairs:b,accounting:f,abortedForQuota:p}}a(j,"runCandidateBatchAndPost");export{_ as a,w as b,S as c,I as d,A as e,$ as f,Q as g,k as h,j as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as q,d as K}from"../chunk-TYFEWLYZ.js";import{b as L,c as W}from"../chunk-V5U3E4BZ.js";import{a as J}from"../chunk-2TJ7Q2OU.js";import{e as O,f as _,g as M}from"../chunk-QWCEZEDO.js";import"../chunk-KKDHD4XA.js";import"../chunk-SZ62CP55.js";import{d as oe,e as ne}from"../chunk-3NWJ7CZ2.js";import"../chunk-M7QSC64D.js";import"../chunk-6TGFU6RU.js";import{i as z,j as Q,k as Z,m as ee,n as te}from"../chunk-LB24UKHZ.js";import"../chunk-G7V4ZZZ3.js";import"../chunk-O4K4M5G6.js";import"../chunk-AHLVY52I.js";import"../chunk-RSVNQ2XI.js";import"../chunk-ZK3ACE4T.js";import"../chunk-7BCZDVIU.js";import"../chunk-PPAHIVG5.js";import"../chunk-CT7FWSIU.js";import"../chunk-5MXZJWQS.js";import"../chunk-N7ODX6PO.js";import{a as V}from"../chunk-OZQNSELV.js";import"../chunk-HFGO5762.js";import"../chunk-VS5ROGDP.js";import"../chunk-T47SFA5X.js";import"../chunk-SWSOEYC7.js";import"../chunk-U2NT5OSQ.js";import"../chunk-KGURGIZ2.js";import"../chunk-GYNZ3OZF.js";import"../chunk-UPFH72PF.js";import"../chunk-DVU5PHPM.js";import"../chunk-CDY7TQFZ.js";import"../chunk-VBXL7XO7.js";import"../chunk-FBSZ6KCM.js";import"../chunk-JP6ULOEX.js";import"../chunk-SG4UDDHB.js";import{d as F}from"../chunk-GPBN4ROE.js";import"../chunk-6XTLP2G7.js";import"../chunk-PJ3WHQ67.js";import{a as X,b as D,c as Y,g as j,h as G}from"../chunk-QI3FJKGK.js";import{a as B}from"../chunk-WUCACPGC.js";import"../chunk-IZTIYR5Q.js";import"../chunk-WL5ZWQAS.js";import"../chunk-KEVDLLHT.js";import"../chunk-DX6IPDED.js";import"../chunk-3AV3GTMP.js";import{a as U,e as y}from"../chunk-GIXHG5FK.js";import"../chunk-X6CF5KTW.js";import"../chunk-XQYAVSUQ.js";import{a as N,g as v,l as x}from"../chunk-PZNWH4VQ.js";import{a as S}from"../chunk-ZLLER3HP.js";import{spawnSync as le}from"node:child_process";import{existsSync as ce,readFileSync as ue}from"node:fs";import{join as se}from"node:path";var I=class h extends B{static{S(this,"Diagnostics")}static description='Diagnose capture / proxy / connectivity problems (e.g. a client-side "502 Bad Gateway")';static examples=["<%= config.bin %> diagnostics"];baseUrl(){return process.env.RULEMETRIC_API_URL??N().apiUrl??U}async checkDirect(){let r=process.env.HTTPS_PROXY,i=process.env.HTTP_PROXY;delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY;let s=new AbortController,l=setTimeout(()=>s.abort(),8e3);try{return(await globalThis.fetch(`${this.baseUrl()}/health`,{signal:s.signal})).ok}catch{return!1}finally{clearTimeout(l),r!==void 0&&(process.env.HTTPS_PROXY=r),i!==void 0&&(process.env.HTTP_PROXY=i)}}configuredProxy(){if(process.env.HTTPS_PROXY)return process.env.HTTPS_PROXY;for(let r of["settings.local.json","settings.json"]){let i=se(process.cwd(),".claude",r);if(ce(i))try{let s=JSON.parse(ue(i,"utf8"));if(s.env?.HTTPS_PROXY)return s.env.HTTPS_PROXY}catch{}}return null}checkThroughProxy(r){let i=le("curl",["-sS","-x",r,"--max-time","8","-o","/dev/null","-w","%{http_code}",`${this.baseUrl()}/health`],{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return i.error||typeof i.stdout!="string"?null:i.stdout.trim()==="200"}async run(){await this.parse(h);let r=process.version,i=this.configuredProxy(),s=i!=null,[l,m,d]=await Promise.all([this.checkDirect(),M(O),M(_)]),p=s&&i?this.checkThroughProxy(i):null,t=S((e,c,T)=>{let u=c===null?"\u2013":c?"[OK]":"[!!]";this.log(` ${u} ${e.padEnd(22)} ${T}`)},"line");this.log("RuleMetric diagnostics"),this.log(""),t("Node",!L(r),`${r}${L(r)?" (< 20.11 \u2014 breaks the bundled proxy)":""}`),t("API (direct)",l,`${this.baseUrl()}/health ${l?"reachable":"UNREACHABLE"}`),t("Authenticated",v(),v()?"yes":"no \u2014 run `rulemetric auth login`"),t("Proxy configured",s?!0:null,s?i:"no HTTPS_PROXY set"),s&&(t("Gateway :"+O,m,m?"listening":"NOT listening"),t("mitmproxy :"+_,d,d?"listening":"not listening (gateway should route direct)"),t("API (via proxy)",p,p===null?"inconclusive (curl unavailable)":p?"reachable":"FAILED \u2014 502/blocked through your proxy"));let a=F();t("claude CLI",a.claudeBin!=null,a.claudeBin??"not found \u2014 LLM features (grading, distill) will no-op"),t("codex CLI",a.codexBin!=null?!0:null,a.codexBin?`${a.codexBin}${a.codexConfiguredModel?` (model ${a.codexConfiguredModel})`:""}`:"not found \u2014 optional; enables the cross-vendor reviewer (evals validate-judge)");let o=null;if(v()&&l)try{o=await y("/api/workers/health")}catch{o=null}if(o){let e=o.worker;t("Worker",!!e.active,e.present?e.active?`online (last heartbeat ${e.ageSeconds??"?"}s ago${e.clientVersion?`, v${e.clientVersion}`:""})`:`NOT RUNNING \u2014 last heartbeat ${A(e.ageSeconds)} ago`:"never connected \u2014 no worker has ever reported in");let c=o.worker.engines;if(c!=null){let u=[c.claude&&"claude",c.codex&&"codex"].filter(Boolean);t("LLM engine",u.length>0,u.length>0?`${u.join(" + ")} available to the worker`:"NONE \u2014 the worker found no `claude` and no `codex`. LLM jobs will complete with empty output rather than failing.")}let T=o.pending.reduce((u,E)=>u+E.count,0);if(T>0){let u=o.verdict.stuck.reduce(($,k)=>$+k.count,0),E=o.verdict.unclaimable.reduce(($,k)=>$+k.count,0),R=(o.verdict.engineBlocked??[]).reduce(($,k)=>$+k.count,0);t("Job queue",u===0&&R===0,`${T} pending`+(u>0?` \u2014 ${u} waiting on this worker`:"")+(R>0?` \u2014 ${R} need a local LLM engine`:"")+(E>0?` \u2014 ${E} need a worker with DATABASE_URL`:""))}else t("Job queue",!0,"empty")}else v()&&l&&t("Worker",null,"could not read /workers/health (older API?)");let n=o?.worker.machine;if(n){let e=n.suspends+n.stalls,c=n.lastPause;t("Worker pauses",e===0?!0:null,e===0?`none since ${n.since} \u2014 no sleep or stall seen by the worker`:`${n.suspends} suspend${n.suspends===1?"":"s"}`+(n.stalls>0?` + ${n.stalls} event-loop stall${n.stalls===1?"":"s"}`:"")+` since ${n.since}, ${A(Math.round(n.pausedMs/1e3))} paused total`+(c?`; last: ${c.kind} of ${A(Math.round(c.wallGapMs/1e3))} ending ${c.detectedAt}`:"")+" \u2014 jobs in flight during a suspend lose their lease and are redone on wake")}let f=await q();if(f){t("Machine sleep (pmset)",f.sleeps===0?!0:null,K(f));for(let e of f.recent.slice(-3)){let c=e.seconds!=null?` (${A(e.seconds)})`:"";this.log(` \u21B3 ${e.at.toISOString()} ${e.kind}${c}: ${e.reason.slice(0,80)}`)}}let C=V(process.cwd()),g=await D({configDir:x()}),re=await Y({configDir:x()}),w=` \u2014 ${G(re)}`,b=J(process.cwd()),H=[b.user&&`user hooks (${b.user})`,b.workspace&&`workspace hooks (${b.workspace})`].filter(Boolean),ie={claude_code:`session hooks (+ proxy for instruction linking)${w}`,codex:`worker transcript sync of ~/.codex/sessions \u2014 ${j(g)}`,cursor:`user hooks (~/.cursor/hooks.json)${w}`,copilot_agent:`workspace hooks${w}`,antigravity:H.length>0?`${H.join(" + ")}${w}`:"NOT CAPTURED \u2014 no rulemetric block in ~/.gemini/config/hooks.json or .agents/hooks.json; run `rulemetric hooks install` (user hooks are on by default)"};this.log(""),this.log(" Capture coverage (agents found on this machine):");for(let e of C)this.log(` \u2022 ${e.padEnd(15)} ${ie[e]??"captured"}`);if(C.includes("codex"))if(g.error)this.log(` ! ${g.error}`);else if(g.mode==="allowlist")for(let e of g.roots)this.log(` \u21B3 ${e}`);else g.mode==="all"&&this.log(` \u21B3 scope it with ${se(x(),X)} ({"codex":{"roots":["/path/to/repo"]}}) or RULEMETRIC_CODEX_CAPTURE=off`);o&&!o.worker.active&&C.includes("codex")&&g.mode!=="off"&&this.log(" ! Codex capture runs INSIDE the worker \u2014 it is stopped while the worker is down."),v()&&l&&await this.reportEvolutionSpend();let P=W({nodeVersion:r,directApiOk:l,httpsProxySet:s,gatewayAlive:m,mitmproxyAlive:d,proxyPathOk:p});this.log("");let ae=P.severity==="ok"?"[OK]":P.severity==="warn"?"[!!]":"[XX]";this.log(`${ae} ${P.headline}`);for(let e of P.hints)this.log(` \u2022 ${e}`);if(o&&o.verdict.severity!=="ok"){let e=o.verdict.severity==="warn"?"[!!]":"[XX]";this.log(""),this.log(`${e} ${o.verdict.headline}`);for(let c of o.verdict.hints)this.log(` \u2022 ${c}`)}}async reportEvolutionSpend(){let r;try{r=await y("/api/eval-targets?type=instruction&limit=200")}catch{return}let i=r.filter(s=>{let l=s.metadata??{};return l.autoEvolveEnabled===!0||l.autoEvolveEnabled==="true"});if(i.length!==0){this.log(""),this.log(" Nightly instruction evolution (cron_instruction_evolution, 07:30 UTC):");for(let s of i){let l=s.metadata??{},m=Q(l),d=z(l);if(m){this.log(` \u2022 ${s.name} \u2014 PAUSED (metadata.autoEvolvePaused). Opt-in preserved.`),this.log(" \u21B3 resume: set autoEvolvePaused=false");continue}let p=null;try{p=(await y(`/api/eval-targets/${s.id}/evals`)).filter(a=>!a.retiredAt).length}catch{}if(this.log(` \u2022 ${s.name}`),p!=null){let t=ne(p,d.minPairs,oe(d,p));if(!t.feasible)this.log(` \u21B3 cannot reach a verdict \u2014 ${t.reason}`);else{let a=Z({liveCases:p,passes:t.passes});this.log(` \u21B3 each night: ${te(a)}`)}}this.log(` \u21B3 pairs budget ${d.minPairs}`+(d.configured?" (metadata.autoEvolvePairs)":" (default)")+` \xB7 writes ${l.autoEvolveApply===!0||l.autoEvolveApply==="true"?"ENABLED":"off (dry run)"}`),d.note&&this.log(` ! ${d.note}`);try{let t=await y(`/api/eval-targets/${s.id}/promotions?limit=1`),a=t.promotions[0];if(a){let n=a.gates?.cost,f=n?.modelCalls?`${n.modelCalls} model calls, ${n.usablePairs??"?"} usable pair(s)`+(n.mde!=null?`, resolved +/-${ee(n.mde)}`:"")+(n.wallMs?`, ${(n.wallMs/6e4).toFixed(0)} min`:""):"cost not recorded (decision predates cost tracking)";this.log(` \u21B3 last run ${new Date(a.createdAt).toISOString().slice(0,10)}: ${a.decision}${a.applied?" (APPLIED)":""} \u2014 ${f}`)}let o=t.counts??{};this.log(` \u21B3 lifetime: ${o.promote??0} promote / ${o.revert??0} revert / ${o.refuse??0} refuse`)}catch{}}this.log(" \u21B3 pause the spend: metadata.autoEvolvePaused=true (keeps the opt-in)")}}};function A(h){if(h===null)return"never";if(h<90)return`${Math.round(h)}s`;let r=Math.round(h/60);return r<90?`${r}m`:`${Math.round(r/60)}h`}S(A,"formatAge");export{I as default};
|
|
1
|
+
import{c as q,d as K}from"../chunk-TYFEWLYZ.js";import{b as L,c as W}from"../chunk-V5U3E4BZ.js";import{a as J}from"../chunk-2TJ7Q2OU.js";import{e as O,f as _,g as M}from"../chunk-QWCEZEDO.js";import"../chunk-KKDHD4XA.js";import"../chunk-SZ62CP55.js";import{d as oe,e as ne}from"../chunk-DYET4EYU.js";import"../chunk-M7QSC64D.js";import"../chunk-7LFCZI64.js";import"../chunk-CMDOLJ23.js";import{i as z,j as Q,k as Z,m as ee,n as te}from"../chunk-TWPD3ICV.js";import"../chunk-G7V4ZZZ3.js";import"../chunk-LJE5J3EW.js";import"../chunk-AHLVY52I.js";import"../chunk-YXMAGC53.js";import"../chunk-T7HZZ4DJ.js";import"../chunk-XCH4HPEZ.js";import"../chunk-PPAHIVG5.js";import"../chunk-CT7FWSIU.js";import"../chunk-5MXZJWQS.js";import"../chunk-N7ODX6PO.js";import{a as V}from"../chunk-OZQNSELV.js";import"../chunk-HFGO5762.js";import"../chunk-VS5ROGDP.js";import"../chunk-FADINV4H.js";import"../chunk-SWSOEYC7.js";import"../chunk-U2NT5OSQ.js";import"../chunk-KGURGIZ2.js";import"../chunk-GYNZ3OZF.js";import"../chunk-UPFH72PF.js";import"../chunk-FG343JM3.js";import"../chunk-CDY7TQFZ.js";import"../chunk-HT6R6KR3.js";import"../chunk-4GOXEEXZ.js";import"../chunk-JP6ULOEX.js";import"../chunk-JNLDISBA.js";import{d as F}from"../chunk-GPBN4ROE.js";import"../chunk-6XTLP2G7.js";import"../chunk-PJ3WHQ67.js";import{a as X,b as D,c as Y,g as j,h as G}from"../chunk-QI3FJKGK.js";import{a as B}from"../chunk-WUCACPGC.js";import"../chunk-IZTIYR5Q.js";import"../chunk-WL5ZWQAS.js";import"../chunk-KEVDLLHT.js";import"../chunk-DX6IPDED.js";import"../chunk-3AV3GTMP.js";import{a as U,e as y}from"../chunk-GIXHG5FK.js";import"../chunk-X6CF5KTW.js";import"../chunk-XQYAVSUQ.js";import{a as N,g as v,l as x}from"../chunk-PZNWH4VQ.js";import{a as S}from"../chunk-ZLLER3HP.js";import{spawnSync as le}from"node:child_process";import{existsSync as ce,readFileSync as ue}from"node:fs";import{join as se}from"node:path";var I=class h extends B{static{S(this,"Diagnostics")}static description='Diagnose capture / proxy / connectivity problems (e.g. a client-side "502 Bad Gateway")';static examples=["<%= config.bin %> diagnostics"];baseUrl(){return process.env.RULEMETRIC_API_URL??N().apiUrl??U}async checkDirect(){let r=process.env.HTTPS_PROXY,i=process.env.HTTP_PROXY;delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY;let s=new AbortController,l=setTimeout(()=>s.abort(),8e3);try{return(await globalThis.fetch(`${this.baseUrl()}/health`,{signal:s.signal})).ok}catch{return!1}finally{clearTimeout(l),r!==void 0&&(process.env.HTTPS_PROXY=r),i!==void 0&&(process.env.HTTP_PROXY=i)}}configuredProxy(){if(process.env.HTTPS_PROXY)return process.env.HTTPS_PROXY;for(let r of["settings.local.json","settings.json"]){let i=se(process.cwd(),".claude",r);if(ce(i))try{let s=JSON.parse(ue(i,"utf8"));if(s.env?.HTTPS_PROXY)return s.env.HTTPS_PROXY}catch{}}return null}checkThroughProxy(r){let i=le("curl",["-sS","-x",r,"--max-time","8","-o","/dev/null","-w","%{http_code}",`${this.baseUrl()}/health`],{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return i.error||typeof i.stdout!="string"?null:i.stdout.trim()==="200"}async run(){await this.parse(h);let r=process.version,i=this.configuredProxy(),s=i!=null,[l,m,d]=await Promise.all([this.checkDirect(),M(O),M(_)]),p=s&&i?this.checkThroughProxy(i):null,t=S((e,c,T)=>{let u=c===null?"\u2013":c?"[OK]":"[!!]";this.log(` ${u} ${e.padEnd(22)} ${T}`)},"line");this.log("RuleMetric diagnostics"),this.log(""),t("Node",!L(r),`${r}${L(r)?" (< 20.11 \u2014 breaks the bundled proxy)":""}`),t("API (direct)",l,`${this.baseUrl()}/health ${l?"reachable":"UNREACHABLE"}`),t("Authenticated",v(),v()?"yes":"no \u2014 run `rulemetric auth login`"),t("Proxy configured",s?!0:null,s?i:"no HTTPS_PROXY set"),s&&(t("Gateway :"+O,m,m?"listening":"NOT listening"),t("mitmproxy :"+_,d,d?"listening":"not listening (gateway should route direct)"),t("API (via proxy)",p,p===null?"inconclusive (curl unavailable)":p?"reachable":"FAILED \u2014 502/blocked through your proxy"));let a=F();t("claude CLI",a.claudeBin!=null,a.claudeBin??"not found \u2014 LLM features (grading, distill) will no-op"),t("codex CLI",a.codexBin!=null?!0:null,a.codexBin?`${a.codexBin}${a.codexConfiguredModel?` (model ${a.codexConfiguredModel})`:""}`:"not found \u2014 optional; enables the cross-vendor reviewer (evals validate-judge)");let o=null;if(v()&&l)try{o=await y("/api/workers/health")}catch{o=null}if(o){let e=o.worker;t("Worker",!!e.active,e.present?e.active?`online (last heartbeat ${e.ageSeconds??"?"}s ago${e.clientVersion?`, v${e.clientVersion}`:""})`:`NOT RUNNING \u2014 last heartbeat ${A(e.ageSeconds)} ago`:"never connected \u2014 no worker has ever reported in");let c=o.worker.engines;if(c!=null){let u=[c.claude&&"claude",c.codex&&"codex"].filter(Boolean);t("LLM engine",u.length>0,u.length>0?`${u.join(" + ")} available to the worker`:"NONE \u2014 the worker found no `claude` and no `codex`. LLM jobs will complete with empty output rather than failing.")}let T=o.pending.reduce((u,E)=>u+E.count,0);if(T>0){let u=o.verdict.stuck.reduce(($,k)=>$+k.count,0),E=o.verdict.unclaimable.reduce(($,k)=>$+k.count,0),R=(o.verdict.engineBlocked??[]).reduce(($,k)=>$+k.count,0);t("Job queue",u===0&&R===0,`${T} pending`+(u>0?` \u2014 ${u} waiting on this worker`:"")+(R>0?` \u2014 ${R} need a local LLM engine`:"")+(E>0?` \u2014 ${E} need a worker with DATABASE_URL`:""))}else t("Job queue",!0,"empty")}else v()&&l&&t("Worker",null,"could not read /workers/health (older API?)");let n=o?.worker.machine;if(n){let e=n.suspends+n.stalls,c=n.lastPause;t("Worker pauses",e===0?!0:null,e===0?`none since ${n.since} \u2014 no sleep or stall seen by the worker`:`${n.suspends} suspend${n.suspends===1?"":"s"}`+(n.stalls>0?` + ${n.stalls} event-loop stall${n.stalls===1?"":"s"}`:"")+` since ${n.since}, ${A(Math.round(n.pausedMs/1e3))} paused total`+(c?`; last: ${c.kind} of ${A(Math.round(c.wallGapMs/1e3))} ending ${c.detectedAt}`:"")+" \u2014 jobs in flight during a suspend lose their lease and are redone on wake")}let f=await q();if(f){t("Machine sleep (pmset)",f.sleeps===0?!0:null,K(f));for(let e of f.recent.slice(-3)){let c=e.seconds!=null?` (${A(e.seconds)})`:"";this.log(` \u21B3 ${e.at.toISOString()} ${e.kind}${c}: ${e.reason.slice(0,80)}`)}}let C=V(process.cwd()),g=await D({configDir:x()}),re=await Y({configDir:x()}),w=` \u2014 ${G(re)}`,b=J(process.cwd()),H=[b.user&&`user hooks (${b.user})`,b.workspace&&`workspace hooks (${b.workspace})`].filter(Boolean),ie={claude_code:`session hooks (+ proxy for instruction linking)${w}`,codex:`worker transcript sync of ~/.codex/sessions \u2014 ${j(g)}`,cursor:`user hooks (~/.cursor/hooks.json)${w}`,copilot_agent:`workspace hooks${w}`,antigravity:H.length>0?`${H.join(" + ")}${w}`:"NOT CAPTURED \u2014 no rulemetric block in ~/.gemini/config/hooks.json or .agents/hooks.json; run `rulemetric hooks install` (user hooks are on by default)"};this.log(""),this.log(" Capture coverage (agents found on this machine):");for(let e of C)this.log(` \u2022 ${e.padEnd(15)} ${ie[e]??"captured"}`);if(C.includes("codex"))if(g.error)this.log(` ! ${g.error}`);else if(g.mode==="allowlist")for(let e of g.roots)this.log(` \u21B3 ${e}`);else g.mode==="all"&&this.log(` \u21B3 scope it with ${se(x(),X)} ({"codex":{"roots":["/path/to/repo"]}}) or RULEMETRIC_CODEX_CAPTURE=off`);o&&!o.worker.active&&C.includes("codex")&&g.mode!=="off"&&this.log(" ! Codex capture runs INSIDE the worker \u2014 it is stopped while the worker is down."),v()&&l&&await this.reportEvolutionSpend();let P=W({nodeVersion:r,directApiOk:l,httpsProxySet:s,gatewayAlive:m,mitmproxyAlive:d,proxyPathOk:p});this.log("");let ae=P.severity==="ok"?"[OK]":P.severity==="warn"?"[!!]":"[XX]";this.log(`${ae} ${P.headline}`);for(let e of P.hints)this.log(` \u2022 ${e}`);if(o&&o.verdict.severity!=="ok"){let e=o.verdict.severity==="warn"?"[!!]":"[XX]";this.log(""),this.log(`${e} ${o.verdict.headline}`);for(let c of o.verdict.hints)this.log(` \u2022 ${c}`)}}async reportEvolutionSpend(){let r;try{r=await y("/api/eval-targets?type=instruction&limit=200")}catch{return}let i=r.filter(s=>{let l=s.metadata??{};return l.autoEvolveEnabled===!0||l.autoEvolveEnabled==="true"});if(i.length!==0){this.log(""),this.log(" Nightly instruction evolution (cron_instruction_evolution, 07:30 UTC):");for(let s of i){let l=s.metadata??{},m=Q(l),d=z(l);if(m){this.log(` \u2022 ${s.name} \u2014 PAUSED (metadata.autoEvolvePaused). Opt-in preserved.`),this.log(" \u21B3 resume: set autoEvolvePaused=false");continue}let p=null;try{p=(await y(`/api/eval-targets/${s.id}/evals`)).filter(a=>!a.retiredAt).length}catch{}if(this.log(` \u2022 ${s.name}`),p!=null){let t=ne(p,d.minPairs,oe(d,p));if(!t.feasible)this.log(` \u21B3 cannot reach a verdict \u2014 ${t.reason}`);else{let a=Z({liveCases:p,passes:t.passes});this.log(` \u21B3 each night: ${te(a)}`)}}this.log(` \u21B3 pairs budget ${d.minPairs}`+(d.configured?" (metadata.autoEvolvePairs)":" (default)")+` \xB7 writes ${l.autoEvolveApply===!0||l.autoEvolveApply==="true"?"ENABLED":"off (dry run)"}`),d.note&&this.log(` ! ${d.note}`);try{let t=await y(`/api/eval-targets/${s.id}/promotions?limit=1`),a=t.promotions[0];if(a){let n=a.gates?.cost,f=n?.modelCalls?`${n.modelCalls} model calls, ${n.usablePairs??"?"} usable pair(s)`+(n.mde!=null?`, resolved +/-${ee(n.mde)}`:"")+(n.wallMs?`, ${(n.wallMs/6e4).toFixed(0)} min`:""):"cost not recorded (decision predates cost tracking)";this.log(` \u21B3 last run ${new Date(a.createdAt).toISOString().slice(0,10)}: ${a.decision}${a.applied?" (APPLIED)":""} \u2014 ${f}`)}let o=t.counts??{};this.log(` \u21B3 lifetime: ${o.promote??0} promote / ${o.revert??0} revert / ${o.refuse??0} refuse`)}catch{}}this.log(" \u21B3 pause the spend: metadata.autoEvolvePaused=true (keeps the opt-in)")}}};function A(h){if(h===null)return"never";if(h<90)return`${Math.round(h)}s`;let r=Math.round(h/60);return r<90?`${r}m`:`${Math.round(r/60)}h`}S(A,"formatAge");export{I as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as G,b as V,c as j,d as q}from"../../chunk-J4W6GNCF.js";import{b as M}from"../../chunk-GH4EZK2O.js";import{c as g}from"../../chunk-
|
|
1
|
+
import{a as G,b as V,c as j,d as q}from"../../chunk-J4W6GNCF.js";import{b as M}from"../../chunk-GH4EZK2O.js";import{c as g}from"../../chunk-V576KKH6.js";import{e as D}from"../../chunk-N2PP2A7M.js";import"../../chunk-XXPWPKTD.js";import"../../chunk-5TM7AOH2.js";import"../../chunk-IEQDLURA.js";import"../../chunk-KINIFUZQ.js";import"../../chunk-5PMTNNA6.js";import"../../chunk-ZYGBABMZ.js";import"../../chunk-IFIWDL7G.js";import"../../chunk-FZMO7XSN.js";import"../../chunk-LLXC5SRC.js";import"../../chunk-4DA6L7KL.js";import"../../chunk-JU5ZNXPK.js";import"../../chunk-WQFR2LOY.js";import"../../chunk-Q7IDLOSP.js";import"../../chunk-XIOYV5A7.js";import"../../chunk-ISFPPDDB.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-JSGXFD42.js";import"../../chunk-CZBO3A6B.js";import"../../chunk-JUBXWTJA.js";import"../../chunk-W6MMJRFZ.js";import"../../chunk-PZS55PW2.js";import"../../chunk-QPAOX7P2.js";import"../../chunk-3ZHVP3KE.js";import"../../chunk-CIKQXFQ2.js";import"../../chunk-HOQPVOMF.js";import"../../chunk-5Z6XXOJL.js";import"../../chunk-MOJY6S5J.js";import"../../chunk-CYCH2EQC.js";import"../../chunk-CVPAKEEZ.js";import"../../chunk-VUNJGZPP.js";import"../../chunk-L562Y4RN.js";import"../../chunk-GLBWNB2N.js";import"../../chunk-CQD2R3BA.js";import"../../chunk-3UKZJAFS.js";import"../../chunk-77FH6UZP.js";import"../../chunk-KE5K3F7J.js";import"../../chunk-PIVEJTNF.js";import"../../chunk-KR36ZDGN.js";import"../../chunk-JOXTWLLK.js";import"../../chunk-GIRPEMTW.js";import"../../chunk-SIGZEQ3K.js";import"../../chunk-DQYYHX6K.js";import"../../chunk-RE7RAZQ5.js";import"../../chunk-6T6YFPBW.js";import"../../chunk-ISYU5BMU.js";import"../../chunk-DANMUHNW.js";import"../../chunk-T75KAEJO.js";import"../../chunk-FXQS7AEZ.js";import"../../chunk-LJRE3LZ2.js";import"../../chunk-EJY5GK6A.js";import"../../chunk-74KE4VOX.js";import"../../chunk-HXOQUYG3.js";import"../../chunk-3H44B6PB.js";import"../../chunk-6UEFCMR2.js";import"../../chunk-MODXEGCU.js";import"../../chunk-MHVHGKDK.js";import"../../chunk-RBSEE2Z6.js";import"../../chunk-PDXHRF4E.js";import"../../chunk-DYET4EYU.js";import"../../chunk-M7QSC64D.js";import"../../chunk-7LFCZI64.js";import"../../chunk-CMDOLJ23.js";import"../../chunk-TWPD3ICV.js";import"../../chunk-G7V4ZZZ3.js";import"../../chunk-LJE5J3EW.js";import"../../chunk-AHLVY52I.js";import"../../chunk-YXMAGC53.js";import"../../chunk-T7HZZ4DJ.js";import"../../chunk-XCH4HPEZ.js";import"../../chunk-PPAHIVG5.js";import"../../chunk-CT7FWSIU.js";import"../../chunk-5MXZJWQS.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-OZQNSELV.js";import"../../chunk-HFGO5762.js";import"../../chunk-VS5ROGDP.js";import"../../chunk-FADINV4H.js";import"../../chunk-SWSOEYC7.js";import"../../chunk-U2NT5OSQ.js";import"../../chunk-KGURGIZ2.js";import"../../chunk-GYNZ3OZF.js";import"../../chunk-UPFH72PF.js";import"../../chunk-FG343JM3.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-HT6R6KR3.js";import"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{b as A,d as C,g as S,i as E,j as L,k as $}from"../../chunk-QI3FJKGK.js";import{a as O}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{f as m}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import{e as I,l as p}from"../../chunk-PZNWH4VQ.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{trace as de,context as me}from"@opentelemetry/api";import{NodeSDK as W}from"@opentelemetry/sdk-node";import{OTLPTraceExporter as Y}from"@opentelemetry/exporter-trace-otlp-http";import{BatchSpanProcessor as J,ConsoleSpanExporter as z,SimpleSpanProcessor as Q}from"@opentelemetry/sdk-trace-node";import{Resource as Z}from"@opentelemetry/resources";import{ATTR_SERVICE_NAME as ee,ATTR_SERVICE_VERSION as te}from"@opentelemetry/semantic-conventions";function F(r){if(!r)return{};let n={};for(let o of r.split(",")){let s=o.indexOf("=");if(s===-1)continue;let i=o.slice(0,s).trim(),c=o.slice(s+1).trim();i&&(n[i]=c)}return n}e(F,"parseOtlpHeaders");var u=null;function T(){return process.env.TELEMETRY_ENABLED!=="false"}e(T,"isTelemetryEnabled");function x(r){if(!T()||u!==null)return"off";let n=new Z({[ee]:r.serviceName,[te]:r.serviceVersion??"0.1.0"}),o=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,s,i;if(o){let c=F(process.env.OTEL_EXPORTER_OTLP_HEADERS),l=new Y({url:`${o}/v1/traces`,headers:c});i=new J(l),s="otlp"}else if(process.env.OTEL_SPAN_EXPORT==="none")i=void 0,s="silent";else{let c=new z;i=new Q(c),s="console"}return u=new W({resource:n,spanProcessors:i?[i]:[]}),u.start(),s}e(x,"initTelemetry");async function h(){u&&(await u.shutdown(),u=null)}e(h,"shutdownTelemetry");import{SpanKind as Pe,SpanStatusCode as Re}from"@opentelemetry/api";import{trace as Ie,context as Oe}from"@opentelemetry/api";import*as f from"@sentry/node";var v=!1;function w(r){if(v)return!1;let n=process.env.SENTRY_DSN;return n?(f.init({dsn:n,serverName:r.serviceName,environment:process.env.NODE_ENV??"development",tracesSampleRate:0}),v=!0,!0):!1}e(w,"initSentry");async function y(r){v&&await f.flush(r)}e(y,"flushSentry");import{existsSync as ne,mkdirSync as oe,readFileSync as k,unlinkSync as X,writeFileSync as U}from"node:fs";import{dirname as se,join as R}from"node:path";import{execFileSync as ie}from"node:child_process";var a=R(p(),"evals-agent.lock");function ce(r){try{return process.kill(r,0),!0}catch(n){return n.code==="EPERM"}}e(ce,"pidAlive");function ae(r){if(!ce(r))return!1;try{let n=ie("ps",["-p",String(r),"-o","command="],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return/run\.js\s+evals\s+agent|evals\s+agent/.test(n)}catch{return!0}}e(ae,"isLiveAgent");function le(){try{oe(se(a),{recursive:!0})}catch{}for(let r=0;r<2;r++)try{return U(a,String(process.pid),{flag:"wx"}),{ok:!0}}catch(n){if(n.code!=="EEXIST")throw n;let o=0;try{o=Number(k(a,"utf-8").trim())}catch{}if(o&&o!==process.pid&&ae(o))return{ok:!1,holder:o};try{X(a)}catch{}}try{U(a,String(process.pid))}catch{}return{ok:!0}}e(le,"acquireAgentLock");function P(){try{ne(a)&&Number(k(a,"utf-8").trim())===process.pid&&X(a)}catch{}}e(P,"releaseAgentLock");var N=class r extends O{static{e(this,"EvalAgentCommand")}static description="The worker daemon: long-polls /api/work/next, claims jobs, and runs them locally. Installed as a launchd service by `rulemetric service install`.";static examples=["<%= config.bin %> evals agent"];async run(){await this.parse(r),this.requireAuth();let n=le();if(!n.ok){this.log(`Another rulemetric evals agent is already running (pid ${n.holder}). Refusing to start a second instance.`);return}process.env.PG_APPLICATION_NAME||="rulemetric-agent",w({serviceName:"rulemetric-agent"})&&this.log("[sentry] error capture enabled");let s=x({serviceName:"rulemetric-agent"});s==="otlp"?this.log(`[otel] traces exporting to ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}`):s==="console"?this.log("[otel] cron spans printing to stdout (set OTEL_EXPORTER_OTLP_ENDPOINT to ship to a backend)"):this.log("[otel] disabled (TELEMETRY_ENABLED=false)"),!I()&&!process.env.RULEMETRIC_API_KEY&&this.error("No auth token found. Run `rulemetric auth login` first."),this.log("Starting thin agent (Phase 4b parallel-run)..."),this.log(`Long-polling /api/work/next. Press Ctrl+C to stop.
|
|
2
2
|
`);let c=new AbortController,l=await A({configDir:p()});if(this.log(`[transcript-sync] Codex capture: ${S(l)}`),l.error)this.log(`[transcript-sync] WARNING: ${l.error}`);else if(l.mode==="allowlist")for(let t of l.roots)this.log(`[transcript-sync] \u2022 ${t}`);let d=await C({configDir:p()});if(this.log(`[transcript-sync] Pi capture: ${E(d)}`),d.error)this.log(`[transcript-sync] WARNING: ${d.error}`);else if(d.mode==="allowlist")for(let t of d.roots)this.log(`[transcript-sync] \u2022 ${t}`);let B=new M({postSnapshot:e((t,K)=>m(`/api/sessions/${t}/context-snapshots`,K),"postSnapshot"),linkInstructions:e(t=>m("/api/sessions/link-instructions",{sessionId:t}),"linkInstructions"),log:e(t=>this.log(`[transcript-sync] ${t}`),"log")}),H=new G({providers:[V(void 0,void 0,L({configDir:p(),onChange:e(t=>this.log(`[transcript-sync] Codex capture changed: ${S(t)}`),"onChange")})),j(void 0,void 0,$({configDir:p(),onChange:e(t=>this.log(`[transcript-sync] Pi capture changed: ${E(t)}`),"onChange")}))],statePath:R(p(),"transcript-sync-state.json"),importTranscript:e(t=>m("/api/sessions/import",t),"importTranscript"),emitInstructions:e(t=>B.emit(t),"emitInstructions"),log:e(t=>this.log(`[transcript-sync] ${t}`),"log")});q(H,{signal:c.signal,log:e(t=>this.log(`[transcript-sync] ${t}`),"log")});let _=e(async t=>{this.log(`
|
|
3
3
|
[${t}] shutting down agent...`),c.abort(),await Promise.allSettled([y(2e3),h(),g()]),P(),process.exit(0)},"shutdown");process.on("SIGINT",()=>{_("SIGINT")}),process.on("SIGTERM",()=>{_("SIGTERM")});let b=!1;try{await D({signal:c.signal,log:e(t=>this.log(t),"log"),version:this.config.version,readInstalledVersion:e(()=>{try{return JSON.parse(k(R(this.config.root,"package.json"),"utf-8")).version??null}catch{return null}},"readInstalledVersion"),onVersionDrift:e(()=>{b=!0},"onVersionDrift")}),b&&(this.log("[upgrade] Installed CLI version changed \u2014 restarting worker onto the new code."),await Promise.allSettled([y(2e3),h(),g()]),P(),process.exit(1))}finally{P(),await g()}}};export{N as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as k}from"../../chunk-RBSEE2Z6.js";import{e as $}from"../../chunk-
|
|
1
|
+
import{a as k}from"../../chunk-RBSEE2Z6.js";import{e as $}from"../../chunk-FADINV4H.js";import"../../chunk-SWSOEYC7.js";import"../../chunk-U2NT5OSQ.js";import"../../chunk-KGURGIZ2.js";import"../../chunk-GYNZ3OZF.js";import"../../chunk-UPFH72PF.js";import"../../chunk-FG343JM3.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as w}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as n}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as h}from"../../chunk-ZLLER3HP.js";import{Args as A,Flags as r}from"@oclif/core";var m=class y extends w{static{h(this,"EvalAutoRun")}static description="Run evals in a loop until the effect verdict is statistically powered (\xA76f auto-run-to-power)";static examples=["<%= config.bin %> evals auto-run <target-id> # preview (cost + plan)","<%= config.bin %> evals auto-run <target-id> --yes # run until powered / budget","<%= config.bin %> evals auto-run <target-id> --yes --max-runs 120 --batch-parallel 4"];static args={targetId:A.string({description:"Eval target ID",required:!0})};static flags={yes:r.boolean({char:"y",description:"Actually run. Without this, only previews the plan + cost."}),"max-runs":r.integer({description:"Hard ceiling on completed runs",default:200}),"batch-parallel":r.integer({description:"Concurrent executions within a batch",default:3}),timeout:r.integer({description:"Timeout per eval in ms",default:12e4}),model:r.string({description:"Model for eval execution"}),"grader-model":r.string({description:"Model for grading"}),"skip-baseline":r.boolean({description:"Skip without_target runs (no delta \u2014 not recommended)",default:!1})};async run(){let{args:C,flags:e}=await this.parse(y);this.requireAuth();let i=C.targetId,c=20,a=await n(`/api/eval-targets/${i}`),l=await n(`/api/eval-targets/${i}/evals`);l.length===0&&this.error(`No active cases on "${a.name}". Generate some (\`evals create\` / the web Generate button) or run \`evals refine-cases\` first.`);let b=l.length*(e["skip-baseline"]?1:2),f=Math.ceil(e["max-runs"]/b);if(this.log(`Auto-run "${a.name}" v${a.version} toward a powered \xB1${c}pp verdict.`),this.log(`Plan: up to ${e["max-runs"]} runs (${l.length} active case(s) \xD7 ${e["skip-baseline"]?1:2}/batch = ${b}/batch, \u2264${f} batches). Each run is a synthetic \`claude -p\` execution + grade.`),this.log('Note: this is a controlled synthetic A/B. For a DEPLOYED instruction with real usage, the Insights observational verdict is cheaper and uses real sessions \u2014 auto-run is for pre-deploy, catalog skills, or targets with no real "without" cohort.'),!e.yes){this.log(`
|
|
2
2
|
Preview only. Re-run with --yes to start.`);return}let t={runsCompleted:0,maxRuns:e["max-runs"],batchesRun:0,maxBatches:f},x={targetId:i,targetVersion:a.version,iteration:1,timeout:e.timeout,model:e.model,graderModel:e["grader-model"],skipGrading:!1,targetType:a.type,targetName:a.name};for(;;){let s;try{s=await n(`/api/eval-targets/${i}/judge-calibration`)}catch(o){this.log(`
|
|
3
3
|
\u25A0 stopping \u2014 could not read the power check: ${o instanceof Error?o.message:String(o)}`);break}let E={powered:s.powerCheck?.powered??!1,mde:s.powerCheck?.mde==null?1/0:s.powerCheck.mde},B=s.caseDiscrimination??{total:0,discriminating:0,nonDiscriminating:0,unpaired:0},p=k(E,B,t,{targetEffectPp:c});if(this.log(`
|
|
4
4
|
${p.action==="stop"?"\u25A0":"\u25B8"} ${p.reason}`),p.action==="stop")break;let v=await n(`/api/eval-targets/${i}/evals`);if(v.length===0){this.log("\u25A0 no active cases left \u2014 stopping.");break}let{completed:g,failed:D}=await $({cases:v,targetContent:a.content,concurrency:e["batch-parallel"],runNumber:t.batchesRun+1,opts:x,skipBaseline:e["skip-baseline"],onLog:h(o=>this.log(o),"onLog")});if(t.runsCompleted+=g,t.batchesRun+=1,this.log(`Batch ${t.batchesRun}: ${g} completed, ${D} failed \u2014 ${t.runsCompleted}/${t.maxRuns} runs, ${t.batchesRun}/${t.maxBatches} batches.`),g===0){this.log("\u25A0 batch produced 0 completed runs \u2014 the executor appears broken (check the model / `claude -p`). Aborting.");break}}let d=await n(`/api/eval-targets/${i}/judge-calibration`),u=d.powerCheck?.mde,R=u==null||!Number.isFinite(u)?"unknown":`\xB1${Math.round(u*100)}pp`;this.log(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as h,c as f}from"../../chunk-
|
|
1
|
+
import{b as h,c as f}from"../../chunk-QFTAU33Y.js";import"../../chunk-HT6R6KR3.js";import{a as m}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as c}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as u}from"../../chunk-ZLLER3HP.js";import{Args as p,Flags as v}from"@oclif/core";var d=class b extends m{static{u(this,"EvalBenchmarkCommand")}static description="Aggregate eval runs into a benchmark for a target";static examples=["<%= config.bin %> evals benchmark <target-id>","<%= config.bin %> evals benchmark <target-id> --iteration 2"];static args={targetId:p.string({description:"Eval target ID",required:!0})};static flags={iteration:v.integer({description:"Filter runs by iteration",default:1})};async run(){let{args:o,flags:l}=await this.parse(b);this.requireAuth();let g=await c(`/api/eval-targets/${o.targetId}`);this.log(`Aggregating benchmark for "${g.name}" v${g.version}, iteration ${l.iteration}`);let a=await h(o.targetId,l.iteration);a.totalRuns===0&&this.error("No completed runs found. Run evals first with `rulemetric evals run`."),this.log(`
|
|
2
2
|
Aggregated ${a.totalRuns} runs
|
|
3
3
|
`);for(let[e,n]of Object.entries(a.runSummary)){this.log(`${e}:`);for(let[r,i]of Object.entries(n)){let s=i;this.log(` ${r}: mean=${s.mean} stddev=${s.stddev} [${s.min}, ${s.max}]`)}}let t=a.verdict;if(t)if(this.log(`
|
|
4
4
|
Verdict (${t.mode}, baseline=${t.baseline}):`),!t.sufficient)this.log(` ${t.insufficientReason??"insufficient data"} \u2014 no effect claimed`);else{let e=t.delta>=0?"+":"";this.log(` pass-rate delta: ${e}${(t.delta*100).toFixed(0)}% (n=${t.nWith} paired)`),this.log(` 95% CI: ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%`),t.pValue!=null&&this.log(` McNemar p: ${t.pValue.toFixed(4)}`),this.log(` significant: ${t.significant?"YES":"no"}`)}if(a.notes.length>0){this.log(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as $,b as A}from"../../chunk-647M2I2Y.js";import{f as p}from"../../chunk-
|
|
1
|
+
import{a as $,b as A}from"../../chunk-647M2I2Y.js";import{f as p}from"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as f}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as l,f as w}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as h}from"../../chunk-ZLLER3HP.js";import{Args as B,Flags as b}from"@oclif/core";var c=class I extends f{static{h(this,"EvalCompareCommand")}static description="Blind A/B comparison between two eval target versions";static examples=["<%= config.bin %> evals compare <target-a> <target-b>"];static args={targetA:B.string({description:"First eval target ID",required:!0}),targetB:B.string({description:"Second eval target ID",required:!0})};static flags={model:b.string({description:"Model for execution and comparison"}),timeout:b.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:g,flags:o}=await this.parse(I);this.requireAuth();let[e,r]=await Promise.all([l(`/api/eval-targets/${g.targetA}`),l(`/api/eval-targets/${g.targetB}`)]),m=await l(`/api/eval-targets/${g.targetA}/evals`);m.length===0&&this.error("No evals found for target A. Create some first."),this.log(`Comparing "${e.name}" v${e.version} vs "${r.name}" v${r.version}`),this.log(`Running ${m.length} eval(s)...
|
|
2
2
|
`);let a=Math.random()>.5,E=a?r.content:e.content,T=a?e.content:r.content,C=a?r.name:e.name,x=a?e.name:r.name,v=[];for(let t of m){this.log(`[${t.name}] Running A...`);let s=await p({prompt:t.prompt,targetContent:E,timeout:o.timeout,model:o.model});this.log(`[${t.name}] Running B...`);let d=await p({prompt:t.prompt,targetContent:T,timeout:o.timeout,model:o.model});(s.error||d.error)&&this.error(`[${t.name}] execution failed (A: ${s.error??"ok"} | B: ${d.error??"ok"}) \u2014 aborting before the blind comparison`),v.push({evalName:t.name,outputA:s.output,outputB:d.output})}this.log(`
|
|
3
3
|
Running blind comparison...`);let N=v.map(t=>`
|
|
4
4
|
## Eval: ${t.evalName}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as P,b as S}from"../../chunk-
|
|
1
|
+
import{a as P,b as S}from"../../chunk-6QMIDH6X.js";import{f as b}from"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as N}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as y,f as q,g as w}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as E}from"../../chunk-ZLLER3HP.js";import{Args as Q,Flags as v}from"@oclif/core";var C=process.env.RULEMETRIC_WEB_URL??"https://rulemetric.com",_=30*6e4,R=class k extends N{static{E(this,"EvalOptimizeDescriptionCommand")}static description="Optimize eval target description for better triggering accuracy";static examples=["<%= config.bin %> evals optimize-description <target-id>","<%= config.bin %> evals optimize-description <target-id> --queries 10"];static args={targetId:Q.string({description:"Eval target ID",required:!0})};static flags={"max-iterations":v.integer({description:"Maximum optimization iterations",default:5}),model:v.string({description:"Model for trigger testing and improvement"}),queries:v.integer({description:"Number of trigger queries to generate",default:20}),"runs-per-query":v.integer({description:"Runs per query for reliability",default:3}),"poll-interval":v.integer({description:"Ms between approval polls",default:5e3}),timeout:v.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:i,flags:t}=await this.parse(k);this.requireAuth();let e=await y(`/api/eval-targets/${i.targetId}`);this.log(`Optimizing description for "${e.name}" v${e.version}`),this.log(`Current description: "${e.description}"`),this.log("Scores measure description-gated invocation choice (catalog decision protocol)."),this.log(""),this.log("Generating trigger queries...");let r=await this.generateTriggerQueries(e,t.queries,t),a=await q(`/api/eval-targets/${i.targetId}/trigger-evals`,{queries:r}),g=`${C}/eval-targets/${i.targetId}`;this.log(`
|
|
2
2
|
Generated ${r.length} trigger queries.`),this.log("Review and approve them at:"),this.log(` ${g}`),this.log(" (Triggers tab \u2192 click to review)"),this.log(`
|
|
3
3
|
Waiting for approval...`);let c=Date.now(),d=!1;for(;!d;){Date.now()-c>_&&this.error(`Timed out after ${_/6e4} minutes waiting for approval. Approve the trigger set at ${g} (Triggers tab) and re-run this command.`),await new Promise(h=>setTimeout(h,t["poll-interval"]));let p=(await y(`/api/eval-targets/${i.targetId}/trigger-evals?status=approved`)).find(h=>h.id===a.id);p&&(d=!0,r.length=0,r.push(...p.queries),this.log("Trigger queries approved!"))}let n=r.map((u,p)=>p).sort(()=>Math.random()-.5),s=Math.ceil(n.length*.6),o=n.slice(0,s),I=n.slice(s);await w(`/api/trigger-evals/${a.id}`,{trainIndices:o,testIndices:I});let x=o.map(u=>r[u]),D=I.map(u=>r[u]);this.log(`
|
|
4
4
|
Split: ${x.length} train, ${D.length} test`);let m=e.description,T=m,$=0;for(let u=1;u<=t["max-iterations"];u++){this.log(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as P,c as C}from"../../chunk-
|
|
1
|
+
import{b as P,c as C}from"../../chunk-AFEJYDUK.js";import{a as V}from"../../chunk-PDXHRF4E.js";import{a as N}from"../../chunk-FG343JM3.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-HT6R6KR3.js";import{f as F}from"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as A}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as w,f as m,g as S}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as k}from"../../chunk-ZLLER3HP.js";import{createInterface as _}from"node:readline/promises";import{Args as q,Flags as g}from"@oclif/core";var $=class O extends A{static{k(this,"EvalOptimizeCommand")}static description="Iteratively optimize eval target content using eval results as feedback";static examples=["<%= config.bin %> evals optimize <target-id>","<%= config.bin %> evals optimize <target-id> --auto --max-iterations 3"];static args={targetId:q.string({description:"Eval target ID",required:!0})};static flags={auto:g.boolean({description:"Skip interactive review, apply suggestions automatically",default:!1}),"max-iterations":g.integer({description:"Maximum optimization iterations",default:5}),threshold:g.string({description:"Stop if pass rate reaches this threshold (0-1)",default:"0.95"}),model:g.string({description:"Model for eval execution"}),"analyzer-model":g.string({description:"Model for analysis/suggestions"}),timeout:g.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:n,flags:e}=await this.parse(O);this.requireAuth();let t=await w(`/api/eval-targets/${n.targetId}`),i=await w(`/api/eval-targets/${n.targetId}/evals`);i.length===0&&this.error("No evals found. Create some first with `rulemetric evals create`.");let s=[...i].sort(()=>Math.random()-.5),c=Math.ceil(s.length*.6),u=s.slice(0,c),d=s.slice(c);this.log(`Optimizing "${t.name}" v${t.version}`),this.log(`Evals: ${u.length} train, ${d.length} test`);let h=parseFloat(e.threshold);this.log(`Config: max ${e["max-iterations"]} iterations, threshold ${(h*100).toFixed(0)}%`),e.auto&&this.log("Mode: auto (no interactive review)"),this.log("");let T=t.version,f=0,x=0;for(let l=1;l<=e["max-iterations"];l++){this.log(`
|
|
2
2
|
=== Iteration ${l} ===`),this.log("Running train evals...");let b=await this.runEvalsOnTarget(t,u,e),p=this.computePassRate(b);if(this.log(`Train pass rate: ${(p*100).toFixed(1)}%`),p>=h){this.log(`Train score ${(p*100).toFixed(1)}% >= threshold ${(h*100).toFixed(0)}%. Stopping.`);let o=await this.runEvalsOnTarget(t,d,e),z=this.computePassRate(o);this.log(`Final test score: ${(z*100).toFixed(1)}%`),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,testScore:z,analysis:{reason:"threshold_reached"},status:"completed"});break}this.log("Analyzing results...");let M=b.map(o=>({evalName:o.evalName,prompt:o.prompt,expectations:o.expectations,grading:o.grading})),a=await V({content:t.content,evalResults:M,model:e["analyzer-model"]??e.model,timeout:e.timeout});this.log(`
|
|
3
3
|
Assessment: ${a.overallAssessment}`),this.log(`Suggestions: ${a.suggestions.length}`);for(let o of a.suggestions)this.log(` - [${o.section}] ${o.reasoning}`);if(a.proposedContent===t.content){this.log("No changes proposed. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"no_changes"},status:"completed"});break}if(!e.auto&&!await this.confirm(`
|
|
4
4
|
Apply the proposed changes as a new version? [y/N] `)){this.log("Changes not applied. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"user_declined",suggestions:a.suggestions},status:"completed"});break}let r=await S(`/api/eval-targets/${t.id}`,{content:a.proposedContent});this.log(`Created v${r.version}`),this.log(`Running test evals on v${t.version} (baseline) and v${r.version}...`);let E=await this.runEvalsOnTarget(t,d,e),R=await this.runEvalsOnTarget(r,d,e),v=this.computePassRate(R),I=this.computePassRate(E);this.log(`Test pass rate: v${t.version} ${(I*100).toFixed(1)}% \u2192 v${r.version} ${(v*100).toFixed(1)}%`);let y=P(E,R);if(y&&this.log(C(y,t.version,r.version)),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,outputVersion:r.version,trainScore:p,testScore:v,analysis:{suggestions:a.suggestions,overallAssessment:a.overallAssessment,priorTestScore:I,verdict:y},status:"completed"}),v>f)f=v,T=r.version,x=0;else if(x++,x>=2){this.log("No improvement for 2 consecutive iterations. Stopping.");break}t=r}this.log(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as w,c as $}from"../../chunk-
|
|
1
|
+
import{b as w,c as $}from"../../chunk-EJY5GK6A.js";import"../../chunk-74KE4VOX.js";import{b as v}from"../../chunk-HXOQUYG3.js";import"../../chunk-DYET4EYU.js";import"../../chunk-M7QSC64D.js";import"../../chunk-7LFCZI64.js";import"../../chunk-CMDOLJ23.js";import"../../chunk-TWPD3ICV.js";import"../../chunk-G7V4ZZZ3.js";import"../../chunk-LJE5J3EW.js";import"../../chunk-AHLVY52I.js";import"../../chunk-YXMAGC53.js";import"../../chunk-T7HZZ4DJ.js";import"../../chunk-XCH4HPEZ.js";import"../../chunk-PPAHIVG5.js";import"../../chunk-CT7FWSIU.js";import"../../chunk-5MXZJWQS.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-FADINV4H.js";import"../../chunk-SWSOEYC7.js";import"../../chunk-U2NT5OSQ.js";import"../../chunk-KGURGIZ2.js";import"../../chunk-GYNZ3OZF.js";import"../../chunk-UPFH72PF.js";import"../../chunk-FG343JM3.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-HT6R6KR3.js";import"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as f}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as d,f as p,h}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a}from"../../chunk-ZLLER3HP.js";import{Args as P,Flags as y}from"@oclif/core";var c=a(s=>s==null?"n/a":`${Math.round(s*100)}%`,"pct"),g=class s extends f{static{a(this,"EvalRefineCases")}static description="Retire non-discriminating eval cases and regenerate discriminating replacements (\xA76e)";static examples=["<%= config.bin %> evals refine-cases <target-id> # preview","<%= config.bin %> evals refine-cases <target-id> --yes # apply: retire + regenerate","<%= config.bin %> evals refine-cases <target-id> --yes --no-generate"];static args={targetId:P.string({description:"Eval target ID",required:!0})};static flags={yes:y.boolean({char:"y",description:"Apply (retire + regenerate). Without this, only previews."}),"no-generate":y.boolean({description:"Retire dead cases but do not regenerate replacements."})};async run(){let{args:b,flags:l}=await this.parse(s);this.requireAuth();let n=b.targetId,o=await d(`/api/eval-targets/${n}`),m=await d(`/api/eval-targets/${n}/judge-calibration`),i=m.caseDiscrimination,t=w(i);if(this.log(`Target "${o.name}" v${o.version} \u2014 judge ${m.judge.currentModel??"(unstamped)"}`),t.refused==="no-discrimination-data"){this.log("No case-discrimination data yet \u2014 run some evals with AND without the target first (`evals run` / the web Run Evals button), then refine.");return}if(this.log(`${i.total} diagnosable case(s): ${i.discriminating} discriminate, ${i.nonDiscriminating} flat/wrong-sign, ${i.unpaired} unpaired.`),t.refused==="all-discriminating"){this.log("Every case discriminates \u2014 nothing to retire. \u{1F389}");return}let C=i.cases.filter(e=>!e.discriminating),u=new Set(t.retire.map(e=>e.evalId));this.log(`
|
|
2
2
|
Would retire ${t.retire.length} non-discriminating case(s):`);for(let e of C)u.has(e.evalId)&&this.log(` \u2717 ${e.name} \u2014 ${c(e.withPassRate)} with vs ${c(e.withoutPassRate)} without (\u0394${(e.separation*100).toFixed(0)}pp) \u2014 ${e.note}`);for(let e of i.unpairedCases)u.has(e.evalId)&&this.log(` \u2717 ${e.name} \u2014 ${c(e.withPassRate)} with vs ${c(e.withoutPassRate)} without \u2014 unpaired`);if(t.replacementsRequired&&this.log(`
|
|
3
3
|
${t.summary}. Replacements are generated and created BEFORE anything is retired \u2014 a target left under the floor drops out of the nightly evolution rotation with no error anywhere.`),!l.yes){this.log(`
|
|
4
4
|
Preview only. Re-run with --yes to retire ${t.retire.length} case(s)${l["no-generate"]?"":" and generate replacements"}.`);return}let r=await $(t,{generate:a(e=>l["no-generate"]?Promise.resolve([]):v({content:o.content,name:o.name,feedback:e}),"generate"),createCase:a(e=>p(`/api/eval-targets/${n}/evals`,{name:e.name,prompt:e.prompt,expectations:e.expectations}),"createCase"),retireCase:a(async(e,R)=>{await h(`/api/eval-targets/${n}/evals/${e}`,{retire:!0,retiredReason:R})},"retireCase"),log:a(e=>this.log(e),"log")});if(r.skipped==="no-llm-backend"){this.warn(r.summary+" Install the `claude` CLI (or set ANTHROPIC_API_KEY), then run `evals refine-cases` again.");return}if(r.skipped==="no-replacements-generated"){this.warn(r.summary);return}this.log(`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{d as k}from"../../chunk-
|
|
1
|
+
import{d as k}from"../../chunk-FADINV4H.js";import"../../chunk-SWSOEYC7.js";import"../../chunk-U2NT5OSQ.js";import"../../chunk-KGURGIZ2.js";import"../../chunk-GYNZ3OZF.js";import"../../chunk-UPFH72PF.js";import"../../chunk-FG343JM3.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-4GOXEEXZ.js";import"../../chunk-JP6ULOEX.js";import"../../chunk-JNLDISBA.js";import"../../chunk-GPBN4ROE.js";import"../../chunk-6XTLP2G7.js";import"../../chunk-PJ3WHQ67.js";import{a as $}from"../../chunk-WUCACPGC.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-WL5ZWQAS.js";import"../../chunk-KEVDLLHT.js";import"../../chunk-DX6IPDED.js";import"../../chunk-3AV3GTMP.js";import{e as v,f as h}from"../../chunk-GIXHG5FK.js";import"../../chunk-X6CF5KTW.js";import"../../chunk-XQYAVSUQ.js";import"../../chunk-PZNWH4VQ.js";import{a as R}from"../../chunk-ZLLER3HP.js";import{Args as I,Flags as g}from"@oclif/core";var b=class _ extends ${static{R(this,"EvalRunCommand")}static description="Run evals against a target, optionally grade results, and post to API";static examples=["<%= config.bin %> evals run <target-id>","<%= config.bin %> evals run <target-id> --parallel 3 --runs-per-eval 2","<%= config.bin %> evals run <target-id> --skip-baseline --skip-grading"];static args={targetId:I.string({description:"Eval target ID",required:!0})};static flags={parallel:g.integer({description:"Number of parallel eval executions",default:1}),"runs-per-eval":g.integer({description:"Number of runs per eval for variance analysis",default:1}),iteration:g.integer({description:"Iteration number for tracking",default:1}),"skip-baseline":g.boolean({description:"Skip baseline (without_target) runs",default:!1}),"skip-grading":g.boolean({description:"Skip LLM grading step",default:!1}),model:g.string({description:"Model for eval execution (default: user configured)"}),"grader-model":g.string({description:"Model for grading (default: same as execution model)"}),timeout:g.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:c,flags:r}=await this.parse(_);this.requireAuth();let i=await v(`/api/eval-targets/${c.targetId}`),l=await v(`/api/eval-targets/${c.targetId}/evals`);l.length===0&&this.error(`No evals found for target "${i.name}". Create some with \`rulemetric evals create\`.`),this.log(`Running ${l.length} eval(s) for "${i.name}" v${i.version}`),this.log(`Config: ${r["runs-per-eval"]} run(s) per eval, parallel=${r.parallel}, iteration=${r.iteration}`),r["skip-baseline"]&&this.log("Skipping baseline runs"),r["skip-grading"]&&this.log("Skipping grading"),this.log("");let m=[{name:"with_target",content:i.content}];r["skip-baseline"]||m.push({name:"without_target"});let p=[];for(let a of l)for(let n of m)for(let t=1;t<=r["runs-per-eval"];t++)p.push({eval_:a,configuration:n.name,targetContent:n.content,runNumber:t});let u=[],y=r.parallel;for(let a=0;a<p.length;a+=y){let n=p.slice(a,a+y),t=await Promise.all(n.map(d=>this.executeAndGrade(d,i,r)));u.push(...t)}this.log(""),this.log("Posting results to API...");for(let a of u)await h("/api/eval-runs",a);try{await h(`/api/eval-targets/${c.targetId}/label-state`,{})}catch{}this.log(""),this.log("=== Results Summary ===");for(let a of m){let n=u.filter(e=>e.configuration===a.name),t=n.filter(e=>e.status==="completed"),d=t.filter(e=>Object.keys(e.grading).length>0);if(this.log(`
|
|
2
2
|
${a.name}:`),this.log(` Runs: ${t.length}/${n.length} completed`),d.length>0){let e=d.map(o=>o.grading.summary?.pass_rate??0),s=e.reduce((o,f)=>o+f,0)/e.length;this.log(` Avg pass_rate: ${(s*100).toFixed(1)}%`)}for(let e of n){let s=l.find(x=>x.id===e.evalId)?.name??e.evalId,o=e.grading.summary?.pass_rate,f=o!==void 0?` pass_rate=${(o*100).toFixed(0)}%`:"",w=e.timing.duration_ms?` ${(e.timing.duration_ms/1e3).toFixed(1)}s`:"";this.log(` [${e.status}] ${s} run#${e.runNumber}${f}${w}`)}}if(!r["skip-baseline"]&&u.length>0){let a=u.filter(t=>t.configuration==="with_target"&&Object.keys(t.grading).length>0),n=u.filter(t=>t.configuration==="without_target"&&Object.keys(t.grading).length>0);if(a.length>0&&n.length>0){let t=a.map(s=>s.grading.summary?.pass_rate??0).reduce((s,o)=>s+o,0)/a.length,d=n.map(s=>s.grading.summary?.pass_rate??0).reduce((s,o)=>s+o,0)/n.length,e=t-d;this.log(`
|
|
3
3
|
Delta: ${e>0?"+":""}${(e*100).toFixed(1)}% (with_target vs without_target)`)}}}async executeAndGrade(c,r,i){return k(c,{targetId:r.id,targetVersion:r.version,iteration:i.iteration,timeout:i.timeout,model:i.model,graderModel:i["grader-model"],skipGrading:i["skip-grading"],targetType:r.type,targetName:r.name},l=>this.log(l))}};export{b as default};
|