@procedures/peer 0.13.1 → 0.14.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.
- package/CHANGELOG.md +47 -0
- package/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/host/faces.d.ts +2 -0
- package/dist/host/faces.d.ts.map +1 -1
- package/dist/host/faces.js +16 -2
- package/dist/host/faces.js.map +1 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +74 -4
- package/dist/host/index.js.map +1 -1
- package/dist/host/tracking.d.ts +4 -1
- package/dist/host/tracking.d.ts.map +1 -1
- package/dist/host/tracking.js +14 -5
- package/dist/host/tracking.js.map +1 -1
- package/package.json +5 -3
- package/src/host/faces.ts +17 -2
- package/src/host/index.ts +88 -4
- package/src/host/tracking.ts +16 -6
package/dist/host/faces.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export declare function httpFace(options?: ProcedureHandlerOptions): HostFaceFac
|
|
|
73
73
|
* upgrade (`ProcedureServer.admits`). Thus no idle connection without credentials stays open.
|
|
74
74
|
* - The stop parts refuse new calls at the stop of the intake. In the drain, each connection
|
|
75
75
|
* closes when its calls end, so the drain of the listener does not wait for an idle connection.
|
|
76
|
+
* - After the cooperative abort, the connections stay open until each cut call ends in-band with
|
|
77
|
+
* `UNAVAILABLE` (CLI-48). Before, the connections closed at the abort, and a cut stream lost its end.
|
|
76
78
|
*/
|
|
77
79
|
export declare function wsFace(options?: UpgradeHandlerOptions): HostFaceFactory;
|
|
78
80
|
//# sourceMappingURL=faces.d.ts.map
|
package/dist/host/faces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faces.d.ts","sourceRoot":"","sources":["../../src/host/faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"faces.d.ts","sourceRoot":"","sources":["../../src/host/faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAA2D,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChL,OAAO,EAAoC,KAAK,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACnF;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,6GAA6G;IAC7G,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC/C,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACjD,qFAAqF;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACpD,mGAAmG;IACnG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACjF;AAED,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,QAAQ,CAAC;AAcrE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,uBAA4B,GAAG,eAAe,CAQ/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,qBAA0B,GAAG,eAAe,CAsC3E"}
|
package/dist/host/faces.js
CHANGED
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
* `upgradeHandler` of `@procedures/client/node`. `mcpFace()` of `@procedures/mcp-server` is the
|
|
15
15
|
* MCP face. A face of another package has the same shape, so the host needs no change for it.
|
|
16
16
|
*/
|
|
17
|
-
import { Client, requestCredentials } from "@procedures/client";
|
|
17
|
+
import { Client, realClock, requestCredentials } from "@procedures/client";
|
|
18
18
|
import { procedureHandler, upgradeHandler } from "@procedures/client/node";
|
|
19
|
+
/** The longest delay of a Node timer. A wait with this delay ends at its event, or at the close of its face. */
|
|
20
|
+
const UNTIL_CLOSE_MS = 2_147_483_647;
|
|
19
21
|
/** The browser checks of the policy, as options of a face. The options of the face win over them. */
|
|
20
22
|
function browserOptions(browser, http) {
|
|
21
23
|
return {
|
|
@@ -46,6 +48,8 @@ export function httpFace(options = {}) {
|
|
|
46
48
|
* upgrade (`ProcedureServer.admits`). Thus no idle connection without credentials stays open.
|
|
47
49
|
* - The stop parts refuse new calls at the stop of the intake. In the drain, each connection
|
|
48
50
|
* closes when its calls end, so the drain of the listener does not wait for an idle connection.
|
|
51
|
+
* - After the cooperative abort, the connections stay open until each cut call ends in-band with
|
|
52
|
+
* `UNAVAILABLE` (CLI-48). Before, the connections closed at the abort, and a cut stream lost its end.
|
|
49
53
|
*/
|
|
50
54
|
export function wsFace(options = {}) {
|
|
51
55
|
return (context) => {
|
|
@@ -60,7 +64,17 @@ export function wsFace(options = {}) {
|
|
|
60
64
|
stopIntake: () => upgrade.stopIntake(),
|
|
61
65
|
drain: async (deadline, signal) => {
|
|
62
66
|
await upgrade.drain(deadline, signal);
|
|
63
|
-
|
|
67
|
+
if (signal?.aborted) {
|
|
68
|
+
// After the cooperative abort, the service cuts each call, at the latest at the deadline,
|
|
69
|
+
// and each cut call ends in-band. The connections stay open until those calls end
|
|
70
|
+
// (CLI-48). This wait has no timer of its own: the cap of the phase limits it.
|
|
71
|
+
await upgrade.drain(realClock.now() + UNTIL_CLOSE_MS);
|
|
72
|
+
// The close starts here. The stage "close transports" waits for the close handshakes,
|
|
73
|
+
// so a cut at the deadline does not make the drain late.
|
|
74
|
+
upgrade.close().catch(() => undefined);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// The calls ended: the connections end in their protocol
|
|
64
78
|
await upgrade.close();
|
|
65
79
|
},
|
|
66
80
|
inFlight: () => upgrade.inFlight(),
|
package/dist/host/faces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faces.js","sourceRoot":"","sources":["../../src/host/faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAuG,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"faces.js","sourceRoot":"","sources":["../../src/host/faces.ts"],"names":[],"mappings":"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"}
|
package/dist/host/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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"}
|
package/dist/host/index.js
CHANGED
|
@@ -112,7 +112,10 @@ export function createProcedureHost(options = {}) {
|
|
|
112
112
|
const handler = faceHandler({ server, controller: name, face: faceName, life: () => life, keyed: keyedWindowMs !== undefined });
|
|
113
113
|
faces.set(faceName, factory({ name: faceName, handler, server, registry, policy, clock }));
|
|
114
114
|
}
|
|
115
|
-
// The listeners that the host owns, each one with the faces of its mount list
|
|
115
|
+
// The listeners that the host owns, each one with the faces of its mount list. The responses
|
|
116
|
+
// and the upgraded sockets of each listener go into one record, so the close of a face or of a
|
|
117
|
+
// listener first lets each answer go out (CLI-48).
|
|
118
|
+
const outgoing = outgoingAnswers();
|
|
116
119
|
const listeners = options.listen ?? [];
|
|
117
120
|
const onListener = new Set();
|
|
118
121
|
const endpoints = [];
|
|
@@ -127,11 +130,17 @@ export function createProcedureHost(options = {}) {
|
|
|
127
130
|
onListener.add(faceName);
|
|
128
131
|
if (face.handler) {
|
|
129
132
|
const handle = face.handler;
|
|
130
|
-
transport.mount((req, res) =>
|
|
133
|
+
transport.mount((req, res) => {
|
|
134
|
+
const taken = handle(req, res);
|
|
135
|
+
if (taken)
|
|
136
|
+
outgoing.response(res);
|
|
137
|
+
return taken;
|
|
138
|
+
});
|
|
131
139
|
}
|
|
132
140
|
if (face.upgrade) {
|
|
133
141
|
const upgrade = face.upgrade;
|
|
134
142
|
transport.upgrade(upgrade.match, (req, socket, head) => {
|
|
143
|
+
outgoing.socket(socket);
|
|
135
144
|
upgrade.handler(req, socket, head);
|
|
136
145
|
});
|
|
137
146
|
}
|
|
@@ -158,7 +167,11 @@ export function createProcedureHost(options = {}) {
|
|
|
158
167
|
stopIntake: () => transport.stopIntake(),
|
|
159
168
|
drain: (deadline, signal) => transport.drain(deadline, signal),
|
|
160
169
|
inFlight: () => transport.inFlight(),
|
|
161
|
-
close:
|
|
170
|
+
// The close destroys each connection: first each answer that a face ended goes out (CLI-48)
|
|
171
|
+
close: async () => {
|
|
172
|
+
await outgoing.flushed();
|
|
173
|
+
await transport.close();
|
|
174
|
+
},
|
|
162
175
|
};
|
|
163
176
|
return { name: `${name}.listen.${listenerName}`, knobs: transport.knobs, impl };
|
|
164
177
|
});
|
|
@@ -197,7 +210,23 @@ export function createProcedureHost(options = {}) {
|
|
|
197
210
|
close: () => server.close(),
|
|
198
211
|
},
|
|
199
212
|
};
|
|
200
|
-
|
|
213
|
+
// The close of a face (the sessions of MCP, the connections of WebSocket) also lets each answer go out first (CLI-48)
|
|
214
|
+
const faceParts = [...faces.entries()].flatMap(([faceName, face]) => {
|
|
215
|
+
const impl = face.parts;
|
|
216
|
+
if (!impl)
|
|
217
|
+
return [];
|
|
218
|
+
const part = {
|
|
219
|
+
start: (signal, lifecycle) => impl.start(signal, lifecycle),
|
|
220
|
+
stopIntake: () => impl.stopIntake(),
|
|
221
|
+
drain: (deadline, signal) => impl.drain(deadline, signal),
|
|
222
|
+
inFlight: () => impl.inFlight(),
|
|
223
|
+
close: async () => {
|
|
224
|
+
await outgoing.flushed();
|
|
225
|
+
await impl.close();
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
return [{ name: `${name}.${faceName}`, knobs: {}, impl: part }];
|
|
229
|
+
});
|
|
201
230
|
const parts = [serverPart, ...faceParts, ...listenerParts];
|
|
202
231
|
const dependencies = server.storageHandles().map((handle) => ({
|
|
203
232
|
name: handle.name,
|
|
@@ -260,6 +289,47 @@ export function createProcedureHost(options = {}) {
|
|
|
260
289
|
},
|
|
261
290
|
};
|
|
262
291
|
}
|
|
292
|
+
/** An empty write: its callback comes after each write before it. */
|
|
293
|
+
const FLUSH = Buffer.alloc(0);
|
|
294
|
+
/** This function makes the record of the answers that go out on the listeners of a host (CLI-48). */
|
|
295
|
+
function outgoingAnswers() {
|
|
296
|
+
const responses = new Set();
|
|
297
|
+
const sockets = new Set();
|
|
298
|
+
return {
|
|
299
|
+
response(res) {
|
|
300
|
+
if (responses.has(res))
|
|
301
|
+
return;
|
|
302
|
+
responses.add(res);
|
|
303
|
+
const done = () => {
|
|
304
|
+
responses.delete(res);
|
|
305
|
+
};
|
|
306
|
+
res.once("finish", done);
|
|
307
|
+
res.once("close", done);
|
|
308
|
+
},
|
|
309
|
+
socket(socket) {
|
|
310
|
+
sockets.add(socket);
|
|
311
|
+
socket.once("close", () => sockets.delete(socket));
|
|
312
|
+
},
|
|
313
|
+
async flushed() {
|
|
314
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
315
|
+
const waits = [];
|
|
316
|
+
for (const res of responses) {
|
|
317
|
+
if (!res.writableEnded || res.writableFinished || res.destroyed)
|
|
318
|
+
continue;
|
|
319
|
+
waits.push(new Promise((resolve) => {
|
|
320
|
+
res.once("finish", () => resolve());
|
|
321
|
+
res.once("close", () => resolve());
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
for (const socket of sockets) {
|
|
325
|
+
if (socket.destroyed || !socket.writable || socket.writableLength === 0)
|
|
326
|
+
continue;
|
|
327
|
+
waits.push(new Promise((resolve) => socket.write(FLUSH, () => resolve())));
|
|
328
|
+
}
|
|
329
|
+
await Promise.all(waits);
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
263
333
|
export { httpFace, wsFace } from "./faces.js";
|
|
264
334
|
export { callOperations, faceHandler, operationOfCall } from "./tracking.js";
|
|
265
335
|
//# sourceMappingURL=index.js.map
|
package/dist/host/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAkB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,OAAO,GASR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAuC,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAK7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC3D,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7B,0BAA0B,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAwKH,+DAA+D;AAC/D,SAAS,SAAS,CAAC,IAAY,EAAE,KAAiC;IAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,OAAkC,CAAC,CAAC;IACzE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,OAAgC,CAAC,CAAC;IACnE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,qFAAqF,CAAC,CAAC;AAC1H,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,KAAkD;IACtE,OAAO,OAAQ,KAAoC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAmC,EAAE,CAAC,CAAC,CAAE,KAAwB,CAAC;AACxJ,CAAC;AAED,4BAA4B;AAC5B,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,wFAAwF;AACxF,MAAM,kBAAkB,GAAwC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAE5I;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAO,GAAyB,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,kBAAkB,CAAC;IACxD,4FAA4F;IAC5F,6EAA6E;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;IACnD,MAAM,MAAM,GAAe,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACrG,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,0FAA0F;IAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,GAAG,IAAI;QACP,GAAG,OAAO,CAAC,aAAa;QACxB,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;QAC1C,QAAQ;QACR,KAAK;KACN,CAAC,CAAC;IAEH,yFAAyF;IACzF,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,UAAU,KAAK,KAAK;YAAE,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtJ,CAAC;IAED,kGAAkG;IAClG,IAAI,IAAI,GAAqB,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC;IACvD,MAAM,aAAa,GAAG,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,iBAAiB,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEhJ,YAAY;IACZ,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC,CAAC;QAChI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,8EAA8E;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,MAAM,aAAa,GAAe,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACzG,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClH,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,YAAY,qBAAqB,QAAQ,iCAAiC,CAAC,CAAC;YACxH,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5B,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC7B,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;oBACrD,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAgB,EAAE,IAAc,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9K,CAAC,CAAC,CAAC;QACH,qFAAqF;QACrF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3F,MAAM,IAAI,GAAkB;YAC1B,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;gBACjC,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,4BAA4B,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE;YACxC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC9D,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;YACpC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;SAC/B,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChH,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAE,GAAiB,EAAW,EAAE;QACnE,KAAK,MAAM,IAAI,IAAI,QAAQ;YAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAW,EAAE;QAC9E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;YAClC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,iGAAiG;IACjG,MAAM,UAAU,GAAa;QAC3B,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;gBAC5B,IAAI,GAAG,SAAS,CAAC;gBACjB,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;YACrC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC3D,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;YACjC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;SAC5B;KACF,CAAC;IACF,MAAM,SAAS,GAAe,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrK,MAAM,KAAK,GAAe,CAAC,UAAU,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAqB,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;QACjE,MAAM;KACP,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,WAAW,GAAqB;QACpC;YACE,IAAI;YACJ,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;YACnD,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;SACxH;KACF,CAAC;IAEF,MAAM,IAAI,GAAa;QACrB,EAAE;QACF,SAAS;QACT,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACvF,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc;KAC5C,CAAC;IACF,iGAAiG;IACjG,8EAA8E;IAC9E,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7J,OAAO;QACL,IAAI;QACJ,EAAE;QACF,MAAM;QACN,QAAQ;QACR,MAAM;QACN,OAAO;QACP,OAAO;QACP,KAAK;QACL,YAAY;QACZ,MAAM;QACN,WAAW;QACX,IAAI;QACJ,OAAO,CAAC,GAAmB;YACzB,KAAK,MAAM,UAAU,IAAI,YAAY;gBAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC3G,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,MAAM;gBAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACjF,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ;oBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YACvH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;QACpF,SAAS,CAAC,YAAoB;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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"}
|
package/dist/host/tracking.d.ts
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* repeatable procedure, a call with an idempotency key, or a call that runs one time.
|
|
12
12
|
* - Each call is a stream (D4). A unary call is a stream of one. A stream call stays in flight
|
|
13
13
|
* until its last item, and a cut after the first item ends the stream in-band, with an error.
|
|
14
|
+
* Each cut has the code `UNAVAILABLE`, before and after the first item. Its flag `retryable` tells
|
|
15
|
+
* if a retry is safe (CLI-48).
|
|
14
16
|
*/
|
|
15
17
|
import type { Lifecycle, Operation, OperationOf } from "@mark1russell7/service";
|
|
16
18
|
import { type ProcedureRegistry, type ProcedureServer, type RequestHandler } from "@procedures/client";
|
|
@@ -18,7 +20,8 @@ import { type ProcedureRegistry, type ProcedureServer, type RequestHandler } fro
|
|
|
18
20
|
* The operation of a call, which gives its idempotency (D3):
|
|
19
21
|
* - `repeatable`: the effects of the procedure permit a second run (no writes, or idempotent writes).
|
|
20
22
|
* - `keyed`: the call has an idempotency key, and the server keeps its result for the window.
|
|
21
|
-
* - `once`: each other call. A cut of it
|
|
23
|
+
* - `once`: each other call. A cut of it is `UNAVAILABLE` and not retryable, because it can have had its effect.
|
|
24
|
+
* Before its first item, the HTTP face answers 500 for it.
|
|
22
25
|
*/
|
|
23
26
|
export type CallOperation = "repeatable" | "keyed" | "once";
|
|
24
27
|
/** The detail of a call for the function of a route pattern: its face, its procedure and its operation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/host/tracking.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/host/tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAA0C,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAQL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,2GAA2G;AAC3G,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAMrG;AAED,+HAA+H;AAC/H,eAAO,MAAM,eAAe,EAAE,WAAgH,CAAC;AAE/I,iHAAiH;AACjH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,0FAA0F;IAC1F,WAAW,IAAI,iBAAiB,CAAC;CAClC;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6HAA6H;IAC7H,QAAQ,CAAC,IAAI,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACtC,gHAAgH;IAChH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAkID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAUpE"}
|
package/dist/host/tracking.js
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* repeatable procedure, a call with an idempotency key, or a call that runs one time.
|
|
12
12
|
* - Each call is a stream (D4). A unary call is a stream of one. A stream call stays in flight
|
|
13
13
|
* until its last item, and a cut after the first item ends the stream in-band, with an error.
|
|
14
|
+
* Each cut has the code `UNAVAILABLE`, before and after the first item. Its flag `retryable` tells
|
|
15
|
+
* if a retry is safe (CLI-48).
|
|
14
16
|
*/
|
|
15
17
|
import { IDEMPOTENCY_KEY_METADATA, effectsOf, idempotencyKeyOf, isRepeatable, methodToPath, ms, pathToKey, } from "@procedures/client";
|
|
16
18
|
/**
|
|
@@ -35,17 +37,20 @@ function messageOf(error) {
|
|
|
35
37
|
return error instanceof Error ? error.message : String(error);
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
|
-
* The response of an end before the first item. A refusal and
|
|
39
|
-
*
|
|
40
|
+
* The response of an end before the first item. A refusal and each cut are `UNAVAILABLE`, because
|
|
41
|
+
* the server stopped (CLI-48). The flag `retryable` tells if a retry is safe:
|
|
42
|
+
* - A refusal and a retryable cut are retryable. The HTTP face answers 503, with `Retry-After` from the transport.
|
|
43
|
+
* - A cut of a call that can have had its effect is not retryable. The HTTP face answers 500, as the runner does.
|
|
44
|
+
* A failure is `INTERNAL_ERROR` (500).
|
|
40
45
|
*/
|
|
41
46
|
function endResponse(id, end) {
|
|
42
47
|
switch (end.kind) {
|
|
43
48
|
case "refused":
|
|
44
49
|
return failure(id, "UNAVAILABLE", `The host does not take the call now: ${end.cause}`, true);
|
|
45
50
|
case "cut":
|
|
46
|
-
return end.
|
|
51
|
+
return end.retryable
|
|
47
52
|
? failure(id, "UNAVAILABLE", `The host stopped the call: ${end.cause}`, true)
|
|
48
|
-
: failure(id, "
|
|
53
|
+
: failure(id, "UNAVAILABLE", `The host stopped the call, and the call can have had its effect: ${end.cause}`, false);
|
|
49
54
|
case "failed":
|
|
50
55
|
return failure(id, "INTERNAL_ERROR", messageOf(end.error), false);
|
|
51
56
|
case "done":
|
|
@@ -55,11 +60,15 @@ function endResponse(id, end) {
|
|
|
55
60
|
/**
|
|
56
61
|
* The error of an end after the first item: the stream ends in-band, with an error line. The count
|
|
57
62
|
* of the items of the stream goes in the message. The head of the response is not an item.
|
|
63
|
+
*
|
|
64
|
+
* The code is always `UNAVAILABLE`, because the server stopped the stream. A cut is not a failure
|
|
65
|
+
* of the server. The flag `retryable` tells if a retry is safe (CLI-48). Before, a cut that is not
|
|
66
|
+
* retryable had the code `INTERNAL_ERROR`, before and after the first item.
|
|
58
67
|
*/
|
|
59
68
|
function inBandEnd(end) {
|
|
60
69
|
const delivered = Math.max(0, end.delivered - 1);
|
|
61
70
|
return Object.assign(new Error(`The host stopped the stream after ${delivered} items: ${end.cause}`), {
|
|
62
|
-
code:
|
|
71
|
+
code: "UNAVAILABLE",
|
|
63
72
|
retryable: end.retryable,
|
|
64
73
|
delivered,
|
|
65
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../src/host/tracking.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../src/host/tracking.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@procedures/peer",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"description": "Serve procedures: createProcedureHost() gives the parts of a service, with HTTP, WebSocket and MCP faces on one listener. Also peers, server.create, server.call and server.connections, and manifests.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"server",
|
|
@@ -67,7 +67,9 @@
|
|
|
67
67
|
"provenance": true
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
|
-
"@procedures/fs": "0.
|
|
70
|
+
"@procedures/fs": "0.14.0",
|
|
71
|
+
"@procedures/mcp-server": "0.14.0",
|
|
72
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
71
73
|
"typescript": "^7.0.2",
|
|
72
74
|
"@types/node": "^22.0.0",
|
|
73
75
|
"@mark1russell7/cue": "^1.0.0",
|
|
@@ -78,7 +80,7 @@
|
|
|
78
80
|
},
|
|
79
81
|
"dependencies": {
|
|
80
82
|
"@mark1russell7/service": "^0.5.2",
|
|
81
|
-
"@procedures/client": "0.
|
|
83
|
+
"@procedures/client": "0.14.0",
|
|
82
84
|
"zod": "^4.6.5"
|
|
83
85
|
},
|
|
84
86
|
"scripts": {
|
package/src/host/faces.ts
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { IncomingMessage, ServerResponse as NodeResponse } from "node:http";
|
|
19
19
|
import type { Duplex } from "node:stream";
|
|
20
20
|
import type { TransportImpl } from "@mark1russell7/service";
|
|
21
|
-
import { Client, requestCredentials, type BrowserGuardOptions, type Clock, type HostPolicy, type ProcedureRegistry, type ProcedureServer } from "@procedures/client";
|
|
21
|
+
import { Client, realClock, requestCredentials, type BrowserGuardOptions, type Clock, type HostPolicy, type ProcedureRegistry, type ProcedureServer } from "@procedures/client";
|
|
22
22
|
import { procedureHandler, upgradeHandler, type ProcedureHandlerOptions, type UpgradeHandlerOptions } from "@procedures/client/node";
|
|
23
23
|
import type { FaceHandler } from "./tracking.js";
|
|
24
24
|
|
|
@@ -66,6 +66,9 @@ export interface HostFace {
|
|
|
66
66
|
/** A face factory: the host calls it one time, with the context of the face. */
|
|
67
67
|
export type HostFaceFactory = (context: HostFaceContext) => HostFace;
|
|
68
68
|
|
|
69
|
+
/** The longest delay of a Node timer. A wait with this delay ends at its event, or at the close of its face. */
|
|
70
|
+
const UNTIL_CLOSE_MS = 2_147_483_647;
|
|
71
|
+
|
|
69
72
|
/** The browser checks of the policy, as options of a face. The options of the face win over them. */
|
|
70
73
|
function browserOptions(browser: BrowserGuardOptions, http: boolean): BrowserGuardOptions {
|
|
71
74
|
return {
|
|
@@ -98,6 +101,8 @@ export function httpFace(options: ProcedureHandlerOptions = {}): HostFaceFactory
|
|
|
98
101
|
* upgrade (`ProcedureServer.admits`). Thus no idle connection without credentials stays open.
|
|
99
102
|
* - The stop parts refuse new calls at the stop of the intake. In the drain, each connection
|
|
100
103
|
* closes when its calls end, so the drain of the listener does not wait for an idle connection.
|
|
104
|
+
* - After the cooperative abort, the connections stay open until each cut call ends in-band with
|
|
105
|
+
* `UNAVAILABLE` (CLI-48). Before, the connections closed at the abort, and a cut stream lost its end.
|
|
101
106
|
*/
|
|
102
107
|
export function wsFace(options: UpgradeHandlerOptions = {}): HostFaceFactory {
|
|
103
108
|
return (context) => {
|
|
@@ -113,7 +118,17 @@ export function wsFace(options: UpgradeHandlerOptions = {}): HostFaceFactory {
|
|
|
113
118
|
stopIntake: () => upgrade.stopIntake(),
|
|
114
119
|
drain: async (deadline, signal) => {
|
|
115
120
|
await upgrade.drain(deadline, signal);
|
|
116
|
-
|
|
121
|
+
if (signal?.aborted) {
|
|
122
|
+
// After the cooperative abort, the service cuts each call, at the latest at the deadline,
|
|
123
|
+
// and each cut call ends in-band. The connections stay open until those calls end
|
|
124
|
+
// (CLI-48). This wait has no timer of its own: the cap of the phase limits it.
|
|
125
|
+
await upgrade.drain(realClock.now() + UNTIL_CLOSE_MS);
|
|
126
|
+
// The close starts here. The stage "close transports" waits for the close handshakes,
|
|
127
|
+
// so a cut at the deadline does not make the drain late.
|
|
128
|
+
upgrade.close().catch(() => undefined);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// The calls ended: the connections end in their protocol
|
|
117
132
|
await upgrade.close();
|
|
118
133
|
},
|
|
119
134
|
inFlight: () => upgrade.inFlight(),
|
package/src/host/index.ts
CHANGED
|
@@ -310,7 +310,10 @@ export function createProcedureHost(options: ProcedureHostOptions = {}): Procedu
|
|
|
310
310
|
faces.set(faceName, factory({ name: faceName, handler, server, registry, policy, clock }));
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
// The listeners that the host owns, each one with the faces of its mount list
|
|
313
|
+
// The listeners that the host owns, each one with the faces of its mount list. The responses
|
|
314
|
+
// and the upgraded sockets of each listener go into one record, so the close of a face or of a
|
|
315
|
+
// listener first lets each answer go out (CLI-48).
|
|
316
|
+
const outgoing = outgoingAnswers();
|
|
314
317
|
const listeners = options.listen ?? [];
|
|
315
318
|
const onListener = new Set<string>();
|
|
316
319
|
const endpoints: Array<() => HostEndpoint[]> = [];
|
|
@@ -324,11 +327,16 @@ export function createProcedureHost(options: ProcedureHostOptions = {}): Procedu
|
|
|
324
327
|
onListener.add(faceName);
|
|
325
328
|
if (face.handler) {
|
|
326
329
|
const handle = face.handler;
|
|
327
|
-
transport.mount((req, res) =>
|
|
330
|
+
transport.mount((req, res) => {
|
|
331
|
+
const taken = handle(req, res);
|
|
332
|
+
if (taken) outgoing.response(res);
|
|
333
|
+
return taken;
|
|
334
|
+
});
|
|
328
335
|
}
|
|
329
336
|
if (face.upgrade) {
|
|
330
337
|
const upgrade = face.upgrade;
|
|
331
338
|
transport.upgrade(upgrade.match, (req, socket, head) => {
|
|
339
|
+
outgoing.socket(socket as Duplex);
|
|
332
340
|
upgrade.handler(req, socket as Duplex, head as Buffer);
|
|
333
341
|
});
|
|
334
342
|
}
|
|
@@ -353,7 +361,11 @@ export function createProcedureHost(options: ProcedureHostOptions = {}): Procedu
|
|
|
353
361
|
stopIntake: () => transport.stopIntake(),
|
|
354
362
|
drain: (deadline, signal) => transport.drain(deadline, signal),
|
|
355
363
|
inFlight: () => transport.inFlight(),
|
|
356
|
-
close:
|
|
364
|
+
// The close destroys each connection: first each answer that a face ended goes out (CLI-48)
|
|
365
|
+
close: async () => {
|
|
366
|
+
await outgoing.flushed();
|
|
367
|
+
await transport.close();
|
|
368
|
+
},
|
|
357
369
|
};
|
|
358
370
|
return { name: `${name}.listen.${listenerName}`, knobs: transport.knobs, impl };
|
|
359
371
|
});
|
|
@@ -391,7 +403,22 @@ export function createProcedureHost(options: ProcedureHostOptions = {}): Procedu
|
|
|
391
403
|
close: () => server.close(),
|
|
392
404
|
},
|
|
393
405
|
};
|
|
394
|
-
|
|
406
|
+
// The close of a face (the sessions of MCP, the connections of WebSocket) also lets each answer go out first (CLI-48)
|
|
407
|
+
const faceParts: HostPart[] = [...faces.entries()].flatMap(([faceName, face]) => {
|
|
408
|
+
const impl = face.parts;
|
|
409
|
+
if (!impl) return [];
|
|
410
|
+
const part: TransportImpl = {
|
|
411
|
+
start: (signal, lifecycle) => impl.start(signal, lifecycle),
|
|
412
|
+
stopIntake: () => impl.stopIntake(),
|
|
413
|
+
drain: (deadline, signal) => impl.drain(deadline, signal),
|
|
414
|
+
inFlight: () => impl.inFlight(),
|
|
415
|
+
close: async () => {
|
|
416
|
+
await outgoing.flushed();
|
|
417
|
+
await impl.close();
|
|
418
|
+
},
|
|
419
|
+
};
|
|
420
|
+
return [{ name: `${name}.${faceName}`, knobs: {}, impl: part }];
|
|
421
|
+
});
|
|
395
422
|
const parts: HostPart[] = [serverPart, ...faceParts, ...listenerParts];
|
|
396
423
|
|
|
397
424
|
const dependencies: HostDependency[] = server.storageHandles().map((handle) => ({
|
|
@@ -453,6 +480,63 @@ export function createProcedureHost(options: ProcedureHostOptions = {}): Procedu
|
|
|
453
480
|
};
|
|
454
481
|
}
|
|
455
482
|
|
|
483
|
+
/** The answers that go out on the listeners of a host: each response of a face, and each upgraded socket. */
|
|
484
|
+
interface OutgoingAnswers {
|
|
485
|
+
/** This method records a response of a face until its end. */
|
|
486
|
+
response(res: NodeResponse): void;
|
|
487
|
+
/** This method records an upgraded socket until its close. */
|
|
488
|
+
socket(socket: Duplex): void;
|
|
489
|
+
/**
|
|
490
|
+
* This method waits until each answer that a face wrote has gone out to the socket. It first gives
|
|
491
|
+
* one turn of the event loop, so each chain of promises that writes an answer ends (the MCP SDK).
|
|
492
|
+
* Then it waits for the event `finish` of each response that is ended, and for the write callback
|
|
493
|
+
* of each socket that has bytes to write. An open stream that is not ended does not hold it.
|
|
494
|
+
*/
|
|
495
|
+
flushed(): Promise<void>;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/** An empty write: its callback comes after each write before it. */
|
|
499
|
+
const FLUSH = Buffer.alloc(0);
|
|
500
|
+
|
|
501
|
+
/** This function makes the record of the answers that go out on the listeners of a host (CLI-48). */
|
|
502
|
+
function outgoingAnswers(): OutgoingAnswers {
|
|
503
|
+
const responses = new Set<NodeResponse>();
|
|
504
|
+
const sockets = new Set<Duplex>();
|
|
505
|
+
return {
|
|
506
|
+
response(res) {
|
|
507
|
+
if (responses.has(res)) return;
|
|
508
|
+
responses.add(res);
|
|
509
|
+
const done = (): void => {
|
|
510
|
+
responses.delete(res);
|
|
511
|
+
};
|
|
512
|
+
res.once("finish", done);
|
|
513
|
+
res.once("close", done);
|
|
514
|
+
},
|
|
515
|
+
socket(socket) {
|
|
516
|
+
sockets.add(socket);
|
|
517
|
+
socket.once("close", () => sockets.delete(socket));
|
|
518
|
+
},
|
|
519
|
+
async flushed() {
|
|
520
|
+
await new Promise<void>((resolve) => setImmediate(resolve));
|
|
521
|
+
const waits: Array<Promise<void>> = [];
|
|
522
|
+
for (const res of responses) {
|
|
523
|
+
if (!res.writableEnded || res.writableFinished || res.destroyed) continue;
|
|
524
|
+
waits.push(
|
|
525
|
+
new Promise<void>((resolve) => {
|
|
526
|
+
res.once("finish", () => resolve());
|
|
527
|
+
res.once("close", () => resolve());
|
|
528
|
+
}),
|
|
529
|
+
);
|
|
530
|
+
}
|
|
531
|
+
for (const socket of sockets) {
|
|
532
|
+
if (socket.destroyed || !socket.writable || socket.writableLength === 0) continue;
|
|
533
|
+
waits.push(new Promise<void>((resolve) => socket.write(FLUSH, () => resolve())));
|
|
534
|
+
}
|
|
535
|
+
await Promise.all(waits);
|
|
536
|
+
},
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
|
|
456
540
|
export { httpFace, wsFace } from "./faces.js";
|
|
457
541
|
export type { HostFace, HostFaceContext, HostFaceEndpoint, HostFaceFactory, HostFaceUpgrade } from "./faces.js";
|
|
458
542
|
export { callOperations, faceHandler, operationOfCall } from "./tracking.js";
|