@crewx/sdk 0.9.0-rc.17 → 0.9.0-rc.170

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 (343) 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.d.ts +167 -0
  22. package/dist/app/backend-env.d.ts +3 -0
  23. package/dist/app/content-media-types.d.ts +2 -0
  24. package/dist/app/context.d.ts +2 -0
  25. package/dist/app/entry.d.ts +9 -0
  26. package/dist/app/frame.d.ts +55 -0
  27. package/dist/app/index.d.ts +18 -0
  28. package/dist/app/index.js +12 -0
  29. package/dist/app/job-bridge.child.d.ts +1 -0
  30. package/dist/app/job-bridge.d.ts +67 -0
  31. package/dist/app/job-bridge.drain.child.d.ts +1 -0
  32. package/dist/app/job-bridge.example.d.ts +11 -0
  33. package/dist/app/job-contract.d.ts +40 -0
  34. package/dist/app/job-wire.d.ts +149 -0
  35. package/dist/app/protocol.d.ts +9 -0
  36. package/dist/app/runtime.d.ts +23 -0
  37. package/dist/app/schedule-contract.d.ts +59 -0
  38. package/dist/app/tool-mode.d.ts +3 -0
  39. package/dist/app-artifact-policy/check.d.ts +2 -0
  40. package/dist/app-artifact-policy/contract.d.ts +54 -0
  41. package/dist/app-artifact-policy/helper.d.ts +15 -0
  42. package/dist/app-artifact-policy/index.d.ts +3 -0
  43. package/dist/app-artifact-policy/index.js +18 -0
  44. package/dist/app-artifact-policy/paths.d.ts +24 -0
  45. package/dist/app-artifact-policy/scan.d.ts +47 -0
  46. package/dist/boxing/box.types.d.ts +4 -0
  47. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  48. package/dist/config/default-agent-models.d.ts +11 -0
  49. package/dist/config/global-settings.d.ts +33 -0
  50. package/dist/config/migrate-grok-mode.d.ts +6 -0
  51. package/dist/config/model-compat.d.ts +31 -0
  52. package/dist/config/models.generated.d.ts +37 -0
  53. package/dist/config/models.remote.d.ts +1 -0
  54. package/dist/config/overdrive.d.ts +7 -0
  55. package/dist/config/pricing.d.ts +6 -3
  56. package/dist/config/pricing.generated.d.ts +4 -0
  57. package/dist/config/pricing.types.d.ts +4 -0
  58. package/dist/config/timeout.config.d.ts +4 -0
  59. package/dist/config/wi-boards.d.ts +19 -0
  60. package/dist/context-budget/continuity.d.ts +63 -0
  61. package/dist/context-budget/index.d.ts +142 -0
  62. package/dist/conversation/index.d.ts +1 -1
  63. package/dist/conversation/sqlite-provider.d.ts +6 -3
  64. package/dist/conversation/to-template-messages.d.ts +9 -0
  65. package/dist/conversation/types.d.ts +58 -1
  66. package/dist/desktop/command-runner.d.ts +4 -0
  67. package/dist/desktop/default-adapters.d.ts +4 -0
  68. package/dist/desktop/global-install.d.ts +19 -0
  69. package/dist/desktop/index.d.ts +3 -0
  70. package/dist/desktop/index.js +3 -0
  71. package/dist/desktop/install.d.ts +5 -0
  72. package/dist/desktop/lnk.d.ts +22 -0
  73. package/dist/desktop/manifest.d.ts +21 -0
  74. package/dist/desktop/types.d.ts +67 -0
  75. package/dist/desktop/version.d.ts +1 -0
  76. package/dist/desktop/windows-paths.d.ts +21 -0
  77. package/dist/desktop/wrapper.d.ts +18 -0
  78. package/dist/esm/account/index.js +2 -0
  79. package/dist/esm/app/index.js +12 -0
  80. package/dist/esm/app-artifact-policy/index.js +18 -0
  81. package/dist/esm/desktop/index.js +3 -0
  82. package/dist/esm/index.js +1175 -224
  83. package/dist/esm/node/index.js +2 -0
  84. package/dist/esm/plugins/index.js +527 -214
  85. package/dist/esm/process/index.js +1 -0
  86. package/dist/esm/publish/index.js +2 -0
  87. package/dist/esm/repository/index.js +648 -211
  88. package/dist/esm/skills/index.js +2 -0
  89. package/dist/esm/testing/index.js +1 -1
  90. package/dist/events/types.d.ts +28 -0
  91. package/dist/facade/Crewx.d.ts +70 -5
  92. package/dist/facade/task-ticket.d.ts +14 -0
  93. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  94. package/dist/highlight/thread-highlighter.d.ts +326 -0
  95. package/dist/index.browser.d.ts +25 -1
  96. package/dist/index.browser.js +6 -2
  97. package/dist/index.d.ts +157 -17
  98. package/dist/index.js +1175 -224
  99. package/dist/internal/console-decoder.d.ts +38 -0
  100. package/dist/internal/windows-spawn.d.ts +10 -0
  101. package/dist/layout/types.d.ts +18 -1
  102. package/dist/lifecycle/process-lease.d.ts +80 -0
  103. package/dist/lifecycle/process-owner.d.ts +20 -0
  104. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  105. package/dist/lifecycle/task-stop.d.ts +82 -0
  106. package/dist/lifecycle/update-admission.d.ts +45 -0
  107. package/dist/local-server/base-url.d.ts +18 -0
  108. package/dist/local-server/index.d.ts +8 -0
  109. package/dist/local-server/opencode.d.ts +8 -0
  110. package/dist/local-server/probe.d.ts +3 -0
  111. package/dist/local-server/runtime.d.ts +26 -0
  112. package/dist/local-server/types.d.ts +43 -0
  113. package/dist/mcp-app/agent-access.d.ts +26 -0
  114. package/dist/mcp-app/app-handoff.d.ts +109 -0
  115. package/dist/mcp-app/app-icon-read.d.ts +7 -0
  116. package/dist/mcp-app/app-job-bridge.d.ts +30 -0
  117. package/dist/mcp-app/app-job-bridge.example.d.ts +36 -0
  118. package/dist/mcp-app/app-job.d.ts +168 -0
  119. package/dist/mcp-app/app-schedule.d.ts +85 -0
  120. package/dist/mcp-app/apps-context.d.ts +32 -0
  121. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  122. package/dist/mcp-app/candidate-registration.d.ts +4 -0
  123. package/dist/mcp-app/card-handler.d.ts +7 -0
  124. package/dist/mcp-app/catalog.d.ts +7 -0
  125. package/dist/mcp-app/content-channel.d.ts +86 -0
  126. package/dist/mcp-app/content-declarations.d.ts +31 -0
  127. package/dist/mcp-app/dev-checks.d.ts +31 -0
  128. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  129. package/dist/mcp-app/discovery.d.ts +164 -0
  130. package/dist/mcp-app/errors.d.ts +7 -0
  131. package/dist/mcp-app/index.d.ts +45 -0
  132. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  133. package/dist/mcp-app/model-context.d.ts +29 -0
  134. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  135. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  136. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  137. package/dist/mcp-app/projection.d.ts +14 -0
  138. package/dist/mcp-app/prompt-cards.d.ts +28 -0
  139. package/dist/mcp-app/registry.d.ts +28 -0
  140. package/dist/mcp-app/skill-backend.d.ts +141 -0
  141. package/dist/mcp-app/state-set.d.ts +9 -0
  142. package/dist/mcp-app/types.d.ts +488 -0
  143. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  144. package/dist/mcp-app/workspace-app-scan-cache.d.ts +27 -0
  145. package/dist/mcp-app/workspace-snapshot.d.ts +75 -0
  146. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  147. package/dist/migrations/0012_blue_turbo.sql +23 -0
  148. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  149. package/dist/migrations/0014_organic_mongu.sql +73 -0
  150. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  151. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  152. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  153. package/dist/migrations/0018_bored_jackal.sql +33 -0
  154. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  155. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  156. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  157. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  158. package/dist/migrations/0023_red_payback.sql +1 -0
  159. package/dist/migrations/0024_storage_metadata.sql +262 -0
  160. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  161. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  162. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  163. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  164. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  165. package/dist/migrations/0029_nice_rhino.sql +1 -0
  166. package/dist/migrations/0031_petite_arclight.sql +6 -0
  167. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  168. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  169. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  170. package/dist/migrations/0035_request_log_daily.sql +11 -0
  171. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  172. package/dist/migrations/0037_ui_instance_agent_open_request.sql +1 -0
  173. package/dist/migrations/0038_task_rating.sql +3 -0
  174. package/dist/migrations/0039_aspiring_purifiers.sql +9 -0
  175. package/dist/migrations/0040_task_provider_inputs.sql +53 -0
  176. package/dist/migrations/0041_tranquil_vivisector.sql +54 -0
  177. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  178. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  179. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  180. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  181. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  182. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  183. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  184. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  185. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  186. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  187. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  188. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  189. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  190. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  191. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  192. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  193. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  194. package/dist/migrations/meta/0037_snapshot.json +3598 -0
  195. package/dist/migrations/meta/0038_snapshot.json +3626 -0
  196. package/dist/migrations/meta/0039_snapshot.json +3684 -0
  197. package/dist/migrations/meta/0040_snapshot.json +3759 -0
  198. package/dist/migrations/meta/0041_snapshot.json +4156 -0
  199. package/dist/migrations/meta/_journal.json +217 -0
  200. package/dist/node/index.d.ts +1 -0
  201. package/dist/node/index.js +2 -0
  202. package/dist/paths.d.ts +1 -0
  203. package/dist/plugin/types.d.ts +1 -0
  204. package/dist/plugins/index.d.ts +1 -1
  205. package/dist/plugins/index.js +527 -214
  206. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  207. package/dist/process/index.d.ts +2 -0
  208. package/dist/process/index.js +1 -0
  209. package/dist/process/process-control.d.ts +60 -0
  210. package/dist/prompt/tag-names.d.ts +22 -0
  211. package/dist/provider/acp/connection.d.ts +6 -0
  212. package/dist/provider/acp/meta.d.ts +11 -0
  213. package/dist/provider/bridge.d.ts +12 -2
  214. package/dist/provider/classify-task-error.d.ts +2 -0
  215. package/dist/provider/claude-agent-env.d.ts +1 -0
  216. package/dist/provider/cli/adapter.types.d.ts +23 -2
  217. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  218. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  219. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  220. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  221. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  222. package/dist/provider/cli/adapters/index.d.ts +5 -0
  223. package/dist/provider/cli/index.d.ts +3 -2
  224. package/dist/provider/cli/meta.d.ts +5 -0
  225. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  226. package/dist/provider/errors.d.ts +5 -1
  227. package/dist/provider/idle-watchdog.d.ts +19 -0
  228. package/dist/provider/models.d.ts +17 -12
  229. package/dist/provider/order.d.ts +1 -1
  230. package/dist/provider/parse-usage.d.ts +6 -0
  231. package/dist/provider/provider-selection.d.ts +8 -0
  232. package/dist/provider/redact-technical-message.d.ts +1 -0
  233. package/dist/provider/task-error.types.d.ts +17 -0
  234. package/dist/provider-account/accounts.d.ts +15 -0
  235. package/dist/provider-account/index.d.ts +5 -0
  236. package/dist/provider-account/registry.d.ts +30 -0
  237. package/dist/provider-account/types.d.ts +40 -0
  238. package/dist/publish/constants.d.ts +6 -0
  239. package/dist/publish/errors.d.ts +7 -0
  240. package/dist/publish/index.d.ts +55 -0
  241. package/dist/publish/index.js +2 -0
  242. package/dist/publish/manifest.d.ts +47 -0
  243. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  244. package/dist/publish/pack.d.ts +6 -0
  245. package/dist/publish/scan.d.ts +10 -0
  246. package/dist/publish/secrets.d.ts +6 -0
  247. package/dist/publish/upload.d.ts +19 -0
  248. package/dist/remote/execution-profile.d.ts +9 -0
  249. package/dist/remote/index.d.ts +1 -0
  250. package/dist/remote/types.d.ts +28 -0
  251. package/dist/repository/agent-send-history.repository.d.ts +23 -0
  252. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  253. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  254. package/dist/repository/common-code.repository.d.ts +45 -0
  255. package/dist/repository/db.d.ts +12 -1
  256. package/dist/repository/index.d.ts +53 -6
  257. package/dist/repository/index.js +648 -211
  258. package/dist/repository/logs-db.d.ts +12 -0
  259. package/dist/repository/notification.repository.d.ts +58 -0
  260. package/dist/repository/project.repository.d.ts +90 -0
  261. package/dist/repository/public-task-answer.d.ts +24 -0
  262. package/dist/repository/request-log-mover.d.ts +70 -0
  263. package/dist/repository/request-log.repository.d.ts +7 -3
  264. package/dist/repository/sidebar-tab.repository.d.ts +86 -0
  265. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  266. package/dist/repository/task-log-migration.d.ts +74 -0
  267. package/dist/repository/task-log.repository.d.ts +44 -0
  268. package/dist/repository/task-status.d.ts +21 -0
  269. package/dist/repository/task.repository.d.ts +307 -8
  270. package/dist/repository/thread-history.repository.d.ts +193 -0
  271. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  272. package/dist/repository/thread-title.types.d.ts +29 -0
  273. package/dist/repository/thread.repository.d.ts +134 -5
  274. package/dist/repository/usage-backfill.d.ts +62 -0
  275. package/dist/repository/usage-from-logs.d.ts +21 -0
  276. package/dist/repository/workspace.repository.d.ts +3 -0
  277. package/dist/schema/agent-send-history.d.ts +85 -0
  278. package/dist/schema/agent-suggestions.d.ts +199 -0
  279. package/dist/schema/common-codes.d.ts +216 -0
  280. package/dist/schema/index.d.ts +16 -0
  281. package/dist/schema/notifications.d.ts +303 -0
  282. package/dist/schema/projects.d.ts +610 -0
  283. package/dist/schema/request-log-daily.d.ts +151 -0
  284. package/dist/schema/sidebar-tabs.d.ts +466 -0
  285. package/dist/schema/storage-metadata.d.ts +181 -0
  286. package/dist/schema/task-log-events.d.ts +119 -0
  287. package/dist/schema/task-provider-inputs.d.ts +100 -0
  288. package/dist/schema/tasks.d.ts +1058 -1
  289. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  290. package/dist/schema/thread-history.d.ts +734 -0
  291. package/dist/schema/threads.d.ts +59 -0
  292. package/dist/schema/ui-action-receipts.d.ts +358 -0
  293. package/dist/schema/ui-definition-archive.d.ts +63 -0
  294. package/dist/schema/ui-instance-repins.d.ts +222 -0
  295. package/dist/schema/ui-instances.d.ts +324 -0
  296. package/dist/schema/workspaces.d.ts +17 -0
  297. package/dist/skills/index.d.ts +15 -0
  298. package/dist/skills/index.js +2 -0
  299. package/dist/skills/types.d.ts +18 -0
  300. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  301. package/dist/task-log/delegation-trailer.d.ts +34 -0
  302. package/dist/template/engine.d.ts +2 -2
  303. package/dist/template/helpers/exec.browser.d.ts +4 -3
  304. package/dist/template/helpers/exec.d.ts +4 -3
  305. package/dist/template/helpers/format-conversation.d.ts +1 -0
  306. package/dist/template/types.d.ts +20 -0
  307. package/dist/testing/index.js +1 -1
  308. package/dist/types/index.d.ts +1611 -3
  309. package/dist/types/task-log.types.d.ts +6 -1
  310. package/dist/ui-card/index.d.ts +2 -0
  311. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  312. package/dist/ui-instance/definition.d.ts +6 -0
  313. package/dist/ui-instance/errors.d.ts +18 -0
  314. package/dist/ui-instance/index.d.ts +11 -0
  315. package/dist/ui-instance/json.d.ts +19 -0
  316. package/dist/ui-instance/lineage.d.ts +24 -0
  317. package/dist/ui-instance/runtime.d.ts +19 -0
  318. package/dist/ui-instance/store.d.ts +213 -0
  319. package/dist/ui-instance/types.d.ts +343 -0
  320. package/dist/ui-plugin/app-icon.d.ts +50 -0
  321. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  322. package/dist/ui-plugin/csp.d.ts +28 -0
  323. package/dist/ui-plugin/index.d.ts +8 -0
  324. package/dist/ui-plugin/limits.d.ts +27 -0
  325. package/dist/ui-plugin/manifest.d.ts +3 -0
  326. package/dist/ui-plugin/types.d.ts +207 -0
  327. package/dist/ui-plugin/validator.d.ts +18 -0
  328. package/dist/utils/crewx-executable.d.ts +76 -0
  329. package/dist/utils/crewx-home.d.ts +1 -0
  330. package/dist/utils/env-defaults.d.ts +3 -0
  331. package/dist/utils/id.d.ts +1 -1
  332. package/dist/utils/local-identity.d.ts +2 -0
  333. package/dist/utils/runner-env.d.ts +3 -0
  334. package/dist/utils/timestamp.d.ts +1 -0
  335. package/dist/utils/workspace.d.ts +1 -0
  336. package/dist/wi/create.d.ts +48 -0
  337. package/dist/wi/select.d.ts +20 -0
  338. package/package.json +63 -3
  339. package/templates/agents/default.yaml +303 -128
  340. package/templates/documents/crewx-manual.md +138 -138
  341. package/templates/documents/crewx-quick-guide.md +8 -7
  342. package/templates/workflows/wi-default-flow.yaml +65 -0
  343. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -0,0 +1,38 @@
1
+ export interface ConsoleDecoderOptions {
2
+ platform?: NodeJS.Platform;
3
+ detectCodePage?: () => Promise<number | null>;
4
+ codePage?: number | null;
5
+ }
6
+ export interface ConsoleBufferDecodeOptions {
7
+ platform?: NodeJS.Platform;
8
+ codePage?: number | null;
9
+ }
10
+ type ConsoleByteChunk = Buffer | Uint8Array<ArrayBufferLike>;
11
+ export declare function parseWindowsConsoleCodePage(output: string): number | null;
12
+ export declare function getWindowsConsoleCodePage(): Promise<number | null>;
13
+ export declare function primeWindowsConsoleCodePage(): void;
14
+ export declare class ConsoleDecoder {
15
+ private readonly platform;
16
+ private readonly detectCodePage;
17
+ private utf8Decoder;
18
+ private codePage;
19
+ private fallbackDecoder;
20
+ private replayTail;
21
+ private pendingUtf8;
22
+ private pendingFallback;
23
+ private pendingBytes;
24
+ private queue;
25
+ private ended;
26
+ constructor(options?: ConsoleDecoderOptions);
27
+ write(chunk: ConsoleByteChunk): Promise<string>;
28
+ end(): Promise<string>;
29
+ private enqueue;
30
+ private clearPendingCandidate;
31
+ private resolveCodePage;
32
+ private getFallbackDecoder;
33
+ private decodeChunk;
34
+ private finish;
35
+ }
36
+ export declare function decodeConsoleBuffer(input: ConsoleByteChunk, options?: ConsoleBufferDecodeOptions): string;
37
+ export declare function decodeConsoleBufferAsync(input: ConsoleByteChunk, options?: ConsoleDecoderOptions): Promise<string>;
38
+ export {};
@@ -20,15 +20,25 @@ export type WindowsSpawnInvocation = {
20
20
  shell?: boolean;
21
21
  windowsHide?: boolean;
22
22
  };
23
+ export type BinResolutionMode = 'global_first' | 'local_first';
24
+ export type ResolveExecutablePathOptions = {
25
+ cwd?: string;
26
+ env?: NodeJS.ProcessEnv;
27
+ platform?: NodeJS.Platform;
28
+ resolution?: BinResolutionMode;
29
+ };
23
30
  export type ResolveWindowsSpawnProgramParams = {
24
31
  command: string;
25
32
  platform?: NodeJS.Platform;
26
33
  env?: NodeJS.ProcessEnv;
27
34
  execPath?: string;
28
35
  packageName?: string;
36
+ cwd?: string;
37
+ resolution?: BinResolutionMode;
29
38
  allowShellFallback?: boolean;
30
39
  };
31
40
  export type ResolveWindowsSpawnProgramCandidateParams = Omit<ResolveWindowsSpawnProgramParams, 'allowShellFallback'>;
41
+ export declare function resolveExecutablePath(command: string, options?: ResolveExecutablePathOptions): string;
32
42
  export declare function resolveWindowsExecutablePath(command: string, env: NodeJS.ProcessEnv): string;
33
43
  export declare function resolveWindowsSpawnProgramCandidate(params: ResolveWindowsSpawnProgramCandidateParams): WindowsSpawnProgramCandidate;
34
44
  export declare function applyWindowsSpawnProgramPolicy(params: {
@@ -25,6 +25,13 @@ export interface LayoutDefinition {
25
25
  template: string;
26
26
  propsSchema: Record<string, PropSchema>;
27
27
  defaultProps: Record<string, any>;
28
+ capabilities?: LayoutCapabilities;
29
+ }
30
+ export interface LayoutCapabilities {
31
+ semanticContinuity?: boolean;
32
+ continuity?: boolean;
33
+ continuitySlot?: string;
34
+ slot?: string;
28
35
  }
29
36
  export interface CustomLayoutDefinition {
30
37
  template: string;
@@ -32,10 +39,15 @@ export interface CustomLayoutDefinition {
32
39
  version?: string;
33
40
  propsSchema?: Record<string, any>;
34
41
  defaultProps?: Record<string, any>;
42
+ capabilities?: LayoutCapabilities;
35
43
  }
36
44
  export type InlineLayoutSpec = string | {
37
45
  id: string;
38
46
  props?: Record<string, any>;
47
+ capabilities?: LayoutCapabilities;
48
+ } | {
49
+ template: string;
50
+ capabilities?: LayoutCapabilities;
39
51
  };
40
52
  export interface ValidationResult {
41
53
  valid: boolean;
@@ -97,6 +109,10 @@ export interface RenderContext {
97
109
  [key: string]: any;
98
110
  };
99
111
  context?: Record<string, any>;
112
+ semanticContinuity?: import('../conversation/types.js').SemanticContinuityContext;
113
+ thread_state?: import('../conversation/types.js').ConversationThreadState;
114
+ threadState?: import('../conversation/types.js').ConversationThreadState;
115
+ apps?: import('../mcp-app/apps-context.js').McpAppsContext;
100
116
  contextOptions?: {
101
117
  goals: boolean | string | string[];
102
118
  daily: boolean;
@@ -109,7 +125,8 @@ export interface RawLayoutYaml {
109
125
  description?: string;
110
126
  propsSchema?: Record<string, any>;
111
127
  template?: string;
112
- layouts?: Record<string, string>;
128
+ layouts?: Record<string, any>;
129
+ capabilities?: LayoutCapabilities;
113
130
  }
114
131
  export declare class LayoutLoadError extends Error {
115
132
  readonly layoutId?: string | undefined;
@@ -0,0 +1,80 @@
1
+ export declare const PROCESS_LEASE_FILENAME = "process-lease.json";
2
+ export type ProcessLeaseClock = () => number;
3
+ export interface ProcessLeaseProcessProbe {
4
+ isAlive(pid: number): boolean | 'unknown';
5
+ getStartIdentity(pid: number): string | null;
6
+ }
7
+ export interface ProcessLeaseRecord {
8
+ leaseId: string;
9
+ ownerId: string;
10
+ pid: number;
11
+ pidStartIdentity: string;
12
+ host: string;
13
+ startedAt: string;
14
+ heartbeatAt: string;
15
+ }
16
+ export interface ProcessLeaseOptions {
17
+ leasePath?: string;
18
+ ownerId?: string;
19
+ pid?: number;
20
+ pidStartIdentity?: string;
21
+ host?: string;
22
+ clock?: ProcessLeaseClock;
23
+ now?: ProcessLeaseClock;
24
+ processProbe?: ProcessLeaseProcessProbe;
25
+ probe?: ProcessLeaseProcessProbe;
26
+ }
27
+ export interface ProcessLeasePathOptions {
28
+ leasePath?: string;
29
+ }
30
+ export interface ProcessLeaseMutationOptions extends ProcessLeaseOptions {
31
+ leaseId: string;
32
+ ownerId: string;
33
+ }
34
+ export interface ProcessLeaseReclaimOptions extends ProcessLeaseOptions {
35
+ leaseId: string;
36
+ expectedOwnerId?: string;
37
+ }
38
+ export type ProcessLeaseReason = 'live-owner' | 'pid-reused' | 'owner-dead' | 'identity-unknown' | 'marker-corrupt' | 'marker-unreadable' | 'contention' | 'owner-mismatch' | 'io-error' | 'invalid-options';
39
+ export type ProcessLeaseReadResult = {
40
+ status: 'absent';
41
+ } | {
42
+ status: 'present';
43
+ record: ProcessLeaseRecord;
44
+ } | {
45
+ status: 'unknown';
46
+ reason: 'marker-corrupt' | 'marker-unreadable' | 'io-error';
47
+ };
48
+ export interface ProcessLeaseHandle {
49
+ readonly leasePath: string;
50
+ readonly leaseId: string;
51
+ readonly ownerId: string;
52
+ readonly pid: number;
53
+ readonly pidStartIdentity: string;
54
+ readonly record: ProcessLeaseRecord;
55
+ renew(): boolean;
56
+ release(): boolean;
57
+ }
58
+ export type ProcessLeaseAcquireResult = {
59
+ acquired: true;
60
+ status: 'owner';
61
+ role: 'owner';
62
+ leaseId: string;
63
+ ownerId: string;
64
+ record: ProcessLeaseRecord;
65
+ lease: ProcessLeaseHandle;
66
+ } | {
67
+ acquired: false;
68
+ status: 'standby';
69
+ role: 'standby';
70
+ reason: ProcessLeaseReason;
71
+ record?: ProcessLeaseRecord;
72
+ };
73
+ export declare function resolveProcessLeasePath(input?: string | ProcessLeasePathOptions): string;
74
+ export declare function getProcessStartIdentity(pid: number): string | null;
75
+ export declare const getProcessStartTime: typeof getProcessStartIdentity;
76
+ export declare function readProcessLease(input?: string | ProcessLeasePathOptions): ProcessLeaseReadResult;
77
+ export declare function acquireProcessLease(options?: ProcessLeaseOptions): ProcessLeaseAcquireResult;
78
+ export declare function renewProcessLease(options: ProcessLeaseMutationOptions): boolean;
79
+ export declare function releaseProcessLease(options: ProcessLeaseMutationOptions): boolean;
80
+ export declare function reclaimProcessLease(options: ProcessLeaseReclaimOptions): boolean;
@@ -0,0 +1,20 @@
1
+ export interface ProcessOwnerIdentity {
2
+ pid: number;
3
+ pidStartIdentity: string;
4
+ host: string;
5
+ }
6
+ export interface ProcessOwnerProbe {
7
+ isAlive(pid: number): boolean | 'unknown';
8
+ getStartIdentity(pid: number): string | null;
9
+ }
10
+ export type ProcessOwnerAssessment = {
11
+ kind: 'live';
12
+ } | {
13
+ kind: 'dead';
14
+ } | {
15
+ kind: 'reused';
16
+ } | {
17
+ kind: 'unknown';
18
+ reason: 'identity-unknown';
19
+ };
20
+ export declare function assessProcessOwner(recorded: ProcessOwnerIdentity, current: ProcessOwnerIdentity, probe: ProcessOwnerProbe): ProcessOwnerAssessment;
@@ -0,0 +1,41 @@
1
+ import type { TaskRepository } from '../repository/task.repository.js';
2
+ export declare const TASK_HEARTBEAT_INTERVAL_MS = 10000;
3
+ export declare const TASK_HEARTBEAT_STALE_MS = 30000;
4
+ export declare const TASK_HEARTBEAT_HARD_STALE_MS: number;
5
+ export declare const TASK_STOP_POLL_INTERVAL_MS = 1000;
6
+ export declare function resolveTaskHeartbeatIntervalMs(): number;
7
+ export declare function resolveTaskHeartbeatStaleMs(): number;
8
+ export declare function resolveTaskHeartbeatHardStaleMs(): number;
9
+ export interface TaskHeartbeatRow {
10
+ id?: string;
11
+ status: string;
12
+ run_epoch: number | null;
13
+ stop_requested_at: string | null;
14
+ stop_requested_epoch: number | null;
15
+ pid?: number | null;
16
+ metadata?: string | null;
17
+ started_at?: string;
18
+ duration_ms?: number | null;
19
+ }
20
+ export interface HeartbeatTickResult {
21
+ accepted: boolean;
22
+ row: TaskHeartbeatRow | null;
23
+ }
24
+ export interface TaskHeartbeatOptions {
25
+ taskId: string;
26
+ runEpoch: number;
27
+ onStopRequested?: (row: TaskHeartbeatRow) => void | Promise<void>;
28
+ }
29
+ export interface TaskHeartbeatHandle {
30
+ timer: ReturnType<typeof setInterval>;
31
+ runEpoch: number;
32
+ stopRequested: boolean;
33
+ lastHeartbeatAt: number;
34
+ heartbeatElapsedMs: number;
35
+ }
36
+ export declare const taskHeartbeatRegistry: Map<string, TaskHeartbeatHandle>;
37
+ export declare function runHeartbeatTick(repo: Pick<TaskRepository, 'heartbeatTask' | 'getTask'>, options: TaskHeartbeatOptions & {
38
+ writeHeartbeat?: boolean;
39
+ }): HeartbeatTickResult;
40
+ export declare function stopTaskHeartbeat(taskId: string, runEpoch?: number | null): boolean;
41
+ export declare function startTaskHeartbeat(repo: Pick<TaskRepository, 'heartbeatTask' | 'getTask'>, options: TaskHeartbeatOptions): boolean;
@@ -0,0 +1,82 @@
1
+ import type { FinalizeTaskForHostShutdownOptions, FinalizeTaskForHostShutdownOutcome, FinalizeTaskStopOptions, TaskRepository, TaskRow, TaskStopOrigin, TaskStopRequestResult } from '../repository/task.repository.js';
2
+ import { checkProcessOwnershipAsync as defaultCheckProcessOwnershipAsync, terminateProcessTree as defaultTerminateProcessTree, type ProcessControlOptions } from '../process/process-control.js';
3
+ export declare const TASK_STOP_DEFAULT_GRACE_MS = 5000;
4
+ export declare const TASK_STOP_DEFAULT_POLL_MS = 250;
5
+ export declare function resolveTaskStopMethod(requestedAt: string | null | undefined, completedAt?: string | number, graceMs?: number): 'cooperative' | 'forced';
6
+ export declare const TASK_STOP_OWNED_PROCESS_MARKERS: readonly ["crewx", "claude", "codex", "opencode", "grok", "node"];
7
+ export type StopTaskStatus = 'stopped' | 'not_running' | 'already_requested' | 'ownership_unverified' | 'failed';
8
+ export interface StopTaskResult {
9
+ status: StopTaskStatus;
10
+ method?: 'cooperative' | 'forced';
11
+ finalStatus: string | null;
12
+ pid?: number;
13
+ error?: string;
14
+ }
15
+ export interface StopTaskProcessControl {
16
+ checkProcessOwnershipAsync?: typeof defaultCheckProcessOwnershipAsync;
17
+ terminateProcessTree?: typeof defaultTerminateProcessTree;
18
+ }
19
+ export interface StopTaskOptions {
20
+ origin?: TaskStopOrigin;
21
+ callerPid?: number;
22
+ callerTaskId?: string;
23
+ graceMs?: number;
24
+ pollMs?: number;
25
+ platform?: NodeJS.Platform;
26
+ ownershipMarkers?: readonly string[];
27
+ processControl?: StopTaskProcessControl;
28
+ processControlOptions?: ProcessControlOptions;
29
+ }
30
+ export interface StopTaskGenerationForInstructionOptions {
31
+ taskId: string;
32
+ targetPid: number | null | undefined;
33
+ sourceRunEpoch: number;
34
+ settleRunEpoch: number;
35
+ workspaceId?: string | null;
36
+ platform?: NodeJS.Platform;
37
+ ownershipMarkers?: readonly string[];
38
+ processControl?: StopTaskProcessControl;
39
+ processControlOptions?: ProcessControlOptions;
40
+ }
41
+ export interface StopTaskForHostShutdownOptions {
42
+ taskId: string;
43
+ expectedRunEpoch: number;
44
+ workspaceId?: string | null;
45
+ platform?: NodeJS.Platform;
46
+ ownershipMarkers?: readonly string[];
47
+ processControl?: StopTaskProcessControl;
48
+ processControlOptions?: ProcessControlOptions;
49
+ }
50
+ export declare const INSTRUCTION_STOP_TARGET_PID_MISSING = "INSTRUCTION_STOP_TARGET_PID_MISSING";
51
+ export declare const INSTRUCTION_STOP_EPOCH_MISMATCH = "INSTRUCTION_STOP_EPOCH_MISMATCH";
52
+ export declare const INSTRUCTION_STOP_WORKSPACE_MISMATCH = "INSTRUCTION_STOP_WORKSPACE_MISMATCH";
53
+ export declare const INSTRUCTION_STOP_GENERATION_ALREADY_SETTLED = "INSTRUCTION_STOP_GENERATION_ALREADY_SETTLED";
54
+ export declare const INSTRUCTION_STOP_PROCESS_TERMINATION_FAILED = "INSTRUCTION_STOP_PROCESS_TERMINATION_FAILED";
55
+ export declare const INSTRUCTION_STOP_SETTLE_CAS_FAILED = "INSTRUCTION_STOP_SETTLE_CAS_FAILED";
56
+ export declare const INSTRUCTION_STOP_REQUEST_FAILED = "INSTRUCTION_STOP_REQUEST_FAILED";
57
+ export declare const HOST_SHUTDOWN_EPOCH_MISMATCH = "HOST_SHUTDOWN_EPOCH_MISMATCH";
58
+ export declare const HOST_SHUTDOWN_WORKSPACE_MISMATCH = "HOST_SHUTDOWN_WORKSPACE_MISMATCH";
59
+ export declare const HOST_SHUTDOWN_TARGET_PID_MISSING = "HOST_SHUTDOWN_TARGET_PID_MISSING";
60
+ export declare const HOST_SHUTDOWN_OWNERSHIP_UNVERIFIED = "HOST_SHUTDOWN_OWNERSHIP_UNVERIFIED";
61
+ export declare const HOST_SHUTDOWN_PROCESS_TERMINATION_FAILED = "HOST_SHUTDOWN_PROCESS_TERMINATION_FAILED";
62
+ export declare const HOST_SHUTDOWN_SETTLE_CAS_FAILED = "HOST_SHUTDOWN_SETTLE_CAS_FAILED";
63
+ type StopTaskRepository = Pick<TaskRepository, 'requestTaskStop' | 'stopPendingTask' | 'getTask' | 'finalizeTaskStop'>;
64
+ interface InstructionStopRepository {
65
+ requestTaskStop: (options: {
66
+ id: string;
67
+ requestedAt: string;
68
+ sourceRunEpoch: number;
69
+ settleRunEpoch: number;
70
+ workspaceId?: string | null;
71
+ }) => TaskStopRequestResult;
72
+ getTask: (taskId: string) => TaskRow | undefined;
73
+ finalizeTaskStop: (options: FinalizeTaskStopOptions) => boolean;
74
+ }
75
+ type HostShutdownRepository = Pick<TaskRepository, 'getTask'> & {
76
+ finalizeTaskForHostShutdown: (options: FinalizeTaskForHostShutdownOptions) => FinalizeTaskForHostShutdownOutcome;
77
+ };
78
+ export declare function stopTaskGenerationForInstruction(repo: InstructionStopRepository, options: StopTaskGenerationForInstructionOptions): Promise<StopTaskResult>;
79
+ export declare function stopTaskForHostShutdown(repo: HostShutdownRepository, options: StopTaskForHostShutdownOptions): Promise<StopTaskResult>;
80
+ export declare function stopTask(taskId: string, options?: StopTaskOptions): Promise<StopTaskResult>;
81
+ export declare function stopTask(repo: StopTaskRepository, taskId: string, options?: StopTaskOptions): Promise<StopTaskResult>;
82
+ export {};
@@ -0,0 +1,45 @@
1
+ export declare const UPDATE_QUIESCE_LOCK_FILENAME = "update-quiesce.lock";
2
+ export declare const UPDATE_ADMISSION_RESERVATION_DIRNAME = "update-admission";
3
+ export declare const UPDATE_ADMISSION_SCOPE_ENV = "CREWX_UPDATE_ADMISSION_SCOPE";
4
+ export declare function resolveUpdateQuiesceLockFile(): string;
5
+ export declare function resolveUpdateAdmissionReservationDir(): string;
6
+ export declare function isProcessAlive(pid: number): boolean;
7
+ export declare function isDurablyQuiescing(): boolean;
8
+ export type DurableQuiesceMarkerState = {
9
+ kind: 'absent';
10
+ } | {
11
+ kind: 'owned';
12
+ ownerPid: number;
13
+ } | {
14
+ kind: 'unknown';
15
+ };
16
+ export declare function readDurableQuiesceMarkerOwner(): DurableQuiesceMarkerState;
17
+ export type AdmissionMarkerResult = {
18
+ ok: true;
19
+ } | {
20
+ ok: false;
21
+ reason: string;
22
+ };
23
+ export declare function acquireDurableQuiesceMarker(ownerPid: number): AdmissionMarkerResult;
24
+ export declare function releaseDurableQuiesceMarker(ownerPid: number): AdmissionMarkerResult;
25
+ export type ReconcileOutcome = 'absent' | 'cleared' | 'kept-live' | 'kept-unknown';
26
+ export declare function reconcileDurableQuiesceMarkerIfOwnerDead(): ReconcileOutcome;
27
+ export interface UpdateAdmissionReservationEntry {
28
+ taskId: string;
29
+ scheduleId: string;
30
+ corrupt: boolean;
31
+ }
32
+ export declare function reserveUpdateAdmission(taskId: string, scheduleId: string, timeoutMs: number): boolean;
33
+ export declare function releaseUpdateAdmissionReservation(taskId: string): void;
34
+ export declare function readUpdateAdmissionReservations(): UpdateAdmissionReservationEntry[];
35
+ export type DurableTaskAdmission = {
36
+ ok: true;
37
+ taskId: string;
38
+ release: () => void;
39
+ } | {
40
+ ok: false;
41
+ reason: 'ADMISSION_UNKNOWN' | 'UPDATE_QUIESCING';
42
+ message: string;
43
+ };
44
+ export declare const DEFAULT_CLI_ADMISSION_TIMEOUT_MS: number;
45
+ export declare function admitDurableTask(source: string, timeoutMs?: number): DurableTaskAdmission;
@@ -0,0 +1,18 @@
1
+ export declare const LOCAL_SERVER_BASE_URL_MAX_LENGTH = 2048;
2
+ export type LocalServerHostClass = 'loopback' | 'private-ipv4' | 'cgnat' | 'unique-local-ipv6';
3
+ export type LocalServerBaseUrlErrorCode = 'invalid_input' | 'url_too_long' | 'invalid_scheme' | 'invalid_url' | 'userinfo_not_allowed' | 'query_not_allowed' | 'fragment_not_allowed' | 'invalid_port' | 'host_not_ip_literal' | 'zone_id' | 'loopback_not_allowed' | 'metadata_address' | 'link_local' | 'multicast' | 'unspecified' | 'ipv4_mapped_ipv6' | 'ip_not_allowed';
4
+ export interface LocalServerBaseUrlOptions {
5
+ allowLoopback?: boolean;
6
+ }
7
+ export interface LocalServerBaseUrlSuccess {
8
+ ok: true;
9
+ normalizedBaseUrl: string;
10
+ hostClass: LocalServerHostClass;
11
+ }
12
+ export interface LocalServerBaseUrlFailure {
13
+ ok: false;
14
+ code: LocalServerBaseUrlErrorCode;
15
+ }
16
+ export type LocalServerBaseUrlResult = LocalServerBaseUrlSuccess | LocalServerBaseUrlFailure;
17
+ export declare function parseLocalServerBaseUrl(value: unknown, options?: LocalServerBaseUrlOptions): LocalServerBaseUrlResult;
18
+ export declare function isAllowedLocalServerIp(value: string, options?: LocalServerBaseUrlOptions): boolean;
@@ -0,0 +1,8 @@
1
+ export { isAllowedLocalServerIp, parseLocalServerBaseUrl, } from './base-url';
2
+ export type { LocalServerBaseUrlErrorCode, LocalServerBaseUrlFailure, LocalServerBaseUrlOptions, LocalServerBaseUrlResult, LocalServerBaseUrlSuccess, LocalServerHostClass, } from './base-url';
3
+ export { DEFAULT_LOCAL_SERVER_PROBE_TIMEOUT_MS, probeLocalServer } from './probe';
4
+ export type { LocalServerDefinition, LocalServerFetch, LocalServerKind, LocalServerModel, LocalServerOpenCodeOverlay, LocalServerProbeOptions, LocalServerProbeReason, LocalServerProbeResponse, LocalServerProbeResult, LocalServerSettings, } from './types';
5
+ export { buildLocalServerOpenCodeOverlay, LocalServerOpenCodeOverlayError, } from './opencode';
6
+ export type { LocalServerOpenCodeOverlayErrorCode } from './opencode';
7
+ export { isLocalServerRuntimeEligible, resolveLocalServerRuntime, LocalServerRuntimeError, LOCAL_AI_SERVER_CONFIG_INVALID, } from './runtime';
8
+ export type { LocalServerRuntimeMetadata, LocalServerRuntimeOptions, LocalServerRuntimeResolution, } from './runtime';
@@ -0,0 +1,8 @@
1
+ import type { LocalServerOpenCodeOverlay, LocalServerSettings } from './types';
2
+ export type LocalServerOpenCodeOverlayErrorCode = 'missing_default_model' | 'invalid_default_model' | 'invalid_label' | 'invalid_provider_id' | 'invalid_api_key_env' | 'invalid_base_url';
3
+ export declare class LocalServerOpenCodeOverlayError extends Error {
4
+ readonly code: LocalServerOpenCodeOverlayErrorCode;
5
+ readonly name = "LocalServerOpenCodeOverlayError";
6
+ constructor(code: LocalServerOpenCodeOverlayErrorCode);
7
+ }
8
+ export declare function buildLocalServerOpenCodeOverlay(settings: LocalServerSettings): LocalServerOpenCodeOverlay;
@@ -0,0 +1,3 @@
1
+ import type { LocalServerProbeOptions, LocalServerProbeResult } from './types.js';
2
+ export declare const DEFAULT_LOCAL_SERVER_PROBE_TIMEOUT_MS = 3000;
3
+ export declare function probeLocalServer(baseUrl: string, options?: LocalServerProbeOptions): Promise<LocalServerProbeResult>;
@@ -0,0 +1,26 @@
1
+ import type { GlobalSettingsStore } from '../config/global-settings';
2
+ export declare const LOCAL_AI_SERVER_CONFIG_INVALID: "LOCAL_AI_SERVER_CONFIG_INVALID";
3
+ export interface LocalServerRuntimeMetadata {
4
+ providerId: string;
5
+ model: string;
6
+ source: 'global_settings';
7
+ }
8
+ export interface LocalServerRuntimeResolution {
9
+ model?: string;
10
+ env?: {
11
+ OPENCODE_CONFIG_CONTENT: string;
12
+ };
13
+ metadata?: LocalServerRuntimeMetadata;
14
+ }
15
+ export interface LocalServerRuntimeOptions {
16
+ effectiveProviderStr: string;
17
+ effectiveModel?: string;
18
+ globalSettings?: GlobalSettingsStore;
19
+ }
20
+ export declare class LocalServerRuntimeError extends Error {
21
+ readonly name = "LocalServerRuntimeError";
22
+ readonly code: "LOCAL_AI_SERVER_CONFIG_INVALID";
23
+ constructor();
24
+ }
25
+ export declare function isLocalServerRuntimeEligible(effectiveProviderStr: string, effectiveModel: string | undefined): boolean;
26
+ export declare function resolveLocalServerRuntime(options: LocalServerRuntimeOptions): LocalServerRuntimeResolution;
@@ -0,0 +1,43 @@
1
+ export type LocalServerKind = 'ollama' | 'lm-studio' | 'unsloth-desktop';
2
+ export interface LocalServerDefinition {
3
+ id: string;
4
+ label: string;
5
+ kind: LocalServerKind;
6
+ baseUrl: string;
7
+ discovery: 'tailscale' | 'manual';
8
+ defaultModel?: string;
9
+ auth?: {
10
+ apiKeyEnv: string;
11
+ };
12
+ }
13
+ export interface LocalServerSettings {
14
+ version: 1;
15
+ definition: LocalServerDefinition;
16
+ verifiedAt: string;
17
+ }
18
+ export interface LocalServerOpenCodeOverlay {
19
+ env: {
20
+ OPENCODE_CONFIG_CONTENT: string;
21
+ };
22
+ model: string;
23
+ providerId: string;
24
+ }
25
+ export interface LocalServerModel {
26
+ id: string;
27
+ }
28
+ export type LocalServerProbeReason = 'http_error' | 'timeout' | 'network_error' | 'invalid_json' | 'invalid_envelope';
29
+ export interface LocalServerProbeResponse {
30
+ readonly ok: boolean;
31
+ json(): Promise<unknown>;
32
+ }
33
+ export type LocalServerFetch = (url: string, init?: RequestInit) => Promise<LocalServerProbeResponse>;
34
+ export interface LocalServerProbeOptions {
35
+ timeoutMs?: number;
36
+ fetch?: LocalServerFetch;
37
+ }
38
+ export interface LocalServerProbeResult {
39
+ ok: boolean;
40
+ models: LocalServerModel[];
41
+ latencyMs: number;
42
+ reason?: LocalServerProbeReason;
43
+ }
@@ -0,0 +1,26 @@
1
+ import type { UiActionConfirmation } from '../ui-instance/types.js';
2
+ import type { UiDefinition } from '../ui-instance/types.js';
3
+ import type { ProductAppBundleProvenance } from './discovery.js';
4
+ export type McpAppAgentAccess = 'allowed' | 'approval_required' | 'denied';
5
+ export interface McpAppAgentAccessAction {
6
+ readonly actionId: string;
7
+ readonly confirmation: UiActionConfirmation | undefined;
8
+ readonly content?: unknown;
9
+ readonly backend?: {
10
+ readonly type: 'core';
11
+ readonly handler: string;
12
+ } | {
13
+ readonly type: 'skill';
14
+ readonly command?: readonly string[];
15
+ };
16
+ }
17
+ export interface McpAppVerifiedBundleAccessContext {
18
+ readonly appId: string;
19
+ readonly definition: UiDefinition;
20
+ readonly provenance: ProductAppBundleProvenance;
21
+ }
22
+ export declare function resolveAgentAccess(action: McpAppAgentAccessAction, modelActions?: readonly string[], bundle?: McpAppVerifiedBundleAccessContext): McpAppAgentAccess;
23
+ export declare function listMcpAppAgentActions(actions: readonly McpAppAgentAccessAction[], modelActions?: readonly string[], bundle?: McpAppVerifiedBundleAccessContext): readonly {
24
+ readonly actionId: string;
25
+ readonly access: McpAppAgentAccess;
26
+ }[];
@@ -0,0 +1,109 @@
1
+ import type { ActionReceiptOutcome, JsonValue } from '../ui-instance/types.js';
2
+ export declare const CREWX_OPEN_APP_CAPABILITY = "crewx/openApp";
3
+ export declare const CREWX_OPEN_APP_CAPABILITY_VERSION = 1;
4
+ export declare const CREWX_OPEN_APP_METHOD = "ui/crewx-open-app";
5
+ export declare const CREWX_OPEN_APP_STATUS_METHOD = "ui/crewx-open-app-status";
6
+ export declare const CREWX_OPEN_APP_MAX_PARAMS_BYTES = 32768;
7
+ export declare const CREWX_OPEN_APP_MAX_JSON_DEPTH = 8;
8
+ export declare const CREWX_OPEN_APP_SUCCESS_STATUSES: readonly ["opened", "completed", "pending"];
9
+ export declare const UI_APP_OPEN_ERROR_CODES: readonly ["UI_APP_OPEN_INVALID", "UI_APP_OPEN_UNAVAILABLE", "UI_APP_OPEN_GESTURE_REQUIRED", "UI_APP_OPEN_STALE", "UI_APP_OPEN_BUSY", "UI_APP_OPEN_REJECTED", "UI_APP_OPEN_FAILED", "UI_APP_OPEN_REQUEST_ID_CONFLICT"];
10
+ export declare const UI_APP_OPEN_CAUSE_CODES: readonly ["RECEIPT_FAILED", "RECEIPT_REJECTED", "RECEIPT_CONFLICTED", "RECEIPT_EXPIRED", "LEDGER_MISSING", "LEDGER_EXPIRED"];
11
+ export type CrewxOpenAppSuccessStatus = (typeof CREWX_OPEN_APP_SUCCESS_STATUSES)[number];
12
+ export type UiAppOpenErrorCode = (typeof UI_APP_OPEN_ERROR_CODES)[number];
13
+ export type UiAppOpenCauseCode = (typeof UI_APP_OPEN_CAUSE_CODES)[number];
14
+ export interface CrewxOpenAppCapabilityDeclaration {
15
+ readonly version: typeof CREWX_OPEN_APP_CAPABILITY_VERSION;
16
+ readonly sessionId: string;
17
+ }
18
+ export interface CrewxOpenAppAction {
19
+ readonly actionId: string;
20
+ readonly input: Record<string, JsonValue>;
21
+ }
22
+ export interface CrewxOpenAppRequest {
23
+ readonly requestId: string;
24
+ readonly appId: string;
25
+ readonly action?: CrewxOpenAppAction;
26
+ }
27
+ export interface CrewxOpenAppStatusRequest {
28
+ readonly requestId: string;
29
+ }
30
+ export interface CrewxOpenAppSuccessResult {
31
+ readonly status: CrewxOpenAppSuccessStatus;
32
+ readonly appId: string;
33
+ readonly instanceId: string;
34
+ readonly requestId: string;
35
+ }
36
+ export interface CrewxOpenAppErrorResult {
37
+ readonly isError: true;
38
+ readonly _meta: {
39
+ readonly errorCode: UiAppOpenErrorCode;
40
+ readonly causeCode?: UiAppOpenCauseCode;
41
+ };
42
+ }
43
+ export type CrewxOpenAppResult = CrewxOpenAppSuccessResult | CrewxOpenAppErrorResult;
44
+ export interface CrewxOpenAppSourceBinding {
45
+ readonly workspaceId: string;
46
+ readonly threadId: string;
47
+ readonly instanceId: string;
48
+ readonly definition: {
49
+ readonly id: string;
50
+ readonly version: number;
51
+ readonly hash: string;
52
+ };
53
+ readonly entryHash: string;
54
+ }
55
+ export interface CrewxOpenAppLedgerRecord {
56
+ readonly source: CrewxOpenAppSourceBinding;
57
+ readonly payloadDigest: string;
58
+ }
59
+ export type CrewxOpenAppLedgerLookup = {
60
+ readonly kind: 'absent';
61
+ readonly capacity: 'available' | 'full';
62
+ } | {
63
+ readonly kind: 'present';
64
+ readonly record: CrewxOpenAppLedgerRecord;
65
+ };
66
+ export interface CrewxOpenAppDecisionInput {
67
+ readonly requestId: string;
68
+ readonly activeSessionId: string;
69
+ readonly lookup: CrewxOpenAppLedgerLookup;
70
+ readonly source: CrewxOpenAppSourceBinding;
71
+ }
72
+ export type CrewxOpenAppIdempotencyDecision = 'new' | 'known' | 'conflict' | 'stale' | 'busy';
73
+ export type CrewxOpenAppReceiptLookup = {
74
+ readonly kind: 'pending';
75
+ } | {
76
+ readonly kind: 'receipt';
77
+ readonly status: 'requested' | 'settled';
78
+ readonly outcome: ActionReceiptOutcome | null;
79
+ };
80
+ export type CrewxOpenAppActionOutcome = {
81
+ readonly state: 'pending';
82
+ } | {
83
+ readonly state: 'completed';
84
+ } | {
85
+ readonly state: 'failed';
86
+ readonly errorCode: UiAppOpenErrorCode;
87
+ readonly causeCode: UiAppOpenCauseCode;
88
+ };
89
+ export declare class CrewxOpenAppError extends Error {
90
+ readonly errorCode: UiAppOpenErrorCode;
91
+ readonly causeCode?: UiAppOpenCauseCode | undefined;
92
+ readonly name = "CrewxOpenAppError";
93
+ constructor(errorCode: UiAppOpenErrorCode, causeCode?: UiAppOpenCauseCode | undefined);
94
+ }
95
+ export declare function createCrewxOpenAppCapabilityDeclaration(sessionId: string): CrewxOpenAppCapabilityDeclaration;
96
+ export declare function parseCrewxOpenAppCapabilityDeclaration(value: unknown): CrewxOpenAppCapabilityDeclaration;
97
+ export declare function createCrewxOpenAppRequestId(sessionId: string, uniqueSuffix: string): string;
98
+ export declare function canonicalCrewxOpenAppPayload(value: unknown): string;
99
+ export declare function parseCrewxOpenAppRequest(value: unknown): CrewxOpenAppRequest;
100
+ export declare function parseCrewxOpenAppStatusRequest(value: unknown): CrewxOpenAppStatusRequest;
101
+ export declare function createCrewxOpenAppSuccessResult(result: CrewxOpenAppSuccessResult): CrewxOpenAppSuccessResult;
102
+ export declare function createCrewxOpenAppErrorResult(errorCode: UiAppOpenErrorCode, causeCode?: UiAppOpenCauseCode): CrewxOpenAppErrorResult;
103
+ export declare function parseCrewxOpenAppResult(value: unknown): CrewxOpenAppResult;
104
+ export declare function resolveCrewxOpenAppActionOutcome(lookup: CrewxOpenAppReceiptLookup): CrewxOpenAppActionOutcome;
105
+ export declare function isSameCrewxOpenAppSourceBinding(left: CrewxOpenAppSourceBinding, right: CrewxOpenAppSourceBinding): boolean;
106
+ export declare function decideCrewxOpenAppOpen(input: CrewxOpenAppDecisionInput & {
107
+ readonly payloadDigest: string;
108
+ }): CrewxOpenAppIdempotencyDecision;
109
+ export declare function decideCrewxOpenAppStatus(input: CrewxOpenAppDecisionInput): 'known' | 'stale';
@@ -0,0 +1,7 @@
1
+ import type { AppIconContentType, AppIconFile } from '../ui-plugin/app-icon.js';
2
+ export interface WorkspaceAppIconBytes {
3
+ readonly bytes: Uint8Array;
4
+ readonly contentType: AppIconContentType;
5
+ readonly sha256: string;
6
+ }
7
+ export declare function readWorkspaceAppIconFile(workspaceRoot: string, appRelativePath: string, iconFile: AppIconFile): Promise<WorkspaceAppIconBytes | undefined>;