@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5

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 (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -0,0 +1,243 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { KernelDb } from "../infra/database/kernel-db.js";
12
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
13
+ import { SandboxService } from "../sandbox/sandbox.service.js";
14
+ import { BackgroundTaskFinisher, } from "./finish.js";
15
+ import { TASKS_DIR } from "./launch.js";
16
+ import { actingAs, assertTaskRef, decodeTail, killSession, tailCommand, taskActor, } from "./session.js";
17
+ import { BackgroundTaskStore } from "./store.js";
18
+ /** How long a stop waits after SIGTERM before SIGKILL (spec §2.3). */
19
+ export const STOP_GRACE_MS = 5000;
20
+ /** The time limit of the SIGTERM exec: the grace period plus some room. */
21
+ const TERM_EXEC_TIMEOUT_MS = STOP_GRACE_MS + 5000;
22
+ /** The time limit of reading the last lines after a stop. */
23
+ const TAIL_EXEC_TIMEOUT_MS = 10_000;
24
+ /**
25
+ * Exit code 0 with `exited <code>` when the task had already finished (its exit file exists),
26
+ * else sends SIGTERM to the session and waits up to {@link STOP_GRACE_MS} for it to empty, then
27
+ * prints `term`. Relative to `/workspace`.
28
+ */
29
+ function termScript(id, sid) {
30
+ const f = `${TASKS_DIR}/${id}`;
31
+ const tries = Math.ceil(STOP_GRACE_MS / 200);
32
+ return [
33
+ `if [ -s ${f}.exit ]; then echo "exited $(cat ${f}.exit)"; exit 0; fi`,
34
+ `pkill -TERM -s ${sid} >/dev/null 2>&1`,
35
+ `i=0; while [ "$i" -lt ${tries} ] && pgrep -s ${sid} >/dev/null 2>&1; do sleep 0.2; i=$((i+1)); done`,
36
+ "echo term",
37
+ ].join("\n");
38
+ }
39
+ /** How a task that exited by itself ends (spec §4.3): exit 137 past its deadline timed out. */
40
+ export function exitedAs(task, code, now) {
41
+ if (code === 0)
42
+ return { status: "completed", exitCode: 0 };
43
+ if (code === 137 && now.getTime() >= task.deadlineAt.getTime()) {
44
+ return { status: "timed_out", exitCode: 137 };
45
+ }
46
+ return { status: "failed", exitCode: code };
47
+ }
48
+ /** How a task whose sandbox is not running ends (`ifRunning`'s `not_running` status). */
49
+ export function notRunningAs(status, killPending) {
50
+ return {
51
+ status: "lost",
52
+ lostReason: status === "suspended" ? "sandbox_suspended" : "sandbox_gone",
53
+ killPending,
54
+ };
55
+ }
56
+ /** A task found in another sandbox instance (a rebuild): its processes are gone with the old one. */
57
+ export const RECREATED = {
58
+ status: "lost",
59
+ lostReason: "sandbox_recreated",
60
+ killPending: false,
61
+ };
62
+ /**
63
+ * Stops background tasks (spec 2026-11-05-background-bash-design §2.3, §4.3): SIGTERM to the
64
+ * task's session, up to 5 s for it to empty, then SIGKILL until it is empty, all through
65
+ * `SandboxService.ifRunning` (it never creates or resumes a sandbox); the task then finishes as
66
+ * `stopped` with its last 20 lines. A task that had already exited finishes as its exit says. When
67
+ * the sandbox is not running the task finishes as `lost` with `kill_pending` (killed right after a
68
+ * resume); in a rebuilt sandbox as `lost` (`sandbox_recreated`). Processes a task that had
69
+ * already exited left running are killed as well.
70
+ */
71
+ let BackgroundTaskStopper = class BackgroundTaskStopper {
72
+ store;
73
+ finisher;
74
+ sandbox;
75
+ db;
76
+ log;
77
+ constructor(store, finisher, sandbox, db, log) {
78
+ this.store = store;
79
+ this.finisher = finisher;
80
+ this.sandbox = sandbox;
81
+ this.db = db;
82
+ this.log = log;
83
+ }
84
+ /**
85
+ * Stops `task` and returns its row afterwards. A task that is no longer running, or that another
86
+ * live stop already claimed, is returned as it is now.
87
+ *
88
+ * The stop first claims the task (`stopping_at`), so the poller leaves it alone while the
89
+ * signals take effect and the stop's finish is its only one. A reservation whose launch has not
90
+ * started the command yet (no `sid`) is only claimed: the launch then kills what it starts and
91
+ * finishes the row `stopped`. When the stop fails while the sandbox runs (busy, a provider
92
+ * error, a session that could not be confirmed empty), the claim is given up, the task stays
93
+ * `running` and the error is thrown.
94
+ */
95
+ async stop(task, why, signal) {
96
+ if (!(await this.store.claimStop(task.id)))
97
+ return (await this.store.get(task.id)) ?? task;
98
+ // read after the claim: a launch recording its session before the claim is seen here, one
99
+ // recording it after sees the claim (both are single-row updates of the same row)
100
+ const cur = (await this.store.get(task.id)) ?? task;
101
+ if (cur.status !== "running" || cur.sid === null || cur.sandboxCreatedAt === null)
102
+ return cur;
103
+ const started = { ...cur, sandboxCreatedAt: cur.sandboxCreatedAt };
104
+ const sid = cur.sid;
105
+ assertTaskRef(cur.id, sid);
106
+ const reported = why === "tool";
107
+ // a person's stop never wakes the conversation (background Bash §3, fix round 1), nor does
108
+ // the stop of a conversation being deleted or of a sub-agent that ended (agent map spec §5.3)
109
+ const stoppedBy = why === "person"
110
+ ? "person"
111
+ : why === "conversation_deleted"
112
+ ? "deletion"
113
+ : why === "subagent_end"
114
+ ? "subagent_end"
115
+ : undefined;
116
+ const opts = stoppedBy === undefined ? {} : { stoppedBy };
117
+ let r;
118
+ try {
119
+ r = await this.signalTask(started, sid, signal);
120
+ }
121
+ catch (err) {
122
+ await this.store
123
+ .releaseStop(cur.id)
124
+ .catch((e) => this.log.warn("cannot release a background task stop", { taskId: cur.id, err: e }));
125
+ throw err;
126
+ }
127
+ if (r.kind === "ran") {
128
+ await this.finisher.finish(cur, r.value.to, r.value.lastLines, reported, opts);
129
+ }
130
+ else if (r.kind === "not_running") {
131
+ await this.finisher.finish(cur, notRunningAs(r.status, true), "", reported, opts);
132
+ }
133
+ else {
134
+ await this.finisher.finish(cur, RECREATED, "", reported, opts);
135
+ }
136
+ return (await this.store.get(cur.id)) ?? cur;
137
+ }
138
+ /**
139
+ * SIGTERM, the grace period, SIGKILL until the session is empty, then the last lines: in the
140
+ * task's own instance only (`ifRunning`); a task from before environments has none.
141
+ */
142
+ async signalTask(cur, sid, signal) {
143
+ if (cur.environmentId === null)
144
+ return { kind: "not_running", status: "gone" };
145
+ return this.sandbox.ifRunning(cur.environmentId, { createdAt: cur.sandboxCreatedAt }, async (tp, h, sig) => {
146
+ const p = actingAs(tp, taskActor(cur));
147
+ const term = await p.exec(h, {
148
+ command: termScript(cur.id, sid),
149
+ cwd: "/workspace",
150
+ timeoutMs: TERM_EXEC_TIMEOUT_MS,
151
+ maxOutputBytes: 4096,
152
+ signal: sig,
153
+ });
154
+ const exited = /^exited (-?[0-9]+)$/.exec(term.stdout.trim());
155
+ if (term.exitCode !== 0 || (!exited && term.stdout.trim() !== "term")) {
156
+ throw new Error(`the stop of background task ${cur.id} failed (${term.exitCode})`);
157
+ }
158
+ // also after an exit: processes the command left running are stopped with the task
159
+ if (!(await killSession(p, h, sid))) {
160
+ throw new Error(`background task ${cur.id} could not be confirmed stopped`);
161
+ }
162
+ const tail = await p.exec(h, {
163
+ command: tailCommand(cur.id),
164
+ cwd: "/workspace",
165
+ timeoutMs: TAIL_EXEC_TIMEOUT_MS,
166
+ maxOutputBytes: 64 * 1024,
167
+ signal: sig,
168
+ });
169
+ const lastLines = tail.exitCode === 0 ? decodeTail(tail.stdout) : "";
170
+ // a task that had exited before the signal ends as its exit says
171
+ const to = exited
172
+ ? exitedAs(cur, Number(exited[1]), new Date())
173
+ : { status: "stopped" };
174
+ return { to, lastLines };
175
+ }, signal);
176
+ }
177
+ /**
178
+ * After a sub-agent run ended (spec §4.3): stops the running tasks of `conversationId` when it
179
+ * is a sub-agent's conversation; any other conversation is left alone. With `runId`, only the
180
+ * tasks that run started (a fork child's run: a later run of the same child keeps its own when
181
+ * an older run's end is handled late); without, all of them (a stopped background child, agent
182
+ * map spec §6). Their finish is marked `stoppedBy: "subagent_end"`, so it never wakes the child.
183
+ * Never throws (see {@link stopAll}).
184
+ */
185
+ async stopSubagentTasks(conversationId, runId) {
186
+ try {
187
+ const conv = await this.db
188
+ .selectFrom("conversations")
189
+ .select("kind")
190
+ .where("id", "=", conversationId)
191
+ .executeTakeFirst();
192
+ if (conv?.kind !== "subagent")
193
+ return;
194
+ const tasks = (await this.store.runningOwnedBy(conversationId)).filter((t) => runId === undefined || t.runId === runId);
195
+ await this.stopAll(tasks, "subagent_end");
196
+ }
197
+ catch (err) {
198
+ this.log.warn("cannot stop the background tasks of a finished sub-agent run", {
199
+ conversationId,
200
+ runId,
201
+ err,
202
+ });
203
+ }
204
+ }
205
+ /**
206
+ * Before a conversation is deleted: stops every running task in its sandbox (its own and its
207
+ * sub-agents'). Never throws (see {@link stopAll}).
208
+ */
209
+ async stopForDeletedConversation(conversationId) {
210
+ try {
211
+ await this.stopAll(await this.store.runningIn(conversationId), "conversation_deleted");
212
+ }
213
+ catch (err) {
214
+ this.log.warn("cannot stop the background tasks of a deleted conversation", {
215
+ conversationId,
216
+ err,
217
+ });
218
+ }
219
+ }
220
+ /**
221
+ * Stops `tasks` side by side. A stop that fails while the sandbox runs leaves its task running
222
+ * (logged): the poller still checks it and it ends at its own deadline at the latest.
223
+ */
224
+ async stopAll(tasks, why) {
225
+ await Promise.all(tasks.map(async (t) => {
226
+ try {
227
+ await this.stop(t, why);
228
+ }
229
+ catch (err) {
230
+ this.log.warn("cannot stop a background task; it keeps running", { taskId: t.id, err });
231
+ }
232
+ }));
233
+ }
234
+ };
235
+ BackgroundTaskStopper = __decorate([
236
+ Injectable(),
237
+ __param(0, Inject(BackgroundTaskStore)),
238
+ __param(1, Inject(BackgroundTaskFinisher)),
239
+ __param(2, Inject(SandboxService)),
240
+ __param(3, Inject(KernelDb)),
241
+ __param(4, Inject(KERNEL_LOGGER))
242
+ ], BackgroundTaskStopper);
243
+ export { BackgroundTaskStopper };
@@ -0,0 +1,162 @@
1
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
+ import { BackgroundLaunchLock } from "./launch-lock.js";
4
+ export type BackgroundTaskStatus = "running" | "completed" | "failed" | "stopped" | "timed_out" | "lost";
5
+ /** A task as the kernel reads it: the columns of `capybara.background_tasks`, camel-cased. */
6
+ export interface BackgroundTaskRow {
7
+ id: string;
8
+ orgId: string;
9
+ /** The owner: the child conversation for a sub-agent. */
10
+ conversationId: string;
11
+ /**
12
+ * The root conversation of the owner's tree: `sandbox.background.maxTasks` counts per root
13
+ * conversation.
14
+ */
15
+ sandboxConversationId: string;
16
+ /**
17
+ * The environment the task runs in (the root conversation's when it was launched): its instance
18
+ * is where the task's processes are. Null only for tasks from before environments (all finished).
19
+ */
20
+ environmentId: string | null;
21
+ runId: string;
22
+ callId: string;
23
+ triggerAccountId: string;
24
+ description: string;
25
+ command: string;
26
+ /**
27
+ * The session id (the pid `setsid` started). Null while the launch is reserved but has not
28
+ * started: readers that act on the process (the poller, stops) skip such a row.
29
+ */
30
+ sid: string | null;
31
+ /** Relative to `/workspace`. */
32
+ outputPath: string;
33
+ status: BackgroundTaskStatus;
34
+ lostReason: string | null;
35
+ exitCode: number | null;
36
+ startedAt: Date;
37
+ finishedAt: Date | null;
38
+ deadlineAt: Date;
39
+ /** The sandbox instance the task started in; null while reserved, like `sid`. */
40
+ sandboxCreatedAt: Date | null;
41
+ /** Marked lost while its process may still exist. */
42
+ killPending: boolean;
43
+ /** The bytes `TaskOutput` has already returned. */
44
+ readOffset: number;
45
+ /** When a stop claimed the task ({@link BackgroundTaskStore.claimStop}); null otherwise. */
46
+ stoppingAt: Date | null;
47
+ }
48
+ export type BackgroundTaskInsert = Omit<BackgroundTaskRow, "status" | "finishedAt" | "exitCode" | "lostReason" | "killPending" | "readOffset" | "stoppingAt">;
49
+ /** A launch's reservation: the row before the command started (no `sid`, no instance yet). */
50
+ export type BackgroundTaskReservation = Omit<BackgroundTaskInsert, "sid" | "sandboxCreatedAt">;
51
+ /**
52
+ * How long a stop's claim holds: a claim older than this is abandoned (its stopper died), so the
53
+ * poller checks the task again and another stop may claim it. Longer than any stop takes (the
54
+ * lease wait, the SIGTERM grace, the kill and the tail).
55
+ */
56
+ export declare const STOP_CLAIM_TTL_MS: number;
57
+ /**
58
+ * Background Bash tasks (spec §4.1): one `capybara.background_tasks` row per command started with
59
+ * `run_in_background`. The store only reads and writes rows; the launch, the poller and the tools
60
+ * that drive them are other providers.
61
+ *
62
+ * A launch first reserves its row ({@link BackgroundTaskStore.reserve}: `running`, `sid` null),
63
+ * then starts the command and sets `sid` ({@link BackgroundTaskStore.markStarted}), or finishes
64
+ * the row as `failed` ({@link BackgroundTaskStore.failLaunch}). A running row with a null `sid`
65
+ * counts against `maxTasks` but has no process to check or stop: the poller and stops must skip
66
+ * it (the launch that reserved it settles it; one left over by a launch that died is failed by the
67
+ * poller, {@link BackgroundTaskStore.failAbandonedLaunches}).
68
+ */
69
+ export declare class BackgroundTaskStore {
70
+ private readonly db;
71
+ readonly txHost: TransactionHost;
72
+ private readonly launchLock;
73
+ constructor(db: KernelDb, txHost: TransactionHost, launchLock: BackgroundLaunchLock);
74
+ /**
75
+ * Reserves a launch: under the root conversation's launch lock, counts the running tasks of
76
+ * `row.sandboxConversationId` and inserts `row` as `running` (no `sid`) when fewer than
77
+ * `maxTasks` run. False (nothing written) when that conversation tree already runs `maxTasks`.
78
+ */
79
+ reserve(row: BackgroundTaskReservation, maxTasks: number): Promise<boolean>;
80
+ /**
81
+ * Records the started command of a reserved row: `started`, or `stopping` when a stop claimed the
82
+ * reservation meanwhile (the launch then kills the command and finishes the row with
83
+ * {@link finishStoppedLaunch}); false when the row is no longer running.
84
+ */
85
+ markStarted(id: string, to: {
86
+ sid: string;
87
+ sandboxCreatedAt: Date;
88
+ }): Promise<"started" | "stopping" | false>;
89
+ /**
90
+ * Finishes a launch whose reservation a stop claimed, once the launch killed what it started:
91
+ * `stopped`. No `background_task_finished` event: the launching call reports it itself.
92
+ */
93
+ finishStoppedLaunch(id: string): Promise<void>;
94
+ /**
95
+ * Claims a running task for a stop (`stopping_at`): false when it is no longer running or another
96
+ * live stop claimed it ({@link STOP_CLAIM_TTL_MS}). While claimed the poller leaves it alone.
97
+ */
98
+ claimStop(id: string): Promise<boolean>;
99
+ /** Gives up a stop's claim (the stop failed while the sandbox runs: the task keeps running). */
100
+ releaseStop(id: string): Promise<void>;
101
+ /**
102
+ * Finishes a reserved row whose launch failed as `failed`, with `reason` in `lost_reason` (and a
103
+ * stop's claim cleared); a row that already has its sid (the command started and is tracked) is
104
+ * left as it is. No `background_task_finished` event: the launching call reports the failure
105
+ * itself.
106
+ */
107
+ failLaunch(id: string, reason: string): Promise<void>;
108
+ /**
109
+ * Finishes as `failed` (`lost_reason` `launch_abandoned`) every reservation that started before
110
+ * `before`, never got its sid and is not claimed by a live stop: the launch that reserved it died
111
+ * (a crashed replica). A stop's claim older than {@link STOP_CLAIM_TTL_MS} does not hold it: a
112
+ * stop only claims a reservation and leaves the rest to the launch, so a dead launch would keep
113
+ * it (and its slot of `maxTasks`) forever. Conditional on `sid` still null, so a launch
114
+ * completing at that moment wins. No `background_task_finished` event: the command never
115
+ * started and the model never saw its id. Returns the rows it finished (their owner and sandbox
116
+ * conversations, for the caller's `changed: "background"` frames).
117
+ */
118
+ failAbandonedLaunches(before: Date): Promise<{
119
+ id: string;
120
+ conversationId: string;
121
+ sandboxConversationId: string;
122
+ }[]>;
123
+ insert(row: BackgroundTaskInsert): Promise<void>;
124
+ get(id: string): Promise<BackgroundTaskRow | undefined>;
125
+ /** The running tasks of one root conversation's tree, oldest first. */
126
+ runningIn(sandboxConversationId: string): Promise<BackgroundTaskRow[]>;
127
+ /**
128
+ * Every running task that has started (its `sid` is set) and no live stop claimed, across
129
+ * sandboxes, oldest first: what the poller checks. A reservation still launching (`sid` null) is
130
+ * left to its launch, a claimed task to its stop.
131
+ */
132
+ runningStarted(): Promise<BackgroundTaskRow[]>;
133
+ /** The running tasks one conversation owns (not those of its sub-agents), oldest first. */
134
+ runningOwnedBy(conversationId: string): Promise<BackgroundTaskRow[]>;
135
+ /** The running tasks of one root conversation's tree (what `maxTasks` limits). */
136
+ countRunning(sandboxConversationId: string): Promise<number>;
137
+ /** The tasks owned by any of the conversations, newest first. */
138
+ listFor(conversationIds: string[]): Promise<BackgroundTaskRow[]>;
139
+ /**
140
+ * Conditional `running` to a final status; false when the row was no longer running (another
141
+ * path finished it first), or, with `opts.unclaimed` (the poller), when a live stop claimed it.
142
+ * The caller's transaction also appends the finished event.
143
+ */
144
+ finish(id: string, to: {
145
+ status: Exclude<BackgroundTaskStatus, "running">;
146
+ exitCode?: number | null;
147
+ lostReason?: string;
148
+ killPending?: boolean;
149
+ }, opts?: {
150
+ unclaimed?: boolean;
151
+ }): Promise<boolean>;
152
+ /** Moves the read offset forward only (a concurrent reader never moves it back). */
153
+ advanceOffset(id: string, to: number): Promise<void>;
154
+ /**
155
+ * Finished tasks of an environment whose process may still exist (any conversation's: they
156
+ * share the instance).
157
+ */
158
+ pendingKills(environmentId: string): Promise<BackgroundTaskRow[]>;
159
+ clearKill(ids: string[]): Promise<void>;
160
+ /** Deletes finished tasks that ended before `before`; a running one is never deleted. */
161
+ pruneFinished(before: Date): Promise<number>;
162
+ }