@relkit/runtime-hono 0.4.0 → 0.5.0

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 (250) hide show
  1. package/dist/agent-active-execution.d.ts +13 -0
  2. package/dist/agent-active-execution.d.ts.map +1 -0
  3. package/dist/agent-active-execution.js +8 -0
  4. package/dist/agent-active-execution.js.map +1 -0
  5. package/dist/agent-approval-coordinator.d.ts +20 -0
  6. package/dist/agent-approval-coordinator.d.ts.map +1 -0
  7. package/dist/agent-approval-coordinator.js +148 -0
  8. package/dist/agent-approval-coordinator.js.map +1 -0
  9. package/dist/agent-capability-negotiation.d.ts +2 -0
  10. package/dist/agent-capability-negotiation.d.ts.map +1 -0
  11. package/dist/agent-capability-negotiation.js +16 -0
  12. package/dist/agent-capability-negotiation.js.map +1 -0
  13. package/dist/agent-compatibility.d.ts +5 -0
  14. package/dist/agent-compatibility.d.ts.map +1 -0
  15. package/dist/agent-compatibility.js +47 -0
  16. package/dist/agent-compatibility.js.map +1 -0
  17. package/dist/agent-content-sink.d.ts +11 -0
  18. package/dist/agent-content-sink.d.ts.map +1 -0
  19. package/dist/agent-content-sink.js +132 -0
  20. package/dist/agent-content-sink.js.map +1 -0
  21. package/dist/agent-control-worker.d.ts +8 -0
  22. package/dist/agent-control-worker.d.ts.map +1 -0
  23. package/dist/agent-control-worker.js +131 -0
  24. package/dist/agent-control-worker.js.map +1 -0
  25. package/dist/agent-follow-up.d.ts +12 -0
  26. package/dist/agent-follow-up.d.ts.map +1 -0
  27. package/dist/agent-follow-up.js +106 -0
  28. package/dist/agent-follow-up.js.map +1 -0
  29. package/dist/agent-inspector-projection.d.ts +7 -0
  30. package/dist/agent-inspector-projection.d.ts.map +1 -0
  31. package/dist/agent-inspector-projection.js +121 -0
  32. package/dist/agent-inspector-projection.js.map +1 -0
  33. package/dist/agent-inspector.d.ts +5 -0
  34. package/dist/agent-inspector.d.ts.map +1 -0
  35. package/dist/agent-inspector.js +107 -0
  36. package/dist/agent-inspector.js.map +1 -0
  37. package/dist/agent-progress-sink.d.ts +10 -0
  38. package/dist/agent-progress-sink.d.ts.map +1 -0
  39. package/dist/agent-progress-sink.js +52 -0
  40. package/dist/agent-progress-sink.js.map +1 -0
  41. package/dist/agent-protocol-encoding.d.ts +3 -0
  42. package/dist/agent-protocol-encoding.d.ts.map +1 -0
  43. package/dist/agent-protocol-encoding.js +123 -0
  44. package/dist/agent-protocol-encoding.js.map +1 -0
  45. package/dist/agent-protocol-frame-state.d.ts +8 -0
  46. package/dist/agent-protocol-frame-state.d.ts.map +1 -0
  47. package/dist/agent-protocol-frame-state.js +124 -0
  48. package/dist/agent-protocol-frame-state.js.map +1 -0
  49. package/dist/agent-protocol-progress.d.ts +8 -0
  50. package/dist/agent-protocol-progress.d.ts.map +1 -0
  51. package/dist/agent-protocol-progress.js +5 -0
  52. package/dist/agent-protocol-progress.js.map +1 -0
  53. package/dist/agent-protocol-stream.d.ts +57 -0
  54. package/dist/agent-protocol-stream.d.ts.map +1 -0
  55. package/dist/agent-protocol-stream.js +77 -0
  56. package/dist/agent-protocol-stream.js.map +1 -0
  57. package/dist/agent-protocol-support.d.ts +19 -0
  58. package/dist/agent-protocol-support.d.ts.map +1 -0
  59. package/dist/agent-protocol-support.js +108 -0
  60. package/dist/agent-protocol-support.js.map +1 -0
  61. package/dist/agent-protocol-tool.d.ts +12 -0
  62. package/dist/agent-protocol-tool.d.ts.map +1 -0
  63. package/dist/agent-protocol-tool.js +65 -0
  64. package/dist/agent-protocol-tool.js.map +1 -0
  65. package/dist/agent-protocol.d.ts +4 -0
  66. package/dist/agent-protocol.d.ts.map +1 -0
  67. package/dist/agent-protocol.js +101 -0
  68. package/dist/agent-protocol.js.map +1 -0
  69. package/dist/agent-rpc-errors.d.ts +5 -0
  70. package/dist/agent-rpc-errors.d.ts.map +1 -0
  71. package/dist/agent-rpc-errors.js +65 -0
  72. package/dist/agent-rpc-errors.js.map +1 -0
  73. package/dist/agent-rpc-read.d.ts +42 -0
  74. package/dist/agent-rpc-read.d.ts.map +1 -0
  75. package/dist/agent-rpc-read.js +127 -0
  76. package/dist/agent-rpc-read.js.map +1 -0
  77. package/dist/agent-rpc-resume.d.ts +13 -0
  78. package/dist/agent-rpc-resume.d.ts.map +1 -0
  79. package/dist/agent-rpc-resume.js +72 -0
  80. package/dist/agent-rpc-resume.js.map +1 -0
  81. package/dist/agent-rpc-support.d.ts +44 -0
  82. package/dist/agent-rpc-support.d.ts.map +1 -0
  83. package/dist/agent-rpc-support.js +111 -0
  84. package/dist/agent-rpc-support.js.map +1 -0
  85. package/dist/agent-rpc-worker.d.ts +7 -0
  86. package/dist/agent-rpc-worker.d.ts.map +1 -0
  87. package/dist/agent-rpc-worker.js +135 -0
  88. package/dist/agent-rpc-worker.js.map +1 -0
  89. package/dist/agent-rpc-write.d.ts +6 -0
  90. package/dist/agent-rpc-write.d.ts.map +1 -0
  91. package/dist/agent-rpc-write.js +109 -0
  92. package/dist/agent-rpc-write.js.map +1 -0
  93. package/dist/agent-rpc.d.ts +21 -0
  94. package/dist/agent-rpc.d.ts.map +1 -0
  95. package/dist/agent-rpc.js +42 -0
  96. package/dist/agent-rpc.js.map +1 -0
  97. package/dist/agent-run-journal.d.ts +12 -0
  98. package/dist/agent-run-journal.d.ts.map +1 -0
  99. package/dist/agent-run-journal.js +96 -0
  100. package/dist/agent-run-journal.js.map +1 -0
  101. package/dist/agent-run-tasks.d.ts +3 -0
  102. package/dist/agent-run-tasks.d.ts.map +1 -0
  103. package/dist/agent-run-tasks.js +16 -0
  104. package/dist/agent-run-tasks.js.map +1 -0
  105. package/dist/agent-runtime.d.ts +17 -0
  106. package/dist/agent-runtime.d.ts.map +1 -0
  107. package/dist/agent-runtime.js +2 -0
  108. package/dist/agent-runtime.js.map +1 -0
  109. package/dist/api-docs.js +1 -1
  110. package/dist/api-docs.js.map +1 -1
  111. package/dist/auth.d.ts +3 -1
  112. package/dist/auth.d.ts.map +1 -1
  113. package/dist/auth.js +5 -1
  114. package/dist/auth.js.map +1 -1
  115. package/dist/bun.d.ts +2 -0
  116. package/dist/bun.d.ts.map +1 -0
  117. package/dist/bun.js +2 -0
  118. package/dist/bun.js.map +1 -0
  119. package/dist/client-authorization.d.ts +2 -0
  120. package/dist/client-authorization.d.ts.map +1 -0
  121. package/dist/client-authorization.js +21 -0
  122. package/dist/client-authorization.js.map +1 -0
  123. package/dist/client-identity.d.ts +24 -0
  124. package/dist/client-identity.d.ts.map +1 -0
  125. package/dist/client-identity.js +46 -0
  126. package/dist/client-identity.js.map +1 -0
  127. package/dist/create-app.d.ts +2 -0
  128. package/dist/create-app.d.ts.map +1 -1
  129. package/dist/create-app.js +10 -0
  130. package/dist/create-app.js.map +1 -1
  131. package/dist/index.d.ts +11 -0
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +11 -0
  134. package/dist/index.js.map +1 -1
  135. package/dist/internal-endpoint-paths.d.ts +4 -0
  136. package/dist/internal-endpoint-paths.d.ts.map +1 -0
  137. package/dist/internal-endpoint-paths.js +16 -0
  138. package/dist/internal-endpoint-paths.js.map +1 -0
  139. package/dist/internal-endpoints.d.ts +1 -3
  140. package/dist/internal-endpoints.d.ts.map +1 -1
  141. package/dist/internal-endpoints.js +4 -12
  142. package/dist/internal-endpoints.js.map +1 -1
  143. package/dist/jobs/authorization.d.ts +14 -0
  144. package/dist/jobs/authorization.d.ts.map +1 -0
  145. package/dist/jobs/authorization.js +60 -0
  146. package/dist/jobs/authorization.js.map +1 -0
  147. package/dist/jobs/common.d.ts +22 -0
  148. package/dist/jobs/common.d.ts.map +1 -0
  149. package/dist/jobs/common.js +127 -0
  150. package/dist/jobs/common.js.map +1 -0
  151. package/dist/jobs/cursors.d.ts +10 -0
  152. package/dist/jobs/cursors.d.ts.map +1 -0
  153. package/dist/jobs/cursors.js +64 -0
  154. package/dist/jobs/cursors.js.map +1 -0
  155. package/dist/jobs/handlers-mutations.d.ts +8 -0
  156. package/dist/jobs/handlers-mutations.d.ts.map +1 -0
  157. package/dist/jobs/handlers-mutations.js +73 -0
  158. package/dist/jobs/handlers-mutations.js.map +1 -0
  159. package/dist/jobs/handlers-read.d.ts +8 -0
  160. package/dist/jobs/handlers-read.d.ts.map +1 -0
  161. package/dist/jobs/handlers-read.js +70 -0
  162. package/dist/jobs/handlers-read.js.map +1 -0
  163. package/dist/jobs/handlers-stream.d.ts +7 -0
  164. package/dist/jobs/handlers-stream.d.ts.map +1 -0
  165. package/dist/jobs/handlers-stream.js +72 -0
  166. package/dist/jobs/handlers-stream.js.map +1 -0
  167. package/dist/jobs/handlers-validation.d.ts +6 -0
  168. package/dist/jobs/handlers-validation.d.ts.map +1 -0
  169. package/dist/jobs/handlers-validation.js +119 -0
  170. package/dist/jobs/handlers-validation.js.map +1 -0
  171. package/dist/jobs/handlers.d.ts +4 -0
  172. package/dist/jobs/handlers.d.ts.map +1 -0
  173. package/dist/jobs/handlers.js +4 -0
  174. package/dist/jobs/handlers.js.map +1 -0
  175. package/dist/jobs/projection-stream.d.ts +4 -0
  176. package/dist/jobs/projection-stream.d.ts.map +1 -0
  177. package/dist/jobs/projection-stream.js +82 -0
  178. package/dist/jobs/projection-stream.js.map +1 -0
  179. package/dist/jobs/projection-validation.d.ts +5 -0
  180. package/dist/jobs/projection-validation.d.ts.map +1 -0
  181. package/dist/jobs/projection-validation.js +143 -0
  182. package/dist/jobs/projection-validation.js.map +1 -0
  183. package/dist/jobs/projection.d.ts +11 -0
  184. package/dist/jobs/projection.d.ts.map +1 -0
  185. package/dist/jobs/projection.js +89 -0
  186. package/dist/jobs/projection.js.map +1 -0
  187. package/dist/jobs/rpc.d.ts +5 -0
  188. package/dist/jobs/rpc.d.ts.map +1 -0
  189. package/dist/jobs/rpc.js +115 -0
  190. package/dist/jobs/rpc.js.map +1 -0
  191. package/dist/jobs/support.d.ts +31 -0
  192. package/dist/jobs/support.d.ts.map +1 -0
  193. package/dist/jobs/support.js +144 -0
  194. package/dist/jobs/support.js.map +1 -0
  195. package/dist/jobs/types.d.ts +48 -0
  196. package/dist/jobs/types.d.ts.map +1 -0
  197. package/dist/jobs/types.js +22 -0
  198. package/dist/jobs/types.js.map +1 -0
  199. package/dist/materialize-routes-utils.d.ts.map +1 -1
  200. package/dist/materialize-routes-utils.js +12 -0
  201. package/dist/materialize-routes-utils.js.map +1 -1
  202. package/dist/materialize-routes-validation.d.ts +3 -0
  203. package/dist/materialize-routes-validation.d.ts.map +1 -0
  204. package/dist/materialize-routes-validation.js +28 -0
  205. package/dist/materialize-routes-validation.js.map +1 -0
  206. package/dist/materialize-routes.d.ts +21 -1
  207. package/dist/materialize-routes.d.ts.map +1 -1
  208. package/dist/materialize-routes.js +12 -28
  209. package/dist/materialize-routes.js.map +1 -1
  210. package/dist/native-stream.d.ts +3 -0
  211. package/dist/native-stream.d.ts.map +1 -0
  212. package/dist/native-stream.js +72 -0
  213. package/dist/native-stream.js.map +1 -0
  214. package/dist/realtime-rpc-support.d.ts +19 -0
  215. package/dist/realtime-rpc-support.d.ts.map +1 -0
  216. package/dist/realtime-rpc-support.js +63 -0
  217. package/dist/realtime-rpc-support.js.map +1 -0
  218. package/dist/realtime-rpc.d.ts +4 -0
  219. package/dist/realtime-rpc.d.ts.map +1 -0
  220. package/dist/realtime-rpc.js +134 -0
  221. package/dist/realtime-rpc.js.map +1 -0
  222. package/dist/realtime-runtime.d.ts +13 -0
  223. package/dist/realtime-runtime.d.ts.map +1 -0
  224. package/dist/realtime-runtime.js +2 -0
  225. package/dist/realtime-runtime.js.map +1 -0
  226. package/dist/rpc-identity.d.ts +10 -0
  227. package/dist/rpc-identity.d.ts.map +1 -0
  228. package/dist/rpc-identity.js +26 -0
  229. package/dist/rpc-identity.js.map +1 -0
  230. package/dist/rpc-response.d.ts +5 -0
  231. package/dist/rpc-response.d.ts.map +1 -0
  232. package/dist/rpc-response.js +45 -0
  233. package/dist/rpc-response.js.map +1 -0
  234. package/dist/rpc-route-types.d.ts +10 -0
  235. package/dist/rpc-route-types.d.ts.map +1 -0
  236. package/dist/rpc-route-types.js +50 -0
  237. package/dist/rpc-route-types.js.map +1 -0
  238. package/dist/rpc-websocket.d.ts +6 -0
  239. package/dist/rpc-websocket.d.ts.map +1 -0
  240. package/dist/rpc-websocket.js +48 -0
  241. package/dist/rpc-websocket.js.map +1 -0
  242. package/dist/rpc.d.ts +8 -0
  243. package/dist/rpc.d.ts.map +1 -1
  244. package/dist/rpc.js +46 -59
  245. package/dist/rpc.js.map +1 -1
  246. package/dist/transport-security.d.ts +19 -0
  247. package/dist/transport-security.d.ts.map +1 -0
  248. package/dist/transport-security.js +124 -0
  249. package/dist/transport-security.js.map +1 -0
  250. package/package.json +25 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-follow-up.d.ts","sourceRoot":"","sources":["../src/agent-follow-up.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E,KAAK,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,2BAA2B,EACpC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAuFnC"}
@@ -0,0 +1,106 @@
1
+ import { REALTIME_RUNTIME_LIMITS } from "@relkit/contracts";
2
+ import { agentLimits, agentOwner, digest, validateAgentInput } from "./agent-rpc-support.js";
3
+ export async function processAgentFollowUps(resolved, active, options, startNext) {
4
+ const snapshot = await resolved.provider.loadThread({
5
+ ...resolved.scope,
6
+ threadId: active.receipt.threadId,
7
+ maxEncodedBytes: REALTIME_RUNTIME_LIMITS.initialSnapshotBytes,
8
+ });
9
+ const queued = snapshot.controls
10
+ .filter((record) => record.kind === "follow-up" &&
11
+ record.status === "accepted" &&
12
+ active.controlRunIds.includes(record.runId))
13
+ .sort((left, right) => left.acceptedAt.localeCompare(right.acceptedAt));
14
+ if (!startNext) {
15
+ await Promise.all(queued.map((record) => cancel(resolved, active.receipt.threadId, options.agentRuntime.generationId, record)));
16
+ return undefined;
17
+ }
18
+ for (const record of queued) {
19
+ const claim = await resolved.provider.claimControl({
20
+ ...resolved.scope,
21
+ threadId: active.receipt.threadId,
22
+ runId: record.runId,
23
+ operationId: record.controlId,
24
+ workerId: crypto.randomUUID(),
25
+ generationId: options.agentRuntime.generationId,
26
+ expiresAt: new Date(Date.now() + REALTIME_RUNTIME_LIMITS.leaseExpiryMs).toISOString(),
27
+ });
28
+ let input;
29
+ try {
30
+ input = await validateAgentInput(resolved, record.publicPayload);
31
+ }
32
+ catch {
33
+ await resolved.provider.settleControl({
34
+ ...resolved.scope,
35
+ threadId: active.receipt.threadId,
36
+ runId: record.runId,
37
+ operationId: record.controlId,
38
+ claim,
39
+ status: "rejected",
40
+ effect: "not-started",
41
+ settledAt: new Date().toISOString(),
42
+ });
43
+ continue;
44
+ }
45
+ await resolved.provider.markControlEffectStarted({
46
+ ...resolved.scope,
47
+ threadId: active.receipt.threadId,
48
+ runId: record.runId,
49
+ operationId: record.controlId,
50
+ claim,
51
+ downstreamOperationId: record.controlId,
52
+ });
53
+ const now = new Date().toISOString();
54
+ const receipt = await resolved.provider.acceptRun({
55
+ ...resolved.scope,
56
+ operationId: record.controlId,
57
+ semanticDigest: digest(record.publicPayload),
58
+ threadId: active.receipt.threadId,
59
+ owner: agentOwner(options, resolved.scope.profile),
60
+ input,
61
+ inputDigest: digest(input),
62
+ acceptedAt: now,
63
+ receiptExpiresAt: new Date(Date.now() + REALTIME_RUNTIME_LIMITS.agentReceiptMs).toISOString(),
64
+ limits: agentLimits,
65
+ });
66
+ await resolved.provider.settleControl({
67
+ ...resolved.scope,
68
+ threadId: active.receipt.threadId,
69
+ runId: record.runId,
70
+ operationId: record.controlId,
71
+ claim,
72
+ status: "applied",
73
+ effect: "confirmed",
74
+ downstreamOperationId: record.controlId,
75
+ settledAt: now,
76
+ });
77
+ return {
78
+ receipt,
79
+ input,
80
+ controlRunIds: [...active.controlRunIds, receipt.runId],
81
+ };
82
+ }
83
+ return undefined;
84
+ }
85
+ async function cancel(resolved, threadId, generationId, record) {
86
+ const claim = await resolved.provider.claimControl({
87
+ ...resolved.scope,
88
+ threadId,
89
+ runId: record.runId,
90
+ operationId: record.controlId,
91
+ workerId: crypto.randomUUID(),
92
+ generationId,
93
+ expiresAt: new Date(Date.now() + REALTIME_RUNTIME_LIMITS.leaseExpiryMs).toISOString(),
94
+ });
95
+ await resolved.provider.settleControl({
96
+ ...resolved.scope,
97
+ threadId,
98
+ runId: record.runId,
99
+ operationId: record.controlId,
100
+ claim,
101
+ status: "cancelled",
102
+ effect: "not-started",
103
+ settledAt: new Date().toISOString(),
104
+ });
105
+ }
106
+ //# sourceMappingURL=agent-follow-up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-follow-up.js","sourceRoot":"","sources":["../src/agent-follow-up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAW7F,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAuB,EACvB,MAA4B,EAC5B,OAAoC,EACpC,SAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClD,GAAG,QAAQ,CAAC,KAAK;QACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;QACjC,eAAe,EAAE,uBAAuB,CAAC,oBAAoB;KAC9D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ;SAC7B,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,KAAK,WAAW;QAC3B,MAAM,CAAC,MAAM,KAAK,UAAU;QAC5B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAC9C;SACA,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CACtF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;YACjD,GAAG,QAAQ,CAAC,KAAK;YACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,YAAa,CAAC,YAAY;YAChD,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;SACtF,CAAC,CAAC;QACH,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACpC,GAAG,QAAQ,CAAC,KAAK;gBACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;gBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,SAAS;gBAC7B,KAAK;gBACL,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC/C,GAAG,QAAQ,CAAC,KAAK;YACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,KAAK;YACL,qBAAqB,EAAE,MAAM,CAAC,SAAS;SACxC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChD,GAAG,QAAQ,CAAC,KAAK;YACjB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YAClD,KAAK;YACL,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;YAC7F,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpC,GAAG,QAAQ,CAAC,KAAK;YACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,WAAW;YACnB,qBAAqB,EAAE,MAAM,CAAC,SAAS;YACvC,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QACH,OAAO;YACL,OAAO;YACP,KAAK;YACL,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC;SACxD,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,QAAuB,EACvB,QAAgB,EAChB,YAAoB,EACpB,MAAwF;IAExF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjD,GAAG,QAAQ,CAAC,KAAK;QACjB,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,SAAS;QAC7B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;QAC7B,YAAY;QACZ,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;KACtF,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpC,GAAG,QAAQ,CAAC,KAAK;QACjB,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,SAAS;QAC7B,KAAK;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { JournalRecord, ThreadSnapshot } from "@relkit/agents";
2
+ export declare function inspectorRuns(snapshot: ThreadSnapshot): readonly Record<string, unknown>[];
3
+ export declare function inspectorExecutions(snapshot: ThreadSnapshot): readonly Record<string, unknown>[];
4
+ export declare function inspectorAttempts(records: readonly JournalRecord[], runs: ReadonlySet<string>): readonly Record<string, unknown>[];
5
+ export declare function inspectorTransitions(records: readonly JournalRecord[], runs: ReadonlySet<string>): readonly Record<string, unknown>[];
6
+ export declare function inspectedRunIds(snapshot: ThreadSnapshot, mode: "live" | "history"): Set<string>;
7
+ //# sourceMappingURL=agent-inspector-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inspector-projection.d.ts","sourceRoot":"","sources":["../src/agent-inspector-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,aAAa,EAAa,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGpG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAQ1F;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAShG;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GACxB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAgDpC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GACxB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkBpC;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAI/F"}
@@ -0,0 +1,121 @@
1
+ import { agentRunCompatibility } from "./agent-compatibility.js";
2
+ export function inspectorRuns(snapshot) {
3
+ return snapshot.currentRuns.map((run) => ({
4
+ runId: run.runId,
5
+ status: run.status,
6
+ acceptedAt: run.acceptedAt,
7
+ ...(run.settledAt === undefined ? {} : { completedAt: run.settledAt }),
8
+ compatibility: agentRunCompatibility(run, snapshot.waiting?.runId),
9
+ }));
10
+ }
11
+ export function inspectorExecutions(snapshot) {
12
+ return snapshot.executions.map((execution) => ({
13
+ scope: execution.scope,
14
+ ...(execution.agent === undefined ? {} : { agent: execution.agent }),
15
+ ...(execution.parent === undefined ? {} : { parent: execution.parent }),
16
+ ...(execution.node === undefined ? {} : { node: execution.node }),
17
+ status: execution.status,
18
+ lastEventSequence: execution.lastEventSequence,
19
+ }));
20
+ }
21
+ export function inspectorAttempts(records, runs) {
22
+ const counters = new Map();
23
+ const attempts = new Map();
24
+ for (const record of records) {
25
+ if (record.kind !== "event" || !runs.has(record.runId))
26
+ continue;
27
+ const event = executionEvent(record.publicValue);
28
+ const task = event === undefined ? undefined : taskValue(event.value);
29
+ if (event?.kind !== "tasks" || task === undefined)
30
+ continue;
31
+ const baseKey = [
32
+ record.runId,
33
+ ...event.scope,
34
+ event.node ?? "",
35
+ task.id ?? task.name ?? "task",
36
+ ].join("\0");
37
+ let attempt = counters.get(baseKey) ?? 0;
38
+ if (task.status === "started" || attempt === 0) {
39
+ attempt += 1;
40
+ counters.set(baseKey, attempt);
41
+ }
42
+ const id = [
43
+ "attempt",
44
+ record.runId,
45
+ ...event.scope,
46
+ event.node ?? "root",
47
+ task.id ?? task.name ?? "task",
48
+ String(attempt),
49
+ ]
50
+ .map(encodeURIComponent)
51
+ .join(":");
52
+ const prior = attempts.get(id) ?? {};
53
+ attempts.set(id, {
54
+ ...prior,
55
+ id,
56
+ runId: record.runId,
57
+ scope: event.scope,
58
+ ...(event.agent === undefined ? {} : { agent: event.agent }),
59
+ ...(event.parent === undefined ? {} : { parent: event.parent }),
60
+ ...(event.node === undefined ? {} : { node: event.node }),
61
+ ...(task.id === undefined ? {} : { taskId: task.id }),
62
+ ...(task.name === undefined ? {} : { name: task.name }),
63
+ attempt,
64
+ status: task.status,
65
+ ...(task.status === "started" ? { startedAt: event.occurredAt } : {}),
66
+ ...(task.status === "started" ? {} : { completedAt: event.occurredAt }),
67
+ occurredAt: event.occurredAt,
68
+ });
69
+ }
70
+ return [...attempts.values()];
71
+ }
72
+ export function inspectorTransitions(records, runs) {
73
+ return records.flatMap((record) => {
74
+ if (record.kind !== "event" || !runs.has(record.runId))
75
+ return [];
76
+ const event = executionEvent(record.publicValue);
77
+ if (event?.kind !== "lifecycle")
78
+ return [];
79
+ const value = isRecord(event.value) ? event.value : {};
80
+ const cause = isRecord(value.cause) ? value.cause : {};
81
+ return [
82
+ {
83
+ runId: record.runId,
84
+ scope: event.scope,
85
+ kind: typeof value.event === "string" ? value.event : "lifecycle",
86
+ ...(typeof cause.from_node === "string" ? { from: cause.from_node } : {}),
87
+ ...(event.node === undefined ? {} : { to: event.node }),
88
+ occurredAt: event.occurredAt,
89
+ },
90
+ ];
91
+ });
92
+ }
93
+ export function inspectedRunIds(snapshot, mode) {
94
+ if (mode === "history")
95
+ return new Set(snapshot.currentRuns.map((run) => run.runId));
96
+ const live = snapshot.currentRuns.filter((run) => !terminal(run)).map((run) => run.runId);
97
+ return new Set(live.length > 0 ? live : snapshot.currentRuns.slice(-1).map((run) => run.runId));
98
+ }
99
+ function executionEvent(value) {
100
+ if (!isRecord(value) || !Array.isArray(value.scope) || typeof value.kind !== "string")
101
+ return;
102
+ if (typeof value.nativeSequence !== "number" || typeof value.occurredAt !== "string")
103
+ return;
104
+ return value;
105
+ }
106
+ function taskValue(value) {
107
+ if (!isRecord(value) || typeof value.status !== "string")
108
+ return;
109
+ return {
110
+ ...(typeof value.id === "string" ? { id: value.id } : {}),
111
+ ...(typeof value.name === "string" ? { name: value.name } : {}),
112
+ status: value.status,
113
+ };
114
+ }
115
+ function terminal(run) {
116
+ return ["succeeded", "failed", "cancelled", "worker-interrupted"].includes(run.status);
117
+ }
118
+ function isRecord(value) {
119
+ return value !== null && typeof value === "object" && !Array.isArray(value);
120
+ }
121
+ //# sourceMappingURL=agent-inspector-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inspector-projection.js","sourceRoot":"","sources":["../src/agent-inspector-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Hono } from "hono";
2
+ import type { InternalEndpointOptions } from "./internal-endpoints.js";
3
+ import type { RouteMaterializationOptions } from "./materialize-routes.js";
4
+ export declare function installAgentInspectorEndpoints(app: Hono, options: RouteMaterializationOptions, internal: InternalEndpointOptions): void;
5
+ //# sourceMappingURL=agent-inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inspector.d.ts","sourceRoot":"","sources":["../src/agent-inspector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAS3E,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,2BAA2B,EACpC,QAAQ,EAAE,uBAAuB,GAChC,IAAI,CA0BN"}
@@ -0,0 +1,107 @@
1
+ import { ORPCError } from "@orpc/server";
2
+ import { API_BASE_PATH, REALTIME_RUNTIME_LIMITS } from "@relkit/contracts";
3
+ import { agentContext, requireAgentThreadId } from "./agent-rpc-support.js";
4
+ import { isAuthorized, jsonResponse } from "./internal-endpoints-utils.js";
5
+ import { inspectedRunIds, inspectorAttempts, inspectorExecutions, inspectorRuns, inspectorTransitions, } from "./agent-inspector-projection.js";
6
+ export function installAgentInspectorEndpoints(app, options, internal) {
7
+ const mode = internal.environment ?? internal.mode ?? "development";
8
+ if (!(internal.enabled ?? mode !== "production"))
9
+ return;
10
+ app.get(`${API_BASE_PATH}/agents/:agentId/workflow`, async (context) => {
11
+ if (!(await isAuthorized(context.req.raw, internal)))
12
+ return unauthorized();
13
+ const node = options.plan.agents.find((agent) => agent.id === context.req.param("agentId"));
14
+ if (node === undefined)
15
+ return jsonResponse({ error: "RELKIT_INSPECTOR_NOT_FOUND" }, 404);
16
+ return jsonResponse({
17
+ agentId: node.id,
18
+ execution: node.execution ?? "agent",
19
+ ...(node.workflow === undefined ? {} : { workflow: node.workflow }),
20
+ ...(node.workflowTopology === undefined ? {} : { workflowTopology: node.workflowTopology }),
21
+ subagents: node.subagents ?? [],
22
+ resourceDependencies: node.resourceDependencies ?? [],
23
+ });
24
+ });
25
+ app.get(`${API_BASE_PATH}/runtime/agents/:agentId/executions`, async (context) => {
26
+ if (!(await isAuthorized(context.req.raw, internal)))
27
+ return unauthorized();
28
+ try {
29
+ return await executionResponse(context, options);
30
+ }
31
+ catch (error) {
32
+ if (error instanceof ORPCError)
33
+ return jsonResponse({ error: error.code }, rpcStatus(error));
34
+ if (error instanceof TypeError)
35
+ return jsonResponse({ error: "INVALID_REQUEST" }, 400);
36
+ return jsonResponse({ error: "RELKIT_INSPECTOR_RUNTIME_UNAVAILABLE" }, 503);
37
+ }
38
+ });
39
+ }
40
+ async function executionResponse(context, options) {
41
+ const threadId = requireAgentThreadId(context.req.query("threadId"));
42
+ const mode = executionMode(context.req.query("mode"));
43
+ const agentId = context.req.param("agentId");
44
+ if (agentId === undefined || agentId === "")
45
+ throw new TypeError("agentId is required");
46
+ const rpc = { hono: context, auth: options.auth?.contextFor(context.req.raw) };
47
+ const resolved = await agentContext({ agentId, threadId }, rpc, options, "inspect");
48
+ const snapshot = await resolved.provider.loadThread({
49
+ ...resolved.scope,
50
+ threadId,
51
+ maxEncodedBytes: REALTIME_RUNTIME_LIMITS.initialSnapshotBytes,
52
+ });
53
+ const history = await structuralHistory(resolved.provider, resolved.scope, snapshot.checkpoint);
54
+ const runIds = inspectedRunIds(snapshot, mode);
55
+ return jsonResponse({
56
+ agentId,
57
+ threadId,
58
+ mode,
59
+ truncated: history.truncated,
60
+ runs: inspectorRuns(snapshot).filter((run) => runIds.has(String(run.runId))),
61
+ executions: inspectorExecutions(snapshot),
62
+ attempts: inspectorAttempts(history.records, runIds),
63
+ transitions: inspectorTransitions(history.records, runIds),
64
+ });
65
+ }
66
+ async function structuralHistory(provider, scope, checkpoint) {
67
+ let after = { ...checkpoint, sequence: "0" };
68
+ const records = [];
69
+ for (let pageIndex = 0; pageIndex < 5; pageIndex += 1) {
70
+ const page = await provider.readJournal({
71
+ ...scope,
72
+ threadId: checkpoint.threadId,
73
+ after,
74
+ limit: 100,
75
+ maxEncodedBytes: 1_048_576,
76
+ });
77
+ if (page.gap !== undefined)
78
+ return { records, truncated: true };
79
+ records.push(...page.records.filter((record) => record.kind === "event"));
80
+ after = page.checkpoint;
81
+ if (!page.hasMore)
82
+ return { records, truncated: false };
83
+ }
84
+ return { records, truncated: true };
85
+ }
86
+ function executionMode(value) {
87
+ if (value === undefined || value === "live")
88
+ return "live";
89
+ if (value === "history")
90
+ return value;
91
+ throw new TypeError("mode is invalid");
92
+ }
93
+ function rpcStatus(error) {
94
+ if (error.code === "UNAUTHORIZED")
95
+ return 401;
96
+ if (error.code === "NOT_FOUND")
97
+ return 404;
98
+ if (error.code === "IDENTITY_PRECONDITION_FAILED")
99
+ return 409;
100
+ return 403;
101
+ }
102
+ function unauthorized() {
103
+ return jsonResponse({ error: "RELKIT_INSPECTOR_UNAUTHORIZED" }, 401, {
104
+ "www-authenticate": "Bearer",
105
+ });
106
+ }
107
+ //# sourceMappingURL=agent-inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inspector.js","sourceRoot":"","sources":["../src/agent-inspector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ProgressSink } from "@relkit/invocation";
2
+ import type { ActiveAgentExecution } from "./agent-active-execution.js";
3
+ import { type agentContext } from "./agent-rpc-support.js";
4
+ type ResolvedAgent = Awaited<ReturnType<typeof agentContext>>;
5
+ export declare function createAgentProgressSink(resolved: ResolvedAgent, active: ActiveAgentExecution, tool?: {
6
+ readonly toolCallId: string;
7
+ readonly toolId: string;
8
+ }): ProgressSink;
9
+ export {};
10
+ //# sourceMappingURL=agent-progress-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-progress-sink.d.ts","sourceRoot":"","sources":["../src/agent-progress-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE9F,KAAK,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE9D,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,oBAAoB,EAC5B,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9D,YAAY,CAgDd"}
@@ -0,0 +1,52 @@
1
+ import { createOperationId } from "@relkit/realtime";
2
+ import { agentLimits, digest, encodedBytes } from "./agent-rpc-support.js";
3
+ export function createAgentProgressSink(resolved, active, tool) {
4
+ let progressRunId = active.receipt.runId;
5
+ let createdAt = new Date().toISOString();
6
+ return Object.freeze({
7
+ emit: async (value, signal) => {
8
+ if (signal.aborted)
9
+ throw signal.reason;
10
+ if (progressRunId !== active.receipt.runId) {
11
+ progressRunId = active.receipt.runId;
12
+ createdAt = new Date().toISOString();
13
+ }
14
+ const messageId = tool === undefined
15
+ ? `${active.receipt.runId}:progress`
16
+ : `${active.receipt.runId}:tool:${tool.toolCallId}:progress`;
17
+ const message = {
18
+ messageId,
19
+ runId: active.receipt.runId,
20
+ role: "tool",
21
+ parts: [
22
+ {
23
+ partId: `${messageId}:latest`,
24
+ kind: "progress",
25
+ scope: tool === undefined ? "run" : "tool",
26
+ ...(tool ?? {}),
27
+ value,
28
+ },
29
+ ],
30
+ createdAt,
31
+ };
32
+ await resolved.provider.appendJournal({
33
+ ...resolved.scope,
34
+ threadId: active.receipt.threadId,
35
+ runId: active.receipt.runId,
36
+ claim: active.claim,
37
+ operationId: createOperationId(),
38
+ semanticDigest: digest(message),
39
+ record: {
40
+ recordId: crypto.randomUUID(),
41
+ runId: active.receipt.runId,
42
+ kind: "message",
43
+ publicValue: message,
44
+ encodedBytes: encodedBytes(message),
45
+ createdAt: new Date().toISOString(),
46
+ },
47
+ limits: agentLimits,
48
+ });
49
+ },
50
+ });
51
+ }
52
+ //# sourceMappingURL=agent-progress-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-progress-sink.js","sourceRoot":"","sources":["../src/agent-progress-sink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAI9F,MAAM,UAAU,uBAAuB,CACrC,QAAuB,EACvB,MAA4B,EAC5B,IAA+D;IAE/D,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,MAAmB,EAAE,EAAE;YAClD,IAAI,MAAM,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,MAAM,CAAC;YACxC,IAAI,aAAa,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3C,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC,CAAC;YACD,MAAM,SAAS,GACb,IAAI,KAAK,SAAS;gBAChB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW;gBACpC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,UAAU,WAAW,CAAC;YACjE,MAAM,OAAO,GAAG;gBACd,SAAS;gBACT,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,IAAI,EAAE,MAAe;gBACrB,KAAK,EAAE;oBACL;wBACE,MAAM,EAAE,GAAG,SAAS,SAAS;wBAC7B,IAAI,EAAE,UAAmB;wBACzB,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAE,MAAgB;wBAChE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;wBACf,KAAK;qBACN;iBACF;gBACD,SAAS;aACV,CAAC;YACF,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACpC,GAAG,QAAQ,CAAC,KAAK;gBACjB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;gBACjC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,iBAAiB,EAAE;gBAChC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC;gBAC/B,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC7B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;oBAC3B,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;gBACD,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProtocolFrame } from "./agent-protocol-stream.js";
2
+ export declare function agUiFrames(frame: AgentProtocolFrame): Iterable<unknown>;
3
+ //# sourceMappingURL=agent-protocol-encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-protocol-encoding.d.ts","sourceRoot":"","sources":["../src/agent-protocol-encoding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,wBAAiB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAgCxE"}
@@ -0,0 +1,123 @@
1
+ import { EventType } from "@ag-ui/core";
2
+ import { AGENT_STREAM_VERSION } from "@relkit/contracts";
3
+ export function* agUiFrames(frame) {
4
+ if (frame.kind === "state") {
5
+ yield { type: EventType.STATE_SNAPSHOT, snapshot: frame.value };
6
+ }
7
+ else if (frame.kind === "text-start") {
8
+ yield { type: EventType.TEXT_MESSAGE_START, messageId: frame.messageId, role: "assistant" };
9
+ }
10
+ else if (frame.kind === "text-delta") {
11
+ yield { type: EventType.TEXT_MESSAGE_CONTENT, messageId: frame.messageId, delta: frame.delta };
12
+ }
13
+ else if (frame.kind === "text-end") {
14
+ yield { type: EventType.TEXT_MESSAGE_END, messageId: frame.messageId };
15
+ }
16
+ else if (frame.kind === "tool") {
17
+ yield* agUiToolFrames(frame);
18
+ }
19
+ else if (frame.kind === "progress" || frame.kind === "approval") {
20
+ yield {
21
+ type: EventType.CUSTOM,
22
+ name: `relkit.${frame.kind}`,
23
+ value: frame.kind === "progress" ? frame : frame.value,
24
+ };
25
+ }
26
+ else if (frame.kind === "event" && frame.event === "execution") {
27
+ yield executionEvent(frame);
28
+ }
29
+ else if (frame.kind === "event") {
30
+ yield { type: EventType.CUSTOM, name: `relkit.${frame.event}`, value: frame.value };
31
+ }
32
+ else if (frame.status === "succeeded") {
33
+ yield {
34
+ type: EventType.RUN_FINISHED,
35
+ threadId: frame.threadId,
36
+ runId: frame.runId,
37
+ result: frame.text,
38
+ outcome: { type: "success" },
39
+ };
40
+ }
41
+ else {
42
+ yield { type: EventType.RUN_ERROR, message: "Agent execution failed.", code: frame.status };
43
+ }
44
+ }
45
+ function* agUiToolFrames(frame) {
46
+ if (["started", "input-streaming", "input-ready"].includes(frame.state)) {
47
+ if (frame.inputStarted)
48
+ yield {
49
+ type: EventType.TOOL_CALL_START,
50
+ toolCallId: frame.toolCallId,
51
+ toolCallName: frame.toolId,
52
+ };
53
+ if (frame.inputDelta !== undefined)
54
+ yield {
55
+ type: EventType.TOOL_CALL_ARGS,
56
+ toolCallId: frame.toolCallId,
57
+ delta: frame.inputDelta,
58
+ };
59
+ if (frame.state === "input-ready")
60
+ yield { type: EventType.TOOL_CALL_END, toolCallId: frame.toolCallId };
61
+ }
62
+ else if (frame.state === "succeeded") {
63
+ yield {
64
+ type: EventType.TOOL_CALL_RESULT,
65
+ messageId: `${frame.toolCallId}:result`,
66
+ toolCallId: frame.toolCallId,
67
+ content: JSON.stringify(frame.value),
68
+ role: "tool",
69
+ };
70
+ }
71
+ else {
72
+ yield { type: EventType.CUSTOM, name: "relkit.tool", value: frame };
73
+ }
74
+ }
75
+ function executionEvent(frame) {
76
+ const value = frame.value;
77
+ if (!isExecutionEvent(value)) {
78
+ return { type: EventType.CUSTOM, name: "relkit.execution", value };
79
+ }
80
+ const metadata = {
81
+ relkit: {
82
+ protocol: "relkit.agent-event",
83
+ version: AGENT_STREAM_VERSION,
84
+ ...(frame.eventId === undefined ? {} : { eventId: frame.eventId }),
85
+ ...(frame.recordId === undefined ? {} : { recordId: frame.recordId }),
86
+ ...(frame.runId === undefined ? {} : { runId: frame.runId }),
87
+ ...(frame.createdAt === undefined ? {} : { createdAt: frame.createdAt }),
88
+ nativeSequence: value.nativeSequence,
89
+ kind: value.kind,
90
+ scope: value.scope,
91
+ occurredAt: value.occurredAt,
92
+ ...(value.agent === undefined ? {} : { agent: value.agent }),
93
+ ...(value.parent === undefined ? {} : { parent: value.parent }),
94
+ ...(value.node === undefined ? {} : { node: value.node }),
95
+ },
96
+ };
97
+ if (value.kind === "values" && value.value !== undefined) {
98
+ return { type: EventType.STATE_SNAPSHOT, snapshot: value.value, metadata };
99
+ }
100
+ return {
101
+ type: EventType.CUSTOM,
102
+ name: value.kind === "custom" ? customName(value.value) : "relkit.execution",
103
+ value,
104
+ metadata,
105
+ };
106
+ }
107
+ function customName(value) {
108
+ return isRecord(value) && typeof value.name === "string" && value.name !== ""
109
+ ? value.name
110
+ : "relkit.custom";
111
+ }
112
+ function isExecutionEvent(value) {
113
+ return (isRecord(value) &&
114
+ typeof value.nativeSequence === "number" &&
115
+ typeof value.kind === "string" &&
116
+ Array.isArray(value.scope) &&
117
+ value.scope.every((entry) => typeof entry === "string") &&
118
+ typeof value.occurredAt === "string");
119
+ }
120
+ function isRecord(value) {
121
+ return value !== null && typeof value === "object" && !Array.isArray(value);
122
+ }
123
+ //# sourceMappingURL=agent-protocol-encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-protocol-encoding.js","sourceRoot":"","sources":["../src/agent-protocol-encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AgentClientEvent, ThreadSnapshot } from "@relkit/agents";
2
+ import type { AgentProtocolFrame } from "./agent-protocol-stream.js";
3
+ export declare function snapshotFrames(snapshot: ThreadSnapshot, runIds: ReadonlySet<string>, sentText: Map<string, string>, sentParts: Map<string, string>, toolInputs: Map<string, string>, recoverState?: boolean): Iterable<AgentProtocolFrame>;
4
+ export declare function eventFrames(event: AgentClientEvent, runIds: ReadonlySet<string>, sentText: Map<string, string>, sentParts: Map<string, string>, toolInputs: Map<string, string>): Iterable<AgentProtocolFrame>;
5
+ export declare function terminalFrames(snapshot: ThreadSnapshot, runId: string, sentText: ReadonlyMap<string, string>): Iterable<AgentProtocolFrame>;
6
+ export declare function terminalRun(snapshot: ThreadSnapshot, runId: string): boolean;
7
+ export declare function continuationRun(snapshot: ThreadSnapshot, currentRunId: string, runIds: Set<string>): string;
8
+ //# sourceMappingURL=agent-protocol-frame-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-protocol-frame-state.d.ts","sourceRoot":"","sources":["../src/agent-protocol-frame-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,wBAAiB,cAAc,CAC7B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,YAAY,UAAQ,GACnB,QAAQ,CAAC,kBAAkB,CAAC,CAqB9B;AAED,wBAAiB,WAAW,CAC1B,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,QAAQ,CAAC,kBAAkB,CAAC,CAqB9B;AACD,wBAAiB,cAAc,CAC7B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,QAAQ,CAAC,kBAAkB,CAAC,CAW9B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM5E;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAClB,MAAM,CAYR"}