@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,263 @@
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 { sql } from "kysely";
12
+ import { CatalogService } from "../catalog/catalog.service.js";
13
+ import { CatalogRequestsService } from "../catalog/requests.service.js";
14
+ import { ApiError } from "../errors.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ /** The most items one platform inbox read returns. */
17
+ export const PLATFORM_INBOX_MAX_ITEMS = 100;
18
+ /** The most open scope sync failures one read takes. */
19
+ export const SCOPE_SYNC_FAILURES_LIST_MAX = 200;
20
+ /**
21
+ * A platform components migration run unfinished this long after its start is stuck (its worker
22
+ * stopped mid-run; a run takes seconds, and the next one starts at the next worker start or day).
23
+ */
24
+ export const MIGRATION_RUN_STUCK_MS = 60 * 60_000;
25
+ /** Plugin install statuses of a plugin that is on in the org. */
26
+ const LIVE_INSTALL = ["installing", "installed", "upgrading"];
27
+ /**
28
+ * The super admin's inbox (plugin scope spec §5.1 rule 5, §13.5): what waits on the platform,
29
+ * gathered from the sources the admin pages read (the 待确认 tab's requests and permission
30
+ * confirmations), plus the scope sync's open failures and the platform components migration's
31
+ * latest run. Stateless, read live from PG.
32
+ */
33
+ let PlatformInboxService = class PlatformInboxService {
34
+ requests;
35
+ catalog;
36
+ kdb;
37
+ constructor(requests, catalog, kdb) {
38
+ this.requests = requests;
39
+ this.catalog = catalog;
40
+ this.kdb = kdb;
41
+ }
42
+ async list() {
43
+ const [requests, requestCount, pending, failures, failureCount, run, notices, noticeCount] = await Promise.all([
44
+ this.requests.listDeployment(),
45
+ this.requests.countPendingDeployment(),
46
+ this.catalog.list({ pending: true }),
47
+ this.scopeSyncFailures(),
48
+ this.countScopeSyncFailures(),
49
+ this.migrationRun(),
50
+ this.notices(),
51
+ this.countNotices(),
52
+ ]);
53
+ const all = [
54
+ ...requests.map((r) => ({
55
+ type: "catalog_request",
56
+ id: r.id,
57
+ createdAt: r.createdAt,
58
+ request: r,
59
+ })),
60
+ ...pending.map((i) => ({
61
+ type: i.owner.kind === "org" ? "org_upload_pending" : "permission_confirmation",
62
+ id: i.id,
63
+ createdAt: i.updatedAt,
64
+ item: i,
65
+ })),
66
+ ...failures.map((f) => ({
67
+ type: "scope_sync_failed",
68
+ id: `${f.item.id}/${f.org.id}`,
69
+ createdAt: f.failedAt,
70
+ failure: f,
71
+ })),
72
+ ...notices.map((n) => ({
73
+ type: "ownership_transferred",
74
+ id: n.id,
75
+ createdAt: n.createdAt,
76
+ notice: n,
77
+ })),
78
+ ...(run === null
79
+ ? []
80
+ : [
81
+ {
82
+ type: "platform_migration",
83
+ id: run.id,
84
+ createdAt: run.finishedAt ?? run.startedAt,
85
+ run,
86
+ },
87
+ ]),
88
+ ];
89
+ // newest first; equal times by id (a stable order)
90
+ all.sort((a, b) => a.createdAt !== b.createdAt
91
+ ? a.createdAt < b.createdAt
92
+ ? 1
93
+ : -1
94
+ : a.id < b.id
95
+ ? -1
96
+ : a.id > b.id
97
+ ? 1
98
+ : 0);
99
+ const total = requestCount + pending.length + failureCount + (run === null ? 0 : 1) + noticeCount;
100
+ const items = all.slice(0, PLATFORM_INBOX_MAX_ITEMS);
101
+ return { items, truncated: total > items.length, total };
102
+ }
103
+ /**
104
+ * How many items wait (the sidebar's count): the same sources, counted where they can be (the
105
+ * requests and the failures; the permission confirmations are the catalog's pending list).
106
+ */
107
+ async count() {
108
+ const [requests, pending, failures, run, notices] = await Promise.all([
109
+ this.requests.countPendingDeployment(),
110
+ this.catalog.list({ pending: true }),
111
+ this.countScopeSyncFailures(),
112
+ this.migrationRun(),
113
+ this.countNotices(),
114
+ ]);
115
+ return requests + pending.length + failures + (run === null ? 0 : 1) + notices;
116
+ }
117
+ async countNotices() {
118
+ const r = await this.kdb.db
119
+ .selectFrom("platform_notices")
120
+ .select(sql `count(*)`.as("n"))
121
+ .where("dismissed_at", "is", null)
122
+ .executeTakeFirstOrThrow();
123
+ return Number(r.n);
124
+ }
125
+ /** The open platform notices, newest first, at most {@link PLATFORM_INBOX_MAX_ITEMS}. */
126
+ async notices() {
127
+ const rows = await this.kdb.db
128
+ .selectFrom("platform_notices")
129
+ .select(["id", "kind", "detail", "created_at"])
130
+ .where("dismissed_at", "is", null)
131
+ .orderBy("created_at", "desc")
132
+ .orderBy("id")
133
+ .limit(PLATFORM_INBOX_MAX_ITEMS)
134
+ .execute();
135
+ return rows.map((r) => ({
136
+ id: r.id,
137
+ kind: r.kind,
138
+ createdAt: r.created_at.toISOString(),
139
+ detail: r.detail,
140
+ }));
141
+ }
142
+ /**
143
+ * A super admin dismisses a platform notice (for every super admin). Dismissing one already
144
+ * dismissed is fine; no notice with that id -> `inbox.notice_not_found`.
145
+ */
146
+ async dismissNotice(accountId, id) {
147
+ if (!UUID_RE.test(id))
148
+ throw new ApiError("inbox.notice_not_found", "Notice not found");
149
+ const r = await this.kdb.db
150
+ .updateTable("platform_notices")
151
+ .set({ dismissed_at: sql `now()`, dismissed_by: accountId })
152
+ .where("id", "=", id)
153
+ .where("dismissed_at", "is", null)
154
+ .executeTakeFirst();
155
+ if (r.numUpdatedRows > 0n)
156
+ return;
157
+ const exists = await this.kdb.db
158
+ .selectFrom("platform_notices")
159
+ .select("id")
160
+ .where("id", "=", id)
161
+ .executeTakeFirst();
162
+ if (!exists)
163
+ throw new ApiError("inbox.notice_not_found", "Notice not found");
164
+ }
165
+ /**
166
+ * The open failures still worth a look, joined to their item and org: of a live item and org,
167
+ * and the pair still differs in the failed direction (a person may have converged it meanwhile):
168
+ * an install failure while the org has no live install of the item; an uninstall or dependencies
169
+ * failure while it has one.
170
+ */
171
+ failureRows() {
172
+ return this.kdb.db
173
+ .selectFrom("plugin_scope_sync_failures as f")
174
+ .innerJoin("catalog_items as i", "i.id", "f.item_id")
175
+ .innerJoin("orgs as o", "o.id", "f.org_id")
176
+ .where("i.deleted_at", "is", null)
177
+ .where("o.deleted_at", "is", null)
178
+ .where((eb) => {
179
+ const live = eb.exists(eb
180
+ .selectFrom("plugin_installs as p")
181
+ .select("p.id")
182
+ .whereRef("p.org_id", "=", "f.org_id")
183
+ .whereRef("p.item_id", "=", "f.item_id")
184
+ .where("p.status", "in", [...LIVE_INSTALL]));
185
+ return eb.or([
186
+ eb.and([eb("f.op", "=", "install"), eb.not(live)]),
187
+ eb.and([eb("f.op", "in", ["uninstall", "dependencies"]), live]),
188
+ ]);
189
+ });
190
+ }
191
+ async countScopeSyncFailures() {
192
+ const r = await this.failureRows()
193
+ .select(sql `count(*)`.as("n"))
194
+ .executeTakeFirstOrThrow();
195
+ return Number(r.n);
196
+ }
197
+ /** The open scope sync failures ({@link failureRows}), newest first. */
198
+ async scopeSyncFailures() {
199
+ const rows = await this.failureRows()
200
+ .select([
201
+ "f.item_id",
202
+ "i.name as item_name",
203
+ "i.display_name",
204
+ "f.org_id",
205
+ "o.name as org_name",
206
+ "f.op",
207
+ "f.code",
208
+ "f.message",
209
+ "f.failed_at",
210
+ ])
211
+ .orderBy("f.failed_at", "desc")
212
+ .orderBy("f.item_id")
213
+ .orderBy("f.org_id")
214
+ .limit(SCOPE_SYNC_FAILURES_LIST_MAX)
215
+ .execute();
216
+ return rows.map((r) => ({
217
+ item: { id: r.item_id, name: r.item_name, displayName: r.display_name },
218
+ org: { id: r.org_id, name: r.org_name },
219
+ op: r.op,
220
+ code: r.code,
221
+ message: r.message,
222
+ failedAt: r.failed_at.toISOString(),
223
+ }));
224
+ }
225
+ /**
226
+ * The latest migration run when it needs a look (see {@link MigrationRunView}); null when it
227
+ * finished without failed items, is still running, or there was none. An earlier run's failure
228
+ * is not shown: each run tries every unwritten item again.
229
+ */
230
+ async migrationRun() {
231
+ const run = await this.kdb.db
232
+ .selectFrom("platform_migration_runs")
233
+ .select(["id", "started_at", "finished_at", "stats"])
234
+ .orderBy("started_at", "desc")
235
+ .orderBy("id", "desc")
236
+ .limit(1)
237
+ .executeTakeFirst();
238
+ if (run === undefined)
239
+ return null;
240
+ const failed = run.stats.itemsFailed;
241
+ const itemsFailed = Array.isArray(failed)
242
+ ? failed.filter((x) => typeof x === "string")
243
+ : [];
244
+ const stuck = run.finished_at === null && run.started_at.getTime() < Date.now() - MIGRATION_RUN_STUCK_MS;
245
+ if (!stuck && (run.finished_at === null || itemsFailed.length === 0))
246
+ return null;
247
+ return {
248
+ id: run.id,
249
+ startedAt: run.started_at.toISOString(),
250
+ finishedAt: run.finished_at?.toISOString() ?? null,
251
+ stuck,
252
+ itemsFailed,
253
+ };
254
+ }
255
+ };
256
+ PlatformInboxService = __decorate([
257
+ Injectable(),
258
+ __param(0, Inject(CatalogRequestsService)),
259
+ __param(1, Inject(CatalogService)),
260
+ __param(2, Inject(KernelDb))
261
+ ], PlatformInboxService);
262
+ export { PlatformInboxService };
263
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
@@ -0,0 +1,19 @@
1
+ import type { OwnedRef } from "../catalog/ownership.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ export type PlatformNoticeKind = "ownership_transferred";
4
+ /** The `detail` of each platform notice kind. */
5
+ export interface PlatformNoticeDetails {
6
+ /** A deleted org's (or owner's) shared item now belongs to the platform. */
7
+ ownership_transferred: {
8
+ ref: OwnedRef;
9
+ name: string;
10
+ fromOrg: {
11
+ id: string;
12
+ name: string;
13
+ };
14
+ reason: "owner_deleted" | "org_deleted";
15
+ /** How many other orgs use it. */
16
+ usedBy: number;
17
+ };
18
+ }
19
+ export declare function addPlatformNotice<K extends PlatformNoticeKind>(db: KernelSchemaDb, kind: K, detail: PlatformNoticeDetails[K]): Promise<void>;
@@ -0,0 +1,9 @@
1
+ // Platform notices (`platform_notices`, plugin scope phase 3, ruling P3-22): what the super admins
2
+ // are told, until any one of them dismisses it. Written in the caller's transaction.
3
+ import { randomUUID } from "node:crypto";
4
+ export async function addPlatformNotice(db, kind, detail) {
5
+ await db
6
+ .insertInto("platform_notices")
7
+ .values({ id: randomUUID(), kind, detail: JSON.stringify(detail) })
8
+ .execute();
9
+ }
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@ export { type ApprovalDecision, ExtensionApprovals, type PendingExtension, type
31
31
  export { blobKey, ExtensionBlobIntegrityError, type ExtensionBlobSource, ExtensionBlobs, } from "./extensions/blobs.js";
32
32
  export { BOOTSTRAP_MANIFEST_FILE, type BootstrapEntryResult, BootstrapFailedError, type BootstrapFailure, type BootstrapResolveOptions, type BootstrapResult, BootstrapService, bootstrapManifestSha256, readBootstrapManifest, resolveBootstrapPackages, } from "./extensions/bootstrap.js";
33
33
  export { type ExtensionCli, openExtensionCli } from "./extensions/cli.js";
34
- export { DEPLOYMENT_SECRETS_ORG, type DeploymentConfigField, type DeploymentConfigView, ExtensionDeploymentConfigService, mergeDeploymentConfig, PLUGIN_DEPLOYMENT_CONFIG_TOPIC, readStoredDeploymentConfig, } from "./extensions/deployment-config.js";
34
+ export { DEPLOYMENT_SECRETS_ORG, type DeploymentConfigField, type DeploymentConfigView, ExtensionDeploymentConfigService, mergeDeploymentConfig, PLUGIN_DEPLOYMENT_CONFIG_TOPIC, readStoredDeploymentConfig, type SecretEntry, } from "./extensions/deployment-config.js";
35
35
  export { assertSecretsReachable, ExtensionHost, type ExtensionLoadPlan, type InspectedExtension, type InstalledExtensionLoader, type InstallFailureReason, } from "./extensions/host.js";
36
36
  export { ExtensionUnloadedError, type InflightEntry, InflightTracker, PLUGIN_UNLOADED_TOOL_ERROR, type TrackOptions, trackCalls, } from "./extensions/inflight.js";
37
37
  export { type DesiredExtension, type ExtensionInstallRow, ExtensionInstalls, type IngestSource, type PackageReview, } from "./extensions/installs.js";
@@ -71,4 +71,4 @@ export { SANDBOX_DESTROY_JOB, SANDBOX_SUSPEND_JOB, } from "./sandbox/jobs.js";
71
71
  export { SANDBOX_LOCK_TTL_MS, SandboxService, type SandboxUseInfo, } from "./sandbox/sandbox.service.js";
72
72
  export { MAX_STORAGE_KEY_BYTES, StorageKeyError, } from "./storage/prefix.js";
73
73
  export { PrefixedStorage, StorageService, type StorageSource, } from "./storage/storage.service.js";
74
- export { SANDBOX_RECREATED_NOTICE, SANDBOX_STARTED_NOTICE, } from "./tools/builtins/sandbox/common.js";
74
+ export { SANDBOX_RESTARTED_NOTICE, SANDBOX_STARTED_NOTICE, } from "./tools/builtins/sandbox/common.js";
package/dist/index.js CHANGED
@@ -67,4 +67,4 @@ export { SANDBOX_DESTROY_JOB, SANDBOX_SUSPEND_JOB, } from "./sandbox/jobs.js";
67
67
  export { SANDBOX_LOCK_TTL_MS, SandboxService, } from "./sandbox/sandbox.service.js";
68
68
  export { MAX_STORAGE_KEY_BYTES, StorageKeyError, } from "./storage/prefix.js";
69
69
  export { PrefixedStorage, StorageService, } from "./storage/storage.service.js";
70
- export { SANDBOX_RECREATED_NOTICE, SANDBOX_STARTED_NOTICE, } from "./tools/builtins/sandbox/common.js";
70
+ export { SANDBOX_RESTARTED_NOTICE, SANDBOX_STARTED_NOTICE, } from "./tools/builtins/sandbox/common.js";
@@ -13,6 +13,7 @@ import { NestFactory } from "@nestjs/core";
13
13
  import { Redis } from "ioredis";
14
14
  import { createBus } from "../../ctx/bus.js";
15
15
  import { KERNEL_APP_OPTIONS } from "../../lifecycle/tokens.js";
16
+ import { CacheModule } from "../cache/cache.module.js";
16
17
  import { ConfigModule } from "../config/config.module.js";
17
18
  import { KernelConfigService } from "../config/kernel-config.service.js";
18
19
  import { DatabaseModule } from "../database/database.module.js";
@@ -20,6 +21,7 @@ import { KernelEventsModule } from "../events/kernel-events.js";
20
21
  import { GracefulShutdownModule } from "../lifecycle/graceful-shutdown.module.js";
21
22
  import { LockModule } from "../lock/lock.module.js";
22
23
  import { LoggingModule } from "../logging/logging.module.js";
24
+ import { QueueModule } from "../queue/queue.module.js";
23
25
  import { KERNEL_BUS, KERNEL_LOGGER, REDIS, REDIS_SUBSCRIBER } from "../tokens.js";
24
26
  /** How long the CLI's Redis connection may take before a command fails (a publish only warns). */
25
27
  const CLI_REDIS_CONNECT_TIMEOUT_MS = 3_000;
@@ -108,7 +110,13 @@ let KernelCliModule = KernelCliModule_1 = class KernelCliModule {
108
110
  ConfigModule.forRoot(config, opts.env !== undefined ? { env: opts.env } : {}),
109
111
  GracefulShutdownModule,
110
112
  DatabaseModule.forRoot(),
111
- ...(opts.redis === false ? [] : [CliRedisModule, LockModule]),
113
+ // QueueModule's root gives the queues a command's modules register (the catalog's scope
114
+ // sync and maintenance queues) the configured Redis; without it BullMQ would connect to
115
+ // its default 127.0.0.1:6379
116
+ // CacheModule: `@Cacheable` providers of the domain modules (EffectiveConfigs) need it
117
+ ...(opts.redis === false
118
+ ? []
119
+ : [CliRedisModule, LockModule, CacheModule, QueueModule.forRoot()]),
112
120
  KernelEventsModule,
113
121
  ...opts.modules,
114
122
  ],
@@ -30,11 +30,32 @@ const HOT_APPLIERS = {
30
30
  "hooks.timeoutMs": () => { },
31
31
  // SandboxService reads the shared-lease cap at every acquisition.
32
32
  "sandbox.maxConcurrentCommands": () => { },
33
+ // The environments service reads the personal limit at every create.
34
+ "environments.maxPersonal": () => { },
33
35
  // Sub-agent limits are read at every dispatch, child step and tool resolution.
34
- "subagents.maxConcurrentPerRun": () => { },
36
+ "subagents.maxDepth": () => { },
37
+ "subagents.maxConcurrentPerConversation": () => { },
35
38
  "subagents.maxDispatchesPerRun": () => { },
36
39
  "subagents.maxTokensPerRun": () => { },
40
+ // The web tools read these limits through the config service on every call.
41
+ "web.search.maxResults": () => { },
42
+ "web.fetch.maxPageChars": () => { },
43
+ "web.fetch.maxAnswerTokens": () => { },
44
+ "web.fetch.cacheSeconds": () => { },
45
+ "web.fetch.timeoutMs": () => { },
37
46
  };
47
+ /**
48
+ * Environment variables of renamed config keys, with their replacements: warned about once when
49
+ * the service starts (agent map spec §6: `subagents.maxConcurrentPerRun` became
50
+ * `subagents.maxConcurrentPerConversation`). A retired file or Nacos key cannot be told here: the
51
+ * schema strips unknown keys before the kernel receives its config.
52
+ */
53
+ const RETIRED_ENV = [
54
+ [
55
+ "CAPYBARA_SUBAGENTS__MAX_CONCURRENT_PER_RUN",
56
+ "CAPYBARA_SUBAGENTS__MAX_CONCURRENT_PER_CONVERSATION",
57
+ ],
58
+ ];
38
59
  const HOT_PATHS = configFields(KernelConfigSchema)
39
60
  .filter((f) => f.meta?.hot)
40
61
  .map((f) => f.path);
@@ -55,6 +76,11 @@ let KernelConfigService = class KernelConfigService {
55
76
  this.env = input.env ?? process.env;
56
77
  log.setLevel(input.config.log.level);
57
78
  log.addSecrets(secretValues(KernelConfigSchema, input.config));
79
+ for (const [old, now] of RETIRED_ENV) {
80
+ if (this.env[old] !== undefined) {
81
+ log.warn(`${old} is no longer read and is ignored; set ${now} instead`, { env: old });
82
+ }
83
+ }
58
84
  }
59
85
  get() {
60
86
  return this.current;
@@ -66,6 +66,7 @@ let DatabaseModule = class DatabaseModule {
66
66
  const { db } = config.get();
67
67
  return createDb(db.url, db.poolMax, (err) => log.error("pg idle client error", { err }), {
68
68
  connectTimeoutMs: db.connectTimeoutMs,
69
+ idleTimeoutMs: db.idleTimeoutMs,
69
70
  onClientError: (err) => log.warn("pg client error", { err }),
70
71
  });
71
72
  },
@@ -4,7 +4,7 @@ import { TransactionHost } from "./transaction-host.js";
4
4
  * Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
5
5
  * is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
6
6
  * at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
7
- * transaction ("never zero active enterprise admins", "set up once", "one account per external
7
+ * transaction ("never zero active super admins", "set up once", "one account per external
8
8
  * identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
9
9
  * a transaction (where the lock would be released at once) throw.
10
10
  */
@@ -16,7 +16,7 @@ import { Transactional } from "./transactional.decorator.js";
16
16
  * Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
17
17
  * is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
18
18
  * at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
19
- * transaction ("never zero active enterprise admins", "set up once", "one account per external
19
+ * transaction ("never zero active super admins", "set up once", "one account per external
20
20
  * identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
21
21
  * a transaction (where the lock would be released at once) throw.
22
22
  */
@@ -72,12 +72,29 @@ export interface KernelEventMap {
72
72
  runId: string;
73
73
  };
74
74
  /**
75
- * `ensureRun` marked an orphaned run failed (after the commit): the waits stop its active
76
- * sub-agents at once. A lost event is repaired by the wait sweep (children of finished runs).
75
+ * `ensureRun` marked an orphaned run failed (after the commit): the waits stop its active fork
76
+ * sub-agent at once (background sub-agents keep running, agent map spec §5.4). A lost event is
77
+ * repaired by the wait sweep (fork children of finished runs).
77
78
  */
78
79
  "run.orphaned": {
79
80
  runId: string;
80
81
  };
82
+ /**
83
+ * A sub-agent's `subagent_delivery` was appended to its parent conversation (after the commit;
84
+ * `SubagentDeliveries`). Waking an idle parent follows it; a lost event is re-derived by the
85
+ * next `ensureRun` (a message, the end of a run, a page opening).
86
+ */
87
+ "subagent.delivered": {
88
+ conversationId: string;
89
+ };
90
+ /**
91
+ * A background task of the conversation finished (after the commit of its
92
+ * `background_task_finished` event). `BackgroundWake` asks the run queue for a wake run; a lost
93
+ * event is re-derived by the next `ensureRun` (a message, the end of a run, a page opening).
94
+ */
95
+ "background_task.finished": {
96
+ conversationId: string;
97
+ };
81
98
  }
82
99
  type Handler<K extends keyof KernelEventMap> = (payload: KernelEventMap[K]) => Promise<void> | void;
83
100
  /** Typed in-process event emitter; handlers run in order, a failing one is logged and skipped. */
@@ -39,6 +39,10 @@ export function createFatalRecorder(deps) {
39
39
  let recent = [];
40
40
  let open = false;
41
41
  return (kind, err) => {
42
+ // Exiting already: log nothing more. A failing log write (EPIPE on a dead stdout) raises the
43
+ // next event itself; logging it again would keep the process busy forever and starve the exit.
44
+ if (open)
45
+ return;
42
46
  try {
43
47
  const t = now();
44
48
  recent = recent.filter((x) => t - x < GUARD_CIRCUIT_WINDOW_MS);
@@ -6,8 +6,10 @@ export interface LoggingModuleOptions {
6
6
  logger?: KernelLogger;
7
7
  }
8
8
  /**
9
- * Provides the process logger as `KERNEL_LOGGER`. The logger is created before the Nest context
10
- * (it must exist for startup errors), so it is passed in or derived from the startup config here.
9
+ * Provides the process logger as `KERNEL_ROOT_LOGGER` and, as `KERNEL_LOGGER`, one child per injecting
10
+ * class with `context` = the class name (the `[context=…]` of the pretty output; octok's
11
+ * per-class Nest logger context). The logger is created before the Nest context (it must exist for
12
+ * startup errors), so it is passed in or derived from the startup config here.
11
13
  */
12
14
  export declare class LoggingModule {
13
15
  static forRoot(config: KernelConfig, opts?: LoggingModuleOptions): DynamicModule;
@@ -5,12 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var LoggingModule_1;
8
- import { Global, Module } from "@nestjs/common";
8
+ import { Global, Module, Scope } from "@nestjs/common";
9
+ import { INQUIRER } from "@nestjs/core";
9
10
  import { createConfiguredLogger } from "../../log-config.js";
10
- import { KERNEL_LOGGER } from "../tokens.js";
11
+ import { KERNEL_LOGGER, KERNEL_ROOT_LOGGER } from "../tokens.js";
11
12
  /**
12
- * Provides the process logger as `KERNEL_LOGGER`. The logger is created before the Nest context
13
- * (it must exist for startup errors), so it is passed in or derived from the startup config here.
13
+ * Provides the process logger as `KERNEL_ROOT_LOGGER` and, as `KERNEL_LOGGER`, one child per injecting
14
+ * class with `context` = the class name (the `[context=…]` of the pretty output; octok's
15
+ * per-class Nest logger context). The logger is created before the Nest context (it must exist for
16
+ * startup errors), so it is passed in or derived from the startup config here.
14
17
  */
15
18
  let LoggingModule = LoggingModule_1 = class LoggingModule {
16
19
  static forRoot(config, opts = {}) {
@@ -21,8 +24,16 @@ let LoggingModule = LoggingModule_1 = class LoggingModule {
21
24
  return {
22
25
  module: LoggingModule_1,
23
26
  global: true,
24
- providers: [{ provide: KERNEL_LOGGER, useValue: logger }],
25
- exports: [KERNEL_LOGGER],
27
+ providers: [
28
+ { provide: KERNEL_ROOT_LOGGER, useValue: logger },
29
+ {
30
+ provide: KERNEL_LOGGER,
31
+ scope: Scope.TRANSIENT,
32
+ inject: [KERNEL_ROOT_LOGGER, INQUIRER],
33
+ useFactory: (root, inquirer) => contextLogger(root, inquirer),
34
+ },
35
+ ],
36
+ exports: [KERNEL_ROOT_LOGGER, KERNEL_LOGGER],
26
37
  };
27
38
  }
28
39
  };
@@ -32,3 +43,10 @@ LoggingModule = LoggingModule_1 = __decorate([
32
43
  // biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
33
44
  ], LoggingModule);
34
45
  export { LoggingModule };
46
+ /** The child of `root` for the class instance `inquirer`; `root` itself for a factory provider. */
47
+ function contextLogger(root, inquirer) {
48
+ const name = inquirer?.constructor?.name;
49
+ return typeof name === "string" && name !== "" && name !== "Object"
50
+ ? root.child({ context: name })
51
+ : root;
52
+ }
@@ -0,0 +1,14 @@
1
+ import { type JobsOptions } from "bullmq";
2
+ import type { Redis } from "ioredis";
3
+ /** One job to add: its name, data and options (a deterministic `jobId` makes the add idempotent). */
4
+ export interface OneJob<T> {
5
+ name: string;
6
+ data: T;
7
+ opts: JobsOptions;
8
+ }
9
+ /**
10
+ * Adds one job to a kernel queue from a process that hosts no queue of its own (a CLI command),
11
+ * over the caller's Redis connection (left open), with BullMQ's default key prefix like the
12
+ * kernel's queues. The queue handle is closed again before returning.
13
+ */
14
+ export declare function addJobOnce<T>(connection: Redis, queue: string, job: OneJob<T>): Promise<void>;
@@ -0,0 +1,16 @@
1
+ import { Queue } from "bullmq";
2
+ /**
3
+ * Adds one job to a kernel queue from a process that hosts no queue of its own (a CLI command),
4
+ * over the caller's Redis connection (left open), with BullMQ's default key prefix like the
5
+ * kernel's queues. The queue handle is closed again before returning.
6
+ */
7
+ export async function addJobOnce(connection, queue, job) {
8
+ const q = new Queue(queue, { connection });
9
+ try {
10
+ // biome-ignore lint/suspicious/noExplicitAny: BullMQ's name and data generics do not line up here
11
+ await q.add(job.name, job.data, job.opts);
12
+ }
13
+ finally {
14
+ await q.close();
15
+ }
16
+ }
@@ -1,4 +1,10 @@
1
1
  import type { RedisOptions } from "bullmq";
2
+ /**
3
+ * TCP keepalive of every long-lived kernel Redis connection: probes start after 10 s idle (the OS
4
+ * default is 2 hours), so a connection a dropped network left half-open is found and reconnected
5
+ * before a command waits on it, not at the next write (EPIPE).
6
+ */
7
+ export declare const REDIS_KEEPALIVE_MS = 10000;
2
8
  /**
3
9
  * BullMQ connection options from the kernel's Redis URL, the same connection the hand-made
4
10
  * `new Redis(url, { maxRetriesPerRequest: null })` workers use: BullMQ requires
@@ -1,3 +1,9 @@
1
+ /**
2
+ * TCP keepalive of every long-lived kernel Redis connection: probes start after 10 s idle (the OS
3
+ * default is 2 hours), so a connection a dropped network left half-open is found and reconnected
4
+ * before a command waits on it, not at the next write (EPIPE).
5
+ */
6
+ export const REDIS_KEEPALIVE_MS = 10_000;
1
7
  /**
2
8
  * BullMQ connection options from the kernel's Redis URL, the same connection the hand-made
3
9
  * `new Redis(url, { maxRetriesPerRequest: null })` workers use: BullMQ requires
@@ -14,5 +20,6 @@ export function bullConnectionOptions(url) {
14
20
  ...(db !== undefined && Number.isInteger(db) && { db }),
15
21
  ...(u.protocol === "rediss:" && { tls: {} }),
16
22
  maxRetriesPerRequest: null,
23
+ keepAlive: REDIS_KEEPALIVE_MS,
17
24
  };
18
25
  }
@@ -14,6 +14,7 @@ import { closeWithin } from "../close-within.js";
14
14
  import { KernelConfigService } from "../config/kernel-config.service.js";
15
15
  import { GracefulShutdownModule } from "../lifecycle/graceful-shutdown.module.js";
16
16
  import { GracefulShutdown } from "../lifecycle/graceful-shutdown.service.js";
17
+ import { REDIS_KEEPALIVE_MS } from "../queue/redis-connection.js";
17
18
  import { KERNEL_BUS, KERNEL_LOGGER, REDIS, REDIS_SUBSCRIBER } from "../tokens.js";
18
19
  /**
19
20
  * Closes the bus subscriber, then the main connection, at the end of the shutdown
@@ -64,7 +65,10 @@ RedisModule = __decorate([
64
65
  provide: REDIS,
65
66
  inject: [KernelConfigService, KERNEL_LOGGER],
66
67
  useFactory: (config, log) => {
67
- const redis = new Redis(config.get().redis.url, { lazyConnect: true });
68
+ const redis = new Redis(config.get().redis.url, {
69
+ lazyConnect: true,
70
+ keepAlive: REDIS_KEEPALIVE_MS,
71
+ });
68
72
  redis.on("error", (err) => log.error("redis connection error", { err }));
69
73
  return redis;
70
74
  },
@@ -72,7 +76,7 @@ RedisModule = __decorate([
72
76
  {
73
77
  provide: REDIS_SUBSCRIBER,
74
78
  inject: [KernelConfigService, KERNEL_LOGGER],
75
- useFactory: (config, log) => createBusSubscriber(() => new Redis(config.get().redis.url), log),
79
+ useFactory: (config, log) => createBusSubscriber(() => new Redis(config.get().redis.url, { keepAlive: REDIS_KEEPALIVE_MS }), log),
76
80
  },
77
81
  {
78
82
  provide: KERNEL_BUS,
@@ -1,6 +1,11 @@
1
1
  /** Injection tokens of the global infra modules. */
2
- /** The process logger (`KernelLogger`). */
2
+ /**
3
+ * A class's logger (`KernelLogger`): the process logger with `context` set to the injecting class's
4
+ * name. Transient, so `app.get` cannot resolve it; use `KERNEL_ROOT_LOGGER` outside an injection.
5
+ */
3
6
  export declare const KERNEL_LOGGER: unique symbol;
7
+ /** The process logger itself (`KernelLogger`), without a context. */
8
+ export declare const KERNEL_ROOT_LOGGER: unique symbol;
4
9
  /** The startup input of `KernelConfigService`: `{ config, env }`. */
5
10
  export declare const KERNEL_CONFIG_INPUT: unique symbol;
6
11
  /** The Kysely pool, untyped (`Kysely<any>`); infra only, services inject `KernelDb`. */