@crewx/sdk 0.9.0-rc.20 → 0.9.0-rc.201

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 (411) 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/agent-interceptor/chain.d.ts +25 -0
  14. package/dist/agent-interceptor/index.d.ts +6 -0
  15. package/dist/agent-interceptor/model-runner.d.ts +19 -0
  16. package/dist/agent-interceptor/program-runner.d.ts +13 -0
  17. package/dist/agent-interceptor/protocol.d.ts +68 -0
  18. package/dist/agent-interceptor/run-stop.d.ts +3 -0
  19. package/dist/agent-interceptor/schema.d.ts +267 -0
  20. package/dist/agent-interceptor/types.d.ts +88 -0
  21. package/dist/app/app-files/args.d.ts +12 -0
  22. package/dist/app/app-files/errors.d.ts +6 -0
  23. package/dist/app/app-files/index.d.ts +35 -0
  24. package/dist/app/app-files/lock.d.ts +26 -0
  25. package/dist/app/app-files/root.d.ts +22 -0
  26. package/dist/app/app-files/store.d.ts +48 -0
  27. package/dist/app/app-files/write.child.d.ts +1 -0
  28. package/dist/app/app.d.ts +168 -0
  29. package/dist/app/backend-env.d.ts +3 -0
  30. package/dist/app/content-media-types.d.ts +2 -0
  31. package/dist/app/context.d.ts +2 -0
  32. package/dist/app/entry.d.ts +9 -0
  33. package/dist/app/frame.d.ts +55 -0
  34. package/dist/app/index.d.ts +20 -0
  35. package/dist/app/index.js +13 -0
  36. package/dist/app/job-bridge.child.d.ts +1 -0
  37. package/dist/app/job-bridge.d.ts +67 -0
  38. package/dist/app/job-bridge.drain.child.d.ts +1 -0
  39. package/dist/app/job-bridge.example.d.ts +11 -0
  40. package/dist/app/job-contract.d.ts +40 -0
  41. package/dist/app/job-wire.d.ts +149 -0
  42. package/dist/app/protocol.d.ts +9 -0
  43. package/dist/app/runtime.d.ts +23 -0
  44. package/dist/app/schedule-contract.d.ts +59 -0
  45. package/dist/app/tool-mode.d.ts +3 -0
  46. package/dist/app-artifact-policy/check.d.ts +2 -0
  47. package/dist/app-artifact-policy/contract.d.ts +54 -0
  48. package/dist/app-artifact-policy/helper.d.ts +15 -0
  49. package/dist/app-artifact-policy/index.d.ts +3 -0
  50. package/dist/app-artifact-policy/index.js +18 -0
  51. package/dist/app-artifact-policy/paths.d.ts +24 -0
  52. package/dist/app-artifact-policy/scan.d.ts +47 -0
  53. package/dist/app-ui/index.d.ts +95 -0
  54. package/dist/app-ui/index.js +1 -0
  55. package/dist/attachment-receive/index.d.ts +76 -0
  56. package/dist/attachment-receive/index.js +2 -0
  57. package/dist/boxing/box.types.d.ts +4 -0
  58. package/dist/config/canonicalize-agent-options.d.ts +2 -0
  59. package/dist/config/default-agent-models.d.ts +11 -0
  60. package/dist/config/global-settings.d.ts +33 -0
  61. package/dist/config/migrate-grok-mode.d.ts +6 -0
  62. package/dist/config/model-compat.d.ts +31 -0
  63. package/dist/config/models.generated.d.ts +38 -0
  64. package/dist/config/models.remote.d.ts +1 -0
  65. package/dist/config/overdrive.d.ts +7 -0
  66. package/dist/config/pricing.d.ts +6 -3
  67. package/dist/config/pricing.generated.d.ts +4 -0
  68. package/dist/config/pricing.types.d.ts +4 -0
  69. package/dist/config/timeout.config.d.ts +4 -0
  70. package/dist/config/wi-boards.d.ts +19 -0
  71. package/dist/context/GoalLoader.d.ts +6 -0
  72. package/dist/context-budget/continuity.d.ts +64 -0
  73. package/dist/context-budget/fixed-slot-shrink.d.ts +97 -0
  74. package/dist/context-budget/index.d.ts +168 -0
  75. package/dist/conversation/index.d.ts +1 -1
  76. package/dist/conversation/sqlite-provider.d.ts +6 -3
  77. package/dist/conversation/to-template-messages.d.ts +9 -0
  78. package/dist/conversation/types.d.ts +86 -1
  79. package/dist/desktop/command-runner.d.ts +4 -0
  80. package/dist/desktop/default-adapters.d.ts +4 -0
  81. package/dist/desktop/global-install.d.ts +19 -0
  82. package/dist/desktop/index.d.ts +3 -0
  83. package/dist/desktop/index.js +3 -0
  84. package/dist/desktop/install.d.ts +5 -0
  85. package/dist/desktop/lnk.d.ts +22 -0
  86. package/dist/desktop/manifest.d.ts +21 -0
  87. package/dist/desktop/types.d.ts +67 -0
  88. package/dist/desktop/version.d.ts +1 -0
  89. package/dist/desktop/windows-paths.d.ts +21 -0
  90. package/dist/desktop/wrapper.d.ts +18 -0
  91. package/dist/esm/account/index.js +2 -0
  92. package/dist/esm/app/index.js +13 -0
  93. package/dist/esm/app-artifact-policy/index.js +18 -0
  94. package/dist/esm/attachment-receive/index.js +2 -0
  95. package/dist/esm/desktop/index.js +3 -0
  96. package/dist/esm/history-snapshot/index.js +16 -0
  97. package/dist/esm/index.js +1362 -224
  98. package/dist/esm/node/index.js +2 -0
  99. package/dist/esm/plugins/index.js +532 -214
  100. package/dist/esm/process/index.js +1 -0
  101. package/dist/esm/publish/index.js +2 -0
  102. package/dist/esm/repository/index.js +792 -207
  103. package/dist/esm/skills/index.js +2 -0
  104. package/dist/esm/testing/index.js +1 -1
  105. package/dist/events/types.d.ts +44 -0
  106. package/dist/facade/Crewx.d.ts +78 -5
  107. package/dist/facade/task-ticket.d.ts +14 -0
  108. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  109. package/dist/highlight/thread-highlighter.d.ts +326 -0
  110. package/dist/history-snapshot/index.d.ts +82 -0
  111. package/dist/history-snapshot/index.js +16 -0
  112. package/dist/index.browser.d.ts +26 -1
  113. package/dist/index.browser.js +6 -2
  114. package/dist/index.d.ts +165 -18
  115. package/dist/index.js +1362 -224
  116. package/dist/internal/console-decoder.d.ts +38 -0
  117. package/dist/internal/windows-spawn.d.ts +10 -0
  118. package/dist/layout/types.d.ts +18 -1
  119. package/dist/lifecycle/process-lease.d.ts +80 -0
  120. package/dist/lifecycle/process-owner.d.ts +20 -0
  121. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  122. package/dist/lifecycle/task-stop.d.ts +112 -0
  123. package/dist/lifecycle/update-admission.d.ts +45 -0
  124. package/dist/local-server/base-url.d.ts +18 -0
  125. package/dist/local-server/index.d.ts +8 -0
  126. package/dist/local-server/opencode.d.ts +8 -0
  127. package/dist/local-server/probe.d.ts +3 -0
  128. package/dist/local-server/runtime.d.ts +26 -0
  129. package/dist/local-server/types.d.ts +43 -0
  130. package/dist/mcp-app/agent-access.d.ts +33 -0
  131. package/dist/mcp-app/app-handoff.d.ts +109 -0
  132. package/dist/mcp-app/app-icon-read.d.ts +7 -0
  133. package/dist/mcp-app/app-job-bridge.d.ts +30 -0
  134. package/dist/mcp-app/app-job-bridge.example.d.ts +36 -0
  135. package/dist/mcp-app/app-job.d.ts +168 -0
  136. package/dist/mcp-app/app-schedule.d.ts +85 -0
  137. package/dist/mcp-app/apps-context.d.ts +32 -0
  138. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  139. package/dist/mcp-app/candidate-registration.d.ts +4 -0
  140. package/dist/mcp-app/card-handler.d.ts +7 -0
  141. package/dist/mcp-app/catalog.d.ts +7 -0
  142. package/dist/mcp-app/content-channel.d.ts +86 -0
  143. package/dist/mcp-app/content-declarations.d.ts +31 -0
  144. package/dist/mcp-app/dev-checks.d.ts +31 -0
  145. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  146. package/dist/mcp-app/discovery.d.ts +164 -0
  147. package/dist/mcp-app/errors.d.ts +7 -0
  148. package/dist/mcp-app/index.d.ts +46 -0
  149. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  150. package/dist/mcp-app/model-context.d.ts +29 -0
  151. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  152. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  153. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  154. package/dist/mcp-app/projection.d.ts +14 -0
  155. package/dist/mcp-app/prompt-cards.d.ts +28 -0
  156. package/dist/mcp-app/registry.d.ts +28 -0
  157. package/dist/mcp-app/skill-backend.d.ts +141 -0
  158. package/dist/mcp-app/state-set.d.ts +9 -0
  159. package/dist/mcp-app/types.d.ts +501 -0
  160. package/dist/mcp-app/view-call.d.ts +7 -0
  161. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  162. package/dist/mcp-app/workspace-app-scan-cache.d.ts +27 -0
  163. package/dist/mcp-app/workspace-snapshot.d.ts +81 -0
  164. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  165. package/dist/migrations/0012_blue_turbo.sql +23 -0
  166. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  167. package/dist/migrations/0014_organic_mongu.sql +73 -0
  168. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  169. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  170. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  171. package/dist/migrations/0018_bored_jackal.sql +33 -0
  172. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  173. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  174. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  175. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  176. package/dist/migrations/0023_red_payback.sql +1 -0
  177. package/dist/migrations/0024_storage_metadata.sql +262 -0
  178. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  179. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  180. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  181. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  182. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  183. package/dist/migrations/0029_nice_rhino.sql +1 -0
  184. package/dist/migrations/0031_petite_arclight.sql +6 -0
  185. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  186. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  187. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  188. package/dist/migrations/0035_request_log_daily.sql +11 -0
  189. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  190. package/dist/migrations/0037_ui_instance_agent_open_request.sql +1 -0
  191. package/dist/migrations/0038_task_rating.sql +3 -0
  192. package/dist/migrations/0039_aspiring_purifiers.sql +9 -0
  193. package/dist/migrations/0040_task_provider_inputs.sql +53 -0
  194. package/dist/migrations/0041_tranquil_vivisector.sql +54 -0
  195. package/dist/migrations/0042_breezy_blue_shield.sql +31 -0
  196. package/dist/migrations/0043_nervous_darkstar.sql +1 -0
  197. package/dist/migrations/0044_military_galactus.sql +8 -0
  198. package/dist/migrations/0045_task_pid_started_at.sql +1 -0
  199. package/dist/migrations/0046_acoustic_karnak.sql +49 -0
  200. package/dist/migrations/0047_doc_sync_connect_requests.sql +18 -0
  201. package/dist/migrations/0048_smart_gertrude_yorkes.sql +47 -0
  202. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  203. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  204. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  205. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  206. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  207. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  208. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  209. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  210. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  211. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  212. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  213. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  214. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  215. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  216. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  217. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  218. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  219. package/dist/migrations/meta/0037_snapshot.json +3598 -0
  220. package/dist/migrations/meta/0038_snapshot.json +3626 -0
  221. package/dist/migrations/meta/0039_snapshot.json +3684 -0
  222. package/dist/migrations/meta/0040_snapshot.json +3759 -0
  223. package/dist/migrations/meta/0041_snapshot.json +4156 -0
  224. package/dist/migrations/meta/0042_snapshot.json +4383 -0
  225. package/dist/migrations/meta/0043_snapshot.json +4390 -0
  226. package/dist/migrations/meta/0044_snapshot.json +4435 -0
  227. package/dist/migrations/meta/0045_snapshot.json +4442 -0
  228. package/dist/migrations/meta/0046_snapshot.json +4733 -0
  229. package/dist/migrations/meta/0047_snapshot.json +4832 -0
  230. package/dist/migrations/meta/0048_snapshot.json +5128 -0
  231. package/dist/migrations/meta/_journal.json +266 -0
  232. package/dist/node/index.d.ts +1 -0
  233. package/dist/node/index.js +2 -0
  234. package/dist/paths.d.ts +1 -0
  235. package/dist/plugin/types.d.ts +1 -0
  236. package/dist/plugins/index.d.ts +1 -1
  237. package/dist/plugins/index.js +532 -214
  238. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  239. package/dist/process/index.d.ts +2 -0
  240. package/dist/process/index.js +1 -0
  241. package/dist/process/process-control.d.ts +74 -0
  242. package/dist/prompt/tag-names.d.ts +22 -0
  243. package/dist/provider/acp/adapter.d.ts +37 -2
  244. package/dist/provider/acp/adapters/antigravity-account.d.ts +4 -0
  245. package/dist/provider/acp/completion-observer.d.ts +24 -0
  246. package/dist/provider/acp/connection.d.ts +69 -3
  247. package/dist/provider/acp/index.d.ts +3 -3
  248. package/dist/provider/acp/meta.d.ts +11 -0
  249. package/dist/provider/acp/register.d.ts +1 -0
  250. package/dist/provider/acp/runtime.d.ts +1 -0
  251. package/dist/provider/acp/types.d.ts +31 -4
  252. package/dist/provider/bridge.browser.d.ts +3 -0
  253. package/dist/provider/bridge.d.ts +25 -3
  254. package/dist/provider/classify-task-error.d.ts +2 -0
  255. package/dist/provider/claude-agent-env.d.ts +1 -0
  256. package/dist/provider/cli/adapter.types.d.ts +26 -2
  257. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  258. package/dist/provider/cli/adapters/antigravity-stream.d.ts +27 -0
  259. package/dist/provider/cli/adapters/antigravity.d.ts +1 -0
  260. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  261. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  262. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  263. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  264. package/dist/provider/cli/adapters/index.d.ts +5 -0
  265. package/dist/provider/cli/index.d.ts +3 -2
  266. package/dist/provider/cli/meta.d.ts +5 -0
  267. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  268. package/dist/provider/errors.d.ts +5 -1
  269. package/dist/provider/idle-watchdog.d.ts +19 -0
  270. package/dist/provider/models.d.ts +17 -12
  271. package/dist/provider/order.d.ts +1 -1
  272. package/dist/provider/parse-usage.d.ts +6 -0
  273. package/dist/provider/provider-selection.d.ts +8 -0
  274. package/dist/provider/redact-technical-message.d.ts +1 -0
  275. package/dist/provider/task-error.types.d.ts +17 -0
  276. package/dist/provider-account/accounts.d.ts +15 -0
  277. package/dist/provider-account/antigravity-acp/auth.d.ts +29 -0
  278. package/dist/provider-account/antigravity-acp/browser.d.ts +4 -0
  279. package/dist/provider-account/antigravity-acp/install.d.ts +42 -0
  280. package/dist/provider-account/antigravity-acp/lease.d.ts +23 -0
  281. package/dist/provider-account/antigravity-acp/lifecycle.d.ts +76 -0
  282. package/dist/provider-account/antigravity-acp/manifest.d.ts +76 -0
  283. package/dist/provider-account/antigravity-acp/profile.d.ts +4 -0
  284. package/dist/provider-account/capabilities.d.ts +6 -0
  285. package/dist/provider-account/index.d.ts +13 -0
  286. package/dist/provider-account/registry.d.ts +30 -0
  287. package/dist/provider-account/types.d.ts +47 -0
  288. package/dist/publish/constants.d.ts +6 -0
  289. package/dist/publish/errors.d.ts +7 -0
  290. package/dist/publish/index.d.ts +55 -0
  291. package/dist/publish/index.js +2 -0
  292. package/dist/publish/manifest.d.ts +47 -0
  293. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  294. package/dist/publish/pack.d.ts +6 -0
  295. package/dist/publish/scan.d.ts +10 -0
  296. package/dist/publish/secrets.d.ts +6 -0
  297. package/dist/publish/upload.d.ts +19 -0
  298. package/dist/remote/execution-profile.d.ts +9 -0
  299. package/dist/remote/index.d.ts +1 -0
  300. package/dist/remote/types.d.ts +28 -0
  301. package/dist/repository/agent-send-history.repository.d.ts +23 -0
  302. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  303. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  304. package/dist/repository/common-code.repository.d.ts +45 -0
  305. package/dist/repository/db.d.ts +13 -1
  306. package/dist/repository/index.d.ts +62 -6
  307. package/dist/repository/index.js +792 -207
  308. package/dist/repository/logs-db.d.ts +12 -0
  309. package/dist/repository/notification.repository.d.ts +58 -0
  310. package/dist/repository/project.repository.d.ts +90 -0
  311. package/dist/repository/public-task-answer.d.ts +24 -0
  312. package/dist/repository/request-log-mover.d.ts +70 -0
  313. package/dist/repository/request-log.repository.d.ts +7 -3
  314. package/dist/repository/run-columns.d.ts +10 -0
  315. package/dist/repository/run-history.repository.d.ts +112 -0
  316. package/dist/repository/schedule-run.repository.d.ts +103 -0
  317. package/dist/repository/sidebar-tab.repository.d.ts +86 -0
  318. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  319. package/dist/repository/task-log-migration.d.ts +74 -0
  320. package/dist/repository/task-log.repository.d.ts +47 -0
  321. package/dist/repository/task-status.d.ts +21 -0
  322. package/dist/repository/task.repository.d.ts +330 -8
  323. package/dist/repository/thread-history.repository.d.ts +193 -0
  324. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  325. package/dist/repository/thread-title.types.d.ts +29 -0
  326. package/dist/repository/thread.repository.d.ts +134 -5
  327. package/dist/repository/usage-backfill.d.ts +62 -0
  328. package/dist/repository/usage-from-logs.d.ts +22 -0
  329. package/dist/repository/workflow-anchor-kinds.d.ts +4 -0
  330. package/dist/repository/workspace.repository.d.ts +3 -0
  331. package/dist/route/decide.d.ts +54 -0
  332. package/dist/route/eligibility.d.ts +11 -0
  333. package/dist/route/errors.d.ts +11 -0
  334. package/dist/route/index.d.ts +14 -0
  335. package/dist/route/runner.d.ts +15 -0
  336. package/dist/route/sqlite-store.d.ts +17 -0
  337. package/dist/route/store.d.ts +45 -0
  338. package/dist/route/strategies.d.ts +4 -0
  339. package/dist/route/types.d.ts +212 -0
  340. package/dist/schema/agent-send-history.d.ts +85 -0
  341. package/dist/schema/agent-suggestions.d.ts +199 -0
  342. package/dist/schema/common-codes.d.ts +216 -0
  343. package/dist/schema/doc-sync-connect-requests.d.ts +140 -0
  344. package/dist/schema/doc-sync-links.d.ts +481 -0
  345. package/dist/schema/index.d.ts +21 -0
  346. package/dist/schema/model-routes.d.ts +581 -0
  347. package/dist/schema/notifications.d.ts +303 -0
  348. package/dist/schema/projects.d.ts +610 -0
  349. package/dist/schema/request-log-daily.d.ts +151 -0
  350. package/dist/schema/run-column-backfill.d.ts +81 -0
  351. package/dist/schema/schedule-runs.d.ts +451 -0
  352. package/dist/schema/sidebar-tabs.d.ts +466 -0
  353. package/dist/schema/storage-metadata.d.ts +181 -0
  354. package/dist/schema/task-log-events.d.ts +119 -0
  355. package/dist/schema/task-provider-inputs.d.ts +100 -0
  356. package/dist/schema/tasks.d.ts +1172 -1
  357. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  358. package/dist/schema/thread-history.d.ts +734 -0
  359. package/dist/schema/threads.d.ts +59 -0
  360. package/dist/schema/ui-action-receipts.d.ts +358 -0
  361. package/dist/schema/ui-definition-archive.d.ts +63 -0
  362. package/dist/schema/ui-instance-repins.d.ts +222 -0
  363. package/dist/schema/ui-instances.d.ts +324 -0
  364. package/dist/schema/workspaces.d.ts +17 -0
  365. package/dist/skills/index.d.ts +15 -0
  366. package/dist/skills/index.js +2 -0
  367. package/dist/skills/types.d.ts +18 -0
  368. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  369. package/dist/task-log/delegation-trailer.d.ts +34 -0
  370. package/dist/template/engine.d.ts +2 -2
  371. package/dist/template/helpers/exec.browser.d.ts +4 -3
  372. package/dist/template/helpers/exec.d.ts +4 -3
  373. package/dist/template/helpers/format-conversation.d.ts +1 -0
  374. package/dist/template/types.d.ts +20 -0
  375. package/dist/testing/index.js +1 -1
  376. package/dist/types/index.d.ts +3493 -93
  377. package/dist/types/task-log.types.d.ts +6 -1
  378. package/dist/ui-card/index.d.ts +2 -0
  379. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  380. package/dist/ui-instance/definition.d.ts +6 -0
  381. package/dist/ui-instance/errors.d.ts +18 -0
  382. package/dist/ui-instance/index.d.ts +11 -0
  383. package/dist/ui-instance/json.d.ts +19 -0
  384. package/dist/ui-instance/lineage.d.ts +24 -0
  385. package/dist/ui-instance/runtime.d.ts +19 -0
  386. package/dist/ui-instance/store.d.ts +216 -0
  387. package/dist/ui-instance/types.d.ts +384 -0
  388. package/dist/ui-plugin/app-icon.d.ts +50 -0
  389. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  390. package/dist/ui-plugin/csp.d.ts +28 -0
  391. package/dist/ui-plugin/index.d.ts +8 -0
  392. package/dist/ui-plugin/limits.d.ts +27 -0
  393. package/dist/ui-plugin/manifest.d.ts +3 -0
  394. package/dist/ui-plugin/types.d.ts +220 -0
  395. package/dist/ui-plugin/validator.d.ts +18 -0
  396. package/dist/utils/crewx-executable.d.ts +76 -0
  397. package/dist/utils/crewx-home.d.ts +1 -0
  398. package/dist/utils/env-defaults.d.ts +3 -0
  399. package/dist/utils/id.d.ts +1 -1
  400. package/dist/utils/local-identity.d.ts +2 -0
  401. package/dist/utils/runner-env.d.ts +3 -0
  402. package/dist/utils/timestamp.d.ts +1 -0
  403. package/dist/utils/workspace.d.ts +1 -0
  404. package/dist/wi/create.d.ts +48 -0
  405. package/dist/wi/select.d.ts +20 -0
  406. package/package.json +83 -3
  407. package/templates/agents/default.yaml +311 -128
  408. package/templates/documents/crewx-manual.md +138 -138
  409. package/templates/documents/crewx-quick-guide.md +8 -7
  410. package/templates/workflows/wi-default-flow.yaml +65 -0
  411. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -0,0 +1,95 @@
1
+ export interface AppUiToolCall {
2
+ readonly name: string;
3
+ readonly arguments?: Readonly<Record<string, unknown>>;
4
+ }
5
+ export interface AppUiCallOptions {
6
+ readonly timeout?: number;
7
+ readonly resetTimeoutOnProgress?: boolean;
8
+ readonly onprogress?: (progress: AppUiProgress) => void;
9
+ }
10
+ export interface AppUiProgress {
11
+ readonly progress: number;
12
+ readonly total?: number;
13
+ readonly message?: string;
14
+ }
15
+ export interface AppUiToolResult {
16
+ readonly isError?: boolean;
17
+ readonly structuredContent?: Readonly<Record<string, unknown>>;
18
+ }
19
+ export interface AppUiToolCaller {
20
+ callServerTool(params: AppUiToolCall, options?: AppUiCallOptions): Promise<AppUiToolResult>;
21
+ }
22
+ export declare class CrewxAppToolError extends Error {
23
+ readonly code: string;
24
+ constructor(code: string, message?: string);
25
+ }
26
+ export interface AppUiShareResult {
27
+ readonly shareId: string;
28
+ readonly url: string;
29
+ readonly revision: number;
30
+ readonly status: 'active';
31
+ readonly viewer: 'app' | 'markdown';
32
+ }
33
+ export interface AppUiFileItem {
34
+ readonly ref: string;
35
+ readonly version: string;
36
+ readonly bytes: number;
37
+ readonly modifiedAt: string;
38
+ }
39
+ export interface AppUiFilesListResult {
40
+ readonly items: readonly AppUiFileItem[];
41
+ readonly next: string | null;
42
+ }
43
+ export interface AppUiFileReadResult {
44
+ readonly ref: string;
45
+ readonly text: string;
46
+ readonly version: string;
47
+ }
48
+ export interface AppUiFileWriteResult {
49
+ readonly ref: string;
50
+ readonly version: string;
51
+ }
52
+ export interface AppUiShareInput {
53
+ readonly ref: string;
54
+ readonly onprogress?: (progress: AppUiProgress) => void;
55
+ }
56
+ export interface AppUiListFilesInput {
57
+ readonly prefix?: string;
58
+ readonly after?: string;
59
+ }
60
+ export interface AppUiWriteFileInput {
61
+ readonly ref: string;
62
+ readonly text: string;
63
+ readonly expectedVersion: string | null;
64
+ }
65
+ export declare function share(app: AppUiToolCaller, input: AppUiShareInput): Promise<AppUiShareResult>;
66
+ export declare function listFiles(app: AppUiToolCaller, input?: AppUiListFilesInput): Promise<AppUiFilesListResult>;
67
+ export declare function readFile(app: AppUiToolCaller, input: {
68
+ readonly ref: string;
69
+ }): Promise<AppUiFileReadResult>;
70
+ export declare function writeFile(app: AppUiToolCaller, input: AppUiWriteFileInput): Promise<AppUiFileWriteResult>;
71
+ export declare const CREWX_DOCUMENT_CHANGED: "ui/notifications/crewx-document-changed";
72
+ export interface AppUiDocumentChanged {
73
+ readonly ref: string;
74
+ readonly version: string | null;
75
+ }
76
+ export interface AppUiNotification {
77
+ readonly method: string;
78
+ readonly params?: unknown;
79
+ }
80
+ export interface AppUiNotificationSource {
81
+ fallbackNotificationHandler?(notification: AppUiNotification): Promise<void>;
82
+ }
83
+ export interface AppUiCurrentDocumentParams {
84
+ readonly ref: string | null;
85
+ readonly dirty?: boolean;
86
+ }
87
+ export interface AppUiNotificationSender {
88
+ notification(notification: AppUiNotification): Promise<void>;
89
+ }
90
+ export declare const CREWX_CURRENT_DOCUMENT: "crewx/notifications/document";
91
+ export declare function parseCrewxCurrentDocumentParams(value: unknown): AppUiCurrentDocumentParams | undefined;
92
+ export declare function setCurrentDocument(app: AppUiNotificationSender, ref: string | null, options?: {
93
+ readonly dirty?: boolean;
94
+ }): Promise<void>;
95
+ export declare function onDocumentChanged(app: AppUiNotificationSource, handler: (params: AppUiDocumentChanged) => void): () => void;
@@ -0,0 +1 @@
1
+ 'use strict';var g={refCodePoints:200,refSegments:3},A=/^[\p{L}\p{N}][\p{L}\p{N}\p{M}_-]{0,99}$/u;function c(e){let n=e.normalize("NFC");if([...n].length>g.refCodePoints)return;let r=n.split("/");if(r.length>g.refSegments)return;let t=r[r.length-1];return t.endsWith(".md")&&[...r.slice(0,-1),t.slice(0,-3)].every(o=>A.test(o))?n:void 0}var s=class extends Error{code;constructor(n,r=n){super(r),this.name="CrewxAppToolError",this.code=n;}},U=1200*1e3;function O(e,n){return u(e,{name:"crewx_docs_share",arguments:{ref:n.ref}},{timeout:U,resetTimeoutOnProgress:true,onprogress:n.onprogress??(()=>{})})}function I(e,n={}){return u(e,{name:"crewx_files_list",arguments:{...n}})}function b(e,n){return u(e,{name:"crewx_files_read",arguments:{ref:n.ref}})}function L(e,n){return u(e,{name:"crewx_files_write",arguments:{ref:n.ref,text:n.text,expectedVersion:n.expectedVersion}})}var h="ui/notifications/crewx-document-changed",x="crewx/notifications/document";function C(e){if(!d(e)||Object.keys(e).some(o=>o!=="ref"&&o!=="dirty")||!Object.prototype.hasOwnProperty.call(e,"ref"))return;let n=e.ref,r;if(n===null)r=null;else if(typeof n=="string"){let o=c(n);if(o===void 0)return;r=o;}else return;let i=Object.prototype.hasOwnProperty.call(e,"dirty")?e.dirty:void 0;if(!(i!==void 0&&typeof i!="boolean"))return i===void 0?{ref:r}:{ref:r,dirty:i}}async function k(e,n,r){if(n!==null&&typeof n!="string")throw new s("INVALID_REF");let t=n===null?null:c(n);if(n!==null&&t===void 0)throw new s("INVALID_REF");let i=C({ref:t,...r?.dirty===void 0?{}:{dirty:r.dirty}});if(i===void 0)throw new s("INVALID_PARAMS");await e.notification({method:x,params:i});}var R=/^sha256:[0-9a-f]{64}$/,p=new WeakMap;function v(e,n){let r=p.get(e)??w(e),t=i=>n(i);return r.listeners.add(t),()=>{r.listeners.delete(t),r.listeners.size===0&&p.get(e)===r&&(p.delete(e),e.fallbackNotificationHandler===r.dispatch&&(e.fallbackNotificationHandler=r.previous));}}function w(e){let n=e.fallbackNotificationHandler,r=new Set,t=async o=>{if(o.method!==h){await n?.call(e,o);return}let l=E(o.params);if(l===void 0)return;let a;for(let m of [...r])try{m(l);}catch(y){a??={error:y};}if(a!==void 0)throw a.error},i={listeners:r,previous:n,dispatch:t};return p.set(e,i),e.fallbackNotificationHandler=t,i}function E(e){if(!d(e))return;let n=e.ref,r=e.version;if(!(typeof n!="string"||n.length===0)&&!(r!==null&&(typeof r!="string"||!R.test(r))))return {ref:n,version:r}}async function u(e,n,r){let t=r===void 0?await e.callServerTool(n):await e.callServerTool(n,r);if(t.isError===true){let i=t.structuredContent?.error,o=d(i)?i:void 0,l=typeof o?.code=="string"?o.code:"TOOL_ERROR",a=typeof o?.message=="string"?o.message:l;throw new s(l,a)}if(!d(t.structuredContent))throw new s("TOOL_RESULT_INVALID",`${n.name} returned no structured result`);return t.structuredContent}function d(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}exports.CREWX_CURRENT_DOCUMENT=x;exports.CREWX_DOCUMENT_CHANGED=h;exports.CrewxAppToolError=s;exports.listFiles=I;exports.onDocumentChanged=v;exports.parseCrewxCurrentDocumentParams=C;exports.readFile=b;exports.setCurrentDocument=k;exports.share=O;exports.writeFile=L;
@@ -0,0 +1,76 @@
1
+ export declare const RECEIVED_ID_RE: RegExp;
2
+ export interface ReceiveLocation {
3
+ readonly anchor: string;
4
+ readonly root: string;
5
+ }
6
+ export interface ReceivedReceipt {
7
+ readonly id: string;
8
+ readonly sizeBytes: number;
9
+ readonly sha256: string;
10
+ readonly mode: '0600';
11
+ readonly createdAt: string;
12
+ readonly expiresAt: string;
13
+ }
14
+ export type ReceiveSource = Uint8Array | AsyncIterable<Uint8Array> | NodeJS.ReadableStream;
15
+ export interface MaterializedFileRef {
16
+ readonly anchorDir: string;
17
+ readonly segments: readonly string[];
18
+ }
19
+ export interface MaterializedFileExpected {
20
+ readonly sizeBytes: number;
21
+ readonly sha256: string;
22
+ }
23
+ export interface MaterializedFileReceipt {
24
+ readonly sizeBytes: number;
25
+ readonly sha256: string;
26
+ readonly mode: number;
27
+ readonly verifiedAt: string;
28
+ }
29
+ export interface ReceiveRootLease {
30
+ release(): Promise<void>;
31
+ }
32
+ export interface ReceiveTempSweepReport {
33
+ readonly status: 'complete' | 'pending';
34
+ readonly removed: number;
35
+ readonly pendingRecent: number;
36
+ readonly pendingLive: number;
37
+ readonly pendingUnsafe: number;
38
+ readonly pendingUncertain: number;
39
+ }
40
+ export type AttachmentReceiveErrorCode = 'INVALID_INPUT' | 'TOO_LARGE' | 'SIZE_MISMATCH' | 'HASH_MISMATCH' | 'ROOT_UNSAFE' | 'ROOT_BUSY' | 'NOT_FOUND' | 'EXPIRED' | 'TAMPERED_CONTENT' | 'TAMPERED_MODE' | 'NOT_REGULAR_FILE' | 'SYMLINK' | 'WRONG_OWNER' | 'LINKED' | 'UNSUPPORTED' | 'IO_ERROR' | 'CLEANUP_INCOMPLETE';
41
+ export declare class AttachmentReceiveError extends Error {
42
+ readonly code: AttachmentReceiveErrorCode;
43
+ readonly originalCode?: AttachmentReceiveErrorCode;
44
+ constructor(code: AttachmentReceiveErrorCode, originalCode?: AttachmentReceiveErrorCode);
45
+ }
46
+ export declare function receive(location: ReceiveLocation, source: ReceiveSource, options: {
47
+ readonly expectedSizeBytes: number;
48
+ readonly expectedSha256: string;
49
+ readonly maxBytes: number;
50
+ readonly ttlMs: number;
51
+ readonly now?: () => number;
52
+ }): Promise<ReceivedReceipt>;
53
+ export declare function inspectReceived(location: ReceiveLocation, expected: ReceivedReceipt, options?: {
54
+ readonly now?: () => number;
55
+ }): Promise<ReceivedReceipt>;
56
+ export declare function readVerifiedReceived(location: ReceiveLocation, expected: ReceivedReceipt, options?: {
57
+ readonly now?: () => number;
58
+ }): Promise<Uint8Array>;
59
+ export declare function verifyMaterializedFile(ref: MaterializedFileRef, expected: MaterializedFileExpected, options?: {
60
+ readonly now?: () => number;
61
+ }): Promise<MaterializedFileReceipt>;
62
+ export declare function acquireReceiveRootLease(location: ReceiveLocation): Promise<ReceiveRootLease>;
63
+ export declare function removeReceived(location: ReceiveLocation, id: string): Promise<boolean>;
64
+ export declare function listReceived(location: ReceiveLocation): Promise<readonly {
65
+ readonly id: string;
66
+ readonly mtimeMs: number;
67
+ readonly sizeBytes: number;
68
+ }[]>;
69
+ export declare function sweepReceiveTemp(location: ReceiveLocation, options: {
70
+ readonly olderThanMs: number;
71
+ readonly now?: () => number;
72
+ }): Promise<number>;
73
+ export declare function sweepReceiveTempDetailed(location: ReceiveLocation, options: {
74
+ readonly olderThanMs: number;
75
+ readonly now?: () => number;
76
+ }): Promise<ReceiveTempSweepReport>;
@@ -0,0 +1,2 @@
1
+ 'use strict';var crypto=require('crypto'),fs=require('fs'),path=require('path'),child_process=require('child_process');require('os');var util=require('util');var v=class extends Error{code;constructor(t){super(t),this.name="AppFilesError",this.code=t;}};path.join("locks","files");var{link:Xe,mkdir:$e,open:Je,readFile:ae,unlink:H}=fs.promises,Ze=5,qe=50,Qe=1e3,et=2e3,tt="/bin/ps",nt={LC_ALL:"C",TZ:"UTC"},it=100,rt=19,ot=/^[A-Za-z]{3} ([A-Za-z]{3}) +(\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/,at=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],st=util.promisify(child_process.execFile),ge,X;async function he(e){let{lockDir:t,key:n}=e,i=path.join(t,ct(n)),o=Date.now()+e.waitMs,a=await Ae(t,{token:crypto.randomUUID(),pid:process.pid,startedAtMs:await Pe()}),s=new ie;try{let d=Ze;for(;;){if(await _e(a.staged,i))return {path:i,token:a.record.token};let c=await $(i);if(c!=="vanished"&&!(c!=="unreadable"&&await s.isDead(c)&&await ft(t,i,c,s))){if(Date.now()>=o)throw new v("FILE_BUSY");await Ot(d),d=Math.min(d*2,qe);}}}finally{await H(a.staged).catch(()=>{});}}async function se(e){await re(e.path,e.token);}function ct(e){return crypto.createHash("sha256").update(e,"utf8").digest("hex")}async function Ae(e,t){let n=path.join(e,`.${t.token}.tmp`);try{await $e(e,{recursive:!0}),await dt(n,JSON.stringify(t));}catch{throw await H(n).catch(()=>{}),new v("IO_ERROR")}return {record:t,staged:n}}async function dt(e,t){let n=await Je(e,"wx");try{await n.writeFile(t),await n.sync();}finally{await n.close();}}async function _e(e,t){try{return await Xe(e,t),!0}catch(n){if(n.code==="EEXIST")return false;throw new v("IO_ERROR")}}async function $(e){let t;try{t=await ae(e,"utf8");}catch(n){return n.code==="ENOENT"?"vanished":"unreadable"}try{let n=JSON.parse(t);return ut(n)?n:"unreadable"}catch{return "unreadable"}}function ut(e){if(typeof e!="object"||e===null||Array.isArray(e))return false;let t=e;return typeof t.token=="string"&&t.token.length>0&&typeof t.pid=="number"&&Number.isSafeInteger(t.pid)&&t.pid>0&&(t.startedAtMs===null||Number.isSafeInteger(t.startedAtMs))}async function lt(e){try{process.kill(e.pid,0);}catch(n){return n.code==="ESRCH"}if(e.startedAtMs===null)return false;let t=await Le(e.pid);return t!==null&&t!==e.startedAtMs}var ie=class{constructor(t=lt,n=Date.now){this.check=t;this.now=n;}check;now;answers=new Map;async isDead(t){let n=this.now(),i=this.answers.get(t.token);if(i!==void 0&&n-i.at<Qe)return i.dead;let o=await this.check(t);return this.answers.set(t.token,{at:n,dead:o}),o}};async function ft(e,t,n,i){let o=`${t}.reclaim`,a=await Ae(e,{token:crypto.randomUUID(),pid:process.pid,startedAtMs:await Pe()});try{if(!await _e(a.staged,o)){let s=await $(o);return s!=="vanished"&&s!=="unreadable"&&await i.isDead(s)&&await re(o,s.token),!1}try{let s=await $(t);return typeof s!="object"||s.token!==n.token?!1:(await H(t).catch(()=>{}),!0)}finally{await re(o,a.record.token);}}finally{await H(a.staged).catch(()=>{});}}async function re(e,t){let n=await $(e);typeof n=="object"&&n.token===t&&await H(e).catch(()=>{});}function Pe(){return (X===void 0||X.pid!==process.pid)&&(X={pid:process.pid,startedAtMs:Le(process.pid)}),X.startedAtMs}async function Le(e){return process.platform==="linux"&&(ge??=await fs.promises.access("/proc/self/stat").then(()=>true,()=>false),ge)?mt(e):pt(e)}async function mt(e){try{let t=await ae(`/proc/${e}/stat`,"utf8"),n=t.slice(t.lastIndexOf(")")+2).split(" "),i=Number(n[rt]),o=await yt();return !Number.isSafeInteger(i)||o===void 0?null:o*1e3+i*1e3/it}catch{return null}}async function yt(){let e=(await ae("/proc/stat","utf8")).split(`
2
+ `).find(n=>n.startsWith("btime ")),t=Number(e?.slice(6));return Number.isSafeInteger(t)?t:void 0}async function pt(e){try{let{stdout:t}=await st(tt,["-o","lstart=","-p",String(e)],{env:nt,encoding:"utf8",timeout:et});return wt(t.trim())}catch{return null}}function wt(e){let t=ot.exec(e);if(t===null)return null;let n=at.indexOf(t[1]);return n<0?null:Date.UTC(Number(t[6]),n,Number(t[2]),Number(t[3]),Number(t[4]),Number(t[5]))}function Ot(e){return new Promise(t=>setTimeout(t,e))}var xe=/^rcv_[0-9a-f]{32}$/,N=class extends Error{code;originalCode;constructor(t,n){super(t),this.name="AttachmentReceiveError",this.code=t,n!==void 0&&(this.originalCode=n);}},Q=100*1024*1024,me=365*24*60*60*1e3,ye=/^[0-9a-f]{64}$/,It=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.[a-z0-9]{1,10}$/,gt=/[/\\\x00-\x1F\x7F]/,bt=/^\.tmp-(\d+)-[0-9a-f]{32}$/,q=new Set,J=new Map,Tt=64*1024,k=448,A=384;function ce(e){return e==="removed"||e==="absent"}async function an(e,t,n){let i=_t(n),o=U(e);Ut(t),M();let a,s,d,c,u=false,m,f,y,E,C=false,B=async()=>m!==void 0?m:u?!a||!d||!c?m="failed":(m=await Fe(a,d,c),m):m="absent",S=async()=>E!==void 0?E:f?!a||!y?E="failed":(E=await Fe(a,f,y),E):E="absent";try{a=await F(o,!0);let z="";for(let R=0;R<3;R+=1){await l(a),d=path.join(a.root,`.tmp-${process.pid}-${crypto.randomBytes(16).toString("hex")}`);try{s=await fs.promises.open(d,fs.constants.O_CREAT|fs.constants.O_EXCL|fs.constants.O_WRONLY|fs.constants.O_NOFOLLOW,A),u=!0;break}catch(h){if(p(h)==="EEXIST")continue;throw p(h)==="ELOOP"&&r("SYMLINK"),h}}(!s||!d)&&r("IO_ERROR"),q.add(d);let g=await s.stat({bigint:!0});c=x(d,g),await s.chmod(A),g=await s.stat({bigint:!0}),le(g,!0),await j(d,c,"TAMPERED_CONTENT"),await l(a);let te=crypto.createHash("sha256"),V=0,We=t instanceof Uint8Array?Ct(t):t;try{for await(let R of We){R instanceof Uint8Array||r("INVALID_INPUT");let h=V+R.byteLength;if((!Number.isSafeInteger(h)||h>i.maxBytes)&&r("TOO_LARGE"),h>i.expectedSizeBytes&&r("SIZE_MISMATCH"),R.byteLength===0)continue;let D=new Uint8Array(R.byteLength);D.set(R),await l(a),te.update(D),await xt(s,D),V=h;}}catch(R){if(R instanceof N)throw R;r("IO_ERROR");}V!==i.expectedSizeBytes&&r("SIZE_MISMATCH");let Ee=te.digest("hex");Ee!==i.expectedSha256&&r("HASH_MISMATCH"),await s.sync(),g=await s.stat({bigint:!0}),le(g,!0),g.size!==BigInt(V)&&r("TAMPERED_CONTENT"),await j(d,c,"TAMPERED_CONTENT"),await l(a);let ne;for(let R=0;R<3;R+=1){await l(a),z=`rcv_${crypto.randomBytes(16).toString("hex")}`;let h=path.join(a.root,z);try{await fs.promises.link(d,h),ne=z,f=h,y=c;break}catch(D){if(p(D)==="EEXIST")continue;throw p(D)==="ELOOP"&&r("SYMLINK"),D}}(!ne||!f||!y)&&r("IO_ERROR");let je=await B();ce(je)||r("CLEANUP_INCOMPLETE"),await Ne(a),T(g.mode)!==A&&r("TAMPERED_MODE");let K={id:ne,sizeBytes:V,sha256:Ee,mode:"0600",createdAt:i.createdAt,expiresAt:i.expiresAt};K.mode!=="0600"&&r("TAMPERED_MODE");let Re=await Oe(a,K,!0,y);return (Re.sha256!==K.sha256||Re.mode!==A)&&r("TAMPERED_CONTENT"),C=!0,K}catch(z){let g=P(z);throw f&&!C&&await S(),u&&await B(),(f!==void 0&&!ce(E)||u&&!ce(m))&&g.code!=="ROOT_UNSAFE"&&g.code!=="UNSUPPORTED"&&g.code!=="CLEANUP_INCOMPLETE"?new N("CLEANUP_INCOMPLETE",g.code):g}finally{s&&await s.close().catch(()=>{}),d&&q.delete(d);}}async function sn(e,t,n={}){try{let i=Ce(t);G(n.now)>=i.expiresAtMs&&r("EXPIRED");let a=await F(U(e),!1);return await Oe(a,i,!1),Pt(i)}catch(i){throw P(i)}}async function cn(e,t,n={}){try{let i=Ce(t);G(n.now)>=i.expiresAtMs&&r("EXPIRED");let a=await F(U(e),!1),s=await Oe(a,i,!0);return s.bytes||r("TAMPERED_CONTENT"),s.bytes}catch(i){throw P(i)}}async function dn(e,t,n={}){try{let i=Lt(e),o=St(t),a=W(G(n?.now));M();let s=await Dt(i.anchorDir,i.segments.slice(0,-1)),d=path.join(s.path,i.segments[i.segments.length-1]),c=await Ve(d,o,!1,()=>L(s.pins),void 0,{size:"SIZE_MISMATCH",hash:"HASH_MISMATCH"});return {sizeBytes:c.sizeBytes,sha256:c.sha256,mode:c.mode,verifiedAt:a}}catch(i){throw P(i)}}async function un(e){let t;try{let n=U(e);M();let i=await F(n,!0);await l(i);try{t=await he({lockDir:i.root,key:`crewx:attachment-inbox:${i.root}`,waitMs:0});}catch(a){throw p(a)==="FILE_BUSY"&&r("ROOT_BUSY"),a}await l(i);let o=!1;return {async release(){if(!o)try{await se(t),o=!0;}catch(a){throw P(a)}}}}catch(n){throw t&&await se(t).catch(()=>{}),P(n)}}async function ln(e,t){try{pe(t);let n=U(e);M();let i;try{i=await F(n,!1);}catch(c){if(c instanceof N&&c.code==="NOT_FOUND")return !1;throw c}await l(i);let o=path.join(i.root,t),a=await w(o);if(!a)return !1;a.isSymbolicLink()&&r("SYMLINK"),a.isFile()||r("NOT_REGULAR_FILE");let s=await ee(o),d;try{d=await s.stat({bigint:!0}),le(d,!1),I(a,d)||r("TAMPERED_CONTENT"),await l(i),await j(o,x(o,d),"TAMPERED_CONTENT");}finally{await s.close().catch(()=>{});}await l(i),await j(o,x(o,d),"TAMPERED_CONTENT");try{await fs.promises.unlink(o);}catch(c){if(p(c)==="ENOENT")return !1;throw (p(c)==="EISDIR"||p(c)==="EPERM")&&r("NOT_REGULAR_FILE"),c}return await Ne(i),!0}catch(n){throw P(n)}}async function fn(e){try{M();let t;try{t=await F(U(e),!1);}catch(o){if(o instanceof N&&o.code==="NOT_FOUND")return [];throw o}await l(t);let n=await fs.promises.readdir(t.root);await l(t);let i=[];for(let o of n)if(!(o.length!==36||!xe.test(o)))try{await l(t);let a=path.join(t.root,o),s=await w(a);if(!s||s.isSymbolicLink()||!s.isFile())continue;let d=await ee(a);try{let c=await d.stat({bigint:!0});if(!vt(c)||!I(s,c))continue;await l(t);let u=await w(a),m=await d.stat({bigint:!0});if(!u||u.isSymbolicLink()||!u.isFile()||!I(u,m)||!we(c,m))continue;i.push({id:o,mtimeMs:Number(c.mtimeMs),sizeBytes:Number(c.size)});}finally{await d.close().catch(()=>{});}}catch(a){if(a instanceof N&&a.code==="ROOT_UNSAFE")throw a}return await l(t),i.sort((o,a)=>o.id<a.id?-1:o.id>a.id?1:0)}catch(t){throw P(t)}}async function mn(e,t){return (await ht(e,t)).removed}async function ht(e,t){let n=t?.olderThanMs;(!Number.isSafeInteger(n)||n<=0||n>me)&&r("INVALID_INPUT");let i=G(t.now);M();try{let o;try{o=await F(U(e),!1);}catch(f){if(f instanceof N&&f.code==="NOT_FOUND")return De(0,0,0,0,0);throw f}let a=await fs.promises.readdir(o.root),s=0,d=0,c=0,u=0,m=0;for(let f of a){let y=bt.exec(f);if(!y||y[0]!==f)continue;let E=Number(y[1]),C=path.join(o.root,f);if(!Number.isSafeInteger(E)||E<=0){m+=1;continue}let B=q.has(C)?"live":He(E);if(B==="live"){c+=1;continue}if(B==="uncertain"){m+=1;continue}let S=await At(o,C,E,n,i);S==="removed"?s+=1:S==="pendingRecent"?d+=1:S==="pendingLive"?c+=1:S==="pendingUnsafe"?u+=1:S==="pendingUncertain"&&(m+=1);}return s>0&&await Ne(o),De(s,d,c,u,m)}catch(o){throw P(o)}}function De(e,t,n,i,o){return {status:t+n+i+o===0?"complete":"pending",removed:e,pendingRecent:t,pendingLive:n,pendingUnsafe:i,pendingUncertain:o}}async function At(e,t,n,i,o){try{await l(e);let a=await w(t);if(!a)return await l(e),"absent";if(!Z(a))return "pendingUnsafe";let s=o-Number(a.mtimeMs);if(!Number.isFinite(s))return "pendingUncertain";if(s<=i)return "pendingRecent";let d=await ee(t);try{let c=await d.stat({bigint:!0});if(!Z(c))return "pendingUnsafe";if(!I(a,c))return "pendingUncertain";await l(e);let u=await w(t),m=await d.stat({bigint:!0});if(!u)return await l(e),"absent";if(u.isSymbolicLink()||!u.isFile())return "pendingUncertain";if(!Z(u)||!Z(m))return "pendingUnsafe";if(!I(a,u)||!I(u,m)||!we(c,m))return "pendingUncertain";if(q.has(t))return "pendingLive";let f=He(n);if(f==="live")return "pendingLive";if(f==="uncertain")return "pendingUncertain";await l(e),await j(t,x(t,c),"TAMPERED_CONTENT");try{await fs.promises.unlink(t);}catch(y){if(p(y)==="ENOENT"){await l(e);let E=await w(t);return await l(e),E?"pendingUncertain":"absent"}throw y}return "removed"}finally{await d.close().catch(()=>{});}}catch(a){if(a instanceof N&&(a.code==="ROOT_UNSAFE"||a.code==="UNSUPPORTED"))throw a;if(a instanceof N&&a.code==="NOT_FOUND"){await l(e);let s=await w(t);return await l(e),s?"pendingUncertain":"absent"}return "pendingUncertain"}}function _t(e){Y(e)||r("INVALID_INPUT");let t=e.expectedSizeBytes,n=e.expectedSha256,i=e.maxBytes,o=e.ttlMs;(!Number.isSafeInteger(t)||t<0)&&r("INVALID_INPUT"),(!Number.isSafeInteger(i)||i<=0||i>Q)&&r("INVALID_INPUT"),t>i&&r("TOO_LARGE"),(typeof n!="string"||n.length!==64||!ye.test(n))&&r("INVALID_INPUT"),(!Number.isSafeInteger(o)||o<=0||o>me)&&r("INVALID_INPUT");let a=G(e.now),s=a+o,d=W(a),c=W(s);return {expectedSizeBytes:t,expectedSha256:n,maxBytes:i,createdAt:d,expiresAt:c}}function Ce(e){Y(e)||r("INVALID_INPUT");let t;try{Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null&&r("INVALID_INPUT"),t=Object.keys(e).sort();}catch{r("INVALID_INPUT");}t.join(",")!=="createdAt,expiresAt,id,mode,sha256,sizeBytes"&&r("INVALID_INPUT");let n=e.id,i=e.sizeBytes,o=e.sha256,a=e.mode,s=e.createdAt,d=e.expiresAt;pe(n),(!Number.isSafeInteger(i)||i<0||i>Q)&&r("INVALID_INPUT"),(typeof o!="string"||o.length!==64||!ye.test(o))&&r("INVALID_INPUT"),a!=="0600"&&r("INVALID_INPUT"),(typeof s!="string"||typeof d!="string")&&r("INVALID_INPUT");let c=Ue(s),u=Ue(d);return (u<=c||u-c>me)&&r("INVALID_INPUT"),{id:n,sizeBytes:i,sha256:o,mode:a,createdAt:s,expiresAt:d,createdAtMs:c,expiresAtMs:u}}function Pt(e){return {id:e.id,sizeBytes:e.sizeBytes,sha256:e.sha256,mode:e.mode,createdAt:e.createdAt,expiresAt:e.expiresAt}}function pe(e){(typeof e!="string"||e.length!==36||!xe.test(e))&&r("INVALID_INPUT");}function Lt(e){Y(e)||r("INVALID_INPUT");let t,n;try{Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null&&r("INVALID_INPUT"),Object.keys(e).sort().join(",")!=="anchorDir,segments"&&r("INVALID_INPUT"),t=e.anchorDir,n=e.segments;}catch{r("INVALID_INPUT");}let i=de(t);(!Array.isArray(n)||n.length<1||n.length>6)&&r("INVALID_INPUT");let o=[];for(let a=0;a<n.length;a+=1){let s=n[a];(typeof s!="string"||s.length===0||s==="."||s===".."||gt.test(s))&&r("INVALID_INPUT"),o.push(s);}return It.test(o[o.length-1])||r("INVALID_INPUT"),{anchorDir:i,segments:o}}function St(e){Y(e)||r("INVALID_INPUT");let t,n;try{Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null&&r("INVALID_INPUT"),Object.keys(e).sort().join(",")!=="sha256,sizeBytes"&&r("INVALID_INPUT"),t=e.sizeBytes,n=e.sha256;}catch{r("INVALID_INPUT");}return (!Number.isSafeInteger(t)||t<0||t>Q)&&r("INVALID_INPUT"),(typeof n!="string"||!ye.test(n))&&r("INVALID_INPUT"),{sizeBytes:t,sha256:n}}function de(e){return (typeof e!="string"||!path.isAbsolute(e)||e.includes("\0"))&&r("INVALID_INPUT"),e.split(path.sep).some(t=>t==="."||t==="..")&&r("INVALID_INPUT"),path.resolve(e)}function U(e){Y(e)||r("INVALID_INPUT");let t=de(e.anchor),n=de(e.root),i=path.relative(t,n);return (!i||i===".."||i.startsWith(`..${path.sep}`)||path.isAbsolute(i))&&r("ROOT_UNSAFE"),{anchor:t,root:n}}async function Dt(e,t){let n=path.join(e,...t),i=Be(n),o=i.indexOf(e);o<0&&r("ROOT_UNSAFE");let a=[];for(let s=0;s<i.length;s+=1){let d=i[s],c=await w(d);c||r(s<=o?"ROOT_UNSAFE":"NOT_FOUND"),ue(c),a.push(x(d,c));}return await L(a),{path:n,pins:a}}function Ut(e){e instanceof Uint8Array||e!==null&&typeof e=="object"&&typeof e[Symbol.asyncIterator]=="function"||r("INVALID_INPUT");}function M(){(process.platform==="win32"||typeof process.getuid!="function"||typeof fs.constants.O_NOFOLLOW!="number"||fs.constants.O_NOFOLLOW===0||typeof fs.constants.O_NONBLOCK!="number"||fs.constants.O_NONBLOCK===0||typeof fs.constants.O_DIRECTORY!="number"||fs.constants.O_DIRECTORY===0)&&r("UNSUPPORTED");}function G(e){e!==void 0&&typeof e!="function"&&r("INVALID_INPUT");let t;try{t=e?e():Date.now();}catch{r("INVALID_INPUT");}return Number.isSafeInteger(t)||r("INVALID_INPUT"),W(t),t}function W(e){try{let t=new Date(e).toISOString();return Date.parse(t)!==e&&r("INVALID_INPUT"),t}catch{r("INVALID_INPUT");}}function Ue(e){typeof e!="string"&&r("INVALID_INPUT");let t=Date.parse(e);return (!Number.isSafeInteger(t)||W(t)!==e)&&r("INVALID_INPUT"),t}async function F(e,t){return M(),t?Mt(e.root,()=>Me(e,!0)):Me(e,false)}async function Me(e,t){let n=Be(e.root),i=n.indexOf(e.anchor);(i<0||i===n.length-1)&&r("ROOT_UNSAFE");let o=[],a;for(let d=0;d<n.length;d+=1){let c=n[d],u=await w(c);if(!u){(!t||d<=i)&&r(d<=i?"ROOT_UNSAFE":"NOT_FOUND"),await L(o,false);let f=false;try{await fs.promises.mkdir(c,{mode:k}),f=!0;}catch(y){if(p(y)!=="EEXIST")throw (p(y)==="ENOENT"||p(y)==="ENOTDIR")&&r("ROOT_UNSAFE"),y}u=await w(c),u||r("ROOT_UNSAFE"),ue(u),f&&(u=await Ft(c,u,o));}ue(u);let m=x(c,u);o.push(m),d===n.length-1&&(a=u);}a||r("ROOT_UNSAFE"),ze(a);let s={...e,pins:o};return await l(s),s}async function Mt(e,t){let n=J.get(e)??Promise.resolve(),i,o=new Promise(a=>{i=a;});J.set(e,o),await n;try{return await t()}finally{i(),J.get(e)===o&&J.delete(e);}}async function Ft(e,t,n){let i=BigInt(process.getuid());t.uid!==i&&r("ROOT_UNSAFE"),await L(n,false);let o=await w(e);(!o||o.isSymbolicLink()||!o.isDirectory()||!I(t,o))&&r("ROOT_UNSAFE");let a;try{try{a=await fs.promises.open(e,fs.constants.O_RDONLY|fs.constants.O_DIRECTORY|fs.constants.O_NOFOLLOW);}catch(d){if(p(d)!=="EACCES"&&p(d)!=="EPERM")throw d}if(a){let d=await a.stat({bigint:!0});(!d.isDirectory()||!I(t,d))&&r("ROOT_UNSAFE"),await L(n,!1),await a.chmod(k);let c=await a.stat({bigint:!0});(!I(t,c)||T(c.mode)!==k||c.uid!==i)&&r("ROOT_UNSAFE");}else {await L(n,!1);let d=await w(e);(!d||d.isSymbolicLink()||!d.isDirectory()||!I(t,d))&&r("ROOT_UNSAFE"),await fs.promises.chmod(e,k);}await L(n,!1);let s=await w(e);return (!s||s.isSymbolicLink()||!s.isDirectory()||!I(t,s))&&r("ROOT_UNSAFE"),(T(s.mode)!==k||s.uid!==i)&&r("ROOT_UNSAFE"),s}finally{a&&await a.close().catch(()=>{});}}function Be(e){let t=path.parse(e).root,n=e.slice(t.length).split(path.sep).filter(Boolean),i=[t],o=t;for(let a of n)o=path.join(o,a),i.push(o);return i}function ue(e){e.isSymbolicLink()&&r("ROOT_UNSAFE"),e.isDirectory()||r("ROOT_UNSAFE");}function ze(e){(e.uid!==BigInt(process.getuid())||T(e.mode)!==k)&&r("ROOT_UNSAFE");}async function l(e){await L(e.pins,true);}async function L(e,t=false){if(e.length!==0)for(let n=0;n<e.length;n+=1){let i=e[n],o=await w(i.path);(!o||o.isSymbolicLink()||!o.isDirectory())&&r("ROOT_UNSAFE"),(o.dev!==i.dev||o.ino!==i.ino)&&r("ROOT_UNSAFE"),t&&n===e.length-1&&ze(o);}}async function w(e){try{return await fs.promises.lstat(e,{bigint:!0})}catch(t){let n=p(t);if(n==="ENOENT"||n==="ENOTDIR")return;throw t}}async function j(e,t,n){let i=await w(e);(!i||i.isSymbolicLink()||!i.isFile())&&r(n),(i.dev!==t.dev||i.ino!==t.ino)&&r(n);}function x(e,t){return {path:e,dev:t.dev,ino:t.ino}}function I(e,t){return e.dev===t.dev&&e.ino===t.ino}function we(e,t){return e.dev===t.dev&&e.ino===t.ino&&e.mode===t.mode&&e.uid===t.uid&&e.nlink===t.nlink&&e.size===t.size&&e.mtimeNs===t.mtimeNs&&e.ctimeNs===t.ctimeNs}function T(e){return Number(e)&4095}function le(e,t){e.isFile()||r("NOT_REGULAR_FILE"),e.uid!==BigInt(process.getuid())&&r("WRONG_OWNER"),e.nlink!==1n&&!t&&r("LINKED"),t&&e.nlink!==1n&&r("LINKED"),t&&T(e.mode)!==A&&r("TAMPERED_MODE");}function vt(e){return e.isFile()&&e.uid===BigInt(process.getuid())&&e.nlink===1n&&T(e.mode)===A&&e.size<=BigInt(Q)}function Z(e){return e.isFile()&&e.uid===BigInt(process.getuid())&&e.nlink===1n&&T(e.mode)===A}async function ee(e){try{return await fs.promises.open(e,fs.constants.O_RDONLY|fs.constants.O_NOFOLLOW|fs.constants.O_NONBLOCK)}catch(t){throw p(t)==="ELOOP"&&r("SYMLINK"),p(t)==="ENOENT"&&r("NOT_FOUND"),t}}async function Oe(e,t,n,i){return pe(t.id),Ve(path.join(e.root,t.id),t,n,()=>l(e),i,{size:"TAMPERED_CONTENT",hash:"TAMPERED_CONTENT"})}async function Ve(e,t,n,i,o,a){await i();let s=await w(e);s||r("NOT_FOUND"),s.isSymbolicLink()&&r("SYMLINK"),s.isFile()||r("NOT_REGULAR_FILE"),s.uid!==BigInt(process.getuid())&&r("WRONG_OWNER"),s.nlink!==1n&&r("LINKED"),T(s.mode)!==A&&r("TAMPERED_MODE"),s.size!==BigInt(t.sizeBytes)&&r(a.size);let d=await ee(e);try{let c=await d.stat({bigint:!0});c.isFile()||r("NOT_REGULAR_FILE"),I(s,c)||r("TAMPERED_CONTENT"),o&&(c.dev!==o.dev||c.ino!==o.ino)&&r("TAMPERED_CONTENT"),c.uid!==BigInt(process.getuid())&&r("WRONG_OWNER"),c.nlink!==1n&&r("LINKED"),T(c.mode)!==A&&r("TAMPERED_MODE"),c.size!==BigInt(t.sizeBytes)&&r(a.size);let{sha256:u,bytes:m}=await kt(d,t.sizeBytes,n),f=await d.stat({bigint:!0}),y=await w(e);return await i(),(!y||y.isSymbolicLink()||!y.isFile())&&r("TAMPERED_CONTENT"),(!I(c,y)||!I(f,y))&&r("TAMPERED_CONTENT"),(T(f.mode)!==A||T(y.mode)!==A)&&r("TAMPERED_MODE"),f.uid!==BigInt(process.getuid())&&r("WRONG_OWNER"),f.nlink!==1n&&r("LINKED"),we(c,f)||r("TAMPERED_CONTENT"),f.size!==BigInt(t.sizeBytes)&&r(a.size),u!==t.sha256&&r(a.hash),{sha256:u,bytes:m,sizeBytes:Number(f.size),mode:T(f.mode)}}finally{await d.close().catch(()=>{});}}async function kt(e,t,n){let i=crypto.createHash("sha256"),o=n?new Uint8Array(t):void 0,a=0;for(;a<t;){let d=Math.min(Tt,t-a),c=new Uint8Array(d),u=0;for(;u<d;){let m=await e.read(c,u,d-u,a+u);m.bytesRead<=0&&r("TAMPERED_CONTENT"),u+=m.bytesRead;}i.update(c),o?.set(c,a),a+=d;}return {sha256:i.digest("hex"),bytes:o}}async function xt(e,t){let n=0;for(;n<t.length;){let i=await e.write(t,n,t.length-n,null);i.bytesWritten<=0&&r("IO_ERROR"),n+=i.bytesWritten;}}async function*Ct(e){yield e;}async function Fe(e,t,n){try{await l(e);let i=await w(t);if(!i)return await l(e),"absent";if(i.isSymbolicLink()||!i.isFile()||i.dev!==n.dev||i.ino!==n.ino)return "foreign";await l(e);let o=await w(t);if(!o)return await l(e),"absent";if(o.isSymbolicLink()||!o.isFile()||o.dev!==n.dev||o.ino!==n.ino)return "foreign";try{return await fs.promises.unlink(t),"removed"}catch(a){if(p(a)==="ENOENT"){await l(e);let s=await w(t);return await l(e),s?"foreign":"absent"}return "failed"}}catch{return "failed"}}async function Ne(e){await l(e);let t=await fs.promises.open(e.root,fs.constants.O_RDONLY|fs.constants.O_DIRECTORY|fs.constants.O_NOFOLLOW);try{let n=await t.stat({bigint:!0}),i=e.pins[e.pins.length-1];(!n.isDirectory()||n.dev!==i.dev||n.ino!==i.ino)&&r("ROOT_UNSAFE"),await l(e),await t.sync(),await l(e);}finally{await t.close().catch(()=>{});}}function He(e){try{return process.kill(e,0),"live"}catch(t){return p(t)==="ESRCH"?"dead":"uncertain"}}function Y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e){return typeof e=="object"&&e!==null&&"code"in e?String(e.code):void 0}function P(e){return e instanceof N?e:p(e)==="ELOOP"?new N("SYMLINK"):p(e)==="ENOENT"?new N("NOT_FOUND"):new N("IO_ERROR")}function r(e){throw new N(e)}exports.AttachmentReceiveError=N;exports.RECEIVED_ID_RE=xe;exports.acquireReceiveRootLease=un;exports.inspectReceived=sn;exports.listReceived=fn;exports.readVerifiedReceived=cn;exports.receive=an;exports.removeReceived=ln;exports.sweepReceiveTemp=mn;exports.sweepReceiveTempDetailed=ht;exports.verifyMaterializedFile=dn;
@@ -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[];
@@ -1,3 +1,4 @@
1
+ export declare function normalizeClaudeMode(mode: string): string;
1
2
  export interface AgentOptionsLike {
2
3
  query?: unknown;
3
4
  execute?: unknown;
@@ -13,4 +14,5 @@ export interface CanonicalizeAgentOptionsResult {
13
14
  changed: boolean;
14
15
  removed: string[];
15
16
  }
17
+ export declare function normalizeProviderMode(providerId: string, mode: string): string;
16
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 = 38;
9
+ export declare const MODEL_CATALOG_UPDATED = "2026-10-29T00: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,36 @@ 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[];
52
+ suggestedModels?: ModelCatalogEntry[];
17
53
  modes: ProviderModeEntry[];
18
54
  effort: string[];
19
55
  modelOverrides: Record<string, ProviderModelOverride>;
56
+ providerOptions?: ProviderOptionSpec[];
20
57
  }
21
58
  export declare const PROVIDER_CATALOGS: Record<string, ProviderCatalogEntry>;
59
+ export declare const PROVIDER_DEFAULTS: ProviderDefaults;
22
60
  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 = 38;
4
+ export declare const MODEL_PRICING_UPDATED = "2026-10-29T00: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[];
@@ -1,2 +1,8 @@
1
1
  import type { IFsAdapter } from '../platform/IFsAdapter';
2
+ export interface GoalFileContent {
3
+ file: string;
4
+ path: string;
5
+ content: string;
6
+ }
7
+ export declare function loadActiveGoalFiles(goalPath: string, fs?: IFsAdapter, filter?: boolean | string | string[]): Promise<GoalFileContent[]>;
2
8
  export declare function loadActiveGoals(goalPath: string, fs?: IFsAdapter, filter?: boolean | string | string[]): Promise<string>;
@@ -0,0 +1,64 @@
1
+ import type { ConversationHighlight, ConversationThreadState, HistoryLookupNotice, 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
+ historyLookup?: HistoryLookupNotice;
62
+ applySafetyCap?: boolean;
63
+ }
64
+ export declare function buildSemanticContinuityContext(options: BuildSemanticContinuityContextOptions): SemanticContinuityContext;