@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
@@ -8,21 +8,39 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { Inject, Injectable } from "@nestjs/common";
11
+ import { BackgroundTaskFinisher } from "../../background/finish.js";
12
+ import { BackgroundTaskStopper } from "../../background/stop.js";
13
+ import { BackgroundTaskStore } from "../../background/store.js";
11
14
  import { AttachmentsService } from "../../conversations/attachments.service.js";
12
15
  import { EventLog } from "../../conversations/event-log.js";
16
+ import { ConversationEnvironments } from "../../environments/conversation-environments.js";
17
+ import { ExtensionHost } from "../../extensions/host.js";
18
+ import { ExtensionPointDefaults } from "../../extensions/point-defaults.js";
13
19
  import { KernelConfigService } from "../../infra/config/kernel-config.service.js";
14
20
  import { KernelDb } from "../../infra/database/kernel-db.js";
21
+ import { KERNEL_LOGGER } from "../../infra/tokens.js";
22
+ import { ModelPurposesService } from "../../models/purposes.js";
23
+ import { readOrgSettings } from "../../orgs/settings.service.js";
24
+ import { PlatformActor } from "../../platform/actor.js";
25
+ import { AgentDocs } from "../../platform/agent-docs.js";
26
+ import { PlatformOperations } from "../../platform/registry.js";
27
+ import { StepLog } from "../../runtime/step-log.js";
28
+ import { UsageReporter } from "../../runtime/usage-report.js";
15
29
  import { SandboxService } from "../../sandbox/sandbox.service.js";
16
30
  import { SkillChangesService } from "../../skills/changes.service.js";
17
31
  import { StorageService } from "../../storage/storage.service.js";
18
32
  import { ToolOutputs } from "../outputs.js";
19
33
  import { agentTool } from "./agent.js";
20
34
  import { askUserTool } from "./ask-user.js";
35
+ import { handbackTool } from "./handback.js";
36
+ import { platformTool } from "./platform.js";
21
37
  import { readToolOutputTool } from "./read-tool-output.js";
22
38
  import { sandboxTools } from "./sandbox/index.js";
39
+ import { sendMessageTool } from "./send-message.js";
23
40
  import { skillLoadTool } from "./skill-load.js";
24
41
  import { skillWriteTool } from "./skill-write.js";
25
42
  import { toolSearchTool } from "./tool-search.js";
43
+ import { extractAnswer, WebPages, webTools } from "./web/index.js";
26
44
  /**
27
45
  * The kernel's builtin tools, built once from the injected services (their specs: names,
28
46
  * descriptions and schemas, are the factories' own and unchanged). `ToolSearch` and `Skill`
@@ -31,9 +49,14 @@ import { toolSearchTool } from "./tool-search.js";
31
49
  */
32
50
  let BuiltinTools = class BuiltinTools {
33
51
  tools;
34
- constructor(db, config, outputs, storage, skillChanges, attachments, eventLog, sandbox) {
52
+ constructor(db, config, outputs, storage, skillChanges, attachments, eventLog, sandbox, environments, points, webPages,
53
+ /** The WebFetch extraction call: the `web_fetch` purpose, its hooks, usage and denials. */
54
+ purposes, host, usageReport, stepLog, log, background, finisher, stopper, platformOps, platformActor, agentDocs) {
35
55
  const sandboxDeps = {
36
56
  sandbox,
57
+ environments,
58
+ background,
59
+ tasks: { finisher, stopper },
37
60
  attachments,
38
61
  storage,
39
62
  eventLog,
@@ -45,12 +68,17 @@ let BuiltinTools = class BuiltinTools {
45
68
  toolSearchTool(),
46
69
  // dispatches sub-agents; the tool pipeline handles its calls (sub-agents spec §4, §7.1)
47
70
  agentTool,
71
+ // messages between the agents of one tree; the registry offers them and the tool pipeline
72
+ // handles their calls (agent map spec §4.2, §4.3)
73
+ sendMessageTool,
74
+ handbackTool,
48
75
  ...sandboxTools(sandboxDeps),
49
76
  // 技能加载:对话日志里有技能目录快照时由注册表自动加入(Ruling M17)
50
77
  skillLoadTool({
51
78
  storage,
52
79
  config,
53
80
  sandbox,
81
+ environments,
54
82
  attachments,
55
83
  eventLog,
56
84
  get db() {
@@ -59,6 +87,21 @@ let BuiltinTools = class BuiltinTools {
59
87
  }),
60
88
  // 自写技能:agent 定义显式引用才可用
61
89
  skillWriteTool({ changes: skillChanges }),
90
+ // web search / fetch through the org's default provider (web tools spec §3); WebFetch answers
91
+ // from the page with one call on the `web_fetch` purpose (§5), never returning the page
92
+ ...webTools({
93
+ points,
94
+ config,
95
+ cache: webPages,
96
+ extract: (ctx, page, prompt) => extractAnswer({ purposes, eventLog, stepLog, config, log, hooks: host?.hooks, usageReport }, ctx, page, prompt),
97
+ }),
98
+ // the platform's own operations and docs, as the run's person (Platform tool spec)
99
+ platformTool({
100
+ ops: platformOps,
101
+ actor: platformActor,
102
+ docs: agentDocs,
103
+ setting: async (orgId) => (await readOrgSettings(db.db, orgId)).platformTool,
104
+ }),
62
105
  ];
63
106
  }
64
107
  /** The builtin tools, in a fixed order. */
@@ -75,6 +118,20 @@ BuiltinTools = __decorate([
75
118
  __param(4, Inject(SkillChangesService)),
76
119
  __param(5, Inject(AttachmentsService)),
77
120
  __param(6, Inject(EventLog)),
78
- __param(7, Inject(SandboxService))
121
+ __param(7, Inject(SandboxService)),
122
+ __param(8, Inject(ConversationEnvironments)),
123
+ __param(9, Inject(ExtensionPointDefaults)),
124
+ __param(10, Inject(WebPages)),
125
+ __param(11, Inject(ModelPurposesService)),
126
+ __param(12, Inject(ExtensionHost)),
127
+ __param(13, Inject(UsageReporter)),
128
+ __param(14, Inject(StepLog)),
129
+ __param(15, Inject(KERNEL_LOGGER)),
130
+ __param(16, Inject(BackgroundTaskStore)),
131
+ __param(17, Inject(BackgroundTaskFinisher)),
132
+ __param(18, Inject(BackgroundTaskStopper)),
133
+ __param(19, Inject(PlatformOperations)),
134
+ __param(20, Inject(PlatformActor)),
135
+ __param(21, Inject(AgentDocs))
79
136
  ], BuiltinTools);
80
137
  export { BuiltinTools };
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ import type { BuiltinTool } from "../registry.js";
3
+ export { SUBAGENT_HANDBACK } from "../builtin-names.js";
4
+ /**
5
+ * The `SubagentHandback` builtin tool (agent map spec §4.3, children only): delivers a report to
6
+ * the agent that dispatched the sub-agent, as a `report` `subagent_delivery` in the parent's log.
7
+ * The sub-agent keeps its turn and may go on working; several handbacks are allowed. A run that
8
+ * handed back and then completes delivers nothing more (it only logs `subagent_finished`); one that
9
+ * ends otherwise (failed, stopped, a limit) is delivered as a one-line status. The tool pipeline handles the call itself
10
+ * (`SubagentMessages`), so {@link handbackTool}'s `run` is only a guard.
11
+ */
12
+ /** The input of a `SubagentHandback` call. */
13
+ export declare const HandbackInput: z.ZodObject<{
14
+ message: z.ZodString;
15
+ }, z.core.$strict>;
16
+ export type HandbackInputT = z.infer<typeof HandbackInput>;
17
+ /** The result of a handback (agent map spec §4.3). */
18
+ export declare const HANDBACK_RESULT_TEXT = "Report delivered to your caller.";
19
+ /** A call outside a sub-agent (the tool is never offered there). */
20
+ export declare const HANDBACK_NOT_A_CHILD_TEXT = "Only sub-agents can hand back a report; reply in this conversation instead.";
21
+ /** A fork invocation's child (phase D): its parent reads its final reply as the report. */
22
+ export declare const HANDBACK_FORK_TEXT = "You run a skill for the agent that dispatched you, which reads your final reply as the report; end your turn with the report instead.";
23
+ /**
24
+ * The builtin. `defaultPolicy: "allow"`: it only moves text inside one tree the person already
25
+ * started. The tool pipeline handles `SubagentHandback` calls itself; `run` answers only when a
26
+ * call reaches it anyway.
27
+ */
28
+ export declare const handbackTool: BuiltinTool;
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ export { SUBAGENT_HANDBACK } from "../builtin-names.js";
3
+ /**
4
+ * The `SubagentHandback` builtin tool (agent map spec §4.3, children only): delivers a report to
5
+ * the agent that dispatched the sub-agent, as a `report` `subagent_delivery` in the parent's log.
6
+ * The sub-agent keeps its turn and may go on working; several handbacks are allowed. A run that
7
+ * handed back and then completes delivers nothing more (it only logs `subagent_finished`); one that
8
+ * ends otherwise (failed, stopped, a limit) is delivered as a one-line status. The tool pipeline handles the call itself
9
+ * (`SubagentMessages`), so {@link handbackTool}'s `run` is only a guard.
10
+ */
11
+ /** The input of a `SubagentHandback` call. */
12
+ export const HandbackInput = z.object({ message: z.string().min(1).max(200_000) }).strict();
13
+ const SPEC = {
14
+ name: "SubagentHandback",
15
+ description: "Hand your report back to the agent that dispatched you. It receives the message as your " +
16
+ "report, so include everything it needs: what you did, what you found, and anything left " +
17
+ "open. You keep your turn after this call: go on working if something remains, then end your " +
18
+ "turn. You can hand back more than once, for example a partial report and then the final " +
19
+ "one. Once you handed back, your final reply is not delivered again. For a short note while " +
20
+ 'you work, use SendMessage with to "parent" instead.',
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ message: {
25
+ type: "string",
26
+ minLength: 1,
27
+ maxLength: 200000,
28
+ description: "Your report for the agent that dispatched you.",
29
+ },
30
+ },
31
+ required: ["message"],
32
+ additionalProperties: false,
33
+ },
34
+ };
35
+ /** The result of a handback (agent map spec §4.3). */
36
+ export const HANDBACK_RESULT_TEXT = "Report delivered to your caller.";
37
+ /** A call outside a sub-agent (the tool is never offered there). */
38
+ export const HANDBACK_NOT_A_CHILD_TEXT = "Only sub-agents can hand back a report; reply in this conversation instead.";
39
+ /** A fork invocation's child (phase D): its parent reads its final reply as the report. */
40
+ export const HANDBACK_FORK_TEXT = "You run a skill for the agent that dispatched you, which reads your final reply as the report; end your turn with the report instead.";
41
+ /**
42
+ * The builtin. `defaultPolicy: "allow"`: it only moves text inside one tree the person already
43
+ * started. The tool pipeline handles `SubagentHandback` calls itself; `run` answers only when a
44
+ * call reaches it anyway.
45
+ */
46
+ export const handbackTool = {
47
+ spec: SPEC,
48
+ defaultPolicy: "allow",
49
+ run: async () => ({
50
+ content: [{ type: "text", text: HANDBACK_NOT_A_CHILD_TEXT }],
51
+ isError: true,
52
+ }),
53
+ };
@@ -0,0 +1,34 @@
1
+ import type { OrgSettings } from "../../orgs/settings.service.js";
2
+ import type { ActorFacts } from "../../platform/actor.js";
3
+ import type { AgentDocTopic } from "../../platform/agent-docs.js";
4
+ import type { PlatformOperations } from "../../platform/registry.js";
5
+ import type { BuiltinTool, CallPolicyContext } from "../registry.js";
6
+ /**
7
+ * The `Platform` builtin (Platform tool spec §3–§6): one tool through which an agent discovers and
8
+ * calls the platform's own operations as the run's trigger account, and reads the agent docs.
9
+ * - `browse` / `search` / `describe` / `read` only read; their policy is the tool's `allow`.
10
+ * - `call` gets a per-call policy key `Platform:<operation>` ({@link BuiltinTool.callPolicy}): a
11
+ * read runs, a write asks (remembered only for `personal`), an operation that cannot run now is
12
+ * denied with its reason. Right before `op.run` the availability is checked again on fresh facts
13
+ * (the actor may have lost the role while the confirmation waited).
14
+ * - The actor, the agent and the conversation come from the runtime context, never from input.
15
+ * - Results are JSON text; a list an operation returns is capped at {@link LIST_MAX} entries.
16
+ */
17
+ /** The most entries of a list in one result (operations that page return `next`). */
18
+ export declare const LIST_MAX = 50;
19
+ /** The tool's `unavailable` reason when the org setting `platformTool` is `off` (spec §3). */
20
+ export declare const PLATFORM_UNAVAILABLE_OFF = "The org turned the Platform tool off; ask an org admin to turn it on.";
21
+ /** What the tool needs; `BuiltinTools` passes the Nest providers. */
22
+ export interface PlatformToolDeps {
23
+ ops: Pick<PlatformOperations, "domains" | "inDomain" | "get" | "search">;
24
+ actor: {
25
+ facts(ctx: CallPolicyContext): Promise<ActorFacts>;
26
+ };
27
+ docs: {
28
+ topics(): AgentDocTopic[];
29
+ read(id: string): string | null;
30
+ };
31
+ /** The org setting `platformTool`. */
32
+ setting(orgId: string): Promise<OrgSettings["platformTool"]>;
33
+ }
34
+ export declare function platformTool(deps: PlatformToolDeps): BuiltinTool;
@@ -0,0 +1,362 @@
1
+ import { ToolError } from "@capybara-hq/plugin-sdk";
2
+ import { z } from "zod";
3
+ import { availability } from "../../platform/availability.js";
4
+ import { toToolError } from "../../platform/errors.js";
5
+ import { PLATFORM_METHOD } from "../../platform/method.js";
6
+ import { OPERATION_ID, operationDomain, } from "../../platform/operation.js";
7
+ import { BUILTIN } from "../builtin-names.js";
8
+ /**
9
+ * The `Platform` builtin (Platform tool spec §3–§6): one tool through which an agent discovers and
10
+ * calls the platform's own operations as the run's trigger account, and reads the agent docs.
11
+ * - `browse` / `search` / `describe` / `read` only read; their policy is the tool's `allow`.
12
+ * - `call` gets a per-call policy key `Platform:<operation>` ({@link BuiltinTool.callPolicy}): a
13
+ * read runs, a write asks (remembered only for `personal`), an operation that cannot run now is
14
+ * denied with its reason. Right before `op.run` the availability is checked again on fresh facts
15
+ * (the actor may have lost the role while the confirmation waited).
16
+ * - The actor, the agent and the conversation come from the runtime context, never from input.
17
+ * - Results are JSON text; a list an operation returns is capped at {@link LIST_MAX} entries.
18
+ */
19
+ /** The most entries of a list in one result (operations that page return `next`). */
20
+ export const LIST_MAX = 50;
21
+ /** The most operations `search` returns. */
22
+ const SEARCH_MAX = 20;
23
+ /** The tool's `unavailable` reason when the org setting `platformTool` is `off` (spec §3). */
24
+ export const PLATFORM_UNAVAILABLE_OFF = "The org turned the Platform tool off; ask an org admin to turn it on.";
25
+ const ACTIONS = ["browse", "search", "describe", "call", "read"];
26
+ const SPEC = {
27
+ name: BUILTIN.Platform,
28
+ description: "Discover and use the platform's own operations (skills, agents, templates, plugins, " +
29
+ "marketplaces, requests, connectors, extensions) and its documentation, as the person you are " +
30
+ 'working for. Start with action "browse", then "describe" an operation before you "call" it; ' +
31
+ 'never guess parameters. Writes ask the person to confirm. Use "read" for how-to documentation ' +
32
+ "(plugin format, skills, extension points).",
33
+ inputSchema: {
34
+ type: "object",
35
+ properties: {
36
+ action: {
37
+ type: "string",
38
+ enum: [...ACTIONS],
39
+ description: 'browse: the domains and the method, or one domain\'s operations with "domain"; search: ' +
40
+ 'operations matching "query"; describe: one operation\'s full definition; call: run ' +
41
+ '"operation" with "params"; read: a documentation topic, or the list of topics without ' +
42
+ '"topic".',
43
+ },
44
+ domain: {
45
+ type: "string",
46
+ maxLength: 100,
47
+ description: 'For browse: a domain id from the browse result, e.g. "skills".',
48
+ },
49
+ query: {
50
+ type: "string",
51
+ maxLength: 200,
52
+ description: "For search: words to look for in operation ids and descriptions.",
53
+ },
54
+ operation: {
55
+ type: "string",
56
+ maxLength: 100,
57
+ description: 'For describe and call: an operation id, e.g. "skills.list".',
58
+ },
59
+ params: {
60
+ type: "object",
61
+ description: "For call: the operation's input, matching the inputSchema describe returned. Pass " +
62
+ '"cursor" from a previous result\'s "next" to get the next page.',
63
+ },
64
+ topic: {
65
+ type: "string",
66
+ maxLength: 100,
67
+ description: "For read: a topic id from the topic list.",
68
+ },
69
+ },
70
+ required: ["action"],
71
+ additionalProperties: false,
72
+ },
73
+ keyArgs: ["action", "operation", "domain"],
74
+ };
75
+ const json = (value, summary) => ({
76
+ content: [{ type: "text", text: JSON.stringify(value) }],
77
+ display: { summary },
78
+ });
79
+ /** Longest model-written text quoted in a display summary (summaries are at most 200). */
80
+ const SUMMARY_QUOTE_MAX = 80;
81
+ const clip = (s) => s.length > SUMMARY_QUOTE_MAX ? `${s.slice(0, SUMMARY_QUOTE_MAX)}…` : s;
82
+ /** The first sentence of a description: the line `browse` and `search` show. */
83
+ const firstSentence = (text) => {
84
+ const m = /^(.+?[.!?])(\s|$)/s.exec(text.trim());
85
+ return (m?.[1] ?? text).trim();
86
+ };
87
+ const kindOf = (op) => op.confirm === "read" ? "read" : "write";
88
+ const availabilityFields = (a) => a.ok ? { available: true } : { available: false, reason: a.reason };
89
+ /** One operation as `browse` and `search` list it. */
90
+ const line = (op, facts) => ({
91
+ id: op.id,
92
+ description: firstSentence(op.description),
93
+ kind: kindOf(op),
94
+ ...availabilityFields(availability(op, facts)),
95
+ });
96
+ const capped = (items) => ({
97
+ items: items.slice(0, LIST_MAX),
98
+ ...(items.length > LIST_MAX && {
99
+ total: items.length,
100
+ truncated: true,
101
+ hint: "Narrow the query or pass params.cursor where the operation pages.",
102
+ }),
103
+ });
104
+ /** An operation's result as a JSON object: a bare list is capped, nothing becomes `{ ok: true }`. */
105
+ function asResult(value) {
106
+ if (Array.isArray(value))
107
+ return capped(value);
108
+ if (value === undefined || value === null)
109
+ return { ok: true };
110
+ if (typeof value !== "object")
111
+ return { result: value };
112
+ return value;
113
+ }
114
+ const unknownOperationText = (id) => `Unknown operation "${id}". Use browse or search to find an operation id, then describe it.`;
115
+ const missingText = (action, field, what) => `Action ${action} needs "${field}": pass ${what}.`;
116
+ const invalidParamsText = (id, problems) => `Invalid params for ${id}: ${problems}. Call describe with operation "${id}" for its input schema and an example, then call again.`;
117
+ const unavailableOpText = (id, reason) => `Operation ${id} is unavailable, so do not call it again as is: ${reason}`;
118
+ const outputRefText = (id) => `Operation ${id} writes, and its params hold a {"$output": ...} reference, which the person confirming would see instead of the content. Pass the content inline in params and call again.`;
119
+ /** Whether a value holds a `{"$output": …}` reference anywhere (the pipeline's form). */
120
+ function hasOutputRef(v) {
121
+ if (Array.isArray(v))
122
+ return v.some(hasOutputRef);
123
+ if (typeof v !== "object" || v === null)
124
+ return false;
125
+ const keys = Object.keys(v);
126
+ if (keys.length === 1 && keys[0] === "$output")
127
+ return true;
128
+ return Object.values(v).some(hasOutputRef);
129
+ }
130
+ /** Zod issues as one line: `path: message; …` (at most five). */
131
+ function issuesText(error) {
132
+ const parts = error.issues
133
+ .slice(0, 5)
134
+ .map((i) => `${i.path.length === 0 ? "params" : i.path.join(".")}: ${i.message}`);
135
+ if (error.issues.length > 5)
136
+ parts.push(`and ${error.issues.length - 5} more`);
137
+ return parts.join("; ");
138
+ }
139
+ /** The operation of a `call` / `describe`; a `ToolError` when there is none (model-visible). */
140
+ function operationOf(deps, action, id) {
141
+ if (id === undefined || id === "") {
142
+ throw new ToolError(missingText(action, "operation", "an operation id from browse or search"));
143
+ }
144
+ const op = deps.ops.get(id);
145
+ if (op === null)
146
+ throw new ToolError(unknownOperationText(id));
147
+ return op;
148
+ }
149
+ /** `params` checked against the operation's schema; a `ToolError` naming `describe` otherwise. */
150
+ function paramsOf(op, params) {
151
+ const parsed = op.input.safeParse(params ?? {});
152
+ if (!parsed.success)
153
+ throw new ToolError(invalidParamsText(op.id, issuesText(parsed.error)));
154
+ return parsed.data;
155
+ }
156
+ /**
157
+ * The operation context of a confirmation (`confirmFor`, `summary`): the runtime's ids, never
158
+ * input. Nothing aborts it; it only reads.
159
+ */
160
+ const confirmCtx = (ctx) => ({
161
+ orgId: ctx.orgId,
162
+ actorAccountId: ctx.accountId,
163
+ agentId: ctx.agentId,
164
+ conversationId: ctx.conversationId,
165
+ runId: ctx.runId,
166
+ signal: new AbortController().signal,
167
+ });
168
+ const factsCtx = (ctx) => ({
169
+ orgId: ctx.orgId,
170
+ accountId: ctx.accountId,
171
+ agentId: ctx.agentId,
172
+ conversationId: ctx.conversationId,
173
+ runId: ctx.runId ?? null,
174
+ });
175
+ export function platformTool(deps) {
176
+ const facts = (ctx) => deps.actor.facts(ctx);
177
+ async function callPolicy(raw, ctx) {
178
+ const input = raw;
179
+ if (input.action !== "call")
180
+ return null;
181
+ const id = input.operation;
182
+ const key = `${BUILTIN.Platform}:${id !== undefined && OPERATION_ID.test(id) ? id : "unknown"}`;
183
+ const deny = (denyReason) => ({
184
+ key,
185
+ policy: "deny",
186
+ remember: false,
187
+ denyReason,
188
+ });
189
+ let op;
190
+ let params;
191
+ try {
192
+ op = operationOf(deps, "call", id);
193
+ // params that cannot run are refused here, so the person is never asked to confirm them
194
+ params = paramsOf(op, input.params);
195
+ }
196
+ catch (e) {
197
+ if (e instanceof ToolError)
198
+ return deny(e.message);
199
+ throw e;
200
+ }
201
+ const verdict = availability(op, await facts(ctx));
202
+ if (!verdict.ok)
203
+ return deny(unavailableOpText(op.id, verdict.reason));
204
+ if (op.confirm === "read")
205
+ return { key, policy: "allow", remember: false };
206
+ // the card shows the raw input: a write must carry what it writes, not a reference to it
207
+ if (hasOutputRef(ctx.rawInput?.params)) {
208
+ return deny(outputRefText(op.id));
209
+ }
210
+ const octx = confirmCtx(ctx);
211
+ const [cls, summary] = await Promise.all([
212
+ classOf(op, params, octx),
213
+ summaryOf(op, params, octx),
214
+ ]);
215
+ return {
216
+ key,
217
+ policy: "ask",
218
+ // org / platform writes are confirmed every time (spec §6.2)
219
+ remember: cls === "personal",
220
+ summary,
221
+ };
222
+ }
223
+ async function run(raw, ctx) {
224
+ const input = raw;
225
+ switch (input.action) {
226
+ case "browse":
227
+ return input.domain === undefined ? browseRoot() : browseDomain(input.domain, ctx);
228
+ case "search":
229
+ return search(input.query, ctx);
230
+ case "describe":
231
+ return describe(input.operation, ctx);
232
+ case "call":
233
+ return call(input, ctx);
234
+ case "read":
235
+ return read(input.topic);
236
+ }
237
+ }
238
+ function browseRoot() {
239
+ const domains = deps.ops.domains().map((d) => ({
240
+ id: d.id,
241
+ description: d.description,
242
+ operations: deps.ops.inDomain(d.id).length,
243
+ }));
244
+ return json({ domains, method: PLATFORM_METHOD }, { zh: "浏览平台操作", en: "Browsed platform operations" });
245
+ }
246
+ async function browseDomain(domain, ctx) {
247
+ const ids = deps.ops.domains().map((d) => d.id);
248
+ if (!ids.includes(domain)) {
249
+ throw new ToolError(`Unknown domain "${domain}". Use one of: ${ids.join(", ")}; or call browse without a domain.`);
250
+ }
251
+ const f = await facts(factsCtx(ctx));
252
+ const ops = deps.ops.inDomain(domain);
253
+ return json({
254
+ domain,
255
+ operations: ops.slice(0, LIST_MAX).map((op) => line(op, f)),
256
+ ...(ops.length > LIST_MAX && { truncated: true, hint: "Use search to narrow the list." }),
257
+ }, { zh: `浏览平台操作:${domain}`, en: `Browsed platform operations: ${domain}` });
258
+ }
259
+ async function search(query, ctx) {
260
+ if (query === undefined || query.trim() === "") {
261
+ throw new ToolError(missingText("search", "query", "words to look for"));
262
+ }
263
+ const f = await facts(factsCtx(ctx));
264
+ const found = deps.ops.search(query, SEARCH_MAX);
265
+ return json({
266
+ query,
267
+ operations: found.map((op) => line(op, f)),
268
+ ...(found.length === 0 && {
269
+ hint: "Nothing matched; use other words, or browse a domain.",
270
+ }),
271
+ }, { zh: `搜索平台操作:${clip(query)}`, en: `Searched platform operations: ${clip(query)}` });
272
+ }
273
+ async function describe(id, ctx) {
274
+ const op = operationOf(deps, "describe", id);
275
+ const f = await facts(factsCtx(ctx));
276
+ return json({
277
+ id: op.id,
278
+ description: op.description,
279
+ kind: kindOf(op),
280
+ confirm: op.confirm,
281
+ inputSchema: z.toJSONSchema(op.input, { io: "input", unrepresentable: "any" }),
282
+ example: op.example,
283
+ ...(op.errors !== undefined && op.errors.length > 0 && { errors: op.errors }),
284
+ ...availabilityFields(availability(op, f)),
285
+ related: deps.ops
286
+ .inDomain(operationDomain(op.id))
287
+ .filter((o) => o.id !== op.id)
288
+ .map((o) => o.id),
289
+ }, { zh: `查看平台操作 ${op.id}`, en: `Described platform operation ${op.id}` });
290
+ }
291
+ async function call(input, ctx) {
292
+ const op = operationOf(deps, "call", input.operation);
293
+ const params = paramsOf(op, input.params);
294
+ // fresh facts right before running: the role may be gone since the confirmation (Review Focus 3)
295
+ const verdict = availability(op, await facts(factsCtx(ctx)));
296
+ if (!verdict.ok)
297
+ throw new ToolError(unavailableOpText(op.id, verdict.reason));
298
+ let result;
299
+ try {
300
+ result = await op.run(params, {
301
+ orgId: ctx.orgId,
302
+ actorAccountId: ctx.accountId,
303
+ agentId: ctx.agentId,
304
+ conversationId: ctx.conversationId,
305
+ runId: ctx.runId ?? null,
306
+ signal: ctx.signal,
307
+ });
308
+ }
309
+ catch (e) {
310
+ throw toToolError(e);
311
+ }
312
+ return json(asResult(result), { zh: `调用平台操作 ${op.id}`, en: `Called ${op.id}` });
313
+ }
314
+ function read(topic) {
315
+ if (topic === undefined || topic === "") {
316
+ return json({ topics: deps.docs.topics(), hint: 'Read one with action "read" and its "topic".' }, { zh: "查看平台文档目录", en: "Listed platform docs" });
317
+ }
318
+ const text = deps.docs.read(topic);
319
+ if (text === null) {
320
+ throw new ToolError(`Unknown topic "${topic}". Call read without a topic to list the topics.`);
321
+ }
322
+ return {
323
+ content: [{ type: "text", text }],
324
+ display: { summary: { zh: `阅读平台文档 ${topic}`, en: `Read platform doc ${topic}` } },
325
+ };
326
+ }
327
+ return {
328
+ spec: SPEC,
329
+ defaultPolicy: "allow",
330
+ run,
331
+ callPolicy,
332
+ async unavailable({ orgId }) {
333
+ return (await deps.setting(orgId)) === "off" ? PLATFORM_UNAVAILABLE_OFF : null;
334
+ },
335
+ };
336
+ }
337
+ /**
338
+ * The class of one write: `confirmFor` when the operation has one (the target decides), else
339
+ * `confirm`. A `confirmFor` that throws counts as `org`: never remembered.
340
+ */
341
+ async function classOf(op, params, ctx) {
342
+ if (op.confirmFor === undefined)
343
+ return op.confirm;
344
+ try {
345
+ return await op.confirmFor(params, ctx);
346
+ }
347
+ catch {
348
+ return "org";
349
+ }
350
+ }
351
+ /** The card summary of a write, rendered from the validated params and kernel reads. */
352
+ async function summaryOf(op, params, ctx) {
353
+ try {
354
+ const s = await op.summary?.(params, ctx);
355
+ if (s !== undefined)
356
+ return s;
357
+ }
358
+ catch {
359
+ // a summary that cannot render falls back to the operation id (the card shows every param)
360
+ }
361
+ return { zh: `平台操作 ${op.id}`, en: `Platform operation ${op.id}` };
362
+ }
@@ -1,4 +1,4 @@
1
- import type { ExecResult } from "@capybara-hq/plugin-sdk";
1
+ import { type ExecResult } from "@capybara-hq/plugin-sdk";
2
2
  import type { BuiltinTool } from "../../registry.js";
3
3
  import { type SandboxToolDeps } from "./common.js";
4
4
  /** The command timeout in seconds when `timeout` is not given, at most `sandbox.limits.maxCommandSeconds`. */