@crewx/sdk 0.9.0-rc.107 → 0.9.0-rc.109

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.
Files changed (48) hide show
  1. package/dist/config/timeout.config.d.ts +1 -0
  2. package/dist/context-budget/index.d.ts +1 -0
  3. package/dist/conversation/sqlite-provider.d.ts +2 -2
  4. package/dist/conversation/types.d.ts +3 -1
  5. package/dist/esm/index.js +246 -208
  6. package/dist/esm/plugins/index.js +95 -57
  7. package/dist/esm/publish/index.js +2 -1
  8. package/dist/esm/repository/index.js +107 -69
  9. package/dist/esm/skills/index.js +1 -0
  10. package/dist/events/types.d.ts +3 -0
  11. package/dist/facade/Crewx.d.ts +5 -2
  12. package/dist/highlight/thread-highlighter.d.ts +12 -12
  13. package/dist/index.browser.d.ts +1 -0
  14. package/dist/index.browser.js +3 -3
  15. package/dist/index.d.ts +7 -5
  16. package/dist/index.js +248 -210
  17. package/dist/mcp-app/catalog.d.ts +7 -0
  18. package/dist/mcp-app/discovery.d.ts +1 -1
  19. package/dist/mcp-app/index.d.ts +2 -0
  20. package/dist/mcp-app/types.d.ts +65 -1
  21. package/dist/migrations/0031_petite_arclight.sql +6 -0
  22. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  23. package/dist/migrations/meta/_journal.json +8 -1
  24. package/dist/plugins/index.js +91 -53
  25. package/dist/provider/bridge.d.ts +2 -1
  26. package/dist/provider/cli/adapter.types.d.ts +1 -0
  27. package/dist/provider/errors.d.ts +4 -1
  28. package/dist/publish/errors.d.ts +7 -0
  29. package/dist/publish/index.d.ts +25 -1
  30. package/dist/publish/index.js +2 -1
  31. package/dist/publish/manifest.d.ts +31 -1
  32. package/dist/publish/pack.d.ts +5 -1
  33. package/dist/publish/secrets.d.ts +1 -1
  34. package/dist/publish/upload.d.ts +1 -0
  35. package/dist/repository/index.d.ts +1 -1
  36. package/dist/repository/index.js +101 -63
  37. package/dist/repository/task.repository.d.ts +11 -0
  38. package/dist/repository/thread.repository.d.ts +26 -3
  39. package/dist/schema/tasks.d.ts +38 -0
  40. package/dist/schema/threads.d.ts +57 -0
  41. package/dist/skills/index.d.ts +7 -0
  42. package/dist/skills/index.js +1 -0
  43. package/dist/skills/types.d.ts +18 -0
  44. package/dist/types/index.d.ts +29 -2
  45. package/dist/ui-instance/index.d.ts +1 -1
  46. package/dist/ui-instance/types.d.ts +6 -0
  47. package/dist/ui-plugin/types.d.ts +3 -0
  48. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ import {readFileSync,existsSync,statSync,readdirSync}from'fs';import {join}from'path';import {load}from'js-yaml';var f="SKILL.md",v=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function u(t){if(t===null||typeof t!="object"||Array.isArray(t))return false;let n=Object.getPrototypeOf(t);return n===Object.prototype||n===null}function b(t){return t.isDirectory()||t.isSymbolicLink()}function y(t){try{return existsSync(t)&&statSync(t).isDirectory()}catch{return false}}function D(t){let n;try{n=readFileSync(t,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let o=n.match(v);if(!o)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let r=load(o[1]??"");if(!u(r))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let e=u(r.metadata)?r.metadata:void 0;return {frontmatter:{...typeof r.name=="string"?{name:r.name}:{},...typeof(e?.version??r.version)=="string"?{version:e?.version??r.version}:{},...typeof r.description=="string"?{description:r.description}:{}},readable:!0,valid:!0,hasFrontmatter:!0}}catch{return {frontmatter:{},readable:true,valid:false,hasFrontmatter:true}}}function F(t){return [join(t,f),join(t,"skill",f)]}function l(t,n){if(!y(t))return null;for(let o of F(t)){if(!existsSync(o))continue;let e=D(o).frontmatter;return {name:e.name??n,...e.version===void 0?{}:{version:e.version},...e.description===void 0?{}:{description:e.description},skillMdPath:o,dir:t}}return null}function c(t){try{return readdirSync(t,{withFileTypes:!0}).filter(b)}catch{return []}}function R(t){return t.length===0||/[\\\u0000]/.test(t)?false:t.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function d(t,n,o){!t||n.has(t.name)||(n.add(t.name),o.push(t));}function p(t){let n=[],o=new Set;for(let r of t)if(y(r))for(let e of c(r)){if(e.name.startsWith("@")){let s=join(r,e.name);for(let a of c(s))d(l(join(s,a.name),a.name),o,n);continue}d(l(join(r,e.name),e.name),o,n);}return n.sort((r,e)=>r.name.localeCompare(e.name))}function w(t,n){if(!R(t))throw new Error(`Skill not found: ${t}`);for(let r of n){let e=l(join(r,t),t);if(e)return e;for(let s of c(r)){if(!s.name.startsWith("@"))continue;let a=l(join(r,s.name,t),t);if(a)return a}}let o=p(n).find(r=>r.name===t);if(o)return o;throw new Error(`Skill not found: ${t}`)}var A=p,O=w;export{p as discover,A as discoverSkills,D as readSkillFrontmatter,w as resolve,O as resolveSkill};
@@ -3,6 +3,7 @@ export interface BaseEvent {
3
3
  traceId: string;
4
4
  timestamp: Date;
5
5
  }
6
+ export type ActorKind = 'human' | 'agent' | 'system' | 'unknown';
6
7
  export interface TaskStartEvent extends BaseEvent {
7
8
  agentRef: string;
8
9
  message: string;
@@ -19,6 +20,8 @@ export interface TaskStartEvent extends BaseEvent {
19
20
  projectId?: string;
20
21
  workspaceName?: string;
21
22
  cwd?: string;
23
+ actorKind?: ActorKind | null;
24
+ actorId?: string | null;
22
25
  parentTaskId?: string | null;
23
26
  rootTraceId?: string;
24
27
  callerAgentId?: string | null;
@@ -3,13 +3,14 @@ import { TypedEventEmitter } from '../events/TypedEventEmitter';
3
3
  import type { CrewxPlugin } from '../plugin';
4
4
  import type { IFsAdapter } from '../platform/IFsAdapter';
5
5
  import type { ChannelAdapterRegistration } from '../adapter/types';
6
- import type { CrewxProjectConfig, AgentConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult } from '../types';
6
+ import type { CrewxProjectConfig, AgentConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, CanResumeSessionParams, CanResumeSessionResult } from '../types';
7
7
  import type { PromptListResolver, TemplateContext } from '../template/types';
8
8
  import type { CustomLayoutDefinition, LayoutCapabilities } from '../layout/types';
9
9
  import type { ConversationThreadState, SemanticContinuityContext, TemplateMessage } from '../conversation/types';
10
10
  import type { HandlerOptions, CrewxHandler } from '../server/handler';
11
11
  import type { RemoteProviderConfig } from '../remote/types.js';
12
12
  import type { McpAppStateDescriptor } from '../mcp-app/types.js';
13
+ import type { CrewxAppCatalogOptions, CrewxAppCatalogResult } from '../mcp-app/types.js';
13
14
  import type { UiRuntimeFacade, UiRuntimeOptions } from '../ui-instance/types.js';
14
15
  import type { CrewxEventName, CrewxEventPayload } from '../events/types';
15
16
  export interface ToolDefinition {
@@ -82,10 +83,13 @@ export declare class Crewx extends TypedEventEmitter {
82
83
  get config(): CrewxProjectConfig | undefined;
83
84
  get plugins(): readonly CrewxPlugin[];
84
85
  get tools(): ReadonlyMap<string, ToolDefinition>;
86
+ listApps(options?: CrewxAppCatalogOptions): Promise<CrewxAppCatalogResult>;
87
+ listWorkspaceApps(options?: CrewxAppCatalogOptions): Promise<CrewxAppCatalogResult>;
85
88
  get workspaceId(): string;
86
89
  createUiRuntime(options: UiRuntimeOptions): UiRuntimeFacade;
87
90
  get workspaceName(): string;
88
91
  getAgent(agentRef: string): AgentConfig | undefined;
92
+ canResumeSession(agentRef: string, params: CanResumeSessionParams): Promise<CanResumeSessionResult>;
89
93
  getRemoteProviderConfig(providerId: string): RemoteProviderConfig | undefined;
90
94
  private computeTaskLogPath;
91
95
  registerTool(name: string, definition: Omit<ToolDefinition, 'name'>): void;
@@ -129,7 +133,6 @@ export declare class Crewx extends TypedEventEmitter {
129
133
  private _readInputBudgetPercent;
130
134
  private _resolveBudgetModel;
131
135
  private _resolveContextMode;
132
- private _hasUsableResumeSessionId;
133
136
  private _buildInstructionOnlyResumeManifest;
134
137
  private _buildInstructionOnlyContinuity;
135
138
  private _prepareInstructionOnlyResumeWithBudget;
@@ -22,14 +22,14 @@ export declare const ThreadHighlightItemSchema: z.ZodObject<{
22
22
  coversFromTaskId: z.ZodString;
23
23
  coversToTaskId: z.ZodString;
24
24
  }, "strict", z.ZodTypeAny, {
25
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
26
25
  text: string;
26
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
27
27
  anchorTaskId: string;
28
28
  coversFromTaskId: string;
29
29
  coversToTaskId: string;
30
30
  }, {
31
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
32
31
  text: string;
32
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
33
33
  anchorTaskId: string;
34
34
  coversFromTaskId: string;
35
35
  coversToTaskId: string;
@@ -42,30 +42,30 @@ export declare const ThreadHighlightResponseSchema: z.ZodObject<{
42
42
  coversFromTaskId: z.ZodString;
43
43
  coversToTaskId: z.ZodString;
44
44
  }, "strict", z.ZodTypeAny, {
45
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
46
45
  text: string;
46
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
47
47
  anchorTaskId: string;
48
48
  coversFromTaskId: string;
49
49
  coversToTaskId: string;
50
50
  }, {
51
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
52
51
  text: string;
52
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
53
53
  anchorTaskId: string;
54
54
  coversFromTaskId: string;
55
55
  coversToTaskId: string;
56
56
  }>, "many">;
57
57
  }, "strict", z.ZodTypeAny, {
58
58
  highlights: {
59
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
60
59
  text: string;
60
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
61
61
  anchorTaskId: string;
62
62
  coversFromTaskId: string;
63
63
  coversToTaskId: string;
64
64
  }[];
65
65
  }, {
66
66
  highlights: {
67
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
68
67
  text: string;
68
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
69
69
  anchorTaskId: string;
70
70
  coversFromTaskId: string;
71
71
  coversToTaskId: string;
@@ -81,8 +81,8 @@ export declare const ThreadHighlightConsolidationItemSchema: z.ZodObject<{
81
81
  coversFromTaskId: z.ZodString;
82
82
  coversToTaskId: z.ZodString;
83
83
  }, "strict", z.ZodTypeAny, {
84
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
85
84
  text: string;
85
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
86
86
  anchorTaskId: string;
87
87
  coversFromTaskId: string;
88
88
  coversToTaskId: string;
@@ -90,8 +90,8 @@ export declare const ThreadHighlightConsolidationItemSchema: z.ZodObject<{
90
90
  status?: "active" | "dismissed" | undefined;
91
91
  source?: "auto" | "manual" | undefined;
92
92
  }, {
93
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
94
93
  text: string;
94
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
95
95
  anchorTaskId: string;
96
96
  coversFromTaskId: string;
97
97
  coversToTaskId: string;
@@ -110,8 +110,8 @@ export declare const ThreadHighlightConsolidationResponseSchema: z.ZodObject<{
110
110
  coversFromTaskId: z.ZodString;
111
111
  coversToTaskId: z.ZodString;
112
112
  }, "strict", z.ZodTypeAny, {
113
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
114
113
  text: string;
114
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
115
115
  anchorTaskId: string;
116
116
  coversFromTaskId: string;
117
117
  coversToTaskId: string;
@@ -119,8 +119,8 @@ export declare const ThreadHighlightConsolidationResponseSchema: z.ZodObject<{
119
119
  status?: "active" | "dismissed" | undefined;
120
120
  source?: "auto" | "manual" | undefined;
121
121
  }, {
122
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
123
122
  text: string;
123
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
124
124
  anchorTaskId: string;
125
125
  coversFromTaskId: string;
126
126
  coversToTaskId: string;
@@ -130,8 +130,8 @@ export declare const ThreadHighlightConsolidationResponseSchema: z.ZodObject<{
130
130
  }>, "many">;
131
131
  }, "strict", z.ZodTypeAny, {
132
132
  highlights: {
133
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
134
133
  text: string;
134
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
135
135
  anchorTaskId: string;
136
136
  coversFromTaskId: string;
137
137
  coversToTaskId: string;
@@ -141,8 +141,8 @@ export declare const ThreadHighlightConsolidationResponseSchema: z.ZodObject<{
141
141
  }[];
142
142
  }, {
143
143
  highlights: {
144
- kind: "result" | "decision" | "judgment" | "issue" | "pivot";
145
144
  text: string;
145
+ kind: "result" | "decision" | "judgment" | "issue" | "pivot";
146
146
  anchorTaskId: string;
147
147
  coversFromTaskId: string;
148
148
  coversToTaskId: string;
@@ -19,3 +19,4 @@ export type { DefaultAgentProfile, DefaultAgentStage } from './config/default-ag
19
19
  export { BUILTIN_THREAD_STATES, THREAD_PRIORITIES, customStateLabel, hasThreadTitleKey, isThreadPriority, isThreadState, matchesThreadTitleFilter, mergeThreadTitleMeta, parseThreadPriorityFilter, parseThreadStateFilter, readThreadTitleMeta, threadTitleSearchHaystack, } from './repository/thread-title.types.js';
20
20
  export type { BuiltinThreadState, LegacyThreadState, StableThreadState, ThreadPriority, ThreadState, ThreadTitleFilter, ThreadTitleMeta, ThreadTitlePatch, } from './repository/thread-title.types.js';
21
21
  export type { AgentConfig, CrewxProjectConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, ContextMode, } from './types/index.js';
22
+ export type { CrewxAppCapability, CrewxAppCatalogOptions, CrewxAppCatalogResult, CrewxAppDefinitionHashInput, CrewxAppDefinitionSummary, CrewxAppDiagnostic, CrewxAppDiagnosticCode, CrewxAppDiagnosticSource, CrewxAppInstalledProjection, CrewxAppLocalDefinitionRef, CrewxAppOrigin, CrewxAppOwnership, CrewxAppShareability, CrewxAppSharingAvailability, CrewxAppSummary, } from './mcp-app/types.js';
@@ -1,6 +1,6 @@
1
- import {load}from'js-yaml';import'js-tiktoken';import'js-tiktoken/lite';import $e from'js-tiktoken/ranks/o200k_base';import {z as z$1}from'zod';var E=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},he={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function R(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=he[n];if(o)return o;throw new E(t,e.map(i=>i.id))}var f=class extends Error{constructor(n,r,o){super(n);this.providerStr=r;this.name="ProviderError",this.code=o?.code??"UNKNOWN",this.kind=o?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=o?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};var Z=new Map;function S(t,e){Z.set(t,e);}function P(t){let e=t.split("/");if(e.length!==2)throw new f(`Invalid provider format: "${t}". Expected namespace/id (e.g., api/webllm)`,t);let[n,r]=e,o=Z.get(n);if(o)return o(r,t);throw new f(`Unsupported provider namespace: "${n}". Register a factory with registerProviderFactory('${n}', factory).`,t)}var Te=new Function("u","return import(u)"),D=class t{_agents;_config;_tools=new Map;_apiProviders=new Map;constructor(e,n){this._agents=new Map(e.map(r=>[r.id,r])),this._config=n;}static async fromConfig(e,n){let r=new t(e.agents??[],e),o=e.agents??[],i=c=>Array.isArray(c.provider)?c.provider[0]:c.provider,d=o.filter(c=>i(c)==="api/webllm"),s=o.filter(c=>i(c)==="api/openrouter");if(d.length>0&&await r._initWebLLM(d,n?.onProgress),s.length>0){if(!n?.openrouterApiKey)throw new Error("openrouterApiKey is required when using api/openrouter provider");r._initOpenRouter(s,n.openrouterApiKey);}return r._apiProviders.size>0&&S("api",(c,l)=>{let u=r._apiProviders.get(c);if(!u)throw new f(`Unknown api provider: ${c}`,l);return u}),r}async _initWebLLM(e,n){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not available. Chrome 113+ or Edge 113+ required.");let r=await Te("https://esm.run/@mlc-ai/web-llm"),o=e[0]?.inline?.model??"gemma-2-2b-it-q4f16_1-MLC",i=await r.CreateMLCEngine(o,{initProgressCallback:n?s=>n(s):void 0}),d=[];this._apiProviders.set("webllm",{async query(s,c){let l=[];c?.systemPrompt&&l.push({role:"system",content:c.systemPrompt}),l.push(...d),l.push({role:"user",content:s});let u="",h=await i.chat.completions.create({messages:l,stream:true,temperature:.7,max_tokens:4096});for await(let T of h){let p=T.choices?.[0]?.delta?.content??"";u+=p,c?.onOutput&&c.onOutput(u,"stdout");}return d.push({role:"user",content:s}),d.push({role:"assistant",content:u}),u},async execute(s,c){return this.query(s,c)}});}_initOpenRouter(e,n){let r=e[0]?.inline?.model??"google/gemma-2-2b-it",o=[];this._apiProviders.set("openrouter",{async query(i,d){let s=[];d?.systemPrompt&&s.push({role:"system",content:d.systemPrompt}),s.push(...o),s.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||r,messages:s,stream:true})});if(!c.ok){let p=await c.text();throw new Error(`OpenRouter API error (${c.status}): ${p}`)}let l=c.body.getReader(),u=new TextDecoder,h="",T="";for(;;){let{done:p,value:w}=await l.read();if(p)break;T+=u.decode(w,{stream:true});let Q=T.split(`
2
- `);T=Q.pop();for(let me of Q){let M=me.trim();if(!M||!M.startsWith("data: "))continue;let Y=M.slice(6);if(Y!=="[DONE]")try{let X=JSON.parse(Y).choices?.[0]?.delta?.content??"";h+=X,X&&d?.onOutput&&d.onOutput(h,"stdout");}catch{}}}return o.push({role:"user",content:i}),o.push({role:"assistant",content:h}),h},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,r){let o=Date.now(),i;try{i=R(e,Array.from(this._agents.values()));}catch(p){if(p instanceof E)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:p.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw p}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??d,c=r?.model??i.inline?.model,l=i.options,u=l&&typeof l=="object"&&!Array.isArray(l)?l.query:void 0,h=u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.mode=="string"&&u.mode.trim()||void 0,T;try{T=P(s);}catch(p){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:p.message,...p instanceof f?{providerCode:p.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}try{return {ok:!0,data:await T.query(n,{model:c,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt,onOutput:r?.onOutput?w=>r.onOutput(w):void 0}),meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}catch(p){return {ok:false,data:"",error:{code:"QUERY_FAILED",message:p.message,...p instanceof f?{providerCode:p.code}:{},...h?{mode:h}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}}async execute(e,n,r){let o=Date.now(),i;try{i=R(e,Array.from(this._agents.values()));}catch(u){if(u instanceof E)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:u.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw u}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??d,c=r?.model??i.inline?.model,l;try{l=P(s);}catch(u){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:u.message,...u instanceof f?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}try{return {ok:!0,data:await l.execute(n,{model:c,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt}),meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}catch(u){return {ok:false,data:"",error:{code:"EXECUTE_FAILED",message:u.message,...u instanceof f?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}}};var g="[REDACTED]",J="[PATH]";function L(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 ${g}]`),e=Ee(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${g}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,g),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,g),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,g),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,g),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,g),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,g),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,g),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,g),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,g),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${g}${r}${g}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${g}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,J),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,J),e=e.replace(/[\r\n]{3,}/g,`
1
+ import {load}from'js-yaml';import'js-tiktoken';import'js-tiktoken/lite';import $e from'js-tiktoken/ranks/o200k_base';import {z as z$1}from'zod';var E=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},he={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function M(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=he[n];if(o)return o;throw new E(t,e.map(i=>i.id))}var f=class extends Error{constructor(n,r,o){super(n);this.providerStr=r;this.name="ProviderError",this.code=o?.code??"UNKNOWN",this.kind=o?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=o?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};var Z=new Map;function S(t,e){Z.set(t,e);}function P(t){let e=t.split("/");if(e.length!==2)throw new f(`Invalid provider format: "${t}". Expected namespace/id (e.g., api/webllm)`,t);let[n,r]=e,o=Z.get(n);if(o)return o(r,t);throw new f(`Unsupported provider namespace: "${n}". Register a factory with registerProviderFactory('${n}', factory).`,t)}var Te=new Function("u","return import(u)"),D=class t{_agents;_config;_tools=new Map;_apiProviders=new Map;constructor(e,n){this._agents=new Map(e.map(r=>[r.id,r])),this._config=n;}static async fromConfig(e,n){let r=new t(e.agents??[],e),o=e.agents??[],i=c=>Array.isArray(c.provider)?c.provider[0]:c.provider,d=o.filter(c=>i(c)==="api/webllm"),s=o.filter(c=>i(c)==="api/openrouter");if(d.length>0&&await r._initWebLLM(d,n?.onProgress),s.length>0){if(!n?.openrouterApiKey)throw new Error("openrouterApiKey is required when using api/openrouter provider");r._initOpenRouter(s,n.openrouterApiKey);}return r._apiProviders.size>0&&S("api",(c,l)=>{let u=r._apiProviders.get(c);if(!u)throw new f(`Unknown api provider: ${c}`,l);return u}),r}async _initWebLLM(e,n){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not available. Chrome 113+ or Edge 113+ required.");let r=await Te("https://esm.run/@mlc-ai/web-llm"),o=e[0]?.inline?.model??"gemma-2-2b-it-q4f16_1-MLC",i=await r.CreateMLCEngine(o,{initProgressCallback:n?s=>n(s):void 0}),d=[];this._apiProviders.set("webllm",{async query(s,c){let l=[];c?.systemPrompt&&l.push({role:"system",content:c.systemPrompt}),l.push(...d),l.push({role:"user",content:s});let u="",h=await i.chat.completions.create({messages:l,stream:true,temperature:.7,max_tokens:4096});for await(let T of h){let p=T.choices?.[0]?.delta?.content??"";u+=p,c?.onOutput&&c.onOutput(u,"stdout");}return d.push({role:"user",content:s}),d.push({role:"assistant",content:u}),u},async execute(s,c){return this.query(s,c)}});}_initOpenRouter(e,n){let r=e[0]?.inline?.model??"google/gemma-2-2b-it",o=[];this._apiProviders.set("openrouter",{async query(i,d){let s=[];d?.systemPrompt&&s.push({role:"system",content:d.systemPrompt}),s.push(...o),s.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||r,messages:s,stream:true})});if(!c.ok){let p=await c.text();throw new Error(`OpenRouter API error (${c.status}): ${p}`)}let l=c.body.getReader(),u=new TextDecoder,h="",T="";for(;;){let{done:p,value:w}=await l.read();if(p)break;T+=u.decode(w,{stream:true});let Q=T.split(`
2
+ `);T=Q.pop();for(let me of Q){let R=me.trim();if(!R||!R.startsWith("data: "))continue;let Y=R.slice(6);if(Y!=="[DONE]")try{let X=JSON.parse(Y).choices?.[0]?.delta?.content??"";h+=X,X&&d?.onOutput&&d.onOutput(h,"stdout");}catch{}}}return o.push({role:"user",content:i}),o.push({role:"assistant",content:h}),h},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,r){let o=Date.now(),i;try{i=M(e,Array.from(this._agents.values()));}catch(p){if(p instanceof E)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:p.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw p}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??d,c=r?.model??i.inline?.model,l=i.options,u=l&&typeof l=="object"&&!Array.isArray(l)?l.query:void 0,h=u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.mode=="string"&&u.mode.trim()||void 0,T;try{T=P(s);}catch(p){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:p.message,...p instanceof f?{providerCode:p.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}try{return {ok:!0,data:await T.query(n,{model:c,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt,onOutput:r?.onOutput?w=>r.onOutput(w):void 0}),meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}catch(p){return {ok:false,data:"",error:{code:"QUERY_FAILED",message:p.message,...p instanceof f?{providerCode:p.code}:{},...h?{mode:h}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}}async execute(e,n,r){let o=Date.now(),i;try{i=M(e,Array.from(this._agents.values()));}catch(u){if(u instanceof E)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:u.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw u}let d=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??d,c=r?.model??i.inline?.model,l;try{l=P(s);}catch(u){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:u.message,...u instanceof f?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}try{return {ok:!0,data:await l.execute(n,{model:c,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt}),meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}catch(u){return {ok:false,data:"",error:{code:"EXECUTE_FAILED",message:u.message,...u instanceof f?{providerCode:u.code}:{}},meta:{agentId:i.id,provider:s,model:c,durationMs:Date.now()-o}}}}};var g="[REDACTED]",J="[PATH]";function U(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 ${g}]`),e=Ee(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${g}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,g),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,g),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,g),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,g),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,g),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,g),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,g),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,g),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,g),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${g}${r}${g}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${g}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,J),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,J),e=e.replace(/[\r\n]{3,}/g,`
3
3
 
4
4
  `).trim(),ye(e,1024)||void 0}function ye(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let r="",o=0;for(let i of t){let d=n.encode(i).byteLength;if(o+d>e)break;r+=i,o+=d;}return r}function Ee(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,o;for(;(o=e.exec(t))!==null;){if(o.index<r)continue;let i=o.index+o[0].length,d=xe(t,i),s=d>=0?d:t.indexOf(`
5
5
  `,i)>=0?t.indexOf(`
6
- `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${g}]`,r=s;}return n+t.slice(r)}function xe(t,e){let n=t[e];if(n==='"'||n==="'")return ve(t,e,n);if(n!=="{"&&n!=="[")return -1;let r=[],o,i=false;for(let d=e;d<t.length;d+=1){let s=t[d];if(o){i?i=false:s==="\\"?i=true:s===o&&(o=void 0);continue}if(s==='"'||s==="'"){o=s;continue}if(s==="{"||s==="["){r.push(s);continue}if(s!=="}"&&s!=="]")continue;let c=r.pop();if(s==="}"&&c!=="{"||s==="]"&&c!=="[")return -1;if(r.length===0)return d+1}return -1}function ve(t,e,n){let r=false;for(let o=e+1;o<t.length;o+=1){let i=t[o];if(r)r=false;else if(i==="\\")r=true;else if(i===n)return o+1}return -1}var _e=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","AGENT_MODE_RESTRICTED","PROCESS_FAILED"]),Ce=new Set(["plan","plan-auto","read-only"]),ke={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"},Ie=[{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 Pe(t){try{if(!y(t)||t.status!=="failed")return U();let e=Ae(t.error);if(B(e.message))return U();let n=m(t.providerId)??e.provider??null,r=be(t.logs),o=te(e.code);if(o)return C(o,n,e.message,e);let i=A(e.providerCode)??A(e.code),d=i?F(i,e.message,{exitCode:Le(t.exitCode),mode:e.mode,fromProviderCodeField:!!e.providerCode}):void 0;if(d)return C(d,n,e.message,e,i);let s=we(r);if(!Oe(e)&&s&&(s.type==="user_stop"||B(s.message)))return U();if(s){let l=Me(s.code,s.providerCode,s.message);if(l)return C(l,n,s.message??e.message,e,s.providerCode??s.code,s,s.structuredFailure?"terminal":"envelope")}let c=Re(e.message,r);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 U(){return {errorCode:null,errorProvider:null}}function C(t,e,n,r,o,i,d="envelope"){let s={};if(i?.resetAt!==void 0&&(s.resetAt=i.resetAt),r?.model&&(s.model=r.model),r?.mode&&(s.mode=r.mode),i?.type&&(s.upstreamType=i.type),o&&(s.upstreamCode=o),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let h=e?.startsWith("cli/")?e.slice(4):void 0;h&&(s.cliName=h);}let c=d==="terminal"?n:r?.message,l=d==="terminal"?i?.structuredFailure?c:void 0:r?.isEnvelope?c:void 0,u=L(l);return u&&(s.technicalMessage=u),Object.keys(s).length>0?{errorCode:t,errorProvider:e,errorMeta:s}:{errorCode:t,errorProvider:e}}function Ae(t){let e=typeof t=="string"?v(t):t;return y(e)?{isEnvelope:true,code:m(e.code),providerCode:m(e.providerCode),message:m(e.message)??m(e.error),provider:m(e.provider)??m(e.errorProvider),model:m(e.model),mode:m(e.mode)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function v(t){try{return JSON.parse(t)}catch{return}}function Oe(t){return !!(t.code||t.providerCode||t.message)}function be(t){let e=[];if(typeof t=="string"){let n=v(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=v(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):y(t)&&e.push(t);return e.flatMap(x)}function x(t){if(!y(t))return [];let e=m(t.type),n=m(t.message);if(n&&!e){let o=v(n);if(Array.isArray(o))return o.flatMap(x);if(y(o))return x(o);let i=n.split(/\r?\n/).map(d=>v(d.trim())).filter(d=>y(d));return i.length>0?i.flatMap(x):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:x({type:"info",content:n})}if(e==="rate_limit_event"){let o=ee(t.rate_limit_info);return m(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:k(o?.message,t.message),resetAt:De(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=ee(t.error),i=k(o?.message,o?.detail,t.message,t.errorMessage,t.content),d=k(o?.code,t.code,t.errorCode);return [{type:e,code:d,providerCode:k(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=v(t.content);if(y(o))return x(o)}let r=k(t.errorMessage,t.content);return r&&B(r)?[{type:"user_stop",message:r,rank:1,structuredFailure:false}]:r&&/(?:turn\.failed|type:error)/i.test(r)?[{type:r.match(/turn\.failed/i)?"turn.failed":"error",message:r,rank:3,structuredFailure:false}]:[]}function we(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Me(t,e,n){let r=te(t);if(r)return r;if(t){let o=F(t,n);if(o)return o}if(e){let o=F(e,n);if(o)return o}return N(n)}function Re(t,e){let n=N(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=N(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function N(t){if(!(typeof t!="string"||!t.trim()))return Ie.find(e=>e.pattern.test(t))?.code}function F(t,e,n){let r=A(t)??t;if(r==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(r==="EMPTY_OUTPUT"&&n?.fromProviderCodeField===true&&n.exitCode===0&&Se(n.mode))return "AGENT_MODE_RESTRICTED";if(r!=="UNKNOWN")return ke[r]}function te(t){let e=A(t);return e&&_e.has(e)?e:void 0}function A(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function Se(t){return typeof t=="string"&&Ce.has(t.trim().toLowerCase())}function B(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 y(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ee(t){return y(t)?t:void 0}function m(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function De(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function Le(t){return typeof t=="number"&&Number.isInteger(t)?t:void 0}function k(...t){return t.map(m).find(e=>!!e)}var Ue=["none","minimal","low","medium","high","xhigh","max","ultra"],Ne={claude:["low","medium","high","xhigh","max"],codex:["minimal","low","medium","high","xhigh","max","ultra"],opencode:[],copilot:["none","low","medium","high","xhigh","max"],antigravity:["low","medium","high"],grok:["low","medium","high","xhigh"]};var O={claude:{models:[{id:"claude-fable-5-1",name:"Claude Fable 5.1",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship"},{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-1":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"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-6-astra",name:"GPT-6 Astra",contextWindowTokens:105e4,tier:"flagship"},{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-6-astra":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"xhigh"},"gpt-5.6-sol":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["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"]}]}},G={providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"default",effort:"high",providerOptions:{alwaysApprove:true,sandbox:"off"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}};Object.fromEntries(Object.entries(O).map(([t,e])=>[t,e.models]));var Ge="claude-opus-4-8",He="claude-opus-4-8[1m]",ne=[{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 je=new Map(ne.map(({baseModelId:t,catalogModelId:e})=>[t,e]));function re(t){return je.get(t)??t}var oe=[{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"}],ze=new Map(oe.map(({legacyId:t,model:e,effort:n})=>[t,n===void 0?{model:e}:{model:e,effort:n}]));function ie(t){if(!t)return {};let e=ze.get(t);return e?{...e}:{model:t}}function H(t,e){return t==="antigravity"||t==="cli/antigravity"?ie(e):e===void 0?{}:{model:re(e)}}var se=30,ae=80;Object.keys($e.special_tokens);var Ve=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()),qe=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),Ke=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:Ve.optional(),skills:qe}).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 Qe=z$1.number().finite().int().min(se).max(ae),Ye=z$1.object({inputBudgetPercent:Qe.optional()}).catchall(z$1.unknown()),Xe=z$1.object({continuity:Ye.optional()}).catchall(z$1.unknown()),Ze=z$1.object({bin_resolution:z$1.enum(["global_first","local_first"]).optional(),dreaming:Xe.optional(),wi:z$1.object({boards:z$1.array(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()),de=z$1.object({agents:z$1.array(Ke).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:Ze.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 _=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function et(t){if(!t||typeof t!="string"||!t.trim())throw new _("YAML content must be a non-empty string");let e;try{e=load(t);}catch(o){throw new _(`YAML parse error: ${o.message}`,o)}let n=tt(e),r=de.safeParse(n);if(!r.success)throw new _(`Config validation error: ${r.error.message}`);return r.data}function tt(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,r=Object.entries(n).map(([o,i])=>({id:o,...i&&typeof i=="object"?i:{}}));return {...e,agents:r}}return e.agents?e:{...e,agents:[]}}var nt={auto:"default"};function rt(t){return nt[t]??t}var ot="crewx:fs:",j=class{prefix;store;constructor(e){this.prefix=e?.prefix??ot,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),r=this.store.get(n);if(r===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return r}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(d=>d.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),r=n.split("/"),o=[];for(let d of r)d==="."||d===""||(d===".."?o.pop():o.push(d));let i=o.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(/\/$/,""),r=this.toKey(n+"/"),o=[];for(let i of this.store.keys())if(i.startsWith(r)){let s=i.slice(r.length).split("/")[0];s&&!o.includes(s)&&o.push(s);}return o}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};var z=["codex","claude","grok","opencode","antigravity","copilot"];function it(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function W(t){let e=it(t),n=z.indexOf(e);return n===-1?z.length:n}function st(t,e){return W(t)-W(e)}var at=new Set(["claude","copilot","codex","grok","opencode"]);function dt(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(at.has(e))return `cli/${e}`}return t}function b(t){return {mode:t.mode,effort:t.effort}}function ct(t){let e=G.providers[t];if(!e)return;let n=t.startsWith("cli/")?t.slice(4):t,r=O[n]?.models.find(d=>d.recommended===true&&d.tier==="balanced")?.id??e.model,o={query:b(e.query),execute:b(e.execute)},i={query:b(e.query),execute:b(e.execute)};return {planner:{model:e.model,...o},worker:{model:r,...i}}}var ue=["urgent","high","medium","low"],le=["investigating","in-progress","in-review","on-hold","done"],I="custom:";var ut=new Set(ue),lt=new Set(le),pt={urgent:"U \uAE34\uAE09 Urgent",high:"P0 \uAE09\uD568 High",medium:"P1 \uC911\uC694 Medium",low:"P2 \uBCF4\uD1B5 Low"},$={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 ce(t,e){return !e||e.includes(t)?e??t:`${t} ${e}`}function V(t){return typeof t=="string"&&ut.has(t)}function q(t){if(typeof t!="string")return false;if(lt.has(t))return true;if(t.startsWith("c_"))return t.length>2;if(!t.startsWith(I))return false;let e=t.slice(I.length);return e.length>=1&&e.length<=20}function pe(t){if(t.startsWith(I))return t.slice(I.length)}function K(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 gt(t){let e=K(t);return !!e&&Object.prototype.hasOwnProperty.call(e,"threadTitle")}function ge(t){let e=K(t);if(!e)return {};let n=e.threadTitle;if(!n||typeof n!="object"||Array.isArray(n))return {};let r=n,o={};return V(r.priority)&&(o.priority=r.priority),q(r.state)&&(o.state=r.state),o}function ft(t,e){let n=K(t)??{},r={...ge(t)};return e.priority===null?delete r.priority:e.priority!==void 0&&(r.priority=e.priority),e.state===null?delete r.state:e.state!==void 0&&(r.state=e.state),r.priority===void 0&&r.state===void 0?delete n.threadTitle:n.threadTitle=r,Object.keys(n).length===0?null:JSON.stringify(n)}function mt(t,e=new Map){let n=[];return t.priority&&n.push(ce(pt[t.priority],e.get(t.priority))),t.state&&(t.state.startsWith(I)?n.push(pe(t.state)??""):$[t.state]?n.push(ce($[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($[t.state]??"")),n.filter(Boolean).join(" ")}function fe(t,e){if(!t||t.trim().length===0)return;let n=new Set,r=false,o=false;for(let i of t.split(",")){let d=i.trim();if(d){if(d==="none"){r=true,o=true;continue}e(d)&&(n.add(d),o=true);}}if(o)return {values:n,includeNone:r}}function ht(t){return fe(t,V)}function Tt(t){return fe(t,q)}function yt(t,e){return e?t?e.values.has(t):e.includeNone:true}export{oe as ANTIGRAVITY_MODEL_COMPATIBILITY,le as BUILTIN_THREAD_STATES,j as BrowserFsAdapter,ne as CLAUDE_MODEL_COMPATIBILITY_PAIRS,Ge as CLAUDE_OPUS_4_8_BASE_MODEL_ID,He as CLAUDE_OPUS_4_8_LEGACY_MODEL_ID,_ as ConfigLoadError,D as Crewx,Ue as EFFORT_LEVELS,Ne as PROVIDER_ARGV_EFFORTS,z as PROVIDER_ORDER,f as ProviderError,ue as THREAD_PRIORITIES,Pe as classifyTaskError,st as compareProviders,P as createProvider,pe as customStateLabel,ct as getDefaultAgentProfile,gt as hasThreadTitleKey,V as isThreadPriority,q as isThreadState,yt as matchesThreadTitleFilter,ft as mergeThreadTitleMeta,rt as normalizeClaudeMode,dt as normalizeProviderId,ht as parseThreadPriorityFilter,Tt as parseThreadStateFilter,et as parseYamlContent,W as providerRank,ge as readThreadTitleMeta,L as redactTechnicalMessage,S as registerProviderFactory,ie as resolveAntigravityModel,re as resolveCatalogModelId,H as resolveProviderCatalogModel,mt as threadTitleSearchHaystack};
6
+ `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${g}]`,r=s;}return n+t.slice(r)}function xe(t,e){let n=t[e];if(n==='"'||n==="'")return ve(t,e,n);if(n!=="{"&&n!=="[")return -1;let r=[],o,i=false;for(let d=e;d<t.length;d+=1){let s=t[d];if(o){i?i=false:s==="\\"?i=true:s===o&&(o=void 0);continue}if(s==='"'||s==="'"){o=s;continue}if(s==="{"||s==="["){r.push(s);continue}if(s!=="}"&&s!=="]")continue;let c=r.pop();if(s==="}"&&c!=="{"||s==="]"&&c!=="[")return -1;if(r.length===0)return d+1}return -1}function ve(t,e,n){let r=false;for(let o=e+1;o<t.length;o+=1){let i=t[o];if(r)r=false;else if(i==="\\")r=true;else if(i===n)return o+1}return -1}var Ce=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","AGENT_MODE_RESTRICTED","PROCESS_FAILED"]),_e=new Set(["plan","plan-auto","read-only"]),ke={QUOTA_EXHAUSTED:"USAGE_LIMITED",RATE_LIMITED:"USAGE_LIMITED",AUTH_REQUIRED:"AUTH_REQUIRED",TIMEOUT_IDLE:"TIMEOUT_OR_STUCK",TIMEOUT_TOTAL:"TIMEOUT_OR_STUCK",TIMEOUT_RESUME:"NETWORK_OR_PROVIDER_TRANSIENT",PROVIDER_NOT_FOUND:"PROVIDER_CONFIGURATION",INVALID_PROVIDER_FORMAT:"PROVIDER_CONFIGURATION",PROVIDER_CRASHED:"PROCESS_FAILED",EMPTY_OUTPUT:"PROCESS_FAILED"},Ie=[{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:"NETWORK_OR_PROVIDER_TRANSIENT",pattern:/(?:resume failed|failed .*resum(?:e|ing)|after resuming the session|재개 실패|세션 재개)/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 Pe(t){try{if(!y(t)||t.status!=="failed")return L();let e=Ae(t.error);if(G(e.message))return L();let n=m(t.providerId)??e.provider??null,r=be(t.logs),o=te(e.code);if(o)return _(o,n,e.message,e);let i=A(e.providerCode)??A(e.code),d=i?F(i,e.message,{exitCode:Ue(t.exitCode),mode:e.mode,fromProviderCodeField:!!e.providerCode}):void 0;if(d)return _(d,n,e.message,e,i);let s=we(r);if(!Oe(e)&&s&&(s.type==="user_stop"||G(s.message)))return L();if(s){let l=Re(s.code,s.providerCode,s.message);if(l)return _(l,n,s.message??e.message,e,s.providerCode??s.code,s,s.structuredFailure?"terminal":"envelope")}let c=Me(e.message,r);return c?_(c.code,n,c.message,e,c.terminal?.providerCode??c.terminal?.code,c.terminal,c.terminal?.structuredFailure?"terminal":"envelope"):_("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function L(){return {errorCode:null,errorProvider:null}}function _(t,e,n,r,o,i,d="envelope"){let s={};if(i?.resetAt!==void 0&&(s.resetAt=i.resetAt),r?.model&&(s.model=r.model),r?.mode&&(s.mode=r.mode),i?.type&&(s.upstreamType=i.type),o&&(s.upstreamCode=o),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let h=e?.startsWith("cli/")?e.slice(4):void 0;h&&(s.cliName=h);}let c=d==="terminal"?n:r?.message,l=d==="terminal"?i?.structuredFailure?c:void 0:r?.isEnvelope?c:void 0,u=U(l);return u&&(s.technicalMessage=u),Object.keys(s).length>0?{errorCode:t,errorProvider:e,errorMeta:s}:{errorCode:t,errorProvider:e}}function Ae(t){let e=typeof t=="string"?v(t):t;return y(e)?{isEnvelope:true,code:m(e.code),providerCode:m(e.providerCode),message:m(e.message)??m(e.error),provider:m(e.provider)??m(e.errorProvider),model:m(e.model),mode:m(e.mode)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function v(t){try{return JSON.parse(t)}catch{return}}function Oe(t){return !!(t.code||t.providerCode||t.message)}function be(t){let e=[];if(typeof t=="string"){let n=v(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=v(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):y(t)&&e.push(t);return e.flatMap(x)}function x(t){if(!y(t))return [];let e=m(t.type),n=m(t.message);if(n&&!e){let o=v(n);if(Array.isArray(o))return o.flatMap(x);if(y(o))return x(o);let i=n.split(/\r?\n/).map(d=>v(d.trim())).filter(d=>y(d));return i.length>0?i.flatMap(x):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:x({type:"info",content:n})}if(e==="rate_limit_event"){let o=ee(t.rate_limit_info);return m(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:k(o?.message,t.message),resetAt:De(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=ee(t.error),i=k(o?.message,o?.detail,t.message,t.errorMessage,t.content),d=k(o?.code,t.code,t.errorCode);return [{type:e,code:d,providerCode:k(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=v(t.content);if(y(o))return x(o)}let r=k(t.errorMessage,t.content);return r&&G(r)?[{type:"user_stop",message:r,rank:1,structuredFailure:false}]:r&&/(?:turn\.failed|type:error)/i.test(r)?[{type:r.match(/turn\.failed/i)?"turn.failed":"error",message:r,rank:3,structuredFailure:false}]:[]}function we(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Re(t,e,n){let r=te(t);if(r)return r;if(t){let o=F(t,n);if(o)return o}if(e){let o=F(e,n);if(o)return o}return N(n)}function Me(t,e){let n=N(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=N(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function N(t){if(!(typeof t!="string"||!t.trim()))return Ie.find(e=>e.pattern.test(t))?.code}function F(t,e,n){let r=A(t)??t;if(r==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(r==="EMPTY_OUTPUT"&&n?.fromProviderCodeField===true&&n.exitCode===0&&Se(n.mode))return "AGENT_MODE_RESTRICTED";if(r!=="UNKNOWN")return ke[r]}function te(t){let e=A(t);return e&&Ce.has(e)?e:void 0}function A(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function Se(t){return typeof t=="string"&&_e.has(t.trim().toLowerCase())}function G(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 y(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ee(t){return y(t)?t:void 0}function m(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function De(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function Ue(t){return typeof t=="number"&&Number.isInteger(t)?t:void 0}function k(...t){return t.map(m).find(e=>!!e)}var Le=["none","minimal","low","medium","high","xhigh","max","ultra"],Ne={claude:["low","medium","high","xhigh","max"],codex:["minimal","low","medium","high","xhigh","max","ultra"],opencode:[],copilot:["none","low","medium","high","xhigh","max"],antigravity:["low","medium","high"],grok:["low","medium","high","xhigh"]};var O={claude:{models:[{id:"claude-fable-5-1",name:"Claude Fable 5.1",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship"},{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-1":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"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-6-astra",name:"GPT-6 Astra",contextWindowTokens:105e4,tier:"flagship"},{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-6-astra":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"xhigh"},"gpt-5.6-sol":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["low","medium","high","xhigh","max","ultra"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["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"]}]}},B={providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"default",effort:"high",providerOptions:{alwaysApprove:true,sandbox:"off"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}};Object.fromEntries(Object.entries(O).map(([t,e])=>[t,e.models]));var Be="claude-opus-4-8",He="claude-opus-4-8[1m]",ne=[{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 je=new Map(ne.map(({baseModelId:t,catalogModelId:e})=>[t,e]));function re(t){return je.get(t)??t}var oe=[{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"}],ze=new Map(oe.map(({legacyId:t,model:e,effort:n})=>[t,n===void 0?{model:e}:{model:e,effort:n}]));function ie(t){if(!t)return {};let e=ze.get(t);return e?{...e}:{model:t}}function H(t,e){return t==="antigravity"||t==="cli/antigravity"?ie(e):e===void 0?{}:{model:re(e)}}var se=30,ae=80;Object.keys($e.special_tokens);var Ve=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()),qe=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),Ke=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:Ve.optional(),skills:qe}).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 Qe=z$1.number().finite().int().min(se).max(ae),Ye=z$1.object({inputBudgetPercent:Qe.optional()}).catchall(z$1.unknown()),Xe=z$1.object({continuity:Ye.optional()}).catchall(z$1.unknown()),Ze=z$1.object({bin_resolution:z$1.enum(["global_first","local_first"]).optional(),dreaming:Xe.optional(),wi:z$1.object({boards:z$1.array(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()).optional().catch(()=>{})}).catchall(z$1.unknown()),de=z$1.object({agents:z$1.array(Ke).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:Ze.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 C=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function et(t){if(!t||typeof t!="string"||!t.trim())throw new C("YAML content must be a non-empty string");let e;try{e=load(t);}catch(o){throw new C(`YAML parse error: ${o.message}`,o)}let n=tt(e),r=de.safeParse(n);if(!r.success)throw new C(`Config validation error: ${r.error.message}`);return r.data}function tt(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,r=Object.entries(n).map(([o,i])=>({id:o,...i&&typeof i=="object"?i:{}}));return {...e,agents:r}}return e.agents?e:{...e,agents:[]}}var nt={auto:"default"};function rt(t){return nt[t]??t}var ot="crewx:fs:",j=class{prefix;store;constructor(e){this.prefix=e?.prefix??ot,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),r=this.store.get(n);if(r===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return r}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(d=>d.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),r=n.split("/"),o=[];for(let d of r)d==="."||d===""||(d===".."?o.pop():o.push(d));let i=o.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(/\/$/,""),r=this.toKey(n+"/"),o=[];for(let i of this.store.keys())if(i.startsWith(r)){let s=i.slice(r.length).split("/")[0];s&&!o.includes(s)&&o.push(s);}return o}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};var z=["codex","claude","grok","opencode","antigravity","copilot"];function it(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function W(t){let e=it(t),n=z.indexOf(e);return n===-1?z.length:n}function st(t,e){return W(t)-W(e)}var at=new Set(["claude","copilot","codex","grok","opencode"]);function dt(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(at.has(e))return `cli/${e}`}return t}function b(t){return {mode:t.mode,effort:t.effort}}function ct(t){let e=B.providers[t];if(!e)return;let n=t.startsWith("cli/")?t.slice(4):t,r=O[n]?.models.find(d=>d.recommended===true&&d.tier==="balanced")?.id??e.model,o={query:b(e.query),execute:b(e.execute)},i={query:b(e.query),execute:b(e.execute)};return {planner:{model:e.model,...o},worker:{model:r,...i}}}var ue=["urgent","high","medium","low"],le=["investigating","in-progress","in-review","on-hold","done"],I="custom:";var ut=new Set(ue),lt=new Set(le),pt={urgent:"U \uAE34\uAE09 Urgent",high:"P0 \uAE09\uD568 High",medium:"P1 \uC911\uC694 Medium",low:"P2 \uBCF4\uD1B5 Low"},$={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 ce(t,e){return !e||e.includes(t)?e??t:`${t} ${e}`}function V(t){return typeof t=="string"&&ut.has(t)}function q(t){if(typeof t!="string")return false;if(lt.has(t))return true;if(t.startsWith("c_"))return t.length>2;if(!t.startsWith(I))return false;let e=t.slice(I.length);return e.length>=1&&e.length<=20}function pe(t){if(t.startsWith(I))return t.slice(I.length)}function K(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 gt(t){let e=K(t);return !!e&&Object.prototype.hasOwnProperty.call(e,"threadTitle")}function ge(t){let e=K(t);if(!e)return {};let n=e.threadTitle;if(!n||typeof n!="object"||Array.isArray(n))return {};let r=n,o={};return V(r.priority)&&(o.priority=r.priority),q(r.state)&&(o.state=r.state),o}function ft(t,e){let n=K(t)??{},r={...ge(t)};return e.priority===null?delete r.priority:e.priority!==void 0&&(r.priority=e.priority),e.state===null?delete r.state:e.state!==void 0&&(r.state=e.state),r.priority===void 0&&r.state===void 0?delete n.threadTitle:n.threadTitle=r,Object.keys(n).length===0?null:JSON.stringify(n)}function mt(t,e=new Map){let n=[];return t.priority&&n.push(ce(pt[t.priority],e.get(t.priority))),t.state&&(t.state.startsWith(I)?n.push(pe(t.state)??""):$[t.state]?n.push(ce($[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($[t.state]??"")),n.filter(Boolean).join(" ")}function fe(t,e){if(!t||t.trim().length===0)return;let n=new Set,r=false,o=false;for(let i of t.split(",")){let d=i.trim();if(d){if(d==="none"){r=true,o=true;continue}e(d)&&(n.add(d),o=true);}}if(o)return {values:n,includeNone:r}}function ht(t){return fe(t,V)}function Tt(t){return fe(t,q)}function yt(t,e){return e?t?e.values.has(t):e.includeNone:true}export{oe as ANTIGRAVITY_MODEL_COMPATIBILITY,le as BUILTIN_THREAD_STATES,j as BrowserFsAdapter,ne as CLAUDE_MODEL_COMPATIBILITY_PAIRS,Be as CLAUDE_OPUS_4_8_BASE_MODEL_ID,He as CLAUDE_OPUS_4_8_LEGACY_MODEL_ID,C as ConfigLoadError,D as Crewx,Le as EFFORT_LEVELS,Ne as PROVIDER_ARGV_EFFORTS,z as PROVIDER_ORDER,f as ProviderError,ue as THREAD_PRIORITIES,Pe as classifyTaskError,st as compareProviders,P as createProvider,pe as customStateLabel,ct as getDefaultAgentProfile,gt as hasThreadTitleKey,V as isThreadPriority,q as isThreadState,yt as matchesThreadTitleFilter,ft as mergeThreadTitleMeta,rt as normalizeClaudeMode,dt as normalizeProviderId,ht as parseThreadPriorityFilter,Tt as parseThreadStateFilter,et as parseYamlContent,W as providerRank,ge as readThreadTitleMeta,U as redactTechnicalMessage,S as registerProviderFactory,ie as resolveAntigravityModel,re as resolveCatalogModelId,H as resolveProviderCatalogModel,mt as threadTitleSearchHaystack};
package/dist/index.d.ts CHANGED
@@ -1,18 +1,20 @@
1
1
  export { Crewx, loadAgentSkills } from './facade/Crewx';
2
2
  export type { ToolDefinition } from './facade/Crewx';
3
- export type { ActionReceipt, ActionReceiptOutcome, CreateUiInstanceInput, JsonObject, JsonPrimitive, JsonValue, UiActionHandlerContext, UiActionHandlerRegistration, UiActionHandlerResult, UiActionEnvelope, UiActionConfirmation, UiActor, UiDefinition, UiDefinitionAction, UiDefinitionInput, UiDefinitionRef, UiProjectionPolicy, UiExecutionContext, UiAuthenticatedActor, UiAuthenticatedExecutionContext, UiAuthenticatedGrantPolicy, UiServerRuntimeFacade, UiServerRuntimeOptions, UiAgentContextProjection, UiExternalActionHandlerRegistration, UiInstance, UiInstanceStatus, UiLocalGrantPolicy, UiRuntimeFacade, UiRuntimeOptions, UiStateActionHandlerRegistration, } from './ui-instance/types.js';
3
+ export type { ActionReceipt, ActionReceiptOutcome, CreateUiInstanceInput, JsonObject, JsonPrimitive, JsonValue, UiActionHandlerContext, UiActionHandlerRegistration, UiActionHandlerResult, UiActionEnvelope, UiActionConfirmation, UiActor, UiDefinition, UiDefinitionAction, UiDefinitionDisplayMode, UiDefinitionInput, UiDefinitionRef, UiDefinitionUsage, UiProjectionPolicy, UiExecutionContext, UiAuthenticatedActor, UiAuthenticatedExecutionContext, UiAuthenticatedGrantPolicy, UiServerRuntimeFacade, UiServerRuntimeOptions, UiAgentContextProjection, UiExternalActionHandlerRegistration, UiInstance, UiInstanceStatus, UiLocalGrantPolicy, UiRuntimeFacade, UiRuntimeOptions, UiStateActionHandlerRegistration, } from './ui-instance/types.js';
4
4
  export type { UiRuntimeStoreOptions } from './ui-instance/runtime.js';
5
5
  export { UiInstanceStore, openUiInstanceReadStore, UiRuntimeError, hashUiDefinition, projectSafeJsonObject, createUiServerRuntime, resolveUiEffectiveCapabilities, } from './ui-instance/index.js';
6
6
  export type { UiAuditSnapshotInput, UiInstanceReadStore } from './ui-instance/index.js';
7
7
  export type { UiRuntimeErrorCode } from './ui-instance/index.js';
8
- export { MAX_HTML_LENGTH, MCP_APP_HOST_TOOL_ALLOWLIST, MCP_APP_LOCAL_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_URI_PREFIX, McpAppContractError, MCP_APP_PROJECTION_MAX_BYTES, buildMcpAppStateDescriptor, buildMcpAppStateProjections, buildMcpAppsContext, buildTerminalMcpAppStateDescriptor, buildTerminalMcpAppStateProjections, createBuiltinMcpAppRegistry, buildMcpAppLocalRegistration, createMcpAppLocalRegistration, registerLocalMcpApp, createMcpAppWorkspaceRegistry, createWorkspaceAppRegistry, createWorkspaceMcpAppRegistry, buildInstalledAppRef, createMcpAppRegistry, createMcpAppToolResult, INSTALLED_APP_ENTRY, InstalledAppRefError, registerMcpApp, requireMcpAppResource, resolveLocalMcpAppResource, resolveMcpAppResource, serializeMcpAppStateJson, serializeMcpAppStateXml, toMcpAppToolRegistration, validateInstalledAppRef, AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, deriveWorkspaceAppToolName, deriveWorkspaceAppToolNames, discoverWorkspaceAppCandidates, discoverWorkspaceApps, buildWorkspaceAppSnapshot, discoverWorkspaceAppSnapshot, reconfirmWorkspaceAppSnapshot, LOCAL_APP_TOOL_PREFIX, MCP_APP_WORKSPACE_TOOL_PREFIX, scanWorkspaceApps, WORKSPACE_APP_TOOL_PREFIX, } from './mcp-app/index.js';
9
- export type { AppDiscoveryBytes, AppDiscoveryDiagnostic, AppDiscoveryDirectoryEntry, AppDiscoveryDirectoryEntryKind, AppDiscoveryDirectoryListing, AppDiscoveryFileSystem, AppDiscoveryFsErrorCode, AppDiscoveryMaybePromise, AppDiscoveryOptions, McpAppDiscoveryDiagnostic, WorkspaceAppBuiltinCatalog, WorkspaceAppCandidate, WorkspaceAppDiscoveryOptions, WorkspaceAppDiscoveryResult, WorkspaceAppDiagnostic, WorkspaceAppDiagnosticCode, WorkspaceAppResourceSnapshot, WorkspaceAppReservedCatalog, WorkspaceAppSource, WorkspaceAppToolNames, McpAppActionDispatcherToolInput, McpAppActionToolDescriptor, McpAppActionToolInput, McpAppButtonDescriptor, McpAppButtonInput, McpAppContractErrorCode, McpAppDescriptor, McpAppDescriptorInput, McpAppInputSchema, McpAppTone, McpUiResourceCsp, McpAppRegistry, McpAppResource, McpAppServerStateInput, McpAppStateDescriptor, McpAppStateProjections, McpAppsContext, McpAppHostToolInput, McpAppHostToolName, McpAppReadToolInput, McpAppSingleActionToolInput, McpAppToolCommonInput, McpAppToolDescriptor, McpAppToolInput, McpAppToolMetadata, McpAppToolRegistration, McpAppToolResult, McpAppToolVisibility, McpAppInstanceResourceBinding, McpAppMcpResourceBinding, McpAppResourceBinding, McpAppLocalResource, McpAppLocalRegistrationInput, McpAppLocalReadToolDescriptor, McpAppLocalActionToolDescriptor, McpAppLocalToolDescriptor, McpAppLocalRegistration, McpAppBuiltinRegistration, McpAppResolvedRegistration, McpAppLocalLauncher, McpAppBuiltinLauncher, McpAppLauncher, WorkspaceAppLauncher, WorkspaceAppResolvedRegistration, McpAppWorkspaceRegistry, WorkspaceAppRegistry, McpAppWorkspaceRegistryInput, WorkspaceAppSnapshot, WorkspaceAppSnapshotBuildOptions, WorkspaceAppSnapshotOptions, WorkspaceAppSnapshotReconfirmResult, WorkspaceAppSnapshotResource, WorkspaceAppSnapshotInitialState, WorkspaceAppInitialState, BuildInstalledAppRefInput, InstalledAppPackageFile, InstalledAppRef, InstalledAppRefErrorCode, } from './mcp-app/index.js';
8
+ export { MAX_HTML_LENGTH, MCP_APP_HOST_TOOL_ALLOWLIST, MCP_APP_LOCAL_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_URI_PREFIX, McpAppContractError, MCP_APP_PROJECTION_MAX_BYTES, buildMcpAppStateDescriptor, buildMcpAppStateProjections, buildMcpAppsContext, buildTerminalMcpAppStateDescriptor, buildTerminalMcpAppStateProjections, createBuiltinMcpAppRegistry, buildMcpAppLocalRegistration, createMcpAppLocalRegistration, registerLocalMcpApp, createMcpAppWorkspaceRegistry, createWorkspaceAppRegistry, createWorkspaceMcpAppRegistry, buildInstalledAppRef, createMcpAppRegistry, createMcpAppToolResult, INSTALLED_APP_ENTRY, InstalledAppRefError, registerMcpApp, requireMcpAppResource, resolveLocalMcpAppResource, resolveMcpAppResource, serializeMcpAppStateJson, serializeMcpAppStateXml, toMcpAppToolRegistration, validateInstalledAppRef, AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, deriveWorkspaceAppToolName, deriveWorkspaceAppToolNames, discoverWorkspaceAppCandidates, discoverWorkspaceApps, createWorkspaceAppCatalog, discoverWorkspaceAppCatalog, hashAppDefinition, hashCrewxAppDefinition, listWorkspaceApps, buildWorkspaceAppSnapshot, discoverWorkspaceAppSnapshot, reconfirmWorkspaceAppSnapshot, LOCAL_APP_TOOL_PREFIX, MCP_APP_WORKSPACE_TOOL_PREFIX, scanWorkspaceApps, WORKSPACE_APP_TOOL_PREFIX, } from './mcp-app/index.js';
9
+ export type { AppDiscoveryBytes, AppDiscoveryDiagnostic, AppDiscoveryDirectoryEntry, AppDiscoveryDirectoryEntryKind, AppDiscoveryDirectoryListing, AppDiscoveryFileSystem, AppDiscoveryFsErrorCode, AppDiscoveryMaybePromise, AppDiscoveryOptions, McpAppDiscoveryDiagnostic, WorkspaceAppBuiltinCatalog, WorkspaceAppCandidate, WorkspaceAppDiscoveryOptions, WorkspaceAppDiscoveryResult, WorkspaceAppDiagnostic, WorkspaceAppDiagnosticCode, WorkspaceAppResourceSnapshot, WorkspaceAppReservedCatalog, WorkspaceAppSource, WorkspaceAppToolNames, CrewxAppBuiltinCatalog, CrewxAppCapability, CrewxAppCatalogOptions, CrewxAppCatalogResult, CrewxAppDefinitionHashInput, CrewxAppDefinitionSummary, CrewxAppDiagnostic, CrewxAppDiagnosticCode, CrewxAppDiagnosticSource, CrewxAppInstalledProjection, CrewxAppLocalDefinitionRef, CrewxAppOrigin, CrewxAppOwnership, CrewxAppShareability, CrewxAppSharingAvailability, CrewxAppSummary, McpAppActionDispatcherToolInput, McpAppActionToolDescriptor, McpAppActionToolInput, McpAppButtonDescriptor, McpAppButtonInput, McpAppContractErrorCode, McpAppDescriptor, McpAppDescriptorInput, McpAppInputSchema, McpAppTone, McpUiResourceCsp, McpAppRegistry, McpAppResource, McpAppServerStateInput, McpAppStateDescriptor, McpAppStateProjections, McpAppsContext, McpAppHostToolInput, McpAppHostToolName, McpAppReadToolInput, McpAppSingleActionToolInput, McpAppToolCommonInput, McpAppToolDescriptor, McpAppToolInput, McpAppToolMetadata, McpAppToolRegistration, McpAppToolResult, McpAppToolVisibility, McpAppInstanceResourceBinding, McpAppMcpResourceBinding, McpAppResourceBinding, McpAppLocalResource, McpAppLocalRegistrationInput, McpAppLocalReadToolDescriptor, McpAppLocalActionToolDescriptor, McpAppLocalToolDescriptor, McpAppLocalRegistration, McpAppBuiltinRegistration, McpAppResolvedRegistration, McpAppLocalLauncher, McpAppBuiltinLauncher, McpAppLauncher, WorkspaceAppLauncher, WorkspaceAppResolvedRegistration, McpAppWorkspaceRegistry, WorkspaceAppRegistry, McpAppWorkspaceRegistryInput, WorkspaceAppSnapshot, WorkspaceAppSnapshotBuildOptions, WorkspaceAppSnapshotOptions, WorkspaceAppSnapshotReconfirmResult, WorkspaceAppSnapshotResource, WorkspaceAppSnapshotInitialState, WorkspaceAppInitialState, BuildInstalledAppRefInput, InstalledAppPackageFile, InstalledAppRef, InstalledAppRefErrorCode, } from './mcp-app/index.js';
10
10
  export { canonicalManifestJson, manifestHash, normalizeManifest, UiPluginValidationError, validateInitialState, validateManifest, validatePayload, } from './ui-plugin/index.js';
11
11
  export { UI_PLUGIN_CAPABILITY_PATTERN, UI_PLUGIN_HANDLER_PATTERN, UI_PLUGIN_IDENTIFIER_PATTERN, UI_PLUGIN_MAX_CANDIDATE_DEPTH, UI_PLUGIN_MAX_ACTIONS, UI_PLUGIN_MAX_ARRAY_LENGTH, UI_PLUGIN_MAX_COMMAND_LENGTH, UI_PLUGIN_MAX_COMMAND_PARTS, UI_PLUGIN_MAX_DISCOVERED_APPS, UI_PLUGIN_MAX_DISCOVERY_TIME_MS, UI_PLUGIN_MAX_HEIGHT, UI_PLUGIN_MAX_INITIAL_STATE_BYTES, UI_PLUGIN_MAX_JSON_DEPTH, UI_PLUGIN_MAX_MANIFEST_BYTES, UI_PLUGIN_MAX_PROJECTION_PATHS, UI_PLUGIN_MAX_SCHEMA_DEPTH, UI_PLUGIN_MAX_SCHEMA_PROPERTIES, UI_PLUGIN_MAX_STRING_LENGTH, UI_PLUGIN_MAX_SUBTREE_BYTES, UI_PLUGIN_MAX_SURFACES, UI_PLUGIN_RESERVED_STATE_KEYS, UI_PLUGIN_SAFE_PATH_PATTERN, UI_PLUGIN_SAFE_PATH_SEGMENT_PATTERN, UI_PLUGIN_SKILL_TOKEN_PATTERN, UI_PLUGIN_SURFACES, UI_PLUGIN_TONES, isUiPluginReservedStateKey, } from './ui-plugin/index.js';
12
12
  export type { UiPluginActivation, UiPluginCardShellNode, UiPluginFieldSchema, UiPluginHeadingNode, UiPluginLabeledTextNode, UiPluginLayoutNode, UiPluginLayout, UiPluginManifest, UiPluginAction, UiPluginBackend, UiPluginCoreBackend, UiPluginInputSchema, UiPluginJsonSchema, UiPluginJsonSchemaType, UiPluginManifestMode, UiPluginManifestV1, UiPluginManifestV2, UiPluginNormalizedManifestV2, UiPluginNormalizedV2, UiPluginMetaBannerNode, UiPluginPayload, UiPluginPayloadValue, UiPluginPrimitive, UiPluginSchemaType, UiPluginSchema, UiPluginStep, UiPluginStepFlowNode, UiPluginStepListSchema, UiPluginTextListNode, UiPluginTextListSchema, UiPluginTextSchema, UiPluginProjectionPolicy, UiPluginResourceMetadata, UiPluginResourceRef, UiPluginSize, UiPluginSkillBackend, UiPluginSurface, UiPluginTone, UiPluginHandlerMetadata, UiPluginValidationErrorCode, UiPluginValidationOptions, } from './ui-plugin/index.js';
13
+ export { DEFAULT_PUBLISH_MAX_BYTES, DEFAULT_PUBLISH_MAX_FILES, packApp, packPublish, packTemplate, planPublish, PublishError, uploadToMarketplace, } from './publish/index.js';
14
+ export type { BuildAppManifestOptions, BuildManifestOptions, CreateArchiveOptions, ExcludedEntry, ManifestFile, PublishAppManifest, PublishErrorCode, PublishManifest, PublishOptions, PublishPlan, PublishTemplateManifest, PublishUploadOptions, PublishUploadResult, ScanResult, SecretFinding, } from './publish/index.js';
13
15
  export { CrewxPlugin } from './plugin';
14
16
  export { TypedEventEmitter } from './events/TypedEventEmitter';
15
- export type { CrewxEvents, CrewxEventName, CrewxEventPayload, BaseEvent, TaskStartEvent, TaskEndEvent, TaskOutputEvent, AdapterLifecycleEvent, AdapterMessageEvent, UnsubscribeFn, } from './events/types';
17
+ export type { CrewxEvents, CrewxEventName, CrewxEventPayload, BaseEvent, ActorKind, TaskStartEvent, TaskEndEvent, TaskOutputEvent, AdapterLifecycleEvent, AdapterMessageEvent, UnsubscribeFn, } from './events/types';
16
18
  export type { LayoutSpec, RenderAgentPromptOptions, SkillEntry } from './facade/Crewx';
17
19
  export { LayoutLoader } from './layout/loader';
18
20
  export { LayoutRenderer } from './layout/renderer';
@@ -29,7 +31,7 @@ export { NodeFsAdapter, defaultFsAdapter } from './platform/NodeFsAdapter';
29
31
  export { BrowserFsAdapter } from './platform/BrowserFsAdapter';
30
32
  export { truncateHelper, lengthHelper, escapeHandlebarsHelper, formatFileSizeHelper, formatTimestampHelper, } from './template/helpers/p1p2';
31
33
  export { setAuditVerbose } from './template/helpers/exec';
32
- export type { AgentConfig, CrewxProjectConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, ContextMode, TraceContext, YamlHookEntry, GuideRule, WiBoardConfig, } from './types';
34
+ export type { AgentConfig, CrewxProjectConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, ContextMode, CanResumeSessionReason, CanResumeSessionParams, CanResumeSessionResult, TraceContext, TaskActor, YamlHookEntry, GuideRule, WiBoardConfig, } from './types';
33
35
  export { AgentSkillsSchema, WiBoardSchema } from './types';
34
36
  export { loadYamlFile, parseYamlContent, ConfigLoadError } from './config/loader';
35
37
  export { resolveWiBoards, isReservedWiBoardId, WI_BOARD_ID_PATTERN, DEFAULT_WI_BOARD_ID, ARCHIVE_WI_BOARD_ID, DEFAULT_WI_WORKFLOW_ID, WI_PLAN_WORKFLOW_ID, WI_DEFAULT_FLOW_FILENAME, WI_PLAN_FLOW_FILENAME, } from './config/wi-boards';