@nilsr0711/drydock 0.1.7 → 0.1.8
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 +1 -1
- 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.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.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 +1 -1
- 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/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/685.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/99.js +14 -11
- 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/1298-0d60333e56ac8b2c.js +1 -0
- 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/{1642-a1ea35450c1b5c95.js → 8264-c27834f1552f983a.js} +1 -1
- 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-0c221fc18d1e89af.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-6ef8bc39b5181817.js +1 -0
- package/.next/standalone/.next/static/chunks/app/jobs/page-98215ec1497b829e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-402d4ab34259b89b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/needs-human/page-b69ac22856c0a0b1.js +1 -0
- package/.next/standalone/.next/static/chunks/app/page-ccefa99d40734a8c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/prompts/page-bcd1063eb5d64aa5.js +1 -0
- package/.next/standalone/.next/static/chunks/app/repos/[id]/page-2bd4b35a0b28042e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-13a04ecac139b74c.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/mcp-server.cjs +42934 -0
- package/.next/standalone/package.json +5 -3
- package/.next/static/chunks/1298-0d60333e56ac8b2c.js +1 -0
- 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/{1642-a1ea35450c1b5c95.js → 8264-c27834f1552f983a.js} +1 -1
- package/.next/{standalone/.next/static/chunks/4624-5e23973d35b58ca5.js → static/chunks/8745-8b3833b3d2afa30c.js} +1 -1
- package/.next/static/chunks/app/adrs/page-0c221fc18d1e89af.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-6ef8bc39b5181817.js +1 -0
- package/.next/static/chunks/app/jobs/page-98215ec1497b829e.js +1 -0
- package/.next/static/chunks/app/layout-402d4ab34259b89b.js +1 -0
- package/.next/static/chunks/app/needs-human/page-b69ac22856c0a0b1.js +1 -0
- package/.next/static/chunks/app/page-ccefa99d40734a8c.js +1 -0
- package/.next/static/chunks/app/prompts/page-bcd1063eb5d64aa5.js +1 -0
- package/.next/static/chunks/app/repos/[id]/page-2bd4b35a0b28042e.js +1 -0
- package/.next/static/chunks/app/settings/page-13a04ecac139b74c.js +1 -0
- package/.next/static/css/{bdce0893cf6b9cb9.css → 600a5b5311ad42be.css} +1 -1
- package/README.md +60 -21
- package/bin/drydock.mjs +77 -2
- package/drizzle/0034_human_instruction.sql +1 -0
- package/drizzle/0035_agent_release.sql +4 -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/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 → qSEvPCWIslg9lcxt6XQhl}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{-sJQutzNDvUvcdmf3YlJA → qSEvPCWIslg9lcxt6XQhl}/_ssgManifest.js +0 -0
- /package/.next/static/{-sJQutzNDvUvcdmf3YlJA → qSEvPCWIslg9lcxt6XQhl}/_buildManifest.js +0 -0
- /package/.next/static/{-sJQutzNDvUvcdmf3YlJA → qSEvPCWIslg9lcxt6XQhl}/_ssgManifest.js +0 -0
|
@@ -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.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;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},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,limit:t}}}};
|