agentfootprint 7.24.0 → 7.26.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 (220) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +5 -3
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/dist/adapters/hosting/agentcore.js +112 -1
  5. package/dist/adapters/hosting/agentcore.js.map +1 -1
  6. package/dist/adapters/llm/AnthropicProvider.js +10 -0
  7. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  8. package/dist/adapters/llm/BedrockProvider.js +13 -1
  9. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  10. package/dist/adapters/llm/BrowserAnthropicProvider.js +6 -0
  11. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  12. package/dist/adapters/llm/BrowserOpenAIProvider.js +18 -0
  13. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  14. package/dist/adapters/llm/MockProvider.js +9 -0
  15. package/dist/adapters/llm/MockProvider.js.map +1 -1
  16. package/dist/adapters/llm/OpenAIProvider.js +21 -0
  17. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  18. package/dist/conventions.js +12 -0
  19. package/dist/conventions.js.map +1 -1
  20. package/dist/core/Agent.js +56 -2
  21. package/dist/core/Agent.js.map +1 -1
  22. package/dist/core/agent/AgentBuilder.js +98 -1
  23. package/dist/core/agent/AgentBuilder.js.map +1 -1
  24. package/dist/core/agent/buildAgentChart.js +12 -2
  25. package/dist/core/agent/buildAgentChart.js.map +1 -1
  26. package/dist/core/agent/buildDynamicAgentChart.js +12 -3
  27. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  28. package/dist/core/agent/outputEnforcement.js +192 -0
  29. package/dist/core/agent/outputEnforcement.js.map +1 -0
  30. package/dist/core/agent/stages/callLLM.js +31 -1
  31. package/dist/core/agent/stages/callLLM.js.map +1 -1
  32. package/dist/core/agent/stages/outputRetry.js +102 -0
  33. package/dist/core/agent/stages/outputRetry.js.map +1 -0
  34. package/dist/core/agent/stages/route.js +111 -6
  35. package/dist/core/agent/stages/route.js.map +1 -1
  36. package/dist/core/outputSchema.js.map +1 -1
  37. package/dist/esm/adapters/hosting/agentcore.d.ts +50 -1
  38. package/dist/esm/adapters/hosting/agentcore.js +110 -0
  39. package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
  40. package/dist/esm/adapters/llm/AnthropicProvider.d.ts +10 -0
  41. package/dist/esm/adapters/llm/AnthropicProvider.js +10 -0
  42. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  43. package/dist/esm/adapters/llm/BedrockProvider.d.ts +9 -0
  44. package/dist/esm/adapters/llm/BedrockProvider.js +13 -1
  45. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  46. package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +1 -0
  47. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +6 -0
  48. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  49. package/dist/esm/adapters/llm/BrowserOpenAIProvider.d.ts +4 -0
  50. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +18 -0
  51. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  52. package/dist/esm/adapters/llm/MockProvider.d.ts +9 -0
  53. package/dist/esm/adapters/llm/MockProvider.js +9 -0
  54. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  55. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +12 -0
  56. package/dist/esm/adapters/llm/OpenAIProvider.js +21 -0
  57. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  58. package/dist/esm/adapters/types.d.ts +46 -0
  59. package/dist/esm/conventions.d.ts +4 -0
  60. package/dist/esm/conventions.js +12 -0
  61. package/dist/esm/conventions.js.map +1 -1
  62. package/dist/esm/core/Agent.d.ts +26 -1
  63. package/dist/esm/core/Agent.js +56 -2
  64. package/dist/esm/core/Agent.js.map +1 -1
  65. package/dist/esm/core/agent/AgentBuilder.d.ts +15 -0
  66. package/dist/esm/core/agent/AgentBuilder.js +98 -1
  67. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  68. package/dist/esm/core/agent/buildAgentChart.d.ts +13 -1
  69. package/dist/esm/core/agent/buildAgentChart.js +12 -2
  70. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  71. package/dist/esm/core/agent/buildDynamicAgentChart.js +12 -3
  72. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  73. package/dist/esm/core/agent/outputEnforcement.d.ts +173 -0
  74. package/dist/esm/core/agent/outputEnforcement.js +180 -0
  75. package/dist/esm/core/agent/outputEnforcement.js.map +1 -0
  76. package/dist/esm/core/agent/stages/callLLM.d.ts +15 -0
  77. package/dist/esm/core/agent/stages/callLLM.js +31 -1
  78. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  79. package/dist/esm/core/agent/stages/outputRetry.d.ts +34 -0
  80. package/dist/esm/core/agent/stages/outputRetry.js +98 -0
  81. package/dist/esm/core/agent/stages/outputRetry.js.map +1 -0
  82. package/dist/esm/core/agent/stages/route.d.ts +18 -2
  83. package/dist/esm/core/agent/stages/route.js +111 -6
  84. package/dist/esm/core/agent/stages/route.js.map +1 -1
  85. package/dist/esm/core/agent/types.d.ts +18 -0
  86. package/dist/esm/core/outputSchema.d.ts +51 -0
  87. package/dist/esm/core/outputSchema.js.map +1 -1
  88. package/dist/esm/events/payloads.d.ts +47 -1
  89. package/dist/esm/events/registry.d.ts +3 -1
  90. package/dist/esm/events/registry.js +2 -0
  91. package/dist/esm/events/registry.js.map +1 -1
  92. package/dist/esm/hosting/errors.d.ts +44 -2
  93. package/dist/esm/hosting/errors.js +63 -0
  94. package/dist/esm/hosting/errors.js.map +1 -1
  95. package/dist/esm/hosting/headers.d.ts +16 -0
  96. package/dist/esm/hosting/headers.js +24 -0
  97. package/dist/esm/hosting/headers.js.map +1 -0
  98. package/dist/esm/hosting/httpHost.d.ts +70 -4
  99. package/dist/esm/hosting/httpHost.js +211 -47
  100. package/dist/esm/hosting/httpHost.js.map +1 -1
  101. package/dist/esm/hosting/index.d.ts +23 -8
  102. package/dist/esm/hosting/index.js +21 -6
  103. package/dist/esm/hosting/index.js.map +1 -1
  104. package/dist/esm/hosting/nodeHost.d.ts +23 -0
  105. package/dist/esm/hosting/nodeHost.js +21 -1
  106. package/dist/esm/hosting/nodeHost.js.map +1 -1
  107. package/dist/esm/hosting/types.d.ts +212 -6
  108. package/dist/esm/hosting/types.js +7 -5
  109. package/dist/esm/hosting/types.js.map +1 -1
  110. package/dist/esm/hosting/webSocketConversation.d.ts +101 -0
  111. package/dist/esm/hosting/webSocketConversation.js +341 -0
  112. package/dist/esm/hosting/webSocketConversation.js.map +1 -0
  113. package/dist/esm/hosting/webSocketFrames.d.ts +164 -0
  114. package/dist/esm/hosting/webSocketFrames.js +284 -0
  115. package/dist/esm/hosting/webSocketFrames.js.map +1 -0
  116. package/dist/esm/hosting-providers.d.ts +7 -2
  117. package/dist/esm/hosting-providers.js +7 -2
  118. package/dist/esm/hosting-providers.js.map +1 -1
  119. package/dist/esm/index.d.ts +2 -1
  120. package/dist/esm/index.js +5 -0
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/resilience/withCircuitBreaker.js +5 -0
  123. package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
  124. package/dist/esm/resilience/withFallback.js +5 -0
  125. package/dist/esm/resilience/withFallback.js.map +1 -1
  126. package/dist/esm/resilience/withRetry.js +6 -0
  127. package/dist/esm/resilience/withRetry.js.map +1 -1
  128. package/dist/events/registry.js +2 -0
  129. package/dist/events/registry.js.map +1 -1
  130. package/dist/hosting/errors.js +66 -1
  131. package/dist/hosting/errors.js.map +1 -1
  132. package/dist/hosting/headers.js +28 -0
  133. package/dist/hosting/headers.js.map +1 -0
  134. package/dist/hosting/httpHost.js +211 -47
  135. package/dist/hosting/httpHost.js.map +1 -1
  136. package/dist/hosting/index.js +23 -6
  137. package/dist/hosting/index.js.map +1 -1
  138. package/dist/hosting/nodeHost.js +20 -0
  139. package/dist/hosting/nodeHost.js.map +1 -1
  140. package/dist/hosting/types.js +7 -5
  141. package/dist/hosting/types.js.map +1 -1
  142. package/dist/hosting/webSocketConversation.js +345 -0
  143. package/dist/hosting/webSocketConversation.js.map +1 -0
  144. package/dist/hosting/webSocketFrames.js +297 -0
  145. package/dist/hosting/webSocketFrames.js.map +1 -0
  146. package/dist/hosting-providers.js +8 -2
  147. package/dist/hosting-providers.js.map +1 -1
  148. package/dist/index.js +9 -1
  149. package/dist/index.js.map +1 -1
  150. package/dist/resilience/withCircuitBreaker.js +5 -0
  151. package/dist/resilience/withCircuitBreaker.js.map +1 -1
  152. package/dist/resilience/withFallback.js +5 -0
  153. package/dist/resilience/withFallback.js.map +1 -1
  154. package/dist/resilience/withRetry.js +6 -0
  155. package/dist/resilience/withRetry.js.map +1 -1
  156. package/dist/types/adapters/hosting/agentcore.d.ts +50 -1
  157. package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
  158. package/dist/types/adapters/llm/AnthropicProvider.d.ts +10 -0
  159. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  160. package/dist/types/adapters/llm/BedrockProvider.d.ts +9 -0
  161. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  162. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +1 -0
  163. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  164. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +4 -0
  165. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  166. package/dist/types/adapters/llm/MockProvider.d.ts +9 -0
  167. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  168. package/dist/types/adapters/llm/OpenAIProvider.d.ts +12 -0
  169. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  170. package/dist/types/adapters/types.d.ts +46 -0
  171. package/dist/types/adapters/types.d.ts.map +1 -1
  172. package/dist/types/conventions.d.ts +4 -0
  173. package/dist/types/conventions.d.ts.map +1 -1
  174. package/dist/types/core/Agent.d.ts +26 -1
  175. package/dist/types/core/Agent.d.ts.map +1 -1
  176. package/dist/types/core/agent/AgentBuilder.d.ts +15 -0
  177. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  178. package/dist/types/core/agent/buildAgentChart.d.ts +13 -1
  179. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  180. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  181. package/dist/types/core/agent/outputEnforcement.d.ts +174 -0
  182. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -0
  183. package/dist/types/core/agent/stages/callLLM.d.ts +15 -0
  184. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  185. package/dist/types/core/agent/stages/outputRetry.d.ts +35 -0
  186. package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -0
  187. package/dist/types/core/agent/stages/route.d.ts +18 -2
  188. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  189. package/dist/types/core/agent/types.d.ts +18 -0
  190. package/dist/types/core/agent/types.d.ts.map +1 -1
  191. package/dist/types/core/outputSchema.d.ts +51 -0
  192. package/dist/types/core/outputSchema.d.ts.map +1 -1
  193. package/dist/types/events/payloads.d.ts +47 -1
  194. package/dist/types/events/payloads.d.ts.map +1 -1
  195. package/dist/types/events/registry.d.ts +3 -1
  196. package/dist/types/events/registry.d.ts.map +1 -1
  197. package/dist/types/hosting/errors.d.ts +44 -2
  198. package/dist/types/hosting/errors.d.ts.map +1 -1
  199. package/dist/types/hosting/headers.d.ts +17 -0
  200. package/dist/types/hosting/headers.d.ts.map +1 -0
  201. package/dist/types/hosting/httpHost.d.ts +70 -4
  202. package/dist/types/hosting/httpHost.d.ts.map +1 -1
  203. package/dist/types/hosting/index.d.ts +23 -8
  204. package/dist/types/hosting/index.d.ts.map +1 -1
  205. package/dist/types/hosting/nodeHost.d.ts +23 -0
  206. package/dist/types/hosting/nodeHost.d.ts.map +1 -1
  207. package/dist/types/hosting/types.d.ts +212 -6
  208. package/dist/types/hosting/types.d.ts.map +1 -1
  209. package/dist/types/hosting/webSocketConversation.d.ts +102 -0
  210. package/dist/types/hosting/webSocketConversation.d.ts.map +1 -0
  211. package/dist/types/hosting/webSocketFrames.d.ts +165 -0
  212. package/dist/types/hosting/webSocketFrames.d.ts.map +1 -0
  213. package/dist/types/hosting-providers.d.ts +7 -2
  214. package/dist/types/hosting-providers.d.ts.map +1 -1
  215. package/dist/types/index.d.ts +2 -1
  216. package/dist/types/index.d.ts.map +1 -1
  217. package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
  218. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  219. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  220. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * hosting/headers — one lower-casing of one header bag, shared by every door.
4
+ *
5
+ * A six-line helper gets its own file for the reason every other shared piece
6
+ * in this folder does: two copies of it is how the request door and the
7
+ * conversation door end up disagreeing about whether a header the caller sent
8
+ * as `X-Session-Id` is present, and that disagreement would surface as one door
9
+ * seeing a session the other cannot.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.lowerCasedHeaders = void 0;
13
+ /**
14
+ * Header names lower-cased, repeated values joined — the shape every wire reads
15
+ * from, so no wire ever has to guess at casing.
16
+ */
17
+ function lowerCasedHeaders(headers) {
18
+ const out = {};
19
+ for (const [name, value] of Object.entries(headers)) {
20
+ if (typeof value === 'string')
21
+ out[name.toLowerCase()] = value;
22
+ else if (Array.isArray(value))
23
+ out[name.toLowerCase()] = value.join(', ');
24
+ }
25
+ return out;
26
+ }
27
+ exports.lowerCasedHeaders = lowerCasedHeaders;
28
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/hosting/headers.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAmC;IACnE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;aAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAPD,8CAOC"}
@@ -35,6 +35,20 @@
35
35
  * detaches and drains without closing a socket it never opened. That is the
36
36
  * whole difference; every other law on this page is the same either way.
37
37
  *
38
+ * ── The third door: a conversation ───────────────────────────────────────────
39
+ * `serveConversations(handler)` sits beside `serve(handler)` and takes upgrades
40
+ * on `conversationPath`, because `HostRequest → HostReply` is one exchange and
41
+ * some doors are not. Give a host a `conversationPath` and it declares
42
+ * `'conversation'`; leave it out and `serveConversations` refuses by name.
43
+ *
44
+ * **Both doors share ONE socket.** That is not an optimisation, it is the
45
+ * premise: the runtimes that need a conversation are the ones that hand a
46
+ * container exactly one port, so a host whose two doors each bound their own
47
+ * would fail with `EADDRINUSE` on the deployment it exists for. On a private
48
+ * socket the server is created by whichever door opens first and closed by
49
+ * whichever closes last; on a caller-owned one each door attaches and detaches
50
+ * its own listener and neither touches the socket.
51
+ *
38
52
  * Pattern: Template method via configuration (Strategy on the wire format).
39
53
  * Everything HTTP lives here and in the wires; `types.ts` knows none of it.
40
54
  */
@@ -65,6 +79,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
65
79
  exports.headerValue = exports.httpHost = void 0;
66
80
  const stream_js_1 = require("../stream.js");
67
81
  const errors_js_1 = require("./errors.js");
82
+ const headers_js_1 = require("./headers.js");
83
+ const webSocketConversation_js_1 = require("./webSocketConversation.js");
68
84
  /**
69
85
  * Status codes mapped by refusal code. Anything else is a 500.
70
86
  *
@@ -90,6 +106,20 @@ const STATUS_BY_CODE = {
90
106
  */
91
107
  const AWAITING_STATUS = 202;
92
108
  const DEFAULT_CAPABILITIES = ['streaming'];
109
+ /**
110
+ * What a conversation door caps when the deployment did not say.
111
+ *
112
+ * Both are memory this process pays for while somebody else fills it, so
113
+ * "unlimited" is not one of the options — and since what is enforced must be
114
+ * what is declared, the resolved numbers are what the host reports.
115
+ * One mebibyte is chosen as a number large enough that no ordinary protocol
116
+ * frame meets it and small enough that a hostile one cannot spend the heap;
117
+ * a deployment with a real ceiling passes its own.
118
+ */
119
+ const DEFAULT_CONVERSATION_LIMITS = {
120
+ maxFrameBytes: 1_048_576,
121
+ maxPendingBytes: 1_048_576,
122
+ };
93
123
  /**
94
124
  * An HTTP host for one handler, speaking the dialect you hand it.
95
125
  *
@@ -98,7 +128,7 @@ const DEFAULT_CAPABILITIES = ['streaming'];
98
128
  * httpHost({ name: 'myRuntime', wire: myWire, invokePath: '/v1/run', healthPath: '/up' });
99
129
  */
100
130
  function httpHost(options) {
101
- const { name, wire, invokePath, healthPath } = options;
131
+ const { name, wire, invokePath, healthPath, conversationPath } = options;
102
132
  const ownServer = options.server;
103
133
  // Refused at construction, not ignored at serve time: a `port` next to a
104
134
  // server this host does not bind is a caller who believes something untrue
@@ -112,10 +142,171 @@ function httpHost(options) {
112
142
  }
113
143
  const port = options.port ?? 8080;
114
144
  const hostname = options.hostname ?? '0.0.0.0';
115
- const capabilities = options.capabilities ?? DEFAULT_CAPABILITIES;
145
+ // A door that exists is a capability that can be honoured; one built without
146
+ // a path is not, and says so rather than being discovered at runtime.
147
+ const capabilities = options.capabilities ??
148
+ (conversationPath !== undefined
149
+ ? [...DEFAULT_CAPABILITIES, 'conversation']
150
+ : DEFAULT_CAPABILITIES);
151
+ // Resolved once, declared as resolved: `host.conversationLimits` is what is
152
+ // actually enforced, never what was passed in and quietly topped up.
153
+ const conversationLimits = {
154
+ ...DEFAULT_CONVERSATION_LIMITS,
155
+ ...options.conversationLimits,
156
+ };
157
+ // ── The socket both doors stand on ─────────────────────────────────
158
+ //
159
+ // Refcounted, because the deployment this exists for hands a container ONE
160
+ // port: two doors that each bound their own would be `EADDRINUSE` on exactly
161
+ // the machine that needed both. First door in creates and listens; last door
162
+ // out drains and closes. On a caller-owned server there is nothing to count —
163
+ // the socket was never ours to open or to close.
164
+ let socket;
165
+ let holders = 0;
166
+ async function acquireSocket() {
167
+ if (ownServer) {
168
+ if (!ownServer.listening) {
169
+ throw new Error(`[hosting] httpHost('${name}') was handed a server that is not listening yet. ` +
170
+ `This handle promises the url and port it is answering on, and a server with ` +
171
+ `no address has neither. Call server.listen(...) first, then serve() — ` +
172
+ `attaching after listen() is safe and is the intended order.`);
173
+ }
174
+ return ownServer;
175
+ }
176
+ holders += 1;
177
+ socket ??= (async () => {
178
+ const { createServer } = await Promise.resolve().then(() => __importStar(require('node:http')));
179
+ const created = createServer();
180
+ await new Promise((resolve, reject) => {
181
+ created.once('error', reject);
182
+ created.listen(port, hostname, resolve);
183
+ });
184
+ return created;
185
+ })();
186
+ try {
187
+ return await socket;
188
+ }
189
+ catch (err) {
190
+ // A socket that never came up is not one anybody is holding.
191
+ holders -= 1;
192
+ socket = undefined;
193
+ throw err;
194
+ }
195
+ }
196
+ async function releaseSocket() {
197
+ if (ownServer)
198
+ return;
199
+ holders -= 1;
200
+ if (holders > 0)
201
+ return;
202
+ const held = socket;
203
+ socket = undefined;
204
+ if (!held)
205
+ return;
206
+ const server = await held.catch(() => undefined);
207
+ if (!server)
208
+ return;
209
+ server.closeIdleConnections();
210
+ await new Promise((resolve) => server.close(() => resolve()));
211
+ }
212
+ /** Where this host is answering — the caller's address, or the one we bound. */
213
+ function addressOf(server) {
214
+ const address = server.address();
215
+ const tcp = typeof address === 'object' && address !== null ? address : undefined;
216
+ if (ownServer && !tcp) {
217
+ throw new Error(`[hosting] httpHost('${name}') was handed a server bound to ${JSON.stringify(address)}` +
218
+ ` — a pipe or socket path, which has no port. This handle promises a url and a ` +
219
+ `port, and inventing one would be worse than refusing. Serve on a TCP server, or ` +
220
+ `drive the handler yourself.`);
221
+ }
222
+ const boundPort = tcp ? tcp.port : port;
223
+ // With our own socket the requested hostname IS the answer; with the
224
+ // caller's we ask the socket, because we never chose it.
225
+ const boundHost = ownServer ? tcp?.address ?? '127.0.0.1' : hostname;
226
+ const displayHost = boundHost === '0.0.0.0' || boundHost === '::' ? '127.0.0.1' : boundHost;
227
+ return { url: `http://${displayHost}:${boundPort}`, port: boundPort };
228
+ }
229
+ let conversationsServing = false;
116
230
  return {
117
231
  name,
118
232
  capabilities,
233
+ conversationLimits,
234
+ async serveConversations(handler) {
235
+ if (conversationPath === undefined) {
236
+ throw new Error(`[hosting] the '${name}' host was built without a 'conversationPath', so it has no ` +
237
+ `door to take conversations on and does not declare 'conversation' in its ` +
238
+ `capabilities. Build it with a conversationPath, or feature-detect with ` +
239
+ `host.capabilities.includes('conversation') and use serve() instead.`);
240
+ }
241
+ if (conversationsServing) {
242
+ throw new Error(`[hosting] the '${name}' host is already serving conversations on ` +
243
+ `'${conversationPath}'. One door, one handler — two would make which handler ` +
244
+ `receives a conversation depend on registration order. Close the first handle ` +
245
+ `before serving again.`);
246
+ }
247
+ conversationsServing = true;
248
+ let accepting = true;
249
+ let closing;
250
+ const door = (0, webSocketConversation_js_1.conversationDoor)({
251
+ hostName: name,
252
+ path: conversationPath,
253
+ limits: conversationLimits,
254
+ ...(wire.readConversation && { readConversation: wire.readConversation.bind(wire) }),
255
+ handler,
256
+ accepting: () => accepting,
257
+ });
258
+ const onUpgrade = (request, socketOfConversation) => {
259
+ if (door.handleUpgrade(request, socketOfConversation))
260
+ return;
261
+ // Not our path. On the caller's server that is theirs to answer or to
262
+ // ignore, exactly as an unmatched request path is; on ours nobody else
263
+ // can, so leaving the socket hanging would be the one dishonest option.
264
+ if (ownServer)
265
+ return;
266
+ socketOfConversation.end('HTTP/1.1 400 Bad Request\r\nconnection: close\r\n\r\n' +
267
+ `[hosting] the '${name}' host takes conversations on ${conversationPath}.`);
268
+ };
269
+ let server;
270
+ try {
271
+ server = await acquireSocket();
272
+ }
273
+ catch (err) {
274
+ conversationsServing = false;
275
+ throw err;
276
+ }
277
+ server.on('upgrade', onUpgrade);
278
+ let where;
279
+ try {
280
+ where = addressOf(server);
281
+ }
282
+ catch (err) {
283
+ server.off('upgrade', onUpgrade);
284
+ conversationsServing = false;
285
+ await releaseSocket();
286
+ throw err;
287
+ }
288
+ return {
289
+ url: where.url,
290
+ port: where.port,
291
+ close() {
292
+ closing ??= (async () => {
293
+ accepting = false;
294
+ if (ownServer)
295
+ server.off('upgrade', onUpgrade);
296
+ // End the live conversations BEFORE letting go of the socket. An
297
+ // upgraded socket keeps `server.close()` waiting forever — measured,
298
+ // not assumed — so a door that walked away from its conversations
299
+ // would hang every shutdown that shares this socket.
300
+ await door.closeAll(`the '${name}' host is shutting down`);
301
+ if (!ownServer)
302
+ server.off('upgrade', onUpgrade);
303
+ conversationsServing = false;
304
+ await releaseSocket();
305
+ })();
306
+ return closing;
307
+ },
308
+ };
309
+ },
119
310
  async serve(handler) {
120
311
  const startedAt = Date.now();
121
312
  const inFlight = new Set();
@@ -149,42 +340,20 @@ function httpHost(options) {
149
340
  inFlight.add(served);
150
341
  void served.finally(() => inFlight.delete(served));
151
342
  };
152
- let server;
153
- if (ownServer) {
154
- server = ownServer;
155
- if (!server.listening) {
156
- throw new Error(`[hosting] httpHost('${name}') was handed a server that is not listening yet. ` +
157
- `This handle promises the url and port it is answering on, and a server with ` +
158
- `no address has neither. Call server.listen(...) first, then serve() — ` +
159
- `attaching after listen() is safe and is the intended order.`);
160
- }
161
- server.on('request', onRequest);
162
- }
163
- else {
164
- const { createServer } = await Promise.resolve().then(() => __importStar(require('node:http')));
165
- server = createServer(onRequest);
166
- await new Promise((resolve, reject) => {
167
- server.once('error', reject);
168
- server.listen(port, hostname, resolve);
169
- });
343
+ const server = await acquireSocket();
344
+ server.on('request', onRequest);
345
+ let where;
346
+ try {
347
+ where = addressOf(server);
170
348
  }
171
- const address = server.address();
172
- const tcp = typeof address === 'object' && address !== null ? address : undefined;
173
- if (ownServer && !tcp) {
349
+ catch (err) {
174
350
  server.off('request', onRequest);
175
- throw new Error(`[hosting] httpHost('${name}') was handed a server bound to ${JSON.stringify(address)}` +
176
- ` — a pipe or socket path, which has no port. This handle promises a url and a ` +
177
- `port, and inventing one would be worse than refusing. Serve on a TCP server, or ` +
178
- `drive the handler yourself.`);
351
+ await releaseSocket();
352
+ throw err;
179
353
  }
180
- const boundPort = tcp ? tcp.port : port;
181
- // With our own socket the requested hostname IS the answer; with the
182
- // caller's we ask the socket, because we never chose it.
183
- const boundHost = ownServer ? tcp?.address ?? '127.0.0.1' : hostname;
184
- const displayHost = boundHost === '0.0.0.0' || boundHost === '::' ? '127.0.0.1' : boundHost;
185
354
  return {
186
- url: `http://${displayHost}:${boundPort}`,
187
- port: boundPort,
355
+ url: where.url,
356
+ port: where.port,
188
357
  close() {
189
358
  // Idempotent: the first call owns the shutdown, later ones await it.
190
359
  closing ??= (async () => {
@@ -203,8 +372,10 @@ function httpHost(options) {
203
372
  // caller is still waiting on, and dropping it would be the exact
204
373
  // thing close() promises not to do.
205
374
  await Promise.allSettled([...inFlight]);
206
- server.closeIdleConnections();
207
- await new Promise((resolve) => server.close(() => resolve()));
375
+ server.off('request', onRequest);
376
+ // The socket goes only when the LAST door lets go of it. A
377
+ // conversation still open on this port is not this door's to end.
378
+ await releaseSocket();
208
379
  })();
209
380
  return closing;
210
381
  },
@@ -225,7 +396,7 @@ async function serveOne(req, res, handler, wire) {
225
396
  sendJson(res, 400, wire.failure(`invalid JSON body: ${asError(err).message}`));
226
397
  return;
227
398
  }
228
- const headers = lowerCased(req.headers);
399
+ const headers = (0, headers_js_1.lowerCasedHeaders)(req.headers);
229
400
  const query = new URLSearchParams((req.url ?? '').split('?')[1] ?? '');
230
401
  const { input, sessionId, decision } = wire.readRequest({ body, headers, query });
231
402
  if (wantsStream) {
@@ -344,16 +515,6 @@ function sendJson(res, status, body) {
344
515
  res.writeHead(status, { 'content-type': 'application/json' });
345
516
  res.end(JSON.stringify(body));
346
517
  }
347
- function lowerCased(headers) {
348
- const out = {};
349
- for (const [name, value] of Object.entries(headers)) {
350
- if (typeof value === 'string')
351
- out[name.toLowerCase()] = value;
352
- else if (Array.isArray(value))
353
- out[name.toLowerCase()] = value.join(', ');
354
- }
355
- return out;
356
- }
357
518
  function asError(err) {
358
519
  return err instanceof Error ? err : new Error(String(err));
359
520
  }
@@ -363,6 +524,9 @@ function asError(err) {
363
524
  * Exported because every wire that maps a header needs it and re-deriving it
364
525
  * per adapter is how one of them ends up matching only the exact casing the
365
526
  * author happened to test with.
527
+ *
528
+ * Takes anything carrying lower-cased headers, so a request wire and a
529
+ * handshake wire read a header the same way rather than each growing their own.
366
530
  */
367
531
  function headerValue(facts, name, ...fallbacks) {
368
532
  for (const candidate of [name, ...fallbacks]) {
@@ -1 +1 @@
1
- {"version":3,"file":"httpHost.js","sourceRoot":"","sources":["../../src/hosting/httpHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpHost.js","sourceRoot":"","sources":["../../src/hosting/httpHost.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  /**
3
- * agentfootprint/hosting — the two ports between an agent and the place it runs.
3
+ * agentfootprint/hosting — the ports between an agent and the place it runs.
4
4
  *
5
5
  * An agent that answers one call in a script and an agent that has been up for
6
- * a month differ in two things, and only two: something has to carry requests
7
- * to it, and the conversation has to outlive the request. This subpath is those
8
- * two things as **ports**, plus local adapters that prove the ports work, plus
9
- * the composer that wires them together.
6
+ * a month differ in a few things: something has to carry requests to it,
7
+ * something sometimes has to hold a channel OPEN to it, and the conversation
8
+ * has to outlive the request. This subpath is those things as **ports**, plus
9
+ * local adapters that prove the ports work, plus the composer that wires the
10
+ * request half together.
10
11
  *
11
12
  * `AgentHost` — something can call me.
13
+ * `ConversationHost` — something can talk to me, both ways, until one of us
14
+ * ends it. `HostRequest → HostReply` is one exchange;
15
+ * some doors are not.
12
16
  * `SessionLifecycle` — the conversation outlives the request.
13
17
  * `standingAgent` — hydrate → resume-or-fresh → persist → reply.
14
18
  *
@@ -35,6 +39,17 @@
35
39
  * re-decides. Pass `server` and it attaches to a `node:http` server YOU
36
40
  * own instead of binding one — for the container that gets a single port
37
41
  * and must serve a WebSocket upgrade (or anything else) beside the agent.
42
+ * • `host.serveConversations(handler)` — the conversation door, on every
43
+ * adapter built on `httpHost` that was given a `conversationPath`.
44
+ * `nodeHost` serves it on `/conversation` with a real WebSocket
45
+ * implementation and **no dependency to install**, sharing the socket with
46
+ * `/invoke`. Frames are STRINGS at the port; what they mean is your
47
+ * protocol's business, not this port's.
48
+ * • `ConversationLimits` — the ceilings a door DECLARES
49
+ * (`maxFrameBytes`, `idleMs`, `maxPendingBytes`) so the layer above can
50
+ * chunk or heartbeat on its own protocol. The port does neither, on
51
+ * purpose: hiding a cap inside auto-chunking decides a protocol question
52
+ * for every consumer at once.
38
53
  * • `memorySessions()` — conversations in a Map, for tests and local dev.
39
54
  * • `standingAgent({ agent, sessions, host, durability? })` — the composer.
40
55
  * • `toEnvelope` / `readEnvelope` — pack a conversation, and refuse by name to
@@ -60,7 +75,7 @@
60
75
  * process.on('SIGTERM', () => void handle.close());
61
76
  */
62
77
  Object.defineProperty(exports, "__esModule", { value: true });
63
- exports.UnreadableEnvelopeError = exports.NoPendingAskError = exports.AwaitingDecisionError = exports.PauseNotCarriedError = exports.ConcurrentRunError = exports.HostClosedError = exports.requireCapability = exports.standingAgent = exports.checkEnvelope = exports.readPausedRun = exports.readEnvelope = exports.toPausedEnvelope = exports.toEnvelope = exports.memorySessions = exports.headerValue = exports.httpHost = exports.jsonWire = exports.nodeHost = void 0;
78
+ exports.FrameTooLargeError = exports.ConversationClosedError = exports.UnreadableEnvelopeError = exports.NoPendingAskError = exports.AwaitingDecisionError = exports.PauseNotCarriedError = exports.ConcurrentRunError = exports.HostClosedError = exports.requireCapability = exports.standingAgent = exports.checkEnvelope = exports.readPausedRun = exports.readEnvelope = exports.toPausedEnvelope = exports.toEnvelope = exports.memorySessions = exports.headerValue = exports.httpHost = exports.jsonWire = exports.nodeHost = void 0;
64
79
  var nodeHost_js_1 = require("./nodeHost.js");
65
80
  Object.defineProperty(exports, "nodeHost", { enumerable: true, get: function () { return nodeHost_js_1.nodeHost; } });
66
81
  Object.defineProperty(exports, "jsonWire", { enumerable: true, get: function () { return nodeHost_js_1.jsonWire; } });
@@ -85,4 +100,6 @@ Object.defineProperty(exports, "PauseNotCarriedError", { enumerable: true, get:
85
100
  Object.defineProperty(exports, "AwaitingDecisionError", { enumerable: true, get: function () { return errors_js_1.AwaitingDecisionError; } });
86
101
  Object.defineProperty(exports, "NoPendingAskError", { enumerable: true, get: function () { return errors_js_1.NoPendingAskError; } });
87
102
  Object.defineProperty(exports, "UnreadableEnvelopeError", { enumerable: true, get: function () { return errors_js_1.UnreadableEnvelopeError; } });
103
+ Object.defineProperty(exports, "ConversationClosedError", { enumerable: true, get: function () { return errors_js_1.ConversationClosedError; } });
104
+ Object.defineProperty(exports, "FrameTooLargeError", { enumerable: true, get: function () { return errors_js_1.FrameTooLargeError; } });
88
105
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hosting/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;;;AAEH,6CAAmD;AAA1C,uGAAA,QAAQ,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAG3B,6CAAsD;AAA7C,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAS9B,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,6CAMuB;AALrB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AAEf,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,yCAQqB;AAPnB,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AACjB,oHAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hosting/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;;;AAEH,6CAAmD;AAA1C,uGAAA,QAAQ,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAG3B,6CAAsD;AAA7C,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAW9B,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,6CAMuB;AALrB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AAEf,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,yCAUqB;AATnB,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AACjB,oHAAA,uBAAuB,OAAA;AACvB,oHAAA,uBAAuB,OAAA;AACvB,+GAAA,kBAAkB,OAAA"}
@@ -22,6 +22,13 @@
22
22
  * instead of binding one, so a WebSocket upgrade or your own routes can share
23
23
  * the port. `close()` then detaches and drains, and your socket stays up.
24
24
  *
25
+ * **There is a third door.** `serveConversations(handler)` takes WebSocket
26
+ * upgrades on `/conversation` and hands each one to your handler as a
27
+ * `HostConversation` — a channel that stays open, for the callers that cannot
28
+ * host an inbound endpoint and dial out instead. It shares this host's socket
29
+ * with `/invoke` and `/health`, needs nothing installed, and declares what it
30
+ * caps.
31
+ *
25
32
  * **Streaming is the caller's choice, not the server's.** Send
26
33
  * `Accept: text/event-stream` and the reply is Server-Sent Events, one `chunk`
27
34
  * event per `reply.emit(...)` then a final `complete`. Send anything else and
@@ -69,6 +76,15 @@ exports.jsonWire = {
69
76
  failure: (error, code) => ({ error, ...(code !== undefined && { code }) }),
70
77
  chunk: (text) => ({ text }),
71
78
  awaiting: (pending) => ({ awaiting: pending }),
79
+ readConversation(facts) {
80
+ // A handshake has no body, so this dialect names the two places a session
81
+ // id can be: the header a server-side caller sets, and the query a BROWSER
82
+ // has to use because the WebSocket API gives it no way to set a header.
83
+ // Header wins, so a caller that sets both is not surprised by which one the
84
+ // server preferred — the same rule the request dialect uses for body-vs-header.
85
+ const sessionId = (0, httpHost_js_1.headerValue)(facts, 'x-session-id') ?? facts.query.get('sessionId') ?? undefined;
86
+ return { ...(sessionId !== undefined && sessionId.length > 0 && { sessionId }) };
87
+ },
72
88
  };
73
89
  /**
74
90
  * An HTTP host for one handler.
@@ -90,6 +106,10 @@ function nodeHost(options = {}) {
90
106
  // particular runtime's container-contract path literal.
91
107
  invokePath: options.invokePath ?? '/invoke',
92
108
  healthPath: options.healthPath ?? '/health',
109
+ conversationPath: options.conversationPath ?? '/conversation',
110
+ ...(options.conversationLimits !== undefined && {
111
+ conversationLimits: options.conversationLimits,
112
+ }),
93
113
  // Passed through as given, never defaulted: with a caller-owned server
94
114
  // there is no port to default, and a port passed WITH one is a caller who
95
115
  // believes something untrue about where their agent answers — `httpHost`
@@ -1 +1 @@
1
- {"version":3,"file":"nodeHost.js","sourceRoot":"","sources":["../../src/hosting/nodeHost.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;;AAEH,+CAA4F;AAqC5F,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B;;;;;;;GAOG;AACU,QAAA,QAAQ,GAAa;IAChC,WAAW,CAAC,KAAK;QACf,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,SAAS,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5D,4EAA4E;QAC5E,wEAAwE;QACxE,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,OAAO;YACL,KAAK;YACL,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1E,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;CAC/C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAC,UAA2B,EAAE;IACpD,OAAO,IAAA,sBAAQ,EAAC;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,gBAAQ;QACd,yEAAyE;QACzE,wDAAwD;QACxD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;QAC3C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;QAC3C,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,0DAA0D;QAC1D,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;AACL,CAAC;AAhBD,4BAgBC"}
1
+ {"version":3,"file":"nodeHost.js","sourceRoot":"","sources":["../../src/hosting/nodeHost.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  /**
3
- * hosting/types — the two ports an agent needs to stand up and stay up.
3
+ * hosting/types — the ports an agent needs to stand up and stay up.
4
4
  *
5
- * `AgentHost` is "something can call me". `SessionLifecycle` is "the
6
- * conversation outlives the request". Both are deliberately written in the
7
- * vocabulary every transport and every store already has — an input, a reply,
8
- * a session id, a stored blob — and in nothing else.
5
+ * `AgentHost` is "something can call me". `ConversationHost` is "something can
6
+ * TALK to me" — a door that stays open, because `HostRequest → HostReply` is
7
+ * one exchange and some doors are not. `SessionLifecycle` is "the conversation
8
+ * outlives the request". All three are deliberately written in the vocabulary
9
+ * every transport and every store already has — an input, a reply, a frame, a
10
+ * session id, a stored blob — and in nothing else.
9
11
  *
10
12
  * **The rule these types are written under:** no runtime, product or protocol
11
13
  * gets a field, a name or an assumption here. A port shaped around one
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hosting/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hosting/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}