@nylorun/runtime 0.26.0-beta → 0.28.0-beta

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 (379) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +18 -14
  3. package/dist/adapters/execution/restate.d.ts +15 -18
  4. package/dist/adapters/execution/restate.js +31 -27
  5. package/dist/adapters/replication/pgoutput.d.ts +1 -1
  6. package/dist/adapters/replication/pgoutput.js +3 -2
  7. package/dist/adapters/sandbox/local.js +8 -5
  8. package/dist/adapters/sandbox/virtual.js +2 -2
  9. package/dist/adapters/streams/s2.d.ts +1 -1
  10. package/dist/adapters/streams/s2.js +18 -14
  11. package/dist/api/a2a/card.d.ts +4 -3
  12. package/dist/api/a2a/card.js +4 -4
  13. package/dist/api/a2a/endpoint.js +3 -4
  14. package/dist/api/a2a/protocol.js +4 -0
  15. package/dist/api/a2a/routes.d.ts +2 -6
  16. package/dist/api/a2a/routes.js +30 -25
  17. package/dist/api/ag-ui/endpoint.js +2 -3
  18. package/dist/api/ag-ui/routes.js +8 -11
  19. package/dist/api/components.d.ts +6789 -3405
  20. package/dist/api/components.js +43 -30
  21. package/dist/api/gate/keys.js +7 -4
  22. package/dist/api/gate/routes.d.ts +6 -2
  23. package/dist/api/gate/routes.js +15 -11
  24. package/dist/api/http/app.js +9 -4
  25. package/dist/api/http/body.d.ts +17 -3
  26. package/dist/api/http/body.js +35 -7
  27. package/dist/api/http/respond.js +6 -2
  28. package/dist/api/http/routes/access.js +5 -4
  29. package/dist/api/http/routes/agent-manifests.d.ts +10 -0
  30. package/dist/api/http/routes/agent-manifests.js +135 -0
  31. package/dist/api/http/routes/agents.d.ts +11 -0
  32. package/dist/api/http/routes/agents.js +418 -0
  33. package/dist/api/http/routes/artifacts.js +21 -9
  34. package/dist/api/http/routes/coverage.d.ts +4 -4
  35. package/dist/api/http/routes/coverage.js +13 -7
  36. package/dist/api/http/routes/files.d.ts +2 -1
  37. package/dist/api/http/routes/files.js +31 -5
  38. package/dist/api/http/routes/mcp.js +3 -3
  39. package/dist/api/http/routes/me.d.ts +1 -1
  40. package/dist/api/http/routes/me.js +1 -2
  41. package/dist/api/http/routes/memories.d.ts +9 -0
  42. package/dist/api/http/routes/memories.js +152 -0
  43. package/dist/api/http/routes/reads.d.ts +10 -111
  44. package/dist/api/http/routes/reads.js +51 -29
  45. package/dist/api/http/routes/sessions.js +26 -54
  46. package/dist/api/http/routes/tenant.d.ts +2 -2
  47. package/dist/api/http/routes/tenant.js +77 -24
  48. package/dist/api/http/routes/triggers.d.ts +10 -0
  49. package/dist/api/http/routes/triggers.js +180 -0
  50. package/dist/api/inbound-files.d.ts +3 -9
  51. package/dist/api/inbound-files.js +18 -24
  52. package/dist/api/openapi.js +73 -47
  53. package/dist/artifacts/disk.d.ts +10 -14
  54. package/dist/artifacts/disk.js +99 -95
  55. package/dist/artifacts/files.d.ts +13 -4
  56. package/dist/artifacts/files.js +27 -9
  57. package/dist/artifacts/folder-upload.d.ts +75 -0
  58. package/dist/artifacts/folder-upload.js +263 -0
  59. package/dist/artifacts/folders.d.ts +14 -8
  60. package/dist/artifacts/folders.js +19 -11
  61. package/dist/artifacts/links.js +7 -6
  62. package/dist/artifacts/parts.d.ts +9 -14
  63. package/dist/artifacts/parts.js +11 -9
  64. package/dist/artifacts/pipe.d.ts +15 -0
  65. package/dist/artifacts/pipe.js +71 -0
  66. package/dist/artifacts/quota.d.ts +36 -0
  67. package/dist/artifacts/quota.js +44 -0
  68. package/dist/artifacts/service.d.ts +25 -1
  69. package/dist/artifacts/service.js +72 -27
  70. package/dist/blob/fs.js +2 -1
  71. package/dist/blob/s3.d.ts +6 -2
  72. package/dist/blob/s3.js +9 -7
  73. package/dist/blob/types.d.ts +1 -1
  74. package/dist/blob/types.js +1 -1
  75. package/dist/core/flow-host.d.ts +0 -1
  76. package/dist/core/limits.d.ts +11 -35
  77. package/dist/core/limits.js +5 -73
  78. package/dist/core/sandbox-routes.js +0 -1
  79. package/dist/core/turn-manifest.d.ts +1 -2
  80. package/dist/core/turn-manifest.js +4 -28
  81. package/dist/execution/memory.d.ts +8 -5
  82. package/dist/execution/memory.js +8 -6
  83. package/dist/execution/types.d.ts +1 -6
  84. package/dist/execution/types.js +0 -5
  85. package/dist/gates/contract.d.ts +3 -2
  86. package/dist/gates/contract.js +1 -1
  87. package/dist/gates/egress-credentials.js +5 -4
  88. package/dist/gates/egress.d.ts +13 -13
  89. package/dist/gates/egress.js +19 -21
  90. package/dist/gates/fixture-model.js +13 -2
  91. package/dist/gates/handler.d.ts +1 -3
  92. package/dist/gates/handler.js +4 -3
  93. package/dist/gates/http-client.d.ts +4 -3
  94. package/dist/gates/http-client.js +5 -7
  95. package/dist/gates/http-tool.d.ts +24 -4
  96. package/dist/gates/http-tool.js +41 -13
  97. package/dist/gates/in-process.d.ts +2 -1
  98. package/dist/gates/in-process.js +17 -9
  99. package/dist/gates/inflight.d.ts +2 -2
  100. package/dist/gates/inflight.js +3 -2
  101. package/dist/gates/journal.js +5 -7
  102. package/dist/gates/mcp-handler.d.ts +4 -3
  103. package/dist/gates/mcp-handler.js +15 -5
  104. package/dist/gates/meter.js +6 -5
  105. package/dist/gates/model-gate.d.ts +11 -2
  106. package/dist/gates/policy.d.ts +34 -6
  107. package/dist/gates/policy.js +66 -18
  108. package/dist/gates/provider-gate.d.ts +22 -0
  109. package/dist/gates/provider-gate.js +30 -0
  110. package/dist/gates/tool-calls.d.ts +1 -3
  111. package/dist/gates/tool-calls.js +2 -3
  112. package/dist/gates/tool-client.d.ts +1 -1
  113. package/dist/gates/tool-client.js +5 -6
  114. package/dist/gates/tool-contract.d.ts +8 -5
  115. package/dist/gates/tool-contract.js +1 -1
  116. package/dist/gates/tool-gate.d.ts +18 -7
  117. package/dist/gates/tool-gate.js +49 -7
  118. package/dist/harness/calls.d.ts +27 -25
  119. package/dist/harness/calls.js +40 -46
  120. package/dist/harness/executors.d.ts +10 -3
  121. package/dist/harness/executors.js +53 -23
  122. package/dist/harness/main.js +2 -2
  123. package/dist/harness/pod.d.ts +2 -2
  124. package/dist/harness/pod.js +7 -6
  125. package/dist/harness/run-tokens.d.ts +4 -1
  126. package/dist/harness/run-tokens.js +6 -2
  127. package/dist/harness/service.d.ts +17 -14
  128. package/dist/harness/service.js +21 -35
  129. package/dist/harness/setup.d.ts +0 -2
  130. package/dist/harness/setup.js +21 -15
  131. package/dist/harness/ws-client.d.ts +2 -2
  132. package/dist/harness/ws-client.js +7 -5
  133. package/dist/harness/ws-port.d.ts +3 -4
  134. package/dist/harness/ws-port.js +3 -4
  135. package/dist/harness-api/artifacts.d.ts +20 -0
  136. package/dist/harness-api/artifacts.js +478 -0
  137. package/dist/harness-api/in-process.d.ts +2 -2
  138. package/dist/harness-api/in-process.js +18 -16
  139. package/dist/harness-api/record.d.ts +10 -9
  140. package/dist/harness-api/record.js +113 -157
  141. package/dist/harness-api/renew.d.ts +1 -1
  142. package/dist/harness-api/renew.js +2 -2
  143. package/dist/harness-api/server.d.ts +1 -16
  144. package/dist/harness-api/server.js +86 -73
  145. package/dist/harness-api/start.d.ts +27 -5
  146. package/dist/harness-api/start.js +102 -19
  147. package/dist/harness-api/tool-journal.d.ts +15 -10
  148. package/dist/harness-api/tool-journal.js +26 -24
  149. package/dist/harness-api/workspace.d.ts +0 -4
  150. package/dist/harness-api/workspace.js +4 -47
  151. package/dist/harness-api/ws-server.js +10 -10
  152. package/dist/host/create-host.js +2 -3
  153. package/dist/host/execution.js +2 -3
  154. package/dist/host/gates.d.ts +2 -9
  155. package/dist/host/gates.js +15 -12
  156. package/dist/host/http.d.ts +2 -4
  157. package/dist/host/http.js +5 -29
  158. package/dist/host/main.js +10 -3
  159. package/dist/host/operate.js +12 -3
  160. package/dist/host/stack-config.d.ts +11 -0
  161. package/dist/host/stack-config.js +21 -1
  162. package/dist/index.d.ts +0 -1
  163. package/dist/index.js +0 -1
  164. package/dist/infra/index.js +2 -1
  165. package/dist/infra/readiness.d.ts +0 -2
  166. package/dist/infra/readiness.js +4 -3
  167. package/dist/keys/client.d.ts +1 -0
  168. package/dist/keys/client.js +2 -3
  169. package/dist/keys/contract.d.ts +0 -2
  170. package/dist/keys/contract.js +0 -2
  171. package/dist/keys/egress-ca.d.ts +0 -2
  172. package/dist/keys/egress-ca.js +2 -3
  173. package/dist/keys/keys.d.ts +15 -4
  174. package/dist/keys/keys.js +22 -1
  175. package/dist/keys/webhooks.d.ts +25 -0
  176. package/dist/keys/webhooks.js +62 -0
  177. package/dist/keys/x509.d.ts +8 -4
  178. package/dist/keys/x509.js +14 -5
  179. package/dist/management-openapi.json +3043 -1954
  180. package/dist/mcp/connect.d.ts +35 -26
  181. package/dist/mcp/connect.js +112 -141
  182. package/dist/mcp/pool.d.ts +27 -22
  183. package/dist/mcp/pool.js +34 -48
  184. package/dist/mcp/preview.d.ts +12 -5
  185. package/dist/mcp/preview.js +43 -26
  186. package/dist/mcp/snapshot.d.ts +35 -86
  187. package/dist/mcp/snapshot.js +93 -135
  188. package/dist/memory/service.d.ts +97 -0
  189. package/dist/memory/service.js +335 -0
  190. package/dist/memory/tool.d.ts +36 -0
  191. package/dist/memory/tool.js +84 -0
  192. package/dist/model/auth-store.js +5 -3
  193. package/dist/model/capabilities.d.ts +1 -1
  194. package/dist/model/catalog.d.ts +9 -36
  195. package/dist/model/catalog.js +6 -33
  196. package/dist/model/descriptor.d.ts +51 -0
  197. package/dist/model/descriptor.js +83 -0
  198. package/dist/model/models.d.ts +0 -3
  199. package/dist/model/models.js +3 -5
  200. package/dist/model/native-blocks.js +1 -1
  201. package/dist/model/pi-model.d.ts +16 -5
  202. package/dist/model/pi-model.js +86 -105
  203. package/dist/openapi.json +13653 -9986
  204. package/dist/reads/cursor.js +3 -1
  205. package/dist/reads/types.d.ts +3 -3
  206. package/dist/record/agent.d.ts +27 -0
  207. package/dist/record/agent.js +46 -0
  208. package/dist/record/append.d.ts +34 -2
  209. package/dist/record/append.js +50 -1
  210. package/dist/record/index.d.ts +2 -2
  211. package/dist/record/index.js +2 -2
  212. package/dist/redact.d.ts +1 -1
  213. package/dist/redact.js +3 -2
  214. package/dist/sandbox/egress-token.d.ts +3 -3
  215. package/dist/sandbox/egress-token.js +3 -3
  216. package/dist/sandbox/join.js +8 -7
  217. package/dist/sandbox/manager.d.ts +41 -41
  218. package/dist/sandbox/manager.js +112 -44
  219. package/dist/sandbox/placement.d.ts +2 -2
  220. package/dist/sandbox/placement.js +7 -10
  221. package/dist/sandbox/pods/client.d.ts +1 -10
  222. package/dist/sandbox/pods/client.js +8 -4
  223. package/dist/sandbox/pods/lifecycle.d.ts +25 -17
  224. package/dist/sandbox/pods/lifecycle.js +51 -29
  225. package/dist/sandbox/pods/network-gate.d.ts +4 -5
  226. package/dist/sandbox/pods/network-gate.js +7 -7
  227. package/dist/sandbox/pods/reconcile.js +14 -3
  228. package/dist/sandbox/pods/spec.js +8 -5
  229. package/dist/sandbox/policy.d.ts +7 -1
  230. package/dist/sandbox/policy.js +10 -3
  231. package/dist/sandbox/resolve.d.ts +11 -6
  232. package/dist/sandbox/resolve.js +19 -9
  233. package/dist/sandbox/setup.d.ts +6 -2
  234. package/dist/sandbox/setup.js +47 -14
  235. package/dist/sandbox/share.d.ts +5 -14
  236. package/dist/sandbox/share.js +5 -34
  237. package/dist/sandbox/skills.d.ts +7 -13
  238. package/dist/sandbox/skills.js +16 -31
  239. package/dist/sandbox/tenant-config.d.ts +2 -2
  240. package/dist/sandbox/tenant-config.js +4 -3
  241. package/dist/sandbox/tools.d.ts +7 -1
  242. package/dist/sandbox/tools.js +26 -26
  243. package/dist/sandbox/types.d.ts +10 -3
  244. package/dist/sandbox/types.js +9 -0
  245. package/dist/store/postgres/connect.d.ts +6 -5
  246. package/dist/store/postgres/connect.js +14 -11
  247. package/dist/store/postgres/control.js +13 -13
  248. package/dist/store/postgres/drizzle/0028_artifact_write_keys.sql +2 -0
  249. package/dist/store/postgres/drizzle/0029_protocol_15.sql +11 -0
  250. package/dist/store/postgres/drizzle/0030_protocol_15_runtime_block.sql +11 -0
  251. package/dist/store/postgres/drizzle/0031_protocol_15_mcp_snapshot.sql +8 -0
  252. package/dist/store/postgres/drizzle/0032_agents.sql +54 -0
  253. package/dist/store/postgres/drizzle/0033_agent_versions.sql +7 -0
  254. package/dist/store/postgres/drizzle/0034_protocol_17_session_queue.sql +13 -0
  255. package/dist/store/postgres/drizzle/0035_t4_triggers.sql +41 -0
  256. package/dist/store/postgres/drizzle/0036_t5_memories.sql +30 -0
  257. package/dist/store/postgres/drizzle/meta/_journal.json +63 -0
  258. package/dist/store/postgres/reads.js +17 -82
  259. package/dist/store/postgres/record-writer.d.ts +4 -4
  260. package/dist/store/postgres/record-writer.js +9 -9
  261. package/dist/store/postgres/schema.d.ts +1382 -151
  262. package/dist/store/postgres/schema.js +191 -37
  263. package/dist/store/postgres/store.js +384 -105
  264. package/dist/store/postgres/tenant.js +1 -2
  265. package/dist/store/types.d.ts +172 -57
  266. package/dist/store/types.js +0 -1
  267. package/dist/streams/relay/core.d.ts +3 -3
  268. package/dist/streams/relay/core.js +9 -10
  269. package/dist/tenant/advance.js +41 -39
  270. package/dist/tenant/agent-manifests.d.ts +72 -0
  271. package/dist/tenant/agent-manifests.js +359 -0
  272. package/dist/tenant/agent-versions.d.ts +126 -0
  273. package/dist/tenant/agent-versions.js +389 -0
  274. package/dist/tenant/agents.d.ts +230 -0
  275. package/dist/tenant/{environments.js → agents.js} +493 -328
  276. package/dist/tenant/auth.d.ts +1 -1
  277. package/dist/tenant/auth.js +3 -3
  278. package/dist/tenant/commands.d.ts +63 -2
  279. package/dist/tenant/commands.js +240 -90
  280. package/dist/tenant/context.d.ts +57 -33
  281. package/dist/tenant/context.js +6 -2
  282. package/dist/tenant/definition-files.d.ts +25 -4
  283. package/dist/tenant/definition-files.js +85 -47
  284. package/dist/tenant/effects.js +15 -51
  285. package/dist/tenant/ephemeral.js +2 -1
  286. package/dist/tenant/history.d.ts +1 -1
  287. package/dist/tenant/history.js +1 -1
  288. package/dist/tenant/host-token.d.ts +3 -3
  289. package/dist/tenant/host-token.js +11 -10
  290. package/dist/tenant/http.d.ts +5 -8
  291. package/dist/tenant/http.js +9 -0
  292. package/dist/tenant/identity-file.d.ts +29 -6
  293. package/dist/tenant/identity-file.js +45 -15
  294. package/dist/tenant/issuers.d.ts +5 -5
  295. package/dist/tenant/issuers.js +34 -26
  296. package/dist/tenant/jwt.d.ts +8 -2
  297. package/dist/tenant/jwt.js +10 -2
  298. package/dist/tenant/limits.d.ts +87 -0
  299. package/dist/tenant/limits.js +172 -0
  300. package/dist/tenant/memories.d.ts +38 -0
  301. package/dist/tenant/memories.js +119 -0
  302. package/dist/tenant/module.d.ts +4 -1
  303. package/dist/tenant/module.js +9 -8
  304. package/dist/tenant/outbound.d.ts +11 -14
  305. package/dist/tenant/outbound.js +10 -15
  306. package/dist/tenant/reset.js +2 -2
  307. package/dist/tenant/run-grants.d.ts +6 -0
  308. package/dist/tenant/run-grants.js +7 -2
  309. package/dist/tenant/run-token.d.ts +0 -4
  310. package/dist/tenant/run-token.js +6 -11
  311. package/dist/tenant/runtime-limits.d.ts +24 -0
  312. package/dist/tenant/runtime-limits.js +27 -0
  313. package/dist/tenant/runtime.d.ts +1 -1
  314. package/dist/tenant/runtime.js +38 -43
  315. package/dist/tenant/session-streams.js +7 -6
  316. package/dist/tenant/session.d.ts +1 -1
  317. package/dist/tenant/session.js +1 -1
  318. package/dist/tenant/sessions.d.ts +28 -45
  319. package/dist/tenant/sessions.js +89 -209
  320. package/dist/tenant/signing-keys.d.ts +1 -1
  321. package/dist/tenant/signing-keys.js +5 -6
  322. package/dist/tenant/status.js +10 -10
  323. package/dist/tenant/streams.js +18 -20
  324. package/dist/tenant/sweep.d.ts +1 -21
  325. package/dist/tenant/sweep.js +51 -51
  326. package/dist/tenant/transcript.d.ts +70 -23
  327. package/dist/tenant/transcript.js +28 -22
  328. package/dist/tenant/triggers.d.ts +143 -0
  329. package/dist/tenant/triggers.js +715 -0
  330. package/dist/tenant/turn-timing.d.ts +11 -1
  331. package/dist/tenant/turn-timing.js +3 -1
  332. package/dist/tenant/types.d.ts +9 -14
  333. package/dist/tenant/worker.d.ts +4 -10
  334. package/dist/tenant/worker.js +10 -14
  335. package/dist/traces/ids.js +5 -1
  336. package/dist/traces/map.d.ts +10 -7
  337. package/dist/traces/map.js +16 -12
  338. package/dist/traces/otlp.d.ts +3 -3
  339. package/dist/traces/otlp.js +5 -3
  340. package/dist/traces/projector.d.ts +9 -4
  341. package/dist/traces/projector.js +13 -7
  342. package/dist/traces/read.js +6 -1
  343. package/dist/tuning.d.ts +390 -0
  344. package/dist/tuning.js +677 -0
  345. package/dist/vault/headers.js +4 -2
  346. package/dist/vault/service.d.ts +13 -8
  347. package/dist/vault/service.js +61 -17
  348. package/dist/version.d.ts +1 -1
  349. package/dist/version.js +1 -1
  350. package/package.json +13 -12
  351. package/dist/api/http/routes/environment-manifests.d.ts +0 -9
  352. package/dist/api/http/routes/environment-manifests.js +0 -118
  353. package/dist/api/http/routes/environments.d.ts +0 -11
  354. package/dist/api/http/routes/environments.js +0 -332
  355. package/dist/artifacts/export.d.ts +0 -8
  356. package/dist/artifacts/export.js +0 -204
  357. package/dist/artifacts/media-types.d.ts +0 -30
  358. package/dist/artifacts/media-types.js +0 -137
  359. package/dist/artifacts/workspace.d.ts +0 -60
  360. package/dist/artifacts/workspace.js +0 -45
  361. package/dist/media.d.ts +0 -10
  362. package/dist/media.js +0 -58
  363. package/dist/record/environment.d.ts +0 -25
  364. package/dist/record/environment.js +0 -44
  365. package/dist/sandbox/runtime-tools.d.ts +0 -9
  366. package/dist/sandbox/runtime-tools.js +0 -16
  367. package/dist/sandbox/session-sandbox.d.ts +0 -16
  368. package/dist/sandbox/session-sandbox.js +0 -77
  369. package/dist/tenant/artifact-tool.d.ts +0 -13
  370. package/dist/tenant/artifact-tool.js +0 -243
  371. package/dist/tenant/environment-manifests.d.ts +0 -57
  372. package/dist/tenant/environment-manifests.js +0 -200
  373. package/dist/tenant/environments.d.ts +0 -174
  374. package/dist/tenant/skill-tool.d.ts +0 -20
  375. package/dist/tenant/skill-tool.js +0 -67
  376. package/dist/tenant/tool-results.d.ts +0 -57
  377. package/dist/tenant/tool-results.js +0 -298
  378. package/dist/tenant/tool-search.d.ts +0 -39
  379. package/dist/tenant/tool-search.js +0 -103
@@ -0,0 +1,230 @@
1
+ import { type AgentAttention, type AgentMovePlan, type AgentState, type EnvironmentRecipe, type AgentView, type ForkAgentRequest, type ForkAgentResponse, type PutAgentRequest, type PutAgentSecretRequest } from "@nylorun/core/contracts";
2
+ import type { Environment, AgentEventsQuery, Tx } from "../store/types.js";
3
+ import type { SandboxRouteDeps } from "../core/sandbox-routes.js";
4
+ import { type AuthScope, type Session, type TenantContext } from "./context.js";
5
+ import type { SealedSecretCopies } from "../vault/service.js";
6
+ /** The Agent grants that limit `scope`, or undefined when it reaches every Agent. */
7
+ export declare function agentGrantsOf(scope: AuthScope): readonly string[] | undefined;
8
+ /** Who the vault's audit rows name for a request: the subject, else the application. */
9
+ export declare function actorOf(scope: AuthScope): string;
10
+ /** Refuses (the 404 of a missing one) Agent `id` when the caller's grants miss it. */
11
+ export declare function assertReaches(scope: AuthScope, id: string): void;
12
+ /** An Agent's row, unless it is gone or being deleted. */
13
+ export declare function liveEnvironment(t: Tx, id: string, options?: {
14
+ lock?: boolean;
15
+ }): Promise<Environment | undefined>;
16
+ /**
17
+ * An Agent's state (protocol 16), from its desired state, its compute and its sessions, and
18
+ * every state that holds with the session behind it (`attention`), highest first. A session waits
19
+ * on a person while it is paused (an approval or an interaction) or uncertain, and the Agent while
20
+ * a move waits for its required secrets (track T3); a session's last turn
21
+ * failed while it is `failed`; a turn runs while it is `running`, `runnable` or `waiting`.
22
+ */
23
+ export declare function stateOf(agent: Pick<Environment, "desiredState" | "pod"> & Partial<Pick<Environment, "targetVersion" | "appliedVersion" | "version" | "failedVersion">>, sessions: readonly Pick<Session, "id" | "status">[]): {
24
+ state: AgentState;
25
+ attention: AgentAttention[];
26
+ };
27
+ /** How an Agent names its manifest: `name` when it tracks it, `name@n` when pinned. */
28
+ export declare function manifestRefOf(agent: Pick<Environment, "manifestName" | "manifestVersion" | "manifestRef">): string;
29
+ /**
30
+ * Why input files cannot be used: each that is not a version of a Tenant-wide artifact (a
31
+ * session's artifacts go with the session). Pins nothing else: the version is the one named.
32
+ */
33
+ export declare function fileErrors(t: Tx, files: EnvironmentRecipe["files"]): Promise<string[]>;
34
+ /**
35
+ * `PUT /v1/agents/{id}`: creates the Agent and its vault (within the Tenant's limit on their
36
+ * number) from a saved agent manifest's version, or finds the one with this id, so "get or
37
+ * create" is one call. On an existing one, its labels and owner guard may change, and `manifest`
38
+ * moves it to the version it names (track T3, `moveAgent`): `name` tracks the latest (unless that
39
+ * failed to start), `name@n` pins `n`. Another manifest name is `409 agent_fixed_field`. Every
40
+ * `PUT` counts as the Agent's use.
41
+ */
42
+ export declare function putAgent(ctx: TenantContext, id: string, body: PutAgentRequest, scope: AuthScope, options?: {
43
+ fork?: Fork;
44
+ }): Promise<AgentView>;
45
+ /**
46
+ * `PUT /v1/agents/{id}?dryRun=true` (track T3): what moving existing Agent `id` to the version
47
+ * `body.manifest` names would do (`AgentMovePlan`), with nothing changed.
48
+ */
49
+ export declare function planAgentPut(ctx: TenantContext, id: string, body: PutAgentRequest, scope: AuthScope): Promise<{
50
+ dryRun: true;
51
+ plan: AgentMovePlan;
52
+ }>;
53
+ /**
54
+ * After a secret write on Agent `id`: a move that waited for its required secrets goes on once
55
+ * they are set (track T3). Best effort: the write stands either way.
56
+ */
57
+ export declare function secretWritten(ctx: TenantContext, id: string): Promise<void>;
58
+ /**
59
+ * The secret write `raw` asks of Environment `id` (D64). When what it runs declares secret
60
+ * slots, the name must be one (`409 secret_not_in_manifest`), and the body is `{ value }` (or
61
+ * `{ headers }` for a `headers` slot) with the binding from the slot; a full typed body is
62
+ * accepted only when its binding is the slot's. Without slots, today's typed body.
63
+ */
64
+ export declare function secretRequestFor(ctx: TenantContext, id: string, name: string, raw: unknown): Promise<PutAgentSecretRequest>;
65
+ /** What a create does for a fork (`POST .../fork`); `copied` is filled in by the create. */
66
+ interface Fork {
67
+ source: string;
68
+ /** The manifest version the plan resolved, which the create makes the fork from. */
69
+ version: number;
70
+ setup: boolean;
71
+ /**
72
+ * The source's secrets sealed by keys for the new vault `vaultId` (F4.2), before the create's
73
+ * transaction, which inserts them; absent with `secrets: none`.
74
+ */
75
+ sealed?: {
76
+ vaultId: string;
77
+ copies: SealedSecretCopies;
78
+ };
79
+ copied?: {
80
+ copied: string[];
81
+ dropped: string[];
82
+ };
83
+ }
84
+ /**
85
+ * `POST /v1/agents/{id}/fork` (Q15): copies an Agent into a new one, which is how an Agent changes
86
+ * what is fixed for its life (its manifest, kind, harness or storage). A new Agent `body.id` is made from the manifest
87
+ * (default the source's manifest name, tracking, at its latest version), its disk started from a
88
+ * version of the source's (`latest` takes a snapshot first, refused during a turn), and its
89
+ * secrets copied inside the Runtime. A fork onto other setup runs that setup on the copied disk
90
+ * before its first turn (Q17). The source keeps what it runs, its disk and its sessions. With
91
+ * `dryRun`, the plan only.
92
+ */
93
+ export declare function forkAgent(ctx: TenantContext, sourceId: string, body: ForkAgentRequest, scope: AuthScope): Promise<ForkAgentResponse>;
94
+ /** `GET /v1/agents/{id}`. */
95
+ export declare function getAgent(ctx: TenantContext, id: string, scope: AuthScope): Promise<AgentView>;
96
+ /**
97
+ * What `GET /v1/agents` filters on: labels (all of them), the derived state, the manifest's name
98
+ * and whether it is outdated.
99
+ */
100
+ export interface AgentFilters {
101
+ labels: Record<string, string>;
102
+ state?: string;
103
+ manifest?: string;
104
+ /** Only Agents moving to another version (track T3): waiting for their secrets or their pod's start. */
105
+ outdated?: boolean;
106
+ }
107
+ /**
108
+ * `GET /v1/agents?label=k=v&state=s&manifest=m`: every Agent with all the labels, in the state
109
+ * and made from the manifest, that the caller reaches, by id. With `page`, at most `limit` after
110
+ * the Agent id `after` (the cursor), and the id to continue from.
111
+ */
112
+ export declare function listAgents(ctx: TenantContext, filters: AgentFilters, scope: AuthScope, page?: {
113
+ limit: number;
114
+ after?: string;
115
+ }): Promise<{
116
+ agents: AgentView[];
117
+ next: string | null;
118
+ }>;
119
+ /**
120
+ * Asks pod Environment `id` to run when it is stopped or failed (a disk copy needs its engine),
121
+ * with its recipe applied, as a turn start would.
122
+ */
123
+ export declare function wakePod(ctx: TenantContext, id: string): Promise<void>;
124
+ /** Whether a disk lease (R2d step 3) holds `environment` now. */
125
+ export declare function diskHeld(environment: Environment, now?: number): boolean;
126
+ /** Refused while a snapshot or restore copies the disk (a pending seed does not count). */
127
+ export declare function refuseDiskCopy(environment: Environment): void;
128
+ /**
129
+ * `DELETE /v1/agents/{id}`: deletes the Environment, its vault and its workspace. Refused
130
+ * while a session that names it has an active turn. Sessions keep its id: their next turn is
131
+ * refused (`agent_unavailable`) unless an Environment with this id exists again.
132
+ */
133
+ export declare function deleteAgent(ctx: TenantContext, id: string, scope: AuthScope): Promise<{
134
+ id: string;
135
+ deleted: boolean;
136
+ }>;
137
+ /**
138
+ * Deletes every Environment unused for its `lifecycle.deleteAfter` (Q13): no turn, recipe
139
+ * change, secret write, stop or reset since. One with a turn running waits for the next sweep.
140
+ * Run by the Tenant sweep.
141
+ */
142
+ export declare function sweepUnusedAgents(ctx: TenantContext, now?: number): Promise<void>;
143
+ /**
144
+ * `POST /v1/agents/{id}/stop`: suspends a pod Environment. Its volume is kept, and the next
145
+ * turn of a session that names it starts it again. Refused during a turn.
146
+ */
147
+ export declare function stopAgent(ctx: TenantContext, id: string, scope: AuthScope): Promise<AgentView>;
148
+ /**
149
+ * `POST /v1/agents/{id}/restart` (track T3): applies a pending version now, refused during a
150
+ * turn. With `retry`, it first moves the Agent to the version that failed to start again. A
151
+ * running pod stops, so the next turn starts it on the version; a stopped or failed one is asked
152
+ * to run at once. Kinds `virtual` and `none` apply a version at once anyway.
153
+ */
154
+ export declare function restartAgent(ctx: TenantContext, id: string, options: {
155
+ retry?: boolean;
156
+ }, scope: AuthScope): Promise<AgentView>;
157
+ /**
158
+ * `POST /v1/agents/{id}/reset`: a new pod on a new, empty volume (the next volume
159
+ * generation), with a new join token and the recipe applied; the old Sandbox and volume are
160
+ * deleted. Leaves `lost` and `failed`. Refused during a turn, and while an earlier reset's
161
+ * Sandbox is still being deleted.
162
+ */
163
+ export declare function resetAgent(ctx: TenantContext, id: string, scope: AuthScope): Promise<AgentView>;
164
+ /**
165
+ * Gives pod Environment `environment` (locked) a new pod on a new, empty volume, the next volume
166
+ * generation, with its recipe applied: the old Sandbox and volume are retired. With `seed`, the
167
+ * new volume starts from that disk version before any turn (R2d step 3): a restore, or the
168
+ * recovery of a lost volume.
169
+ */
170
+ export declare function newVolume(ctx: TenantContext, t: Tx, environment: Environment, options?: {
171
+ seed?: {
172
+ artifactId: string;
173
+ version: number;
174
+ };
175
+ reason?: "restore" | "lost";
176
+ }): Promise<number>;
177
+ /** `GET /v1/agents/{id}/events`: the Environment's lifecycle stream. */
178
+ export declare function agentEventsOf(ctx: TenantContext, id: string, scope: AuthScope, query?: AgentEventsQuery): Promise<{
179
+ events: {
180
+ schema: "nylorun.agent-event/1";
181
+ eventId: string;
182
+ tenantId: string;
183
+ agentId: string;
184
+ seq: number;
185
+ time: string;
186
+ type: "agent.attached" | "agent.created" | "agent.deleted" | "agent.detached" | "agent.egress" | "agent.failed" | "agent.forked" | "agent.lost" | "agent.memory_updated" | "agent.outdated" | "agent.relaunched" | "agent.reset" | "agent.run" | "agent.running" | "agent.start_failed" | "agent.suspended" | "agent.trigger_paused" | "agent.trigger_resumed" | "agent.trigger_secret_rotated" | "agent.version_changed";
187
+ payload: Record<string, unknown>;
188
+ }[];
189
+ }>;
190
+ /**
191
+ * Opens a new session on Environment `id` (`PutSessionRequest.environment`): it must exist, be
192
+ * reachable with `grants` and pass its owner guard. Runs in the session's transaction, after
193
+ * its session row lock; holds the Environment's row lock.
194
+ */
195
+ export declare function openAgent(t: Tx, id: string, options: {
196
+ grants?: readonly string[];
197
+ ownerUserId: string;
198
+ opaque: boolean;
199
+ }): Promise<Environment>;
200
+ /** Records the attachment on the session's log and on the Environment's stream. */
201
+ export declare function recordAttachment(t: Tx, sessionId: string, agentId: string): Promise<void>;
202
+ /**
203
+ * Checks a turn start on a session that names an Environment, in the command's transaction
204
+ * after the session row lock: the Environment still exists, a token caller's grants reach it,
205
+ * its owner guard admits the session's owner, and no disk copy holds it. Other sessions' turns
206
+ * do not stop it (D66). Holds the Environment row's lock until the transaction ends, so a turn
207
+ * start and disk work on one Environment are decided one after the other.
208
+ *
209
+ * A pod Environment must also be usable: not lost (`agent_lost`), on a Runtime with
210
+ * sandbox pods (`agent_unavailable`). A stopped or failed pod is asked to run again, with
211
+ * its recipe applied, after the commit.
212
+ */
213
+ export declare function checkAgentTurn(t: Tx, session: Session, scope: AuthScope, ctx?: TenantContext): Promise<void>;
214
+ /** A sessions reset detaches every session from its Environment: each one's stream says so. */
215
+ export declare function detachAllSessions(t: Tx): Promise<void>;
216
+ /**
217
+ * Marks the end of a turn's segment on Environment `id`: it was used now (`deleteAfter` counts
218
+ * from here), and for a running pod idle counts from now and the idle timer is armed (D34).
219
+ * Best effort.
220
+ */
221
+ export declare function touchAgent(ctx: TenantContext, id: string): Promise<void>;
222
+ /**
223
+ * Re-arms the idle timer of every running pod after the Tenant's settings change, so a shorter
224
+ * `limits.idle` applies to pods already idle (D36: the settings are read whenever a timer is
225
+ * set). Best effort.
226
+ */
227
+ export declare function rearmPodTimers(ctx: TenantContext): Promise<void>;
228
+ /** Session lookups for the sandbox route handlers (`core/sandbox-routes.ts`). */
229
+ export declare function sandboxRouteDeps(ctx: TenantContext): SandboxRouteDeps;
230
+ export {};