@crewx/sdk 0.9.0-rc.78 → 0.9.0-rc.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context-budget/continuity.d.ts +9 -1
- package/dist/context-budget/index.d.ts +2 -1
- package/dist/conversation/sqlite-provider.d.ts +2 -1
- package/dist/conversation/types.d.ts +13 -0
- package/dist/esm/index.js +113 -106
- package/dist/esm/plugins/index.js +113 -113
- package/dist/esm/repository/index.js +15 -15
- package/dist/facade/Crewx.d.ts +3 -3
- package/dist/highlight/thread-highlight-prompt.d.ts +1 -0
- package/dist/highlight/thread-highlighter.d.ts +12 -1
- package/dist/index.browser.js +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +114 -107
- package/dist/layout/types.d.ts +2 -0
- package/dist/plugins/index.js +113 -113
- package/dist/repository/index.js +15 -15
- package/dist/repository/thread-history.repository.d.ts +1 -0
- package/package.json +1 -1
- package/templates/agents/default.yaml +17 -10
package/dist/facade/Crewx.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { ChannelAdapterRegistration } from '../adapter/types';
|
|
|
5
5
|
import type { CrewxProjectConfig, AgentConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult } from '../types';
|
|
6
6
|
import type { TemplateContext } from '../template/types';
|
|
7
7
|
import type { CustomLayoutDefinition, LayoutCapabilities } from '../layout/types';
|
|
8
|
-
import type { SemanticContinuityContext, TemplateMessage } from '../conversation/types';
|
|
8
|
+
import type { ConversationThreadState, SemanticContinuityContext, TemplateMessage } from '../conversation/types';
|
|
9
9
|
import type { HandlerOptions, CrewxHandler } from '../server/handler';
|
|
10
10
|
import type { RemoteProviderConfig } from '../remote/types.js';
|
|
11
11
|
import type { UiRuntimeFacade, UiRuntimeOptions } from '../ui-instance/types.js';
|
|
@@ -43,6 +43,7 @@ export interface RenderAgentPromptOptions {
|
|
|
43
43
|
skills?: SkillEntry[];
|
|
44
44
|
messages?: TemplateMessage[];
|
|
45
45
|
semanticContinuity?: SemanticContinuityContext;
|
|
46
|
+
threadState?: ConversationThreadState;
|
|
46
47
|
threadId?: string;
|
|
47
48
|
}
|
|
48
49
|
export declare class Crewx extends TypedEventEmitter {
|
|
@@ -52,7 +53,6 @@ export declare class Crewx extends TypedEventEmitter {
|
|
|
52
53
|
private readonly _layoutLoader;
|
|
53
54
|
private readonly _layoutRenderer;
|
|
54
55
|
private readonly _config?;
|
|
55
|
-
private readonly _configPath?;
|
|
56
56
|
private readonly _projectRoot;
|
|
57
57
|
private readonly _workspaceId;
|
|
58
58
|
private readonly _workspaceName;
|
|
@@ -108,7 +108,6 @@ export declare class Crewx extends TypedEventEmitter {
|
|
|
108
108
|
private _extractLayoutProps;
|
|
109
109
|
private _resolveLayoutContinuityCapability;
|
|
110
110
|
private _getConversationProvider;
|
|
111
|
-
private _isThreadHighlightsEnabled;
|
|
112
111
|
private _filterActivityLogByTaskIds;
|
|
113
112
|
private _fetchHistoryMessages;
|
|
114
113
|
private _resolveFreshProvider;
|
|
@@ -118,6 +117,7 @@ export declare class Crewx extends TypedEventEmitter {
|
|
|
118
117
|
private _resolveContextMode;
|
|
119
118
|
private _hasUsableResumeSessionId;
|
|
120
119
|
private _buildInstructionOnlyResumeManifest;
|
|
120
|
+
private _buildInstructionOnlyContinuity;
|
|
121
121
|
private _prepareInstructionOnlyResumeWithBudget;
|
|
122
122
|
private _activityLogEntryCounts;
|
|
123
123
|
private _buildUnresolvedContextBudgetManifest;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const THREAD_HIGHLIGHT_PROMPT_INSTRUCTIONS: string;
|
|
@@ -2,12 +2,17 @@ import { z } from 'zod';
|
|
|
2
2
|
import type { ThreadHighlight } from '../schema/thread-history.js';
|
|
3
3
|
import type { ProviderRuntime } from '../provider/bridge.js';
|
|
4
4
|
import type { CreateThreadHighlightInput } from '../repository/thread-history.repository.js';
|
|
5
|
+
export { THREAD_HIGHLIGHT_PROMPT_INSTRUCTIONS } from './thread-highlight-prompt.js';
|
|
5
6
|
export declare const THREAD_HIGHLIGHTER_AGENT_ID: "thread_highlighter";
|
|
6
7
|
export declare const THREAD_HIGHLIGHTER_PROVIDER_ORDER: readonly ["cli/claude", "cli/opencode", "cli/copilot", "cli/codex"];
|
|
7
8
|
export type ThreadHighlightProviderId = (typeof THREAD_HIGHLIGHTER_PROVIDER_ORDER)[number];
|
|
8
9
|
export declare const MAX_THREAD_HIGHLIGHT_TURN_TEXT_LENGTH = 4000;
|
|
9
10
|
export declare const MAX_THREAD_HIGHLIGHT_PROMPT_LENGTH = 32000;
|
|
10
|
-
export declare const MAX_THREAD_HIGHLIGHTS_PER_RUN =
|
|
11
|
+
export declare const MAX_THREAD_HIGHLIGHTS_PER_RUN = 8;
|
|
12
|
+
export declare const MAX_THREAD_HIGHLIGHT_INPUT_TURNS = 100;
|
|
13
|
+
export declare const MAX_THREAD_HIGHLIGHT_ALREADY_RECORDED_COUNT = 20;
|
|
14
|
+
export declare const MAX_THREAD_HIGHLIGHT_ALREADY_RECORDED_TEXT_LENGTH = 160;
|
|
15
|
+
export declare const MAX_THREAD_HIGHLIGHT_ALREADY_RECORDED_TOTAL_LENGTH = 4000;
|
|
11
16
|
export declare const ThreadHighlightItemSchema: z.ZodObject<{
|
|
12
17
|
kind: z.ZodEnum<["decision", "judgment", "issue", "result", "pivot"]>;
|
|
13
18
|
text: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
@@ -79,11 +84,17 @@ export interface ThreadHighlightTaskTurn {
|
|
|
79
84
|
completedAt?: string | null;
|
|
80
85
|
completed_at?: string | null;
|
|
81
86
|
}
|
|
87
|
+
export interface ThreadHighlightAlreadyRecorded {
|
|
88
|
+
kind: ThreadHighlight['kind'];
|
|
89
|
+
text: string;
|
|
90
|
+
}
|
|
82
91
|
export interface ThreadHighlightGenerationInput {
|
|
83
92
|
threadId: string;
|
|
84
93
|
agentId?: string;
|
|
85
94
|
workspaceId?: string;
|
|
86
95
|
turns: readonly ThreadHighlightTaskTurn[];
|
|
96
|
+
alreadyRecorded?: readonly ThreadHighlightAlreadyRecorded[];
|
|
97
|
+
already_recorded?: readonly ThreadHighlightAlreadyRecorded[];
|
|
87
98
|
coversFromTaskId?: string;
|
|
88
99
|
coversToTaskId?: string;
|
|
89
100
|
covers_from_task_id?: string;
|
package/dist/index.browser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {load}from'js-yaml';import'js-tiktoken';import'js-tiktoken/lite';import
|
|
2
|
-
`);
|
|
1
|
+
import {load}from'js-yaml';import'js-tiktoken';import'js-tiktoken/lite';import He from'js-tiktoken/ranks/o200k_base';import {z as z$1}from'zod';var T=class extends Error{constructor(e,n){let o=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${o}`),this.name="AgentNotFoundError";}},fe={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function b(t,e){let n=t.startsWith("@")?t.slice(1):t,o=e.find(i=>i.id===n);if(o)return o;let r=fe[n];if(r)return r;throw new T(t,e.map(i=>i.id))}var g=class extends Error{constructor(n,o,r){super(n);this.providerStr=o;this.name="ProviderError",this.code=r?.code??"UNKNOWN",this.kind=r?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=r?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};var q=new Map;function M(t,e){q.set(t,e);}function P(t){let e=t.split("/");if(e.length!==2)throw new g(`Invalid provider format: "${t}". Expected namespace/id (e.g., api/webllm)`,t);let[n,o]=e,r=q.get(n);if(r)return r(o,t);throw new g(`Unsupported provider namespace: "${n}". Register a factory with registerProviderFactory('${n}', factory).`,t)}var me=new Function("u","return import(u)"),w=class t{_agents;_config;_tools=new Map;_apiProviders=new Map;constructor(e,n){this._agents=new Map(e.map(o=>[o.id,o])),this._config=n;}static async fromConfig(e,n){let o=new t(e.agents??[],e),r=e.agents??[],i=c=>Array.isArray(c.provider)?c.provider[0]:c.provider,d=r.filter(c=>i(c)==="api/webllm"),a=r.filter(c=>i(c)==="api/openrouter");if(d.length>0&&await o._initWebLLM(d,n?.onProgress),a.length>0){if(!n?.openrouterApiKey)throw new Error("openrouterApiKey is required when using api/openrouter provider");o._initOpenRouter(a,n.openrouterApiKey);}return o._apiProviders.size>0&&M("api",(c,l)=>{let u=o._apiProviders.get(c);if(!u)throw new g(`Unknown api provider: ${c}`,l);return u}),o}async _initWebLLM(e,n){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not available. Chrome 113+ or Edge 113+ required.");let o=await me("https://esm.run/@mlc-ai/web-llm"),r=e[0]?.inline?.model??"gemma-2-2b-it-q4f16_1-MLC",i=await o.CreateMLCEngine(r,{initProgressCallback:n?a=>n(a):void 0}),d=[];this._apiProviders.set("webllm",{async query(a,c){let l=[];c?.systemPrompt&&l.push({role:"system",content:c.systemPrompt}),l.push(...d),l.push({role:"user",content:a});let u="",m=await i.chat.completions.create({messages:l,stream:true,temperature:.7,max_tokens:4096});for await(let _ of m){let x=_.choices?.[0]?.delta?.content??"";u+=x,c?.onOutput&&c.onOutput(u,"stdout");}return d.push({role:"user",content:a}),d.push({role:"assistant",content:u}),u},async execute(a,c){return this.query(a,c)}});}_initOpenRouter(e,n){let o=e[0]?.inline?.model??"google/gemma-2-2b-it",r=[];this._apiProviders.set("openrouter",{async query(i,d){let a=[];d?.systemPrompt&&a.push({role:"system",content:d.systemPrompt}),a.push(...r),a.push({role:"user",content:i});let c=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"},body:JSON.stringify({model:d?.model||o,messages:a,stream:true})});if(!c.ok){let x=await c.text();throw new Error(`OpenRouter API error (${c.status}): ${x}`)}let l=c.body.getReader(),u=new TextDecoder,m="",_="";for(;;){let{done:x,value:pe}=await l.read();if(x)break;_+=u.decode(pe,{stream:true});let $=_.split(`
|
|
2
|
+
`);_=$.pop();for(let ge of $){let O=ge.trim();if(!O||!O.startsWith("data: "))continue;let V=O.slice(6);if(V!=="[DONE]")try{let K=JSON.parse(V).choices?.[0]?.delta?.content??"";m+=K,K&&d?.onOutput&&d.onOutput(m,"stdout");}catch{}}}return r.push({role:"user",content:i}),r.push({role:"assistant",content:m}),m},async execute(i,d){return this.query(i,d)}});}get agents(){return this._agents}get config(){return this._config}get tools(){return this._tools}registerTool(e,n){this._tools.set(e,{name:e,...n});}async query(e,n,o){let r=Date.now(),i;try{i=b(e,Array.from(this._agents.values()));}catch(u){if(u instanceof T)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:u.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-r}};throw u}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,a=o?.provider??d,c=o?.model??i.inline?.model,l;try{l=P(a);}catch(u){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:u.message,...u instanceof g?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}try{return {ok:!0,data:await l.query(n,{model:c,context:o?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt,onOutput:o?.onOutput?m=>o.onOutput(m):void 0}),meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}catch(u){return {ok:false,data:"",error:{code:"QUERY_FAILED",message:u.message,...u instanceof g?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}}async execute(e,n,o){let r=Date.now(),i;try{i=b(e,Array.from(this._agents.values()));}catch(u){if(u instanceof T)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:u.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-r}};throw u}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,a=o?.provider??d,c=o?.model??i.inline?.model,l;try{l=P(a);}catch(u){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:u.message,...u instanceof g?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}try{return {ok:!0,data:await l.execute(n,{model:c,context:o?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt}),meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}catch(u){return {ok:false,data:"",error:{code:"EXECUTE_FAILED",message:u.message,...u instanceof g?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:a,model:c,durationMs:Date.now()-r}}}}};var p="[REDACTED]",X="[PATH]";function R(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${p}]`),e=Te(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${p}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,p),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,p),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,p),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,p),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,p),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,p),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,p),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,p),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,p),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,o)=>`${p}${o}${p}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${p}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,X),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,X),e=e.replace(/[\r\n]{3,}/g,`
|
|
3
3
|
|
|
4
4
|
`).trim(),he(e,1024)||void 0}function he(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let o="",r=0;for(let i of t){let d=n.encode(i).byteLength;if(r+d>e)break;o+=i,r+=d;}return o}function Te(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",o=0,r;for(;(r=e.exec(t))!==null;){if(r.index<o)continue;let i=r.index+r[0].length,d=ye(t,i),a=d>=0?d:t.indexOf(`
|
|
5
5
|
`,i)>=0?t.indexOf(`
|
|
6
|
-
`,i):t.length;n+=t.slice(o,r.index),n+=`[HTTP BODY ${p}]`,o=a;}return n+t.slice(o)}function ye(t,e){let n=t[e];if(n==='"'||n==="'")return ve(t,e,n);if(n!=="{"&&n!=="[")return -1;let o=[],r,i=false;for(let d=e;d<t.length;d+=1){let a=t[d];if(r){i?i=false:a==="\\"?i=true:a===r&&(r=void 0);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="{"||a==="["){o.push(a);continue}if(a!=="}"&&a!=="]")continue;let c=o.pop();if(a==="}"&&c!=="{"||a==="]"&&c!=="[")return -1;if(o.length===0)return d+1}return -1}function ve(t,e,n){let o=false;for(let r=e+1;r<t.length;r+=1){let i=t[r];if(o)o=false;else if(i==="\\")o=true;else if(i===n)return r+1}return -1}var Ee=new Set(["USAGE_LIMITED","CONTEXT_WINDOW_EXCEEDED","INPUT_TOO_LARGE","MODEL_NOT_SUPPORTED","MODEL_AT_CAPACITY","AUTH_REQUIRED","CLI_NOT_AVAILABLE","CLI_UPDATE_REQUIRED","AGENT_NOT_FOUND","PERMISSION_OR_TRUST","TIMEOUT_OR_STUCK","NETWORK_OR_PROVIDER_TRANSIENT","PROVIDER_CONFIGURATION","PROCESS_FAILED"]),xe={QUOTA_EXHAUSTED:"USAGE_LIMITED",RATE_LIMITED:"USAGE_LIMITED",AUTH_REQUIRED:"AUTH_REQUIRED",TIMEOUT_IDLE:"TIMEOUT_OR_STUCK",TIMEOUT_TOTAL:"TIMEOUT_OR_STUCK",PROVIDER_NOT_FOUND:"PROVIDER_CONFIGURATION",INVALID_PROVIDER_FORMAT:"PROVIDER_CONFIGURATION",PROVIDER_CRASHED:"PROCESS_FAILED",EMPTY_OUTPUT:"PROCESS_FAILED"},ke=[{code:"USAGE_LIMITED",pattern:/(?:rate[ _-]?limit|quota|usage[ /_-]?limit|usage exhausted|too many requests|429\b)/i},{code:"CONTEXT_WINDOW_EXCEEDED",pattern:/context (?:window|length)|maximum context|context[_ -]?window[_ -]?exceeded|too many tokens/i},{code:"INPUT_TOO_LARGE",pattern:/input[_ -]?(?:is[_ -]?)?too[_ -]?large|prompt (?:is )?too (?:large|long)|request[_ -]?(?:is[_ -]?)?too[_ -]?large|payload[_ -]?(?:is[_ -]?)?too[_ -]?large|maximum input/i},{code:"MODEL_AT_CAPACITY",pattern:/(?:model|service|provider).*(?:at capacity|overloaded|temporarily busy)|at capacity|overloaded/i},{code:"MODEL_NOT_SUPPORTED",pattern:/(?:model|invalid_request_error).*(?:not[ _-]?supported|unsupported|does[ _-]?not[ _-]?exist|not[ _-]?found|invalid)|model[_-]?not[_-]?(?:found|supported)/i},{code:"AUTH_REQUIRED",pattern:/(?:401\b|unauthori[sz]ed|not logged in|login required|sign[ -]?in required|api key (?:is )?(?:missing|invalid|required)|authentication required)/i},{code:"CLI_UPDATE_REQUIRED",pattern:/(?:requires? a newer version|update (?:your )?cli|cli version.*(?:old|outdated|unsupported)|version mismatch)/i},{code:"CLI_NOT_AVAILABLE",pattern:/(?:ENOENT|command not found|executable.*not found|cli.*(?:not installed|unavailable)|is .* installed\?)/i},{code:"AGENT_NOT_FOUND",pattern:/agent[_ -]?not[_ -]?found|unknown agent/i},{code:"PERMISSION_OR_TRUST",pattern:/(?:permission denied|operation not permitted|workspace trust|not trusted|access denied|EACCES|EPERM)/i},{code:"TIMEOUT_OR_STUCK",pattern:/(?:timeout|timed out|took too long|stuck|idle timeout|ETIMEDOUT)/i},{code:"NETWORK_OR_PROVIDER_TRANSIENT",pattern:/(?:network (?:unreachable|error)|connection (?:reset|refused|closed)|ECONN(?:RESET|REFUSED|ABORTED)|service unavailable|upstream.*(?:5\d\d|error)|provider.*(?:5\d\d|unavailable|down)|\b5\d\d\b)/i},{code:"PROVIDER_CONFIGURATION",pattern:/(?:invalid provider|unsupported provider|provider namespace|provider configuration|provider config|missing provider)/i}];function Ie(t){try{if(!h(t)||t.status!=="failed")return D();let e=Ce(t.error);if(L(e.message))return D();let n=f(t.providerId)??e.provider??null,o=Pe(t.logs),r=X(e.code);if(r)return I(r,n,e.message,e);let i=O(e.providerCode)??O(e.code),d=i?U(i,e.message):void 0;if(d)return I(d,n,e.message,e,i);let a=Oe(o);if(!_e(e)&&a&&(a.type==="user_stop"||L(a.message)))return D();if(a){let l=Ae(a.code,a.providerCode,a.message);if(l)return I(l,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let c=be(e.message,o);return c?I(c.code,n,c.message,e,c.terminal?.providerCode??c.terminal?.code,c.terminal,c.terminal?.structuredFailure?"terminal":"envelope"):I("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function D(){return {errorCode:null,errorProvider:null}}function I(t,e,n,o,r,i,d="envelope"){let a={};if(i?.resetAt!==void 0&&(a.resetAt=i.resetAt),o?.model&&(a.model=o.model),i?.type&&(a.upstreamType=i.type),r&&(a.upstreamCode=r),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let m=e?.startsWith("cli/")?e.slice(4):void 0;m&&(a.cliName=m);}let c=d==="terminal"?n:o?.message,l=d==="terminal"?i?.structuredFailure?c:void 0:o?.isEnvelope?c:void 0,u=R(l);return u&&(a.technicalMessage=u),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function Ce(t){let e=typeof t=="string"?v(t):t;return h(e)?{isEnvelope:true,code:f(e.code),providerCode:f(e.providerCode),message:f(e.message)??f(e.error),provider:f(e.provider)??f(e.errorProvider),model:f(e.model)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function v(t){try{return JSON.parse(t)}catch{return}}function _e(t){return !!(t.code||t.providerCode||t.message)}function Pe(t){let e=[];if(typeof t=="string"){let n=v(t);if(Array.isArray(n))e.push(...n);else for(let o of t.split(/\r?\n/)){let r=v(o.trim());r!==void 0&&e.push(r);}}else Array.isArray(t)?e.push(...t):h(t)&&e.push(t);return e.flatMap(y)}function y(t){if(!h(t))return [];let e=f(t.type),n=f(t.message);if(n&&!e){let r=v(n);if(Array.isArray(r))return r.flatMap(y);if(h(r))return y(r);let i=n.split(/\r?\n/).map(d=>v(d.trim())).filter(d=>h(d));return i.length>0?i.flatMap(y):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:y({type:"info",content:n})}if(e==="rate_limit_event"){let r=Q(t.rate_limit_info);return f(r?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:C(r?.message,t.message),resetAt:Me(r?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let r=Q(t.error),i=C(r?.message,r?.detail,t.message,t.errorMessage,t.content),d=C(r?.code,t.code,t.errorCode);return [{type:e,code:d,providerCode:C(r?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let r=v(t.content);if(h(r))return y(r)}let o=C(t.errorMessage,t.content);return o&&L(o)?[{type:"user_stop",message:o,rank:1,structuredFailure:false}]:o&&/(?:turn\.failed|type:error)/i.test(o)?[{type:o.match(/turn\.failed/i)?"turn.failed":"error",message:o,rank:3,structuredFailure:false}]:[]}function Oe(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Ae(t,e,n){let o=X(t);if(o)return o;if(t){let r=U(t,n);if(r)return r}if(e){let r=U(e,n);if(r)return r}return S(n)}function be(t,e){let n=S(t);if(n)return {code:n,message:t};for(let o of [...e].sort((r,i)=>i.rank-r.rank)){let r=S(o.message);if(r)return {code:r,message:o.message,terminal:o}}}function S(t){if(!(typeof t!="string"||!t.trim()))return ke.find(e=>e.pattern.test(t))?.code}function U(t,e){let n=O(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return xe[n]}function X(t){let e=O(t);return e&&Ee.has(e)?e:void 0}function O(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function L(t){return t?/\b(?:stopped|killed|aborted|cancelled|canceled)\s+by\s+user\b/i.test(t)||/사용자에 의해 중지됨/.test(t)||/\b(?:SIGTERM\s+143|143\s+SIGTERM)\b/i.test(t):false}function h(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Q(t){return h(t)?t:void 0}function f(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function Me(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function C(...t){return t.map(f).find(e=>!!e)}var Z={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}},providerOptions:[]},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}},providerOptions:[]},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{},providerOptions:[]},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{},providerOptions:[]},antigravity:{models:[{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.5-flash",name:"Gemini 3.5 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",contextWindowTokens:1e6,tier:"flagship"},{id:"gpt-oss-120b",name:"GPT-OSS 120B",contextWindowTokens:128e3,tier:"balanced"}],modes:[{id:"default",name:"Default",description:"Uses Antigravity's default permission handling. No extra permission flags are passed."},{id:"plan",name:"Plan",description:"Passes --mode plan. This turns on /plan; it is not a Claude-style permission mode."},{id:"acceptEdits",name:"Accept Edits",description:"Passes --mode accept-edits."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Passes --dangerously-skip-permissions so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"gemini-3.7-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.6-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.5-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.1-pro":{effort:["low","high"],defaultEffort:"high"},"claude-sonnet-4-6":{effort:[]},"claude-opus-4-6-thinking":{effort:[]},"gpt-oss-120b":{effort:["medium"],defaultEffort:"medium"}},providerOptions:[]},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"default",name:"Default",description:"Uses Grok's default permission handling."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without changing the selected sandbox profile."},{id:"auto",name:"Auto",description:"Uses Grok automatic permission handling."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permission before tool execution."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Grok permission checks for tool execution."},{id:"plan",name:"Plan",description:"Keeps Grok in planning mode without applying changes."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}},providerOptions:[{key:"alwaysApprove",type:"boolean"},{key:"sandbox",type:"enum",values:["workspace","read-only","off"]}]}};Object.fromEntries(Object.entries(Z).map(([t,e])=>[t,e.models]));var De="claude-opus-4-8",Se="claude-opus-4-8[1m]",J=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}];var Ue=new Map(J.map(({baseModelId:t,catalogModelId:e})=>[t,e]));function ee(t){return Ue.get(t)??t}var te=[{legacyId:"Gemini 3.7 Flash (High)",model:"gemini-3.7-flash",effort:"high"},{legacyId:"Gemini 3.7 Flash (Medium)",model:"gemini-3.7-flash",effort:"medium"},{legacyId:"Gemini 3.7 Flash (Low)",model:"gemini-3.7-flash",effort:"low"},{legacyId:"Gemini 3.6 Flash (High)",model:"gemini-3.6-flash",effort:"high"},{legacyId:"Gemini 3.6 Flash (Medium)",model:"gemini-3.6-flash",effort:"medium"},{legacyId:"Gemini 3.6 Flash (Low)",model:"gemini-3.6-flash",effort:"low"},{legacyId:"Gemini 3.5 Flash (Medium)",model:"gemini-3.5-flash",effort:"medium"},{legacyId:"Gemini 3.5 Flash (High)",model:"gemini-3.5-flash",effort:"high"},{legacyId:"Gemini 3.5 Flash (Low)",model:"gemini-3.5-flash",effort:"low"},{legacyId:"Gemini 3.1 Pro (Low)",model:"gemini-3.1-pro",effort:"low"},{legacyId:"Gemini 3.1 Pro (High)",model:"gemini-3.1-pro",effort:"high"},{legacyId:"Claude Sonnet 4.6 (Thinking)",model:"claude-sonnet-4-6"},{legacyId:"Claude Opus 4.6 (Thinking)",model:"claude-opus-4-6-thinking"},{legacyId:"GPT-OSS 120B (Medium)",model:"gpt-oss-120b",effort:"medium"},{legacyId:"gemini-3.7-flash-high",model:"gemini-3.7-flash",effort:"high"},{legacyId:"gemini-3.7-flash-medium",model:"gemini-3.7-flash",effort:"medium"},{legacyId:"gemini-3.7-flash-low",model:"gemini-3.7-flash",effort:"low"},{legacyId:"gemini-3.6-flash-high",model:"gemini-3.6-flash",effort:"high"},{legacyId:"gemini-3.6-flash-medium",model:"gemini-3.6-flash",effort:"medium"},{legacyId:"gemini-3.6-flash-low",model:"gemini-3.6-flash",effort:"low"},{legacyId:"gemini-3.5-flash-high",model:"gemini-3.5-flash",effort:"high"},{legacyId:"gemini-3.5-flash-medium",model:"gemini-3.5-flash",effort:"medium"},{legacyId:"gemini-3.5-flash-low",model:"gemini-3.5-flash",effort:"low"},{legacyId:"gemini-3.1-pro-high",model:"gemini-3.1-pro",effort:"high"},{legacyId:"gemini-3.1-pro-low",model:"gemini-3.1-pro",effort:"low"},{legacyId:"gpt-oss-120b-medium",model:"gpt-oss-120b",effort:"medium"}],Le=new Map(te.map(({legacyId:t,model:e,effort:n})=>[t,n===void 0?{model:e}:{model:e,effort:n}]));function ne(t){if(!t)return {};let e=Le.get(t);return e?{...e}:{model:t}}function N(t,e){return t==="antigravity"||t==="cli/antigravity"?ne(e):e===void 0?{}:{model:ee(e)}}var re=30,oe=80;Object.keys(Fe.special_tokens);var Be=z$1.object({model:z$1.string().optional(),system_prompt:z$1.string().optional(),prompt:z$1.string().optional(),layout:z$1.union([z$1.string(),z$1.object({id:z$1.string(),props:z$1.record(z$1.unknown()).optional()}),z$1.object({props:z$1.record(z$1.unknown())}),z$1.object({template:z$1.string(),capabilities:z$1.object({semanticContinuity:z$1.boolean().optional(),continuity:z$1.boolean().optional(),continuitySlot:z$1.string().optional(),slot:z$1.string().optional()}).optional()})]).optional()}).catchall(z$1.unknown()),Ge=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),je=z$1.object({id:z$1.string(),name:z$1.string().optional(),role:z$1.string().optional(),team:z$1.string().optional(),provider:z$1.union([z$1.string(),z$1.array(z$1.string())]),working_directory:z$1.string().optional(),description:z$1.string().optional(),tags:z$1.array(z$1.string()).optional(),inline:Be.optional(),skills:Ge}).catchall(z$1.unknown());z$1.object({id:z$1.string(),name:z$1.string(),workflow_id:z$1.string(),description:z$1.string().optional(),goal_id:z$1.string().optional()});var ze=z$1.number().finite().int().min(re).max(oe),We=z$1.object({inputBudgetPercent:ze.optional()}).catchall(z$1.unknown()),He=z$1.object({continuity:We.optional()}).catchall(z$1.unknown()),$e=z$1.object({bin_resolution:z$1.enum(["global_first","local_first"]).optional(),dreaming:He.optional(),wi:z$1.object({boards:z$1.array(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()),ie=z$1.object({agents:z$1.array(je).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:$e.optional(),skills:z$1.unknown().optional(),layouts:z$1.record(z$1.unknown()).optional(),documents:z$1.record(z$1.unknown()).optional()}).catchall(z$1.unknown());var E=class extends Error{constructor(n,o){super(n);this.cause=o;this.name="ConfigLoadError";}cause};function Ke(t){if(!t||typeof t!="string"||!t.trim())throw new E("YAML content must be a non-empty string");let e;try{e=load(t);}catch(r){throw new E(`YAML parse error: ${r.message}`,r)}let n=qe(e),o=ie.safeParse(n);if(!o.success)throw new E(`Config validation error: ${o.error.message}`);return o.data}function qe(t){if(!t||typeof t!="object")return {agents:[]};let e=t;if(e.agents&&typeof e.agents=="object"&&!Array.isArray(e.agents)){let n=e.agents,o=Object.entries(n).map(([r,i])=>({id:r,...i&&typeof i=="object"?i:{}}));return {...e,agents:o}}return e.agents?e:{...e,agents:[]}}var Ye={auto:"default"};function Qe(t){return Ye[t]??t}var Xe="crewx:fs:",F=class{prefix;store;constructor(e){this.prefix=e?.prefix??Xe,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),o=this.store.get(n);if(o===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return o}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(d=>d.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),o=n.split("/"),r=[];for(let d of o)d==="."||d===""||(d===".."?r.pop():r.push(d));let i=r.join("/");return n.startsWith("/")?`/${i}`:i}isAbsolute(e){return e.startsWith("/")}setItem(e,n){this.store.set(this.toKey(e),n);}removeItem(e){this.store.delete(this.toKey(e));}keys(){return Array.from(this.store.keys()).filter(e=>e.startsWith(this.prefix)).map(e=>e.slice(this.prefix.length))}async readdir(e){let n=e.replace(/\\/g,"/").replace(/\/$/,""),o=this.toKey(n+"/"),r=[];for(let i of this.store.keys())if(i.startsWith(o)){let a=i.slice(o.length).split("/")[0];a&&!r.includes(a)&&r.push(a);}return r}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};var B=["codex","claude","grok","opencode","antigravity","copilot"];function Ze(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function G(t){let e=Ze(t),n=B.indexOf(e);return n===-1?B.length:n}function Je(t,e){return G(t)-G(e)}var et=new Set(["claude","copilot","codex","grok","opencode"]);function tt(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(et.has(e))return `cli/${e}`}return t}var ae=["urgent","high","medium","low"],de=["investigating","in-progress","in-review","on-hold","done"],_="custom:";var nt=new Set(ae),rt=new Set(de),ot={urgent:"U \uAE34\uAE09 Urgent",high:"P0 \uAE09\uD568 High",medium:"P1 \uC911\uC694 Medium",low:"P2 \uBCF4\uD1B5 Low"},j={investigating:"\uC870\uC0AC\uC911 Looking into","in-progress":"\uC9C4\uD589\uC911 In progress","in-review":"\uAC80\uD1A0\uC911 In review","on-hold":"\uBCF4\uB958 On hold",done:"\uC644\uB8CC Done"};function se(t,e){return !e||e.includes(t)?e??t:`${t} ${e}`}function z(t){return typeof t=="string"&&nt.has(t)}function W(t){if(typeof t!="string")return false;if(rt.has(t))return true;if(t.startsWith("c_"))return t.length>2;if(!t.startsWith(_))return false;let e=t.slice(_.length);return e.length>=1&&e.length<=20}function ce(t){if(t.startsWith(_))return t.slice(_.length)}function H(t){if(!t)return null;try{let e=JSON.parse(t);return !e||typeof e!="object"||Array.isArray(e)?null:e}catch{return null}}function it(t){let e=H(t);return !!e&&Object.prototype.hasOwnProperty.call(e,"threadTitle")}function ue(t){let e=H(t);if(!e)return {};let n=e.threadTitle;if(!n||typeof n!="object"||Array.isArray(n))return {};let o=n,r={};return z(o.priority)&&(r.priority=o.priority),W(o.state)&&(r.state=o.state),r}function st(t,e){let n=H(t)??{},o={...ue(t)};return e.priority===null?delete o.priority:e.priority!==void 0&&(o.priority=e.priority),e.state===null?delete o.state:e.state!==void 0&&(o.state=e.state),o.priority===void 0&&o.state===void 0?delete n.threadTitle:n.threadTitle=o,Object.keys(n).length===0?null:JSON.stringify(n)}function at(t,e=new Map){let n=[];return t.priority&&n.push(se(ot[t.priority],e.get(t.priority))),t.state&&(t.state.startsWith(_)?n.push(ce(t.state)??""):j[t.state]?n.push(se(j[t.state],e.get(t.state))):e.has(t.state)?n.push(t.state,e.get(t.state)??""):t.state.startsWith("c_")?n.push(t.state):n.push(j[t.state]??"")),n.filter(Boolean).join(" ")}function le(t,e){if(!t||t.trim().length===0)return;let n=new Set,o=false,r=false;for(let i of t.split(",")){let d=i.trim();if(d){if(d==="none"){o=true,r=true;continue}e(d)&&(n.add(d),r=true);}}if(r)return {values:n,includeNone:o}}function dt(t){return le(t,z)}function ct(t){return le(t,W)}function ut(t,e){return e?t?e.values.has(t):e.includeNone:true}export{te as ANTIGRAVITY_MODEL_COMPATIBILITY,de as BUILTIN_THREAD_STATES,F as BrowserFsAdapter,J as CLAUDE_MODEL_COMPATIBILITY_PAIRS,De as CLAUDE_OPUS_4_8_BASE_MODEL_ID,Se as CLAUDE_OPUS_4_8_LEGACY_MODEL_ID,E as ConfigLoadError,w as Crewx,B as PROVIDER_ORDER,g as ProviderError,ae as THREAD_PRIORITIES,Ie as classifyTaskError,Je as compareProviders,P as createProvider,ce as customStateLabel,it as hasThreadTitleKey,z as isThreadPriority,W as isThreadState,ut as matchesThreadTitleFilter,st as mergeThreadTitleMeta,Qe as normalizeClaudeMode,tt as normalizeProviderId,dt as parseThreadPriorityFilter,ct as parseThreadStateFilter,Ke as parseYamlContent,G as providerRank,ue as readThreadTitleMeta,R as redactTechnicalMessage,M as registerProviderFactory,ne as resolveAntigravityModel,ee as resolveCatalogModelId,N as resolveProviderCatalogModel,at as threadTitleSearchHaystack};
|
|
6
|
+
`,i):t.length;n+=t.slice(o,r.index),n+=`[HTTP BODY ${p}]`,o=a;}return n+t.slice(o)}function ye(t,e){let n=t[e];if(n==='"'||n==="'")return Ee(t,e,n);if(n!=="{"&&n!=="[")return -1;let o=[],r,i=false;for(let d=e;d<t.length;d+=1){let a=t[d];if(r){i?i=false:a==="\\"?i=true:a===r&&(r=void 0);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="{"||a==="["){o.push(a);continue}if(a!=="}"&&a!=="]")continue;let c=o.pop();if(a==="}"&&c!=="{"||a==="]"&&c!=="[")return -1;if(o.length===0)return d+1}return -1}function Ee(t,e,n){let o=false;for(let r=e+1;r<t.length;r+=1){let i=t[r];if(o)o=false;else if(i==="\\")o=true;else if(i===n)return r+1}return -1}var ve=new Set(["USAGE_LIMITED","CONTEXT_WINDOW_EXCEEDED","INPUT_TOO_LARGE","MODEL_NOT_SUPPORTED","MODEL_AT_CAPACITY","AUTH_REQUIRED","CLI_NOT_AVAILABLE","CLI_UPDATE_REQUIRED","AGENT_NOT_FOUND","PERMISSION_OR_TRUST","TIMEOUT_OR_STUCK","NETWORK_OR_PROVIDER_TRANSIENT","PROVIDER_CONFIGURATION","PROCESS_FAILED"]),_e={QUOTA_EXHAUSTED:"USAGE_LIMITED",RATE_LIMITED:"USAGE_LIMITED",AUTH_REQUIRED:"AUTH_REQUIRED",TIMEOUT_IDLE:"TIMEOUT_OR_STUCK",TIMEOUT_TOTAL:"TIMEOUT_OR_STUCK",PROVIDER_NOT_FOUND:"PROVIDER_CONFIGURATION",INVALID_PROVIDER_FORMAT:"PROVIDER_CONFIGURATION",PROVIDER_CRASHED:"PROCESS_FAILED",EMPTY_OUTPUT:"PROCESS_FAILED"},xe=[{code:"USAGE_LIMITED",pattern:/(?:rate[ _-]?limit|quota|usage[ /_-]?limit|usage exhausted|too many requests|429\b)/i},{code:"CONTEXT_WINDOW_EXCEEDED",pattern:/context (?:window|length)|maximum context|context[_ -]?window[_ -]?exceeded|too many tokens/i},{code:"INPUT_TOO_LARGE",pattern:/input[_ -]?(?:is[_ -]?)?too[_ -]?large|prompt (?:is )?too (?:large|long)|request[_ -]?(?:is[_ -]?)?too[_ -]?large|payload[_ -]?(?:is[_ -]?)?too[_ -]?large|maximum input/i},{code:"MODEL_AT_CAPACITY",pattern:/(?:model|service|provider).*(?:at capacity|overloaded|temporarily busy)|at capacity|overloaded/i},{code:"MODEL_NOT_SUPPORTED",pattern:/(?:model|invalid_request_error).*(?:not[ _-]?supported|unsupported|does[ _-]?not[ _-]?exist|not[ _-]?found|invalid)|model[_-]?not[_-]?(?:found|supported)/i},{code:"AUTH_REQUIRED",pattern:/(?:401\b|unauthori[sz]ed|not logged in|login required|sign[ -]?in required|api key (?:is )?(?:missing|invalid|required)|authentication required)/i},{code:"CLI_UPDATE_REQUIRED",pattern:/(?:requires? a newer version|update (?:your )?cli|cli version.*(?:old|outdated|unsupported)|version mismatch)/i},{code:"CLI_NOT_AVAILABLE",pattern:/(?:ENOENT|command not found|executable.*not found|cli.*(?:not installed|unavailable)|is .* installed\?)/i},{code:"AGENT_NOT_FOUND",pattern:/agent[_ -]?not[_ -]?found|unknown agent/i},{code:"PERMISSION_OR_TRUST",pattern:/(?:permission denied|operation not permitted|workspace trust|not trusted|access denied|EACCES|EPERM)/i},{code:"TIMEOUT_OR_STUCK",pattern:/(?:timeout|timed out|took too long|stuck|idle timeout|ETIMEDOUT)/i},{code:"NETWORK_OR_PROVIDER_TRANSIENT",pattern:/(?:network (?:unreachable|error)|connection (?:reset|refused|closed)|ECONN(?:RESET|REFUSED|ABORTED)|service unavailable|upstream.*(?:5\d\d|error)|provider.*(?:5\d\d|unavailable|down)|\b5\d\d\b)/i},{code:"PROVIDER_CONFIGURATION",pattern:/(?:invalid provider|unsupported provider|provider namespace|provider configuration|provider config|missing provider)/i}];function Ce(t){try{if(!h(t)||t.status!=="failed")return S();let e=Ie(t.error);if(U(e.message))return S();let n=f(t.providerId)??e.provider??null,o=Pe(t.logs),r=Q(e.code);if(r)return C(r,n,e.message,e);let i=A(e.providerCode)??A(e.code),d=i?L(i,e.message):void 0;if(d)return C(d,n,e.message,e,i);let a=Ae(o);if(!ke(e)&&a&&(a.type==="user_stop"||U(a.message)))return S();if(a){let l=Oe(a.code,a.providerCode,a.message);if(l)return C(l,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let c=be(e.message,o);return c?C(c.code,n,c.message,e,c.terminal?.providerCode??c.terminal?.code,c.terminal,c.terminal?.structuredFailure?"terminal":"envelope"):C("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function S(){return {errorCode:null,errorProvider:null}}function C(t,e,n,o,r,i,d="envelope"){let a={};if(i?.resetAt!==void 0&&(a.resetAt=i.resetAt),o?.model&&(a.model=o.model),i?.type&&(a.upstreamType=i.type),r&&(a.upstreamCode=r),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let m=e?.startsWith("cli/")?e.slice(4):void 0;m&&(a.cliName=m);}let c=d==="terminal"?n:o?.message,l=d==="terminal"?i?.structuredFailure?c:void 0:o?.isEnvelope?c:void 0,u=R(l);return u&&(a.technicalMessage=u),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function Ie(t){let e=typeof t=="string"?E(t):t;return h(e)?{isEnvelope:true,code:f(e.code),providerCode:f(e.providerCode),message:f(e.message)??f(e.error),provider:f(e.provider)??f(e.errorProvider),model:f(e.model)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function E(t){try{return JSON.parse(t)}catch{return}}function ke(t){return !!(t.code||t.providerCode||t.message)}function Pe(t){let e=[];if(typeof t=="string"){let n=E(t);if(Array.isArray(n))e.push(...n);else for(let o of t.split(/\r?\n/)){let r=E(o.trim());r!==void 0&&e.push(r);}}else Array.isArray(t)?e.push(...t):h(t)&&e.push(t);return e.flatMap(y)}function y(t){if(!h(t))return [];let e=f(t.type),n=f(t.message);if(n&&!e){let r=E(n);if(Array.isArray(r))return r.flatMap(y);if(h(r))return y(r);let i=n.split(/\r?\n/).map(d=>E(d.trim())).filter(d=>h(d));return i.length>0?i.flatMap(y):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:y({type:"info",content:n})}if(e==="rate_limit_event"){let r=Y(t.rate_limit_info);return f(r?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:I(r?.message,t.message),resetAt:Me(r?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let r=Y(t.error),i=I(r?.message,r?.detail,t.message,t.errorMessage,t.content),d=I(r?.code,t.code,t.errorCode);return [{type:e,code:d,providerCode:I(r?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let r=E(t.content);if(h(r))return y(r)}let o=I(t.errorMessage,t.content);return o&&U(o)?[{type:"user_stop",message:o,rank:1,structuredFailure:false}]:o&&/(?:turn\.failed|type:error)/i.test(o)?[{type:o.match(/turn\.failed/i)?"turn.failed":"error",message:o,rank:3,structuredFailure:false}]:[]}function Ae(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Oe(t,e,n){let o=Q(t);if(o)return o;if(t){let r=L(t,n);if(r)return r}if(e){let r=L(e,n);if(r)return r}return D(n)}function be(t,e){let n=D(t);if(n)return {code:n,message:t};for(let o of [...e].sort((r,i)=>i.rank-r.rank)){let r=D(o.message);if(r)return {code:r,message:o.message,terminal:o}}}function D(t){if(!(typeof t!="string"||!t.trim()))return xe.find(e=>e.pattern.test(t))?.code}function L(t,e){let n=A(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return _e[n]}function Q(t){let e=A(t);return e&&ve.has(e)?e:void 0}function A(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function U(t){return t?/\b(?:stopped|killed|aborted|cancelled|canceled)\s+by\s+user\b/i.test(t)||/사용자에 의해 중지됨/.test(t)||/\b(?:SIGTERM\s+143|143\s+SIGTERM)\b/i.test(t):false}function h(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Y(t){return h(t)?t:void 0}function f(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function Me(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function I(...t){return t.map(f).find(e=>!!e)}var Z={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}},providerOptions:[]},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}},providerOptions:[]},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{},providerOptions:[]},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{},providerOptions:[]},antigravity:{models:[{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.5-flash",name:"Gemini 3.5 Flash",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",contextWindowTokens:1e6,tier:"flagship"},{id:"gpt-oss-120b",name:"GPT-OSS 120B",contextWindowTokens:128e3,tier:"balanced"}],modes:[{id:"default",name:"Default",description:"Uses Antigravity's default permission handling. No extra permission flags are passed."},{id:"plan",name:"Plan",description:"Passes --mode plan. This turns on /plan; it is not a Claude-style permission mode."},{id:"acceptEdits",name:"Accept Edits",description:"Passes --mode accept-edits."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Passes --dangerously-skip-permissions so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"gemini-3.7-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.6-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.5-flash":{effort:["low","medium","high"],defaultEffort:"medium"},"gemini-3.1-pro":{effort:["low","high"],defaultEffort:"high"},"claude-sonnet-4-6":{effort:[]},"claude-opus-4-6-thinking":{effort:[]},"gpt-oss-120b":{effort:["medium"],defaultEffort:"medium"}},providerOptions:[]},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"default",name:"Default",description:"Uses Grok's default permission handling."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without changing the selected sandbox profile."},{id:"auto",name:"Auto",description:"Uses Grok automatic permission handling."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permission before tool execution."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Grok permission checks for tool execution."},{id:"plan",name:"Plan",description:"Keeps Grok in planning mode without applying changes."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}},providerOptions:[{key:"alwaysApprove",type:"boolean"},{key:"sandbox",type:"enum",values:["workspace","read-only","off"]}]}};Object.fromEntries(Object.entries(Z).map(([t,e])=>[t,e.models]));var Se="claude-opus-4-8",De="claude-opus-4-8[1m]",J=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}];var Le=new Map(J.map(({baseModelId:t,catalogModelId:e})=>[t,e]));function ee(t){return Le.get(t)??t}var te=[{legacyId:"Gemini 3.7 Flash (High)",model:"gemini-3.7-flash",effort:"high"},{legacyId:"Gemini 3.7 Flash (Medium)",model:"gemini-3.7-flash",effort:"medium"},{legacyId:"Gemini 3.7 Flash (Low)",model:"gemini-3.7-flash",effort:"low"},{legacyId:"Gemini 3.6 Flash (High)",model:"gemini-3.6-flash",effort:"high"},{legacyId:"Gemini 3.6 Flash (Medium)",model:"gemini-3.6-flash",effort:"medium"},{legacyId:"Gemini 3.6 Flash (Low)",model:"gemini-3.6-flash",effort:"low"},{legacyId:"Gemini 3.5 Flash (Medium)",model:"gemini-3.5-flash",effort:"medium"},{legacyId:"Gemini 3.5 Flash (High)",model:"gemini-3.5-flash",effort:"high"},{legacyId:"Gemini 3.5 Flash (Low)",model:"gemini-3.5-flash",effort:"low"},{legacyId:"Gemini 3.1 Pro (Low)",model:"gemini-3.1-pro",effort:"low"},{legacyId:"Gemini 3.1 Pro (High)",model:"gemini-3.1-pro",effort:"high"},{legacyId:"Claude Sonnet 4.6 (Thinking)",model:"claude-sonnet-4-6"},{legacyId:"Claude Opus 4.6 (Thinking)",model:"claude-opus-4-6-thinking"},{legacyId:"GPT-OSS 120B (Medium)",model:"gpt-oss-120b",effort:"medium"},{legacyId:"gemini-3.7-flash-high",model:"gemini-3.7-flash",effort:"high"},{legacyId:"gemini-3.7-flash-medium",model:"gemini-3.7-flash",effort:"medium"},{legacyId:"gemini-3.7-flash-low",model:"gemini-3.7-flash",effort:"low"},{legacyId:"gemini-3.6-flash-high",model:"gemini-3.6-flash",effort:"high"},{legacyId:"gemini-3.6-flash-medium",model:"gemini-3.6-flash",effort:"medium"},{legacyId:"gemini-3.6-flash-low",model:"gemini-3.6-flash",effort:"low"},{legacyId:"gemini-3.5-flash-high",model:"gemini-3.5-flash",effort:"high"},{legacyId:"gemini-3.5-flash-medium",model:"gemini-3.5-flash",effort:"medium"},{legacyId:"gemini-3.5-flash-low",model:"gemini-3.5-flash",effort:"low"},{legacyId:"gemini-3.1-pro-high",model:"gemini-3.1-pro",effort:"high"},{legacyId:"gemini-3.1-pro-low",model:"gemini-3.1-pro",effort:"low"},{legacyId:"gpt-oss-120b-medium",model:"gpt-oss-120b",effort:"medium"}],Ue=new Map(te.map(({legacyId:t,model:e,effort:n})=>[t,n===void 0?{model:e}:{model:e,effort:n}]));function ne(t){if(!t)return {};let e=Ue.get(t);return e?{...e}:{model:t}}function N(t,e){return t==="antigravity"||t==="cli/antigravity"?ne(e):e===void 0?{}:{model:ee(e)}}var re=30,oe=80;Object.keys(He.special_tokens);var Fe=z$1.object({model:z$1.string().optional(),system_prompt:z$1.string().optional(),prompt:z$1.string().optional(),layout:z$1.union([z$1.string(),z$1.object({id:z$1.string(),props:z$1.record(z$1.unknown()).optional()}),z$1.object({props:z$1.record(z$1.unknown())}),z$1.object({template:z$1.string(),capabilities:z$1.object({semanticContinuity:z$1.boolean().optional(),continuity:z$1.boolean().optional(),continuitySlot:z$1.string().optional(),slot:z$1.string().optional()}).optional()})]).optional()}).catchall(z$1.unknown()),Be=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),Ge=z$1.object({id:z$1.string(),name:z$1.string().optional(),role:z$1.string().optional(),team:z$1.string().optional(),provider:z$1.union([z$1.string(),z$1.array(z$1.string())]),working_directory:z$1.string().optional(),description:z$1.string().optional(),tags:z$1.array(z$1.string()).optional(),inline:Fe.optional(),skills:Be}).catchall(z$1.unknown());z$1.object({id:z$1.string(),name:z$1.string(),workflow_id:z$1.string(),description:z$1.string().optional(),goal_id:z$1.string().optional()});var ze=z$1.number().finite().int().min(re).max(oe),je=z$1.object({inputBudgetPercent:ze.optional()}).catchall(z$1.unknown()),We=z$1.object({continuity:je.optional()}).catchall(z$1.unknown()),$e=z$1.object({bin_resolution:z$1.enum(["global_first","local_first"]).optional(),dreaming:We.optional(),wi:z$1.object({boards:z$1.array(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()),ie=z$1.object({agents:z$1.array(Ge).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:$e.optional(),skills:z$1.unknown().optional(),layouts:z$1.record(z$1.unknown()).optional(),documents:z$1.record(z$1.unknown()).optional()}).catchall(z$1.unknown());var v=class extends Error{constructor(n,o){super(n);this.cause=o;this.name="ConfigLoadError";}cause};function Ke(t){if(!t||typeof t!="string"||!t.trim())throw new v("YAML content must be a non-empty string");let e;try{e=load(t);}catch(r){throw new v(`YAML parse error: ${r.message}`,r)}let n=qe(e),o=ie.safeParse(n);if(!o.success)throw new v(`Config validation error: ${o.error.message}`);return o.data}function qe(t){if(!t||typeof t!="object")return {agents:[]};let e=t;if(e.agents&&typeof e.agents=="object"&&!Array.isArray(e.agents)){let n=e.agents,o=Object.entries(n).map(([r,i])=>({id:r,...i&&typeof i=="object"?i:{}}));return {...e,agents:o}}return e.agents?e:{...e,agents:[]}}var Xe={auto:"default"};function Ye(t){return Xe[t]??t}var Qe="crewx:fs:",H=class{prefix;store;constructor(e){this.prefix=e?.prefix??Qe,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),o=this.store.get(n);if(o===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return o}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(d=>d.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),o=n.split("/"),r=[];for(let d of o)d==="."||d===""||(d===".."?r.pop():r.push(d));let i=r.join("/");return n.startsWith("/")?`/${i}`:i}isAbsolute(e){return e.startsWith("/")}setItem(e,n){this.store.set(this.toKey(e),n);}removeItem(e){this.store.delete(this.toKey(e));}keys(){return Array.from(this.store.keys()).filter(e=>e.startsWith(this.prefix)).map(e=>e.slice(this.prefix.length))}async readdir(e){let n=e.replace(/\\/g,"/").replace(/\/$/,""),o=this.toKey(n+"/"),r=[];for(let i of this.store.keys())if(i.startsWith(o)){let a=i.slice(o.length).split("/")[0];a&&!r.includes(a)&&r.push(a);}return r}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};var F=["codex","claude","grok","opencode","antigravity","copilot"];function Ze(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function B(t){let e=Ze(t),n=F.indexOf(e);return n===-1?F.length:n}function Je(t,e){return B(t)-B(e)}var et=new Set(["claude","copilot","codex","grok","opencode"]);function tt(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(et.has(e))return `cli/${e}`}return t}var ae=["urgent","high","medium","low"],de=["investigating","in-progress","in-review","on-hold","done"],k="custom:";var nt=new Set(ae),rt=new Set(de),ot={urgent:"U \uAE34\uAE09 Urgent",high:"P0 \uAE09\uD568 High",medium:"P1 \uC911\uC694 Medium",low:"P2 \uBCF4\uD1B5 Low"},G={investigating:"\uC870\uC0AC\uC911 Looking into","in-progress":"\uC9C4\uD589\uC911 In progress","in-review":"\uAC80\uD1A0\uC911 In review","on-hold":"\uBCF4\uB958 On hold",done:"\uC644\uB8CC Done"};function se(t,e){return !e||e.includes(t)?e??t:`${t} ${e}`}function z(t){return typeof t=="string"&&nt.has(t)}function j(t){if(typeof t!="string")return false;if(rt.has(t))return true;if(t.startsWith("c_"))return t.length>2;if(!t.startsWith(k))return false;let e=t.slice(k.length);return e.length>=1&&e.length<=20}function ce(t){if(t.startsWith(k))return t.slice(k.length)}function W(t){if(!t)return null;try{let e=JSON.parse(t);return !e||typeof e!="object"||Array.isArray(e)?null:e}catch{return null}}function it(t){let e=W(t);return !!e&&Object.prototype.hasOwnProperty.call(e,"threadTitle")}function ue(t){let e=W(t);if(!e)return {};let n=e.threadTitle;if(!n||typeof n!="object"||Array.isArray(n))return {};let o=n,r={};return z(o.priority)&&(r.priority=o.priority),j(o.state)&&(r.state=o.state),r}function st(t,e){let n=W(t)??{},o={...ue(t)};return e.priority===null?delete o.priority:e.priority!==void 0&&(o.priority=e.priority),e.state===null?delete o.state:e.state!==void 0&&(o.state=e.state),o.priority===void 0&&o.state===void 0?delete n.threadTitle:n.threadTitle=o,Object.keys(n).length===0?null:JSON.stringify(n)}function at(t,e=new Map){let n=[];return t.priority&&n.push(se(ot[t.priority],e.get(t.priority))),t.state&&(t.state.startsWith(k)?n.push(ce(t.state)??""):G[t.state]?n.push(se(G[t.state],e.get(t.state))):e.has(t.state)?n.push(t.state,e.get(t.state)??""):t.state.startsWith("c_")?n.push(t.state):n.push(G[t.state]??"")),n.filter(Boolean).join(" ")}function le(t,e){if(!t||t.trim().length===0)return;let n=new Set,o=false,r=false;for(let i of t.split(",")){let d=i.trim();if(d){if(d==="none"){o=true,r=true;continue}e(d)&&(n.add(d),r=true);}}if(r)return {values:n,includeNone:o}}function dt(t){return le(t,z)}function ct(t){return le(t,j)}function ut(t,e){return e?t?e.values.has(t):e.includeNone:true}export{te as ANTIGRAVITY_MODEL_COMPATIBILITY,de as BUILTIN_THREAD_STATES,H as BrowserFsAdapter,J as CLAUDE_MODEL_COMPATIBILITY_PAIRS,Se as CLAUDE_OPUS_4_8_BASE_MODEL_ID,De as CLAUDE_OPUS_4_8_LEGACY_MODEL_ID,v as ConfigLoadError,w as Crewx,F as PROVIDER_ORDER,g as ProviderError,ae as THREAD_PRIORITIES,Ce as classifyTaskError,Je as compareProviders,P as createProvider,ce as customStateLabel,it as hasThreadTitleKey,z as isThreadPriority,j as isThreadState,ut as matchesThreadTitleFilter,st as mergeThreadTitleMeta,Ye as normalizeClaudeMode,tt as normalizeProviderId,dt as parseThreadPriorityFilter,ct as parseThreadStateFilter,Ke as parseYamlContent,B as providerRank,ue as readThreadTitleMeta,R as redactTechnicalMessage,M as registerProviderFactory,ne as resolveAntigravityModel,ee as resolveCatalogModelId,N as resolveProviderCatalogModel,at as threadTitleSearchHaystack};
|
package/dist/index.d.ts
CHANGED
|
@@ -51,9 +51,9 @@ export { PROVIDER_ORDER, providerRank, compareProviders, normalizeProviderId } f
|
|
|
51
51
|
export { getProviderModels, getClaudeModels, getCodexModels, getCopilotModels, getAntigravityModels, setModelsOverride, clearModelsOverride, mergeModels, type ModelCatalogEntry, type ModelMergeEntry, type ModelTier, type ProviderOptionSpec, } from './provider/models';
|
|
52
52
|
export { DEFAULT_INPUT_BUDGET_PERCENT, MIN_INPUT_BUDGET_PERCENT, MAX_INPUT_BUDGET_PERCENT, INPUT_BUDGET_TOKENIZER_ENCODING, FRESH_PROVIDER_INITIAL_INPUT_FRAMING, RESUME_PROVIDER_INITIAL_INPUT_FRAMING, normalizeInputBudgetProvider, resolveTokenizerMetadata, countTokens, createTokenCounter, resolveInputBudget, } from './context-budget';
|
|
53
53
|
export type { InputBudgetUnresolvedReason, TokenizerFallbackReason, ResolveInputBudgetOptions, TokenizerOptions, TokenizerMetadata, ResolvedInputBudget, UnresolvedInputBudget, ResolveInputBudgetResult, ContextBudgetPhase, ProviderInitialInputFraming, ContextBudgetManifest, TokenCountResult, TokenCounter, ContextBudgetLayoutCapability, ContextBudgetActivityDegradation, ContextBudgetAssemblyErrorCode, } from './context-budget';
|
|
54
|
-
export { ContextBudgetLayoutError, DEFAULT_HIGHLIGHT_BUDGET_PERCENT, DEFAULT_PROTECTED_TURN_COUNT, buildSemanticContinuityContext, getConversationMessageTaskId, groupConversationTurns, materializeConversationTurn, selectConversationHighlights, selectConversationTurns, } from './context-budget';
|
|
54
|
+
export { ContextBudgetLayoutError, DEFAULT_HIGHLIGHT_BUDGET_PERCENT, DEFAULT_PROTECTED_TURN_COUNT, MAX_ACTIVE_HIGHLIGHT_CHARS, MAX_ACTIVE_HIGHLIGHTS, MAX_THREAD_STATE_VALUE_CHARS, MAX_THREAD_TITLE_CHARS, buildSemanticContinuityContext, buildThreadStateContext, getConversationMessageTaskId, groupConversationTurns, materializeConversationTurn, selectConversationHighlights, selectConversationTurns, } from './context-budget';
|
|
55
55
|
export type { BuildSemanticContinuityContextOptions, ConversationHighlightSelection, ConversationTurn, ConversationTurnSelection, GroupedConversationTurns, SelectConversationHighlightsOptions, SelectConversationTurnsOptions, } from './context-budget';
|
|
56
|
-
export type { ConversationHighlight, ConversationMessage, ConversationSemanticContinuityContext, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, Platform, SemanticContinuityContext, TemplateMessage, } from './conversation/types.js';
|
|
56
|
+
export type { ConversationHighlight, ConversationMessage, ConversationSemanticContinuityContext, ConversationThreadState, ConversationThreadStateValue, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, Platform, SemanticContinuityContext, TemplateMessage, ThreadStateContext, } from './conversation/types.js';
|
|
57
57
|
export { MAX_THREAD_HIGHLIGHTS_PER_RUN, MAX_THREAD_HIGHLIGHT_PROMPT_LENGTH, MAX_THREAD_HIGHLIGHT_TURN_TEXT_LENGTH, THREAD_HIGHLIGHTER_AGENT_ID, THREAD_HIGHLIGHTER_PROVIDER_ORDER, ThreadHighlightGenerationError, ThreadHighlightGenerator, ThreadHighlighter, ThreadHighlightInputValidationError, ThreadHighlightItemSchema, ThreadHighlightOutputValidationError, ThreadHighlightResponseSchema, buildThreadHighlightPrompt, generateThreadHighlights, parseThreadHighlightResponse, redactThreadHighlightSecrets, } from './highlight/thread-highlighter.js';
|
|
58
58
|
export type { ThreadHighlightFailureCode, ThreadHighlightGenerationFailure, ThreadHighlightGenerationFailureResult, ThreadHighlightGenerationInput, ThreadHighlightGenerationResult, ThreadHighlightGenerationSuccess, ThreadHighlightGeneratorOptions, ThreadHighlightItem, ThreadHighlightProviderAttempt, ThreadHighlightProviderAttemptOutcome, ThreadHighlightProviderId, ThreadHighlightResponse, ThreadHighlightTaskTurn, ThreadHighlightWriter, } from './highlight/thread-highlighter.js';
|
|
59
59
|
export { createProvider, ProviderError, ClientToolCallRequiredError, registerProviderFactory, mergeAdditionalArgs } from './provider/bridge';
|