@nilsr0711/drydock 0.1.7 → 0.1.9
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -4
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/adrs/page.js +2 -2
- package/.next/standalone/.next/server/app/adrs/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/adrs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/analytics/page.js +1 -1
- package/.next/standalone/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/control/shutdown/route.js +1 -1
- package/.next/standalone/.next/server/app/api/control/shutdown/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cost/export/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/health/route.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sse/dashboard/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sse/dashboard/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sse/jobs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/webhooks/[repoId]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/webhooks/[repoId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/costs/page.js +1 -1
- package/.next/standalone/.next/server/app/costs/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/costs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/jobs/[id]/page.js +3 -3
- package/.next/standalone/.next/server/app/jobs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/jobs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/jobs/page.js +2 -2
- package/.next/standalone/.next/server/app/jobs/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/jobs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/needs-human/page.js +2 -2
- package/.next/standalone/.next/server/app/needs-human/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/needs-human/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/prompts/page.js +2 -2
- package/.next/standalone/.next/server/app/prompts/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/prompts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/repos/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/repos/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/repos/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +4 -4
- package/.next/standalone/.next/server/chunks/152.js +3 -0
- package/.next/standalone/.next/server/chunks/304.js +1 -1
- package/.next/standalone/.next/server/chunks/387.js +34 -0
- package/.next/standalone/.next/server/chunks/40.js +1 -1
- package/.next/standalone/.next/server/chunks/403.js +1 -0
- package/.next/standalone/.next/server/chunks/475.js +19 -0
- package/.next/standalone/.next/server/chunks/50.js +1 -0
- package/.next/standalone/.next/server/chunks/521.js +1 -1
- package/.next/standalone/.next/server/chunks/578.js +1 -1
- package/.next/standalone/.next/server/chunks/614.js +2 -2
- package/.next/standalone/.next/server/chunks/668.js +1 -0
- package/.next/standalone/.next/server/chunks/786.js +1 -1
- package/.next/standalone/.next/server/chunks/83.js +1 -1
- package/.next/standalone/.next/server/chunks/908.js +1 -1
- package/.next/standalone/.next/server/chunks/944.js +1 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/3433-ece700d2e393c23b.js +1 -0
- package/.next/standalone/.next/static/chunks/3894-4f48e3cc5be58e10.js +1 -0
- package/.next/standalone/.next/static/chunks/5080-16cb43874ff5c536.js +1 -0
- package/.next/standalone/.next/static/chunks/6634-74f0b66587b57037.js +1 -0
- package/.next/standalone/.next/static/chunks/{1642-a1ea35450c1b5c95.js → 8264-c27834f1552f983a.js} +1 -1
- package/.next/standalone/.next/static/chunks/8382-5201fc3dd1f64e60.js +1 -0
- package/.next/{static/chunks/4624-5e23973d35b58ca5.js → standalone/.next/static/chunks/8745-8b3833b3d2afa30c.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/adrs/page-ca11e90e9404af90.js +1 -0
- package/.next/standalone/.next/static/chunks/app/costs/{page-24d086bf67620e30.js → page-5d66d93815eea63a.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/jobs/[id]/page-dfb41b4785fd7cbb.js +1 -0
- package/.next/standalone/.next/static/chunks/app/jobs/page-98215ec1497b829e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-134301ff0a9b828d.js +1 -0
- package/.next/standalone/.next/static/chunks/app/needs-human/page-569fc0e6aefc7677.js +1 -0
- package/.next/standalone/.next/static/chunks/app/page-504585be128c823c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/prompts/page-c6bf6a4c782035ac.js +1 -0
- package/.next/standalone/.next/static/chunks/app/repos/[id]/page-c0c4531c2af46526.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-84a44ab52a0ff49d.js +1 -0
- package/.next/standalone/.next/static/css/{bdce0893cf6b9cb9.css → 600a5b5311ad42be.css} +1 -1
- package/.next/standalone/drizzle/0034_human_instruction.sql +1 -0
- package/.next/standalone/drizzle/0035_agent_release.sql +4 -0
- package/.next/standalone/drizzle/0036_adopt_claude_mem.sql +1 -0
- package/.next/standalone/mcp-server.cjs +43157 -0
- package/.next/standalone/package.json +5 -3
- package/.next/static/chunks/3433-ece700d2e393c23b.js +1 -0
- package/.next/static/chunks/3894-4f48e3cc5be58e10.js +1 -0
- package/.next/static/chunks/5080-16cb43874ff5c536.js +1 -0
- package/.next/static/chunks/6634-74f0b66587b57037.js +1 -0
- package/.next/static/chunks/{1642-a1ea35450c1b5c95.js → 8264-c27834f1552f983a.js} +1 -1
- package/.next/static/chunks/8382-5201fc3dd1f64e60.js +1 -0
- package/.next/{standalone/.next/static/chunks/4624-5e23973d35b58ca5.js → static/chunks/8745-8b3833b3d2afa30c.js} +1 -1
- package/.next/static/chunks/app/adrs/page-ca11e90e9404af90.js +1 -0
- package/.next/static/chunks/app/costs/{page-24d086bf67620e30.js → page-5d66d93815eea63a.js} +1 -1
- package/.next/static/chunks/app/jobs/[id]/page-dfb41b4785fd7cbb.js +1 -0
- package/.next/static/chunks/app/jobs/page-98215ec1497b829e.js +1 -0
- package/.next/static/chunks/app/layout-134301ff0a9b828d.js +1 -0
- package/.next/static/chunks/app/needs-human/page-569fc0e6aefc7677.js +1 -0
- package/.next/static/chunks/app/page-504585be128c823c.js +1 -0
- package/.next/static/chunks/app/prompts/page-c6bf6a4c782035ac.js +1 -0
- package/.next/static/chunks/app/repos/[id]/page-c0c4531c2af46526.js +1 -0
- package/.next/static/chunks/app/settings/page-84a44ab52a0ff49d.js +1 -0
- package/.next/static/css/{bdce0893cf6b9cb9.css → 600a5b5311ad42be.css} +1 -1
- package/README.md +66 -21
- package/bin/drydock.mjs +77 -2
- package/drizzle/0034_human_instruction.sql +1 -0
- package/drizzle/0035_agent_release.sql +4 -0
- package/drizzle/0036_adopt_claude_mem.sql +1 -0
- package/package.json +5 -3
- package/.next/standalone/.next/server/chunks/382.js +0 -31
- package/.next/standalone/.next/server/chunks/468.js +0 -1
- package/.next/standalone/.next/server/chunks/822.js +0 -1
- package/.next/standalone/.next/server/chunks/99.js +0 -18
- package/.next/standalone/.next/static/chunks/1298-7ac9c00c70b27598.js +0 -1
- package/.next/standalone/.next/static/chunks/3433-719d6f55f39342d8.js +0 -1
- package/.next/standalone/.next/static/chunks/3894-c7b01dcfcf83d89b.js +0 -1
- package/.next/standalone/.next/static/chunks/7690-6dcfd9ae4cbf4e7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/adrs/page-1dfee698ea4c111f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/jobs/[id]/page-8a9e4ed64c3303fe.js +0 -1
- package/.next/standalone/.next/static/chunks/app/jobs/page-4180ccc9acd3ddba.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-189fa697d72d1fdf.js +0 -1
- package/.next/standalone/.next/static/chunks/app/needs-human/page-e458ffa78c06a6fa.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-add53cbf6d87a3f5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/prompts/page-ff6cc30777232933.js +0 -1
- package/.next/standalone/.next/static/chunks/app/repos/[id]/page-cd11007841a5d73f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/page-280668b9c92e9b48.js +0 -1
- package/.next/static/chunks/1298-7ac9c00c70b27598.js +0 -1
- package/.next/static/chunks/3433-719d6f55f39342d8.js +0 -1
- package/.next/static/chunks/3894-c7b01dcfcf83d89b.js +0 -1
- package/.next/static/chunks/7690-6dcfd9ae4cbf4e7d.js +0 -1
- package/.next/static/chunks/app/adrs/page-1dfee698ea4c111f.js +0 -1
- package/.next/static/chunks/app/jobs/[id]/page-8a9e4ed64c3303fe.js +0 -1
- package/.next/static/chunks/app/jobs/page-4180ccc9acd3ddba.js +0 -1
- package/.next/static/chunks/app/layout-189fa697d72d1fdf.js +0 -1
- package/.next/static/chunks/app/needs-human/page-e458ffa78c06a6fa.js +0 -1
- package/.next/static/chunks/app/page-add53cbf6d87a3f5.js +0 -1
- package/.next/static/chunks/app/prompts/page-ff6cc30777232933.js +0 -1
- package/.next/static/chunks/app/repos/[id]/page-cd11007841a5d73f.js +0 -1
- package/.next/static/chunks/app/settings/page-280668b9c92e9b48.js +0 -1
- /package/.next/standalone/.next/static/{-sJQutzNDvUvcdmf3YlJA → gBXyOslZ8CoJrAVnOEHDm}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{-sJQutzNDvUvcdmf3YlJA → gBXyOslZ8CoJrAVnOEHDm}/_ssgManifest.js +0 -0
- /package/.next/static/{-sJQutzNDvUvcdmf3YlJA → gBXyOslZ8CoJrAVnOEHDm}/_buildManifest.js +0 -0
- /package/.next/static/{-sJQutzNDvUvcdmf3YlJA → gBXyOslZ8CoJrAVnOEHDm}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=521,exports.ids=[521],exports.modules={2025:(a,b,c)=>{"use strict";let d,e;c.d(b,{Lf:()=>n});var f=c(73024),g=c(76760),h=c(87550),i=c.n(h),j=c(15640),k=c(75818),l=c(64537);let m=/^PRAGMA\s+foreign_keys\s*=/i;function n(){if(e)throw e;if(!d){let a=process.env.DRYDOCK_DB??(0,g.resolve)(process.cwd(),"data/drydock.db");try{d=function(a){":memory:"!==a&&(0,f.mkdirSync)((0,g.dirname)(a),{recursive:!0});let b=new(i())(a);try{return b.pragma("journal_mode = WAL"),b.pragma("foreign_keys = ON"),!function(a){let b,c=process.env.DRYDOCK_MIGRATIONS??(0,g.resolve)(process.cwd(),"drizzle");try{b=(0,f.readdirSync)(c).filter(a=>a.endsWith(".sql")).sort()}catch{return}a.exec("CREATE TABLE IF NOT EXISTS __migrations (name TEXT PRIMARY KEY)");let d=new Set(a.prepare("SELECT name FROM __migrations").all().map(a=>a.name)),e=a.prepare("INSERT INTO __migrations (name) VALUES (?)");for(let h of b){if(d.has(h))continue;let b=(0,f.readFileSync)((0,g.join)(c,h),"utf8");a.pragma("foreign_keys = OFF");try{a.transaction(()=>{for(let c of b.split("--\x3e statement-breakpoint")){let b=c.trim();!b||m.test(b)||a.exec(b)}let c=a.pragma("foreign_key_check");if(c.length>0)throw Error(`migration ${h} would leave ${c.length} foreign key violation(s); rolled back`);e.run(h)})()}finally{a.pragma("foreign_keys = ON")}}}(b),(0,j.f)(b,{schema:l})}catch(a){throw b.close(),a}}(a)}catch(a){throw e=a instanceof Error?a:Error(String(a))}Promise.all([c.e(980),c.e(304),c.e(83),c.e(99)]).then(c.bind(c,96356)).then(a=>a.startOrchestrator()).catch(a=>(0,k.v)("[orchestrator] bootstrap failed",a))}return d}},14543:(a,b,c)=>{"use strict";c.d(b,{f:()=>f});let d="[REDACTED]",e=[/\bgh[pousr]_[A-Za-z0-9]{36,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{50,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/(Bearer )[A-Za-z0-9._~+/-]+=*/g,/(https?:\/\/)[^\s/@:"\\]+:[^\s/@"\\]+(?=@)/g,/(PRIVATE-TOKEN:\s*)[^\s"\\]+/gi,/(Basic )[A-Za-z0-9+/]+=*/g,/\b(?:AKIA|ASIA|AGPA|AIDA|ANPA|AROA)[0-9A-Z]{16}\b/g,/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,/\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/g,/\d{8,10}:[A-Za-z0-9_-]{35}\b/g];function f(a){let b=a;for(let a of e)b=b.replace(a,(a,b)=>"string"==typeof b?`${b}${d}`:d);return b}},53759:()=>{},64537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{adrs:()=>n,deploymentHealingSessions:()=>u,followupIssues:()=>o,healingAttempts:()=>r,healingSessions:()=>q,issueSubtasks:()=>t,issues:()=>p,jobEvents:()=>m,jobs:()=>l,oneShotCosts:()=>y,openrouterModels:()=>z,prQuestions:()=>v,promptTemplates:()=>k,releaseRuns:()=>w,repos:()=>j,reviewFeedbackItems:()=>s,settings:()=>x});var d=c(84232),e=c(83387),f=c(31622),g=c(21813),h=c(58382),i=c(96312);let j=(0,e.D)("repos",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),path:(0,g.Qq)("path").notNull(),name:(0,g.Qq)("name").notNull(),defaultBranch:(0,g.Qq)("default_branch").notNull().default("main"),queueLabel:(0,g.Qq)("queue_label").notNull().default("drydock:queue"),workingLabel:(0,g.Qq)("working_label").notNull().default("drydock:working"),needsHumanLabel:(0,g.Qq)("needs_human_label").notNull().default("drydock:needs-human"),defaultModel:(0,g.Qq)("default_model").notNull().default("claude-opus-4-8"),agent:(0,g.Qq)("agent").notNull().default("claude"),platform:(0,g.Qq)("platform").notNull().default("github"),apiBaseUrl:(0,g.Qq)("api_base_url"),apiToken:(0,g.Qq)("api_token"),dailyCostLimitUsd:(0,h.x)("daily_cost_limit_usd").notNull().default(10),adrGating:(0,f.nd)("adr_gating",{mode:"boolean"}).notNull().default(!1),sequential:(0,f.nd)("sequential",{mode:"boolean"}).notNull().default(!0),autoTriageEnabled:(0,f.nd)("auto_triage_enabled",{mode:"boolean"}).notNull().default(!1),autoProcessEnabled:(0,f.nd)("auto_process_enabled",{mode:"boolean"}).notNull().default(!1),autoHealCi:(0,f.nd)("auto_heal_ci",{mode:"boolean"}).notNull().default(!1),autoReviewFeedback:(0,f.nd)("auto_review_feedback",{mode:"boolean"}).notNull().default(!0),autoResolveMergeConflicts:(0,f.nd)("auto_resolve_merge_conflicts",{mode:"boolean"}).notNull().default(!1),includeProgressReplies:(0,f.nd)("include_progress_replies",{mode:"boolean"}).notNull().default(!1),autoDecompose:(0,f.nd)("auto_decompose",{mode:"boolean"}).notNull().default(!1),planFirst:(0,f.nd)("plan_first",{mode:"boolean"}).notNull().default(!1),verifyPr:(0,f.nd)("verify_pr",{mode:"boolean"}).notNull().default(!1),autoHealDeployments:(0,f.nd)("auto_heal_deployments",{mode:"boolean"}).notNull().default(!1),deploymentPlatform:(0,g.Qq)("deployment_platform"),trustedReviewers:(0,g.Qq)("trusted_reviewers").notNull().default("[]"),trustedBots:(0,g.Qq)("trusted_bots").notNull().default('["cursor[bot]","coderabbitai[bot]"]'),ignoredBots:(0,g.Qq)("ignored_bots").notNull().default('["dependabot[bot]","github-actions[bot]","codecov[bot]"]'),readyLabels:(0,g.Qq)("ready_labels").notNull().default('["ready","ready-for-agent","ready-to-work"]'),blockingLabels:(0,g.Qq)("blocking_labels").notNull().default('["blocked","question","needs-human","needs-discussion","wontfix","duplicate","invalid"]'),autoLabelWhitelist:(0,g.Qq)("auto_label_whitelist").notNull().default('["bug","enhancement","documentation","ready"]'),priorityAuthors:(0,g.Qq)("priority_authors").notNull().default("[]"),minAuthorAssociation:(0,g.Qq)("min_author_association").notNull().default("approved"),maxAttempts:(0,f.nd)("max_attempts").notNull().default(3),maxJobMinutes:(0,f.nd)("max_job_minutes"),maxCiWaitMinutes:(0,f.nd)("max_ci_wait_minutes"),mergeGateMinutes:(0,f.nd)("merge_gate_minutes").notNull().default(0),mergeWithoutChecks:(0,f.nd)("merge_without_checks",{mode:"boolean"}).notNull().default(!1),maxJobCostUsd:(0,h.x)("max_job_cost_usd"),agentInstructions:(0,g.Qq)("agent_instructions"),releaseEnabled:(0,f.nd)("release_enabled",{mode:"boolean"}).notNull().default(!1),webhookSecret:(0,g.Qq)("webhook_secret"),autoPrAudit:(0,f.nd)("auto_pr_audit",{mode:"boolean"}).notNull().default(!1),prAuditAgent:(0,g.Qq)("pr_audit_agent"),prAuditModel:(0,g.Qq)("pr_audit_model"),prAuditLanguage:(0,g.Qq)("pr_audit_language").notNull().default("en"),prAuditPostOnPr:(0,f.nd)("pr_audit_post_on_pr",{mode:"boolean"}).notNull().default(!1),escalateModelOnRetry:(0,f.nd)("escalate_model_on_retry",{mode:"boolean"}).notNull().default(!1),sandbox:(0,g.Qq)("sandbox").notNull().default("none"),sandboxImage:(0,g.Qq)("sandbox_image"),sandboxAllowNetwork:(0,f.nd)("sandbox_allow_network",{mode:"boolean"}).notNull().default(!1),sandboxCpus:(0,g.Qq)("sandbox_cpus"),sandboxMemory:(0,g.Qq)("sandbox_memory"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),k=(0,e.D)("prompt_templates",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").references(()=>j.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),content:(0,g.Qq)("content").notNull(),version:(0,f.nd)("version").notNull().default(1),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)}),l=(0,e.D)("jobs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),issueNumber:(0,f.nd)("issue_number").notNull(),status:(0,g.Qq)("status").notNull().default("queued"),branch:(0,g.Qq)("branch"),prNumber:(0,f.nd)("pr_number"),sessionId:(0,g.Qq)("session_id"),agent:(0,g.Qq)("agent").notNull().default("claude"),startedAt:(0,f.nd)("started_at"),finishedAt:(0,f.nd)("finished_at"),model:(0,g.Qq)("model"),implementPromptVersion:(0,f.nd)("implement_prompt_version"),maxTurns:(0,f.nd)("max_turns").notNull().default(40),totalInputTokens:(0,f.nd)("total_input_tokens").notNull().default(0),totalOutputTokens:(0,f.nd)("total_output_tokens").notNull().default(0),costUsd:(0,h.x)("cost_usd").notNull().default(0),ciRetryCount:(0,f.nd)("ci_retry_count").notNull().default(0),errorMessage:(0,g.Qq)("error_message"),limitKind:(0,g.Qq)("limit_kind"),attempts:(0,f.nd)("attempts").notNull().default(0),leaseToken:(0,g.Qq)("lease_token"),leaseExpiresAt:(0,f.nd)("lease_expires_at"),workerId:(0,g.Qq)("worker_id"),availableAt:(0,f.nd)("available_at"),dedupeKey:(0,g.Qq)("dedupe_key"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("jobs_repo_idx").on(a.repoId),statusIdx:(0,i.Pe)("jobs_status_idx").on(a.status),leaseIdx:(0,i.Pe)("jobs_lease_idx").on(a.leaseExpiresAt),dedupeActiveUnique:(0,i.GL)("jobs_dedupe_active_unique").on(a.dedupeKey).where((0,d.ll)`${a.dedupeKey} is not null and ${a.status} not in ('merged', 'aborted')`)})),m=(0,e.D)("job_events",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),ts:(0,f.nd)("ts").notNull().default((0,d.ll)`(unixepoch())`),type:(0,g.Qq)("type").notNull(),payload:(0,g.Qq)("payload").notNull().default("{}")},a=>({jobTsIdx:(0,i.Pe)("job_events_job_ts_idx").on(a.jobId,a.ts)})),n=(0,e.D)("adrs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").references(()=>l.id,{onDelete:"set null"}),repoId:(0,f.nd)("repo_id").references(()=>j.id,{onDelete:"cascade"}),filePath:(0,g.Qq)("file_path").notNull(),title:(0,g.Qq)("title").notNull(),status:(0,g.Qq)("status").notNull().default("pending_review"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),o=(0,e.D)("followup_issues",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").references(()=>l.id,{onDelete:"set null"}),ghIssueNumber:(0,f.nd)("gh_issue_number").notNull(),title:(0,g.Qq)("title").notNull(),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),p=(0,e.D)("issues",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),number:(0,f.nd)("number").notNull(),title:(0,g.Qq)("title").notNull(),labels:(0,g.Qq)("labels").notNull().default("[]"),state:(0,g.Qq)("state").notNull().default("open"),priority:(0,f.nd)("priority").notNull().default(0),triageHash:(0,g.Qq)("triage_hash"),triagedAt:(0,f.nd)("triaged_at"),decomposedHash:(0,g.Qq)("decomposed_hash"),modelOverride:(0,g.Qq)("model_override"),agentOverride:(0,g.Qq)("agent_override"),syncedAt:(0,f.nd)("synced_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoNumberUnique:(0,i.GL)("issues_repo_number_unique").on(a.repoId,a.number),repoPriorityIdx:(0,i.Pe)("issues_repo_priority_idx").on(a.repoId,a.priority)})),q=(0,e.D)("healing_sessions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),headSha:(0,g.Qq)("head_sha").notNull(),status:(0,g.Qq)("status").notNull().default("triaging"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("healing_sessions_job_idx").on(a.jobId),prShaIdx:(0,i.Pe)("healing_sessions_pr_sha_idx").on(a.prNumber,a.headSha)})),r=(0,e.D)("healing_attempts",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),sessionId:(0,f.nd)("session_id").notNull().references(()=>q.id,{onDelete:"cascade"}),fingerprint:(0,g.Qq)("fingerprint").notNull(),category:(0,g.Qq)("category").notNull(),checkName:(0,g.Qq)("check_name").notNull(),status:(0,g.Qq)("status").notNull().default("repairing"),beforeSha:(0,g.Qq)("before_sha"),afterSha:(0,g.Qq)("after_sha"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({sessionIdx:(0,i.Pe)("healing_attempts_session_idx").on(a.sessionId),fingerprintIdx:(0,i.Pe)("healing_attempts_fingerprint_idx").on(a.sessionId,a.fingerprint)})),s=(0,e.D)("review_feedback_items",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),threadId:(0,g.Qq)("thread_id").notNull(),reviewer:(0,g.Qq)("reviewer").notNull(),classification:(0,g.Qq)("classification").notNull(),status:(0,g.Qq)("status").notNull().default("pending"),attempts:(0,f.nd)("attempts").notNull().default(0),detail:(0,g.Qq)("detail"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("review_feedback_job_idx").on(a.jobId),jobThreadUnique:(0,i.GL)("review_feedback_job_thread_unique").on(a.jobId,a.threadId)})),t=(0,e.D)("issue_subtasks",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),issueNumber:(0,f.nd)("issue_number").notNull(),ordinal:(0,f.nd)("ordinal").notNull(),title:(0,g.Qq)("title").notNull(),status:(0,g.Qq)("status").notNull().default("pending"),bodyHash:(0,g.Qq)("body_hash").notNull(),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({issueIdx:(0,i.Pe)("issue_subtasks_issue_idx").on(a.repoId,a.issueNumber),issueOrdinalUnique:(0,i.GL)("issue_subtasks_issue_ordinal_unique").on(a.repoId,a.issueNumber,a.ordinal)})),u=(0,e.D)("deployment_healing_sessions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),platform:(0,g.Qq)("platform").notNull(),commitSha:(0,g.Qq)("commit_sha").notNull(),status:(0,g.Qq)("status").notNull().default("monitoring"),logsExcerpt:(0,g.Qq)("logs_excerpt"),followupPrNumber:(0,f.nd)("followup_pr_number"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("deployment_healing_job_idx").on(a.jobId),jobShaUnique:(0,i.GL)("deployment_healing_job_sha_unique").on(a.jobId,a.commitSha)})),v=(0,e.D)("pr_questions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),question:(0,g.Qq)("question").notNull(),answer:(0,g.Qq)("answer"),status:(0,g.Qq)("status").notNull().default("answering"),errorMessage:(0,g.Qq)("error_message"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("pr_questions_job_idx").on(a.jobId)})),w=(0,e.D)("release_runs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),mode:(0,g.Qq)("mode").notNull().default("auto"),triggerPrNumber:(0,f.nd)("trigger_pr_number"),triggerSha:(0,g.Qq)("trigger_sha"),status:(0,g.Qq)("status").notNull().default("detected"),bump:(0,g.Qq)("bump"),fromTag:(0,g.Qq)("from_tag"),tag:(0,g.Qq)("tag"),title:(0,g.Qq)("title"),notes:(0,g.Qq)("notes"),prNumbers:(0,g.Qq)("pr_numbers").notNull().default("[]"),errorMessage:(0,g.Qq)("error_message"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("release_runs_repo_idx").on(a.repoId),triggerUnique:(0,i.GL)("release_runs_trigger_unique").on(a.repoId,a.triggerSha).where((0,d.ll)`${a.triggerSha} is not null`)})),x=(0,e.D)("settings",{key:(0,g.Qq)("key").primaryKey(),value:(0,g.Qq)("value").notNull()}),y=(0,e.D)("one_shot_costs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),type:(0,g.Qq)("type").notNull(),costUsd:(0,h.x)("cost_usd").notNull().default(0),inputTokens:(0,f.nd)("input_tokens").notNull().default(0),outputTokens:(0,f.nd)("output_tokens").notNull().default(0),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("one_shot_costs_repo_idx").on(a.repoId)})),z=(0,e.D)("openrouter_models",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),description:(0,g.Qq)("description").notNull().default(""),contextLength:(0,f.nd)("context_length").notNull().default(0),promptCostPerToken:(0,h.x)("prompt_cost_per_token").notNull().default(0),completionCostPerToken:(0,h.x)("completion_cost_per_token").notNull().default(0),supportedParameters:(0,g.Qq)("supported_parameters").notNull().default("[]"),expirationDate:(0,f.nd)("expiration_date"),isFree:(0,f.nd)("is_free",{mode:"boolean"}).notNull().default(!1),supportsTools:(0,f.nd)("supports_tools",{mode:"boolean"}).notNull().default(!1),removedAt:(0,f.nd)("removed_at"),syncedAt:(0,f.nd)("synced_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({freeIdx:(0,i.Pe)("openrouter_models_free_idx").on(a.isFree),removedIdx:(0,i.Pe)("openrouter_models_removed_idx").on(a.removedAt)}))},71911:()=>{},75818:(a,b,c)=>{"use strict";c.d(b,{v:()=>f});var d=c(14543);function e(a){if(a instanceof Error)return(0,d.f)(a.stack??`${a.name}: ${a.message}`);if("string"==typeof a)return(0,d.f)(a);try{return(0,d.f)(JSON.stringify(a))}catch{return(0,d.f)(String(a))}}function f(...a){console.error(...a.map(e))}}};
|
|
1
|
+
exports.id=521,exports.ids=[521],exports.modules={2025:(a,b,c)=>{"use strict";let d,e;c.d(b,{Lf:()=>n});var f=c(73024),g=c(76760),h=c(87550),i=c.n(h),j=c(15640),k=c(75818),l=c(64537);let m=/^PRAGMA\s+foreign_keys\s*=/i;function n(){if(e)throw e;if(!d){let a=process.env.DRYDOCK_DB??(0,g.resolve)(process.cwd(),"data/drydock.db");try{d=function(a){":memory:"!==a&&(0,f.mkdirSync)((0,g.dirname)(a),{recursive:!0});let b=new(i())(a);try{return b.pragma("journal_mode = WAL"),b.pragma("foreign_keys = ON"),!function(a){let b,c=process.env.DRYDOCK_MIGRATIONS??(0,g.resolve)(process.cwd(),"drizzle");try{b=(0,f.readdirSync)(c).filter(a=>a.endsWith(".sql")).sort()}catch{return}a.exec("CREATE TABLE IF NOT EXISTS __migrations (name TEXT PRIMARY KEY)");let d=new Set(a.prepare("SELECT name FROM __migrations").all().map(a=>a.name)),e=a.prepare("INSERT INTO __migrations (name) VALUES (?)");for(let h of b){if(d.has(h))continue;let b=(0,f.readFileSync)((0,g.join)(c,h),"utf8");a.pragma("foreign_keys = OFF");try{a.transaction(()=>{for(let c of b.split("--\x3e statement-breakpoint")){let b=c.trim();!b||m.test(b)||a.exec(b)}let c=a.pragma("foreign_key_check");if(c.length>0)throw Error(`migration ${h} would leave ${c.length} foreign key violation(s); rolled back`);e.run(h)})()}finally{a.pragma("foreign_keys = ON")}}}(b),(0,j.f)(b,{schema:l})}catch(a){throw b.close(),a}}(a)}catch(a){throw e=a instanceof Error?a:Error(String(a))}Promise.all([c.e(980),c.e(304),c.e(152),c.e(83),c.e(668),c.e(475)]).then(c.bind(c,96356)).then(a=>a.startOrchestrator()).catch(a=>(0,k.v)("[orchestrator] bootstrap failed",a))}return d}},14543:(a,b,c)=>{"use strict";c.d(b,{f:()=>f});let d="[REDACTED]",e=[/\bgh[pousr]_[A-Za-z0-9]{36,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{50,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/(Bearer )[A-Za-z0-9._~+/-]+=*/g,/(https?:\/\/)[^\s/@:"\\]+:[^\s/@"\\]+(?=@)/g,/(PRIVATE-TOKEN:\s*)[^\s"\\]+/gi,/(Basic )[A-Za-z0-9+/]+=*/g,/\b(?:AKIA|ASIA|AGPA|AIDA|ANPA|AROA)[0-9A-Z]{16}\b/g,/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,/\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/g,/\d{8,10}:[A-Za-z0-9_-]{35}\b/g];function f(a){let b=a;for(let a of e)b=b.replace(a,(a,b)=>"string"==typeof b?`${b}${d}`:d);return b}},53759:()=>{},64537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{adrs:()=>n,deploymentHealingSessions:()=>u,followupIssues:()=>o,healingAttempts:()=>r,healingSessions:()=>q,issueSubtasks:()=>t,issues:()=>p,jobEvents:()=>m,jobs:()=>l,oneShotCosts:()=>y,openrouterModels:()=>z,prQuestions:()=>v,promptTemplates:()=>k,releaseRuns:()=>w,repos:()=>j,reviewFeedbackItems:()=>s,settings:()=>x});var d=c(84232),e=c(83387),f=c(31622),g=c(21813),h=c(58382),i=c(96312);let j=(0,e.D)("repos",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),path:(0,g.Qq)("path").notNull(),name:(0,g.Qq)("name").notNull(),defaultBranch:(0,g.Qq)("default_branch").notNull().default("main"),queueLabel:(0,g.Qq)("queue_label").notNull().default("drydock:queue"),workingLabel:(0,g.Qq)("working_label").notNull().default("drydock:working"),needsHumanLabel:(0,g.Qq)("needs_human_label").notNull().default("drydock:needs-human"),defaultModel:(0,g.Qq)("default_model").notNull().default("claude-opus-4-8"),agent:(0,g.Qq)("agent").notNull().default("claude"),platform:(0,g.Qq)("platform").notNull().default("github"),apiBaseUrl:(0,g.Qq)("api_base_url"),apiToken:(0,g.Qq)("api_token"),dailyCostLimitUsd:(0,h.x)("daily_cost_limit_usd").notNull().default(0),adrGating:(0,f.nd)("adr_gating",{mode:"boolean"}).notNull().default(!1),sequential:(0,f.nd)("sequential",{mode:"boolean"}).notNull().default(!0),autoTriageEnabled:(0,f.nd)("auto_triage_enabled",{mode:"boolean"}).notNull().default(!0),autoProcessEnabled:(0,f.nd)("auto_process_enabled",{mode:"boolean"}).notNull().default(!0),autoHealCi:(0,f.nd)("auto_heal_ci",{mode:"boolean"}).notNull().default(!0),autoReviewFeedback:(0,f.nd)("auto_review_feedback",{mode:"boolean"}).notNull().default(!0),autoResolveMergeConflicts:(0,f.nd)("auto_resolve_merge_conflicts",{mode:"boolean"}).notNull().default(!0),includeProgressReplies:(0,f.nd)("include_progress_replies",{mode:"boolean"}).notNull().default(!1),autoDecompose:(0,f.nd)("auto_decompose",{mode:"boolean"}).notNull().default(!0),planFirst:(0,f.nd)("plan_first",{mode:"boolean"}).notNull().default(!1),verifyPr:(0,f.nd)("verify_pr",{mode:"boolean"}).notNull().default(!0),autoHealDeployments:(0,f.nd)("auto_heal_deployments",{mode:"boolean"}).notNull().default(!1),deploymentPlatform:(0,g.Qq)("deployment_platform"),trustedReviewers:(0,g.Qq)("trusted_reviewers").notNull().default("[]"),trustedBots:(0,g.Qq)("trusted_bots").notNull().default('["cursor[bot]","coderabbitai[bot]"]'),ignoredBots:(0,g.Qq)("ignored_bots").notNull().default('["dependabot[bot]","github-actions[bot]","codecov[bot]"]'),readyLabels:(0,g.Qq)("ready_labels").notNull().default('["ready","ready-for-agent","ready-to-work"]'),blockingLabels:(0,g.Qq)("blocking_labels").notNull().default('["blocked","question","needs-human","needs-discussion","wontfix","duplicate","invalid"]'),autoLabelWhitelist:(0,g.Qq)("auto_label_whitelist").notNull().default('["bug","enhancement","documentation","ready"]'),priorityAuthors:(0,g.Qq)("priority_authors").notNull().default("[]"),minAuthorAssociation:(0,g.Qq)("min_author_association").notNull().default("approved"),maxAttempts:(0,f.nd)("max_attempts").notNull().default(3),maxJobMinutes:(0,f.nd)("max_job_minutes"),maxCiWaitMinutes:(0,f.nd)("max_ci_wait_minutes"),mergeGateMinutes:(0,f.nd)("merge_gate_minutes").notNull().default(0),mergeWithoutChecks:(0,f.nd)("merge_without_checks",{mode:"boolean"}).notNull().default(!1),maxJobCostUsd:(0,h.x)("max_job_cost_usd"),agentInstructions:(0,g.Qq)("agent_instructions"),releaseEnabled:(0,f.nd)("release_enabled",{mode:"boolean"}).notNull().default(!1),webhookSecret:(0,g.Qq)("webhook_secret"),autoPrAudit:(0,f.nd)("auto_pr_audit",{mode:"boolean"}).notNull().default(!0),prAuditAgent:(0,g.Qq)("pr_audit_agent"),prAuditModel:(0,g.Qq)("pr_audit_model"),prAuditLanguage:(0,g.Qq)("pr_audit_language").notNull().default("en"),prAuditPostOnPr:(0,f.nd)("pr_audit_post_on_pr",{mode:"boolean"}).notNull().default(!1),escalateModelOnRetry:(0,f.nd)("escalate_model_on_retry",{mode:"boolean"}).notNull().default(!1),sandbox:(0,g.Qq)("sandbox").notNull().default("none"),sandboxImage:(0,g.Qq)("sandbox_image"),sandboxAllowNetwork:(0,f.nd)("sandbox_allow_network",{mode:"boolean"}).notNull().default(!1),sandboxCpus:(0,g.Qq)("sandbox_cpus"),sandboxMemory:(0,g.Qq)("sandbox_memory"),adoptClaudeMem:(0,f.nd)("adopt_claude_mem",{mode:"boolean"}).notNull().default(!1),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),k=(0,e.D)("prompt_templates",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").references(()=>j.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),content:(0,g.Qq)("content").notNull(),version:(0,f.nd)("version").notNull().default(1),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)}),l=(0,e.D)("jobs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),kind:(0,g.Qq)("kind").notNull().default("issue"),issueNumber:(0,f.nd)("issue_number").notNull(),status:(0,g.Qq)("status").notNull().default("queued"),branch:(0,g.Qq)("branch"),prNumber:(0,f.nd)("pr_number"),sessionId:(0,g.Qq)("session_id"),agent:(0,g.Qq)("agent").notNull().default("claude"),startedAt:(0,f.nd)("started_at"),finishedAt:(0,f.nd)("finished_at"),model:(0,g.Qq)("model"),implementPromptVersion:(0,f.nd)("implement_prompt_version"),maxTurns:(0,f.nd)("max_turns").notNull().default(40),totalInputTokens:(0,f.nd)("total_input_tokens").notNull().default(0),totalOutputTokens:(0,f.nd)("total_output_tokens").notNull().default(0),costUsd:(0,h.x)("cost_usd").notNull().default(0),ciRetryCount:(0,f.nd)("ci_retry_count").notNull().default(0),errorMessage:(0,g.Qq)("error_message"),limitKind:(0,g.Qq)("limit_kind"),humanInstruction:(0,g.Qq)("human_instruction"),attempts:(0,f.nd)("attempts").notNull().default(0),leaseToken:(0,g.Qq)("lease_token"),leaseExpiresAt:(0,f.nd)("lease_expires_at"),workerId:(0,g.Qq)("worker_id"),availableAt:(0,f.nd)("available_at"),dedupeKey:(0,g.Qq)("dedupe_key"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("jobs_repo_idx").on(a.repoId),statusIdx:(0,i.Pe)("jobs_status_idx").on(a.status),leaseIdx:(0,i.Pe)("jobs_lease_idx").on(a.leaseExpiresAt),dedupeActiveUnique:(0,i.GL)("jobs_dedupe_active_unique").on(a.dedupeKey).where((0,d.ll)`${a.dedupeKey} is not null and ${a.status} not in ('merged', 'released', 'aborted')`)})),m=(0,e.D)("job_events",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),ts:(0,f.nd)("ts").notNull().default((0,d.ll)`(unixepoch())`),type:(0,g.Qq)("type").notNull(),payload:(0,g.Qq)("payload").notNull().default("{}")},a=>({jobTsIdx:(0,i.Pe)("job_events_job_ts_idx").on(a.jobId,a.ts)})),n=(0,e.D)("adrs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").references(()=>l.id,{onDelete:"set null"}),repoId:(0,f.nd)("repo_id").references(()=>j.id,{onDelete:"cascade"}),filePath:(0,g.Qq)("file_path").notNull(),title:(0,g.Qq)("title").notNull(),status:(0,g.Qq)("status").notNull().default("pending_review"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),o=(0,e.D)("followup_issues",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").references(()=>l.id,{onDelete:"set null"}),ghIssueNumber:(0,f.nd)("gh_issue_number").notNull(),title:(0,g.Qq)("title").notNull(),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)}),p=(0,e.D)("issues",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),number:(0,f.nd)("number").notNull(),title:(0,g.Qq)("title").notNull(),labels:(0,g.Qq)("labels").notNull().default("[]"),state:(0,g.Qq)("state").notNull().default("open"),priority:(0,f.nd)("priority").notNull().default(0),triageHash:(0,g.Qq)("triage_hash"),triagedAt:(0,f.nd)("triaged_at"),decomposedHash:(0,g.Qq)("decomposed_hash"),modelOverride:(0,g.Qq)("model_override"),agentOverride:(0,g.Qq)("agent_override"),syncedAt:(0,f.nd)("synced_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoNumberUnique:(0,i.GL)("issues_repo_number_unique").on(a.repoId,a.number),repoPriorityIdx:(0,i.Pe)("issues_repo_priority_idx").on(a.repoId,a.priority)})),q=(0,e.D)("healing_sessions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),headSha:(0,g.Qq)("head_sha").notNull(),status:(0,g.Qq)("status").notNull().default("triaging"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("healing_sessions_job_idx").on(a.jobId),prShaIdx:(0,i.Pe)("healing_sessions_pr_sha_idx").on(a.prNumber,a.headSha)})),r=(0,e.D)("healing_attempts",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),sessionId:(0,f.nd)("session_id").notNull().references(()=>q.id,{onDelete:"cascade"}),fingerprint:(0,g.Qq)("fingerprint").notNull(),category:(0,g.Qq)("category").notNull(),checkName:(0,g.Qq)("check_name").notNull(),status:(0,g.Qq)("status").notNull().default("repairing"),beforeSha:(0,g.Qq)("before_sha"),afterSha:(0,g.Qq)("after_sha"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({sessionIdx:(0,i.Pe)("healing_attempts_session_idx").on(a.sessionId),fingerprintIdx:(0,i.Pe)("healing_attempts_fingerprint_idx").on(a.sessionId,a.fingerprint)})),s=(0,e.D)("review_feedback_items",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),threadId:(0,g.Qq)("thread_id").notNull(),reviewer:(0,g.Qq)("reviewer").notNull(),classification:(0,g.Qq)("classification").notNull(),status:(0,g.Qq)("status").notNull().default("pending"),attempts:(0,f.nd)("attempts").notNull().default(0),detail:(0,g.Qq)("detail"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("review_feedback_job_idx").on(a.jobId),jobThreadUnique:(0,i.GL)("review_feedback_job_thread_unique").on(a.jobId,a.threadId)})),t=(0,e.D)("issue_subtasks",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),issueNumber:(0,f.nd)("issue_number").notNull(),ordinal:(0,f.nd)("ordinal").notNull(),title:(0,g.Qq)("title").notNull(),status:(0,g.Qq)("status").notNull().default("pending"),bodyHash:(0,g.Qq)("body_hash").notNull(),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({issueIdx:(0,i.Pe)("issue_subtasks_issue_idx").on(a.repoId,a.issueNumber),issueOrdinalUnique:(0,i.GL)("issue_subtasks_issue_ordinal_unique").on(a.repoId,a.issueNumber,a.ordinal)})),u=(0,e.D)("deployment_healing_sessions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),platform:(0,g.Qq)("platform").notNull(),commitSha:(0,g.Qq)("commit_sha").notNull(),status:(0,g.Qq)("status").notNull().default("monitoring"),logsExcerpt:(0,g.Qq)("logs_excerpt"),followupPrNumber:(0,f.nd)("followup_pr_number"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("deployment_healing_job_idx").on(a.jobId),jobShaUnique:(0,i.GL)("deployment_healing_job_sha_unique").on(a.jobId,a.commitSha)})),v=(0,e.D)("pr_questions",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),jobId:(0,f.nd)("job_id").notNull().references(()=>l.id,{onDelete:"cascade"}),prNumber:(0,f.nd)("pr_number").notNull(),question:(0,g.Qq)("question").notNull(),answer:(0,g.Qq)("answer"),status:(0,g.Qq)("status").notNull().default("answering"),errorMessage:(0,g.Qq)("error_message"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({jobIdx:(0,i.Pe)("pr_questions_job_idx").on(a.jobId)})),w=(0,e.D)("release_runs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),mode:(0,g.Qq)("mode").notNull().default("auto"),jobId:(0,f.nd)("job_id").references(()=>l.id,{onDelete:"set null"}),triggerPrNumber:(0,f.nd)("trigger_pr_number"),triggerSha:(0,g.Qq)("trigger_sha"),status:(0,g.Qq)("status").notNull().default("detected"),bump:(0,g.Qq)("bump"),fromTag:(0,g.Qq)("from_tag"),tag:(0,g.Qq)("tag"),title:(0,g.Qq)("title"),notes:(0,g.Qq)("notes"),prNumbers:(0,g.Qq)("pr_numbers").notNull().default("[]"),errorMessage:(0,g.Qq)("error_message"),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`),updatedAt:(0,f.nd)("updated_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("release_runs_repo_idx").on(a.repoId),triggerUnique:(0,i.GL)("release_runs_trigger_unique").on(a.repoId,a.triggerSha).where((0,d.ll)`${a.triggerSha} is not null`)})),x=(0,e.D)("settings",{key:(0,g.Qq)("key").primaryKey(),value:(0,g.Qq)("value").notNull()}),y=(0,e.D)("one_shot_costs",{id:(0,f.nd)("id").primaryKey({autoIncrement:!0}),repoId:(0,f.nd)("repo_id").notNull().references(()=>j.id,{onDelete:"cascade"}),type:(0,g.Qq)("type").notNull(),costUsd:(0,h.x)("cost_usd").notNull().default(0),inputTokens:(0,f.nd)("input_tokens").notNull().default(0),outputTokens:(0,f.nd)("output_tokens").notNull().default(0),createdAt:(0,f.nd)("created_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({repoIdx:(0,i.Pe)("one_shot_costs_repo_idx").on(a.repoId)})),z=(0,e.D)("openrouter_models",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),description:(0,g.Qq)("description").notNull().default(""),contextLength:(0,f.nd)("context_length").notNull().default(0),promptCostPerToken:(0,h.x)("prompt_cost_per_token").notNull().default(0),completionCostPerToken:(0,h.x)("completion_cost_per_token").notNull().default(0),supportedParameters:(0,g.Qq)("supported_parameters").notNull().default("[]"),expirationDate:(0,f.nd)("expiration_date"),isFree:(0,f.nd)("is_free",{mode:"boolean"}).notNull().default(!1),supportsTools:(0,f.nd)("supports_tools",{mode:"boolean"}).notNull().default(!1),removedAt:(0,f.nd)("removed_at"),syncedAt:(0,f.nd)("synced_at").notNull().default((0,d.ll)`(unixepoch())`)},a=>({freeIdx:(0,i.Pe)("openrouter_models_free_idx").on(a.isFree),removedIdx:(0,i.Pe)("openrouter_models_removed_idx").on(a.removedAt)}))},71911:()=>{},75818:(a,b,c)=>{"use strict";c.d(b,{v:()=>f});var d=c(14543);function e(a){if(a instanceof Error)return(0,d.f)(a.stack??`${a.name}: ${a.message}`);if("string"==typeof a)return(0,d.f)(a);try{return(0,d.f)(JSON.stringify(a))}catch{return(0,d.f)(String(a))}}function f(...a){console.error(...a.map(e))}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=578,exports.ids=[578],exports.modules={13867:(a,b,c)=>{c.d(b,{LogViewer:()=>E});var d=c(27905),e=c(75244),f=c(60501),g=c(29295),h=c(10285),i=c(39571),j=c(52097),k=c(46248),l=c(22089),m=c(90295),n=c(42653),o=c(80851),p=c(35924),q=c(85117),r=c(27796),s=c(54110),t=c(46553),u=c(31003),v=c(5270);let w=["status","text","tool_use","tool_result","result","claude_exit","error"],x={status:{icon:e.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"status"},text:{icon:f.A,color:"text-primary",chip:"bg-primary/10 text-primary",label:"assistant"},tool_use:{icon:g.A,color:"text-primary",chip:"bg-primary/10 text-primary",label:"tool"},tool_result:{icon:h.A,color:"text-success",chip:"bg-success-muted text-success",label:"result"},result:{icon:i.A,color:"text-success",chip:"bg-success-muted text-success",label:"done"},claude_exit:{icon:j.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"exit"},error:{icon:k.A,color:"text-destructive",chip:"bg-destructive/10 text-destructive",label:"error"}},y={icon:e.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"event"};function z(a){return new Date(1e3*a).toTimeString().slice(0,8)}function A(a,b){if(a&&"object"==typeof a&&b in a){let c=a[b];return null==c?void 0:String(c)}}let B=new Set(["merged","needs_human","aborted","interrupted"]);function C({type:a,payload:b}){if("text"===a)return(0,d.jsx)("p",{className:"leading-relaxed text-foreground/90",children:"string"==typeof b?b:A(b,"text")??JSON.stringify(b)});if("status"===a){let a=A(b,"from"),c=A(b,"to"),e=A(b,"reason");return a||c?(0,d.jsxs)("span",{className:"text-muted-foreground",children:[a??"?"," ",(0,d.jsx)("span",{className:"text-muted-foreground/60",children:"→"})," ",(0,d.jsx)("span",{className:"text-foreground",children:c??"?"}),e&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e]})]}):(0,d.jsx)("span",{className:"text-muted-foreground",children:A(b,"message")??e??("string"==typeof b?b:JSON.stringify(b))})}if("error"===a)return(0,d.jsx)("span",{className:"text-destructive",children:A(b,"message")??("string"==typeof b?b:JSON.stringify(b))});if("claude_exit"===a){let a=A(b,"exitCode")??A(b,"code"),c=A(b,"reason");return(0,d.jsxs)("span",{className:"text-muted-foreground",children:["exited code ",(0,d.jsx)("span",{className:"text-foreground",children:a??"?"}),c&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",c]})]})}if("tool_use"===a){let a=A(b,"name")??"tool",c=(b&&"object"==typeof b?b.input:void 0)??{},e=c.file_path??c.command??c.pattern??c.summary??Object.values(c)[0]??"";return(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"font-semibold text-primary",children:a}),(0,d.jsx)("span",{className:"text-muted-foreground",children:"("}),(0,d.jsx)("span",{className:"text-foreground/80",children:String(e)}),(0,d.jsx)("span",{className:"text-muted-foreground",children:")"}),!!c.summary&&!!c.file_path&&(0,d.jsxs)("span",{className:"text-muted-foreground",children:[" — ",String(c.summary)]})]})}if("tool_result"===a){let a=b&&"object"==typeof b&&b.ok,c=A(b,"summary")??"",e=a?i.A:k.A;return(0,d.jsxs)("span",{className:(0,v.cn)("inline-flex items-center gap-1.5",a?"text-success":"text-destructive"),children:[(0,d.jsx)(e,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"text-foreground/80",children:c})]})}if("result"===a){let a=b??{},c="number"==typeof a.costUsd?a.costUsd:void 0,e="number"==typeof a.durationSec?a.durationSec:void 0,f="number"==typeof a.turns?a.turns:void 0,g="number"==typeof a.inputTokens?a.inputTokens:void 0,h="number"==typeof a.outputTokens?a.outputTokens:void 0,i="rounded bg-secondary px-1.5 py-0.5 text-[11px] tnum";return(0,d.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2 align-middle",children:[(0,d.jsx)(r.E,{tone:"success",children:"done"}),null!=c&&(0,d.jsxs)("span",{className:i,children:["$",c.toFixed(2)]}),null!=e&&(0,d.jsxs)("span",{className:i,children:[Math.floor(e/60),"m ",e%60,"s"]}),null!=f&&(0,d.jsxs)("span",{className:i,children:[f," turns"]}),null!=g&&null!=h&&(0,d.jsxs)("span",{className:i,children:[(g/1e3).toFixed(0),"k in \xb7 ",(h/1e3).toFixed(1),"k out"]})]})}return(0,d.jsx)("span",{className:"text-muted-foreground",children:"string"==typeof b?b:JSON.stringify(b)})}function D({line:a,showClock:b}){let c=x[a.type]??y,e=c.icon,f=b&&a.ts?z(a.ts):"";return(0,d.jsxs)("div",{className:(0,v.cn)("dd-log-in flex gap-2.5 rounded-md px-2.5 py-1.5 hover:bg-secondary/40","error"===a.type&&"bg-destructive/[0.06]"),children:[(0,d.jsx)("span",{className:"shrink-0 select-none pt-0.5 text-[11px] tnum text-muted-foreground/60",children:f}),(0,d.jsx)(e,{className:(0,v.cn)("mt-0.5 h-[13px] w-[13px] shrink-0",c.color)}),(0,d.jsx)("span",{className:(0,v.cn)("w-[68px] shrink-0 pt-0.5 text-[10px] font-semibold uppercase tracking-wide",c.color),children:c.label}),(0,d.jsx)("div",{className:"min-w-0 flex-1 whitespace-pre-wrap break-words pt-0.5",children:(0,d.jsx)(C,{type:a.type,payload:a.payload})})]})}function E({jobId:a,initial:b=[],active:c=!0}){let[e,f]=(0,p.useState)(b),[g,h]=(0,p.useState)(()=>!c||b.some(a=>(function(a,b){if("result"===a||"claude_exit"===a)return!0;if("status"!==a)return!1;let c=A(b,"to");return void 0!==c&&B.has(c)})(a.type,a.payload))),[i,j]=(0,p.useState)(!0),[k,C]=(0,p.useState)(()=>new Set),[F,G]=(0,p.useState)(!1);(0,p.useRef)(new Set(b.map(a=>a.id)));let H=(0,u.p)(),{success:I,error:J}=(0,t.d)(),K=(0,p.useMemo)(()=>e.filter(a=>!k.has(a.type)),[e,k]),L=!g,M=k.size;return(0,d.jsxs)("div",{className:"overflow-hidden rounded-xl border border-card-border bg-card shadow-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-card-border bg-secondary/40 px-3 py-2",children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold",children:[(0,d.jsx)(l.A,{className:"h-[15px] w-[15px] text-muted-foreground"})," Log stream"]}),L?(0,d.jsx)(r.E,{status:"working",children:"live"}):(0,d.jsxs)(r.E,{tone:"neutral",children:["complete \xb7 ",e.length," events"]}),(0,d.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>G(a=>!a),className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium hover-elevate focus-ring",M>0&&"text-primary"),children:[(0,d.jsx)(m.A,{className:"h-3.5 w-3.5"})," Filter",M>0&&(0,d.jsxs)("span",{className:"tnum",children:["\xb7 ",w.length-M]})]}),(0,d.jsxs)("button",{type:"button",onClick:()=>j(a=>!a),className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium hover-elevate focus-ring",i?"text-primary":"text-muted-foreground"),"aria-pressed":i,children:[(0,d.jsx)(n.A,{className:"h-3.5 w-3.5"})," Autoscroll"]}),(0,d.jsxs)("button",{type:"button",onClick:function(){let a=e.map(a=>{let b=a.ts?`[${z(a.ts)}] `:"",c="string"==typeof a.payload?a.payload:JSON.stringify(a.payload);return`${b}${a.type} ${c}`}).join("\n"),b=navigator.clipboard;b?b.writeText(a).then(()=>I("Log copied",`${e.length} events`)).catch(()=>J("Copy failed","Could not write to the clipboard.")):J("Copy failed","The clipboard is unavailable in this context.")},className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover-elevate focus-ring",children:[(0,d.jsx)(o.A,{className:"h-3.5 w-3.5"})," Copy"]})]})]}),F&&(0,d.jsx)("div",{className:"dd-fade-up flex flex-wrap items-center gap-1.5 border-b border-card-border bg-secondary/20 px-3 py-2",children:w.map(a=>{let b=!k.has(a),c=x[a]??y,e=c.icon;return(0,d.jsxs)("button",{type:"button",onClick:()=>{C(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md border px-2 py-1 text-[11px] font-medium transition-colors focus-ring",b?`${c.chip} border-transparent`:"border-border text-muted-foreground/60 line-through"),children:[(0,d.jsx)(e,{className:"h-[11px] w-[11px]"})," ",c.label]},a)})}),(0,d.jsx)("div",{role:"log","aria-live":"polite","aria-label":"Job log stream",className:"h-[460px] bg-background/40 px-1 py-1 font-mono text-xs",children:(0,d.jsx)(q.aY,{data:K,followOutput:!!i&&"smooth",itemContent:(a,b)=>(0,d.jsx)(D,{line:b,showClock:H}),components:{Footer:()=>L?(0,d.jsxs)("div",{className:"flex items-center gap-2.5 px-2.5 py-1.5 text-muted-foreground",children:[(0,d.jsx)("span",{className:"w-[42px]"}),(0,d.jsx)(s.y,{size:13}),(0,d.jsx)("span",{className:"text-[11px]",children:"streaming…"})]}):null}})})]})}},15354:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(87383),e=c(25900);let f={neutral:"border-border bg-secondary text-secondary-foreground",primary:"border-primary/40 bg-primary/10 text-primary",success:"border-success-border bg-success-muted text-success-foreground",warning:"border-warning-border bg-warning-muted text-warning-foreground",destructive:"border-destructive/40 bg-destructive/10 text-destructive"},g={queued:"neutral",working:"primary",ci_running:"warning",ci_failed:"destructive",retrying:"warning",waiting_limit:"warning",merged:"success",needs_human:"destructive",aborted:"neutral",interrupted:"warning",open:"neutral",triaged:"primary",releasing:"primary"},h=new Set(["working","ci_running","retrying","releasing"]);function i({className:a,status:b,tone:c,children:j,...k}){let l=c??(b?g[b]??"neutral":"neutral"),m=void 0!==b&&h.has(b);return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 whitespace-nowrap rounded-md border px-2 py-0.5 text-[11px] font-semibold leading-4",f[l],a),...k,children:[m&&(0,d.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,d.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,d.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),j??b?.replace(/_/g," ")]})}},18873:(a,b,c)=>{c.d(b,{LogViewer:()=>e});var d=c(34215);(0,d.registerClientReference)(function(){throw Error("Attempted to call isTerminalLogEvent() from the server but isTerminalLogEvent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","isTerminalLogEvent");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call LogViewer() from the server but LogViewer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","LogViewer")},46136:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(87383),e=c(25900);let f={neutral:"bg-secondary text-muted-foreground",primary:"bg-primary/10 text-primary",success:"bg-success-muted text-success",warning:"bg-warning-muted text-warning",destructive:"bg-destructive/10 text-destructive"};function g({icon:a,tone:b="neutral",title:c,description:h,action:i,secondary:j,className:k,compact:l}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col items-center justify-center text-center",l?"py-10":"py-16",k),children:[a&&(0,d.jsx)("div",{className:(0,e.cn)("flex items-center justify-center rounded-2xl",l?"h-12 w-12":"h-16 w-16",f[b]),children:(0,d.jsx)(a,{className:l?"h-[22px] w-[22px]":"h-7 w-7"})}),(0,d.jsx)("h3",{className:"mt-4 text-base font-semibold",children:c}),h&&(0,d.jsx)("p",{className:"mt-1 max-w-sm text-pretty text-sm text-muted-foreground",children:h}),(i||j)&&(0,d.jsxs)("div",{className:"mt-5 flex items-center gap-2",children:[i,j]})]})}},62164:(a,b,c)=>{c.d(b,{V:()=>i,m:()=>h});var d=c(27905),e=c(44697),f=c(5270);let g={top:"bottom-full left-1/2 -translate-x-1/2 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2",right:"left-full top-1/2 -translate-y-1/2 ml-2",left:"right-full top-1/2 -translate-y-1/2 mr-2"};function h({content:a,children:b,side:c="top",className:e}){return(0,d.jsxs)("span",{className:"group/tt relative inline-flex",children:[b,(0,d.jsx)("span",{role:"tooltip",className:(0,f.cn)("pointer-events-none absolute z-50 w-max max-w-[260px] rounded-lg border border-border bg-popover px-2.5 py-1.5 text-xs leading-relaxed text-popover-foreground shadow-lg","translate-y-0.5 opacity-0 transition-all duration-150 group-focus-within/tt:opacity-100 group-hover/tt:translate-y-0 group-hover/tt:opacity-100",g[c],e),children:a})]})}function i({content:a,side:b="top"}){return(0,d.jsx)(h,{content:a,side:b,children:(0,d.jsx)("button",{type:"button",className:"inline-flex h-4 w-4 items-center justify-center rounded-full text-muted-foreground/70 transition-colors hover:text-foreground focus-ring","aria-label":"Help",children:(0,d.jsx)(e.A,{className:"h-3.5 w-3.5"})})})}},82795:(a,b,c)=>{c.d(b,{T:()=>g});var d=c(27905),e=c(35924),f=c(5270);let g=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("textarea",{ref:c,className:(0,f.cn)("min-h-[80px] w-full rounded-lg border border-input bg-background px-3 py-2 text-sm text-foreground leading-relaxed","placeholder:text-muted-foreground transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...b}));g.displayName="Textarea"}};
|
|
1
|
+
"use strict";exports.id=578,exports.ids=[578],exports.modules={13867:(a,b,c)=>{c.d(b,{LogViewer:()=>F});var d=c(27905),e=c(75244),f=c(60501),g=c(29295),h=c(10285),i=c(39571),j=c(52097),k=c(46248),l=c(22089),m=c(90295),n=c(38186),o=c(80851),p=c(35924),q=c(85117),r=c(27796),s=c(54110),t=c(46553),u=c(31003),v=c(5270);let w=["status","text","tool_use","tool_result","result","claude_exit","error"],x=new Set(["assistant","user","system"]),y={status:{icon:e.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"status"},text:{icon:f.A,color:"text-primary",chip:"bg-primary/10 text-primary",label:"assistant"},tool_use:{icon:g.A,color:"text-primary",chip:"bg-primary/10 text-primary",label:"tool"},tool_result:{icon:h.A,color:"text-success",chip:"bg-success-muted text-success",label:"result"},result:{icon:i.A,color:"text-success",chip:"bg-success-muted text-success",label:"done"},claude_exit:{icon:j.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"exit"},error:{icon:k.A,color:"text-destructive",chip:"bg-destructive/10 text-destructive",label:"error"}},z={icon:e.A,color:"text-muted-foreground",chip:"bg-secondary text-muted-foreground",label:"event"};function A(a){return new Date(1e3*a).toTimeString().slice(0,8)}function B(a,b){if(a&&"object"==typeof a&&b in a){let c=a[b];return null==c?void 0:String(c)}}let C=new Set(["merged","released","needs_human","aborted","interrupted"]);function D({type:a,payload:b}){if("text"===a)return(0,d.jsx)("p",{className:"leading-relaxed text-foreground/90",children:"string"==typeof b?b:B(b,"text")??JSON.stringify(b)});if("status"===a){let a=B(b,"from"),c=B(b,"to"),e=B(b,"reason");return a||c?(0,d.jsxs)("span",{className:"text-muted-foreground",children:[a??"?"," ",(0,d.jsx)("span",{className:"text-muted-foreground/60",children:"→"})," ",(0,d.jsx)("span",{className:"text-foreground",children:c??"?"}),e&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e]})]}):(0,d.jsx)("span",{className:"text-muted-foreground",children:B(b,"message")??e??("string"==typeof b?b:JSON.stringify(b))})}if("error"===a)return(0,d.jsx)("span",{className:"text-destructive",children:B(b,"message")??("string"==typeof b?b:JSON.stringify(b))});if("claude_exit"===a){let a=B(b,"exitCode")??B(b,"code"),c=B(b,"reason");return(0,d.jsxs)("span",{className:"text-muted-foreground",children:["exited code ",(0,d.jsx)("span",{className:"text-foreground",children:a??"?"}),c&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",c]})]})}if("tool_use"===a){let a=B(b,"name")??"tool",c=(b&&"object"==typeof b?b.input:void 0)??{},e=c.file_path??c.command??c.pattern??c.summary??Object.values(c)[0]??"";return(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"font-semibold text-primary",children:a}),(0,d.jsx)("span",{className:"text-muted-foreground",children:"("}),(0,d.jsx)("span",{className:"text-foreground/80",children:String(e)}),(0,d.jsx)("span",{className:"text-muted-foreground",children:")"}),!!c.summary&&!!c.file_path&&(0,d.jsxs)("span",{className:"text-muted-foreground",children:[" — ",String(c.summary)]})]})}if("tool_result"===a){let a=b&&"object"==typeof b&&b.ok,c=B(b,"summary")??"",e=a?i.A:k.A;return(0,d.jsxs)("span",{className:(0,v.cn)("inline-flex items-center gap-1.5",a?"text-success":"text-destructive"),children:[(0,d.jsx)(e,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"text-foreground/80",children:c})]})}if("result"===a){let a=b??{},c="number"==typeof a.costUsd?a.costUsd:void 0,e="number"==typeof a.durationSec?a.durationSec:void 0,f="number"==typeof a.turns?a.turns:void 0,g="number"==typeof a.inputTokens?a.inputTokens:void 0,h="number"==typeof a.outputTokens?a.outputTokens:void 0,i="rounded bg-secondary px-1.5 py-0.5 text-[11px] tnum";return(0,d.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2 align-middle",children:[(0,d.jsx)(r.E,{tone:"success",children:"done"}),null!=c&&(0,d.jsxs)("span",{className:i,children:["$",c.toFixed(2)]}),null!=e&&(0,d.jsxs)("span",{className:i,children:[Math.floor(e/60),"m ",e%60,"s"]}),null!=f&&(0,d.jsxs)("span",{className:i,children:[f," turns"]}),null!=g&&null!=h&&(0,d.jsxs)("span",{className:i,children:[(g/1e3).toFixed(0),"k in \xb7 ",(h/1e3).toFixed(1),"k out"]})]})}return(0,d.jsx)("span",{className:"text-muted-foreground",children:"string"==typeof b?b:JSON.stringify(b)})}function E({line:a,showClock:b}){let c=y[a.type]??z,e=c.icon,f=b&&a.ts?A(a.ts):"";return(0,d.jsxs)("div",{className:(0,v.cn)("dd-log-in flex gap-2.5 rounded-md px-2.5 py-1.5 hover:bg-secondary/40","error"===a.type&&"bg-destructive/[0.06]"),children:[(0,d.jsx)("span",{className:"shrink-0 select-none pt-0.5 text-[11px] tnum text-muted-foreground/60",children:f}),(0,d.jsx)(e,{className:(0,v.cn)("mt-0.5 h-[13px] w-[13px] shrink-0",c.color)}),(0,d.jsx)("span",{className:(0,v.cn)("w-[68px] shrink-0 pt-0.5 text-[10px] font-semibold uppercase tracking-wide",c.color),children:c.label}),(0,d.jsx)("div",{className:"min-w-0 flex-1 whitespace-pre-wrap break-words pt-0.5",children:(0,d.jsx)(D,{type:a.type,payload:a.payload})})]})}function F({jobId:a,initial:b=[],active:c=!0}){let[e,f]=(0,p.useState)(()=>b.flatMap(a=>(function(a,b,c,d){if(!x.has(b))return[{id:a,type:b,payload:c,ts:d}];let e=c&&"object"==typeof c&&Array.isArray(c.chunks)?c.chunks:[],f=[];for(let b of e){let c=function(a,b,c){switch(b.kind){case"text":return{id:a,type:"text",payload:{text:b.text??""},ts:c};case"tool_use":return{id:a,type:"tool_use",payload:{name:b.name,input:b.input},ts:c};case"tool_result":return{id:a,type:"tool_result",payload:{ok:!b.isError},ts:c};default:return null}}(a,b,d);c&&f.push(c)}return f})(a.id,a.type,a.payload,a.ts))),[g,h]=(0,p.useState)(()=>!c||b.some(a=>(function(a,b){if("result"===a||"claude_exit"===a)return!0;if("status"!==a)return!1;let c=B(b,"to");return void 0!==c&&C.has(c)})(a.type,a.payload))),[i,j]=(0,p.useState)(!0),[k,D]=(0,p.useState)(()=>new Set),[G,H]=(0,p.useState)(!1);(0,p.useRef)(new Set(b.map(a=>a.id)));let I=(0,p.useRef)(null),J=(0,u.p)(),{success:K,error:L}=(0,t.d)(),M=(0,p.useMemo)(()=>e.filter(a=>!k.has(a.type)),[e,k]),N=(0,p.useMemo)(()=>[...M].reverse(),[M]),O=!g,P=k.size;return(0,d.jsxs)("div",{className:"overflow-hidden rounded-xl border border-card-border bg-card shadow-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-card-border bg-secondary/40 px-3 py-2",children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold",children:[(0,d.jsx)(l.A,{className:"h-[15px] w-[15px] text-muted-foreground"})," Log stream"]}),O?(0,d.jsx)(r.E,{status:"working",children:"live"}):(0,d.jsxs)(r.E,{tone:"neutral",children:["complete \xb7 ",e.length," events"]}),(0,d.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>H(a=>!a),className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium hover-elevate focus-ring",P>0&&"text-primary"),children:[(0,d.jsx)(m.A,{className:"h-3.5 w-3.5"})," Filter",P>0&&(0,d.jsxs)("span",{className:"tnum",children:["\xb7 ",w.length-P]})]}),(0,d.jsxs)("button",{type:"button",onClick:()=>j(a=>!a),className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium hover-elevate focus-ring",i?"text-primary":"text-muted-foreground"),"aria-pressed":i,children:[(0,d.jsx)(n.A,{className:"h-3.5 w-3.5"})," Autoscroll"]}),(0,d.jsxs)("button",{type:"button",onClick:function(){let a=e.map(a=>{let b=a.ts?`[${A(a.ts)}] `:"",c="string"==typeof a.payload?a.payload:JSON.stringify(a.payload);return`${b}${a.type} ${c}`}).join("\n"),b=navigator.clipboard;b?b.writeText(a).then(()=>K("Log copied",`${e.length} events`)).catch(()=>L("Copy failed","Could not write to the clipboard.")):L("Copy failed","The clipboard is unavailable in this context.")},className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover-elevate focus-ring",children:[(0,d.jsx)(o.A,{className:"h-3.5 w-3.5"})," Copy"]})]})]}),G&&(0,d.jsx)("div",{className:"dd-fade-up flex flex-wrap items-center gap-1.5 border-b border-card-border bg-secondary/20 px-3 py-2",children:w.map(a=>{let b=!k.has(a),c=y[a]??z,e=c.icon;return(0,d.jsxs)("button",{type:"button",onClick:()=>{D(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},className:(0,v.cn)("inline-flex items-center gap-1.5 rounded-md border px-2 py-1 text-[11px] font-medium transition-colors focus-ring",b?`${c.chip} border-transparent`:"border-border text-muted-foreground/60 line-through"),children:[(0,d.jsx)(e,{className:"h-[11px] w-[11px]"})," ",c.label]},a)})}),(0,d.jsx)("div",{role:"log","aria-live":"polite","aria-label":"Job log stream",className:"h-[460px] bg-background/40 px-1 py-1 font-mono text-xs",children:(0,d.jsx)(q.aY,{ref:I,data:N,initialTopMostItemIndex:0,itemContent:(a,b)=>(0,d.jsx)(E,{line:b,showClock:J}),components:{Header:()=>O?(0,d.jsxs)("div",{className:"flex items-center gap-2.5 px-2.5 py-1.5 text-muted-foreground",children:[(0,d.jsx)("span",{className:"w-[42px]"}),(0,d.jsx)(s.y,{size:13}),(0,d.jsx)("span",{className:"text-[11px]",children:"streaming…"})]}):null}})})]})}},15354:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(87383),e=c(25900);let f={neutral:"border-border bg-secondary text-secondary-foreground",primary:"border-primary/40 bg-primary/10 text-primary",success:"border-success-border bg-success-muted text-success-foreground",warning:"border-warning-border bg-warning-muted text-warning-foreground",destructive:"border-destructive/40 bg-destructive/10 text-destructive"},g={queued:"neutral",working:"primary",ci_running:"warning",ci_failed:"destructive",retrying:"warning",waiting_limit:"warning",merged:"success",released:"success",needs_human:"destructive",aborted:"neutral",interrupted:"warning",open:"neutral",triaged:"primary",releasing:"primary"},h=new Set(["working","ci_running","retrying","releasing"]);function i({className:a,status:b,tone:c,children:j,...k}){let l=c??(b?g[b]??"neutral":"neutral"),m=void 0!==b&&h.has(b);return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 whitespace-nowrap rounded-md border px-2 py-0.5 text-[11px] font-semibold leading-4",f[l],a),...k,children:[m&&(0,d.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,d.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,d.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),j??b?.replace(/_/g," ")]})}},18873:(a,b,c)=>{c.d(b,{LogViewer:()=>e});var d=c(34215);(0,d.registerClientReference)(function(){throw Error("Attempted to call SSE_EVENT_TYPES() from the server but SSE_EVENT_TYPES is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","SSE_EVENT_TYPES"),(0,d.registerClientReference)(function(){throw Error("Attempted to call expandStreamEvent() from the server but expandStreamEvent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","expandStreamEvent"),(0,d.registerClientReference)(function(){throw Error("Attempted to call isTerminalLogEvent() from the server but isTerminalLogEvent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","isTerminalLogEvent"),(0,d.registerClientReference)(function(){throw Error("Attempted to call toDisplayOrder() from the server but toDisplayOrder is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","toDisplayOrder"),(0,d.registerClientReference)(function(){throw Error("Attempted to call formatLogForClipboard() from the server but formatLogForClipboard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","formatLogForClipboard");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call LogViewer() from the server but LogViewer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/src/components/log-viewer.tsx","LogViewer")},46136:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(87383),e=c(25900);let f={neutral:"bg-secondary text-muted-foreground",primary:"bg-primary/10 text-primary",success:"bg-success-muted text-success",warning:"bg-warning-muted text-warning",destructive:"bg-destructive/10 text-destructive"};function g({icon:a,tone:b="neutral",title:c,description:h,action:i,secondary:j,className:k,compact:l}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col items-center justify-center text-center",l?"py-10":"py-16",k),children:[a&&(0,d.jsx)("div",{className:(0,e.cn)("flex items-center justify-center rounded-2xl",l?"h-12 w-12":"h-16 w-16",f[b]),children:(0,d.jsx)(a,{className:l?"h-[22px] w-[22px]":"h-7 w-7"})}),(0,d.jsx)("h3",{className:"mt-4 text-base font-semibold",children:c}),h&&(0,d.jsx)("p",{className:"mt-1 max-w-sm text-pretty text-sm text-muted-foreground",children:h}),(i||j)&&(0,d.jsxs)("div",{className:"mt-5 flex items-center gap-2",children:[i,j]})]})}},62164:(a,b,c)=>{c.d(b,{V:()=>i,m:()=>h});var d=c(27905),e=c(44697),f=c(5270);let g={top:"bottom-full left-1/2 -translate-x-1/2 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2",right:"left-full top-1/2 -translate-y-1/2 ml-2",left:"right-full top-1/2 -translate-y-1/2 mr-2"};function h({content:a,children:b,side:c="top",className:e}){return(0,d.jsxs)("span",{className:"group/tt relative inline-flex",children:[b,(0,d.jsx)("span",{role:"tooltip",className:(0,f.cn)("pointer-events-none absolute z-50 w-max max-w-[260px] rounded-lg border border-border bg-popover px-2.5 py-1.5 text-xs leading-relaxed text-popover-foreground shadow-lg","translate-y-0.5 opacity-0 transition-all duration-150 group-focus-within/tt:opacity-100 group-hover/tt:translate-y-0 group-hover/tt:opacity-100",g[c],e),children:a})]})}function i({content:a,side:b="top"}){return(0,d.jsx)(h,{content:a,side:b,children:(0,d.jsx)("button",{type:"button",className:"inline-flex h-4 w-4 items-center justify-center rounded-full text-muted-foreground/70 transition-colors hover:text-foreground focus-ring","aria-label":"Help",children:(0,d.jsx)(e.A,{className:"h-3.5 w-3.5"})})})}},82795:(a,b,c)=>{c.d(b,{T:()=>g});var d=c(27905),e=c(35924),f=c(5270);let g=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("textarea",{ref:c,className:(0,f.cn)("min-h-[80px] w-full rounded-lg border border-input bg-background px-3 py-2 text-sm text-foreground leading-relaxed","placeholder:text-muted-foreground transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...b}));g.displayName="Textarea"}};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";exports.id=614,exports.ids=[614],exports.modules={12614:(a,b,c)=>{c.d(b,{runOpenRouterJobSession:()=>F});var d=c(79241),e=c(97095),f=c(51541),g=c(95310),h=c(74929),i=c(92958),j=c(5501),k=c(40900),l=c(
|
|
1
|
+
"use strict";exports.id=614,exports.ids=[614],exports.modules={12614:(a,b,c)=>{c.d(b,{runOpenRouterJobSession:()=>F});var d=c(79241),e=c(97095),f=c(51541),g=c(95310),h=c(74929),i=c(92958),j=c(5501),k=c(40900),l=c(1338),m=c(41575),n=c(29218),o=c(3061),p=c(84637),q=c(52166),r=c(31421),s=c(51455),t=c(76760),u=c.n(t),v=c(67055);let w=[{name:"read_file",description:"Read a UTF-8 text file from the worktree. The path is relative to the repository root. Long files are truncated.",parameters:{type:"object",properties:{path:{type:"string",description:"File path relative to the repository root."}},required:["path"]}},{name:"write_file",description:"Create or overwrite a UTF-8 text file in the worktree, creating parent directories as needed. The path is relative to the repository root.",parameters:{type:"object",properties:{path:{type:"string",description:"File path relative to the repository root."},content:{type:"string",description:"The full new file content."}},required:["path","content"]}},{name:"list_dir",description:"List the entries of a directory in the worktree. Directories are suffixed with '/'. Defaults to the repository root.",parameters:{type:"object",properties:{path:{type:"string",description:"Directory path relative to the repository root (default: '.')."}}}},{name:"run_command",description:"Run a shell command in the worktree (tests, linters, builds, git status — but never commit or push). Returns the exit code with stdout/stderr, truncated when long.",parameters:{type:"object",properties:{command:{type:"string",description:"The shell command to run."},timeout_seconds:{type:"number",description:"Optional timeout in seconds (default 120, max 600)."}},required:["command"]}}],x=v.Ik({path:v.Yj().min(1)}),y=v.Ik({path:v.Yj().min(1),content:v.Yj()}),z=v.Ik({path:v.Yj().min(1).default(".")}),A=v.Ik({command:v.Yj().min(1),timeout_seconds:v.ai().positive().max(600).optional()});function B(a,b){let c=u().resolve(a),d=u().resolve(c,b);if(d!==c&&!d.startsWith(c+u().sep))throw Error(`path escapes the worktree: ${b}`);return d}function C(a,b){return a.length<=b?a:`${a.slice(0,b)}
|
|
2
2
|
… [truncated ${a.length-b} characters]`}let D={PATH:process.env.PATH??"",HOME:process.env.HOME??"",TMPDIR:process.env.TMPDIR,TEMP:process.env.TEMP,TMP:process.env.TMP,LANG:process.env.LANG,NODE_ENV:"production"},E=async(a,b,c)=>{let d;try{d=""===a.arguments.trim()?{}:JSON.parse(a.arguments)}catch{return{content:`malformed JSON arguments for ${a.name}`,isError:!0}}try{switch(a.name){case"read_file":{let{path:a}=x.parse(d),c=await (0,s.readFile)(B(b,a),"utf8");return{content:C(c,48e3),isError:!1}}case"write_file":{let{path:a,content:c}=y.parse(d),e=B(b,a);return await (0,s.mkdir)(u().dirname(e),{recursive:!0}),await (0,s.writeFile)(e,c,"utf8"),{content:`wrote ${c.length} characters to ${a}`,isError:!1}}case"list_dir":{let{path:a}=z.parse(d),c=await (0,s.readdir)(B(b,a),{withFileTypes:!0}),e=c.slice(0,500).map(a=>a.isDirectory()?`${a.name}/`:a.name);return c.length>500&&e.push(`… [${c.length-500} more entries]`),{content:e.join("\n"),isError:!1}}case"run_command":{var e;let{command:a,timeout_seconds:f}=A.parse(d);if(c?.timeoutMs!==void 0&&c.timeoutMs<=0)return{content:"command skipped: session budget exhausted",isError:!0};let g=c?.timeoutMs!==void 0?Math.max(1,Math.ceil(c.timeoutMs/1e3)):1/0,h=Math.min(f??120,g),i=await (e=c?.signal,new Promise(c=>{(0,r.exec)(a,{cwd:b,env:D,timeout:1e3*h,killSignal:"SIGKILL",maxBuffer:8388608,signal:e},(a,b,d)=>{let f=null!==a&&!0===a.killed,g=e?.aborted===!0,h=null===a?0:a.code??1;c({exitCode:"number"==typeof h?h:1,stdout:String(b),stderr:String(d),timedOut:f||g})})})),j=C(`exit code: ${i.exitCode}
|
|
3
3
|
stdout:
|
|
4
4
|
${i.stdout}
|
|
5
5
|
stderr:
|
|
6
6
|
${i.stderr}`,24e3);if(i.timedOut)return{content:`command timed out after ${h}s
|
|
7
|
-
${j}`,isError:!0};return{content:j,isError:0!==i.exitCode}}default:return{content:`unknown tool: ${a.name}`,isError:!0}}}catch(a){return{content:a instanceof Error?a.message:String(a),isError:!0}}};async function F(a,b,c,r={}){let s,t,u=r.db??(0,g.Lf)(),v=r.broker??(0,n.k)(),x=(0,m.mt)(u),y=r.toolExecutor??E,z=(0,h.L8)(a.repoId,u),A=a.model??z?.defaultModel??x.openrouterDefaultModel,B={costUsd:0,inputTokens:0,outputTokens:0,timedOut:!1,costExceeded:!1},C=(0,k.nc)("openrouter",u);if(C)return v.publish(a.id,{type:"error",payload:{stderr:`session not started: OpenRouter is limit-blocked (${C.kind}) until ${new Date(1e3*C.blockedUntil).toISOString()}`}}),{exitCode:-3,...B,limit:{agent:"openrouter",kind:C.kind,resetAt:C.blockedUntil,rawSnippet:C.rawSnippet,latched:!0}};let D=function(a,b,c,d){if(!c.openrouterEnabled)return{message:"OpenRouter backend is disabled — enable it in Settings before use"};if(!(0,q.t)(c))return{message:"no OpenRouter API key configured — set it in Settings or via DRYDOCK_OPENROUTER_API_KEY"};if(!b)return{message:`job ${a.id} has no OpenRouter model — set one on the job, the repo, or settings.openrouterDefaultModel`};let e=(0,o.Hi)(b,d);return e&&(0,o.fj)(e)?e.supportsTools?c.openrouterFreeModelsOnly&&!e.isFree?{message:`OpenRouter model "${b}" is not free and the free-models-only policy is enabled`}:null:{message:`OpenRouter model "${b}" does not support tools — implementation sessions need a tool-capable model`}:{message:`OpenRouter model "${b}" is not in the synced catalog (or no longer available) — refresh the catalog in Settings or pick a different model`}}(a,A,x,u);if(D)return v.publish(a.id,{type:"error",payload:{stderr:D.message}}),{exitCode:1,...B,spawnError:Error(D.message)};r.sideSession||r.additive||("working"!==a.status?(0,j.dk)(a.id,"working",{model:A},u):u.update(i.jobs).set({model:A}).where((0,d.eq)(i.jobs.id,a.id)).run());let G=r.maxTurns??a.maxTurns,H=(0,q.t)(x),I=[{role:"system",content:"You are Drydock's autonomous coding agent working inside a git worktree; all tool paths are relative to the repository root. Make the requested changes by reading and writing files and running commands (tests, linters, builds). Do not commit, push, branch, or open pull requests — the orchestrator handles all git operations after you finish. When the task is complete, reply with a short summary of what you changed."},{role:"user",content:b}],J=r.timeoutMs&&r.timeoutMs>0?Date.now()+r.timeoutMs:1/0,K=new AbortController;(0,l.registerAbort)(a.id,()=>K.abort()),Number.isFinite(J)&&r.timeoutMs&&(s=setTimeout(()=>K.abort(),r.timeoutMs),s.unref?.());let L=0,M=0,N=0,O=0,P=!1,
|
|
7
|
+
${j}`,isError:!0};return{content:j,isError:0!==i.exitCode}}default:return{content:`unknown tool: ${a.name}`,isError:!0}}}catch(a){return{content:a instanceof Error?a.message:String(a),isError:!0}}};async function F(a,b,c,r={}){let s,t,u=r.db??(0,g.Lf)(),v=r.broker??(0,n.k)(),x=(0,m.mt)(u),y=r.toolExecutor??E,z=(0,h.L8)(a.repoId,u),A=a.model??z?.defaultModel??x.openrouterDefaultModel,B={costUsd:0,inputTokens:0,outputTokens:0,timedOut:!1,costExceeded:!1,maxTurnsReached:!1},C=(0,k.nc)("openrouter",u);if(C)return v.publish(a.id,{type:"error",payload:{stderr:`session not started: OpenRouter is limit-blocked (${C.kind}) until ${new Date(1e3*C.blockedUntil).toISOString()}`}}),{exitCode:-3,...B,limit:{agent:"openrouter",kind:C.kind,resetAt:C.blockedUntil,rawSnippet:C.rawSnippet,latched:!0}};let D=function(a,b,c,d){if(!c.openrouterEnabled)return{message:"OpenRouter backend is disabled — enable it in Settings before use"};if(!(0,q.t)(c))return{message:"no OpenRouter API key configured — set it in Settings or via DRYDOCK_OPENROUTER_API_KEY"};if(!b)return{message:`job ${a.id} has no OpenRouter model — set one on the job, the repo, or settings.openrouterDefaultModel`};let e=(0,o.Hi)(b,d);return e&&(0,o.fj)(e)?e.supportsTools?c.openrouterFreeModelsOnly&&!e.isFree?{message:`OpenRouter model "${b}" is not free and the free-models-only policy is enabled`}:null:{message:`OpenRouter model "${b}" does not support tools — implementation sessions need a tool-capable model`}:{message:`OpenRouter model "${b}" is not in the synced catalog (or no longer available) — refresh the catalog in Settings or pick a different model`}}(a,A,x,u);if(D)return v.publish(a.id,{type:"error",payload:{stderr:D.message}}),{exitCode:1,...B,spawnError:Error(D.message)};r.sideSession||r.additive||("working"!==a.status?(0,j.dk)(a.id,"working",{model:A},u):u.update(i.jobs).set({model:A}).where((0,d.eq)(i.jobs.id,a.id)).run());let G=r.maxTurns??a.maxTurns,H=(0,q.t)(x),I=[{role:"system",content:"You are Drydock's autonomous coding agent working inside a git worktree; all tool paths are relative to the repository root. Make the requested changes by reading and writing files and running commands (tests, linters, builds). Do not commit, push, branch, or open pull requests — the orchestrator handles all git operations after you finish. When the task is complete, reply with a short summary of what you changed."},{role:"user",content:b}],J=r.timeoutMs&&r.timeoutMs>0?Date.now()+r.timeoutMs:1/0,K=new AbortController;(0,l.registerAbort)(a.id,()=>K.abort()),Number.isFinite(J)&&r.timeoutMs&&(s=setTimeout(()=>K.abort(),r.timeoutMs),s.unref?.());let L=r.sideSession||r.additive?u.select().from(i.jobs).where((0,d.eq)(i.jobs.id,a.id)).get()??null:null,M=L?.totalInputTokens??0,N=L?.totalOutputTokens??0,O=L?.costUsd??0,P=0,Q=0,R=0,S=0,T=!1,U=!1;try{let b=0;for(;;){if(J-Date.now()<=0){T=!0,S=-1,v.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${r.timeoutMs}ms`}});break}if(K.signal.aborted){S=1,v.publish(a.id,{type:"error",payload:{stderr:"session aborted"}});break}if(G>0&&b>=G){S=1,v.publish(a.id,{type:"error",payload:{stderr:`OpenRouter session exhausted its ${G}-turn budget`}});break}b+=1;let d=await (0,p.x8)({apiKey:H,model:A,messages:I,tools:w,siteUrl:x.openrouterSiteUrl||void 0,appName:x.openrouterAppName||void 0,fetchImpl:r.fetchImpl,signal:K.signal});Q+=d.usage.promptTokens,R+=d.usage.completionTokens,P+=d.usage.costUsd>0?d.usage.costUsd:(0,o.hz)(A,d.usage.promptTokens,d.usage.completionTokens,u);let e=[];for(let a of(d.text&&e.push({kind:"text",text:d.text}),d.toolCalls)){let b=a.arguments;try{b=JSON.parse(a.arguments)}catch{}e.push({kind:"tool_use",name:a.name,id:a.id,input:b})}if(e.length>0&&v.publish(a.id,{type:"assistant",payload:{chunks:e,costUsd:O+P,inputTokens:M+Q,outputTokens:N+R}}),r.costCapUsd&&r.costCapUsd>0&&P>=r.costCapUsd){U=!0,S=-2,v.publish(a.id,{type:"error",payload:{stderr:`session aborted: per-job cost limit of $${r.costCapUsd} reached`}});break}if("tool_calls"!==d.finishReason||0===d.toolCalls.length)break;for(let b of(I.push({role:"assistant",content:d.text,toolCalls:d.toolCalls}),d.toolCalls)){let d=await y(b,c,{signal:K.signal,timeoutMs:Number.isFinite(J)?Math.max(1,J-Date.now()):void 0});if(K.signal.aborted){I.push({role:"tool",content:"ERROR: session aborted",toolCallId:b.id});break}v.publish(a.id,{type:"user",payload:{chunks:[{kind:"tool_result",toolUseId:b.id,isError:d.isError}]}}),I.push({role:"tool",content:d.isError?`ERROR: ${d.content}`:d.content,toolCallId:b.id})}}}catch(b){K.signal.aborted&&J<=Date.now()?(T=!0,S=-1,v.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${r.timeoutMs}ms`}})):b instanceof p.Sv?(S=1,t=(0,f.t)(b),v.publish(a.id,{type:"error",payload:{stderr:b.message.slice(0,2e3)}})):(S=1,v.publish(a.id,{type:"error",payload:{stderr:b instanceof Error?b.message:String(b)}}))}finally{s&&clearTimeout(s),(0,l.clearAbort)(a.id)}return r.sideSession||r.additive?u.update(i.jobs).set({totalInputTokens:(0,e.ll)`coalesce(${i.jobs.totalInputTokens}, 0) + ${Q}`,totalOutputTokens:(0,e.ll)`coalesce(${i.jobs.totalOutputTokens}, 0) + ${R}`,costUsd:(0,e.ll)`coalesce(${i.jobs.costUsd}, 0) + ${P}`}).where((0,d.eq)(i.jobs.id,a.id)).run():u.update(i.jobs).set({totalInputTokens:Q,totalOutputTokens:R,costUsd:P}).where((0,d.eq)(i.jobs.id,a.id)).run(),{exitCode:S,costUsd:P,inputTokens:Q,outputTokens:R,timedOut:T,costExceeded:U,maxTurnsReached:!1,limit:t}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=668,exports.ids=[668],exports.modules={26287:(a,b,c)=>{c.d(b,{E:()=>e,_:()=>d});let d={main:"default",ciFix:"ci-fix",plan:"plan",limitResume:"limit-resume",turnResume:"turn-resume",humanResume:"human-resume",prFormat:"pr-format",release:"release"},e={default:'You are a senior engineer working on GitHub issue #$ISSUE_NUM in the\nrepository "$REPO_NAME". You are on branch "$BRANCH". Implement the change the\nissue asks for to a professional, production-ready standard.\n\nIssue title: $ISSUE_TITLE\n\nIssue body:\n$ISSUE_BODY\n\nRead the context before you change anything. Skim the repo\'s `CLAUDE.md`,\n`AGENTS.md`, and `README` (whichever exist), the code next to what you are\ntouching, and any similar existing implementation. Match the surrounding\ncode\'s conventions — its naming, structure, error handling, and test style —\nrather than imposing your own.\n\nWork test-first. Write a failing test that captures the requirement, then\nimplement the minimal code to make it green, then refactor while it stays\ngreen. For a bug, first add a test that reproduces it (red), then fix it.\nCover the happy path, the edge cases, and the error cases. Never weaken,\ndisable, or delete a test to make the suite pass.\n\nUpdate the docs when behaviour, APIs, or configuration change — but only when\nthere is something to update, and following the repo\'s existing docs\nconventions. Do not churn docs gratuitously.\n\nVerify before you finish. Run the repo\'s tests, typecheck, lint, and build,\nand do not finish on a red signal: fix what you broke. If a check is genuinely\nblocked by something only a human can decide, use the `.drydock/QUESTIONS.md`\nchannel below rather than leaving the change broken.\n\nKeep the change minimal and reversible, and scoped to the issue. Never weaken\nauthentication, security, or tests to make something pass; if the issue seems\nto require that, stop and ask via `.drydock/QUESTIONS.md`.\n\nKeep the change focused. Split your work into focused, thematic commits as\nyou go: group changes by concern and give each commit a clear Conventional\nCommit subject (`type(scope): summary`). Do not dump everything into one\nmega-commit. Never add AI attribution to a commit: no `Co-Authored-By` trailer\nnaming an assistant, no `Generated with Claude Code` line, and no mention of\nthe tool or model anywhere in the message. Do not push or open a pull request\nyourself; Drydock pushes the branch and opens the PR, committing any changes\nyou leave uncommitted.\n\nBefore you finish, write a file `.drydock/PR.md` describing the change for the\npull request. The first line is a Conventional Commit subject (used as the\ncommit message and PR title), then a blank line, then a body in this format:\n\n$PR_FORMAT\n\nDrydock reads this file, appends `Closes #$ISSUE_NUM` to the body, and removes\nthe file — do not commit it.\n\nIf — and only if — you hit a decision that a human must make and you genuinely\ncannot proceed, write your open questions to `.drydock/QUESTIONS.md` instead of\nguessing. Commit any partial, safe work first; do not commit that file. Drydock\nthen preserves your branch, hands the questions to a human, and parks the job\ninstead of opening a PR. Use this only for true blockers — not for routine\nchoices you can reasonably make yourself.\n\nWhenever you consciously leave something out of scope ("this should be a\nseparate issue / follow-up / different PR"), append a follow-up to\n`.drydock/FOLLOWUPS.md` instead of only noting it in the PR. Use a `## ` heading\nper item: the heading is a clear Conventional-style issue title, and the lines\nbelow it are the body — context, rationale, and acceptance criteria. Drydock\nopens a real issue for each, links them from the PR, and removes the file — do\nnot commit it.',"ci-fix":"CI failed. Diagnose the root cause from the log below and fix it at the\nsource — keep the change minimal and focused on the failure. Re-run the\nrelevant check (tests, typecheck, lint, or build) to confirm it is green\nbefore finishing. Do not delete, skip, weaken, or disable tests, and do not\nloosen types or lint rules just to silence the failure.\n\nFailed CI log:\n$CI_LOG",plan:'You are working on GitHub issue #$ISSUE_NUM in the repository "$REPO_NAME".\n\nIssue title: $ISSUE_TITLE\n\nIssue body:\n$ISSUE_BODY\n\nDo not change any files. First read the repo\'s conventions (`CLAUDE.md`/\n`AGENTS.md` if present) and the existing patterns near the code you would\ntouch. Then produce a concise, step-by-step implementation plan for the issue:\nthe files to touch, the change in each, the order to make them, the tests to\nwrite first (test-driven), and how to verify the result (tests, typecheck,\nlint, build). Reply with the plan only — no preamble.',"limit-resume":'Your previous session on issue #$ISSUE_NUM in "$REPO_NAME" was interrupted by a usage limit.\nYou are resuming in a fresh checkout of branch "$BRANCH"; any uncommitted changes from the\ninterrupted session are gone. Re-apply whatever is missing and finish implementing the issue.\nFollow the repo\'s conventions (`CLAUDE.md`/`AGENTS.md`, neighbouring code) and keep working\ntest-first: a failing test that captures the requirement, then the code to make it green.\nBefore you finish, verify: run the repo\'s tests, typecheck, lint, and build, and do not\nfinish on a red signal. Never weaken or delete a test to make the suite pass.\nKeep the change focused. Split your work into focused, thematic commits, each with a clear\nConventional Commit subject (`type(scope): summary`) grouped by concern — not one mega-commit.\nNever add AI attribution to a commit: no `Co-Authored-By` trailer naming an assistant, no\n`Generated with Claude Code` line, and no mention of the tool or model in the message.\nDo not push or open a pull request yourself; Drydock pushes and opens the PR, committing\nanything you leave uncommitted.\nBefore finishing, write `.drydock/PR.md`: first line a Conventional Commit subject (used as\nthe commit message and PR title), then a blank line, then a body in this format:\n\n$PR_FORMAT\n\nDrydock appends `Closes #$ISSUE_NUM` and removes the file — do not commit it.',"turn-resume":'Your previous session on issue #$ISSUE_NUM in "$REPO_NAME" was paused because it reached its\nturn budget. You are resuming on branch "$BRANCH" with your conversation context and any\nuncommitted edits from the interrupted session still in place — just continue from where you\nleft off and finish implementing the issue. Follow the repo\'s conventions (`CLAUDE.md`/\n`AGENTS.md`, neighbouring code) and keep working test-first: a failing test that captures the\nrequirement, then the code to make it green. Before you finish, verify: run the repo\'s tests,\ntypecheck, lint, and build, and do not finish on a red signal. Never weaken or delete a test\nto make the suite pass. Keep the change focused. Split your work into focused, thematic\ncommits, each with a clear Conventional Commit subject (`type(scope): summary`) grouped by\nconcern — not one mega-commit. Never add AI attribution to a commit: no `Co-Authored-By`\ntrailer naming an assistant, no `Generated with Claude Code` line, and no mention of the tool\nor model in the message. Do not push or open a pull request yourself; Drydock pushes and opens\nthe PR, committing anything you leave uncommitted.\nBefore finishing, write `.drydock/PR.md`: first line a Conventional Commit subject (used as\nthe commit message and PR title), then a blank line, then a body in this format:\n\n$PR_FORMAT\n\nDrydock appends `Closes #$ISSUE_NUM` and removes the file — do not commit it.',"human-resume":'Your previous session on issue #$ISSUE_NUM in "$REPO_NAME" was paused for a human to review.\nA human has looked at where you got stuck and given you this instruction:\n\n$INSTRUCTION\n\nYou are resuming on branch "$BRANCH" with your prior commits intact. Follow the instruction\nabove to get unblocked and finish implementing the issue. Keep the change focused. You may\ncommit your work or leave it uncommitted — either is fine. Do not push or open a pull request\nyourself; Drydock commits, pushes, and opens the PR.\nBefore finishing, write `.drydock/PR.md`: first line a Conventional Commit subject (used as\nthe commit message and PR title), then a blank line, then a body in this format:\n\n$PR_FORMAT\n\nDrydock appends `Closes #$ISSUE_NUM` and removes the file — do not commit it.',release:'You are cutting a release for the repository "$REPO_NAME". You are in a clean\ncheckout on the throwaway branch "$BRANCH" (cut from "$DEFAULT_BRANCH"). You have\nfull shell access: git, gh, and the repo\'s tooling are available and already\nauthenticated. Whatever you do not push or trigger yourself is discarded.\n\nGoal: discover how THIS repository releases and perform that release end-to-end.\n\n1. Investigate the release mechanism. Read the CI workflows (.github/workflows),\n package.json scripts, release-please / changesets / semantic-release config,\n CHANGELOG, and the prior tags (`git tag`, `gh release list`). Determine how a\n release is normally cut here — e.g. a release-please `workflow_dispatch`, an\n `npm publish`, a tag + GitHub Release, or a changelog + tag convention.\n2. Determine the correct next version from the conventional-commit history and\n the existing tags. Do not guess a magnitude you cannot justify.\n3. Perform the release the way the repo expects: trigger the workflow, push the\n tag, open the release PR, or run the publish — using gh/git/the repo\'s own\n scripts. Prefer the repo\'s established path over inventing a new one.\n4. Verify the release actually started or completed (the workflow run, the tag,\n the GitHub Release, or the published package) before you finish. If\n verification shows the release failed or is incomplete, explain what went\n wrong in `.drydock/QUESTIONS.md` and stop rather than reporting success.\n\nWhen done, write a short `.drydock/RELEASE.md` in either form: start with a\n`Tag: <tag>` line (e.g. `Tag: v1.4.0`) followed by the release title, OR make the\nfirst line a version-looking title (e.g. `v1.4.0`) that doubles as the tag. Then a\nblank line, then notes on what you did. Do not commit this file — Drydock reads it\nto record the run, then removes it.\n\nIf — and only if — you are unsure how this repo releases, what version to cut, or\nwhether it is safe to proceed, do NOT guess: write your open questions to\n`.drydock/QUESTIONS.md` and stop without releasing. Drydock hands them to a human\nand parks the run. A botched release is far worse than a deferred one.',"pr-format":'A one-paragraph **TL;DR** summarising the change in plain language, then:\n\n## Problem\nWhat was wrong or missing, and why it mattered.\n\n## Solution\nWhat you changed and the key decisions behind it.\n\n## Tests\nWhat you added or ran to verify the change.\n\n## Risks\nAnything reviewers should watch for, or "None".'}},29668:(a,b,c)=>{c.d(b,{F1:()=>l,yO:()=>o,Xm:()=>k,XZ:()=>m,yx:()=>n});var d=c(97496),e=c(14694),f=c(29980),g=c(2025),h=c(64537),i=c(26287);let j=["$ISSUE_NUM","$ISSUE_TITLE","$ISSUE_BODY","$BRANCH","$REPO_NAME","$CI_LOG","$PR_FORMAT","$INSTRUCTION","$DEFAULT_BRANCH"];function k(a,b){let c={$ISSUE_NUM:void 0!==b.ISSUE_NUM?String(b.ISSUE_NUM):"$ISSUE_NUM",$ISSUE_TITLE:b.ISSUE_TITLE??"$ISSUE_TITLE",$ISSUE_BODY:b.ISSUE_BODY??"$ISSUE_BODY",$BRANCH:b.BRANCH??"$BRANCH",$REPO_NAME:b.REPO_NAME??"$REPO_NAME",$CI_LOG:b.CI_LOG??"$CI_LOG",$PR_FORMAT:b.PR_FORMAT??"$PR_FORMAT",$INSTRUCTION:b.INSTRUCTION??"$INSTRUCTION",$DEFAULT_BRANCH:b.DEFAULT_BRANCH??"$DEFAULT_BRANCH"},d=a;for(let a of[...j].sort((a,b)=>b.length-a.length))d=d.split(a).join(c[a]??a);return d}function l(a,b,c=(0,g.Lf)()){return c.select().from(h.promptTemplates).where((0,d.Uo)((0,d.eq)(h.promptTemplates.repoId,a),(0,d.eq)(h.promptTemplates.name,b))).orderBy((0,e.i)(h.promptTemplates.version)).get()}function m(a,b,c=(0,g.Lf)()){let d=l(a,b,c);return d?{content:d.content,version:d.version}:{content:i.E[b]??"",version:null}}function n(a,b,c=(0,g.Lf)()){return m(a,b,c).content}function o(a,b,c=(0,g.Lf)()){return c.select().from(h.promptTemplates).where((0,d.Uo)((0,d.eq)(h.promptTemplates.repoId,a),(0,d.eq)(h.promptTemplates.name,b))).orderBy((0,e.i)(h.promptTemplates.version)).all()}f.Ik({repoId:f.ai().int().positive(),name:f.Yj().min(1),content:f.Yj()})}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=786,exports.ids=[786],exports.modules={12517:(a,b,c)=>{c.d(b,{a:()=>R});var d=c(27905),e=c(64261);let f={"claude-fable-5":{inputPerMTok:10,outputPerMTok:50,cacheWritePerMTok:12.5,cacheReadPerMTok:1},"claude-opus-4-8":{inputPerMTok:5,outputPerMTok:25,cacheWritePerMTok:6.25,cacheReadPerMTok:.5},"claude-opus-4-7":{inputPerMTok:5,outputPerMTok:25,cacheWritePerMTok:6.25,cacheReadPerMTok:.5},"claude-sonnet-4-6":{inputPerMTok:3,outputPerMTok:15,cacheWritePerMTok:3.75,cacheReadPerMTok:.3},"claude-sonnet-4-5":{inputPerMTok:3,outputPerMTok:15,cacheWritePerMTok:3.75,cacheReadPerMTok:.3},"claude-haiku-4-5":{inputPerMTok:1,outputPerMTok:5,cacheWritePerMTok:1.25,cacheReadPerMTok:.1}},g=Object.values(f).reduce((a,b)=>b.outputPerMTok>a.outputPerMTok?b:a,{inputPerMTok:0,outputPerMTok:0,cacheWritePerMTok:0,cacheReadPerMTok:0});var h=c(64760);let i=h.Ik({input_tokens:h.ai().optional(),output_tokens:h.ai().optional(),cache_creation_input_tokens:h.ai().optional(),cache_read_input_tokens:h.ai().optional()}).passthrough(),j=h.Ik({type:h.eu("system"),subtype:h.Yj().optional(),session_id:h.Yj().optional(),model:h.Yj().optional()}),k=h.Ik({type:h.eu("assistant"),message:h.Ik({role:h.eu("assistant"),content:h.YO(h.g1(h.Yj(),h.L5())),usage:i.optional()})}),l=h.Ik({type:h.eu("user"),message:h.Ik({role:h.eu("user"),content:h.YO(h.g1(h.Yj(),h.L5()))})}),m=h.Ik({status:h.Yj().optional(),resetsAt:h.ai().optional(),rateLimitType:h.Yj().optional()}).passthrough(),n=h.Ik({type:h.eu("rate_limit_event"),rate_limit_info:m.optional(),session_id:h.Yj().optional()}),o=h.Ik({type:h.eu("result"),subtype:h.Yj().optional(),session_id:h.Yj().optional(),is_error:h.zM().optional(),result:h.Yj().optional(),total_cost_usd:h.ai().optional(),usage:i.optional()}),p=h.gM("type",[j,k,l,n,o]);function q(a){return a instanceof Error?a.message:String(a)}function r(a){let b=[];for(let c of a)"text"===c.type&&"string"==typeof c.text?b.push({kind:"text",text:c.text}):"tool_use"===c.type?b.push({kind:"tool_use",name:String(c.name??"unknown"),id:String(c.id??""),input:c.input}):"tool_result"===c.type&&b.push({kind:"tool_result",toolUseId:String(c.tool_use_id??""),isError:!!c.is_error});return b}class s{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){var b;let c,d=a.trim();if(!d)return null;let e=JSON.parse(d);return c={type:(b=p.parse(e)).type,chunks:[],inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,isError:!1,raw:b},"system"===b.type?(c.sessionId=b.session_id,c.model=b.model):"assistant"===b.type?(c.chunks=r(b.message.content),c.inputTokens=b.message.usage?.input_tokens??0,c.outputTokens=b.message.usage?.output_tokens??0,c.cacheCreationInputTokens=b.message.usage?.cache_creation_input_tokens??0,c.cacheReadInputTokens=b.message.usage?.cache_read_input_tokens??0):"user"===b.type?c.chunks=r(b.message.content):"rate_limit_event"===b.type?(c.sessionId=b.session_id,c.rateLimitInfo=b.rate_limit_info):(c.sessionId=b.session_id,c.resultText=b.result,c.costUsd=b.total_cost_usd,c.inputTokens=b.usage?.input_tokens??0,c.outputTokens=b.usage?.output_tokens??0,c.cacheCreationInputTokens=b.usage?.cache_creation_input_tokens??0,c.cacheReadInputTokens=b.usage?.cache_read_input_tokens??0,c.isError=b.is_error??!1),c}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:q(b)}),null}return b?(b.sessionId&&(this.sessionId=b.sessionId),b.model&&(this.model=b.model),b.rateLimitInfo&&(this.rateLimit=b.rateLimitInfo),"result"===b.type?(b.inputTokens>0&&(this.totalInputTokens=b.inputTokens),b.outputTokens>0&&(this.totalOutputTokens=b.outputTokens),b.cacheCreationInputTokens>0&&(this.totalCacheCreationInputTokens=b.cacheCreationInputTokens),b.cacheReadInputTokens>0&&(this.totalCacheReadInputTokens=b.cacheReadInputTokens),void 0!==b.costUsd&&(this.costUsd=b.costUsd),void 0!==b.resultText&&(this.resultText=b.resultText),this.resultIsError=b.isError):(this.totalInputTokens+=b.inputTokens,this.totalOutputTokens+=b.outputTokens,this.totalCacheCreationInputTokens+=b.cacheCreationInputTokens,this.totalCacheReadInputTokens+=b.cacheReadInputTokens),b):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.totalCacheCreationInputTokens=0,this.totalCacheReadInputTokens=0,this.costUsd=0,this.resultIsError=!1}}let t="[REDACTED]",u=[/\bgh[pousr]_[A-Za-z0-9]{36,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{50,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/(Bearer )[A-Za-z0-9._~+/-]+=*/g,/(https?:\/\/)[^\s/@:"\\]+:[^\s/@"\\]+(?=@)/g,/(PRIVATE-TOKEN:\s*)[^\s"\\]+/gi,/(Basic )[A-Za-z0-9+/]+=*/g,/\b(?:AKIA|ASIA|AGPA|AIDA|ANPA|AROA)[0-9A-Z]{16}\b/g,/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,/\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/g,/\d{8,10}:[A-Za-z0-9_-]{35}\b/g];function v(a){let b=a;for(let a of u)b=b.replace(a,(a,b)=>"string"==typeof b?`${b}${t}`:t);return b}let w=[{kind:"auth",pattern:/invalid api key/i},{kind:"auth",pattern:/please run \/login/i},{kind:"auth",pattern:/authentication_error/i},{kind:"auth",pattern:/api error:?\s*401\b/i},{kind:"auth",pattern:/oauth token (?:has )?(?:expired|been revoked)/i},{kind:"billing",pattern:/credit balance is too low/i},{kind:"billing",pattern:/billing_error/i},{kind:"usage_limit",pattern:/usage limit reached/i},{kind:"usage_limit",pattern:/\b(?:\d+-hour|session|weekly) limit reached/i},{kind:"usage_limit",pattern:/limit will reset at/i},{kind:"rate_limit",pattern:/rate.?limit_error/i},{kind:"rate_limit",pattern:/api error:?\s*429\b/i},{kind:"rate_limit",pattern:/too many requests/i},{kind:"rate_limit",pattern:/\brate.?limit(?:ed)?\b.{0,60}\b(?:exceeded|reached|hit)\b/i},{kind:"rate_limit",pattern:/\b(?:exceeded|reached|hit)\b.{0,60}\brate.?limit/i},{kind:"overloaded",pattern:/overloaded_error/i},{kind:"overloaded",pattern:/api error:?\s*529\b/i}],x=/limit reached\|(\d{9,12})\b/i,y=/retry[- ]?after[:\s]+(\d+)\s*(?:s|sec|second)/i,z=[{kind:"auth",pattern:/unexpected status 401\b/i},{kind:"auth",pattern:/\b401 unauthorized\b/i},{kind:"auth",pattern:/access token could not be refreshed/i},{kind:"auth",pattern:/please log out and sign in again/i},{kind:"auth",pattern:/\bnot logged in\b/i},{kind:"auth",pattern:/(?:chatgpt|api key) login is required/i},{kind:"auth",pattern:/missing environment variable.{0,5}OPENAI_API_KEY/i},{kind:"auth",pattern:/re-?run `?codex login`?/i},{kind:"billing",pattern:/quota exceeded\. check your plan and billing/i},{kind:"billing",pattern:/insufficient_quota/i},{kind:"billing",pattern:/exceeded your current quota/i},{kind:"billing",pattern:/\bout of credits\b/i},{kind:"billing",pattern:/\bspend cap\b/i},{kind:"billing",pattern:/to use codex with your chatgpt plan/i},{kind:"usage_limit",pattern:/you.?ve hit your usage limit/i},{kind:"usage_limit",pattern:/usage_limit_reached/i},{kind:"rate_limit",pattern:/rate.?limit_exceeded/i},{kind:"rate_limit",pattern:/rate limit reached for/i},{kind:"rate_limit",pattern:/last status:?\s*429\b/i},{kind:"rate_limit",pattern:/unexpected status 429\b/i},{kind:"rate_limit",pattern:/too many requests/i},{kind:"overloaded",pattern:/selected model is at capacity/i},{kind:"overloaded",pattern:/currently experiencing high demand/i},{kind:"overloaded",pattern:/server_is_overloaded/i},{kind:"overloaded",pattern:/last status:?\s*5\d\d\b/i},{kind:"overloaded",pattern:/unexpected status 5\d\d\b/i}],A=/try again in ([\d.]+)\s*s(?:ec(?:ond)?s?)?\b/i,B="gpt-5-codex",C={"gpt-5-codex":{inputPerMTok:1.25,outputPerMTok:10,cacheWritePerMTok:0,cacheReadPerMTok:0},"gpt-5":{inputPerMTok:1.25,outputPerMTok:10,cacheWritePerMTok:0,cacheReadPerMTok:0},"gpt-5-mini":{inputPerMTok:.25,outputPerMTok:2,cacheWritePerMTok:0,cacheReadPerMTok:0}},D=Object.values(C).reduce((a,b)=>b.outputPerMTok>a.outputPerMTok?b:a,{inputPerMTok:0,outputPerMTok:0,cacheWritePerMTok:0,cacheReadPerMTok:0}),E=h.Ik({input_tokens:h.ai().optional(),cached_input_tokens:h.ai().optional(),output_tokens:h.ai().optional(),reasoning_output_tokens:h.ai().optional()}).passthrough(),F=h.Ik({used_percent:h.ai().optional(),window_minutes:h.ai().optional(),resets_in_seconds:h.ai().optional()}).passthrough(),G=h.Ik({primary:F.nullish(),secondary:F.nullish()}).passthrough(),H=h.Ik({id:h.Yj().optional(),item_type:h.Yj().optional(),text:h.Yj().optional(),command:h.Yj().optional(),exit_code:h.ai().optional(),server:h.Yj().optional(),tool:h.Yj().optional()}).passthrough(),I=h.Ik({type:h.Yj(),thread_id:h.Yj().optional(),usage:E.optional(),rate_limits:G.nullish(),item:H.optional(),error:h.Ik({message:h.Yj().optional()}).passthrough().optional(),message:h.Yj().optional()}).passthrough();function J(a){if(a&&"number"==typeof a.used_percent)return{usedPercent:a.used_percent,windowMinutes:a.window_minutes,resetsInSeconds:a.resets_in_seconds}}class K{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){let b=a.trim();if(!b)return null;let c=JSON.parse(b);return I.parse(c)}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:q(b)}),null}if(!b)return null;let c=function(a){let b=G.nullish().safeParse(a.rate_limits);if(!b.success||!b.data)return;let c=J(b.data.primary),d=J(b.data.secondary);if(c||d)return{primary:c,secondary:d}}(b);if(c&&(this.rateLimits=c),"turn.failed"===b.type||"error"===b.type){this.resultIsError=!0;let a=b.error?.message??b.message;a&&(this.resultText=a)}else"turn.completed"===b.type&&(this.resultIsError=!1,this.resultText=void 0);let d=function(a){let b={type:"assistant",chunks:[],inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,isError:!1,raw:a};if("thread.started"===a.type)return{...b,type:"system",sessionId:a.thread_id};if("item.completed"===a.type&&a.item)return{...b,type:"assistant",chunks:function(a){let b=a.id??"";switch(a.item_type){case"assistant_message":case"reasoning":return a.text?[{kind:"text",text:a.text}]:[];case"command_execution":return[{kind:"tool_use",name:"command",id:b,input:{command:a.command,exit_code:a.exit_code}}];case"file_change":return[{kind:"tool_use",name:"edit",id:b,input:a}];case"mcp_tool_call":return[{kind:"tool_use",name:`${a.server??"mcp"}/${a.tool??"tool"}`,id:b,input:a}];default:return[]}}(a.item)};if("turn.completed"===a.type){let c=a.usage;return{...b,type:"result",inputTokens:c?.input_tokens??0,outputTokens:(c?.output_tokens??0)+(c?.reasoning_output_tokens??0)}}return"turn.failed"===a.type||"error"===a.type?{...b,type:"result",isError:!0}:null}(b);return d?(d.sessionId&&(this.sessionId=d.sessionId),this.totalInputTokens+=d.inputTokens,this.totalOutputTokens+=d.outputTokens,d):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.totalCacheCreationInputTokens=0,this.totalCacheReadInputTokens=0,this.costUsd=0}}let L=/openrouter http (\d{3})/i,M=/retry[- ]?after[:\s]+(\d+)\s*(?:s\b|sec|second)/i,N="openrouter is an HTTP provider; it has no CLI surface (dispatch on provider.kind)",O={claude:{id:"claude",label:"Claude Code",defaultCommand:"claude",supportsResume:!0,resumeModel:"claude-haiku-4-5",resumeMaxTurns:15,defaultModel:"claude-opus-4-8",buildStartArgs:({prompt:a,model:b,maxTurns:c})=>["-p",a,"--max-turns",String(c),"--permission-mode","acceptEdits","--model",b,"--output-format","stream-json","--verbose"],buildResumeArgs:({prompt:a,sessionId:b,model:c,maxTurns:d})=>["-p",a,"--resume",b,"--max-turns",String(d),"--model",c,"--output-format","stream-json","--verbose"],buildOneShotArgs:({prompt:a,model:b})=>["-p",a,"--model",b],buildStreamOneShotArgs:({prompt:a,model:b})=>["-p",a,"--model",b,"--output-format","stream-json","--verbose"],createParser:()=>new s,classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n");if(!c.trim())return;let d=w.find(a=>a.pattern.test(c));if(!d)return;let e={agent:"claude",kind:d.kind,rawSnippet:(b=d.pattern,v((c.split("\n").find(a=>b.test(a))??c).trim()).slice(0,300))};if("usage_limit"===d.kind){let a=c.match(x)?.[1];a&&(e.resetAt=Number(a))}if("rate_limit"===d.kind||"overloaded"===d.kind){let a=c.match(y)?.[1];a&&(e.retryAfterMs=1e3*Number(a))}return e},estimateCost:function(a,b,c,d=0,e=0){let h=function(a){if(!a)return g;let b=f[a];return b||(console.warn(`[drydock] Unknown model id "${a}" — using max-priced fallback to avoid under-counting cost`),g)}(a);return b/1e6*h.inputPerMTok+c/1e6*h.outputPerMTok+d/1e6*h.cacheWritePerMTok+e/1e6*h.cacheReadPerMTok}},codex:{id:"codex",label:"Codex CLI",defaultCommand:"codex",supportsResume:!0,resumeModel:B,resumeMaxTurns:15,defaultModel:B,buildStartArgs:({prompt:a,model:b})=>["exec","--json","--sandbox","workspace-write","--model",b,a],buildResumeArgs:({prompt:a,sessionId:b,model:c})=>["exec","resume",b,"--json","--sandbox","workspace-write","--model",c,a],buildOneShotArgs:({prompt:a,model:b})=>["exec","--model",b,a],buildStreamOneShotArgs:()=>null,createParser:()=>new K,classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n");if(!c.trim())return;let d=z.find(a=>a.pattern.test(c));if(!d)return;let e={agent:"codex",kind:d.kind,rawSnippet:(b=d.pattern,v((c.split("\n").find(a=>b.test(a))??c).trim()).slice(0,300))};if("rate_limit"===d.kind||"overloaded"===d.kind){let a=c.match(A)?.[1],b=a?Math.ceil(1e3*Number(a)):NaN;Number.isFinite(b)&&b>=0&&(e.retryAfterMs=b)}return e},captureUsage:a=>a instanceof K?a.rateLimits:void 0,estimateCost:function(a,b,c){let d=function(a){if(!a)return D;let b=C[a];return b||(console.warn(`[drydock] Unknown codex model id "${a}" — using max-priced fallback to avoid under-counting cost`),D)}(a);return b/1e6*d.inputPerMTok+c/1e6*d.outputPerMTok}},openrouter:{id:"openrouter",kind:"http",label:"OpenRouter",defaultCommand:"",supportsResume:!1,resumeModel:"",resumeMaxTurns:20,defaultModel:"",buildStartArgs(){throw Error(N)},buildResumeArgs:()=>null,buildOneShotArgs(){throw Error(N)},buildStreamOneShotArgs:()=>null,createParser(){throw Error(N)},classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n"),d=c.match(L)?.[1];if(!d)return;let e=(b=Number(d),401===b||403===b?"auth":402===b?"billing":429===b?/\b(?:free|daily|quota)\b/i.test(c)?"usage_limit":"rate_limit":408===b||b>=500&&b<600?"overloaded":void 0);if(!e)return;let f={agent:"openrouter",kind:e,rawSnippet:v((c.split("\n").find(a=>L.test(a))??c).trim()).slice(0,300)},g=c.match(M)?.[1];return g&&("rate_limit"===e||"overloaded"===e)&&(f.retryAfterMs=1e3*Number(g)),f},estimateCost:()=>0}},P=["claude","codex","openrouter"].map(a=>O[a]),Q=["claude","codex"];function R({value:a,onChange:b,id:c,className:f,agents:g=Q}){let h=P.filter(a=>g.includes(a.id));return(0,d.jsx)(e.l,{id:c,value:a,onChange:a=>b(a.target.value),className:f,children:h.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))})}},22842:(a,b,c)=>{c.d(b,{o:()=>g});var d=c(27905),e=c(64261),f=c(33721);function g({value:a,onChange:b,agent:c,openrouterModels:h=[],id:i,className:j}){if("openrouter"===c)return(0,d.jsxs)(e.l,{id:i,value:a,onChange:a=>b(a.target.value),className:j,children:[0===h.length&&(0,d.jsx)("option",{value:"",disabled:!0,children:"No synced models — refresh the catalog in Settings"}),h.length>0&&""!==a&&!h.some(b=>b.id===a)&&(0,d.jsxs)("option",{value:a,disabled:!0,children:[a," (no longer in catalog)"]}),h.map(a=>(0,d.jsx)("option",{value:a.id,children:a.isFree?`${a.label} (free)`:a.label},a.id))]});let k=c?(0,f.tT)(c):f.L6;return(0,d.jsx)(e.l,{id:i,value:a,onChange:a=>b(a.target.value),className:j,children:k.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))})}},24641:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("container",[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]])},33721:(a,b,c)=>{c.d(b,{L6:()=>d,UB:()=>e,VJ:()=>g,tT:()=>f});let d=[{id:"claude-opus-4-8",label:"Claude Opus 4.8",agent:"claude"},{id:"claude-fable-5",label:"Claude Fable 5",agent:"claude"},{id:"claude-opus-4-7",label:"Claude Opus 4.7",agent:"claude"},{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",agent:"claude"},{id:"claude-sonnet-4-5",label:"Claude Sonnet 4.5",agent:"claude"},{id:"claude-haiku-4-5",label:"Claude Haiku 4.5",agent:"claude"},{id:"gpt-5-codex",label:"GPT-5 Codex",agent:"codex"},{id:"gpt-5",label:"GPT-5",agent:"codex"},{id:"gpt-5-mini",label:"GPT-5 Mini",agent:"codex"}],e="claude-opus-4-8";function f(a){return d.filter(b=>b.agent===a)}function g(a){return"openrouter"===a?"":f(a)[0]?.id??e}},37913:(a,b,c)=>{c.d(b,{D:()=>g});var d=c(27905),e=c(5270);function f({htmlFor:a,className:b,children:c}){return(0,d.jsx)("label",{htmlFor:a,className:(0,e.cn)("text-sm font-medium text-foreground",b),children:c})}function g({label:a,hint:b,htmlFor:c,children:h,className:i}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",i),children:[a&&(0,d.jsx)(f,{htmlFor:c,children:a}),h,b&&(0,d.jsx)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:b})]})}},39906:(a,b,c)=>{c.d(b,{S:()=>g});var d=c(27905),e=c(43100),f=c(5270);function g({checked:a,onChange:b,disabled:c,id:h,className:i,"aria-label":j}){return(0,d.jsx)("button",{type:"button",role:"checkbox",id:h,"aria-checked":a,"aria-label":j,disabled:c,onClick:()=>!c&&b?.(!a),className:(0,f.cn)("flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[5px] border transition-colors focus-ring",a?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:border-muted-foreground",c&&"pointer-events-none opacity-50",i),children:a&&(0,d.jsx)(e.A,{className:"h-[13px] w-[13px]",strokeWidth:3})})}},43100:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},46305:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(30285).A)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},50050:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},54110:(a,b,c)=>{c.d(b,{y:()=>g});var d=c(27905),e=c(99506),f=c(5270);function g({size:a=16,className:b}){return(0,d.jsx)(e.A,{width:a,height:a,className:(0,f.cn)("dd-spin",b),"aria-hidden":!0})}},64261:(a,b,c)=>{c.d(b,{l:()=>h});var d=c(27905),e=c(50050),f=c(35924),g=c(5270);let h=f.forwardRef(({className:a,children:b,...c},f)=>(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("select",{ref:f,className:(0,g.cn)("h-9 w-full appearance-none cursor-pointer rounded-lg border border-input bg-background pl-3 pr-9 text-sm text-foreground","transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:b}),(0,d.jsx)(e.A,{className:"pointer-events-none absolute right-2.5 top-1/2 h-[15px] w-[15px] -translate-y-1/2 text-muted-foreground"})]}));h.displayName="Select"},77585:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(27905),e=c(35924),f=c(5270);let g=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("input",{ref:c,className:(0,f.cn)("h-9 w-full rounded-lg border border-input bg-background px-3 text-sm text-foreground","placeholder:text-muted-foreground transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...b}));g.displayName="Input"},83557:(a,b,c)=>{c.d(b,{d:()=>f});var d=c(27905),e=c(5270);function f({checked:a,onChange:b,disabled:c,id:g,"aria-label":h}){return(0,d.jsx)("button",{type:"button",role:"switch",id:g,"aria-checked":a,"aria-label":h,disabled:c,onClick:()=>!c&&b?.(!a),className:(0,e.cn)("relative inline-flex h-[22px] w-[38px] shrink-0 items-center rounded-full transition-colors focus-ring",a?"bg-primary":"bg-input",c&&"pointer-events-none opacity-50"),children:(0,d.jsx)("span",{className:(0,e.cn)("inline-block h-4 w-4 transform rounded-full bg-white shadow-sm transition-transform",a?"translate-x-[18px]":"translate-x-[3px]")})})}},94895:(a,b,c)=>{c.d(b,{z:()=>j});var d=c(87383),e=c(79874),f=c(77283),g=c.n(f),h=c(8578),i=c(25900);function j({title:a,subtitle:b,breadcrumb:c,actions:f,icon:k,className:l}){return(0,d.jsxs)("div",{className:(0,i.cn)("mb-6 flex flex-wrap items-end justify-between gap-4",l),children:[(0,d.jsxs)("div",{className:"min-w-0",children:[c&&c.length>0&&(0,d.jsx)("nav",{className:"mb-1.5 flex items-center gap-1.5 text-xs text-muted-foreground",children:c.map((a,b)=>(0,d.jsxs)(h.Fragment,{children:[b>0&&(0,d.jsx)(e.A,{className:"h-3 w-3 opacity-60","aria-hidden":!0}),a.href?(0,d.jsx)(g(),{href:a.href,className:"rounded transition-colors hover:text-foreground focus-ring",children:a.label}):(0,d.jsx)("span",{className:"text-foreground/80",children:a.label})]},a.href??a.label))}),(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[k&&(0,d.jsx)("span",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:(0,d.jsx)(k,{className:"h-[17px] w-[17px]"})}),(0,d.jsx)("h1",{className:"text-pretty text-2xl font-bold tracking-tight",children:a})]}),b&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:b})]}),f&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:f})]})}}};
|
|
1
|
+
"use strict";exports.id=786,exports.ids=[786],exports.modules={12517:(a,b,c)=>{c.d(b,{a:()=>S});var d=c(27905),e=c(64261);let f={"claude-fable-5":{inputPerMTok:10,outputPerMTok:50,cacheWritePerMTok:12.5,cacheReadPerMTok:1},"claude-opus-4-8":{inputPerMTok:5,outputPerMTok:25,cacheWritePerMTok:6.25,cacheReadPerMTok:.5},"claude-opus-4-7":{inputPerMTok:5,outputPerMTok:25,cacheWritePerMTok:6.25,cacheReadPerMTok:.5},"claude-sonnet-4-6":{inputPerMTok:3,outputPerMTok:15,cacheWritePerMTok:3.75,cacheReadPerMTok:.3},"claude-sonnet-4-5":{inputPerMTok:3,outputPerMTok:15,cacheWritePerMTok:3.75,cacheReadPerMTok:.3},"claude-haiku-4-5":{inputPerMTok:1,outputPerMTok:5,cacheWritePerMTok:1.25,cacheReadPerMTok:.1}},g=Object.values(f).reduce((a,b)=>b.outputPerMTok>a.outputPerMTok?b:a,{inputPerMTok:0,outputPerMTok:0,cacheWritePerMTok:0,cacheReadPerMTok:0});var h=c(64760);let i=h.Ik({input_tokens:h.ai().optional(),output_tokens:h.ai().optional(),cache_creation_input_tokens:h.ai().optional(),cache_read_input_tokens:h.ai().optional()}).passthrough(),j=h.Ik({type:h.eu("system"),subtype:h.Yj().optional(),session_id:h.Yj().optional(),model:h.Yj().optional()}),k=h.Ik({type:h.eu("assistant"),message:h.Ik({role:h.eu("assistant"),content:h.YO(h.g1(h.Yj(),h.L5())),usage:i.optional()})}),l=h.Ik({type:h.eu("user"),message:h.Ik({role:h.eu("user"),content:h.YO(h.g1(h.Yj(),h.L5()))})}),m=h.Ik({status:h.Yj().optional(),resetsAt:h.ai().optional(),rateLimitType:h.Yj().optional()}).passthrough(),n=h.Ik({type:h.eu("rate_limit_event"),rate_limit_info:m.optional(),session_id:h.Yj().optional()}),o=h.Ik({type:h.eu("result"),subtype:h.Yj().optional(),session_id:h.Yj().optional(),is_error:h.zM().optional(),result:h.Yj().optional(),total_cost_usd:h.ai().optional(),usage:i.optional()}),p=h.gM("type",[j,k,l,n,o]);function q(a){return a instanceof Error?a.message:String(a)}function r(a){let b=[];for(let c of a)"text"===c.type&&"string"==typeof c.text?b.push({kind:"text",text:c.text}):"tool_use"===c.type?b.push({kind:"tool_use",name:String(c.name??"unknown"),id:String(c.id??""),input:c.input}):"tool_result"===c.type&&b.push({kind:"tool_result",toolUseId:String(c.tool_use_id??""),isError:!!c.is_error});return b}class s{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){var b;let c,d=a.trim();if(!d)return null;let e=JSON.parse(d);return c={type:(b=p.parse(e)).type,chunks:[],inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,isError:!1,raw:b},"system"===b.type?(c.sessionId=b.session_id,c.model=b.model):"assistant"===b.type?(c.chunks=r(b.message.content),c.inputTokens=b.message.usage?.input_tokens??0,c.outputTokens=b.message.usage?.output_tokens??0,c.cacheCreationInputTokens=b.message.usage?.cache_creation_input_tokens??0,c.cacheReadInputTokens=b.message.usage?.cache_read_input_tokens??0):"user"===b.type?c.chunks=r(b.message.content):"rate_limit_event"===b.type?(c.sessionId=b.session_id,c.rateLimitInfo=b.rate_limit_info):(c.sessionId=b.session_id,c.resultText=b.result,c.resultSubtype=b.subtype,c.costUsd=b.total_cost_usd,c.inputTokens=b.usage?.input_tokens??0,c.outputTokens=b.usage?.output_tokens??0,c.cacheCreationInputTokens=b.usage?.cache_creation_input_tokens??0,c.cacheReadInputTokens=b.usage?.cache_read_input_tokens??0,c.isError=b.is_error??!1),c}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:q(b)}),null}return b?(b.sessionId&&(this.sessionId=b.sessionId),b.model&&(this.model=b.model),b.rateLimitInfo&&(this.rateLimit=b.rateLimitInfo),"result"===b.type?(b.inputTokens>0&&(this.totalInputTokens=b.inputTokens),b.outputTokens>0&&(this.totalOutputTokens=b.outputTokens),b.cacheCreationInputTokens>0&&(this.totalCacheCreationInputTokens=b.cacheCreationInputTokens),b.cacheReadInputTokens>0&&(this.totalCacheReadInputTokens=b.cacheReadInputTokens),void 0!==b.costUsd&&(this.costUsd=b.costUsd),void 0!==b.resultText&&(this.resultText=b.resultText),void 0!==b.resultSubtype&&(this.resultSubtype=b.resultSubtype),this.resultIsError=b.isError):(this.totalInputTokens+=b.inputTokens,this.totalOutputTokens+=b.outputTokens,this.totalCacheCreationInputTokens+=b.cacheCreationInputTokens,this.totalCacheReadInputTokens+=b.cacheReadInputTokens),b):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.totalCacheCreationInputTokens=0,this.totalCacheReadInputTokens=0,this.costUsd=0,this.resultIsError=!1}}let t="[REDACTED]",u=[/\bgh[pousr]_[A-Za-z0-9]{36,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{50,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/(Bearer )[A-Za-z0-9._~+/-]+=*/g,/(https?:\/\/)[^\s/@:"\\]+:[^\s/@"\\]+(?=@)/g,/(PRIVATE-TOKEN:\s*)[^\s"\\]+/gi,/(Basic )[A-Za-z0-9+/]+=*/g,/\b(?:AKIA|ASIA|AGPA|AIDA|ANPA|AROA)[0-9A-Z]{16}\b/g,/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,/\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/g,/\d{8,10}:[A-Za-z0-9_-]{35}\b/g];function v(a){let b=a;for(let a of u)b=b.replace(a,(a,b)=>"string"==typeof b?`${b}${t}`:t);return b}let w=[{kind:"auth",pattern:/invalid api key/i},{kind:"auth",pattern:/please run \/login/i},{kind:"auth",pattern:/authentication_error/i},{kind:"auth",pattern:/api error:?\s*401\b/i},{kind:"auth",pattern:/oauth token (?:has )?(?:expired|been revoked)/i},{kind:"billing",pattern:/credit balance is too low/i},{kind:"billing",pattern:/billing_error/i},{kind:"usage_limit",pattern:/usage limit reached/i},{kind:"usage_limit",pattern:/\b(?:\d+-hour|session|weekly) limit reached/i},{kind:"usage_limit",pattern:/limit will reset at/i},{kind:"rate_limit",pattern:/rate.?limit_error/i},{kind:"rate_limit",pattern:/api error:?\s*429\b/i},{kind:"rate_limit",pattern:/too many requests/i},{kind:"rate_limit",pattern:/\brate.?limit(?:ed)?\b.{0,60}\b(?:exceeded|reached|hit)\b/i},{kind:"rate_limit",pattern:/\b(?:exceeded|reached|hit)\b.{0,60}\brate.?limit/i},{kind:"overloaded",pattern:/overloaded_error/i},{kind:"overloaded",pattern:/api error:?\s*529\b/i}],x=/limit reached\|(\d{9,12})\b/i,y=/retry[- ]?after[:\s]+(\d+)\s*(?:s|sec|second)/i;function z(a){return a>0?["--max-turns",String(a)]:[]}let A=[{kind:"auth",pattern:/unexpected status 401\b/i},{kind:"auth",pattern:/\b401 unauthorized\b/i},{kind:"auth",pattern:/access token could not be refreshed/i},{kind:"auth",pattern:/please log out and sign in again/i},{kind:"auth",pattern:/\bnot logged in\b/i},{kind:"auth",pattern:/(?:chatgpt|api key) login is required/i},{kind:"auth",pattern:/missing environment variable.{0,5}OPENAI_API_KEY/i},{kind:"auth",pattern:/re-?run `?codex login`?/i},{kind:"billing",pattern:/quota exceeded\. check your plan and billing/i},{kind:"billing",pattern:/insufficient_quota/i},{kind:"billing",pattern:/exceeded your current quota/i},{kind:"billing",pattern:/\bout of credits\b/i},{kind:"billing",pattern:/\bspend cap\b/i},{kind:"billing",pattern:/to use codex with your chatgpt plan/i},{kind:"usage_limit",pattern:/you.?ve hit your usage limit/i},{kind:"usage_limit",pattern:/usage_limit_reached/i},{kind:"rate_limit",pattern:/rate.?limit_exceeded/i},{kind:"rate_limit",pattern:/rate limit reached for/i},{kind:"rate_limit",pattern:/last status:?\s*429\b/i},{kind:"rate_limit",pattern:/unexpected status 429\b/i},{kind:"rate_limit",pattern:/too many requests/i},{kind:"overloaded",pattern:/selected model is at capacity/i},{kind:"overloaded",pattern:/currently experiencing high demand/i},{kind:"overloaded",pattern:/server_is_overloaded/i},{kind:"overloaded",pattern:/last status:?\s*5\d\d\b/i},{kind:"overloaded",pattern:/unexpected status 5\d\d\b/i}],B=/try again in ([\d.]+)\s*s(?:ec(?:ond)?s?)?\b/i,C="gpt-5-codex",D={"gpt-5-codex":{inputPerMTok:1.25,outputPerMTok:10,cacheWritePerMTok:0,cacheReadPerMTok:0},"gpt-5":{inputPerMTok:1.25,outputPerMTok:10,cacheWritePerMTok:0,cacheReadPerMTok:0},"gpt-5-mini":{inputPerMTok:.25,outputPerMTok:2,cacheWritePerMTok:0,cacheReadPerMTok:0}},E=Object.values(D).reduce((a,b)=>b.outputPerMTok>a.outputPerMTok?b:a,{inputPerMTok:0,outputPerMTok:0,cacheWritePerMTok:0,cacheReadPerMTok:0}),F=h.Ik({input_tokens:h.ai().optional(),cached_input_tokens:h.ai().optional(),output_tokens:h.ai().optional(),reasoning_output_tokens:h.ai().optional()}).passthrough(),G=h.Ik({used_percent:h.ai().optional(),window_minutes:h.ai().optional(),resets_in_seconds:h.ai().optional()}).passthrough(),H=h.Ik({primary:G.nullish(),secondary:G.nullish()}).passthrough(),I=h.Ik({id:h.Yj().optional(),item_type:h.Yj().optional(),text:h.Yj().optional(),command:h.Yj().optional(),exit_code:h.ai().optional(),server:h.Yj().optional(),tool:h.Yj().optional()}).passthrough(),J=h.Ik({type:h.Yj(),thread_id:h.Yj().optional(),usage:F.optional(),rate_limits:H.nullish(),item:I.optional(),error:h.Ik({message:h.Yj().optional()}).passthrough().optional(),message:h.Yj().optional()}).passthrough();function K(a){if(a&&"number"==typeof a.used_percent)return{usedPercent:a.used_percent,windowMinutes:a.window_minutes,resetsInSeconds:a.resets_in_seconds}}class L{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){let b=a.trim();if(!b)return null;let c=JSON.parse(b);return J.parse(c)}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:q(b)}),null}if(!b)return null;let c=function(a){let b=H.nullish().safeParse(a.rate_limits);if(!b.success||!b.data)return;let c=K(b.data.primary),d=K(b.data.secondary);if(c||d)return{primary:c,secondary:d}}(b);if(c&&(this.rateLimits=c),"turn.failed"===b.type||"error"===b.type){this.resultIsError=!0;let a=b.error?.message??b.message;a&&(this.resultText=a)}else"turn.completed"===b.type&&(this.resultIsError=!1,this.resultText=void 0);let d=function(a){let b={type:"assistant",chunks:[],inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,isError:!1,raw:a};if("thread.started"===a.type)return{...b,type:"system",sessionId:a.thread_id};if("item.completed"===a.type&&a.item)return{...b,type:"assistant",chunks:function(a){let b=a.id??"";switch(a.item_type){case"assistant_message":case"reasoning":return a.text?[{kind:"text",text:a.text}]:[];case"command_execution":return[{kind:"tool_use",name:"command",id:b,input:{command:a.command,exit_code:a.exit_code}}];case"file_change":return[{kind:"tool_use",name:"edit",id:b,input:a}];case"mcp_tool_call":return[{kind:"tool_use",name:`${a.server??"mcp"}/${a.tool??"tool"}`,id:b,input:a}];default:return[]}}(a.item)};if("turn.completed"===a.type){let c=a.usage;return{...b,type:"result",inputTokens:c?.input_tokens??0,outputTokens:(c?.output_tokens??0)+(c?.reasoning_output_tokens??0)}}return"turn.failed"===a.type||"error"===a.type?{...b,type:"result",isError:!0}:null}(b);return d?(d.sessionId&&(this.sessionId=d.sessionId),this.totalInputTokens+=d.inputTokens,this.totalOutputTokens+=d.outputTokens,d):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.totalCacheCreationInputTokens=0,this.totalCacheReadInputTokens=0,this.costUsd=0}}let M=/openrouter http (\d{3})/i,N=/retry[- ]?after[:\s]+(\d+)\s*(?:s\b|sec|second)/i,O="openrouter is an HTTP provider; it has no CLI surface (dispatch on provider.kind)",P={claude:{id:"claude",label:"Claude Code",defaultCommand:"claude",supportsResume:!0,resumeModel:"claude-haiku-4-5",resumeMaxTurns:15,defaultModel:"claude-opus-4-8",buildStartArgs:({prompt:a,model:b,maxTurns:c,bypassPermissions:d})=>["-p",a,...z(c),...d?["--dangerously-skip-permissions"]:["--permission-mode","acceptEdits"],"--model",b,"--output-format","stream-json","--verbose"],buildResumeArgs:({prompt:a,sessionId:b,model:c,maxTurns:d,bypassPermissions:e})=>["-p",a,"--resume",b,...z(d),...e?["--dangerously-skip-permissions"]:[],"--model",c,"--output-format","stream-json","--verbose"],buildOneShotArgs:({prompt:a,model:b})=>["-p",a,"--model",b],buildStreamOneShotArgs:({prompt:a,model:b})=>["-p",a,"--model",b,"--output-format","stream-json","--verbose"],createParser:()=>new s,classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n");if(!c.trim())return;let d=w.find(a=>a.pattern.test(c));if(!d)return;let e={agent:"claude",kind:d.kind,rawSnippet:(b=d.pattern,v((c.split("\n").find(a=>b.test(a))??c).trim()).slice(0,300))};if("usage_limit"===d.kind){let a=c.match(x)?.[1];a&&(e.resetAt=Number(a))}if("rate_limit"===d.kind||"overloaded"===d.kind){let a=c.match(y)?.[1];a&&(e.retryAfterMs=1e3*Number(a))}return e},estimateCost:function(a,b,c,d=0,e=0){let h=function(a){if(!a)return g;let b=f[a];return b||(console.warn(`[drydock] Unknown model id "${a}" — using max-priced fallback to avoid under-counting cost`),g)}(a);return b/1e6*h.inputPerMTok+c/1e6*h.outputPerMTok+d/1e6*h.cacheWritePerMTok+e/1e6*h.cacheReadPerMTok}},codex:{id:"codex",label:"Codex CLI",defaultCommand:"codex",supportsResume:!0,resumeModel:C,resumeMaxTurns:15,defaultModel:C,buildStartArgs:({prompt:a,model:b})=>["exec","--json","--sandbox","workspace-write","--model",b,a],buildResumeArgs:({prompt:a,sessionId:b,model:c})=>["exec","resume",b,"--json","--sandbox","workspace-write","--model",c,a],buildOneShotArgs:({prompt:a,model:b})=>["exec","--model",b,a],buildStreamOneShotArgs:()=>null,createParser:()=>new L,classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n");if(!c.trim())return;let d=A.find(a=>a.pattern.test(c));if(!d)return;let e={agent:"codex",kind:d.kind,rawSnippet:(b=d.pattern,v((c.split("\n").find(a=>b.test(a))??c).trim()).slice(0,300))};if("rate_limit"===d.kind||"overloaded"===d.kind){let a=c.match(B)?.[1],b=a?Math.ceil(1e3*Number(a)):NaN;Number.isFinite(b)&&b>=0&&(e.retryAfterMs=b)}return e},captureUsage:a=>a instanceof L?a.rateLimits:void 0,estimateCost:function(a,b,c){let d=function(a){if(!a)return E;let b=D[a];return b||(console.warn(`[drydock] Unknown codex model id "${a}" — using max-priced fallback to avoid under-counting cost`),E)}(a);return b/1e6*d.inputPerMTok+c/1e6*d.outputPerMTok}},openrouter:{id:"openrouter",kind:"http",label:"OpenRouter",defaultCommand:"",supportsResume:!1,resumeModel:"",resumeMaxTurns:20,defaultModel:"",buildStartArgs(){throw Error(O)},buildResumeArgs:()=>null,buildOneShotArgs(){throw Error(O)},buildStreamOneShotArgs:()=>null,createParser(){throw Error(O)},classifyFailure:function(a){var b;if(0===a.exitCode&&!a.resultIsError)return;let c=[a.resultText,a.stderr].filter(Boolean).join("\n"),d=c.match(M)?.[1];if(!d)return;let e=(b=Number(d),401===b||403===b?"auth":402===b?"billing":429===b?/\b(?:free|daily|quota)\b/i.test(c)?"usage_limit":"rate_limit":408===b||b>=500&&b<600?"overloaded":void 0);if(!e)return;let f={agent:"openrouter",kind:e,rawSnippet:v((c.split("\n").find(a=>M.test(a))??c).trim()).slice(0,300)},g=c.match(N)?.[1];return g&&("rate_limit"===e||"overloaded"===e)&&(f.retryAfterMs=1e3*Number(g)),f},estimateCost:()=>0}},Q=["claude","codex","openrouter"].map(a=>P[a]),R=["claude","codex"];function S({value:a,onChange:b,id:c,className:f,agents:g=R}){let h=Q.filter(a=>g.includes(a.id));return(0,d.jsx)(e.l,{id:c,value:a,onChange:a=>b(a.target.value),className:f,children:h.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))})}},22842:(a,b,c)=>{c.d(b,{o:()=>g});var d=c(27905),e=c(64261),f=c(33721);function g({value:a,onChange:b,agent:c,openrouterModels:h=[],id:i,className:j}){if("openrouter"===c)return(0,d.jsxs)(e.l,{id:i,value:a,onChange:a=>b(a.target.value),className:j,children:[0===h.length&&(0,d.jsx)("option",{value:"",disabled:!0,children:"No synced models — refresh the catalog in Settings"}),h.length>0&&""!==a&&!h.some(b=>b.id===a)&&(0,d.jsxs)("option",{value:a,disabled:!0,children:[a," (no longer in catalog)"]}),h.map(a=>(0,d.jsx)("option",{value:a.id,children:a.isFree?`${a.label} (free)`:a.label},a.id))]});let k=c?(0,f.tT)(c):f.L6;return(0,d.jsx)(e.l,{id:i,value:a,onChange:a=>b(a.target.value),className:j,children:k.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))})}},24641:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("container",[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]])},33721:(a,b,c)=>{c.d(b,{L6:()=>d,UB:()=>e,VJ:()=>g,tT:()=>f});let d=[{id:"claude-opus-4-8",label:"Claude Opus 4.8",agent:"claude"},{id:"claude-fable-5",label:"Claude Fable 5",agent:"claude"},{id:"claude-opus-4-7",label:"Claude Opus 4.7",agent:"claude"},{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",agent:"claude"},{id:"claude-sonnet-4-5",label:"Claude Sonnet 4.5",agent:"claude"},{id:"claude-haiku-4-5",label:"Claude Haiku 4.5",agent:"claude"},{id:"gpt-5-codex",label:"GPT-5 Codex",agent:"codex"},{id:"gpt-5",label:"GPT-5",agent:"codex"},{id:"gpt-5-mini",label:"GPT-5 Mini",agent:"codex"}],e="claude-opus-4-8";function f(a){return d.filter(b=>b.agent===a)}function g(a){return"openrouter"===a?"":f(a)[0]?.id??e}},37913:(a,b,c)=>{c.d(b,{D:()=>g});var d=c(27905),e=c(5270);function f({htmlFor:a,className:b,children:c}){return(0,d.jsx)("label",{htmlFor:a,className:(0,e.cn)("text-sm font-medium text-foreground",b),children:c})}function g({label:a,hint:b,htmlFor:c,children:h,className:i}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",i),children:[a&&(0,d.jsx)(f,{htmlFor:c,children:a}),h,b&&(0,d.jsx)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:b})]})}},39906:(a,b,c)=>{c.d(b,{S:()=>g});var d=c(27905),e=c(43100),f=c(5270);function g({checked:a,onChange:b,disabled:c,id:h,className:i,"aria-label":j}){return(0,d.jsx)("button",{type:"button",role:"checkbox",id:h,"aria-checked":a,"aria-label":j,disabled:c,onClick:()=>!c&&b?.(!a),className:(0,f.cn)("flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[5px] border transition-colors focus-ring",a?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:border-muted-foreground",c&&"pointer-events-none opacity-50",i),children:a&&(0,d.jsx)(e.A,{className:"h-[13px] w-[13px]",strokeWidth:3})})}},43100:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},46305:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(30285).A)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},50050:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(71859).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},54110:(a,b,c)=>{c.d(b,{y:()=>g});var d=c(27905),e=c(99506),f=c(5270);function g({size:a=16,className:b}){return(0,d.jsx)(e.A,{width:a,height:a,className:(0,f.cn)("dd-spin",b),"aria-hidden":!0})}},64261:(a,b,c)=>{c.d(b,{l:()=>h});var d=c(27905),e=c(50050),f=c(35924),g=c(5270);let h=f.forwardRef(({className:a,children:b,...c},f)=>(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("select",{ref:f,className:(0,g.cn)("h-9 w-full appearance-none cursor-pointer rounded-lg border border-input bg-background pl-3 pr-9 text-sm text-foreground","transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:b}),(0,d.jsx)(e.A,{className:"pointer-events-none absolute right-2.5 top-1/2 h-[15px] w-[15px] -translate-y-1/2 text-muted-foreground"})]}));h.displayName="Select"},77585:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(27905),e=c(35924),f=c(5270);let g=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("input",{ref:c,className:(0,f.cn)("h-9 w-full rounded-lg border border-input bg-background px-3 text-sm text-foreground","placeholder:text-muted-foreground transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...b}));g.displayName="Input"},83557:(a,b,c)=>{c.d(b,{d:()=>f});var d=c(27905),e=c(5270);function f({checked:a,onChange:b,disabled:c,id:g,"aria-label":h}){return(0,d.jsx)("button",{type:"button",role:"switch",id:g,"aria-checked":a,"aria-label":h,disabled:c,onClick:()=>!c&&b?.(!a),className:(0,e.cn)("relative inline-flex h-[22px] w-[38px] shrink-0 items-center rounded-full transition-colors focus-ring",a?"bg-primary":"bg-input",c&&"pointer-events-none opacity-50"),children:(0,d.jsx)("span",{className:(0,e.cn)("inline-block h-4 w-4 transform rounded-full bg-white shadow-sm transition-transform",a?"translate-x-[18px]":"translate-x-[3px]")})})}},94895:(a,b,c)=>{c.d(b,{z:()=>j});var d=c(87383),e=c(79874),f=c(77283),g=c.n(f),h=c(8578),i=c(25900);function j({title:a,subtitle:b,breadcrumb:c,actions:f,icon:k,className:l}){return(0,d.jsxs)("div",{className:(0,i.cn)("mb-6 flex flex-wrap items-end justify-between gap-4",l),children:[(0,d.jsxs)("div",{className:"min-w-0",children:[c&&c.length>0&&(0,d.jsx)("nav",{className:"mb-1.5 flex items-center gap-1.5 text-xs text-muted-foreground",children:c.map((a,b)=>(0,d.jsxs)(h.Fragment,{children:[b>0&&(0,d.jsx)(e.A,{className:"h-3 w-3 opacity-60","aria-hidden":!0}),a.href?(0,d.jsx)(g(),{href:a.href,className:"rounded transition-colors hover:text-foreground focus-ring",children:a.label}):(0,d.jsx)("span",{className:"text-foreground/80",children:a.label})]},a.href??a.label))}),(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[k&&(0,d.jsx)("span",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:(0,d.jsx)(k,{className:"h-[17px] w-[17px]"})}),(0,d.jsx)("h1",{className:"text-pretty text-2xl font-bold tracking-tight",children:a})]}),b&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:b})]}),f&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:f})]})}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=83,exports.ids=[83],exports.modules={8804:(a,b,c)=>{c.d(b,{v0:()=>j,$J:()=>l,tm:()=>k,Dn:()=>n,Cq:()=>m});var d=c(97496),e=c(14694),f=c(2025),g=c(64537);let h={detected:["evaluating","error"],evaluating:["proposed","skipped","error"],proposed:["publishing","skipped","error"],publishing:["published","error"],published:[],skipped:[],error:["evaluating"]};class i extends Error{constructor(a,b){super(`invalid release transition: ${a} -> ${b}`)}}function j(a,b=(0,f.Lf)()){let c=a.triggerSha??null;if(null!==c){let e=b.select().from(g.releaseRuns).where((0,d.Uo)((0,d.eq)(g.releaseRuns.repoId,a.repoId),(0,d.eq)(g.releaseRuns.triggerSha,c))).get();if(e)return e}return b.insert(g.releaseRuns).values({repoId:a.repoId,mode:a.mode,triggerPrNumber:a.triggerPrNumber??null,triggerSha:c}).returning().get()}function k(a,b=(0,f.Lf)()){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.id,a)).get()}function l(a,b,c=(0,f.Lf)()){return c.select().from(g.releaseRuns).where((0,d.Uo)((0,d.eq)(g.releaseRuns.repoId,a),(0,d.eq)(g.releaseRuns.triggerPrNumber,b))).orderBy((0,e.i)(g.releaseRuns.id)).get()}function m(a,b,c={},e=(0,f.Lf)()){let j=k(a,e);if(!j)throw Error(`release run ${a} not found`);var l=j.status;if(!h[l].includes(b))throw new i(l,b);let{prNumbers:n,...o}=c;return e.update(g.releaseRuns).set({status:b,updatedAt:Math.floor(Date.now()/1e3),...o,...void 0!==n?{prNumbers:JSON.stringify(n)}:{}}).where((0,d.eq)(g.releaseRuns.id,a)).returning().get()}function n(a,b=(0,f.Lf)(),c=10){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.repoId,a)).orderBy((0,e.i)(g.releaseRuns.updatedAt),(0,e.i)(g.releaseRuns.id)).limit(c).all().map(a=>({id:a.id,mode:a.mode,status:a.status,triggerPrNumber:a.triggerPrNumber,fromTag:a.fromTag,tag:a.tag,title:a.title,prNumbers:function(a){try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"number"==typeof a):[]}catch{return[]}}(a.prNumbers),errorMessage:a.errorMessage,updatedAt:a.updatedAt}))}},34666:(a,b,c)=>{c.d(b,{op:()=>m,Bz:()=>C,rh:()=>v,Az:()=>y,VJ:()=>A,dT:()=>u,ZM:()=>n,ZA:()=>B,Z7:()=>x,Yv:()=>w,I0:()=>o,sk:()=>p,kb:()=>z});var d=c(97496),e=c(84232),f=c(14694),g=c(2025),h=c(64537);let i=["healed","blocked","escalated","superseded"],j=["blocked","escalated","superseded"],k={triaging:["awaiting_slot",...j],awaiting_slot:["repairing","awaiting_ci",...j],repairing:["awaiting_ci",...j],awaiting_ci:["verifying",...j],verifying:["healed","cooldown",...j],cooldown:["awaiting_slot",...j],healed:[],blocked:[],escalated:[],superseded:[]};class l extends Error{constructor(a,b){super(`invalid healing transition: ${a} -> ${b}`)}}let m={maxHealAttemptsPerSession:3,maxHealAttemptsPerFingerprint:2,cooldownMs:9e5,maxConcurrentHealingRuns:1,maxEvidenceLines:200};function n(a){let{failures:b,attempts:c,budgets:d}=a,e=b.filter(a=>"healable_in_branch"===a.category),f=b.filter(a=>"flaky_or_ambiguous"===a.category),g=b.filter(a=>"blocked_external"===a.category);if(0==[...e,...f].length){let a=g[0];return a?{action:"block",reason:`external failure: ${a.checkName}`}:{action:"escalate",reason:"unrecognised CI failure"}}if(c.length>=d.maxHealAttemptsPerSession)return{action:"escalate",reason:"per-session heal budget exhausted"};let h=new Map;for(let a of c)h.set(a.fingerprint,(h.get(a.fingerprint)??0)+1);let i=a=>(h.get(a.fingerprint)??0)<d.maxHealAttemptsPerFingerprint,j=e.find(i)??f.find(i);if(!j)return{action:"escalate",reason:"per-fingerprint heal budget exhausted"};if(a.activeRuns>=d.maxConcurrentHealingRuns)return{action:"wait_slot"};if(null!=a.lastAttemptAt){let b=a.now-a.lastAttemptAt;if(b<d.cooldownMs)return{action:"cooldown",waitMs:d.cooldownMs-b}}return"healable_in_branch"===j.category?{action:"repair",target:j}:{action:"rerun",target:j}}function o(a){return a.afterSha===a.beforeSha?{verdict:"rejected",reason:"no change pushed (no new commit)"}:a.afterFailingCount>=a.beforeFailingCount?{verdict:"rejected",reason:"no measurable improvement in failing checks"}:0===a.afterFailingCount?{verdict:"healed",reason:"all checks green"}:{verdict:"progressed",reason:"fewer checks failing"}}function p(a){return a.afterFailingCount>=a.beforeFailingCount?{verdict:"rejected",reason:"re-run did not clear the flaky check"}:0===a.afterFailingCount?{verdict:"healed",reason:"all checks green after re-run"}:{verdict:"progressed",reason:"fewer checks failing after re-run"}}let q=["repairing","awaiting_ci","verifying"];function r(a){return i.includes(a)}function s(a,b=(0,g.Lf)()){return b.select().from(h.healingSessions).where((0,d.eq)(h.healingSessions.id,a)).get()}let t=["triaging","cooldown"];function u(a,b,c,e=(0,g.Lf)()){let f=e.select().from(h.healingSessions).where((0,d.eq)(h.healingSessions.prNumber,b)).all();for(let a of f)a.headSha===c||r(a.status)||w(a.id,"superseded",e);let i=f.filter(a=>a.headSha===c),j=i.find(a=>t.includes(a.status));if(j)return s(j.id,e)??j;for(let a of i)r(a.status)||w(a.id,"superseded",e);return e.insert(h.healingSessions).values({jobId:a,prNumber:b,headSha:c}).returning().get()}function v(a,b,c=(0,g.Lf)()){let d=s(a,c);!d||r(d.status)||w(a,b,c)}function w(a,b,c=(0,g.Lf)()){let e=s(a,c);if(!e)throw Error(`healing session ${a} not found`);var f=e.status;if(!k[f].includes(b))throw new l(f,b);return c.update(h.healingSessions).set({status:b,updatedAt:Math.floor(Date.now()/1e3)}).where((0,d.eq)(h.healingSessions.id,a)).returning().get()}function x(a,b,c,d=(0,g.Lf)()){return d.insert(h.healingAttempts).values({sessionId:a,fingerprint:b.fingerprint,category:b.category,checkName:b.checkName,beforeSha:c}).returning().get()}function y(a,b,c=(0,g.Lf)()){c.update(h.healingAttempts).set({status:b.status,afterSha:b.afterSha??null}).where((0,d.eq)(h.healingAttempts.id,a)).run()}function z(a,b=(0,g.Lf)()){b.delete(h.healingAttempts).where((0,d.eq)(h.healingAttempts.id,a)).run()}function A(a,b=(0,g.Lf)()){return b.select().from(h.healingAttempts).where((0,d.eq)(h.healingAttempts.sessionId,a)).all()}function B(a,b=(0,g.Lf)(),c=10){return b.select({id:h.healingSessions.id,jobId:h.healingSessions.jobId,issueNumber:h.jobs.issueNumber,prNumber:h.healingSessions.prNumber,headSha:h.healingSessions.headSha,status:h.healingSessions.status,updatedAt:h.healingSessions.updatedAt,attempts:(0,e.ll)`(select count(*) from ${h.healingAttempts} where ${h.healingAttempts.sessionId} = ${h.healingSessions.id})`}).from(h.healingSessions).innerJoin(h.jobs,(0,d.eq)(h.jobs.id,h.healingSessions.jobId)).where((0,d.eq)(h.jobs.repoId,a)).orderBy((0,f.i)(h.healingSessions.updatedAt)).limit(c).all()}function C(a=(0,g.Lf)()){return a.select().from(h.healingSessions).all().filter(a=>q.includes(a.status)).length}},64080:(a,b,c)=>{c.d(b,{ad:()=>j,eV:()=>k,SR:()=>n,eY:()=>o,FL:()=>l,ED:()=>r,LR:()=>q,X:()=>p});var d=c(97496),e=c(14694),f=c(2025),g=c(64537);let h={monitoring:["healthy","failed","escalated"],failed:["repairing","escalated"],repairing:["repaired","escalated"],healthy:[],repaired:[],escalated:[]};class i extends Error{constructor(a,b){super(`invalid deployment-healing transition: ${a} -> ${b}`)}}let j={initialDelayMs:6e4,intervalMs:6e4,timeoutMs:12e5,monitorWindowMs:36e5,maxLogLines:200};function k(a){return"ready"===a?"ready":"error"===a?"error":"pending"}function l(a){let b=a.now-a.createdAt;return b<a.initialDelayMs?"wait":b>=a.timeoutMs?"timeout":a.lastPolledAt<=a.createdAt||a.now-a.lastPolledAt>=a.intervalMs?"poll":"wait"}function m(){return Math.floor(Date.now()/1e3)}function n(a,b,c=(0,f.Lf)()){return c.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.jobId,a)).all().some(a=>a.commitSha===b)}function o(a,b,c,e,h=(0,f.Lf)()){let i=h.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.jobId,a)).all().find(a=>a.commitSha===e);return i||h.insert(g.deploymentHealingSessions).values({jobId:a,prNumber:b,platform:c,commitSha:e}).returning().get()}function p(a,b,c={},e=(0,f.Lf)()){let j=function(a,b=(0,f.Lf)()){return b.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.id,a)).get()}(a,e);if(!j)throw Error(`deployment healing session ${a} not found`);var k=j.status;if(!h[k].includes(b))throw new i(k,b);return e.update(g.deploymentHealingSessions).set({status:b,updatedAt:m(),...c}).where((0,d.eq)(g.deploymentHealingSessions.id,a)).returning().get()}function q(a,b=(0,f.Lf)()){b.update(g.deploymentHealingSessions).set({updatedAt:m()}).where((0,d.eq)(g.deploymentHealingSessions.id,a)).run()}function r(a,b=(0,f.Lf)(),c=10){return b.select({id:g.deploymentHealingSessions.id,jobId:g.deploymentHealingSessions.jobId,issueNumber:g.jobs.issueNumber,prNumber:g.deploymentHealingSessions.prNumber,platform:g.deploymentHealingSessions.platform,commitSha:g.deploymentHealingSessions.commitSha,status:g.deploymentHealingSessions.status,followupPrNumber:g.deploymentHealingSessions.followupPrNumber,updatedAt:g.deploymentHealingSessions.updatedAt}).from(g.deploymentHealingSessions).innerJoin(g.jobs,(0,d.eq)(g.jobs.id,g.deploymentHealingSessions.jobId)).where((0,d.eq)(g.jobs.repoId,a)).orderBy((0,e.i)(g.deploymentHealingSessions.updatedAt)).limit(c).all()}},74340:(a,b,c)=>{c.d(b,{Hi:()=>t,Mf:()=>v,PI:()=>n,TR:()=>w,Y8:()=>s,fj:()=>r,hz:()=>u,yd:()=>q});var d=c(97496),e=c(29980),f=c(2025),g=c(64537);let h="openrouter_catalog_meta",i=e.Ik({lastSyncAt:e.ai().nullable().default(null),lastSuccessAt:e.ai().nullable().default(null),lastError:e.Yj().nullable().default(null),modelCount:e.ai().int().nonnegative().default(0),consecutiveFailures:e.ai().int().nonnegative().default(0)}),j={lastSyncAt:null,lastSuccessAt:null,lastError:null,modelCount:0,consecutiveFailures:0},k=e.Ik({id:e.Yj().min(1),name:e.Yj().optional(),description:e.Yj().nullish(),context_length:e.ai().nullish(),pricing:e.Ik({prompt:e.KC([e.Yj(),e.ai()]).optional(),completion:e.KC([e.Yj(),e.ai()]).optional()}).passthrough().nullish(),supported_parameters:e.YO(e.Yj()).nullish(),expiration_date:e.KC([e.Yj(),e.ai()]).nullish()}),l=e.Ik({data:e.YO(e.L5())});function m(a){if(void 0===a)return 0;let b="number"==typeof a?a:Number.parseFloat(a);return Number.isFinite(b)&&b>=0?b:0}function n(a=(0,f.Lf)()){let b=a.select().from(g.settings).where((0,d.eq)(g.settings.key,h)).get();if(!b)return{...j};try{return i.parse(JSON.parse(b.value))}catch{return{...j}}}function o(a,b){let c=JSON.stringify(a);b.select().from(g.settings).where((0,d.eq)(g.settings.key,h)).get()?b.update(g.settings).set({value:c}).where((0,d.eq)(g.settings.key,h)).run():b.insert(g.settings).values({key:h,value:c}).run()}let p=()=>Math.floor(Date.now()/1e3);async function q(a){let b,c=a.db??(0,f.Lf)(),e=a.fetchImpl??fetch,h=a.now??p(),i=n(c);i.lastSyncAt=h;try{let c={};a.apiKey&&(c.Authorization=`Bearer ${a.apiKey}`);let d=await e("https://openrouter.ai/api/v1/models",{headers:c});if(!d.ok)throw Error(`OpenRouter models API returned HTTP ${d.status}`);b=function(a){let{data:b}=l.parse(a),c=[];for(let a of b){let b=k.safeParse(a);if(!b.success)continue;let d=b.data,e=m(d.pricing?.prompt),f=m(d.pricing?.completion),g=d.supported_parameters??[];c.push({id:d.id,name:d.name??d.id,description:d.description??"",contextLength:d.context_length??0,promptCostPerToken:e,completionCostPerToken:f,supportedParameters:g,expirationDate:function(a){if(null==a)return null;if("number"==typeof a)return Number.isFinite(a)?Math.floor(a):null;let b=Date.parse(a);return Number.isNaN(b)?null:Math.floor(b/1e3)}(d.expiration_date),isFree:d.id.endsWith(":free")||0===e&&0===f,supportsTools:g.includes("tools")})}return c}(await d.json())}catch(a){return i.lastError=a instanceof Error?a.message:String(a),i.consecutiveFailures+=1,o(i,c),{ok:!1,error:i.lastError}}let j=new Set(b.map(a=>a.id));return c.transaction(a=>{for(let c of b){let b={id:c.id,name:c.name,description:c.description,contextLength:c.contextLength,promptCostPerToken:c.promptCostPerToken,completionCostPerToken:c.completionCostPerToken,supportedParameters:JSON.stringify(c.supportedParameters),expirationDate:c.expirationDate,isFree:c.isFree,supportsTools:c.supportsTools,removedAt:null,syncedAt:h};a.insert(g.openrouterModels).values(b).onConflictDoUpdate({target:g.openrouterModels.id,set:b}).run()}for(let b of a.select({id:g.openrouterModels.id}).from(g.openrouterModels).all())j.has(b.id)||a.update(g.openrouterModels).set({removedAt:h}).where((0,d.eq)(g.openrouterModels.id,b.id)).run()}),i.lastSuccessAt=h,i.lastError=null,i.modelCount=b.length,i.consecutiveFailures=0,o(i,c),{ok:!0,modelCount:b.length}}function r(a,b=p()){return null===a.removedAt&&(null===a.expirationDate||!(a.expirationDate<=b))}function s(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=b.select().from(g.openrouterModels).all();return a.includeUnavailable||(d=d.filter(a=>r(a,c))),a.freeOnly&&(d=d.filter(a=>a.isFree)),a.requireTools&&(d=d.filter(a=>a.supportsTools)),d.sort((a,b)=>a.name.localeCompare(b.name))}function t(a,b=(0,f.Lf)()){return b.select().from(g.openrouterModels).where((0,d.eq)(g.openrouterModels.id,a)).get()}function u(a,b,c,d=(0,f.Lf)()){let e=t(a,d);return e?b*e.promptCostPerToken+c*e.completionCostPerToken:0}function v(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=n(b);if(null===d.lastSyncAt||0===d.modelCount&&0===d.consecutiveFailures)return!0;let e=d.consecutiveFailures>0?Math.min(300*2**(d.consecutiveFailures-1),3600):Math.floor(3600*a.refreshHours);return c-d.lastSyncAt>=e}function w(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=n(b);return null===d.lastSuccessAt||c-d.lastSuccessAt>2*a.refreshHours*3600}}};
|
|
1
|
+
"use strict";exports.id=83,exports.ids=[83],exports.modules={8804:(a,b,c)=>{c.d(b,{v0:()=>j,Oe:()=>m,$J:()=>l,tm:()=>k,Dg:()=>o,Dn:()=>p,Cq:()=>n});var d=c(97496),e=c(14694),f=c(2025),g=c(64537);let h={detected:["evaluating","error"],evaluating:["proposed","skipped","error"],proposed:["publishing","skipped","error"],publishing:["published","error"],published:[],skipped:[],error:["evaluating"]};class i extends Error{constructor(a,b){super(`invalid release transition: ${a} -> ${b}`)}}function j(a,b=(0,f.Lf)()){let c=a.triggerSha??null;if(null!==c){let e=b.select().from(g.releaseRuns).where((0,d.Uo)((0,d.eq)(g.releaseRuns.repoId,a.repoId),(0,d.eq)(g.releaseRuns.triggerSha,c))).get();if(e)return e}return b.insert(g.releaseRuns).values({repoId:a.repoId,mode:a.mode,triggerPrNumber:a.triggerPrNumber??null,triggerSha:c,jobId:a.jobId??null}).returning().get()}function k(a,b=(0,f.Lf)()){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.id,a)).get()}function l(a,b,c=(0,f.Lf)()){return c.select().from(g.releaseRuns).where((0,d.Uo)((0,d.eq)(g.releaseRuns.repoId,a),(0,d.eq)(g.releaseRuns.triggerPrNumber,b))).orderBy((0,e.i)(g.releaseRuns.id)).get()}function m(a,b=(0,f.Lf)()){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.jobId,a)).get()}function n(a,b,c={},e=(0,f.Lf)()){let j=k(a,e);if(!j)throw Error(`release run ${a} not found`);var l=j.status;if(!h[l].includes(b))throw new i(l,b);let{prNumbers:m,...o}=c;return e.update(g.releaseRuns).set({status:b,updatedAt:Math.floor(Date.now()/1e3),...o,...void 0!==m?{prNumbers:JSON.stringify(m)}:{}}).where((0,d.eq)(g.releaseRuns.id,a)).returning().get()}function o(a,b={},c=(0,f.Lf)()){return n(a,"proposed",b,c),n(a,"publishing",{},c),n(a,"published",{},c)}function p(a,b=(0,f.Lf)(),c=10){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.repoId,a)).orderBy((0,e.i)(g.releaseRuns.updatedAt),(0,e.i)(g.releaseRuns.id)).limit(c).all().map(a=>({id:a.id,mode:a.mode,status:a.status,jobId:a.jobId,triggerPrNumber:a.triggerPrNumber,fromTag:a.fromTag,tag:a.tag,title:a.title,prNumbers:function(a){try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"number"==typeof a):[]}catch{return[]}}(a.prNumbers),errorMessage:a.errorMessage,updatedAt:a.updatedAt}))}},34666:(a,b,c)=>{c.d(b,{op:()=>m,Bz:()=>C,rh:()=>v,Az:()=>y,VJ:()=>A,dT:()=>u,ZM:()=>n,ZA:()=>B,Z7:()=>x,Yv:()=>w,I0:()=>o,sk:()=>p,kb:()=>z});var d=c(97496),e=c(84232),f=c(14694),g=c(2025),h=c(64537);let i=["healed","blocked","escalated","superseded"],j=["blocked","escalated","superseded"],k={triaging:["awaiting_slot",...j],awaiting_slot:["repairing","awaiting_ci",...j],repairing:["awaiting_ci",...j],awaiting_ci:["verifying",...j],verifying:["healed","cooldown",...j],cooldown:["awaiting_slot",...j],healed:[],blocked:[],escalated:[],superseded:[]};class l extends Error{constructor(a,b){super(`invalid healing transition: ${a} -> ${b}`)}}let m={maxHealAttemptsPerSession:3,maxHealAttemptsPerFingerprint:2,cooldownMs:9e5,maxConcurrentHealingRuns:1,maxEvidenceLines:200};function n(a){let{failures:b,attempts:c,budgets:d}=a,e=b.filter(a=>"healable_in_branch"===a.category),f=b.filter(a=>"flaky_or_ambiguous"===a.category),g=b.filter(a=>"blocked_external"===a.category);if(0==[...e,...f].length){let a=g[0];return a?{action:"block",reason:`external failure: ${a.checkName}`}:{action:"escalate",reason:"unrecognised CI failure"}}if(c.length>=d.maxHealAttemptsPerSession)return{action:"escalate",reason:"per-session heal budget exhausted"};let h=new Map;for(let a of c)h.set(a.fingerprint,(h.get(a.fingerprint)??0)+1);let i=a=>(h.get(a.fingerprint)??0)<d.maxHealAttemptsPerFingerprint,j=e.find(i)??f.find(i);if(!j)return{action:"escalate",reason:"per-fingerprint heal budget exhausted"};if(a.activeRuns>=d.maxConcurrentHealingRuns)return{action:"wait_slot"};if(null!=a.lastAttemptAt){let b=a.now-a.lastAttemptAt;if(b<d.cooldownMs)return{action:"cooldown",waitMs:d.cooldownMs-b}}return"healable_in_branch"===j.category?{action:"repair",target:j}:{action:"rerun",target:j}}function o(a){return a.afterSha===a.beforeSha?{verdict:"rejected",reason:"no change pushed (no new commit)"}:a.afterFailingCount>=a.beforeFailingCount?{verdict:"rejected",reason:"no measurable improvement in failing checks"}:0===a.afterFailingCount?{verdict:"healed",reason:"all checks green"}:{verdict:"progressed",reason:"fewer checks failing"}}function p(a){return a.afterFailingCount>=a.beforeFailingCount?{verdict:"rejected",reason:"re-run did not clear the flaky check"}:0===a.afterFailingCount?{verdict:"healed",reason:"all checks green after re-run"}:{verdict:"progressed",reason:"fewer checks failing after re-run"}}let q=["repairing","awaiting_ci","verifying"];function r(a){return i.includes(a)}function s(a,b=(0,g.Lf)()){return b.select().from(h.healingSessions).where((0,d.eq)(h.healingSessions.id,a)).get()}let t=["triaging","cooldown"];function u(a,b,c,e=(0,g.Lf)()){let f=e.select().from(h.healingSessions).where((0,d.eq)(h.healingSessions.prNumber,b)).all();for(let a of f)a.headSha===c||r(a.status)||w(a.id,"superseded",e);let i=f.filter(a=>a.headSha===c),j=i.find(a=>t.includes(a.status));if(j)return s(j.id,e)??j;for(let a of i)r(a.status)||w(a.id,"superseded",e);return e.insert(h.healingSessions).values({jobId:a,prNumber:b,headSha:c}).returning().get()}function v(a,b,c=(0,g.Lf)()){let d=s(a,c);!d||r(d.status)||w(a,b,c)}function w(a,b,c=(0,g.Lf)()){let e=s(a,c);if(!e)throw Error(`healing session ${a} not found`);var f=e.status;if(!k[f].includes(b))throw new l(f,b);return c.update(h.healingSessions).set({status:b,updatedAt:Math.floor(Date.now()/1e3)}).where((0,d.eq)(h.healingSessions.id,a)).returning().get()}function x(a,b,c,d=(0,g.Lf)()){return d.insert(h.healingAttempts).values({sessionId:a,fingerprint:b.fingerprint,category:b.category,checkName:b.checkName,beforeSha:c}).returning().get()}function y(a,b,c=(0,g.Lf)()){c.update(h.healingAttempts).set({status:b.status,afterSha:b.afterSha??null}).where((0,d.eq)(h.healingAttempts.id,a)).run()}function z(a,b=(0,g.Lf)()){b.delete(h.healingAttempts).where((0,d.eq)(h.healingAttempts.id,a)).run()}function A(a,b=(0,g.Lf)()){return b.select().from(h.healingAttempts).where((0,d.eq)(h.healingAttempts.sessionId,a)).all()}function B(a,b=(0,g.Lf)(),c=10){return b.select({id:h.healingSessions.id,jobId:h.healingSessions.jobId,issueNumber:h.jobs.issueNumber,prNumber:h.healingSessions.prNumber,headSha:h.healingSessions.headSha,status:h.healingSessions.status,updatedAt:h.healingSessions.updatedAt,attempts:(0,e.ll)`(select count(*) from ${h.healingAttempts} where ${h.healingAttempts.sessionId} = ${h.healingSessions.id})`}).from(h.healingSessions).innerJoin(h.jobs,(0,d.eq)(h.jobs.id,h.healingSessions.jobId)).where((0,d.eq)(h.jobs.repoId,a)).orderBy((0,f.i)(h.healingSessions.updatedAt)).limit(c).all()}function C(a=(0,g.Lf)()){return a.select().from(h.healingSessions).all().filter(a=>q.includes(a.status)).length}},64080:(a,b,c)=>{c.d(b,{ad:()=>j,eV:()=>k,SR:()=>n,eY:()=>o,FL:()=>l,ED:()=>r,LR:()=>q,X:()=>p});var d=c(97496),e=c(14694),f=c(2025),g=c(64537);let h={monitoring:["healthy","failed","escalated"],failed:["repairing","escalated"],repairing:["repaired","escalated"],healthy:[],repaired:[],escalated:[]};class i extends Error{constructor(a,b){super(`invalid deployment-healing transition: ${a} -> ${b}`)}}let j={initialDelayMs:6e4,intervalMs:6e4,timeoutMs:12e5,monitorWindowMs:36e5,maxLogLines:200};function k(a){return"ready"===a?"ready":"error"===a?"error":"pending"}function l(a){let b=a.now-a.createdAt;return b<a.initialDelayMs?"wait":b>=a.timeoutMs?"timeout":a.lastPolledAt<=a.createdAt||a.now-a.lastPolledAt>=a.intervalMs?"poll":"wait"}function m(){return Math.floor(Date.now()/1e3)}function n(a,b,c=(0,f.Lf)()){return c.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.jobId,a)).all().some(a=>a.commitSha===b)}function o(a,b,c,e,h=(0,f.Lf)()){let i=h.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.jobId,a)).all().find(a=>a.commitSha===e);return i||h.insert(g.deploymentHealingSessions).values({jobId:a,prNumber:b,platform:c,commitSha:e}).returning().get()}function p(a,b,c={},e=(0,f.Lf)()){let j=function(a,b=(0,f.Lf)()){return b.select().from(g.deploymentHealingSessions).where((0,d.eq)(g.deploymentHealingSessions.id,a)).get()}(a,e);if(!j)throw Error(`deployment healing session ${a} not found`);var k=j.status;if(!h[k].includes(b))throw new i(k,b);return e.update(g.deploymentHealingSessions).set({status:b,updatedAt:m(),...c}).where((0,d.eq)(g.deploymentHealingSessions.id,a)).returning().get()}function q(a,b=(0,f.Lf)()){b.update(g.deploymentHealingSessions).set({updatedAt:m()}).where((0,d.eq)(g.deploymentHealingSessions.id,a)).run()}function r(a,b=(0,f.Lf)(),c=10){return b.select({id:g.deploymentHealingSessions.id,jobId:g.deploymentHealingSessions.jobId,issueNumber:g.jobs.issueNumber,prNumber:g.deploymentHealingSessions.prNumber,platform:g.deploymentHealingSessions.platform,commitSha:g.deploymentHealingSessions.commitSha,status:g.deploymentHealingSessions.status,followupPrNumber:g.deploymentHealingSessions.followupPrNumber,updatedAt:g.deploymentHealingSessions.updatedAt}).from(g.deploymentHealingSessions).innerJoin(g.jobs,(0,d.eq)(g.jobs.id,g.deploymentHealingSessions.jobId)).where((0,d.eq)(g.jobs.repoId,a)).orderBy((0,e.i)(g.deploymentHealingSessions.updatedAt)).limit(c).all()}},74340:(a,b,c)=>{c.d(b,{Hi:()=>t,Mf:()=>v,PI:()=>n,TR:()=>w,Y8:()=>s,fj:()=>r,hz:()=>u,yd:()=>q});var d=c(97496),e=c(29980),f=c(2025),g=c(64537);let h="openrouter_catalog_meta",i=e.Ik({lastSyncAt:e.ai().nullable().default(null),lastSuccessAt:e.ai().nullable().default(null),lastError:e.Yj().nullable().default(null),modelCount:e.ai().int().nonnegative().default(0),consecutiveFailures:e.ai().int().nonnegative().default(0)}),j={lastSyncAt:null,lastSuccessAt:null,lastError:null,modelCount:0,consecutiveFailures:0},k=e.Ik({id:e.Yj().min(1),name:e.Yj().optional(),description:e.Yj().nullish(),context_length:e.ai().nullish(),pricing:e.Ik({prompt:e.KC([e.Yj(),e.ai()]).optional(),completion:e.KC([e.Yj(),e.ai()]).optional()}).passthrough().nullish(),supported_parameters:e.YO(e.Yj()).nullish(),expiration_date:e.KC([e.Yj(),e.ai()]).nullish()}),l=e.Ik({data:e.YO(e.L5())});function m(a){if(void 0===a)return 0;let b="number"==typeof a?a:Number.parseFloat(a);return Number.isFinite(b)&&b>=0?b:0}function n(a=(0,f.Lf)()){let b=a.select().from(g.settings).where((0,d.eq)(g.settings.key,h)).get();if(!b)return{...j};try{return i.parse(JSON.parse(b.value))}catch{return{...j}}}function o(a,b){let c=JSON.stringify(a);b.select().from(g.settings).where((0,d.eq)(g.settings.key,h)).get()?b.update(g.settings).set({value:c}).where((0,d.eq)(g.settings.key,h)).run():b.insert(g.settings).values({key:h,value:c}).run()}let p=()=>Math.floor(Date.now()/1e3);async function q(a){let b,c=a.db??(0,f.Lf)(),e=a.fetchImpl??fetch,h=a.now??p(),i=n(c);i.lastSyncAt=h;try{let c={};a.apiKey&&(c.Authorization=`Bearer ${a.apiKey}`);let d=await e("https://openrouter.ai/api/v1/models",{headers:c});if(!d.ok)throw Error(`OpenRouter models API returned HTTP ${d.status}`);b=function(a){let{data:b}=l.parse(a),c=[];for(let a of b){let b=k.safeParse(a);if(!b.success)continue;let d=b.data,e=m(d.pricing?.prompt),f=m(d.pricing?.completion),g=d.supported_parameters??[];c.push({id:d.id,name:d.name??d.id,description:d.description??"",contextLength:d.context_length??0,promptCostPerToken:e,completionCostPerToken:f,supportedParameters:g,expirationDate:function(a){if(null==a)return null;if("number"==typeof a)return Number.isFinite(a)?Math.floor(a):null;let b=Date.parse(a);return Number.isNaN(b)?null:Math.floor(b/1e3)}(d.expiration_date),isFree:d.id.endsWith(":free")||0===e&&0===f,supportsTools:g.includes("tools")})}return c}(await d.json())}catch(a){return i.lastError=a instanceof Error?a.message:String(a),i.consecutiveFailures+=1,o(i,c),{ok:!1,error:i.lastError}}let j=new Set(b.map(a=>a.id));return c.transaction(a=>{for(let c of b){let b={id:c.id,name:c.name,description:c.description,contextLength:c.contextLength,promptCostPerToken:c.promptCostPerToken,completionCostPerToken:c.completionCostPerToken,supportedParameters:JSON.stringify(c.supportedParameters),expirationDate:c.expirationDate,isFree:c.isFree,supportsTools:c.supportsTools,removedAt:null,syncedAt:h};a.insert(g.openrouterModels).values(b).onConflictDoUpdate({target:g.openrouterModels.id,set:b}).run()}for(let b of a.select({id:g.openrouterModels.id}).from(g.openrouterModels).all())j.has(b.id)||a.update(g.openrouterModels).set({removedAt:h}).where((0,d.eq)(g.openrouterModels.id,b.id)).run()}),i.lastSuccessAt=h,i.lastError=null,i.modelCount=b.length,i.consecutiveFailures=0,o(i,c),{ok:!0,modelCount:b.length}}function r(a,b=p()){return null===a.removedAt&&(null===a.expirationDate||!(a.expirationDate<=b))}function s(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=b.select().from(g.openrouterModels).all();return a.includeUnavailable||(d=d.filter(a=>r(a,c))),a.freeOnly&&(d=d.filter(a=>a.isFree)),a.requireTools&&(d=d.filter(a=>a.supportsTools)),d.sort((a,b)=>a.name.localeCompare(b.name))}function t(a,b=(0,f.Lf)()){return b.select().from(g.openrouterModels).where((0,d.eq)(g.openrouterModels.id,a)).get()}function u(a,b,c,d=(0,f.Lf)()){let e=t(a,d);return e?b*e.promptCostPerToken+c*e.completionCostPerToken:0}function v(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=n(b);if(null===d.lastSyncAt||0===d.modelCount&&0===d.consecutiveFailures)return!0;let e=d.consecutiveFailures>0?Math.min(300*2**(d.consecutiveFailures-1),3600):Math.floor(3600*a.refreshHours);return c-d.lastSyncAt>=e}function w(a){let b=a.db??(0,f.Lf)(),c=a.now??p(),d=n(b);return null===d.lastSuccessAt||c-d.lastSuccessAt>2*a.refreshHours*3600}}};
|
|
@@ -4,4 +4,4 @@ stdout:
|
|
|
4
4
|
${i.stdout}
|
|
5
5
|
stderr:
|
|
6
6
|
${i.stderr}`,24e3);if(i.timedOut)return{content:`command timed out after ${h}s
|
|
7
|
-
${j}`,isError:!0};return{content:j,isError:0!==i.exitCode}}default:return{content:`unknown tool: ${a.name}`,isError:!0}}}catch(a){return{content:a instanceof Error?a.message:String(a),isError:!0}}};async function F(a,b,c,r={}){let s,t,u=r.db??(0,g.Lf)(),v=r.broker??(0,n.k)(),x=(0,m.mt)(u),y=r.toolExecutor??E,z=(0,h.L8)(a.repoId,u),A=a.model??z?.defaultModel??x.openrouterDefaultModel,B={costUsd:0,inputTokens:0,outputTokens:0,timedOut:!1,costExceeded:!1},C=(0,k.nc)("openrouter",u);if(C)return v.publish(a.id,{type:"error",payload:{stderr:`session not started: OpenRouter is limit-blocked (${C.kind}) until ${new Date(1e3*C.blockedUntil).toISOString()}`}}),{exitCode:-3,...B,limit:{agent:"openrouter",kind:C.kind,resetAt:C.blockedUntil,rawSnippet:C.rawSnippet,latched:!0}};let D=function(a,b,c,d){if(!c.openrouterEnabled)return{message:"OpenRouter backend is disabled — enable it in Settings before use"};if(!(0,q.t)(c))return{message:"no OpenRouter API key configured — set it in Settings or via DRYDOCK_OPENROUTER_API_KEY"};if(!b)return{message:`job ${a.id} has no OpenRouter model — set one on the job, the repo, or settings.openrouterDefaultModel`};let e=(0,o.Hi)(b,d);return e&&(0,o.fj)(e)?e.supportsTools?c.openrouterFreeModelsOnly&&!e.isFree?{message:`OpenRouter model "${b}" is not free and the free-models-only policy is enabled`}:null:{message:`OpenRouter model "${b}" does not support tools — implementation sessions need a tool-capable model`}:{message:`OpenRouter model "${b}" is not in the synced catalog (or no longer available) — refresh the catalog in Settings or pick a different model`}}(a,A,x,u);if(D)return v.publish(a.id,{type:"error",payload:{stderr:D.message}}),{exitCode:1,...B,spawnError:Error(D.message)};r.sideSession||r.additive||("working"!==a.status?(0,j.dk)(a.id,"working",{model:A},u):u.update(i.jobs).set({model:A}).where((0,d.eq)(i.jobs.id,a.id)).run());let G=r.maxTurns??a.maxTurns,H=(0,q.t)(x),I=[{role:"system",content:"You are Drydock's autonomous coding agent working inside a git worktree; all tool paths are relative to the repository root. Make the requested changes by reading and writing files and running commands (tests, linters, builds). Do not commit, push, branch, or open pull requests — the orchestrator handles all git operations after you finish. When the task is complete, reply with a short summary of what you changed."},{role:"user",content:b}],J=r.timeoutMs&&r.timeoutMs>0?Date.now()+r.timeoutMs:1/0,K=new AbortController;(0,l.registerAbort)(a.id,()=>K.abort()),Number.isFinite(J)&&r.timeoutMs&&(s=setTimeout(()=>K.abort(),r.timeoutMs),s.unref?.());let L=0,M=0,N=0,O=0,P=!1,
|
|
7
|
+
${j}`,isError:!0};return{content:j,isError:0!==i.exitCode}}default:return{content:`unknown tool: ${a.name}`,isError:!0}}}catch(a){return{content:a instanceof Error?a.message:String(a),isError:!0}}};async function F(a,b,c,r={}){let s,t,u=r.db??(0,g.Lf)(),v=r.broker??(0,n.k)(),x=(0,m.mt)(u),y=r.toolExecutor??E,z=(0,h.L8)(a.repoId,u),A=a.model??z?.defaultModel??x.openrouterDefaultModel,B={costUsd:0,inputTokens:0,outputTokens:0,timedOut:!1,costExceeded:!1,maxTurnsReached:!1},C=(0,k.nc)("openrouter",u);if(C)return v.publish(a.id,{type:"error",payload:{stderr:`session not started: OpenRouter is limit-blocked (${C.kind}) until ${new Date(1e3*C.blockedUntil).toISOString()}`}}),{exitCode:-3,...B,limit:{agent:"openrouter",kind:C.kind,resetAt:C.blockedUntil,rawSnippet:C.rawSnippet,latched:!0}};let D=function(a,b,c,d){if(!c.openrouterEnabled)return{message:"OpenRouter backend is disabled — enable it in Settings before use"};if(!(0,q.t)(c))return{message:"no OpenRouter API key configured — set it in Settings or via DRYDOCK_OPENROUTER_API_KEY"};if(!b)return{message:`job ${a.id} has no OpenRouter model — set one on the job, the repo, or settings.openrouterDefaultModel`};let e=(0,o.Hi)(b,d);return e&&(0,o.fj)(e)?e.supportsTools?c.openrouterFreeModelsOnly&&!e.isFree?{message:`OpenRouter model "${b}" is not free and the free-models-only policy is enabled`}:null:{message:`OpenRouter model "${b}" does not support tools — implementation sessions need a tool-capable model`}:{message:`OpenRouter model "${b}" is not in the synced catalog (or no longer available) — refresh the catalog in Settings or pick a different model`}}(a,A,x,u);if(D)return v.publish(a.id,{type:"error",payload:{stderr:D.message}}),{exitCode:1,...B,spawnError:Error(D.message)};r.sideSession||r.additive||("working"!==a.status?(0,j.dk)(a.id,"working",{model:A},u):u.update(i.jobs).set({model:A}).where((0,d.eq)(i.jobs.id,a.id)).run());let G=r.maxTurns??a.maxTurns,H=(0,q.t)(x),I=[{role:"system",content:"You are Drydock's autonomous coding agent working inside a git worktree; all tool paths are relative to the repository root. Make the requested changes by reading and writing files and running commands (tests, linters, builds). Do not commit, push, branch, or open pull requests — the orchestrator handles all git operations after you finish. When the task is complete, reply with a short summary of what you changed."},{role:"user",content:b}],J=r.timeoutMs&&r.timeoutMs>0?Date.now()+r.timeoutMs:1/0,K=new AbortController;(0,l.registerAbort)(a.id,()=>K.abort()),Number.isFinite(J)&&r.timeoutMs&&(s=setTimeout(()=>K.abort(),r.timeoutMs),s.unref?.());let L=r.sideSession||r.additive?u.select().from(i.jobs).where((0,d.eq)(i.jobs.id,a.id)).get()??null:null,M=L?.totalInputTokens??0,N=L?.totalOutputTokens??0,O=L?.costUsd??0,P=0,Q=0,R=0,S=0,T=!1,U=!1;try{let b=0;for(;;){if(J-Date.now()<=0){T=!0,S=-1,v.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${r.timeoutMs}ms`}});break}if(K.signal.aborted){S=1,v.publish(a.id,{type:"error",payload:{stderr:"session aborted"}});break}if(G>0&&b>=G){S=1,v.publish(a.id,{type:"error",payload:{stderr:`OpenRouter session exhausted its ${G}-turn budget`}});break}b+=1;let d=await (0,p.x8)({apiKey:H,model:A,messages:I,tools:w,siteUrl:x.openrouterSiteUrl||void 0,appName:x.openrouterAppName||void 0,fetchImpl:r.fetchImpl,signal:K.signal});Q+=d.usage.promptTokens,R+=d.usage.completionTokens,P+=d.usage.costUsd>0?d.usage.costUsd:(0,o.hz)(A,d.usage.promptTokens,d.usage.completionTokens,u);let e=[];for(let a of(d.text&&e.push({kind:"text",text:d.text}),d.toolCalls)){let b=a.arguments;try{b=JSON.parse(a.arguments)}catch{}e.push({kind:"tool_use",name:a.name,id:a.id,input:b})}if(e.length>0&&v.publish(a.id,{type:"assistant",payload:{chunks:e,costUsd:O+P,inputTokens:M+Q,outputTokens:N+R}}),r.costCapUsd&&r.costCapUsd>0&&P>=r.costCapUsd){U=!0,S=-2,v.publish(a.id,{type:"error",payload:{stderr:`session aborted: per-job cost limit of $${r.costCapUsd} reached`}});break}if("tool_calls"!==d.finishReason||0===d.toolCalls.length)break;for(let b of(I.push({role:"assistant",content:d.text,toolCalls:d.toolCalls}),d.toolCalls)){let d=await y(b,c,{signal:K.signal,timeoutMs:Number.isFinite(J)?Math.max(1,J-Date.now()):void 0});if(K.signal.aborted){I.push({role:"tool",content:"ERROR: session aborted",toolCallId:b.id});break}v.publish(a.id,{type:"user",payload:{chunks:[{kind:"tool_result",toolUseId:b.id,isError:d.isError}]}}),I.push({role:"tool",content:d.isError?`ERROR: ${d.content}`:d.content,toolCallId:b.id})}}}catch(b){K.signal.aborted&&J<=Date.now()?(T=!0,S=-1,v.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${r.timeoutMs}ms`}})):b instanceof p.Sv?(S=1,t=(0,f.t)(b),v.publish(a.id,{type:"error",payload:{stderr:b.message.slice(0,2e3)}})):(S=1,v.publish(a.id,{type:"error",payload:{stderr:b instanceof Error?b.message:String(b)}}))}finally{s&&clearTimeout(s),(0,l.clearAbort)(a.id)}return r.sideSession||r.additive?u.update(i.jobs).set({totalInputTokens:(0,e.ll)`coalesce(${i.jobs.totalInputTokens}, 0) + ${Q}`,totalOutputTokens:(0,e.ll)`coalesce(${i.jobs.totalOutputTokens}, 0) + ${R}`,costUsd:(0,e.ll)`coalesce(${i.jobs.costUsd}, 0) + ${P}`}).where((0,d.eq)(i.jobs.id,a.id)).run():u.update(i.jobs).set({totalInputTokens:Q,totalOutputTokens:R,costUsd:P}).where((0,d.eq)(i.jobs.id,a.id)).run(),{exitCode:S,costUsd:P,inputTokens:Q,outputTokens:R,timedOut:T,costExceeded:U,maxTurnsReached:!1,limit:t}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=944,exports.ids=[944],exports.modules={772:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(34215).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/drydock/drydock/node_modules/.pnpm/lucide-react@1.18.0_react@19.2.7/node_modules/lucide-react/dist/esm/Icon.mjs\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/drydock/drydock/node_modules/.pnpm/lucide-react@1.18.0_react@19.2.7/node_modules/lucide-react/dist/esm/Icon.mjs","default")},10913:(a,b,c)=>{"use strict";function d(a){return a?`hsl(var(--${a}))`:"hsl(var(--muted-foreground))"}c.d(b,{U:()=>d})},12248:(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}function e(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}c.r(b),c.d(b,{_:()=>e})},30285:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(8578);let e=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var f=c(772);let g=(a,b)=>{let c=(0,d.forwardRef)(({className:c,...g},h)=>(0,d.createElement)(f.default,{ref:h,iconNode:b,className:((...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim())(`lucide-${e(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,c),...g}));return c.displayName=e(a),c}},34679:(a,b,c)=>{"use strict";c.d(b,{U:()=>g});var d=c(87383),e=c(25900),f=c(10913);function g({items:a,unit:b="",money:c,max:h,className:i}){let j=h||Math.max(...a.map(a=>a.value),1);return(0,d.jsx)("ul",{className:(0,e.cn)("flex flex-col gap-2.5",i),children:a.map((a,e)=>{let g;return(0,d.jsxs)("li",{className:"grid grid-cols-[1fr_auto] items-center gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"mb-1 flex items-center justify-between gap-2",children:(0,d.jsx)("span",{className:"truncate text-[13px] text-foreground",children:a.label})}),(0,d.jsx)("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:(0,d.jsx)("div",{className:"dd-bar h-full rounded-full",style:{width:`${a.value/j*100}%`,backgroundColor:(0,f.U)(a.tone||"chart-1"),animationDelay:`${70*e}ms`}})})]}),(0,d.jsx)("span",{className:"tnum text-sm font-medium text-foreground tabular-nums",children:(g=a.value,c?`$${g.toFixed(2)}`:`${g}${b}`)})]},e)})})}},45030:(a,b,c)=>{let{createProxy:d}=c(81374);a.exports=d("/home/runner/work/drydock/drydock/node_modules/.pnpm/next@16.2.9_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/next/dist/client/app-dir/link.js")},46136:(a,b,c)=>{"use strict";c.d(b,{p:()=>g});var d=c(87383),e=c(25900);let f={neutral:"bg-secondary text-muted-foreground",primary:"bg-primary/10 text-primary",success:"bg-success-muted text-success",warning:"bg-warning-muted text-warning",destructive:"bg-destructive/10 text-destructive"};function g({icon:a,tone:b="neutral",title:c,description:h,action:i,secondary:j,className:k,compact:l}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col items-center justify-center text-center",l?"py-10":"py-16",k),children:[a&&(0,d.jsx)("div",{className:(0,e.cn)("flex items-center justify-center rounded-2xl",l?"h-12 w-12":"h-16 w-16",f[b]),children:(0,d.jsx)(a,{className:l?"h-[22px] w-[22px]":"h-7 w-7"})}),(0,d.jsx)("h3",{className:"mt-4 text-base font-semibold",children:c}),h&&(0,d.jsx)("p",{className:"mt-1 max-w-sm text-pretty text-sm text-muted-foreground",children:h}),(i||j)&&(0,d.jsxs)("div",{className:"mt-5 flex items-center gap-2",children:[i,j]})]})}},50050:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(71859).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},56069:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"005c29168158919ad4ebdef049c32f2af73de865a5":()=>e.MA,"00660de086391aa26430a4d805574659cf6b4370ea":()=>d.o$,"40000b4b84e28d5ae3c149ab9bea206d1cb6c08e36":()=>e.$y,"400d3fe629a81919d0d820b9bc711ea1d3d3474715":()=>d.aE,"4059e24a265e6119e48b22392e63bd485d23f1e520":()=>d.AU,"40e798a082ede38293e3636950eb02a1cb2ba49149":()=>e.r6,"60d5637398d15b44490626ec9dbfb9dcbafc153010":()=>d.D5});var d=c(75047),e=c(44045)},57284:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(30285).A)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]])},59810:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(30285).A)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]])},64261:(a,b,c)=>{"use strict";c.d(b,{l:()=>h});var d=c(27905),e=c(50050),f=c(35924),g=c(5270);let h=f.forwardRef(({className:a,children:b,...c},f)=>(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("select",{ref:f,className:(0,g.cn)("h-9 w-full appearance-none cursor-pointer rounded-lg border border-input bg-background pl-3 pr-9 text-sm text-foreground","transition focus-ring","disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:b}),(0,d.jsx)(e.A,{className:"pointer-events-none absolute right-2.5 top-1/2 h-[15px] w-[15px] -translate-y-1/2 text-muted-foreground"})]}));h.displayName="Select"},77283:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(12248),g=c(87383),h=f._(c(45030));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},79437:(a,b,c)=>{"use strict";c.d(b,{Zp:()=>g});var d=c(87383),e=c(25900);let f={none:"",sm:"p-4",default:"p-5",lg:"p-6"};function g({className:a,pad:b,hover:c,...h}){return(0,d.jsx)("div",{className:(0,e.cn)("rounded-xl border border-card-border bg-card text-card-foreground shadow-sm",c&&"hover-elevate transition-shadow hover:shadow-md",b&&f[b],a),...h})}},79874:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(30285).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},94895:(a,b,c)=>{"use strict";c.d(b,{z:()=>j});var d=c(87383),e=c(79874),f=c(77283),g=c.n(f),h=c(8578),i=c(25900);function j({title:a,subtitle:b,breadcrumb:c,actions:f,icon:k,className:l}){return(0,d.jsxs)("div",{className:(0,i.cn)("mb-6 flex flex-wrap items-end justify-between gap-4",l),children:[(0,d.jsxs)("div",{className:"min-w-0",children:[c&&c.length>0&&(0,d.jsx)("nav",{className:"mb-1.5 flex items-center gap-1.5 text-xs text-muted-foreground",children:c.map((a,b)=>(0,d.jsxs)(h.Fragment,{children:[b>0&&(0,d.jsx)(e.A,{className:"h-3 w-3 opacity-60","aria-hidden":!0}),a.href?(0,d.jsx)(g(),{href:a.href,className:"rounded transition-colors hover:text-foreground focus-ring",children:a.label}):(0,d.jsx)("span",{className:"text-foreground/80",children:a.label})]},a.href??a.label))}),(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[k&&(0,d.jsx)("span",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:(0,d.jsx)(k,{className:"h-[17px] w-[17px]"})}),(0,d.jsx)("h1",{className:"text-pretty text-2xl font-bold tracking-tight",children:a})]}),b&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:b})]}),f&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:f})]})}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/gBXyOslZ8CoJrAVnOEHDm/_buildManifest.js","static/gBXyOslZ8CoJrAVnOEHDm/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-b714fc1ebddcfe09.js","static/chunks/3e790000-f9f6b75bdfe093b0.js","static/chunks/4234-bb2658cdb395b2ed.js","static/chunks/main-app-8dd0566dc4fe07cf.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|