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

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 (304) 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 +148 -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 +10 -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/tool-mode.d.ts +3 -0
  24. package/dist/boxing/box.types.d.ts +4 -0
  25. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  26. package/dist/config/default-agent-models.d.ts +11 -0
  27. package/dist/config/global-settings.d.ts +33 -0
  28. package/dist/config/migrate-grok-mode.d.ts +6 -0
  29. package/dist/config/model-compat.d.ts +31 -0
  30. package/dist/config/models.generated.d.ts +37 -0
  31. package/dist/config/models.remote.d.ts +1 -0
  32. package/dist/config/overdrive.d.ts +7 -0
  33. package/dist/config/pricing.d.ts +6 -3
  34. package/dist/config/pricing.generated.d.ts +4 -0
  35. package/dist/config/pricing.types.d.ts +4 -0
  36. package/dist/config/timeout.config.d.ts +4 -0
  37. package/dist/config/wi-boards.d.ts +19 -0
  38. package/dist/context-budget/continuity.d.ts +63 -0
  39. package/dist/context-budget/index.d.ts +142 -0
  40. package/dist/conversation/index.d.ts +1 -1
  41. package/dist/conversation/sqlite-provider.d.ts +6 -3
  42. package/dist/conversation/to-template-messages.d.ts +9 -0
  43. package/dist/conversation/types.d.ts +58 -1
  44. package/dist/desktop/command-runner.d.ts +4 -0
  45. package/dist/desktop/default-adapters.d.ts +4 -0
  46. package/dist/desktop/global-install.d.ts +19 -0
  47. package/dist/desktop/index.d.ts +3 -0
  48. package/dist/desktop/index.js +3 -0
  49. package/dist/desktop/install.d.ts +5 -0
  50. package/dist/desktop/lnk.d.ts +22 -0
  51. package/dist/desktop/manifest.d.ts +21 -0
  52. package/dist/desktop/types.d.ts +67 -0
  53. package/dist/desktop/version.d.ts +1 -0
  54. package/dist/desktop/windows-paths.d.ts +21 -0
  55. package/dist/desktop/wrapper.d.ts +18 -0
  56. package/dist/esm/account/index.js +2 -0
  57. package/dist/esm/app/index.js +10 -0
  58. package/dist/esm/desktop/index.js +3 -0
  59. package/dist/esm/index.js +1126 -224
  60. package/dist/esm/node/index.js +2 -0
  61. package/dist/esm/plugins/index.js +496 -214
  62. package/dist/esm/process/index.js +1 -0
  63. package/dist/esm/publish/index.js +2 -0
  64. package/dist/esm/repository/index.js +608 -211
  65. package/dist/esm/skills/index.js +2 -0
  66. package/dist/esm/testing/index.js +1 -1
  67. package/dist/events/types.d.ts +16 -0
  68. package/dist/facade/Crewx.d.ts +61 -5
  69. package/dist/facade/task-ticket.d.ts +14 -0
  70. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  71. package/dist/highlight/thread-highlighter.d.ts +326 -0
  72. package/dist/index.browser.d.ts +19 -1
  73. package/dist/index.browser.js +6 -2
  74. package/dist/index.d.ts +131 -17
  75. package/dist/index.js +1128 -226
  76. package/dist/internal/console-decoder.d.ts +38 -0
  77. package/dist/internal/windows-spawn.d.ts +10 -0
  78. package/dist/layout/types.d.ts +18 -1
  79. package/dist/lifecycle/process-lease.d.ts +80 -0
  80. package/dist/lifecycle/process-owner.d.ts +20 -0
  81. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  82. package/dist/lifecycle/task-stop.d.ts +82 -0
  83. package/dist/lifecycle/update-admission.d.ts +45 -0
  84. package/dist/local-server/base-url.d.ts +18 -0
  85. package/dist/local-server/index.d.ts +8 -0
  86. package/dist/local-server/opencode.d.ts +8 -0
  87. package/dist/local-server/probe.d.ts +3 -0
  88. package/dist/local-server/runtime.d.ts +26 -0
  89. package/dist/local-server/types.d.ts +43 -0
  90. package/dist/mcp-app/agent-access.d.ts +26 -0
  91. package/dist/mcp-app/app-handoff.d.ts +109 -0
  92. package/dist/mcp-app/apps-context.d.ts +32 -0
  93. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  94. package/dist/mcp-app/candidate-registration.d.ts +4 -0
  95. package/dist/mcp-app/card-handler.d.ts +7 -0
  96. package/dist/mcp-app/catalog.d.ts +7 -0
  97. package/dist/mcp-app/content-channel.d.ts +86 -0
  98. package/dist/mcp-app/content-declarations.d.ts +31 -0
  99. package/dist/mcp-app/dev-checks.d.ts +29 -0
  100. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  101. package/dist/mcp-app/discovery.d.ts +161 -0
  102. package/dist/mcp-app/errors.d.ts +7 -0
  103. package/dist/mcp-app/index.d.ts +37 -0
  104. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  105. package/dist/mcp-app/model-context.d.ts +29 -0
  106. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  107. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  108. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  109. package/dist/mcp-app/projection.d.ts +14 -0
  110. package/dist/mcp-app/prompt-cards.d.ts +28 -0
  111. package/dist/mcp-app/registry.d.ts +28 -0
  112. package/dist/mcp-app/skill-backend.d.ts +132 -0
  113. package/dist/mcp-app/state-set.d.ts +9 -0
  114. package/dist/mcp-app/types.d.ts +488 -0
  115. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  116. package/dist/mcp-app/workspace-app-scan-cache.d.ts +27 -0
  117. package/dist/mcp-app/workspace-snapshot.d.ts +72 -0
  118. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  119. package/dist/migrations/0012_blue_turbo.sql +23 -0
  120. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  121. package/dist/migrations/0014_organic_mongu.sql +73 -0
  122. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  123. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  124. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  125. package/dist/migrations/0018_bored_jackal.sql +33 -0
  126. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  127. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  128. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  129. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  130. package/dist/migrations/0023_red_payback.sql +1 -0
  131. package/dist/migrations/0024_storage_metadata.sql +262 -0
  132. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  133. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  134. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  135. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  136. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  137. package/dist/migrations/0029_nice_rhino.sql +1 -0
  138. package/dist/migrations/0031_petite_arclight.sql +6 -0
  139. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  140. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  141. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  142. package/dist/migrations/0035_request_log_daily.sql +11 -0
  143. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  144. package/dist/migrations/0037_ui_instance_agent_open_request.sql +1 -0
  145. package/dist/migrations/0038_task_rating.sql +3 -0
  146. package/dist/migrations/0039_aspiring_purifiers.sql +9 -0
  147. package/dist/migrations/0040_task_provider_inputs.sql +53 -0
  148. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  149. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  150. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  151. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  152. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  153. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  154. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  155. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  156. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  157. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  158. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  159. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  160. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  161. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  162. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  163. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  164. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  165. package/dist/migrations/meta/0037_snapshot.json +3598 -0
  166. package/dist/migrations/meta/0038_snapshot.json +3626 -0
  167. package/dist/migrations/meta/0039_snapshot.json +3684 -0
  168. package/dist/migrations/meta/0040_snapshot.json +3759 -0
  169. package/dist/migrations/meta/_journal.json +210 -0
  170. package/dist/node/index.d.ts +1 -0
  171. package/dist/node/index.js +2 -0
  172. package/dist/paths.d.ts +1 -0
  173. package/dist/plugin/types.d.ts +1 -0
  174. package/dist/plugins/index.d.ts +1 -1
  175. package/dist/plugins/index.js +496 -214
  176. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  177. package/dist/process/index.d.ts +2 -0
  178. package/dist/process/index.js +1 -0
  179. package/dist/process/process-control.d.ts +41 -0
  180. package/dist/prompt/tag-names.d.ts +22 -0
  181. package/dist/provider/acp/connection.d.ts +6 -0
  182. package/dist/provider/acp/meta.d.ts +11 -0
  183. package/dist/provider/bridge.d.ts +7 -1
  184. package/dist/provider/classify-task-error.d.ts +2 -0
  185. package/dist/provider/cli/adapter.types.d.ts +14 -2
  186. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  187. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  188. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  189. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  190. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  191. package/dist/provider/cli/adapters/index.d.ts +5 -0
  192. package/dist/provider/cli/index.d.ts +3 -2
  193. package/dist/provider/cli/meta.d.ts +5 -0
  194. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  195. package/dist/provider/errors.d.ts +5 -1
  196. package/dist/provider/idle-watchdog.d.ts +19 -0
  197. package/dist/provider/models.d.ts +17 -12
  198. package/dist/provider/order.d.ts +1 -1
  199. package/dist/provider/parse-usage.d.ts +6 -0
  200. package/dist/provider/provider-selection.d.ts +8 -0
  201. package/dist/provider/redact-technical-message.d.ts +1 -0
  202. package/dist/provider/task-error.types.d.ts +17 -0
  203. package/dist/publish/constants.d.ts +6 -0
  204. package/dist/publish/errors.d.ts +7 -0
  205. package/dist/publish/index.d.ts +50 -0
  206. package/dist/publish/index.js +2 -0
  207. package/dist/publish/manifest.d.ts +47 -0
  208. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  209. package/dist/publish/pack.d.ts +6 -0
  210. package/dist/publish/scan.d.ts +10 -0
  211. package/dist/publish/secrets.d.ts +6 -0
  212. package/dist/publish/upload.d.ts +19 -0
  213. package/dist/remote/execution-profile.d.ts +9 -0
  214. package/dist/remote/index.d.ts +1 -0
  215. package/dist/remote/types.d.ts +28 -0
  216. package/dist/repository/agent-send-history.repository.d.ts +23 -0
  217. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  218. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  219. package/dist/repository/common-code.repository.d.ts +45 -0
  220. package/dist/repository/db.d.ts +12 -1
  221. package/dist/repository/index.d.ts +49 -6
  222. package/dist/repository/index.js +608 -211
  223. package/dist/repository/logs-db.d.ts +12 -0
  224. package/dist/repository/notification.repository.d.ts +58 -0
  225. package/dist/repository/project.repository.d.ts +90 -0
  226. package/dist/repository/request-log-mover.d.ts +70 -0
  227. package/dist/repository/request-log.repository.d.ts +7 -3
  228. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  229. package/dist/repository/task-log-migration.d.ts +74 -0
  230. package/dist/repository/task-log.repository.d.ts +44 -0
  231. package/dist/repository/task-status.d.ts +21 -0
  232. package/dist/repository/task.repository.d.ts +300 -7
  233. package/dist/repository/thread-history.repository.d.ts +193 -0
  234. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  235. package/dist/repository/thread-title.types.d.ts +29 -0
  236. package/dist/repository/thread.repository.d.ts +118 -7
  237. package/dist/repository/usage-backfill.d.ts +62 -0
  238. package/dist/repository/usage-from-logs.d.ts +21 -0
  239. package/dist/repository/workspace.repository.d.ts +3 -0
  240. package/dist/schema/agent-send-history.d.ts +85 -0
  241. package/dist/schema/agent-suggestions.d.ts +199 -0
  242. package/dist/schema/common-codes.d.ts +216 -0
  243. package/dist/schema/index.d.ts +15 -0
  244. package/dist/schema/notifications.d.ts +303 -0
  245. package/dist/schema/projects.d.ts +610 -0
  246. package/dist/schema/request-log-daily.d.ts +151 -0
  247. package/dist/schema/storage-metadata.d.ts +181 -0
  248. package/dist/schema/task-log-events.d.ts +119 -0
  249. package/dist/schema/task-provider-inputs.d.ts +100 -0
  250. package/dist/schema/tasks.d.ts +1058 -1
  251. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  252. package/dist/schema/thread-history.d.ts +734 -0
  253. package/dist/schema/threads.d.ts +59 -0
  254. package/dist/schema/ui-action-receipts.d.ts +358 -0
  255. package/dist/schema/ui-definition-archive.d.ts +63 -0
  256. package/dist/schema/ui-instance-repins.d.ts +222 -0
  257. package/dist/schema/ui-instances.d.ts +324 -0
  258. package/dist/schema/workspaces.d.ts +17 -0
  259. package/dist/skills/index.d.ts +15 -0
  260. package/dist/skills/index.js +2 -0
  261. package/dist/skills/types.d.ts +18 -0
  262. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  263. package/dist/task-log/delegation-trailer.d.ts +34 -0
  264. package/dist/template/engine.d.ts +2 -2
  265. package/dist/template/helpers/exec.browser.d.ts +4 -3
  266. package/dist/template/helpers/exec.d.ts +4 -3
  267. package/dist/template/helpers/format-conversation.d.ts +1 -0
  268. package/dist/template/types.d.ts +20 -0
  269. package/dist/testing/index.js +1 -1
  270. package/dist/types/index.d.ts +1578 -3
  271. package/dist/types/task-log.types.d.ts +3 -0
  272. package/dist/ui-card/index.d.ts +2 -0
  273. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  274. package/dist/ui-instance/definition.d.ts +6 -0
  275. package/dist/ui-instance/errors.d.ts +18 -0
  276. package/dist/ui-instance/index.d.ts +11 -0
  277. package/dist/ui-instance/json.d.ts +19 -0
  278. package/dist/ui-instance/lineage.d.ts +24 -0
  279. package/dist/ui-instance/runtime.d.ts +19 -0
  280. package/dist/ui-instance/store.d.ts +213 -0
  281. package/dist/ui-instance/types.d.ts +329 -0
  282. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  283. package/dist/ui-plugin/csp.d.ts +28 -0
  284. package/dist/ui-plugin/index.d.ts +6 -0
  285. package/dist/ui-plugin/limits.d.ts +27 -0
  286. package/dist/ui-plugin/manifest.d.ts +3 -0
  287. package/dist/ui-plugin/types.d.ts +203 -0
  288. package/dist/ui-plugin/validator.d.ts +18 -0
  289. package/dist/utils/crewx-executable.d.ts +76 -0
  290. package/dist/utils/crewx-home.d.ts +1 -0
  291. package/dist/utils/env-defaults.d.ts +3 -0
  292. package/dist/utils/id.d.ts +1 -1
  293. package/dist/utils/local-identity.d.ts +2 -0
  294. package/dist/utils/runner-env.d.ts +3 -0
  295. package/dist/utils/timestamp.d.ts +1 -0
  296. package/dist/utils/workspace.d.ts +1 -0
  297. package/dist/wi/create.d.ts +48 -0
  298. package/dist/wi/select.d.ts +20 -0
  299. package/package.json +57 -3
  300. package/templates/agents/default.yaml +303 -128
  301. package/templates/documents/crewx-manual.md +138 -138
  302. package/templates/documents/crewx-quick-guide.md +8 -7
  303. package/templates/workflows/wi-default-flow.yaml +65 -0
  304. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -0,0 +1,10 @@
1
+ 'use strict';var util=require('util'),fs=require('fs'),crypto=require('crypto'),console$1=require('console'),stream=require('stream');var h=["text/plain","application/json"];var Y=Symbol;Y.metadata===void 0&&Object.defineProperty(Symbol,"metadata",{configurable:false,value:Symbol.for("Symbol.metadata")});var ue=Y.metadata,N=Symbol.for("crewx.app.tool-metadata"),A=class extends Error{code;detail;outcome;constructor(t,n=null,o){super(t),this.name="AppError",this.code=t,this.detail=n,this.outcome=B(o?.outcome);}};function B(e){return e==="rejected"?"rejected":"failed"}var q=class{static devtools=process.env.CREWX_APP_DEV==="1"?Object.freeze({log:true}):void 0;currentState;stateWasSet=false;answerBody;answerRange;callContext;workspaceRoot;constructor(t={workspaceRoot:process.cwd()}){this.currentState=t.state??{},this.workspaceRoot=t.workspaceRoot,this.callContext=t.context===void 0?void 0:fe(t.context);}get context(){if(this.callContext===void 0)throw new TypeError("this.context is only set when the Host runs the action; pass options.context when you construct the App in a test");return this.callContext}get state(){return this.currentState}get didSetState(){return this.stateWasSet}setState(t){this.currentState=t,this.stateWasSet=true;}get didSetContent(){return this.answerBody!==void 0}get producedContent(){return this.answerBody===void 0?void 0:{body:this.answerBody,...this.answerRange===void 0?{}:{range:this.answerRange}}}setContent(t,n){if(typeof t!="string"&&!(t instanceof Uint8Array))throw new TypeError("setContent needs a string or a Uint8Array");if(n!==void 0&&!me(n))throw new TypeError("setContent range must be { startLine, lineCount, totalLines }, three integers of at least 1");this.answerBody=typeof t=="string"?new TextEncoder().encode(t):new Uint8Array(t),this.answerRange=n===void 0?void 0:{startLine:n.startLine,lineCount:n.lineCount,totalLines:n.totalLines};}emptyState(){return {}}validate(t,n,o){}mapError(t){return {code:"EXECUTION_FAILED",detail:null}}errorState(t,n,o){return {...O(o.state)?o.state:{},error:{code:t,detail:n}}}};function ce(e){return function(t,n){if(n.static||n.private||n.kind!=="method")throw new TypeError("@Tool can decorate public instance methods only");let o=n.metadata;if(!o)throw new TypeError("standard decorator metadata is unavailable");let i=Object.hasOwn(o,N)?o[N]:[];if(i.some(s=>s.methodName===String(n.name)))throw new TypeError(`@Tool is declared more than once for ${String(n.name)}`);let r=e.content===void 0?void 0:pe(e.name,e.content);o[N]=[...i,{methodName:String(n.name),options:Object.freeze({...e,...r===void 0?{}:{content:r}})}];}}function D(e){let t=e[ue],n=t&&Object.hasOwn(t,N)?t[N]:[],o=new Map(n.map(r=>[r.methodName,r])),i=Object.getOwnPropertyNames(e.prototype).map(r=>o.get(r)).filter(r=>r!==void 0);if(i.length!==n.length)throw new TypeError("a @Tool method is missing from the App prototype");return i}function H(e){let t=e.definition,n=D(e),o=new Set;return n.map(({options:i})=>{if(o.has(i.name))throw new TypeError(`duplicate @Tool name: ${i.name}`);return o.add(i.name),{actionId:i.name,...i.dataInputs===void 0?{}:{dataInputs:[...i.dataInputs]},confirmation:i.confirmation??"none",capability:i.capability??"app.read",mutation:i.mutation??true,inputSchema:i.inputSchema,...i.content===void 0?{}:{content:ye(i.content)},resultProjection:i.resultProjection??{allow:[...t.stateProjection.allow]},_meta:{description:i.description}}})}function le(e,t){if(t.length===0)throw new TypeError("backendCommand must name the skill command");let n=H(e).map(({_meta:o,...i})=>({...i,backend:{type:"skill",command:[...t]},_meta:o}));return {...e.definition,actions:n}}function pe(e,t){let n=r=>{throw new TypeError(`@Tool ${e}: content ${r}`)},o=(r,s,u)=>{if(!O(u))return n(`${r} must be an object`);for(let a of Object.keys(u))if(a==="mediaType"){if(!h.includes(u[a]))return n(`${r}.mediaType must be one of ${h.join(", ")}`)}else if(a===s){if(typeof u[a]!="boolean")return n(`${r}.${a} must be true or false`)}else return n(`${r} has the unknown key "${a}"`);return Object.hasOwn(u,"mediaType")?Object.freeze({...u}):n(`${r}.mediaType is required`)};if(!O(t))return n("must be an object");let i={};for(let r of Object.keys(t))if(r==="in")i[r]=o("in","required",t[r]);else if(r==="out")i[r]=o("out","range",t[r]);else return n(`has the unknown key "${r}"; use "in" and/or "out"`);return Object.keys(i).length===0?n('needs "in" and/or "out"'):Object.freeze(i)}function fe(e){return Object.freeze({instanceId:e.instanceId,threadId:e.threadId,actor:e.actor,requestId:e.requestId,nowMs:e.nowMs})}function ye(e){let t={};for(let[n,o]of Object.entries(e))t[n]={...o};return t}function me(e){return O(e)&&["startLine","lineCount","totalLines"].every(t=>Number.isSafeInteger(e[t])&&e[t]>=1)}function O(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var Te=/^[A-Za-z0-9._:-]{1,128}$/u,Ee=/[\u0000-\u001f\u007f\u2028\u2029]/u;function K(e=process.env){let t=G(e.CREWX_APP_INSTANCE_ID),n=e.CREWX_APP_REQUEST_ID,o=e.CREWX_APP_ACTOR_KIND,i=e.CREWX_APP_NOW_MS;if(t===void 0||typeof n!="string"||!Te.test(n)||o!=="user"&&o!=="agent"||typeof i!="string"||!/^\d{1,16}$/u.test(i))return;let r=Number(i);if(!Number.isSafeInteger(r))return;let s=e.CREWX_THREAD_ID===void 0?null:G(e.CREWX_THREAD_ID);if(s!==void 0)return Object.freeze({instanceId:t,threadId:s,actor:o,requestId:n,nowMs:r})}function G(e){if(!(typeof e!="string"||e.length===0||Ee.test(e)))return new TextEncoder().encode(e).byteLength<=512?e:void 0}var ge="dist/tools.json",Ae=1,Ce="dist/main.mjs";var Q=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];function Oe(e){if(!Array.isArray(e)||e.length===0)return false;let t=new Set;for(let n of e){if(!Q.some(o=>o===n)||t.has(n))return false;t.add(n);}return true}var j=2,L=2097152;var R=2*1024*1024,U=2e4;function $(e){return crypto.createHash("sha256").update(e).digest("hex")}function F(e){if(e.byteLength===0)return 0;let t=0;for(let n of e)n===10&&(t+=1);return e[e.byteLength-1]!==10&&(t+=1),t}var be=L+1+R,Se=64*1024,Ie=10,P={kind:"invalid"};function he(e,t){try{let n=[],o=0;for(;;){let s=new Uint8Array(Se),u=fs.readSync(e,s,0,s.length,null);if(u===0)break;if(o+=u,o>t)return;n.push(s.subarray(0,u));}let i=new Uint8Array(o),r=0;for(let s of n)i.set(s,r),r+=s.byteLength;return i}catch{return}}function M(e){return Re(he(e,be))}function Re(e){if(e===void 0)return P;let t=e.indexOf(Ie);if(e.byteLength<=L){let o=Le(Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("utf8"));if(o.ok&&!(t>=0&&b(o.value)&&o.value.schemaVersion===j))return {kind:"v1",value:o.value}}if(t<=0||t>L)return P;let n;try{n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e.subarray(0,t)));}catch{return P}return !b(n)||n.schemaVersion!==j?P:{kind:"v2",header:n,body:e.subarray(t+1)}}var Ne="actionId,content,input,schemaVersion,state",xe="bytes,lines,mediaType,sha256",ke="mediaType,range",De=/^[a-f0-9]{64}$/u,je=new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});function te(e,t){let n=a=>({code:a,outcome:"rejected"});if(x(e)!==Ne||e.schemaVersion!==j||typeof e.actionId!="string"||!b(e.input)||!b(e.state)||!b(e.content)||x(e.content)!=="in,out")return {code:"INPUT_INVALID",outcome:"failed"};let o=e.content,i,r=o.in;if(r===null){if(t.byteLength!==0)return n(t.byteLength>R?"CONTENT_TOO_LARGE":"CONTENT_DIGEST_MISMATCH")}else {if(!b(r)||x(r)!==xe||!Z(r.mediaType)||!ee(r.bytes,R)||!ee(r.lines,U)||typeof r.sha256!="string"||!De.test(r.sha256)||t.byteLength!==r.bytes)return n(t.byteLength>R?"CONTENT_TOO_LARGE":"CONTENT_DIGEST_MISMATCH");if($(t)!==r.sha256||F(t)!==r.lines)return n("CONTENT_DIGEST_MISMATCH");let a;try{a=je.decode(t);}catch{return n("CONTENT_ENCODING_INVALID")}i={mediaType:r.mediaType,text:a};}let s,u=o.out;if(u!==null){if(!b(u)||x(u)!==ke||!Z(u.mediaType))return n("CONTENT_SOURCE_UNSUPPORTED");let a=u.range;if(a!==null&&!Ue(a))return n("CONTENT_SOURCE_UNSUPPORTED");s={mediaType:u.mediaType,...a===null?{}:{range:{startLine:a.startLine,lineCount:a.lineCount}}};}return {actionId:e.actionId,input:e.input,state:e.state,content:{...i===void 0?{}:{in:i},...s===void 0?{}:{out:s}}}}function ne(e){return Object.hasOwn(e,"code")}function oe(e,t){let n=o=>({code:o,outcome:"rejected"});if(e?.in===void 0){if(t.in!==void 0)return n("CONTENT_SOURCE_UNSUPPORTED")}else if(t.in===void 0){if(e.in.required===true)return n("CONTENT_REQUIRED")}else if(t.in.mediaType!==e.in.mediaType)return n("CONTENT_SOURCE_UNSUPPORTED");if(e?.out===void 0){if(t.out!==void 0)return n("CONTENT_SOURCE_UNSUPPORTED")}else {if(t.out===void 0)return n("CONTENT_REQUIRED");if(t.out.mediaType!==e.out.mediaType||t.out.range!==void 0&&e.out.range!==true)return n("CONTENT_SOURCE_UNSUPPORTED")}}function v(e,t){let{content:n,...o}=e,i=t===void 0?o:{...o,content:{bytes:t.body.byteLength,lines:F(t.body),sha256:$(t.body),...t.range===void 0?{}:{range:t.range}}},r=new TextEncoder().encode(`${JSON.stringify(i)}
2
+ `);if(t===void 0)return r;let s=new Uint8Array(r.byteLength+t.body.byteLength);return s.set(r,0),s.set(t.body,r.byteLength),s}function re(e){if(e.body.byteLength>R||F(e.body)>U)return {code:"CONTENT_TOO_LARGE",outcome:"failed"}}function Le(e){try{return {ok:!0,value:JSON.parse(e)}}catch{return {ok:false}}}function x(e){return Object.keys(e).sort().join(",")}function b(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Z(e){return typeof e=="string"&&h.includes(e)}function ee(e,t){return Number.isSafeInteger(e)&&e>=0&&e<=t}function Ue(e){return b(e)&&x(e)==="lineCount,startLine"&&Number.isSafeInteger(e.startLine)&&e.startLine>=1&&Number.isSafeInteger(e.lineCount)&&e.lineCount>=1&&e.lineCount<=U}var Pe=1;async function Me(e,t,n=process.env.CREWX_WORKSPACE_ROOT??process.cwd(),o){return (await se(e,t,n,void 0,true,void 0,o)).response}async function se(e,t,n,o,i=true,r,s){let u=r!==void 0,a=O(t)?t:void 0,m=a?.input,T=a?.state,d=new e({state:O(T)?T:{},workspaceRoot:n,...s===void 0?{}:{context:s}}),C=O(m)?m:{},E=O(T)?T:d.emptyState(),y={};try{let c;if(u){if(a===void 0)throw new A("INPUT_INVALID");let f=te(a,r);if(ne(f))throw new A(f.code,null,{outcome:f.outcome});(({actionId:c,input:C,state:E}=f)),y=f.content;}else {if(!a||Object.keys(a).length!==4||!["schemaVersion","actionId","input","state"].every(f=>Object.hasOwn(a,f))||a.schemaVersion!==Pe||typeof a.actionId!="string"||!O(m)||!O(T))throw new A("INPUT_INVALID");c=a.actionId,C=m,E=T;}d=new e({state:E,workspaceRoot:n,...s===void 0?{}:{context:s}}),await d.validate(c,C,E);let l=D(e).find(({options:f})=>f.name===c);if(!l)throw new A("INPUT_INVALID");let g=d[l.methodName];if(typeof g!="function")throw new A("EXECUTION_FAILED");let p=oe(l.options.content,y);if(p)throw new A(p.code,null,{outcome:p.outcome});let k=Object.freeze({...y.in===void 0?{}:{in:Object.freeze({text:y.in.text})},...y.out===void 0?{}:{out:Object.freeze(y.out.range===void 0?{}:{range:Object.freeze({...y.out.range})})}}),I=()=>g.call(d,C,k),S=i?await Je(I):await I();if(S!==void 0&&!O(S))throw new A("EXECUTION_FAILED");let _;if(y.out!==void 0){if(_=d.producedContent,_===void 0)throw new A("EXECUTION_FAILED","content.out was requested but setContent was never called");let f=re(_);if(f)throw new A(f.code,null,{outcome:f.outcome})}else if(d.didSetContent)throw new A("EXECUTION_FAILED","setContent was called but the request asked for no content.out");return {response:{...d.didSetState?{state:d.state}:{},...S===void 0?{}:{result:S}},..._===void 0?{}:{answer:_}}}catch(c){let l,g=c,p=c instanceof A?c:void 0;if(p)l={code:p.code,detail:p.detail,outcome:p.outcome};else try{l=d.mapError(c);}catch(X){l={code:"EXECUTION_FAILED",detail:null},g=X;}let k=qe(l?.code),I=k?l.code:"EXECUTION_FAILED",S=typeof l?.detail=="string"?l.detail:null,_=k?B(l.outcome):"failed",f;try{f=d.errorState(I,S,{input:C,state:E});}catch(X){g=new AggregateError([g,X],"App error handling failed"),f=d.emptyState();}return o?.(I,g,{outcome:_,detail:S,expected:p!==void 0&&g===p}),{response:{outcome:_,errorCode:I,state:O(f)?f:d.emptyState()}}}}async function ve(e,t={}){let n=t.output??process.stdout,o,i;if(t.preloadedInput!==void 0)o=t.preloadedInput.value,i=t.preloadedInput.body;else {let d=M(t.inputFd??0);d.kind==="v1"?o=d.value:d.kind==="v2"&&(o=d.header,i=d.body);}let r=i!==void 0,s=t.context??K(),u=false,a=(d,C,E)=>{u=true,t.onFailure?.(d,C,E);},m;try{m=await se(e,o,process.env.CREWX_WORKSPACE_ROOT??process.cwd(),a,t.consoleManaged!==!0,i,s);}catch(d){a("EXECUTION_FAILED",d),m={response:ie(t.emptyState)};}Xe(m.response)&&!u&&a(m.response.errorCode,void 0,{outcome:m.response.outcome,detail:null,expected:false});let T;try{let d=(t.sanitize??ae)(m.response);T=r?v(d,m.answer):`${JSON.stringify(d)}
3
+ `;}catch(d){a("EXECUTION_FAILED",d);let C=ie(t.emptyState);try{let E=(t.sanitize??ae)(C);T=r?v(E):`${JSON.stringify(E)}
4
+ `;}catch(E){a("EXECUTION_FAILED",E),T=r?v(C):`${JSON.stringify(C)}
5
+ `;}}n.write(T);}async function Je(e){let t=["log","info","debug"],n=new Map;for(let o of t)n.set(o,console[o]),console[o]=(...i)=>process.stderr.write(`${util.format(...i)}
6
+ `);try{return await e()}finally{for(let o of t)console[o]=n.get(o);}}function ie(e={}){return {outcome:"failed",errorCode:"EXECUTION_FAILED",state:{...e,error:{code:"EXECUTION_FAILED",detail:null}}}}function Xe(e){return (e.outcome==="failed"||e.outcome==="rejected")&&typeof e.errorCode=="string"}function qe(e){return typeof e=="string"&&/^[A-Z][A-Z0-9_]{0,127}$/u.test(e)}function ae(e){return e}var z={depth:null,maxArrayLength:null,maxStringLength:null},W=class extends stream.Writable{#e="buffer";#t=[];_write(t,n,o){if(this.#e==="buffer"){this.#t.push(typeof t=="string"?t:Uint8Array.from(t)),o();return}if(this.#e==="discard"){o();return}process.stderr.write(t,o);}flushToStderr(){this.#e="stderr";for(let t of this.#t)process.stderr.write(t);this.#t=[];}discard(){this.#e="discard",this.#t=[];}};async function $e(e,t={}){let n=process.stdout,o=n.write.bind(n),i=new W,r=new console$1.Console({stdout:i,stderr:i,inspectOptions:{...z}});globalThis.console=r;let s=false,u="-",a="-",m,T=false,d,C;try{let c=Ve(t.inputFd??0);u=We(c.value),a=J(process.env.CREWX_APP_REQUEST_ID),m=new Date().toISOString();try{d=await e();}catch(p){T=!0,C=p;}let l=d?.default;if(!T&&l?.devtools?.log===!0?(Object.assign(util.inspect.defaultOptions,z),E(m),i.flushToStderr()):i.discard(),T){y("EXECUTION_FAILED",C),V(o,t,y);return}try{if(typeof d?.runSkillApp!="function")throw new TypeError("App module does not export runSkillApp");let p={sanitize:t.sanitize,emptyState:t.emptyState??ze(l),preloadedInput:c.body===void 0?{value:c.value}:{value:c.value,body:c.body},onFailure:y,consoleManaged:!0,output:{write:o}};await d.runSkillApp(l,p);}catch(p){y("EXECUTION_FAILED",p),V(o,t,y);}}catch(c){y("EXECUTION_FAILED",c),V(o,t,y);}finally{process.exitCode=0;}function E(c){s||(process.stderr.write(`[crewx-app] ${c??new Date().toISOString()} ${J(u)} req=${a}
7
+ `),s=true);}function y(c,l,g){E();let p=g?.expected===true&&g.detail?` ${J(g.detail)}`:"";process.stderr.write(`[crewx-app] ${g?.outcome??"failed"} ${J(c)}${p}
8
+ `),l!==void 0&&g?.expected!==true&&process.stderr.write(`${util.inspect(l,z)}
9
+ `);}}function ze(e){if(typeof e=="function")try{let n=new e({workspaceRoot:process.cwd()}).emptyState();return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:void 0}catch{return}}function Ve(e){let t=M(e);return t.kind==="v1"?{value:t.value}:t.kind==="v2"?{value:t.header,body:t.body}:{value:void 0}}function We(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.actionId=="string"?e.actionId:"-"}function J(e){return typeof e!="string"||e.length===0?"-":e.replace(/[\u0000-\u001f\u007f\u2028\u2029]/gu,"_")}function V(e,t,n){let o={code:"EXECUTION_FAILED",detail:null},r={outcome:"failed",errorCode:"EXECUTION_FAILED",state:t.emptyState!==null&&typeof t.emptyState=="object"&&!Array.isArray(t.emptyState)?{...t.emptyState,error:o}:{error:o}},s=r;try{s=(t.sanitize??Ye)(r);}catch(u){n("EXECUTION_FAILED",u);}e(`${JSON.stringify(s)}
10
+ `);}function Ye(e){return e}exports.APP_TOOLS_FILE=ge;exports.APP_TOOLS_SCHEMA_VERSION=Ae;exports.APP_TOOL_ENTRY=Ce;exports.AppError=A;exports.CrewXApp=q;exports.SKILL_BACKEND_ENV_NAMES=Q;exports.Tool=ce;exports.executeAppRequest=Me;exports.generateManifest=le;exports.generateToolDeclarations=H;exports.getToolDeclarations=D;exports.isSkillBackendEnv=Oe;exports.readAppContext=K;exports.runAppEntry=$e;exports.runSkillApp=ve;
@@ -0,0 +1,9 @@
1
+ export { UI_CONTENT_MEDIA_TYPES } from './content-media-types.js';
2
+ export type { UiContentMediaType } from './content-media-types.js';
3
+ export declare const SKILL_BACKEND_CONTENT_SCHEMA_VERSION: 2;
4
+ export declare const SKILL_BACKEND_MAX_INPUT_BYTES = 2097152;
5
+ export declare const SKILL_BACKEND_MAX_OUTPUT_BYTES = 2097152;
6
+ export declare const UI_CONTENT_MAX_BYTES: number;
7
+ export declare const UI_CONTENT_MAX_LINES = 20000;
8
+ export declare function sha256Content(bytes: Uint8Array): string;
9
+ export declare function countContentLines(bytes: Uint8Array): number;
@@ -0,0 +1,21 @@
1
+ import { type AppContext, type AppFailureOutcome, type CrewXAppConstructor, type JsonObject } from './app.js';
2
+ export interface AppFailureInfo {
3
+ readonly outcome: AppFailureOutcome;
4
+ readonly detail: string | null;
5
+ readonly expected: boolean;
6
+ }
7
+ export interface RunSkillAppOptions {
8
+ readonly sanitize?: (value: unknown) => unknown;
9
+ readonly inputFd?: number;
10
+ readonly output?: Pick<NodeJS.WriteStream, 'write'>;
11
+ readonly emptyState?: JsonObject;
12
+ readonly preloadedInput?: {
13
+ readonly value: unknown;
14
+ readonly body?: Uint8Array;
15
+ };
16
+ readonly onFailure?: (errorCode: string, error?: unknown, info?: AppFailureInfo) => void;
17
+ readonly consoleManaged?: boolean;
18
+ readonly context?: AppContext;
19
+ }
20
+ export declare function executeAppRequest(appClass: CrewXAppConstructor, rawRequest: unknown, workspaceRoot?: string, context?: AppContext): Promise<JsonObject>;
21
+ export declare function runSkillApp(appClass: CrewXAppConstructor, options?: RunSkillAppOptions): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare const APP_TOOLS_FILE = "dist/tools.json";
2
+ export declare const APP_TOOLS_SCHEMA_VERSION: 1;
3
+ export declare const APP_TOOL_ENTRY = "dist/main.mjs";
@@ -43,11 +43,15 @@ export interface ThreadMessage {
43
43
  content: string;
44
44
  timestamp: string;
45
45
  metadata: Record<string, unknown> | null;
46
+ contentTruncated?: boolean;
47
+ originalTokens?: number;
48
+ includedTokens?: number;
46
49
  }
47
50
  export interface ContextBuildParams {
48
51
  maxTokens: number;
49
52
  hotzoneRatio: number;
50
53
  warmzoneRatio: number;
54
+ minGuaranteedPairs?: number;
51
55
  }
52
56
  export interface ContextBuildResponse {
53
57
  hot: ThreadMessage[];
@@ -0,0 +1,18 @@
1
+ export declare function normalizeClaudeMode(mode: string): string;
2
+ export interface AgentOptionsLike {
3
+ query?: unknown;
4
+ execute?: unknown;
5
+ [key: string]: unknown;
6
+ }
7
+ export interface CanonicalizeAgentOptionsInput {
8
+ provider?: string;
9
+ model?: string;
10
+ options: unknown;
11
+ }
12
+ export interface CanonicalizeAgentOptionsResult {
13
+ options: unknown;
14
+ changed: boolean;
15
+ removed: string[];
16
+ }
17
+ export declare function normalizeProviderMode(providerId: string, mode: string): string;
18
+ export declare function canonicalizeAgentOptions(input: CanonicalizeAgentOptionsInput): CanonicalizeAgentOptionsResult;
@@ -0,0 +1,11 @@
1
+ import { type ProviderExecutionOptions } from './models.generated.js';
2
+ export type DefaultAgentStage = {
3
+ model: string;
4
+ query: Pick<ProviderExecutionOptions, 'mode' | 'effort'>;
5
+ execute: Pick<ProviderExecutionOptions, 'mode' | 'effort'>;
6
+ };
7
+ export interface DefaultAgentProfile {
8
+ planner: DefaultAgentStage;
9
+ worker: DefaultAgentStage;
10
+ }
11
+ export declare function getDefaultAgentProfile(provider: string): DefaultAgentProfile | undefined;
@@ -0,0 +1,33 @@
1
+ import { mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'fs';
2
+ import type { LocalServerSettings } from '../local-server/types';
3
+ export interface GlobalSettings {
4
+ cron?: {
5
+ auto_start?: boolean;
6
+ [key: string]: unknown;
7
+ };
8
+ ai_server?: LocalServerSettings;
9
+ [key: string]: unknown;
10
+ }
11
+ export type DeepPartial<T> = T extends object ? {
12
+ [K in keyof T]?: DeepPartial<T[K]>;
13
+ } : T;
14
+ export interface GlobalSettingsStore {
15
+ read(): GlobalSettings;
16
+ update(patch: DeepPartial<GlobalSettings>): GlobalSettings;
17
+ set(key: string, value: unknown): GlobalSettings;
18
+ remove(key: string): GlobalSettings;
19
+ readonly path: string;
20
+ }
21
+ interface GlobalSettingsFileSystem {
22
+ mkdirSync: typeof mkdirSync;
23
+ readFileSync: typeof readFileSync;
24
+ renameSync: typeof renameSync;
25
+ statSync: typeof statSync;
26
+ writeFileSync: typeof writeFileSync;
27
+ }
28
+ export interface CreateGlobalSettingsStoreOptions {
29
+ filePath?: string;
30
+ fileSystem?: Partial<GlobalSettingsFileSystem>;
31
+ }
32
+ export declare function createGlobalSettingsStore(opts?: CreateGlobalSettingsStoreOptions): GlobalSettingsStore;
33
+ export {};
@@ -0,0 +1,6 @@
1
+ export type GrokSandbox = 'workspace' | 'read-only' | 'off';
2
+ export interface GrokNativeOptions {
3
+ alwaysApprove?: boolean;
4
+ sandbox?: GrokSandbox;
5
+ }
6
+ export declare function migrateGrokLegacyMode<T>(slot: T): T;
@@ -0,0 +1,31 @@
1
+ export declare const CLAUDE_OPUS_4_8_BASE_MODEL_ID: "claude-opus-4-8";
2
+ export declare const CLAUDE_OPUS_4_8_LEGACY_MODEL_ID: "claude-opus-4-8[1m]";
3
+ export declare const CLAUDE_MODEL_COMPATIBILITY_PAIRS: readonly [{
4
+ readonly baseModelId: "claude-opus-4-8";
5
+ readonly catalogModelId: "claude-opus-4-8[1m]";
6
+ }, {
7
+ readonly baseModelId: "claude-opus-4-7";
8
+ readonly catalogModelId: "claude-opus-4-7[1m]";
9
+ }, {
10
+ readonly baseModelId: "claude-opus-4-6";
11
+ readonly catalogModelId: "claude-opus-4-6[1m]";
12
+ }, {
13
+ readonly baseModelId: "claude-sonnet-4-6";
14
+ readonly catalogModelId: "claude-sonnet-4-6[1m]";
15
+ }];
16
+ export declare function normalizeAntigravityMode(mode: string): string;
17
+ export declare function resolveCatalogModelId(model: string): string;
18
+ export declare const ANTIGRAVITY_MODEL_COMPATIBILITY: ReadonlyArray<{
19
+ legacyId: string;
20
+ model: string;
21
+ effort?: string;
22
+ }>;
23
+ export type AntigravityResolvedModel = {
24
+ model?: string;
25
+ effort?: string;
26
+ };
27
+ export declare function resolveAntigravityModel(model?: string): AntigravityResolvedModel;
28
+ export declare function resolveProviderCatalogModel(providerId: string, model?: string): {
29
+ model?: string;
30
+ effort?: string;
31
+ };
@@ -1,7 +1,20 @@
1
+ import type { ModelApiPricing } from './pricing.types.js';
2
+ export declare const MODEL_TIERS: readonly ["flagship", "balanced", "speed"];
3
+ export type ModelTier = (typeof MODEL_TIERS)[number];
4
+ export declare const EFFORT_LEVELS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max", "ultra"];
5
+ export type EffortLevel = (typeof EFFORT_LEVELS)[number];
6
+ export type KnownEffortLevel = EffortLevel;
7
+ export declare const PROVIDER_ARGV_EFFORTS: Record<string, readonly string[]>;
8
+ export declare const MODEL_CATALOG_VERSION = 33;
9
+ export declare const MODEL_CATALOG_UPDATED = "2026-10-08T00:00:00Z";
1
10
  export interface ModelCatalogEntry {
2
11
  id: string;
3
12
  name: string;
4
13
  description?: string;
14
+ contextWindowTokens?: number;
15
+ tier?: ModelTier;
16
+ recommended?: boolean;
17
+ apiPricing?: ModelApiPricing;
5
18
  }
6
19
  export interface ProviderModeEntry {
7
20
  id: string;
@@ -12,11 +25,35 @@ export interface ProviderModelOverride {
12
25
  effort?: string[];
13
26
  defaultEffort?: string;
14
27
  }
28
+ export type ProviderOptionSpec = {
29
+ key: string;
30
+ type: 'boolean';
31
+ } | {
32
+ key: string;
33
+ type: 'enum';
34
+ values: string[];
35
+ };
36
+ export interface ProviderExecutionOptions {
37
+ mode: string;
38
+ effort: string;
39
+ providerOptions?: Record<string, unknown>;
40
+ }
41
+ export interface ProviderDefaultProfile {
42
+ model: string;
43
+ query: ProviderExecutionOptions;
44
+ execute: ProviderExecutionOptions;
45
+ }
46
+ export interface ProviderDefaults {
47
+ version: number;
48
+ providers: Record<string, ProviderDefaultProfile>;
49
+ }
15
50
  export interface ProviderCatalogEntry {
16
51
  models: ModelCatalogEntry[];
17
52
  modes: ProviderModeEntry[];
18
53
  effort: string[];
19
54
  modelOverrides: Record<string, ProviderModelOverride>;
55
+ providerOptions?: ProviderOptionSpec[];
20
56
  }
21
57
  export declare const PROVIDER_CATALOGS: Record<string, ProviderCatalogEntry>;
58
+ export declare const PROVIDER_DEFAULTS: ProviderDefaults;
22
59
  export declare const PROVIDER_MODELS: Record<string, ModelCatalogEntry[]>;
@@ -1,3 +1,4 @@
1
+ export declare const MIN_REMOTE_CATALOG_VERSION = 20;
1
2
  export declare function initModelsRemote(opts?: {
2
3
  endpoint?: string;
3
4
  ttlMs?: number;
@@ -3,6 +3,7 @@ export interface OverdriveProfile {
3
3
  model?: string;
4
4
  mode?: string;
5
5
  effort?: string;
6
+ providerOptions?: Record<string, unknown>;
6
7
  }
7
8
  export type OverdriveSignalInput = boolean | {
8
9
  mode?: 'count' | 'latch';
@@ -20,5 +21,11 @@ export interface OverdriveResolution {
20
21
  mode?: string;
21
22
  effort?: string;
22
23
  crossProvider: boolean;
24
+ providerOptions?: Record<string, unknown>;
23
25
  }
24
26
  export declare function resolveOverdrive(agentOptions: unknown, mode: 'query' | 'execute', baseProvider: string, signal: OverdriveSignal): OverdriveResolution;
27
+ export interface ModeOverrideResolution {
28
+ provider?: string;
29
+ model?: string;
30
+ }
31
+ export declare function resolveModeOverride(agentOptions: unknown, mode: 'query' | 'execute'): ModeOverrideResolution;
@@ -1,9 +1,12 @@
1
- import type { ModelPricing } from './pricing.types.js';
2
- export type { ModelPricing } from './pricing.types.js';
3
- export { MODEL_PRICING } from './pricing.generated.js';
1
+ import type { ModelApiPricing, ModelPricing } from './pricing.types.js';
2
+ export type { ModelApiPricing, ModelPricing } from './pricing.types.js';
3
+ export { MODEL_PRICING, UNPUBLISHED_MODEL_IDS } from './pricing.generated.js';
4
4
  export declare function setPricingOverride(models: Record<string, ModelPricing>): void;
5
5
  export declare function clearPricingOverride(): void;
6
+ export declare function setApiPricingOverride(models: Record<string, ModelApiPricing>): void;
7
+ export declare function clearApiPricingOverride(): void;
6
8
  export declare function normalizeModel(model: string): string;
9
+ export declare function lookupApiPricing(model: string | null | undefined): ModelApiPricing | undefined;
7
10
  export declare function getPricing(model: string | null | undefined): ModelPricing;
8
11
  export declare function calculateCost(inputTokens: number, outputTokens: number, model: string | null | undefined, cachedInputTokens?: number, _date?: Date): number;
9
12
  export declare function resolveCost(costUsd: number | undefined, inputTokens: number | undefined, outputTokens: number | undefined, cachedInputTokens: number | undefined, model: string | null | undefined, date?: Date): number;
@@ -1,2 +1,6 @@
1
1
  import type { ModelPricing } from './pricing.types.js';
2
2
  export declare const MODEL_PRICING: Record<string, ModelPricing>;
3
+ export declare const MODEL_PRICING_VERSION = 33;
4
+ export declare const MODEL_PRICING_UPDATED = "2026-10-08T00:00:00Z";
5
+ export declare const UNPUBLISHED_MODEL_IDS: ReadonlySet<string>;
6
+ export declare const CATALOG_MODEL_IDS: ReadonlySet<string>;
@@ -3,3 +3,7 @@ export interface ModelPricing {
3
3
  cachedInput: number;
4
4
  output: number;
5
5
  }
6
+ export interface ModelApiPricing {
7
+ inputPerMillionTokensUsd: number;
8
+ outputPerMillionTokensUsd: number;
9
+ }
@@ -1,5 +1,9 @@
1
1
  export interface TimeoutConfig {
2
2
  queryMs: number;
3
3
  executeMs: number;
4
+ idleMs: number;
4
5
  }
6
+ export declare const DEFAULT_IDLE_MS: number;
7
+ export declare const DEFAULT_RESUME_TIMEOUT_MS = 60000;
8
+ export declare function parseIdleEnvOverride(env?: NodeJS.ProcessEnv): number | undefined;
5
9
  export declare function getProviderTimeoutConfig(env?: NodeJS.ProcessEnv): TimeoutConfig;
@@ -0,0 +1,19 @@
1
+ import type { CrewxProjectConfig } from '../types';
2
+ export declare const DEFAULT_WI_BOARD_ID = "default";
3
+ export declare const ARCHIVE_WI_BOARD_ID = "archive";
4
+ export declare const DEFAULT_WI_WORKFLOW_ID = "wi-default-flow";
5
+ export declare const WI_PLAN_WORKFLOW_ID = "wi-plan-flow";
6
+ export declare const WI_DEFAULT_FLOW_FILENAME = "wi-default-flow.yaml";
7
+ export declare const WI_PLAN_FLOW_FILENAME = "wi-plan-flow.yaml";
8
+ export declare const WI_BOARD_ID_PATTERN: RegExp;
9
+ export declare function isReservedWiBoardId(id: string): boolean;
10
+ export interface ResolvedWiBoard {
11
+ id: string;
12
+ name: string;
13
+ workflowId: string;
14
+ description?: string;
15
+ goalId?: string;
16
+ system: boolean;
17
+ readOnly: boolean;
18
+ }
19
+ export declare function resolveWiBoards(config: CrewxProjectConfig | undefined): ResolvedWiBoard[];
@@ -0,0 +1,63 @@
1
+ import type { ConversationHighlight, ConversationThreadState, SemanticContinuityContext, TemplateMessage } from '../conversation/types.js';
2
+ export declare const DEFAULT_PROTECTED_TURN_COUNT = 5;
3
+ export declare const DEFAULT_HIGHLIGHT_BUDGET_PERCENT = 5;
4
+ export declare const MAX_ACTIVE_HIGHLIGHTS = 12;
5
+ export declare const MAX_ACTIVE_HIGHLIGHT_CHARS = 2000;
6
+ export declare const MAX_THREAD_TITLE_CHARS = 200;
7
+ export declare const MAX_THREAD_STATE_VALUE_CHARS = 64;
8
+ export interface ConversationTurn {
9
+ taskId?: string;
10
+ messages: TemplateMessage[];
11
+ ordinal: number;
12
+ }
13
+ export interface GroupedConversationTurns {
14
+ turns: ConversationTurn[];
15
+ unpairedMessages: TemplateMessage[];
16
+ droppedMessages: TemplateMessage[];
17
+ }
18
+ export interface ConversationTurnSelection {
19
+ includedTurns: ConversationTurn[];
20
+ omittedTurns: ConversationTurn[];
21
+ protectedTurns: ConversationTurn[];
22
+ tokenCount: number;
23
+ protectedTokenCount: number;
24
+ overBudget: boolean;
25
+ }
26
+ export interface SelectConversationTurnsOptions {
27
+ turns: readonly ConversationTurn[];
28
+ maxTokenCount: number;
29
+ countTokens: (text: string) => number;
30
+ protectedTurnCount?: number;
31
+ materializeTurn?: (turn: ConversationTurn) => string;
32
+ }
33
+ export interface ConversationHighlightSelection {
34
+ includedHighlights: ConversationHighlight[];
35
+ omittedHighlights: ConversationHighlight[];
36
+ truncatedHighlights: number;
37
+ representedTaskIds: string[];
38
+ unrepresentedTaskIds: string[];
39
+ tokenCount: number;
40
+ budgetTokens: number;
41
+ }
42
+ export interface SelectConversationHighlightsOptions {
43
+ highlights: readonly ConversationHighlight[];
44
+ omittedTaskIds: readonly string[];
45
+ taskOrder: readonly string[];
46
+ maxTokenCount: number;
47
+ countTokens: (text: string) => number;
48
+ applySafetyCap?: boolean;
49
+ }
50
+ export declare function getConversationMessageTaskId(message: TemplateMessage): string | undefined;
51
+ export declare function groupConversationTurns(messages: readonly TemplateMessage[]): GroupedConversationTurns;
52
+ export declare function withoutDroppedAppCards(messages: readonly TemplateMessage[]): TemplateMessage[];
53
+ export declare function materializeConversationTurn(turn: ConversationTurn, includeActivityLog?: boolean): string;
54
+ export declare function selectConversationTurns(options: SelectConversationTurnsOptions): ConversationTurnSelection;
55
+ export declare function buildThreadStateContext(state: ConversationThreadState | undefined): ConversationThreadState | undefined;
56
+ export declare function selectConversationHighlights(options: SelectConversationHighlightsOptions): ConversationHighlightSelection;
57
+ export interface BuildSemanticContinuityContextOptions {
58
+ highlights: readonly ConversationHighlight[];
59
+ omittedTaskIds: readonly string[];
60
+ representedTaskIds: readonly string[];
61
+ applySafetyCap?: boolean;
62
+ }
63
+ export declare function buildSemanticContinuityContext(options: BuildSemanticContinuityContextOptions): SemanticContinuityContext;
@@ -0,0 +1,142 @@
1
+ export declare const DEFAULT_INPUT_BUDGET_PERCENT = 60;
2
+ export declare const MIN_INPUT_BUDGET_PERCENT = 30;
3
+ export declare const MAX_INPUT_BUDGET_PERCENT = 80;
4
+ export declare const INPUT_BUDGET_TOKENIZER_ENCODING = "o200k_base";
5
+ export declare const FRESH_PROVIDER_INITIAL_INPUT_SEPARATOR = "\n\n---\n\n";
6
+ export declare const FRESH_PROVIDER_INITIAL_INPUT_FRAMING = "system_prompt\\n\\n---\\n\\nmessage";
7
+ export declare const RESUME_PROVIDER_INITIAL_INPUT_FRAMING = "message";
8
+ export type InputBudgetUnresolvedReason = 'invalid_input_budget_percent' | 'provider_catalog_unavailable' | 'model_not_found' | 'context_window_tokens_unavailable';
9
+ export type TokenizerFallbackReason = 'vendor_tokenizer_unavailable';
10
+ export interface ResolveInputBudgetOptions {
11
+ provider: string;
12
+ model: string;
13
+ inputBudgetPercent?: number;
14
+ }
15
+ export interface TokenizerOptions {
16
+ provider?: string;
17
+ model?: string;
18
+ }
19
+ export interface TokenizerMetadata {
20
+ provider: string;
21
+ model: string;
22
+ encoding: typeof INPUT_BUDGET_TOKENIZER_ENCODING;
23
+ exact: boolean;
24
+ fallbackReason?: TokenizerFallbackReason;
25
+ }
26
+ export interface ResolvedInputBudget {
27
+ resolved: true;
28
+ requestedProvider: string;
29
+ provider: string;
30
+ model: string;
31
+ contextWindowTokens: number;
32
+ inputBudgetPercent: number;
33
+ inputBudgetTokens: number;
34
+ tokenizer: TokenizerMetadata;
35
+ }
36
+ export interface UnresolvedInputBudget {
37
+ resolved: false;
38
+ requestedProvider: string;
39
+ provider: string;
40
+ model: string;
41
+ reason: InputBudgetUnresolvedReason;
42
+ inputBudgetPercent?: number;
43
+ tokenizer: TokenizerMetadata;
44
+ }
45
+ export type ResolveInputBudgetResult = ResolvedInputBudget | UnresolvedInputBudget;
46
+ export type ContextBudgetPhase = 'fresh' | 'resume';
47
+ export type ProviderInitialInputFraming = typeof FRESH_PROVIDER_INITIAL_INPUT_FRAMING | typeof RESUME_PROVIDER_INITIAL_INPUT_FRAMING;
48
+ export interface ContextBudgetLayoutCapability {
49
+ layoutId: string;
50
+ supportsSemanticContinuity: boolean;
51
+ slot: string | null;
52
+ requiredForOmittedTurns: boolean;
53
+ warning?: string;
54
+ }
55
+ export interface ContextBudgetActivityDegradation {
56
+ taskId: string;
57
+ taskDistance: number;
58
+ action: 'reduced' | 'omitted';
59
+ }
60
+ export type ContextBudgetAssemblyErrorCode = 'INPUT_BUDGET_EXCEEDED' | 'CONTINUITY_SLOT_REQUIRED';
61
+ export declare class ContextBudgetLayoutError extends Error {
62
+ readonly layoutId: string;
63
+ readonly omittedTurnCount: number;
64
+ readonly code: "CONTINUITY_SLOT_REQUIRED";
65
+ constructor(message: string, layoutId: string, omittedTurnCount: number);
66
+ }
67
+ export interface ContextBudgetManifest {
68
+ runningInstructionAppsOmitted?: number;
69
+ phase: ContextBudgetPhase;
70
+ initialInputFraming: ProviderInitialInputFraming;
71
+ resolved: boolean;
72
+ reason?: InputBudgetUnresolvedReason;
73
+ requestedProvider: string;
74
+ requestedModel: string | null;
75
+ effectiveProvider: string;
76
+ effectiveModel: string | null;
77
+ contextWindowTokens: number | null;
78
+ inputBudgetPercent: number | null;
79
+ inputBudgetTokens: number | null;
80
+ tokenizer: TokenizerMetadata;
81
+ initialTokenCount: number | null;
82
+ finalTokenCount: number | null;
83
+ activityLogTokenCount: number | null;
84
+ activityIncludedEntries: number | null;
85
+ activityOmittedEntries: number | null;
86
+ activityRemovedForBudget: boolean;
87
+ activityNewestTaskTokenCap: number | null;
88
+ historyOriginalMessages: number;
89
+ historyIncludedMessages: number;
90
+ historyOmittedMessages: number;
91
+ turnOriginal: number;
92
+ turnIncluded: number;
93
+ turnOmitted: number;
94
+ highlightOriginal: number;
95
+ highlightIncluded: number;
96
+ highlightOmitted: number;
97
+ highlightTruncated: number;
98
+ representedOmittedTurns: number;
99
+ unrepresentedOmittedTurns: number;
100
+ activityDegraded: boolean;
101
+ activityIncludedTasks: number;
102
+ activityOmittedTasks: number;
103
+ activityDegradation: ContextBudgetActivityDegradation[];
104
+ highlightLookupFailed: boolean;
105
+ layoutCapability: ContextBudgetLayoutCapability;
106
+ overBudget: boolean;
107
+ overdriveProviderSuppressed?: boolean;
108
+ }
109
+ export interface TokenCountResult {
110
+ tokenCount: number;
111
+ tokenizer: TokenizerMetadata;
112
+ }
113
+ export interface TokenCounter {
114
+ metadata: TokenizerMetadata;
115
+ countTokens(text: string): number;
116
+ }
117
+ export interface FreshProviderInitialInput {
118
+ systemPrompt?: string | null;
119
+ message: string;
120
+ }
121
+ type PieceCacheEventType = 'hit' | 'miss' | 'evict' | 'full_encode';
122
+ interface PieceCacheEvent {
123
+ type: PieceCacheEventType;
124
+ piece?: string;
125
+ tokenCount?: number;
126
+ reason?: 'special_token';
127
+ }
128
+ type PieceCacheObserver = (event: PieceCacheEvent) => void;
129
+ interface TokenCounterInternalOptions {
130
+ pieceCacheMaxEntries?: number;
131
+ observePieceCache?: PieceCacheObserver;
132
+ }
133
+ export declare function normalizeInputBudgetProvider(provider: string): string;
134
+ export declare function resolveTokenizerMetadata(options?: TokenizerOptions): TokenizerMetadata;
135
+ export declare function countTokens(text: string, options?: TokenizerOptions): TokenCountResult;
136
+ export declare function renderFreshProviderInitialInput(input: FreshProviderInitialInput): string;
137
+ export declare function countFreshProviderInitialInput(input: FreshProviderInitialInput, count: (text: string) => number): number;
138
+ export declare function createTokenCounter(options?: TokenizerOptions): TokenCounter;
139
+ export declare function __createTokenCounterForTest(options?: TokenizerOptions, internalOptions?: TokenCounterInternalOptions): TokenCounter;
140
+ export declare function resolveInputBudget(options: ResolveInputBudgetOptions): ResolveInputBudgetResult;
141
+ export { 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, withoutDroppedAppCards, } from './continuity.js';
142
+ export type { BuildSemanticContinuityContextOptions, ConversationHighlightSelection, ConversationTurn, ConversationTurnSelection, GroupedConversationTurns, SelectConversationHighlightsOptions, SelectConversationTurnsOptions, } from './continuity.js';
@@ -1,3 +1,3 @@
1
1
  export * from './types.js';
2
2
  export { toTaskReader } from './to-task-reader.js';
3
- export { toTemplateMessages } from './to-template-messages.js';
3
+ export { LEGACY_UI_CARD_SAFE_SUMMARY, sanitizeLegacyUiCardText, sanitizeTemplateMessages, toTemplateMessages, } from './to-template-messages.js';
@@ -1,15 +1,18 @@
1
- import type { ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, Platform } from './types';
1
+ import type { ConversationHighlight, ConversationThread, ConversationThreadState, FetchHistoryOptions, IConversationHistoryProvider, Platform, ThreadCreationOptions } from './types';
2
2
  export declare class SqliteConversationProvider implements IConversationHistoryProvider {
3
3
  private readonly dbPath;
4
4
  constructor(dbPath?: string);
5
5
  private getThreadRepo;
6
+ private getThreadHistoryRepo;
6
7
  updateThread(id: string, patch: {
7
8
  title?: string;
8
9
  }): void;
9
- ensureThread(threadId: string, platform: Platform, workspaceId?: string): Promise<{
10
+ ensureThread(threadId: string, platform: Platform, workspaceId?: string, creator?: ThreadCreationOptions): Promise<{
10
11
  created: boolean;
11
12
  }>;
12
13
  fetchHistory(threadId: string, options?: FetchHistoryOptions): Promise<ConversationThread>;
14
+ fetchThreadState(threadId: string): Promise<ConversationThreadState | undefined>;
15
+ fetchHighlights(threadId: string): Promise<ConversationHighlight[] | undefined>;
13
16
  saveUserMessage(threadId: string, text: string, _userId?: string, _metadata?: Record<string, unknown>): Promise<{
14
17
  id: string;
15
18
  firstMessage: boolean;
@@ -18,6 +21,6 @@ export declare class SqliteConversationProvider implements IConversationHistoryP
18
21
  id: string;
19
22
  }>;
20
23
  close(): void;
21
- private normalizeStatus;
24
+ private readActiveHighlights;
22
25
  private rowsToMessages;
23
26
  }
@@ -1,2 +1,11 @@
1
1
  import type { ConversationThread, TemplateMessage } from './types';
2
+ import type { UiAgentContextProjection } from '../ui-instance/types.js';
3
+ import type { McpAppStateDescriptor } from '../mcp-app/types.js';
4
+ export declare const LEGACY_UI_CARD_SAFE_SUMMARY = "[workflow card omitted from AI context]";
5
+ export declare const V2_UI_INSTANCE_SAFE_SUMMARY = "[workflow UI instance omitted from AI context]";
6
+ export declare function sanitizeUiInstanceReferenceText(text: string): string;
7
+ export declare function sanitizeLegacyUiCardText(text: string): string;
8
+ export declare function sanitizeTemplateMessages(messages: readonly TemplateMessage[]): TemplateMessage[];
9
+ export declare function appendUiProjections(messages: readonly TemplateMessage[], projections: readonly UiAgentContextProjection[] | undefined): TemplateMessage[];
10
+ export declare function appendMcpAppProjections(messages: readonly TemplateMessage[], descriptors: readonly McpAppStateDescriptor[] | undefined): TemplateMessage[];
2
11
  export declare function toTemplateMessages(thread: ConversationThread): TemplateMessage[];