@crewx/sdk 0.9.0-rc.16 → 0.9.0-rc.161

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 (308) hide show
  1. package/README.md +1 -1
  2. package/dist/account/auth-client.d.ts +61 -0
  3. package/dist/account/auth-json-v2.d.ts +1 -0
  4. package/dist/account/auth-json.d.ts +30 -0
  5. package/dist/account/config.d.ts +37 -0
  6. package/dist/account/env-bootstrap.d.ts +11 -0
  7. package/dist/account/errors.d.ts +24 -0
  8. package/dist/account/index.d.ts +12 -0
  9. package/dist/account/index.js +2 -0
  10. package/dist/account/session-manager.d.ts +47 -0
  11. package/dist/activity-log/builder.d.ts +59 -6
  12. package/dist/agent/agent-list-view.d.ts +19 -0
  13. package/dist/app/app.d.ts +157 -0
  14. package/dist/app/backend-env.d.ts +3 -0
  15. package/dist/app/content-media-types.d.ts +2 -0
  16. package/dist/app/context.d.ts +2 -0
  17. package/dist/app/entry.d.ts +7 -0
  18. package/dist/app/frame.d.ts +55 -0
  19. package/dist/app/index.d.ts +12 -0
  20. package/dist/app/index.js +10 -0
  21. package/dist/app/protocol.d.ts +9 -0
  22. package/dist/app/runtime.d.ts +21 -0
  23. package/dist/app/schedule-contract.d.ts +59 -0
  24. package/dist/app/tool-mode.d.ts +3 -0
  25. package/dist/boxing/box.types.d.ts +4 -0
  26. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  27. package/dist/config/default-agent-models.d.ts +11 -0
  28. package/dist/config/global-settings.d.ts +33 -0
  29. package/dist/config/migrate-grok-mode.d.ts +6 -0
  30. package/dist/config/model-compat.d.ts +31 -0
  31. package/dist/config/models.generated.d.ts +37 -0
  32. package/dist/config/models.remote.d.ts +1 -0
  33. package/dist/config/overdrive.d.ts +7 -0
  34. package/dist/config/pricing.d.ts +6 -3
  35. package/dist/config/pricing.generated.d.ts +4 -0
  36. package/dist/config/pricing.types.d.ts +4 -0
  37. package/dist/config/timeout.config.d.ts +4 -0
  38. package/dist/config/wi-boards.d.ts +19 -0
  39. package/dist/context-budget/continuity.d.ts +63 -0
  40. package/dist/context-budget/index.d.ts +142 -0
  41. package/dist/conversation/index.d.ts +1 -1
  42. package/dist/conversation/sqlite-provider.d.ts +6 -3
  43. package/dist/conversation/to-template-messages.d.ts +9 -0
  44. package/dist/conversation/types.d.ts +58 -1
  45. package/dist/desktop/command-runner.d.ts +4 -0
  46. package/dist/desktop/default-adapters.d.ts +4 -0
  47. package/dist/desktop/global-install.d.ts +19 -0
  48. package/dist/desktop/index.d.ts +3 -0
  49. package/dist/desktop/index.js +3 -0
  50. package/dist/desktop/install.d.ts +5 -0
  51. package/dist/desktop/lnk.d.ts +22 -0
  52. package/dist/desktop/manifest.d.ts +21 -0
  53. package/dist/desktop/types.d.ts +67 -0
  54. package/dist/desktop/version.d.ts +1 -0
  55. package/dist/desktop/windows-paths.d.ts +21 -0
  56. package/dist/desktop/wrapper.d.ts +18 -0
  57. package/dist/esm/account/index.js +2 -0
  58. package/dist/esm/app/index.js +10 -0
  59. package/dist/esm/desktop/index.js +3 -0
  60. package/dist/esm/index.js +1128 -226
  61. package/dist/esm/node/index.js +2 -0
  62. package/dist/esm/plugins/index.js +496 -214
  63. package/dist/esm/process/index.js +1 -0
  64. package/dist/esm/publish/index.js +2 -0
  65. package/dist/esm/repository/index.js +608 -211
  66. package/dist/esm/skills/index.js +2 -0
  67. package/dist/esm/testing/index.js +1 -1
  68. package/dist/events/types.d.ts +16 -0
  69. package/dist/facade/Crewx.d.ts +61 -5
  70. package/dist/facade/task-ticket.d.ts +14 -0
  71. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  72. package/dist/highlight/thread-highlighter.d.ts +326 -0
  73. package/dist/index.browser.d.ts +21 -1
  74. package/dist/index.browser.js +6 -2
  75. package/dist/index.d.ts +137 -17
  76. package/dist/index.js +1128 -226
  77. package/dist/internal/console-decoder.d.ts +38 -0
  78. package/dist/internal/windows-spawn.d.ts +10 -0
  79. package/dist/layout/types.d.ts +18 -1
  80. package/dist/lifecycle/process-lease.d.ts +80 -0
  81. package/dist/lifecycle/process-owner.d.ts +20 -0
  82. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  83. package/dist/lifecycle/task-stop.d.ts +82 -0
  84. package/dist/lifecycle/update-admission.d.ts +45 -0
  85. package/dist/local-server/base-url.d.ts +18 -0
  86. package/dist/local-server/index.d.ts +8 -0
  87. package/dist/local-server/opencode.d.ts +8 -0
  88. package/dist/local-server/probe.d.ts +3 -0
  89. package/dist/local-server/runtime.d.ts +26 -0
  90. package/dist/local-server/types.d.ts +43 -0
  91. package/dist/mcp-app/agent-access.d.ts +26 -0
  92. package/dist/mcp-app/app-handoff.d.ts +109 -0
  93. package/dist/mcp-app/app-icon-read.d.ts +7 -0
  94. package/dist/mcp-app/app-schedule.d.ts +85 -0
  95. package/dist/mcp-app/apps-context.d.ts +32 -0
  96. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  97. package/dist/mcp-app/candidate-registration.d.ts +4 -0
  98. package/dist/mcp-app/card-handler.d.ts +7 -0
  99. package/dist/mcp-app/catalog.d.ts +7 -0
  100. package/dist/mcp-app/content-channel.d.ts +86 -0
  101. package/dist/mcp-app/content-declarations.d.ts +31 -0
  102. package/dist/mcp-app/dev-checks.d.ts +31 -0
  103. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  104. package/dist/mcp-app/discovery.d.ts +164 -0
  105. package/dist/mcp-app/errors.d.ts +7 -0
  106. package/dist/mcp-app/index.d.ts +41 -0
  107. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  108. package/dist/mcp-app/model-context.d.ts +29 -0
  109. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  110. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  111. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  112. package/dist/mcp-app/projection.d.ts +14 -0
  113. package/dist/mcp-app/prompt-cards.d.ts +28 -0
  114. package/dist/mcp-app/registry.d.ts +28 -0
  115. package/dist/mcp-app/skill-backend.d.ts +135 -0
  116. package/dist/mcp-app/state-set.d.ts +9 -0
  117. package/dist/mcp-app/types.d.ts +488 -0
  118. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  119. package/dist/mcp-app/workspace-app-scan-cache.d.ts +27 -0
  120. package/dist/mcp-app/workspace-snapshot.d.ts +75 -0
  121. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  122. package/dist/migrations/0012_blue_turbo.sql +23 -0
  123. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  124. package/dist/migrations/0014_organic_mongu.sql +73 -0
  125. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  126. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  127. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  128. package/dist/migrations/0018_bored_jackal.sql +33 -0
  129. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  130. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  131. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  132. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  133. package/dist/migrations/0023_red_payback.sql +1 -0
  134. package/dist/migrations/0024_storage_metadata.sql +262 -0
  135. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  136. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  137. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  138. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  139. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  140. package/dist/migrations/0029_nice_rhino.sql +1 -0
  141. package/dist/migrations/0031_petite_arclight.sql +6 -0
  142. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  143. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  144. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  145. package/dist/migrations/0035_request_log_daily.sql +11 -0
  146. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  147. package/dist/migrations/0037_ui_instance_agent_open_request.sql +1 -0
  148. package/dist/migrations/0038_task_rating.sql +3 -0
  149. package/dist/migrations/0039_aspiring_purifiers.sql +9 -0
  150. package/dist/migrations/0040_task_provider_inputs.sql +53 -0
  151. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  152. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  153. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  154. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  155. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  156. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  157. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  158. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  159. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  160. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  161. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  162. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  163. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  164. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  165. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  166. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  167. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  168. package/dist/migrations/meta/0037_snapshot.json +3598 -0
  169. package/dist/migrations/meta/0038_snapshot.json +3626 -0
  170. package/dist/migrations/meta/0039_snapshot.json +3684 -0
  171. package/dist/migrations/meta/0040_snapshot.json +3759 -0
  172. package/dist/migrations/meta/_journal.json +210 -0
  173. package/dist/node/index.d.ts +1 -0
  174. package/dist/node/index.js +2 -0
  175. package/dist/paths.d.ts +1 -0
  176. package/dist/plugin/types.d.ts +1 -0
  177. package/dist/plugins/index.d.ts +1 -1
  178. package/dist/plugins/index.js +496 -214
  179. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  180. package/dist/process/index.d.ts +2 -0
  181. package/dist/process/index.js +1 -0
  182. package/dist/process/process-control.d.ts +41 -0
  183. package/dist/prompt/tag-names.d.ts +22 -0
  184. package/dist/provider/acp/connection.d.ts +6 -0
  185. package/dist/provider/acp/meta.d.ts +11 -0
  186. package/dist/provider/bridge.d.ts +7 -1
  187. package/dist/provider/classify-task-error.d.ts +2 -0
  188. package/dist/provider/cli/adapter.types.d.ts +14 -2
  189. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  190. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  191. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  192. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  193. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  194. package/dist/provider/cli/adapters/index.d.ts +5 -0
  195. package/dist/provider/cli/index.d.ts +3 -2
  196. package/dist/provider/cli/meta.d.ts +5 -0
  197. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  198. package/dist/provider/errors.d.ts +5 -1
  199. package/dist/provider/idle-watchdog.d.ts +19 -0
  200. package/dist/provider/models.d.ts +17 -12
  201. package/dist/provider/order.d.ts +1 -1
  202. package/dist/provider/parse-usage.d.ts +6 -0
  203. package/dist/provider/provider-selection.d.ts +8 -0
  204. package/dist/provider/redact-technical-message.d.ts +1 -0
  205. package/dist/provider/task-error.types.d.ts +17 -0
  206. package/dist/publish/constants.d.ts +6 -0
  207. package/dist/publish/errors.d.ts +7 -0
  208. package/dist/publish/index.d.ts +55 -0
  209. package/dist/publish/index.js +2 -0
  210. package/dist/publish/manifest.d.ts +47 -0
  211. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  212. package/dist/publish/pack.d.ts +6 -0
  213. package/dist/publish/scan.d.ts +10 -0
  214. package/dist/publish/secrets.d.ts +6 -0
  215. package/dist/publish/upload.d.ts +19 -0
  216. package/dist/remote/execution-profile.d.ts +9 -0
  217. package/dist/remote/index.d.ts +1 -0
  218. package/dist/remote/types.d.ts +28 -0
  219. package/dist/repository/agent-send-history.repository.d.ts +23 -0
  220. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  221. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  222. package/dist/repository/common-code.repository.d.ts +45 -0
  223. package/dist/repository/db.d.ts +12 -1
  224. package/dist/repository/index.d.ts +49 -6
  225. package/dist/repository/index.js +608 -211
  226. package/dist/repository/logs-db.d.ts +12 -0
  227. package/dist/repository/notification.repository.d.ts +58 -0
  228. package/dist/repository/project.repository.d.ts +90 -0
  229. package/dist/repository/request-log-mover.d.ts +70 -0
  230. package/dist/repository/request-log.repository.d.ts +7 -3
  231. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  232. package/dist/repository/task-log-migration.d.ts +74 -0
  233. package/dist/repository/task-log.repository.d.ts +44 -0
  234. package/dist/repository/task-status.d.ts +21 -0
  235. package/dist/repository/task.repository.d.ts +300 -7
  236. package/dist/repository/thread-history.repository.d.ts +193 -0
  237. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  238. package/dist/repository/thread-title.types.d.ts +29 -0
  239. package/dist/repository/thread.repository.d.ts +118 -7
  240. package/dist/repository/usage-backfill.d.ts +62 -0
  241. package/dist/repository/usage-from-logs.d.ts +21 -0
  242. package/dist/repository/workspace.repository.d.ts +3 -0
  243. package/dist/schema/agent-send-history.d.ts +85 -0
  244. package/dist/schema/agent-suggestions.d.ts +199 -0
  245. package/dist/schema/common-codes.d.ts +216 -0
  246. package/dist/schema/index.d.ts +15 -0
  247. package/dist/schema/notifications.d.ts +303 -0
  248. package/dist/schema/projects.d.ts +610 -0
  249. package/dist/schema/request-log-daily.d.ts +151 -0
  250. package/dist/schema/storage-metadata.d.ts +181 -0
  251. package/dist/schema/task-log-events.d.ts +119 -0
  252. package/dist/schema/task-provider-inputs.d.ts +100 -0
  253. package/dist/schema/tasks.d.ts +1058 -1
  254. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  255. package/dist/schema/thread-history.d.ts +734 -0
  256. package/dist/schema/threads.d.ts +59 -0
  257. package/dist/schema/ui-action-receipts.d.ts +358 -0
  258. package/dist/schema/ui-definition-archive.d.ts +63 -0
  259. package/dist/schema/ui-instance-repins.d.ts +222 -0
  260. package/dist/schema/ui-instances.d.ts +324 -0
  261. package/dist/schema/workspaces.d.ts +17 -0
  262. package/dist/skills/index.d.ts +15 -0
  263. package/dist/skills/index.js +2 -0
  264. package/dist/skills/types.d.ts +18 -0
  265. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  266. package/dist/task-log/delegation-trailer.d.ts +34 -0
  267. package/dist/template/engine.d.ts +2 -2
  268. package/dist/template/helpers/exec.browser.d.ts +4 -3
  269. package/dist/template/helpers/exec.d.ts +4 -3
  270. package/dist/template/helpers/format-conversation.d.ts +1 -0
  271. package/dist/template/types.d.ts +20 -0
  272. package/dist/testing/index.js +1 -1
  273. package/dist/types/index.d.ts +1578 -3
  274. package/dist/types/task-log.types.d.ts +3 -0
  275. package/dist/ui-card/index.d.ts +2 -0
  276. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  277. package/dist/ui-instance/definition.d.ts +6 -0
  278. package/dist/ui-instance/errors.d.ts +18 -0
  279. package/dist/ui-instance/index.d.ts +11 -0
  280. package/dist/ui-instance/json.d.ts +19 -0
  281. package/dist/ui-instance/lineage.d.ts +24 -0
  282. package/dist/ui-instance/runtime.d.ts +19 -0
  283. package/dist/ui-instance/store.d.ts +213 -0
  284. package/dist/ui-instance/types.d.ts +337 -0
  285. package/dist/ui-plugin/app-icon.d.ts +50 -0
  286. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  287. package/dist/ui-plugin/csp.d.ts +28 -0
  288. package/dist/ui-plugin/index.d.ts +8 -0
  289. package/dist/ui-plugin/limits.d.ts +27 -0
  290. package/dist/ui-plugin/manifest.d.ts +3 -0
  291. package/dist/ui-plugin/types.d.ts +204 -0
  292. package/dist/ui-plugin/validator.d.ts +18 -0
  293. package/dist/utils/crewx-executable.d.ts +76 -0
  294. package/dist/utils/crewx-home.d.ts +1 -0
  295. package/dist/utils/env-defaults.d.ts +3 -0
  296. package/dist/utils/id.d.ts +1 -1
  297. package/dist/utils/local-identity.d.ts +2 -0
  298. package/dist/utils/runner-env.d.ts +3 -0
  299. package/dist/utils/timestamp.d.ts +1 -0
  300. package/dist/utils/workspace.d.ts +1 -0
  301. package/dist/wi/create.d.ts +48 -0
  302. package/dist/wi/select.d.ts +20 -0
  303. package/package.json +57 -3
  304. package/templates/agents/default.yaml +303 -128
  305. package/templates/documents/crewx-manual.md +138 -138
  306. package/templates/documents/crewx-quick-guide.md +8 -7
  307. package/templates/workflows/wi-default-flow.yaml +65 -0
  308. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -1,2 +1,6 @@
1
- import {load}from'js-yaml';import {z as z$1}from'zod';var m=class extends Error{constructor(e,r){let t=r.length>0?` Available: ${r.join(", ")}`:"";super(`Agent not found: "${e}".${t}`),this.name="AgentNotFoundError";}},D={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function w(s,e){let r=s.startsWith("@")?s.slice(1):s,t=e.find(o=>o.id===r);if(t)return t;let i=D[r];if(i)return i;throw new m(s,e.map(o=>o.id))}var l=class extends Error{constructor(r,t,i){super(r);this.providerStr=t;this.name="ProviderError",this.code=i?.code??"UNKNOWN",this.kind=i?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=i?.retryAfterMs;}providerStr;code;kind;retryAfterMs};var I=new Map;function P(s,e){I.set(s,e);}function x(s){let e=s.split("/");if(e.length!==2)throw new l(`Invalid provider format: "${s}". Expected namespace/id (e.g., api/webllm)`,s);let[r,t]=e,i=I.get(r);if(i)return i(t,s);throw new l(`Unsupported provider namespace: "${r}". Register a factory with registerProviderFactory('${r}', factory).`,s)}var j=new Function("u","return import(u)"),A=class s{_agents;_config;_tools=new Map;_apiProviders=new Map;constructor(e,r){this._agents=new Map(e.map(t=>[t.id,t])),this._config=r;}static async fromConfig(e,r){let t=new s(e.agents??[],e),i=e.agents??[],o=a=>Array.isArray(a.provider)?a.provider[0]:a.provider,d=i.filter(a=>o(a)==="api/webllm"),c=i.filter(a=>o(a)==="api/openrouter");if(d.length>0&&await t._initWebLLM(d,r?.onProgress),c.length>0){if(!r?.openrouterApiKey)throw new Error("openrouterApiKey is required when using api/openrouter provider");t._initOpenRouter(c,r.openrouterApiKey);}return t._apiProviders.size>0&&P("api",(a,g)=>{let p=t._apiProviders.get(a);if(!p)throw new l(`Unknown api provider: ${a}`,g);return p}),t}async _initWebLLM(e,r){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not available. Chrome 113+ or Edge 113+ required.");let t=await j("https://esm.run/@mlc-ai/web-llm"),i=e[0]?.inline?.model??"gemma-2-2b-it-q4f16_1-MLC",o=await t.CreateMLCEngine(i,{initProgressCallback:r?c=>r(c):void 0}),d=[];this._apiProviders.set("webllm",{async query(c,a){let g=[];a?.systemPrompt&&g.push({role:"system",content:a.systemPrompt}),g.push(...d),g.push({role:"user",content:c});let p="",u=await o.chat.completions.create({messages:g,stream:true,temperature:.7,max_tokens:4096});for await(let y of u){let v=y.choices?.[0]?.delta?.content??"";p+=v,a?.onOutput&&a.onOutput(p,"stdout");}return d.push({role:"user",content:c}),d.push({role:"assistant",content:p}),p},async execute(c,a){return this.query(c,a)}});}_initOpenRouter(e,r){let t=e[0]?.inline?.model??"google/gemma-2-2b-it",i=[];this._apiProviders.set("openrouter",{async query(o,d){let c=[];d?.systemPrompt&&c.push({role:"system",content:d.systemPrompt}),c.push(...i),c.push({role:"user",content:o});let a=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({model:d?.model||t,messages:c,stream:true})});if(!a.ok){let v=await a.text();throw new Error(`OpenRouter API error (${a.status}): ${v}`)}let g=a.body.getReader(),p=new TextDecoder,u="",y="";for(;;){let{done:v,value:T}=await g.read();if(v)break;y+=p.decode(T,{stream:true});let O=y.split(`
2
- `);y=O.pop();for(let M of O){let h=M.trim();if(!h||!h.startsWith("data: "))continue;let k=h.slice(6);if(k!=="[DONE]")try{let b=JSON.parse(k).choices?.[0]?.delta?.content??"";u+=b,b&&d?.onOutput&&d.onOutput(u,"stdout");}catch{}}}return i.push({role:"user",content:o}),i.push({role:"assistant",content:u}),u},async execute(o,d){return this.query(o,d)}});}get agents(){return this._agents}get config(){return this._config}get tools(){return this._tools}registerTool(e,r){this._tools.set(e,{name:e,...r});}async query(e,r,t){let i=Date.now(),o;try{o=w(e,Array.from(this._agents.values()));}catch(p){if(p instanceof m)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:p.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-i}};throw p}let d=Array.isArray(o.provider)?o.provider[0]??"api/default":o.provider,c=t?.provider??d,a=t?.model??o.inline?.model,g;try{g=x(c);}catch(p){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:p.message},meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}try{return {ok:!0,data:await g.query(r,{model:a,context:t?.context,systemPrompt:o.inline?.system_prompt??o.inline?.prompt,onOutput:t?.onOutput?u=>t.onOutput(u):void 0}),meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}catch(p){return {ok:false,data:"",error:{code:"QUERY_FAILED",message:p.message},meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}}async execute(e,r,t){let i=Date.now(),o;try{o=w(e,Array.from(this._agents.values()));}catch(p){if(p instanceof m)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:p.message},meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:Date.now()-i}};throw p}let d=Array.isArray(o.provider)?o.provider[0]??"api/default":o.provider,c=t?.provider??d,a=t?.model??o.inline?.model,g;try{g=x(c);}catch(p){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:p.message},meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}try{return {ok:!0,data:await g.execute(r,{model:a,context:t?.context,systemPrompt:o.inline?.system_prompt??o.inline?.prompt}),meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}catch(p){return {ok:false,data:"",error:{code:"EXECUTE_FAILED",message:p.message},meta:{agentId:o.id,provider:c,model:a,durationMs:Date.now()-i}}}}};var F=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()})]).optional()}).catchall(z$1.unknown()),U=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),N=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:F.optional(),skills:U}).catchall(z$1.unknown()),_=z$1.object({agents:z$1.array(N).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:z$1.record(z$1.unknown()).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 f=class extends Error{constructor(r,t){super(r);this.cause=t;this.name="ConfigLoadError";}cause};function S(s){if(!s||typeof s!="string"||!s.trim())throw new f("YAML content must be a non-empty string");let e;try{e=load(s);}catch(i){throw new f(`YAML parse error: ${i.message}`,i)}let r=Q(e),t=_.safeParse(r);if(!t.success)throw new f(`Config validation error: ${t.error.message}`);return t.data}function Q(s){if(!s||typeof s!="object")return {agents:[]};let e=s;if(e.agents&&typeof e.agents=="object"&&!Array.isArray(e.agents)){let r=e.agents,t=Object.entries(r).map(([i,o])=>({id:i,...o&&typeof o=="object"?o:{}}));return {...e,agents:t}}return e.agents?e:{...e,agents:[]}}var $="crewx:fs:",E=class{prefix;store;constructor(e){this.prefix=e?.prefix??$,this.store=e?.storage??new Map;}async readFile(e){let r=this.toKey(e),t=this.store.get(r);if(t===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return t}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let r=e.map(d=>d.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),t=r.split("/"),i=[];for(let d of t)d==="."||d===""||(d===".."?i.pop():i.push(d));let o=i.join("/");return r.startsWith("/")?`/${o}`:o}isAbsolute(e){return e.startsWith("/")}setItem(e,r){this.store.set(this.toKey(e),r);}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 r=e.replace(/\\/g,"/").replace(/\/$/,""),t=this.toKey(r+"/"),i=[];for(let o of this.store.keys())if(o.startsWith(t)){let c=o.slice(t.length).split("/")[0];c&&!i.includes(c)&&i.push(c);}return i}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};var C=["codex","claude","opencode","antigravity","copilot"];function K(s){let e=s.indexOf("/");return e===-1?s:s.slice(e+1)}function R(s){let e=K(s),r=C.indexOf(e);return r===-1?C.length:r}function B(s,e){return R(s)-R(e)}var W=new Set(["claude","copilot","codex","opencode"]);function z(s){if(!s)return "";if(s.startsWith("acp/")){let e=s.slice(4);if(W.has(e))return `cli/${e}`}return s}export{E as BrowserFsAdapter,f as ConfigLoadError,A as Crewx,C as PROVIDER_ORDER,l as ProviderError,B as compareProviders,x as createProvider,z as normalizeProviderId,S as parseYamlContent,R as providerRank,P as registerProviderFactory};
1
+ import {load}from'js-yaml';import'js-tiktoken';import'js-tiktoken/lite';import kt from'js-tiktoken/ranks/o200k_base';import {z as z$1}from'zod';var I=class extends Error{constructor(t,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${t}".${r}`),this.name="AgentNotFoundError";}},nt={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function K(e,t){let n=e.startsWith("@")?e.slice(1):e,r=t.find(i=>i.id===n);if(r)return r;let o=nt[n];if(o)return o;throw new I(e,t.map(i=>i.id))}var m=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 Ce=new Map;function Y(e,t){Ce.set(e,t);}function U(e){let t=e.split("/");if(t.length!==2)throw new m(`Invalid provider format: "${e}". Expected namespace/id (e.g., api/webllm)`,e);let[n,r]=t,o=Ce.get(n);if(o)return o(r,e);throw new m(`Unsupported provider namespace: "${n}". Register a factory with registerProviderFactory('${n}', factory).`,e)}var rt=new Function("u","return import(u)"),Q=class e{_agents;_config;_tools=new Map;_apiProviders=new Map;constructor(t,n){this._agents=new Map(t.map(r=>[r.id,r])),this._config=n;}static async fromConfig(t,n){let r=new e(t.agents??[],t),o=t.agents??[],i=d=>Array.isArray(d.provider)?d.provider[0]:d.provider,a=o.filter(d=>i(d)==="api/webllm"),s=o.filter(d=>i(d)==="api/openrouter");if(a.length>0&&await r._initWebLLM(a,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&&Y("api",(d,l)=>{let c=r._apiProviders.get(d);if(!c)throw new m(`Unknown api provider: ${d}`,l);return c}),r}async _initWebLLM(t,n){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not available. Chrome 113+ or Edge 113+ required.");let r=await rt("https://esm.run/@mlc-ai/web-llm"),o=t[0]?.inline?.model??"gemma-2-2b-it-q4f16_1-MLC",i=await r.CreateMLCEngine(o,{initProgressCallback:n?s=>n(s):void 0}),a=[];this._apiProviders.set("webllm",{async query(s,d){let l=[];d?.systemPrompt&&l.push({role:"system",content:d.systemPrompt}),l.push(...a),l.push({role:"user",content:s});let c="",A=await i.chat.completions.create({messages:l,stream:true,temperature:.7,max_tokens:4096});for await(let T of A){let g=T.choices?.[0]?.delta?.content??"";c+=g,d?.onOutput&&d.onOutput(c,"stdout");}return a.push({role:"user",content:s}),a.push({role:"assistant",content:c}),c},async execute(s,d){return this.query(s,d)}});}_initOpenRouter(t,n){let r=t[0]?.inline?.model??"google/gemma-2-2b-it",o=[];this._apiProviders.set("openrouter",{async query(i,a){let s=[];a?.systemPrompt&&s.push({role:"system",content:a.systemPrompt}),s.push(...o),s.push({role:"user",content:i});let d=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"},body:JSON.stringify({model:a?.model||r,messages:s,stream:true})});if(!d.ok){let g=await d.text();throw new Error(`OpenRouter API error (${d.status}): ${g}`)}let l=d.body.getReader(),c=new TextDecoder,A="",T="";for(;;){let{done:g,value:$}=await l.read();if(g)break;T+=c.decode($,{stream:true});let _e=T.split(`
2
+ `);T=_e.pop();for(let tt of _e){let X=tt.trim();if(!X||!X.startsWith("data: "))continue;let Ie=X.slice(6);if(Ie!=="[DONE]")try{let xe=JSON.parse(Ie).choices?.[0]?.delta?.content??"";A+=xe,xe&&a?.onOutput&&a.onOutput(A,"stdout");}catch{}}}return o.push({role:"user",content:i}),o.push({role:"assistant",content:A}),A},async execute(i,a){return this.query(i,a)}});}get agents(){return this._agents}get config(){return this._config}get tools(){return this._tools}registerTool(t,n){this._tools.set(t,{name:t,...n});}async query(t,n,r){let o=Date.now(),i;try{i=K(t,Array.from(this._agents.values()));}catch(g){if(g instanceof I)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:g.message},meta:{agentId:t.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw g}let a=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??a,d=r?.model??i.inline?.model,l=i.options,c=l&&typeof l=="object"&&!Array.isArray(l)?l.query:void 0,A=c&&typeof c=="object"&&!Array.isArray(c)&&typeof c.mode=="string"&&c.mode.trim()||void 0,T;try{T=U(s);}catch(g){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:g.message,...g instanceof m?{providerCode:g.code}:{}},meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}try{return {ok:!0,data:await T.query(n,{model:d,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt,onOutput:r?.onOutput?$=>r.onOutput($):void 0}),meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}catch(g){return {ok:false,data:"",error:{code:"QUERY_FAILED",message:g.message,...g instanceof m?{providerCode:g.code}:{},...A?{mode:A}:{}},meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}}async execute(t,n,r){let o=Date.now(),i;try{i=K(t,Array.from(this._agents.values()));}catch(c){if(c instanceof I)return {ok:false,data:"",error:{code:"AGENT_NOT_FOUND",message:c.message},meta:{agentId:t.replace(/^@/,""),provider:"",durationMs:Date.now()-o}};throw c}let a=Array.isArray(i.provider)?i.provider[0]??"api/default":i.provider,s=r?.provider??a,d=r?.model??i.inline?.model,l;try{l=U(s);}catch(c){return {ok:false,data:"",error:{code:"PROVIDER_ERROR",message:c.message,...c instanceof m?{providerCode:c.code}:{}},meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}try{return {ok:!0,data:await l.execute(n,{model:d,context:r?.context,systemPrompt:i.inline?.system_prompt??i.inline?.prompt}),meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}catch(c){return {ok:false,data:"",error:{code:"EXECUTE_FAILED",message:c.message,...c instanceof m?{providerCode:c.code}:{}},meta:{agentId:i.id,provider:s,model:d,durationMs:Date.now()-o}}}}};var f="[REDACTED]",Pe="[PATH]";function Z(e){if(typeof e!="string")return;let t=e.trim();if(t)return t=t.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),t=t.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 ${f}]`),t=it(t),t=t.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${f}`),t=t.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,f),t=t.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,f),t=t.replace(/\bxoxb-[A-Za-z0-9-]+/g,f),t=t.replace(/\bxoxp-[A-Za-z0-9-]+/g,f),t=t.replace(/\bAKIA[0-9A-Z]{12,}\b/g,f),t=t.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,f),t=t.replace(/\bgho_[A-Za-z0-9_]+/g,f),t=t.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,f),t=t.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,f),t=t.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${f}${r}${f}`),t=t.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${f}`),t=t.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Pe),t=t.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Pe),t=t.replace(/[\r\n]{3,}/g,`
3
+
4
+ `).trim(),ot(t,1024)||void 0}function ot(e,t){let n=new TextEncoder;if(n.encode(e).byteLength<=t)return e;let r="",o=0;for(let i of e){let a=n.encode(i).byteLength;if(o+a>t)break;r+=i,o+=a;}return r}function it(e){let t=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,o;for(;(o=t.exec(e))!==null;){if(o.index<r)continue;let i=o.index+o[0].length,a=st(e,i),s=a>=0?a:e.indexOf(`
5
+ `,i)>=0?e.indexOf(`
6
+ `,i):e.length;n+=e.slice(r,o.index),n+=`[HTTP BODY ${f}]`,r=s;}return n+e.slice(r)}function st(e,t){let n=e[t];if(n==='"'||n==="'")return at(e,t,n);if(n!=="{"&&n!=="[")return -1;let r=[],o,i=false;for(let a=t;a<e.length;a+=1){let s=e[a];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 d=r.pop();if(s==="}"&&d!=="{"||s==="]"&&d!=="[")return -1;if(r.length===0)return a+1}return -1}function at(e,t,n){let r=false;for(let o=t+1;o<e.length;o+=1){let i=e[o];if(r)r=false;else if(i==="\\")r=true;else if(i===n)return o+1}return -1}var pt=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"]),dt=new Set(["plan","plan-auto","read-only"]),ct={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"},lt=[{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:"MODEL_NOT_SUPPORTED",pattern:/\bunrecognized_model\b/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 ut(e){try{if(!E(e)||e.status!=="failed")return J();let t=gt(e.error);if(ne(t.message))return J();let n=y(e.providerId)??t.provider??null,r=mt(e.logs),o=Me(t.code);if(o)return R(o,n,t.message,t);let i=N(t.providerCode)??N(t.code),a=i?te(i,t.message,{exitCode:_t(e.exitCode),mode:t.mode,fromProviderCodeField:!!t.providerCode}):void 0;if(a)return R(a,n,t.message,t,i);let s=yt(r);if(!ft(t)&&s&&(s.type==="user_stop"||ne(s.message)))return J();if(s){let l=At(s.code,s.providerCode,s.message);if(l)return R(l,n,s.message??t.message,t,s.providerCode??s.code,s,s.structuredFailure?"terminal":"envelope")}let d=ht(t.message,r);return d?R(d.code,n,d.message,t,d.terminal?.providerCode??d.terminal?.code,d.terminal,d.terminal?.structuredFailure?"terminal":"envelope"):R("PROCESS_FAILED",n,t.message,t)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function J(){return {errorCode:null,errorProvider:null}}function R(e,t,n,r,o,i,a="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),e==="CLI_NOT_AVAILABLE"||e==="CLI_UPDATE_REQUIRED"){let A=t?.startsWith("cli/")?t.slice(4):void 0;A&&(s.cliName=A);}let d=a==="terminal"?n:r?.message,l=a==="terminal"?i?.structuredFailure?d:void 0:r?.isEnvelope?d:void 0,c=Z(l);return c&&(s.technicalMessage=c),Object.keys(s).length>0?{errorCode:e,errorProvider:t,errorMeta:s}:{errorCode:e,errorProvider:t}}function gt(e){let t=typeof e=="string"?C(e):e;return E(t)?{isEnvelope:true,code:y(t.code),providerCode:y(t.providerCode),message:y(t.message)??y(t.error),provider:y(t.provider)??y(t.errorProvider),model:y(t.model),mode:y(t.mode)}:{isEnvelope:false,...typeof e=="string"&&e.trim()?{message:e.trim()}:{}}}function C(e){try{return JSON.parse(e)}catch{return}}function ft(e){return !!(e.code||e.providerCode||e.message)}function mt(e){let t=[];if(typeof e=="string"){let n=C(e);if(Array.isArray(n))t.push(...n);else for(let r of e.split(/\r?\n/)){let o=C(r.trim());o!==void 0&&t.push(o);}}else Array.isArray(e)?t.push(...e):E(e)&&t.push(e);return t.flatMap(x)}function x(e){if(!E(e))return [];let t=y(e.type),n=y(e.message);if(n&&!t){let o=C(n);if(Array.isArray(o))return o.flatMap(x);if(E(o))return x(o);let i=n.split(/\r?\n/).map(a=>C(a.trim())).filter(a=>E(a));return i.length>0?i.flatMap(x):e.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:x({type:"info",content:n})}if(t==="rate_limit_event"){let o=Oe(e.rate_limit_info);return y(o?.status)!=="rejected"?[]:[{type:t,code:"RATE_LIMITED",message:S(o?.message,e.message),resetAt:Et(o?.resetsAt),rank:4,structuredFailure:true}]}if(t==="turn.failed"||t==="error"){let o=Oe(e.error),i=S(o?.message,o?.detail,e.message,e.errorMessage,e.content),a=S(o?.code,e.code,e.errorCode);return [{type:t,code:a,providerCode:S(o?.providerCode,e.providerCode),message:i,rank:t==="turn.failed"?3:2,structuredFailure:true}]}if(t==="text"&&typeof e.content=="string"){let o=C(e.content);if(E(o))return x(o)}let r=S(e.errorMessage,e.content);return r&&ne(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 yt(e){return [...e].sort((t,n)=>n.rank-t.rank)[0]}function At(e,t,n){let r=Me(e);if(r)return r;if(e){let o=te(e,n);if(o)return o}if(t){let o=te(t,n);if(o)return o}return ee(n)}function ht(e,t){let n=ee(e);if(n)return {code:n,message:e};for(let r of [...t].sort((o,i)=>i.rank-o.rank)){let o=ee(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function ee(e){if(!(typeof e!="string"||!e.trim()))return lt.find(t=>t.pattern.test(e))?.code}function te(e,t,n){let r=N(e)??e;if(r==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(t??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(r==="EMPTY_OUTPUT"&&n?.fromProviderCodeField===true&&n.exitCode===0&&Tt(n.mode))return "AGENT_MODE_RESTRICTED";if(r!=="UNKNOWN")return ct[r]}function Me(e){let t=N(e);return t&&pt.has(t)?t:void 0}function N(e){return typeof e=="string"&&e.trim()?e.trim().toUpperCase():void 0}function Tt(e){return typeof e=="string"&&dt.has(e.trim().toLowerCase())}function ne(e){return e?/\b(?:stopped|killed|aborted|cancelled|canceled)\s+by\s+user\b/i.test(e)||/사용자에 의해 중지됨/.test(e)||/\b(?:SIGTERM\s+143|143\s+SIGTERM)\b/i.test(e):false}function E(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Oe(e){return E(e)?e:void 0}function y(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Et(e){return typeof e=="string"||typeof e=="number"&&Number.isFinite(e)?e:void 0}function _t(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}function S(...e){return e.map(y).find(t=>!!t)}var It=["none","minimal","low","medium","high","xhigh","max","ultra"],xt={claude:["low","medium","high","xhigh","max"],codex:["none","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 L={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-5",name:"Claude Opus 5.5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-5-5",name:"Claude Sonnet 5.5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{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-5-5",name:"Claude Haiku 5.5",contextWindowTokens:1e6,tier:"speed"},{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-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"medium"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5-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-5-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"medium"},"claude-haiku-4-5":{effort:[]}},providerOptions:[]},codex:{models:[{id:"gpt-6-astra",name:"GPT-6 Astra",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-6.1-sol",name:"GPT-6.1 Sol",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-6-sol",name:"GPT-6 Sol",contextWindowTokens:105e4,tier:"balanced"},{id:"gpt-6-luna",name:"GPT-6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced"},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,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"],defaultEffort:"xhigh"},"gpt-6.1-sol":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"max"},"gpt-6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"medium"},"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"}],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.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.7",name:"Grok 4.7",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship"},{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.7":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"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"]}]}},re={providers:{"cli/codex":{model:"gpt-6.1-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"high"}},"cli/claude":{model:"claude-opus-5-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.7",query:{mode:"default",effort:"high",providerOptions:{alwaysApprove:true,sandbox:"off"}},execute:{mode:"bypassPermissions",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}};Object.fromEntries(Object.entries(L).map(([e,t])=>[e,t.models]));var Ot="claude-opus-4-8",Mt="claude-opus-4-8[1m]",Re=[{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 Rt=new Map(Re.map(({baseModelId:e,catalogModelId:t})=>[e,t]));function Se(e){return Rt.get(e)??e}var we=[{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"}],St=new Map(we.map(({legacyId:e,model:t,effort:n})=>[e,n===void 0?{model:t}:{model:t,effort:n}]));function ke(e){if(!e)return {};let t=St.get(e);return t?{...t}:{model:e}}function oe(e,t){return e==="antigravity"||e==="cli/antigravity"?ke(t):t===void 0?{}:{model:Se(t)}}var ve=30,be=80;Object.keys(kt.special_tokens);var vt=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()),bt=z$1.object({include:z$1.array(z$1.string()).optional()}).optional(),Dt=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:vt.optional(),skills:bt}).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 Ut=z$1.number().finite().int().min(ve).max(be),Nt=z$1.object({inputBudgetPercent:Ut.optional()}).catchall(z$1.unknown()),Lt=z$1.object({continuity:Nt.optional()}).catchall(z$1.unknown()),Bt=z$1.object({bin_resolution:z$1.enum(["global_first","local_first"]).optional(),dreaming:Lt.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(Dt).optional(),hooks:z$1.array(z$1.unknown()).optional(),settings:Bt.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 P=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function jt(e){if(!e||typeof e!="string"||!e.trim())throw new P("YAML content must be a non-empty string");let t;try{t=load(e);}catch(o){throw new P(`YAML parse error: ${o.message}`,o)}let n=Ft(t),r=De.safeParse(n);if(!r.success)throw new P(`Config validation error: ${r.error.message}`);return r.data}function Ft(e){if(!e||typeof e!="object")return {agents:[]};let t=e;if(t.agents&&typeof t.agents=="object"&&!Array.isArray(t.agents)){let n=t.agents,r=Object.entries(n).map(([o,i])=>({id:o,...i&&typeof i=="object"?i:{}}));return {...t,agents:r}}return t.agents?t:{...t,agents:[]}}var Gt={auto:"default"};function zt(e){return Gt[e]??e}var Vt="crewx:fs:",ie=class{prefix;store;constructor(t){this.prefix=t?.prefix??Vt,this.store=t?.storage??new Map;}async readFile(t){let n=this.toKey(t),r=this.store.get(n);if(r===void 0)throw new Error(`BrowserFsAdapter: file not found: ${t}`);return r}async exists(t){return this.store.has(this.toKey(t))}resolvePath(...t){let n=t.map(a=>a.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),r=n.split("/"),o=[];for(let a of r)a==="."||a===""||(a===".."?o.pop():o.push(a));let i=o.join("/");return n.startsWith("/")?`/${i}`:i}isAbsolute(t){return t.startsWith("/")}setItem(t,n){this.store.set(this.toKey(t),n);}removeItem(t){this.store.delete(this.toKey(t));}keys(){return Array.from(this.store.keys()).filter(t=>t.startsWith(this.prefix)).map(t=>t.slice(this.prefix.length))}async readdir(t){let n=t.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(t){return `${this.prefix}${t.replace(/\\/g,"/")}`}};var se=["codex","claude","grok","opencode","antigravity","copilot"];function Wt(e){let t=e.indexOf("/");return t===-1?e:e.slice(t+1)}function ae(e){let t=Wt(e),n=se.indexOf(t);return n===-1?se.length:n}function qt(e,t){return ae(e)-ae(t)}var $t=new Set(["claude","copilot","codex","grok","opencode"]);function Xt(e){if(!e)return "";if(e.startsWith("acp/")){let t=e.slice(4);if($t.has(t))return `cli/${t}`}return e}function B(e){return {mode:e.mode,effort:e.effort}}function Kt(e){let t=re.providers[e];if(!t)return;let n=e.startsWith("cli/")?e.slice(4):e,r=L[n]?.models.find(a=>a.recommended===true&&a.tier==="balanced")?.id??t.model,o={query:B(t.query),execute:B(t.execute)},i={query:B(t.query),execute:B(t.execute)};return {planner:{model:t.model,...o},worker:{model:r,...i}}}var Ne=["urgent","high","medium","low"],Le=["investigating","in-progress","in-review","on-hold","done"],w="custom:";var Yt=new Set(Ne),Qt=new Set(Le),Zt={urgent:"U \uAE34\uAE09 Urgent",high:"P0 \uAE09\uD568 High",medium:"P1 \uC911\uC694 Medium",low:"P2 \uBCF4\uD1B5 Low"},pe={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 Ue(e,t){return !t||t.includes(e)?t??e:`${e} ${t}`}function de(e){return typeof e=="string"&&Yt.has(e)}function ce(e){if(typeof e!="string")return false;if(Qt.has(e))return true;if(e.startsWith("c_"))return e.length>2;if(!e.startsWith(w))return false;let t=e.slice(w.length);return t.length>=1&&t.length<=20}function Be(e){if(e.startsWith(w))return e.slice(w.length)}function le(e){if(!e)return null;try{let t=JSON.parse(e);return !t||typeof t!="object"||Array.isArray(t)?null:t}catch{return null}}function Jt(e){let t=le(e);return !!t&&Object.prototype.hasOwnProperty.call(t,"threadTitle")}function He(e){let t=le(e);if(!t)return {};let n=t.threadTitle;if(!n||typeof n!="object"||Array.isArray(n))return {};let r=n,o={};return de(r.priority)&&(o.priority=r.priority),ce(r.state)&&(o.state=r.state),o}function en(e,t){let n=le(e)??{},r={...He(e)};return t.priority===null?delete r.priority:t.priority!==void 0&&(r.priority=t.priority),t.state===null?delete r.state:t.state!==void 0&&(r.state=t.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 tn(e,t=new Map){let n=[];return e.priority&&n.push(Ue(Zt[e.priority],t.get(e.priority))),e.state&&(e.state.startsWith(w)?n.push(Be(e.state)??""):pe[e.state]?n.push(Ue(pe[e.state],t.get(e.state))):t.has(e.state)?n.push(e.state,t.get(e.state)??""):e.state.startsWith("c_")?n.push(e.state):n.push(pe[e.state]??"")),n.filter(Boolean).join(" ")}function je(e,t){if(!e||e.trim().length===0)return;let n=new Set,r=false,o=false;for(let i of e.split(",")){let a=i.trim();if(a){if(a==="none"){r=true,o=true;continue}t(a)&&(n.add(a),o=true);}}if(o)return {values:n,includeNone:r}}function nn(e){return je(e,de)}function rn(e){return je(e,ce)}function on(e,t){return t?e?t.values.has(e):t.includeNone:true}var sn=["crewx_app_terminal_connect","crewx_app_html_viewer_open"];var ue=["text/plain","application/json"];var an=["__proto__","prototype","constructor","proof","token","secret","password","cookie","authorization","private_key","private-key","stack","exception","plugin_text","url","uri","endpoint","path","filename","filepath","cwd","shell","directory","dir","folder"];new Set(an);var Fe=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/;var pn=/^uic_[A-Za-z0-9_-]+$/,dn=/^[0-9a-f]{64}$/,h="MCP App content declarations are invalid";function v(e){return typeof e=="string"&&ue.includes(e)}function H(e){return typeof e=="string"&&e.length<=128&&pn.test(e)}function cn(e,t){try{let n=t,r=k(n,"actions");if(!ze(r))throw new Error(h);let o=[];for(let a of Object.keys(r)){let s=k(r,a);if(s===null||typeof s!="object"||Array.isArray(s))throw new Error(h);let d=Object.getOwnPropertyDescriptor(s,"content");if(d===void 0)continue;if(!Object.hasOwn(d,"value"))throw new Error(h);let l=un(d.value);o.push({actionId:a,...l});}if(o.length===0)return;o.sort((a,s)=>a.actionId<s.actionId?-1:a.actionId>s.actionId?1:0);let i={schemaVersion:1,instanceId:e,definition:{id:k(n,"id"),version:k(n,"version"),hash:k(n,"hash")},actions:o};if(!ge(i))throw new Error(h);for(let a of o)a.in!==void 0&&Object.freeze(a.in),a.out!==void 0&&Object.freeze(a.out),Object.freeze(a);return Object.freeze(o),Object.freeze(i.definition),Object.freeze(i)}catch{throw new Error(h)}}function ge(e){try{if(!j(e,["schemaVersion","instanceId","definition","actions"]))return !1;let t=e;if(t.schemaVersion!==1||!H(t.instanceId)||!mn(t.definition))return !1;let n=t.actions;if(!En(n)||n.length===0)return !1;let r;for(let o=0;o<n.length;o+=1){let i=n[o];if(!yn(i)||r!==void 0&&!(r<i.actionId))return !1;r=i.actionId;}return !0}catch{return false}}function ln(e,t,n){return ge(e)?e.instanceId===t&&e.definition.id===n.id&&e.definition.version===n.version&&e.definition.hash===n.hash:false}function un(e){if(!b(e,["in","out"]))throw new Error(h);let t=e,n=Object.hasOwn(t,"in"),r=Object.hasOwn(t,"out");if(!n&&!r)throw new Error(h);return {...n?{in:gn(t.in)}:{},...r?{out:fn(t.out)}:{}}}function gn(e){if(!b(e,["mediaType","required"],["mediaType"]))throw new Error(h);let t=e,n=t.mediaType,r=Object.hasOwn(t,"required")?t.required:false;if(!v(n)||typeof r!="boolean")throw new Error(h);return {mediaType:n,required:r}}function fn(e){if(!b(e,["mediaType","range"],["mediaType"]))throw new Error(h);let t=e,n=t.mediaType,r=Object.hasOwn(t,"range")?t.range:false;if(!v(n)||typeof r!="boolean")throw new Error(h);return {mediaType:n,range:r}}function mn(e){if(!j(e,["id","version","hash"]))return false;let t=e;return Ge(t.id)&&Tn(t.version)&&typeof t.hash=="string"&&dn.test(t.hash)}function yn(e){if(!b(e,["actionId","in","out"],["actionId"]))return false;let t=e,n=t.actionId,r=Object.hasOwn(t,"in"),o=Object.hasOwn(t,"out");return !(typeof n!="string"||!Ge(n)||!r&&!o||r&&!An(t.in)||o&&!hn(t.out))}function An(e){if(!j(e,["mediaType","required"]))return false;let t=e;return v(t.mediaType)&&typeof t.required=="boolean"}function hn(e){if(!j(e,["mediaType","range"]))return false;let t=e;return v(t.mediaType)&&typeof t.range=="boolean"}function Ge(e){return typeof e=="string"&&Fe.test(e)}function Tn(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function En(e){if(!Array.isArray(e))return false;let t=Reflect.ownKeys(e);if(t.length!==e.length+1||t[e.length]!=="length")return false;for(let n=0;n<e.length;n+=1){if(t[n]!==String(n))return false;let r=Object.getOwnPropertyDescriptor(e,String(n));if(r===void 0||!Object.hasOwn(r,"value"))return false}return true}function j(e,t){return b(e,t,t)}function b(e,t,n=[]){if(!ze(e))return false;let r=Reflect.ownKeys(e);if(r.length>t.length||r.length<n.length)return false;for(let o of r){if(typeof o!="string"||!t.includes(o))return false;let i=Object.getOwnPropertyDescriptor(e,o);if(i===void 0||!Object.hasOwn(i,"value"))return false}return n.every(o=>Object.hasOwn(e,o))}function ze(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function k(e,t){if(e===null||typeof e!="object")return;let n=Object.getOwnPropertyDescriptor(e,t);return n!==void 0&&Object.hasOwn(n,"value")?n.value:void 0}var Ve=[5,15,30,60],fe=Object.freeze({min:15e3,max:6e5,default:3e5}),_n=1;var In="exit 78",We=["standby","disabled","draining","degraded"],xn=["cron","cron_manual","app_enable"],Cn=/^[A-Z][A-Z0-9_]{0,63}$/u;function Pn(e){return typeof e=="string"&&Cn.test(e)}function On(e){return Ve.includes(e)}function Mn(e){return Number.isSafeInteger(e)&&e>=fe.min&&e<=fe.max}function Rn(e){return We.includes(e)}var Sn="crewx/openApp",ye=1,wn="ui/crewx-open-app",kn="ui/crewx-open-app-status",$e=32768,Xe=8,Ae=["opened","completed","pending"],he=["UI_APP_OPEN_INVALID","UI_APP_OPEN_UNAVAILABLE","UI_APP_OPEN_GESTURE_REQUIRED","UI_APP_OPEN_STALE","UI_APP_OPEN_BUSY","UI_APP_OPEN_REJECTED","UI_APP_OPEN_FAILED","UI_APP_OPEN_REQUEST_ID_CONFLICT"],Te=["RECEIPT_FAILED","RECEIPT_REJECTED","RECEIPT_CONFLICTED","RECEIPT_EXPIRED","LEDGER_MISSING","LEDGER_EXPIRED"],G=class extends Error{constructor(n,r){super(n);this.errorCode=n;this.causeCode=r;}errorCode;causeCode;name="CrewxOpenAppError"},vn=/^[A-Za-z0-9-]{8,64}$/,bn=/^[A-Za-z0-9_-]{1,128}$/,z=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Dn=new TextEncoder,qe=/\p{Surrogate}/u,Un=new Set(["__proto__","constructor","prototype"]);function u(){throw new G("UI_APP_OPEN_INVALID")}function D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function W(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function _(e,t,n=[]){W(e)||u();let r=new Set([...t,...n]);for(let o of Object.keys(e))r.has(o)||u();for(let o of t)D(e,o)||u();return e}function V(e,t){return (typeof e!="string"||!t.test(e))&&u(),e}function q(e){return (typeof e!="string"||!vn.test(e))&&u(),e}function M(e){(typeof e!="string"||!bn.test(e))&&u();let t=e.indexOf("_");return (t<0||t===e.length-1)&&u(),q(e.slice(0,t)),e}function Ke(e){return M(e).slice(0,e.indexOf("_"))}function Ye(e){return H(e)||u(),e}function O(e,t){let n=t.find(r=>r===e);return n===void 0&&u(),n}function me(e,t){if(e===null)return "null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Number.isFinite(e)||u(),JSON.stringify(e);if(typeof e=="string")return qe.test(e)&&u(),JSON.stringify(e);if(t>Xe&&u(),Array.isArray(e)){let o=[];for(let i=0;i<e.length;i+=1)D(e,String(i))||u(),o.push(me(e[i],t+1));return `[${o.join(",")}]`}W(e)||u();let n=e;return `{${Object.keys(n).sort().map(o=>((Un.has(o)||qe.test(o))&&u(),`${JSON.stringify(o)}:${me(n[o],t+1)}`)).join(",")}}`}function Nn(e){let t=_(e,["requestId","appId"],["action"]),n=M(t.requestId),r=V(t.appId,z);if(!D(t,"action"))return {requestId:n,appId:r};let o=_(t.action,["actionId","input"]),i=o.input;return W(i)||u(),{requestId:n,appId:r,action:{actionId:V(o.actionId,z),input:i}}}function Qe(e){return {version:ye,sessionId:q(e)}}function Ln(e){let t=_(e,["version","sessionId"]);return t.version!==ye&&u(),Qe(q(t.sessionId))}function Bn(e,t){return typeof t!="string"&&u(),M(`${q(e)}_${t}`)}function Ze(e){let t=me(Nn(e),1);return Dn.encode(t).byteLength>$e&&u(),t}function Hn(e){return JSON.parse(Ze(e))}function jn(e){let t=_(e,["requestId"]);return {requestId:M(t.requestId)}}function Je(e){return {status:O(e.status,Ae),appId:V(e.appId,z),instanceId:Ye(e.instanceId),requestId:M(e.requestId)}}function et(e,t){let n=O(e,he);return t===void 0?{isError:true,_meta:{errorCode:n}}:{isError:true,_meta:{errorCode:n,causeCode:O(t,Te)}}}function Fn(e){if(W(e)||u(),D(e,"isError")){let n=_(e,["isError","_meta"]);n.isError!==true&&u();let r=_(n._meta,["errorCode"],["causeCode"]);return et(O(r.errorCode,he),D(r,"causeCode")?O(r.causeCode,Te):void 0)}let t=_(e,["status","appId","instanceId","requestId"]);return Je({status:O(t.status,Ae),appId:V(t.appId,z),instanceId:Ye(t.instanceId),requestId:M(t.requestId)})}function F(e,t){return {state:"failed",errorCode:e,causeCode:t}}function Gn(e){if(e.kind==="pending"||e.status==="requested")return {state:"pending"};if(e.outcome==="succeeded")return {state:"completed"};switch(e.outcome){case "rejected":return F("UI_APP_OPEN_REJECTED","RECEIPT_REJECTED");case "conflicted":return F("UI_APP_OPEN_STALE","RECEIPT_CONFLICTED");case "expired":return F("UI_APP_OPEN_STALE","RECEIPT_EXPIRED");default:return F("UI_APP_OPEN_FAILED","RECEIPT_FAILED")}}function Ee(e,t){return e.workspaceId===t.workspaceId&&e.threadId===t.threadId&&e.instanceId===t.instanceId&&e.definition.id===t.definition.id&&e.definition.version===t.definition.version&&e.definition.hash===t.definition.hash&&e.entryHash===t.entryHash}function zn(e){if(Ke(e.requestId)!==e.activeSessionId)return "stale";let{lookup:t}=e;return t.kind==="absent"?t.capacity==="full"?"busy":"new":Ee(t.record.source,e.source)&&t.record.payloadDigest===e.payloadDigest?"known":"conflict"}function Vn(e){return Ke(e.requestId)!==e.activeSessionId||e.lookup.kind!=="present"?"stale":Ee(e.lookup.record.source,e.source)?"known":"stale"}export{we as ANTIGRAVITY_MODEL_COMPATIBILITY,In as APP_SCHEDULE_INERT_COMMAND,Ve as APP_SCHEDULE_INTERVALS_MINUTES,_n as APP_SCHEDULE_MAX_PER_APP,We as APP_SCHEDULE_PERIODIC_REASONS,fe as APP_SCHEDULE_TIMEOUT_MS,Le as BUILTIN_THREAD_STATES,ie as BrowserFsAdapter,Re as CLAUDE_MODEL_COMPATIBILITY_PAIRS,Ot as CLAUDE_OPUS_4_8_BASE_MODEL_ID,Mt as CLAUDE_OPUS_4_8_LEGACY_MODEL_ID,Sn as CREWX_OPEN_APP_CAPABILITY,ye as CREWX_OPEN_APP_CAPABILITY_VERSION,Xe as CREWX_OPEN_APP_MAX_JSON_DEPTH,$e as CREWX_OPEN_APP_MAX_PARAMS_BYTES,wn as CREWX_OPEN_APP_METHOD,kn as CREWX_OPEN_APP_STATUS_METHOD,Ae as CREWX_OPEN_APP_SUCCESS_STATUSES,P as ConfigLoadError,Q as Crewx,G as CrewxOpenAppError,It as EFFORT_LEVELS,sn as MCP_APP_HOST_TOOL_ALLOWLIST,xt as PROVIDER_ARGV_EFFORTS,se as PROVIDER_ORDER,m as ProviderError,xn as SCHEDULE_TRIGGERS,Ne as THREAD_PRIORITIES,Te as UI_APP_OPEN_CAUSE_CODES,he as UI_APP_OPEN_ERROR_CODES,ue as UI_CONTENT_MEDIA_TYPES,cn as buildMcpAppContentActions,Ze as canonicalCrewxOpenAppPayload,ut as classifyTaskError,qt as compareProviders,ln as contentActionsMatch,Qe as createCrewxOpenAppCapabilityDeclaration,et as createCrewxOpenAppErrorResult,Bn as createCrewxOpenAppRequestId,Je as createCrewxOpenAppSuccessResult,U as createProvider,Be as customStateLabel,zn as decideCrewxOpenAppOpen,Vn as decideCrewxOpenAppStatus,Kt as getDefaultAgentProfile,Jt as hasThreadTitleKey,Pn as isAppScheduleCode,On as isAppScheduleIntervalMinutes,Rn as isAppSchedulePeriodicReason,Mn as isAppScheduleTimeoutMs,ge as isMcpAppContentActions,Ee as isSameCrewxOpenAppSourceBinding,de as isThreadPriority,ce as isThreadState,v as isUiContentMediaType,H as isValidUiAppInstanceId,on as matchesThreadTitleFilter,en as mergeThreadTitleMeta,zt as normalizeClaudeMode,Xt as normalizeProviderId,Ln as parseCrewxOpenAppCapabilityDeclaration,Hn as parseCrewxOpenAppRequest,Fn as parseCrewxOpenAppResult,jn as parseCrewxOpenAppStatusRequest,nn as parseThreadPriorityFilter,rn as parseThreadStateFilter,jt as parseYamlContent,ae as providerRank,He as readThreadTitleMeta,Z as redactTechnicalMessage,Y as registerProviderFactory,ke as resolveAntigravityModel,Se as resolveCatalogModelId,Gn as resolveCrewxOpenAppActionOutcome,oe as resolveProviderCatalogModel,tn as threadTitleSearchHaystack};
package/dist/index.d.ts CHANGED
@@ -1,57 +1,142 @@
1
- export { Crewx } from './facade/Crewx';
1
+ export { Crewx, loadAgentSkills } from './facade/Crewx';
2
2
  export type { ToolDefinition } from './facade/Crewx';
3
+ export { resolveTaskTicketEnv } from './facade/task-ticket.js';
4
+ export type { TaskTicketGrant, TaskTicketIssuer, TaskTicketRequest } from './facade/task-ticket.js';
5
+ export { getVerifiedProductAppBundleExecutable } from './mcp-app/bundle-provenance.js';
6
+ export { isVerifiedProductAppBundleProvenance } from './mcp-app/bundle-provenance.js';
7
+ export { projectAppManifestFiles, projectAppManifestReason } from './mcp-app/diagnostic-reason.js';
8
+ export { discover as discoverSkills, findEntrypoint, resolve as resolveSkill, } from './skills/index.js';
9
+ export type { SkillDefinition, SkillFrontmatter, SkillFrontmatterReadResult } from './skills/index.js';
10
+ export type { ActionReceipt, ActionReceiptResultSummary, ActionExecutionReceipt, ActionReceiptOutcome, CreateUiInstanceInput, JsonObject, JsonPrimitive, JsonValue, UiActionHandlerContext, UiActionHandlerRegistration, UiActionHandlerResult, UiActionEnvelope, UiActionConfirmation, UiActor, UiDefinition, UiDefinitionAction, UiDefinitionDisplayMode, UiDefinitionInput, UiDefinitionLegacyMetadata, UiDefinitionLegacyTool, UiDefinitionLegacyReadTool, UiDefinitionLegacyToolVisibility, UiDefinitionRef, UiDefinitionUsage, UiProjectionPolicy, UiExecutionContext, UiAuthenticatedActor, UiTaskActorSnapshot, UiAuthenticatedExecutionContext, UiApprovalRequestContext, UiApprovalDecisionProvenance, UiApprovalPendingReceipt, UiApprovalRequestReceiptResult, UiAuthenticatedGrantPolicy, UiServerRuntimeFacade, UiServerRuntimeOptions, UiAgentContextProjection, UiExternalActionHandlerRegistration, UiAgentOpenReason, UiAgentOpenRequest, UiInstance, UiInstanceStatus, UiLocalGrantPolicy, UiRuntimeFacade, UiRuntimeOptions, UiStateActionHandlerRegistration, UiSkillBackendEnvironmentKey, } from './ui-instance/types.js';
11
+ export { isUiAuthenticatedActor } from './ui-instance/types.js';
12
+ export type { UiRuntimeStoreOptions } from './ui-instance/runtime.js';
13
+ export { UI_ACTION_INPUT_MAX_BYTES } from './ui-instance/runtime.js';
14
+ export { UiInstanceStore, WORKSPACE_REPIN_ENV, isWorkspaceRepinEnabled, openUiInstanceReadStore, UiRuntimeError, hashUiDefinition, hasUiDefinitionLineageBreak, projectSafeJsonObject, redactJsonPaths, selectUiDefinitionLineageEntry, UiDefinitionLineageError, uiDefinitionStaticCompatibilityViolations, validateUiDefinitionLineage, createUiServerRuntime, resolveUiEffectiveCapabilities, } from './ui-instance/index.js';
15
+ export type { UiAuditSnapshotInput, UiDefinitionLineageEntry, UiDefinitionLineageFailureCode, ValidatedUiDefinitionLineage, UiInstanceReadStore, UiInstanceRepinInput, UiInstanceRepinLedgerEntry, UiInstanceRepinResult, UiInstanceRepinWorkspaceGenerationInput, UiInstanceRepinWorkspaceInput, ReservationInput, } from './ui-instance/index.js';
16
+ export type { UiRuntimeErrorCode } from './ui-instance/index.js';
17
+ export { findProjectionViolations } from './ui-instance/json.js';
18
+ export type { FindProjectionViolationsOptions, ProjectionRule, ProjectionViolation, } from './ui-instance/json.js';
19
+ export { MAX_HTML_LENGTH, MCP_APP_HOST_TOOL_ALLOWLIST, MCP_CORE_TOOL_NAMES, MCP_APP_LOCAL_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_MIME_TYPE, MCP_APP_RESOURCE_URI_PREFIX, McpAppContractError, resolveAgentAccess, listMcpAppAgentActions, MCP_APP_CARD_HANDLERS, isMcpAppCardHandler, isMcpAppCardAction, MCP_APP_PROJECTION_MAX_BYTES, MCP_APP_MODEL_CONTEXT_MAX_ARRAY_LENGTH, MCP_APP_MODEL_CONTEXT_MAX_BYTES, MCP_APP_MODEL_CONTEXT_MAX_DEPTH, MCP_APP_MODEL_CONTEXT_MAX_STRING_LENGTH, buildMcpAppStateDescriptor, buildMcpAppStateProjections, projectMcpAppSummaryState, attachAvailableApps, buildMcpAppsContext, createBuiltinMcpAppRegistry, buildMcpAppLocalRegistration, buildMcpAppBundleRegistrationInput, buildMcpAppBundleAgentActionDescriptors, planProductBundleLegacyToolNames, productAppBundleReservations, createMcpAppLocalRegistration, registerLocalMcpApp, createMcpAppWorkspaceRegistry, createWorkspaceAppRegistry, createWorkspaceMcpAppRegistry, buildInstalledAppRef, createMcpAppRegistry, createMcpAppToolResult, makeUiUri, resolveMcpAppFixedResultCall, INSTALLED_APP_ENTRY, InstalledAppRefError, registerMcpApp, requireMcpAppResource, resolveLocalMcpAppResource, resolveMcpAppResource, serializeMcpAppStateJson, serializeMcpAppStateXml, sanitizeMcpAppModelContext, serializeMcpAppModelContextXml, toMcpAppToolRegistration, validateInstalledAppRef, AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, deriveWorkspaceAppToolName, deriveWorkspaceAppToolNames, createWorkspaceAppScanCache, discoverWorkspaceAppCandidates, discoverWorkspaceApps, loadProductAppBundleAssets, createWorkspaceAppCatalog, discoverWorkspaceAppCatalog, hashAppDefinition, hashCrewxAppDefinition, listWorkspaceApps, buildWorkspaceAppSnapshot, discoverWorkspaceAppSnapshot, reconfirmWorkspaceAppSnapshot, LOCAL_APP_TOOL_PREFIX, MCP_APP_WORKSPACE_TOOL_PREFIX, scanWorkspaceApps, WORKSPACE_APP_TOOL_PREFIX, SKILL_BACKEND_DEFAULT_TIMEOUT_MS, SKILL_BACKEND_INHERITED_ENV_ALLOWLIST, SKILL_BACKEND_MAX_INPUT_BYTES, SKILL_BACKEND_MAX_OUTPUT_BYTES, SKILL_BACKEND_CONTENT_SCHEMA_VERSION, SKILL_BACKEND_SCHEMA_VERSION, buildSkillBackendHandler, buildSkillBackendChildEnvironment, buildVerifiedBundleSkillBackendHandler, buildMcpAppContentActions, contentActionsMatch, UI_CONTENT_ERROR_CODES, UI_CONTENT_MAX_BYTES, UI_CONTENT_MAX_LINES, UI_CONTENT_MAX_MEMORY_BYTES, UI_CONTENT_MEDIA_TYPES, UI_CONTENT_OUTPUT_TTL_MS, UI_CONTENT_TICKET_TTL_MS, UiContentChannelError, contentBindingMatches, countContentLines, decodeContentUtf8, isUiContentDeclaration, isUiContentMediaType, isMcpAppContentActions, isUiContentRangeRequest, isValidUiAppInstanceId, isValidUiThreadIdentity, sha256Content, validateContentBytes, validateContentFrame, externalResourceCheckItems, appIconCheckItems, readWorkspaceAppIconFile, inspectSkillBackendOutput, scanExternalResources, } from './mcp-app/index.js';
20
+ export type { WorkspaceAppIconBytes, AppDevCheckItem, ExternalResourceFinding, ExternalResourceKind, InspectSkillBackendOutputOptions, ScanExternalResourcesOptions, AppDiscoveryBytes, AppDiscoveryDiagnostic, AppDiscoveryDirectoryEntry, AppDiscoveryDirectoryEntryKind, AppDiscoveryDirectoryListing, AppDiscoveryFileSystem, AppDiscoveryFileFingerprint, AppDiscoveryFsErrorCode, AppDiscoveryMaybePromise, AppDiscoveryRootIdentity, AppDiscoveryOptions, McpAppDiscoveryDiagnostic, WorkspaceAppBuiltinCatalog, WorkspaceAppCandidate, WorkspaceAppDiscoveryIncompleteReason, WorkspaceAppDiscoveryOptions, WorkspaceAppDiscoveryResult, WorkspaceAppDiscoverySource, WorkspaceAppDiagnostic, WorkspaceAppDiagnosticCode, WorkspaceAppResourceSnapshot, WorkspaceAppScanCache, WorkspaceAppReservedCatalog, WorkspaceAppSource, WorkspaceAppToolNames, ProductAppBundleDefinitionIdentity, ProductAppBundleFileHash, ProductAppBundleIndex, ProductAppBundleInput, ProductAppBundlePackageIndex, ProductAppBundleReservations, ProductAppBundleProvenance, ProductAppBundleSnapshotMetadata, ProductAppBundleAsset, ProductAppBundleAssetCatalog, ProductAppBundleAssetLoadOptions, WorkspaceAppAsset, WorkspaceAppAssetCatalog, WorkspaceAppAssetDescriptorV1, WorkspaceAppAssetLocator, 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, McpAppLayoutSnapshot, McpAppPromptResult, McpAppPromptStatus, McpAppWindowState, McpAppStateView, McpAppsContext, McpAppsContextOptions, McpAppModelContext, McpAppModelContextInput, McpAppHostToolInput, McpAppHostToolName, McpCoreToolName, McpAppReadToolInput, McpAppSingleActionToolInput, McpAppToolCommonInput, McpAppToolDescriptor, McpAppFixedResult, McpAppFixedResultCall, McpAppFixedResultInvalidParams, McpAppFixedResultResolution, McpAppFixedResultUnavailable, McpAppToolInput, McpAppToolMetadata, McpAppToolRegistration, McpAppToolResult, McpAppToolVisibility, McpAppInstanceResourceBinding, McpAppMcpResourceBinding, McpAppResourceBinding, McpAppLocalResource, McpAppLocalRegistrationInput, McpAppLocalReadToolDescriptor, McpAppLocalActionToolDescriptor, McpAppLocalSingleActionToolDescriptor, McpAppLocalHostToolDescriptor, McpAppLocalToolDiagnostic, McpAppAgentAccess, McpAppAgentAccessAction, McpAppVerifiedBundleAccessContext, McpAppCardHandler, McpAppLocalToolDescriptor, McpAppLocalRegistration, McpAppBuiltinRegistration, McpAppResolvedRegistration, McpAppLocalLauncher, McpAppBuiltinLauncher, McpAppLauncher, WorkspaceAppLauncher, WorkspaceAppResolvedRegistration, McpAppWorkspaceRegistry, WorkspaceAppRegistry, McpAppWorkspaceRegistryInput, WorkspaceAppSnapshot, WorkspaceAppSnapshotBuildOptions, WorkspaceAppSnapshotOptions, WorkspaceAppSnapshotReconfirmResult, WorkspaceAppSnapshotResource, WorkspaceAppSnapshotInitialState, WorkspaceAppInitialState, BuildInstalledAppRefInput, InstalledAppPackageFile, InstalledAppRef, InstalledAppRefErrorCode, SkillBackendExecutionPort, SkillBackendExecutionRequest, SkillBackendExecutionResponse, SkillBackendHandlerBuildInput, SkillBackendInfrastructureErrorCode, SkillBackendPayload, SkillBackendChildEnvironment, VerifiedBundleSkillBackendBuildInput, VerifiedBundleSkillRunnerPort, VerifiedBundleSkillSpawnRequest, McpAppRegistryOptions, McpAppBundleHostToolTemplate, McpAppBundleAgentActionDescriptor, SkillBackendPayloadV1, SkillBackendPayloadV2, SkillBackendContentInputHeader, SkillBackendContentOutputHeader, ContentFrame, McpAppContentActionDeclaration, McpAppContentActions, UiActionContentDeclaration, UiContentBinding, UiContentChannelPort, UiContentErrorCode, UiContentInputDeclaration, UiContentInputTicket, UiContentMediaType, UiContentOutputDeclaration, UiContentRange, UiContentRangeRequest, ValidateContentFrameOptions, } from './mcp-app/index.js';
21
+ export { APP_MANIFEST_FILE, APP_MANIFEST_FILES, APP_TOOLS_FILE, APP_MANIFEST_PASSTHROUGH_KEYS, APP_MANIFEST_REQUIRED_KEYS, CREWX_META_NAMESPACE, CREWX_META_OPTIONAL_KEYS, CREWX_META_REQUIRED_KEYS, LEGACY_APP_MANIFEST_FILE, MCPB_MANIFEST_KEYS, MCPB_MANIFEST_VERSION, appManifestDefinitionHash, canonicalManifestJson, isAppSemver, manifestHash, normalizeManifest, resolveAppManifest, UiPluginValidationError, validateInitialState, validateManifest, validatePayload, } from './ui-plugin/index.js';
22
+ export type { AppManifestFailure, AppManifestFileBytes, AppManifestFileName, AppManifestFileResult, AppManifestIdentity, AppManifestOptions, AppManifestReason, AppManifestRejection, AppManifestRejectionCode, AppManifestResult, AppManifestSource, AppToolsFileName, } from './ui-plugin/index.js';
23
+ export { APP_ICON_MAX_BYTES, classifyAppIconDeclaration, inspectAppIconBytes, resolveAppIcon, } from './ui-plugin/index.js';
24
+ export type { AppIconContentType, AppIconDiagnostic, AppIconFile, AppIconReason, } from './ui-plugin/index.js';
25
+ export { APP_TOOLS_SCHEMA_VERSION, APP_TOOL_ENTRY } from './app/tool-mode.js';
26
+ export { APP_SCHEDULE_INERT_COMMAND, APP_SCHEDULE_INTERVALS_MINUTES, APP_SCHEDULE_MAX_PER_APP, APP_SCHEDULE_PERIODIC_REASONS, APP_SCHEDULE_TIMEOUT_MS, SCHEDULE_TRIGGERS, isAppSchedulePeriodicReason, isAppScheduleCode, isAppScheduleIntervalMinutes, isAppScheduleTimeoutMs, } from './app/schedule-contract.js';
27
+ export type { AppScheduleDirective, AppScheduleIntervalMinutes, AppSchedulePeriodic, AppSchedulePeriodicReason, AppScheduleRunVerdict, AppScheduleSnapshot, AppScheduleStatus, ScheduleTrigger, ToolScheduleDeclaration, } from './app/schedule-contract.js';
28
+ export { appScheduleCommandLabel, cronExpressionForInterval, decideScheduleDirective, planScheduledFire, resolveDeclaredSchedule, scheduleTemplateFor, toScheduledRunVerdict, toScheduleSnapshot, } from './mcp-app/index.js';
29
+ export type { AppScheduleAvailability, AppScheduleBinding, AppScheduleOwner, AppScheduleOwnerSource, AppScheduleRowView, AppScheduleTemplate, AppScheduledRunPayload, AppScheduledRunPlan, ResolvedAppSchedule, ScheduleLifecycleEntry, ScheduleLifecyclePlan, ScheduledAppLaunchRequest, } from './mcp-app/index.js';
30
+ export { normalizeUiPluginCsp, policyHash } from './ui-plugin/csp.js';
31
+ export type { NormalizedUiPluginCsp, UiPluginCspInput, UiPluginCspNormalizeOptions, UiPluginCspNormalizationErrorCode, UiPluginPolicyHashInput, UiPluginPolicyRuntime, } from './ui-plugin/csp.js';
32
+ 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';
33
+ export type { UiPluginActivation, UiPluginCardShellNode, UiPluginFieldSchema, UiPluginHeadingNode, UiPluginLabeledTextNode, UiPluginLayoutNode, UiPluginLayout, UiPluginManifest, UiPluginAction, UiPluginBackend, UiPluginCoreBackend, UiPluginInputSchema, UiPluginJsonSchema, UiPluginJsonSchemaType, UiPluginManifestMode, UiPluginManifestV1, UiPluginManifestV2, UiPluginCspRequest, UiPluginRuntimeRequest, 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';
34
+ export { DEFAULT_PUBLISH_MAX_BYTES, DEFAULT_PUBLISH_MAX_FILES, packApp, packPublish, packTemplate, planPublish, PublishError, uploadToMarketplace, } from './publish/index.js';
35
+ export type { BuildAppManifestOptions, BuildManifestOptions, CreateArchiveOptions, ExcludedEntry, ManifestFile, PublishAppManifest, PublishErrorCode, PublishManifest, PublishOptions, PublishPlan, PublishTemplateManifest, PublishUploadOptions, PublishUploadResult, ScanResult, SecretFinding, } from './publish/index.js';
3
36
  export { CrewxPlugin } from './plugin';
4
37
  export { TypedEventEmitter } from './events/TypedEventEmitter';
5
- export type { CrewxEvents, CrewxEventName, CrewxEventPayload, BaseEvent, TaskStartEvent, TaskEndEvent, TaskOutputEvent, AdapterLifecycleEvent, AdapterMessageEvent, UnsubscribeFn, } from './events/types';
38
+ export type { CrewxEvents, CrewxEventName, CrewxEventPayload, BaseEvent, ActorKind, TaskStartEvent, TaskEndEvent, TaskOutputEvent, TaskProviderInputEvent, AdapterLifecycleEvent, AdapterMessageEvent, UnsubscribeFn, } from './events/types';
6
39
  export type { LayoutSpec, RenderAgentPromptOptions, SkillEntry } from './facade/Crewx';
7
40
  export { LayoutLoader } from './layout/loader';
8
41
  export { LayoutRenderer } from './layout/renderer';
9
42
  export type { RenderOptions } from './layout/renderer';
10
43
  export { PropsValidator } from './layout/props-validator';
11
- export type { LayoutDefinition, CustomLayoutDefinition, InlineLayoutSpec, LoaderOptions, RenderContext, PropSchema, ValidationResult, ValidationError, TemplateVars, RawLayoutYaml, } from './layout/types';
44
+ export type { LayoutDefinition, LayoutCapabilities, CustomLayoutDefinition, InlineLayoutSpec, LoaderOptions, RenderContext, PropSchema, ValidationResult, ValidationError, TemplateVars, RawLayoutYaml, } from './layout/types';
12
45
  export { LayoutLoadError, PropsValidationError } from './layout/types';
13
46
  export { TemplateEngine } from './template/engine';
14
47
  export type { ExecPolicy, TemplateContext, TemplateEngineOptions } from './template/types';
48
+ export { PROMPT_TAGS, LEGACY_PROMPT_TAGS } from './prompt/tag-names';
15
49
  export { DocumentLoader } from './template/loader/DocumentLoader';
16
50
  export type { IFsAdapter } from './platform/IFsAdapter';
17
51
  export { NodeFsAdapter, defaultFsAdapter } from './platform/NodeFsAdapter';
18
52
  export { BrowserFsAdapter } from './platform/BrowserFsAdapter';
19
53
  export { truncateHelper, lengthHelper, escapeHandlebarsHelper, formatFileSizeHelper, formatTimestampHelper, } from './template/helpers/p1p2';
20
54
  export { setAuditVerbose } from './template/helpers/exec';
21
- export type { AgentConfig, CrewxProjectConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, TraceContext, YamlHookEntry, GuideRule, } from './types';
22
- export { AgentSkillsSchema } from './types';
55
+ export type { AgentConfig, CrewxProjectConfig, CrewxOptions, QueryOptions, QueryResult, ExecuteOptions, ExecuteResult, ContextMode, CanResumeSessionReason, CanResumeSessionParams, CanResumeSessionResult, TraceContext, TaskActor, YamlHookEntry, GuideRule, WiBoardConfig, } from './types';
56
+ export { AgentSkillsSchema, WiBoardSchema } from './types';
23
57
  export { loadYamlFile, parseYamlContent, ConfigLoadError } from './config/loader';
58
+ 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';
59
+ export type { ResolvedWiBoard } from './config/wi-boards';
60
+ export { createWorkInstruction, createWorkInstructionBatch, WiCreateError, } from './wi/create';
61
+ export type { WiCreateInput, WiBatchCreateInput, WiBatchCreateResult, WiCreatedDetail, WiCreatedSummary, WiStatus as SdkWiStatus, } from './wi/create';
62
+ export { selectNextWi } from './wi/select';
63
+ export type { SelectNextWiResult, WiSummary as SelectableWiSummary, WiSelectableStatus, } from './wi/select';
64
+ export { createGlobalSettingsStore } from './config/global-settings';
65
+ export type { GlobalSettings, GlobalSettingsStore, DeepPartial, CreateGlobalSettingsStoreOptions } from './config/global-settings';
66
+ export { DEFAULT_LOCAL_SERVER_PROBE_TIMEOUT_MS, isAllowedLocalServerIp, parseLocalServerBaseUrl, probeLocalServer, buildLocalServerOpenCodeOverlay, LocalServerOpenCodeOverlayError, } from './local-server';
67
+ export type { LocalServerBaseUrlErrorCode, LocalServerBaseUrlFailure, LocalServerBaseUrlOptions, LocalServerBaseUrlResult, LocalServerBaseUrlSuccess, LocalServerHostClass, LocalServerDefinition, LocalServerFetch, LocalServerKind, LocalServerModel, LocalServerOpenCodeOverlay, LocalServerOpenCodeOverlayErrorCode, LocalServerProbeOptions, LocalServerProbeReason, LocalServerProbeResponse, LocalServerProbeResult, LocalServerSettings, } from './local-server';
24
68
  export { resolveOverdrive, parseOverdriveProfile, parseOverdriveSignal, } from './config/overdrive';
25
69
  export type { OverdriveProfile, OverdriveSignal, OverdriveSignalInput, OverdriveResolution, } from './config/overdrive';
70
+ export { migrateGrokLegacyMode } from './config/migrate-grok-mode';
71
+ export type { GrokSandbox, GrokNativeOptions } from './config/migrate-grok-mode';
72
+ export { canonicalizeAgentOptions, normalizeClaudeMode } from './config/canonicalize-agent-options';
73
+ export type { AgentOptionsLike, CanonicalizeAgentOptionsInput, CanonicalizeAgentOptionsResult, } from './config/canonicalize-agent-options';
74
+ export { ANTIGRAVITY_MODEL_COMPATIBILITY, CLAUDE_MODEL_COMPATIBILITY_PAIRS, CLAUDE_OPUS_4_8_BASE_MODEL_ID, CLAUDE_OPUS_4_8_LEGACY_MODEL_ID, resolveAntigravityModel, resolveCatalogModelId, resolveProviderCatalogModel, } from './config/model-compat';
75
+ export type { AntigravityResolvedModel } from './config/model-compat';
26
76
  export { initPricingRemote } from './config/pricing.remote';
77
+ export type { ModelApiPricing } from './config/pricing.types';
27
78
  export { initModelsRemote } from './config/models.remote';
28
79
  export { resolveAgent, AgentNotFoundError } from './agent/resolver';
29
80
  export { resolveAgentSkills } from './agent/resolve-skills';
30
81
  export { PROVIDER_ORDER, providerRank, compareProviders, normalizeProviderId } from './provider/order';
31
- export { getProviderModels, getClaudeModels, getCodexModels, getCopilotModels, getAntigravityModels, setModelsOverride, clearModelsOverride, mergeModels, type ModelCatalogEntry, } from './provider/models';
82
+ export { getProviderModels, getClaudeModels, getCodexModels, getCopilotModels, getAntigravityModels, setModelsOverride, clearModelsOverride, mergeModels, type ModelCatalogEntry, type ModelMergeEntry, type ModelTier, type ProviderOptionSpec, } from './provider/models';
83
+ export { getDefaultAgentProfile } from './config/default-agent-models.js';
84
+ export type { DefaultAgentProfile, DefaultAgentStage } from './config/default-agent-models.js';
85
+ export { isProviderAvailable } from './provider/provider-selection';
86
+ export type { ProviderAvailabilityDeps } from './provider/provider-selection';
87
+ export { EFFORT_LEVELS, PROVIDER_ARGV_EFFORTS } from './config/models.generated.js';
88
+ export type { EffortLevel, KnownEffortLevel } from './config/models.generated.js';
89
+ export { DEFAULT_INPUT_BUDGET_PERCENT, MIN_INPUT_BUDGET_PERCENT, MAX_INPUT_BUDGET_PERCENT, INPUT_BUDGET_TOKENIZER_ENCODING, FRESH_PROVIDER_INITIAL_INPUT_FRAMING, RESUME_PROVIDER_INITIAL_INPUT_FRAMING, normalizeInputBudgetProvider, resolveTokenizerMetadata, countTokens, createTokenCounter, resolveInputBudget, } from './context-budget';
90
+ export type { InputBudgetUnresolvedReason, TokenizerFallbackReason, ResolveInputBudgetOptions, TokenizerOptions, TokenizerMetadata, ResolvedInputBudget, UnresolvedInputBudget, ResolveInputBudgetResult, ContextBudgetPhase, ProviderInitialInputFraming, ContextBudgetManifest, TokenCountResult, TokenCounter, ContextBudgetLayoutCapability, ContextBudgetActivityDegradation, ContextBudgetAssemblyErrorCode, } from './context-budget';
91
+ export { ContextBudgetLayoutError, DEFAULT_HIGHLIGHT_BUDGET_PERCENT, DEFAULT_PROTECTED_TURN_COUNT, MAX_ACTIVE_HIGHLIGHT_CHARS, MAX_ACTIVE_HIGHLIGHTS, MAX_THREAD_STATE_VALUE_CHARS, MAX_THREAD_TITLE_CHARS, buildSemanticContinuityContext, buildThreadStateContext, getConversationMessageTaskId, groupConversationTurns, materializeConversationTurn, selectConversationHighlights, selectConversationTurns, } from './context-budget';
92
+ export type { BuildSemanticContinuityContextOptions, ConversationHighlightSelection, ConversationTurn, ConversationTurnSelection, GroupedConversationTurns, SelectConversationHighlightsOptions, SelectConversationTurnsOptions, } from './context-budget';
93
+ export type { ConversationHighlight, ConversationMessage, ConversationSemanticContinuityContext, ConversationThreadState, ConversationThreadStateValue, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, Platform, SemanticContinuityContext, TemplateMessage, TemplateAppCard, ThreadStateContext, } from './conversation/types.js';
94
+ export { MAX_THREAD_HIGHLIGHTS_PER_THREAD, MAX_THREAD_HIGHLIGHTS_PER_RUN, MAX_THREAD_HIGHLIGHT_REGENERATION_CANDIDATES, MAX_THREAD_HIGHLIGHT_PROMPT_LENGTH, MAX_THREAD_HIGHLIGHT_TURN_TEXT_LENGTH, THREAD_HIGHLIGHT_CONSOLIDATION_PROMPT_INSTRUCTIONS, THREAD_HIGHLIGHT_PROMPT_INSTRUCTIONS, THREAD_HIGHLIGHTER_AGENT_ID, THREAD_HIGHLIGHTER_PROVIDER_ORDER, ThreadHighlightGenerationError, ThreadHighlightGenerator, ThreadHighlighter, ThreadHighlightConsolidationItemSchema, ThreadHighlightConsolidationResponseSchema, ThreadHighlightInputValidationError, ThreadHighlightItemSchema, ThreadHighlightOutputValidationError, ThreadHighlightResponseSchema, buildThreadHighlightPrompt, buildThreadHighlightConsolidationPrompt, consolidateThreadHighlights, detectThreadHighlightBatches, generateThreadHighlightBatches, generateThreadHighlights, parseThreadHighlightResponse, parseThreadHighlightConsolidationResponse, redactThreadHighlightSecrets, } from './highlight/thread-highlighter.js';
95
+ export type { ThreadHighlightConsolidationHighlight, ThreadHighlightConsolidationInput, ThreadHighlightConsolidationItem, ThreadHighlightConsolidationOptions, ThreadHighlightConsolidationResponse, ThreadHighlightConsolidationResult, ThreadHighlightConsolidationSuccess, ThreadHighlightFailureCode, ThreadHighlightBatchDetectionResult, ThreadHighlightBatchDetectionSuccess, ThreadHighlightBatchDetectorOptions, ThreadHighlightGenerationFailure, ThreadHighlightGenerationFailureResult, ThreadHighlightGenerationInput, ThreadHighlightGenerationResult, ThreadHighlightGenerationSuccess, ThreadHighlightGeneratorOptions, ThreadHighlightItem, ThreadHighlightRegenerationInput, ThreadHighlightProviderAttempt, ThreadHighlightProviderAttemptOutcome, ThreadHighlightProviderId, ThreadHighlightResponse, ThreadHighlightTaskTurn, ThreadHighlightWriter, } from './highlight/thread-highlighter.js';
32
96
  export { createProvider, ProviderError, ClientToolCallRequiredError, registerProviderFactory, mergeAdditionalArgs } from './provider/bridge';
33
97
  export type { ProviderRuntime, ProviderQueryOptions, ProviderFactory, ProviderUsage, ClientToolCall, ContinuationState, AdditionalArgsProvider } from './provider/bridge';
34
98
  export { VercelProviderRuntime } from './provider/vercel-runtime';
35
99
  export type { VercelProviderConfig } from './provider/vercel-runtime';
36
100
  export { registerApiProviders } from './provider/register-api';
37
101
  export * from './provider/acp/index.js';
38
- export type { CliProviderAdapter } from './provider/cli/adapter.types';
102
+ export type { CliProviderAdapter, ParseEventContext } from './provider/cli/adapter.types';
39
103
  export { RateLimitError } from './provider/cli/adapter.types';
40
- export { BUILTIN_ADAPTERS, claudeAdapter, copilotAdapter, codexAdapter, opencodeAdapter } from './provider/cli/adapters/index';
104
+ export { BUILTIN_ADAPTERS, claudeAdapter, copilotAdapter, codexAdapter, opencodeAdapter, grokAdapter } from './provider/cli/adapters/index';
41
105
  export { queryAllCliProviderMetas, queryOpencodeModels } from './provider/cli/meta';
106
+ export { isMetadataOnlyProtocolLine, isProtocolOnlyText, shouldSkipRawStdoutJsonFallback, } from './provider/cli/protocol-envelope';
107
+ export { ConsoleDecoder, decodeConsoleBuffer, decodeConsoleBufferAsync, getWindowsConsoleCodePage, parseWindowsConsoleCodePage, primeWindowsConsoleCodePage, } from './internal/console-decoder';
108
+ export type { ConsoleBufferDecodeOptions, ConsoleDecoderOptions, } from './internal/console-decoder';
42
109
  export { createDelegateTool } from './tools/delegate';
43
- export { resolveTemplatesPath, resolveDefaultAgentsYaml } from './paths';
44
- export { resolveCrewxCli, resolveCrewxWorkspace } from './utils/env-defaults';
110
+ export { resolveTemplatesPath, resolveDefaultAgentsYaml, resolveWorkflowTemplatesPath } from './paths';
111
+ export { resolveCrewxCli, resolveCrewxCliArgv, resolveCrewxCliDisplay, resolveCrewxWorkspace, } from './utils/env-defaults';
112
+ export { createCrewxChildInvocation, crewxCliShimFingerprint, formatCrewxExecutableArgv, formatCrewxExecutableFailure, getCrewxStableEntrypoint, isRotatingInstallPath, isVolatilePath, materializeCrewxCliShim, materializeCrewxStableEntrypoint, resolveCrewxExecutable, } from './utils/crewx-executable';
113
+ export type { CrewxChildInvocation, CrewxChildInvocationOptions, CrewxElectronRuntimeContext, CrewxElectronRuntimePredicate, CrewxExecutableAttempt, CrewxExecutableFailure, CrewxExecutablePathLookupOptions, CrewxExecutablePathLookupResult, CrewxExecutableResolution, CrewxExecutableResolverOptions, CrewxExecutableStage, CrewxExecutableSuccess, CrewxRequiredEnv, CrewxCliShim, CrewxCliShimOptions, CrewxStableEntrypointOptions, } from './utils/crewx-executable';
114
+ export { getCrewxHome } from './utils/crewx-home';
115
+ export { CREWX_RUNNER_IDENTITY_ENV, withoutCrewxRootContext, withoutCrewxRunnerIdentity, } from './utils/runner-env';
45
116
  export { generateId, generateFingerprint } from './utils/id';
46
117
  export type { EntityPrefix, PrefixedId } from './utils/id';
47
- export { hashWorkspaceId, normalizeWorkspacePath } from './utils/workspace';
48
- export { formatTimestamp } from './utils/timestamp';
118
+ export { acquireDurableQuiesceMarker, admitDurableTask, DEFAULT_CLI_ADMISSION_TIMEOUT_MS, isDurablyQuiescing, isProcessAlive, readDurableQuiesceMarkerOwner, readUpdateAdmissionReservations, reconcileDurableQuiesceMarkerIfOwnerDead, releaseDurableQuiesceMarker, releaseUpdateAdmissionReservation, reserveUpdateAdmission, resolveUpdateAdmissionReservationDir, resolveUpdateQuiesceLockFile, UPDATE_ADMISSION_RESERVATION_DIRNAME, UPDATE_ADMISSION_SCOPE_ENV, UPDATE_QUIESCE_LOCK_FILENAME, } from './lifecycle/update-admission.js';
119
+ export type { AdmissionMarkerResult, DurableQuiesceMarkerState, DurableTaskAdmission, ReconcileOutcome, UpdateAdmissionReservationEntry, } from './lifecycle/update-admission.js';
120
+ export { acquireProcessLease, getProcessStartIdentity, getProcessStartTime, readProcessLease, reclaimProcessLease, releaseProcessLease, renewProcessLease, resolveProcessLeasePath, PROCESS_LEASE_FILENAME, } from './lifecycle/process-lease.js';
121
+ export type { ProcessLeaseAcquireResult, ProcessLeaseClock, ProcessLeaseHandle, ProcessLeaseMutationOptions, ProcessLeaseOptions, ProcessLeasePathOptions, ProcessLeaseProcessProbe, ProcessLeaseReason, ProcessLeaseReadResult, ProcessLeaseRecord, ProcessLeaseReclaimOptions, } from './lifecycle/process-lease.js';
122
+ export { hashWorkspaceId, normalizeWorkspacePath, resolveWorkspaceOwnerPath, slugify } from './utils/workspace';
123
+ export { formatTimestamp, formatDisplayTimestamp } from './utils/timestamp';
49
124
  export type { TaskLogEntry, TaskLogEntryType } from './types/task-log.types';
125
+ export { anchorChildTasks } from './task-log/anchor-child-tasks';
126
+ export type { AnchorChildInput } from './task-log/anchor-child-tasks';
127
+ export { DELEGATION_RESULT_MARKER, DELEGATION_RESULT_PREFIX, consumeDelegationResult, formatDelegationResult, formatDelegationTrailer, isDelegationResult, parseDelegationResult, parseDelegationTrailer, stripDelegationResult, stripDelegationTrailer, } from './task-log/delegation-trailer';
128
+ export type { ConsumedDelegationResult, DelegationResult, DelegationResultInput, ParsedDelegationResult, } from './task-log/delegation-trailer';
129
+ export { extractLegacyWorkflowRunId, scanLegacyUiCardAt, scanLegacyUiCardTags, } from './ui-card/index';
130
+ export type { LegacyUiCardTag } from './ui-card/index';
131
+ export { classifyTaskError } from './provider/classify-task-error';
132
+ export { redactTechnicalMessage } from './provider/redact-technical-message';
133
+ export type { TaskErrorCode, TaskErrorMeta, TaskErrorProjection } from './provider/task-error.types';
50
134
  export { SdkBoxService } from './boxing/box.service';
51
135
  export { buildContext } from './boxing/context-builder';
52
136
  export type { IBoxStorage, ITaskReader, ITokenizer } from './boxing/box-storage.interface';
53
137
  export type { BoxRow, BoxSummary, BoxResponse as SdkBoxResponse, InsertBoxData, CreateBoxParams, ThreadMessage as BoxingThreadMessage, ContextBuildParams, ContextBuildResponse, } from './boxing/box.types';
54
- export { parseStdoutEvent } from './provider/cli/adapters/index.js';
138
+ export { parseStdoutEvent, createLogParseSession } from './provider/cli/adapters/index.js';
139
+ export type { LogParseSession } from './provider/cli/adapters/index.js';
55
140
  export { parseUsage } from './provider/parse-usage';
56
141
  export type { ParsedUsage } from './provider/parse-usage';
57
142
  export { ParallelRunner, ParallelRunnerTimeoutError } from './parallel/parallel-runner';
@@ -62,17 +147,49 @@ export { AgentRuntime } from './parallel/agent-runtime';
62
147
  export type { AgentResult, AgentQueryRequest, AgentExecuteRequest } from './parallel/agent-runtime';
63
148
  export { PluginProviderRuntime, createPluginProviderFactory } from './plugin/plugin-provider';
64
149
  export type { PluginProviderConfig } from './plugin/types';
65
- export { TaskRepository } from './repository/task.repository.js';
66
- export type { TaskRow } from './repository/task.repository.js';
150
+ export { DEFAULT_TASK_REAPER_TICK_INTERVAL_MS, mergeTerminalReason, TaskRepository, TASK_HEARTBEAT_HARD_STALE_MS, TASK_HEARTBEAT_INTERVAL_MS, TASK_HEARTBEAT_STALE_MS, resolveTaskHeartbeatHardStaleMs, resolveTaskHeartbeatIntervalMs, resolveTaskHeartbeatStaleMs, } from './repository/task.repository.js';
151
+ export type { ReapOrphanedTasksOptions } from './repository/task.repository.js';
152
+ export { countRatedTasks, listRatedTasks, RATED_TASK_EXCERPT_MAX_CHARS, RATED_TASK_LIST_MAX_LIMIT, setTaskRating, TASK_RATINGS, TaskRatingError, } from './repository/task.repository.js';
153
+ export type { CountRatedTasksInput, ListRatedTasksInput, RatedTaskRow, SetTaskRatingInput, SetTaskRatingResult, TaskRating, TaskRatingErrorCode, } from './repository/task.repository.js';
154
+ export type { FinalizeTaskStopOptions, TaskStopMethod, TaskStopOrigin, TaskStopRequestContext, TaskStopRequestResult, } from './repository/task.repository.js';
155
+ export { INSTRUCTION_STOP_EPOCH_MISMATCH, INSTRUCTION_STOP_GENERATION_ALREADY_SETTLED, INSTRUCTION_STOP_PROCESS_TERMINATION_FAILED, INSTRUCTION_STOP_REQUEST_FAILED, INSTRUCTION_STOP_SETTLE_CAS_FAILED, INSTRUCTION_STOP_TARGET_PID_MISSING, INSTRUCTION_STOP_WORKSPACE_MISMATCH, stopTask, resolveTaskStopMethod, TASK_STOP_DEFAULT_GRACE_MS, TASK_STOP_DEFAULT_POLL_MS, TASK_STOP_OWNED_PROCESS_MARKERS, } from './lifecycle/task-stop.js';
156
+ export type { StopTaskGenerationForInstructionOptions, StopTaskOptions, StopTaskProcessControl, StopTaskResult, StopTaskStatus, } from './lifecycle/task-stop.js';
157
+ export { isTaskRetryableByDefault, LEGACY_TASK_TERMINAL_ERROR_PATTERNS, normalizeTaskRow, normalizeTaskStatus, readTaskTerminalReason, storedTaskStatusesFor, TASK_TERMINAL_STATUSES, TASK_TERMINAL_STORED_STATUSES, } from './repository/task-status.js';
158
+ export type { TaskStatus, TaskStatusInput, TaskTerminalReason, TaskTerminalStatus, } from './repository/task-status.js';
159
+ export type { TaskRow, TaskKillResult, TaskKillStatus } from './repository/task.repository.js';
160
+ export type { ProviderInputEpochEntry, ProviderInputRecord } from './repository/task.repository.js';
161
+ export { runHeartbeatTick, startTaskHeartbeat, stopTaskHeartbeat, TASK_STOP_POLL_INTERVAL_MS, taskHeartbeatRegistry, } from './lifecycle/task-heartbeat.js';
162
+ export type { HeartbeatTickResult, TaskHeartbeatHandle, TaskHeartbeatOptions, TaskHeartbeatRow, } from './lifecycle/task-heartbeat.js';
163
+ export { checkProcessOwnership, checkProcessOwnershipAsync, probeProcessLiveness, terminateProcessTree, UNIX_PROCESS_POLL_INTERVAL_MS, UNIX_SIGKILL_CONFIRM_MS, UNIX_SIGTERM_GRACE_MS, } from './process/process-control.js';
164
+ export type { ProcessCommandLineResult, ProcessCommandResult, ProcessCommandRunner, ProcessCommandRunnerAsync, ProcessControlOptions, ProcessLiveness, ProcessOwnership, ProcessTerminationResult, ProcessTerminationStatus, } from './process/process-control.js';
67
165
  export { SpanRepository } from './repository/span.repository.js';
68
166
  export type { SpanRow } from './repository/span.repository.js';
167
+ export { COMMON_CODE_COLORS, COMMON_CODE_GROUPS, CommonCodeRepository, CommonCodeRepositoryError, generateCommonCodeId, } from './repository/common-code.repository.js';
168
+ export type { CommonCodeColor, CommonCodeErrorReason, CommonCodeGroup, CreateThreadStateInput, UpdateCommonCodeDisplayInput, } from './repository/common-code.repository.js';
169
+ export type { CommonCode, NewCommonCode } from './schema/common-codes.js';
170
+ export { StorageMetadataRepository } from './repository/storage-metadata.repository.js';
171
+ export { STORAGE_METADATA_KINDS, STORAGE_METADATA_UNITS, } from './repository/storage-metadata.repository.js';
172
+ export type { StorageMetadataAge, StorageMetadataAggregateRow, StorageMetadataBatchResult, StorageMetadataCutoffs, StorageMetadataKind, StorageMetadataReadiness, StorageMetadataSnapshot, StorageMetadataUnit, StorageMetadataUnitReadiness, StorageMetadataVerificationMismatch, } from './repository/storage-metadata.repository.js';
173
+ export { ThreadRepository, ThreadTitleMetadataPatchError, } from './repository/thread.repository.js';
174
+ export { AgentSendHistoryRepository } from './repository/agent-send-history.repository.js';
175
+ export type { RecordAcceptedAgentSendInput, RecentAgentSend } from './repository/agent-send-history.repository.js';
176
+ export type { ThreadRow, NewThread, TaskDescendantList, TaskDescendantListOptions, TaskDescendantRow, TaskDescendantSummary, RespondedAgent, ThreadTitleMetadataPatch, ThreadTitleMetadataPatchResult, ThreadTitleMetadataPatchErrorReason, } from './repository/thread.repository.js';
177
+ export { ThreadHistoryConflictError, ThreadHighlightConflictError, ThreadHighlightRegenerationConflictError, ThreadHistoryRepository, } from './repository/thread-history.repository.js';
178
+ export { THREAD_HIGHLIGHT_DELETION_REASON_REGENERATION_REPLACED, THREAD_HIGHLIGHT_REGENERATION_COMMIT_FAILED, THREAD_HIGHLIGHT_REGENERATION_DETECTION_FAILED, THREAD_HIGHLIGHT_REGENERATION_INTERRUPTED, THREAD_HIGHLIGHT_REGENERATION_NO_ELIGIBLE_TURNS, } from './repository/thread-history.repository.js';
179
+ export type { CompleteThreadHighlightRegenerationInput, CompleteThreadHighlightRegenerationResult, CreateThreadHighlightRegenerationRunInput, CreateThreadHighlightRegenerationRunResult, CreateThreadHighlightInput, DismissThreadHighlightInput, FailThreadHighlightRegenerationRunInput, ListActiveHighlightsOptions, ThreadActorInput, ThreadHighlightDeletionReason, ThreadHighlightEligibleTurn, ThreadHighlightRegenerationCandidate, ThreadHighlightRegenerationErrorCode, ThreadSnapshot, ThreadSnapshotMutationInput, ThreadTimeline, ThreadTimelineOptions, ThreadTimelineQuery, UpdateThreadHighlightInput, } from './repository/thread-history.repository.js';
180
+ export { BUILTIN_THREAD_STATES, THREAD_PRIORITIES, customStateLabel, hasThreadTitleKey, isThreadPriority, isThreadState, matchesThreadTitleFilter, mergeThreadTitleMeta, parseThreadPriorityFilter, parseThreadStateFilter, readThreadTitleMeta, threadTitleSearchHaystack, } from './repository/thread-title.types.js';
181
+ export type { BuiltinThreadState, LegacyThreadState, StableThreadState, ThreadPriority, ThreadState, ThreadTitleFilter, ThreadTitleMeta, ThreadTitlePatch, } from './repository/thread-title.types.js';
182
+ export { THREAD_ACTOR_TYPES, THREAD_EVENT_TYPES, THREAD_HIGHLIGHT_KINDS, THREAD_HIGHLIGHT_SOURCES, THREAD_HIGHLIGHT_STATUSES, THREAD_HIGHLIGHT_RUN_STATUSES, } from './schema/thread-history.js';
183
+ export type { NewThreadEvent, NewThreadHighlight, NewThreadHighlightRun, ThreadActorType, ThreadEvent, ThreadEventType, ThreadHighlight, ThreadHighlightKind, ThreadHighlightSource, ThreadHighlightStatus, ThreadHighlightRun, ThreadHighlightRunStatus, } from './schema/thread-history.js';
69
184
  export { RemoteProviderRuntime, createRemoteProviderFactory } from './remote/remote-provider';
70
185
  export { RemoteAgentManager } from './remote/remote-agent-manager';
71
186
  export { McpHttpTransport } from './remote/remote-transport';
72
- export type { RemoteTransport, RemoteAgentConfig, RemoteProviderConfig, RemoteAgentQueryRequest, RemoteAgentExecuteRequest, RemoteAgentResponse, McpJsonRpcRequest, McpJsonRpcResponse, RemoteAgentDescriptor, } from './remote/types';
187
+ export { resolveAgentExecutionProfile, resolveAgentExecutionProfiles, } from './remote/execution-profile';
188
+ export type { RemoteTransport, RemoteAgentConfig, RemoteProviderConfig, RemoteAgentQueryRequest, RemoteAgentExecuteRequest, RemoteAgentResponse, McpJsonRpcRequest, McpJsonRpcResponse, RemoteAgentDescriptor, AgentExecutionProfile, AgentExecutionProfileSlot, AgentExecutionProfileStatus, AgentExecutionProfileErrorCode, } from './remote/types';
73
189
  export { createHandler } from './server/handler';
74
190
  export type { HandlerOptions, CrewxHandler } from './server/handler';
75
191
  export type { AuthOptions } from './server/auth';
192
+ export * from './account/index';
76
193
  export { YamlHookPlugin, validateHooksSchema } from './hooks/yaml-plugin';
77
194
  export type { YamlHookConfig } from './hooks/yaml-plugin';
78
195
  export * from './conversation/index.js';
@@ -83,5 +200,8 @@ export { createScopedAdapterStore } from './adapter/scoped-store';
83
200
  export { createAdapterContext, runInSyncWindow, getSyncWindowStore } from './adapter/context-builder';
84
201
  export type { SyncWindow, AdapterContextOptions } from './adapter/context-builder';
85
202
  export type { ChannelAdapterPluginSpec } from './adapter/plugin-helper';
86
- export { resolveWindowsSpawnProgram, materializeWindowsSpawnProgram, resolveWindowsExecutablePath, } from './internal/windows-spawn';
203
+ export { resolveExecutablePath, resolveWindowsSpawnProgram, materializeWindowsSpawnProgram, resolveWindowsExecutablePath, } from './internal/windows-spawn';
87
204
  export type { WindowsSpawnProgram, WindowsSpawnInvocation, ResolveWindowsSpawnProgramParams, } from './internal/windows-spawn';
205
+ export { filterAgentConfigs, formatAgentList } from './agent/agent-list-view';
206
+ export type { AgentListFilters, AgentListSnapshot, AgentListFormatOptions } from './agent/agent-list-view';
207
+ export type { PromptListResolver } from './template/types';