@moltzap/client 2026.922.2 → 2026.930.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 (101) hide show
  1. package/README.md +23 -7
  2. package/dist/client-runtime.d.ts.map +1 -1
  3. package/dist/client-runtime.js +28 -11
  4. package/dist/client-runtime.js.map +1 -1
  5. package/dist/contract.d.ts +440 -57
  6. package/dist/contract.d.ts.map +1 -1
  7. package/dist/contract.js +256 -18
  8. package/dist/contract.js.map +1 -1
  9. package/dist/contract.types-check.d.ts +109 -13
  10. package/dist/contract.types-check.d.ts.map +1 -1
  11. package/dist/contract.types-check.js +11 -3
  12. package/dist/contract.types-check.js.map +1 -1
  13. package/dist/daemon/runtime/activation.d.ts +1 -1
  14. package/dist/daemon/runtime/activation.d.ts.map +1 -1
  15. package/dist/daemon/runtime/controller.d.ts +1 -1
  16. package/dist/daemon/runtime/controller.d.ts.map +1 -1
  17. package/dist/daemon/runtime/controller.js +44 -10
  18. package/dist/daemon/runtime/controller.js.map +1 -1
  19. package/dist/daemon/runtime/history-export.d.ts +11 -1
  20. package/dist/daemon/runtime/history-export.d.ts.map +1 -1
  21. package/dist/daemon/runtime/history-export.js +4 -0
  22. package/dist/daemon/runtime/history-export.js.map +1 -1
  23. package/dist/daemon/runtime/index.d.ts.map +1 -1
  24. package/dist/daemon/runtime/index.js +1 -2
  25. package/dist/daemon/runtime/index.js.map +1 -1
  26. package/dist/daemon/runtime/pending-delivery.d.ts +49 -0
  27. package/dist/daemon/runtime/pending-delivery.d.ts.map +1 -0
  28. package/dist/daemon/runtime/pending-delivery.js +115 -0
  29. package/dist/daemon/runtime/pending-delivery.js.map +1 -0
  30. package/dist/daemon/runtime/protocol.d.ts +20 -5
  31. package/dist/daemon/runtime/protocol.d.ts.map +1 -1
  32. package/dist/daemon/runtime/protocol.js +58 -24
  33. package/dist/daemon/runtime/protocol.js.map +1 -1
  34. package/dist/endpoint/addressing/index.d.ts +22 -1
  35. package/dist/endpoint/addressing/index.d.ts.map +1 -1
  36. package/dist/endpoint/addressing/index.js +50 -26
  37. package/dist/endpoint/addressing/index.js.map +1 -1
  38. package/dist/endpoint/collective/operation.d.ts +123 -0
  39. package/dist/endpoint/collective/operation.d.ts.map +1 -0
  40. package/dist/endpoint/collective/operation.js +784 -0
  41. package/dist/endpoint/collective/operation.js.map +1 -0
  42. package/dist/endpoint/collective/shared-answers.d.ts +78 -0
  43. package/dist/endpoint/collective/shared-answers.d.ts.map +1 -0
  44. package/dist/endpoint/collective/shared-answers.js +62 -0
  45. package/dist/endpoint/collective/shared-answers.js.map +1 -0
  46. package/dist/endpoint/collective/validation.d.ts +49 -0
  47. package/dist/endpoint/collective/validation.d.ts.map +1 -0
  48. package/dist/endpoint/collective/validation.js +99 -0
  49. package/dist/endpoint/collective/validation.js.map +1 -0
  50. package/dist/endpoint/collective/wire.d.ts +176 -0
  51. package/dist/endpoint/collective/wire.d.ts.map +1 -0
  52. package/dist/endpoint/collective/wire.js +181 -0
  53. package/dist/endpoint/collective/wire.js.map +1 -0
  54. package/dist/endpoint/engine-durability.d.ts +3 -17
  55. package/dist/endpoint/engine-durability.d.ts.map +1 -1
  56. package/dist/endpoint/engine-durability.js +3 -14
  57. package/dist/endpoint/engine-durability.js.map +1 -1
  58. package/dist/endpoint/engine-send.d.ts +14 -16
  59. package/dist/endpoint/engine-send.d.ts.map +1 -1
  60. package/dist/endpoint/engine-send.js +16 -20
  61. package/dist/endpoint/engine-send.js.map +1 -1
  62. package/dist/endpoint/engine-types.d.ts +32 -15
  63. package/dist/endpoint/engine-types.d.ts.map +1 -1
  64. package/dist/endpoint/engine-types.js +1 -5
  65. package/dist/endpoint/engine-types.js.map +1 -1
  66. package/dist/endpoint/engine.d.ts +1 -1
  67. package/dist/endpoint/engine.d.ts.map +1 -1
  68. package/dist/endpoint/engine.js +17 -14
  69. package/dist/endpoint/engine.js.map +1 -1
  70. package/dist/endpoint/protocol/index.d.ts.map +1 -1
  71. package/dist/endpoint/protocol/index.js +5 -8
  72. package/dist/endpoint/protocol/index.js.map +1 -1
  73. package/dist/endpoint/recovery/index.js +2 -2
  74. package/dist/endpoint/recovery/index.js.map +1 -1
  75. package/dist/endpoint/recovery/reanchor/empty.js +1 -1
  76. package/dist/endpoint/recovery/reanchor/empty.js.map +1 -1
  77. package/dist/endpoint/recovery/store.d.ts +1 -1
  78. package/dist/endpoint/recovery/store.d.ts.map +1 -1
  79. package/dist/endpoint/recovery/store.js +9 -5
  80. package/dist/endpoint/recovery/store.js.map +1 -1
  81. package/dist/endpoint/representation-schemas.d.ts +2 -0
  82. package/dist/endpoint/representation-schemas.d.ts.map +1 -1
  83. package/dist/endpoint/representation-schemas.js +2 -2
  84. package/dist/endpoint/representation-schemas.js.map +1 -1
  85. package/dist/endpoint/representation.d.ts +1 -1
  86. package/dist/endpoint/representation.d.ts.map +1 -1
  87. package/dist/endpoint/representation.js +1 -1
  88. package/dist/endpoint/representation.js.map +1 -1
  89. package/dist/harness-mcp-contract.d.ts +189 -57
  90. package/dist/harness-mcp-contract.d.ts.map +1 -1
  91. package/dist/harness-mcp-contract.js +61 -9
  92. package/dist/harness-mcp-contract.js.map +1 -1
  93. package/dist/harness-mcp-wire.d.ts +3 -3
  94. package/dist/harness-mcp-wire.d.ts.map +1 -1
  95. package/dist/harness-mcp-wire.js +38 -28
  96. package/dist/harness-mcp-wire.js.map +1 -1
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +2 -1
  100. package/dist/index.js.map +1 -1
  101. package/package.json +3 -3
@@ -1,42 +1,58 @@
1
1
  /** @file Protocol acquisition, supervision, and pending-delivery reconciliation. */
2
2
  import { Registry } from "@moltzap/identity/registry";
3
3
  import { Router } from "@moltzap/router";
4
- import { Cause, Deferred, Effect, Scope } from "effect";
4
+ import { Cause, Deferred, Effect, Schema, Scope } from "effect";
5
+ import { AgentAddress } from "../../contract.js";
6
+ import { makeCollectiveOperations, } from "../../endpoint/collective/operation.js";
5
7
  import { decodeOuterBody } from "../../endpoint/representation.js";
6
8
  import { RouterWorkerPayloadInvalidError, } from "../../endpoint/router-worker/index.js";
7
9
  import { DaemonActivationError, DaemonRuntimeError, recoverPinnedSenderCards, } from "./activation.js";
10
+ import { mintLocalDeliveryToken, offerPendingMessages, } from "./pending-delivery.js";
8
11
  const signStructurallyValidAction = () => Effect.succeed("sign");
9
12
  const activationFailure = (reason) => new DaemonActivationError({ reason });
10
13
  const runtimeFailure = (phase) => new DaemonRuntimeError({ phase });
11
14
  const mapWorkerInitializationError = (error) => activationFailure(error._tag === "RouterWorkerTransportError" ? "upstream" : "representation");
12
15
  /**
13
- * Publish newly durable messages while one active native subscriber exists.
16
+ * What one pass reads and changes, from the active protocol and the
17
+ * controller's delivery state. Items are offered only to an attached
18
+ * subscriber.
19
+ */
20
+ const pendingOffer = (environment, protocol) => {
21
+ const { state } = environment;
22
+ const handler = state.subscriptionActive ? state.handler : undefined;
23
+ return {
24
+ engine: protocol.engine,
25
+ classify: protocol.collectives.classify,
26
+ ...(handler === undefined ? {} : { handler }),
27
+ historyExport: environment.historyExport,
28
+ publishedDeliveries: state.publishedDeliveries,
29
+ exportedDeliveries: state.exportedDeliveries,
30
+ classifiedItems: state.classifiedItems,
31
+ };
32
+ };
33
+ /**
34
+ * Classify newly durable deliveries and publish what a subscriber can take.
35
+ * The pass runs with or without a subscriber, so the collective layer
36
+ * consumes protocol posts even while no host is attached.
14
37
  * @param environment Protocol resources and controller-owned delivery state.
15
38
  * @param deliveryGate Serializes pending reads with subscription changes.
16
- * @returns Completion after every currently publishable delivery is offered.
39
+ * @returns Completion after every current delivery is consumed or offered.
17
40
  */
18
41
  export const publishPendingMessages = (environment, deliveryGate) => deliveryGate.withPermits(1)(Effect.suspend(() => {
19
42
  const protocol = environment.state.activeProtocol;
20
- if (!environment.state.subscriptionActive || protocol === undefined) {
43
+ if (protocol === undefined) {
21
44
  return Effect.void;
22
45
  }
23
- return protocol.engine.readPendingMessages().pipe(Effect.flatMap((messages) => Effect.sync(() => {
24
- const handler = environment.state.handler;
25
- if (handler === undefined) {
26
- return;
27
- }
28
- for (const pending of messages) {
29
- if (environment.state.publishedDeliveries.has(pending.deliveryToken)) {
30
- continue;
31
- }
32
- const event = pending;
33
- if (!handler.publish(event)) {
34
- return;
35
- }
36
- environment.state.publishedDeliveries.add(pending.deliveryToken);
37
- }
38
- })), Effect.catchAll(() => Deferred.fail(environment.fatal, runtimeFailure("storage")).pipe(Effect.asVoid)));
46
+ return protocol.engine.readPendingMessages().pipe(Effect.flatMap((messages) => offerPendingMessages(pendingOffer(environment, protocol), messages, environment.state.localItems)), Effect.catchAll(() => Deferred.fail(environment.fatal, runtimeFailure("storage")).pipe(Effect.asVoid)));
39
47
  }));
48
+ /**
49
+ * Queue an item the collective layer emitted and start a publication pass.
50
+ * The pass is forked because the layer can emit from inside one, which holds
51
+ * the delivery gate.
52
+ */
53
+ const emitLocalItem = (environment, reconciler, item) => mintLocalDeliveryToken.pipe(Effect.tap((deliveryToken) => Effect.sync(() => {
54
+ environment.state.localItems.set(deliveryToken, item);
55
+ })), Effect.zipRight(Effect.forkIn(reconciler, environment.daemonScope)), Effect.asVoid);
40
56
  /**
41
57
  * Propagate interruption and convert other background failures to daemon failure.
42
58
  * @param fatal Process-wide failure signal.
@@ -78,7 +94,6 @@ const acquireProtocolEngine = (environment, agentCard, worker) => environment.de
78
94
  store: environment.store,
79
95
  routerWorker: worker,
80
96
  actionPolicy: signStructurallyValidAction,
81
- historyExport: environment.historyExport,
82
97
  })
83
98
  .pipe(Scope.extend(environment.daemonScope), Effect.mapError(mapEngineInitializationError));
84
99
  const checkExistingProtocol = (agentCard, activeProtocol) => {
@@ -91,8 +106,23 @@ const checkExistingProtocol = (agentCard, activeProtocol) => {
91
106
  }
92
107
  return Effect.succeed(true);
93
108
  };
94
- const retainActiveProtocol = (state, protocol) => {
95
- state.activeProtocol = protocol;
109
+ /**
110
+ * The collective layer for the active identity: it certifies posts through
111
+ * the engine and queues the items it emits for the next publication pass.
112
+ */
113
+ const makeProtocolCollectives = (environment, reconciler, agentCard, engine) => makeCollectiveOperations({
114
+ self: Schema.decodeUnknownSync(AgentAddress)(`agent:${agentCard.agentName}`),
115
+ lookupMember: (member) => engine.resolveAddress(member),
116
+ sendPost: (input) => engine.send(input),
117
+ emit: (item) => emitLocalItem(environment, reconciler, item),
118
+ scope: environment.daemonScope,
119
+ });
120
+ /** Hold the active protocol with its collective layer for later operations. */
121
+ const retainActiveProtocol = (environment, reconciler, protocol) => {
122
+ environment.state.activeProtocol = {
123
+ ...protocol,
124
+ collectives: makeProtocolCollectives(environment, reconciler, protocol.agentCard, protocol.engine),
125
+ };
96
126
  };
97
127
  /**
98
128
  * Acquire and supervise the protocol resources for one immutable daemon identity.
@@ -123,7 +153,11 @@ export const initializeProtocol = (environment, activationGate, reconciler, agen
123
153
  publishPending: reconciler,
124
154
  });
125
155
  const engine = yield* acquireProtocolEngine(environment, agentCard, worker);
126
- retainActiveProtocol(environment.state, { agentCard, worker, engine });
156
+ retainActiveProtocol(environment, reconciler, {
157
+ agentCard,
158
+ worker,
159
+ engine,
160
+ });
127
161
  yield* Deferred.succeed(engineReady, engine);
128
162
  yield* superviseBackground(environment, worker.run);
129
163
  yield* superviseBackground(environment, engine.runOutbound);
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/daemon/runtime/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/daemon/runtime/protocol.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAQ9E,OAAO,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAEL,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAGL,+BAA+B,GAGhC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,EAErB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAsD/B,MAAM,2BAA2B,GAAG,GAAG,EAAE,CACvC,MAAM,CAAC,OAAO,CAAoB,MAAM,CAAC,CAAC;AAE5C,MAAM,iBAAiB,GAAG,CACxB,MAAuC,EAChB,EAAE,CAAC,IAAI,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAElE,MAAM,cAAc,GAAG,CACrB,KAAkC,EACd,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE3D,MAAM,4BAA4B,GAAG,CACnC,KAA6D,EACtC,EAAE,CACzB,iBAAiB,CACf,KAAK,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAC5E,CAAC;AAEJ;;;;GAIG;AACH,MAAM,YAAY,GAAG,CACnB,WAAgC,EAChC,QAAwB,EACV,EAAE;IAChB,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ;QACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAAgC,EAChC,YAA8B,EACT,EAAE,CACvB,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CACzB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,oBAAoB,CAClB,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,EACnC,QAAQ,EACR,WAAW,CAAC,KAAK,CAAC,UAAU,CAC7B,CACF,EACD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,MAAM,CACd,CACF,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEJ;;;;GAIG;AACH,MAAM,aAAa,GAAG,CACpB,WAAgC,EAChC,UAA+B,EAC/B,IAAiB,EACI,EAAE,CACvB,sBAAsB,CAAC,IAAI,CACzB,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,EACnE,MAAM,CAAC,MAAM,CACd,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAmD,EACnD,KAAqB,EACI,EAAE;IAC3B,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAgC,EAChC,MAAqC,EACrC,EAAE,CACF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAClD,EACD,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EACtC,MAAM,CAAC,MAAM,CACd,CAAC;AAEJ,MAAM,mBAAmB,GAAG,CAC1B,WAA0C,EAC1C,cAAmC,EACH,EAAE,CAAC,CAAC;IACpC,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACpD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAChD,MAAM,CAAC,IAAI,CAAC,IAAI,+BAA+B,EAAE,CAAC,CACnD,CACF;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CACjC;IACH,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE,CACjC,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,EACjE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CACjC;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC/B,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAChE;IACH,uBAAuB,EAAE,CAAC,QAAQ,EAAE,EAAE,CACpC,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EACpE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CACjC;CACJ,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE,CAClE,KAAK,CAAC,WAAW,CAAC,YAAY;KAC3B,UAAU,CAAC;IACV,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;IACtC,eAAe,EAAE,KAAK,CAAC,SAAS;IAChC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;IAC1C,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB;IAC9D,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;IAC/B,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;CACxE,CAAC;KACD,IAAI,CACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAC3D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EACvD,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAC9C,CAAC;AAEN,MAAM,4BAA4B,GAAG,CACnC,KAAgC,EACT,EAAE,CACzB,iBAAiB,CACf,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAC9D,CAAC;AAEJ,MAAM,qBAAqB,GAAG,CAC5B,WAAgC,EAChC,SAA4B,EAC5B,MAAoB,EACpB,EAAE,CACF,WAAW,CAAC,YAAY;KACrB,UAAU,CAAC;IACV,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB;IACxD,uBAAuB,EACrB,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,uBAAuB;IAC7D,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,2BAA2B;CAC1C,CAAC;KACD,IAAI,CACH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EACrC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAC9C,CAAC;AAEN,MAAM,qBAAqB,GAAG,CAC5B,SAA4B,EAC5B,cAA+B,EACgB,EAAE;IACjD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IACE,cAAc,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;QACtD,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAC9D,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAC9B,WAAgC,EAChC,UAA+B,EAC/B,SAA4B,EAC5B,MAAsB,EACA,EAAE,CACxB,wBAAwB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAC1C,SAAS,SAAS,CAAC,SAAS,EAAE,CAC/B;IACD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC;IAC5D,KAAK,EAAE,WAAW,CAAC,WAAW;CAC/B,CAAC,CAAC;AAEL,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,CAC3B,WAAgC,EAChC,UAA+B,EAC/B,QAA6C,EACvC,EAAE;IACR,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG;QACjC,GAAG,QAAQ;QACX,WAAW,EAAE,uBAAuB,CAClC,WAAW,EACX,UAAU,EACV,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,MAAM,CAChB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,WAAgC,EAChC,cAAgC,EAChC,UAA+B,EAC/B,SAA4B,EACgB,EAAE,CAC9C,cAAc;KACX,WAAW,CAAC,CAAC,CAAC,CACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAChD,SAAS,EACT,WAAW,CAAC,KAAK,CAAC,cAAc,CACjC,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,wBAAwB,CAAC;QACxD,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,cAAc,EAAE,SAAS;QACzB,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAkB,CAAC;IAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;QAC1C,WAAW;QACX,SAAS;QACT,iBAAiB;QACjB,WAAW;QACX,cAAc,EAAE,UAAU;KAC3B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,qBAAqB,CACzC,WAAW,EACX,SAAS,EACT,MAAM,CACP,CAAC;IACF,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE;QAC5C,SAAS;QACT,MAAM;QACN,MAAM;KACP,CAAC,CAAC;IACH,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7C,KAAK,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,KAAK,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CACpB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CACrD,CAAC;AACJ,CAAC,CAAC,CACH;KACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /** @file Private address resolution from runtime names to immutable cards. */
2
2
  import type { Registry } from "@moltzap/identity/registry";
3
- import { type VerifiedAgentCard } from "@moltzap/identity";
3
+ import { AgentName, type VerifiedAgentCard } from "@moltzap/identity";
4
4
  import { type Context, Effect } from "effect";
5
5
  import { AgentAddress, GroupAddress, type MessageAddressInput, SendError } from "../../contract.js";
6
6
  /** Minimal Registry capability required by address resolution. */
@@ -35,5 +35,26 @@ interface ResolveMessageAddressInput {
35
35
  * @returns The canonical runtime address and AgentId-ordered verified cards.
36
36
  */
37
37
  export declare function resolveMessageAddress(input: ResolveMessageAddressInput): Effect.Effect<ResolvedMessageAddress, SendError>;
38
+ /** A destination in canonical form, before any Registry lookup. */
39
+ export type CanonicalMessageAddress = {
40
+ readonly kind: "direct";
41
+ readonly address: AgentAddress;
42
+ readonly remoteName: AgentName;
43
+ } | {
44
+ readonly kind: "group";
45
+ readonly address: GroupAddress;
46
+ readonly memberNames: readonly AgentName[];
47
+ };
48
+ /**
49
+ * Put one destination in canonical form, the rule every send shares. An
50
+ * `agent:` address names one other agent. A `group:` address names each agent
51
+ * once; the local agent is added when absent, and the complete group has 3 to
52
+ * 32 members in unsigned ASCII name order.
53
+ * @param to The validated destination input.
54
+ * @param localAgentName The local agent's Registry name.
55
+ * @returns The canonical address with its names, local agent included for a
56
+ * group, or `invalid-address` or `membership-invalid`.
57
+ */
58
+ export declare function canonicalMessageAddress(to: MessageAddressInput, localAgentName: string): Effect.Effect<CanonicalMessageAddress, SendError>;
38
59
  export {};
39
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/endpoint/addressing/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,mBAAmB,EACxB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAO3B,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,QAAQ,CAAC,EACpC,QAAQ,CACT,CAAC;AAEF,kEAAkE;AAClE,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;CACvE;AAED,uEAAuE;AACvE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC7B,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,GAAG,iBAAiB,EAAE;KACvB,CAAC;CACH;AAED,8EAA8E;AAC9E,MAAM,MAAM,sBAAsB,GAC9B,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,UAAU,0BAA0B;IAClC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAIlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/endpoint/addressing/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,mBAAmB,EACxB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAO3B,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,QAAQ,CAAC,EACpC,QAAQ,CACT,CAAC;AAEF,kEAAkE;AAClE,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;CACvE;AAED,uEAAuE;AACvE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC7B,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,GAAG,iBAAiB,EAAE;KACvB,CAAC;CACH;AAED,8EAA8E;AAC9E,MAAM,MAAM,sBAAsB,GAC9B,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,UAAU,0BAA0B;IAClC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC,CASlD;AAED,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;CAChC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;CAC5C,CAAC;AAEN;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,mBAAmB,EACvB,cAAc,EAAE,MAAM,GACrB,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAInD"}
@@ -12,9 +12,24 @@ const MAXIMUM_GROUP_MEMBERS = 32;
12
12
  * @returns The canonical runtime address and AgentId-ordered verified cards.
13
13
  */
14
14
  export function resolveMessageAddress(input) {
15
- return input.to.startsWith(AGENT_ADDRESS_PREFIX)
16
- ? resolveDirect(input)
17
- : resolveGroup(input);
15
+ return canonicalMessageAddress(input.to, input.localAgentCard.agentName).pipe(Effect.flatMap((canonical) => canonical.kind === "direct"
16
+ ? resolveDirect(input, canonical)
17
+ : resolveGroup(input, canonical)));
18
+ }
19
+ /**
20
+ * Put one destination in canonical form, the rule every send shares. An
21
+ * `agent:` address names one other agent. A `group:` address names each agent
22
+ * once; the local agent is added when absent, and the complete group has 3 to
23
+ * 32 members in unsigned ASCII name order.
24
+ * @param to The validated destination input.
25
+ * @param localAgentName The local agent's Registry name.
26
+ * @returns The canonical address with its names, local agent included for a
27
+ * group, or `invalid-address` or `membership-invalid`.
28
+ */
29
+ export function canonicalMessageAddress(to, localAgentName) {
30
+ return to.startsWith(AGENT_ADDRESS_PREFIX)
31
+ ? canonicalDirect(to, localAgentName)
32
+ : canonicalGroup(to, localAgentName);
18
33
  }
19
34
  function invalidAddress() {
20
35
  return new SendError({ reason: "invalid-address" });
@@ -57,41 +72,53 @@ function lookupCard(registry, agentName) {
57
72
  : Effect.fail(new SendError({ reason: "unknown-agent" }));
58
73
  }));
59
74
  }
60
- function resolveDirect(input) {
75
+ function canonicalDirect(to, localAgentName) {
76
+ return Effect.gen(function* () {
77
+ const remoteName = yield* decodeAgentName(to.slice(AGENT_ADDRESS_PREFIX.length));
78
+ if (remoteName === localAgentName) {
79
+ return yield* invalidMembership();
80
+ }
81
+ const address = yield* Schema.decodeUnknown(AgentAddress)(to).pipe(Effect.mapError(invalidAddress));
82
+ return { kind: "direct", address, remoteName };
83
+ });
84
+ }
85
+ function canonicalGroup(to, localAgentName) {
61
86
  return Effect.gen(function* () {
62
- const agentName = yield* decodeAgentName(input.to.slice(AGENT_ADDRESS_PREFIX.length));
63
- if (agentName === input.localAgentCard.agentName) {
87
+ const explicitNames = yield* Effect.forEach(to.slice(GROUP_ADDRESS_PREFIX.length).split(","), decodeAgentName, { concurrency: 1 });
88
+ if (new Set(explicitNames).size !== explicitNames.length) {
64
89
  return yield* invalidMembership();
65
90
  }
66
- const remoteCard = yield* lookupCard(input.registry, agentName);
91
+ const localName = yield* decodeAgentName(localAgentName);
92
+ const memberNames = explicitNames.includes(localName)
93
+ ? explicitNames.slice()
94
+ : [...explicitNames, localName];
95
+ if (memberNames.length < 3 || memberNames.length > MAXIMUM_GROUP_MEMBERS) {
96
+ return yield* invalidMembership();
97
+ }
98
+ memberNames.sort(compareAscii);
99
+ const address = yield* Schema.decodeUnknown(GroupAddress)(`${GROUP_ADDRESS_PREFIX}${memberNames.join(",")}`).pipe(Effect.mapError(invalidAddress));
100
+ return { kind: "group", address, memberNames };
101
+ });
102
+ }
103
+ function resolveDirect(input, canonical) {
104
+ return Effect.gen(function* () {
105
+ const remoteCard = yield* lookupCard(input.registry, canonical.remoteName);
67
106
  const ordered = orderMemberCards([input.localAgentCard, remoteCard]);
68
107
  const first = ordered[0];
69
108
  const second = ordered[1];
70
109
  if (first === undefined || second === undefined) {
71
110
  return yield* Effect.dieMessage("direct membership lost a member");
72
111
  }
73
- const address = yield* Schema.decodeUnknown(AgentAddress)(input.to).pipe(Effect.mapError(invalidAddress));
74
112
  return {
75
113
  kind: "direct",
76
- address,
114
+ address: canonical.address,
77
115
  memberCards: [first, second],
78
116
  };
79
117
  });
80
118
  }
81
- function resolveGroup(input) {
119
+ function resolveGroup(input, canonical) {
82
120
  return Effect.gen(function* () {
83
- const explicitNames = yield* Effect.forEach(input.to.slice(GROUP_ADDRESS_PREFIX.length).split(","), decodeAgentName, { concurrency: 1 });
84
- if (new Set(explicitNames).size !== explicitNames.length) {
85
- return yield* invalidMembership();
86
- }
87
- const completeNames = explicitNames.includes(input.localAgentCard.agentName)
88
- ? explicitNames
89
- : [...explicitNames, input.localAgentCard.agentName];
90
- if (completeNames.length < 3 ||
91
- completeNames.length > MAXIMUM_GROUP_MEMBERS) {
92
- return yield* invalidMembership();
93
- }
94
- const resolved = yield* Effect.forEach(completeNames, (agentName) => agentName === input.localAgentCard.agentName
121
+ const resolved = yield* Effect.forEach(canonical.memberNames, (agentName) => agentName === input.localAgentCard.agentName
95
122
  ? Effect.succeed(input.localAgentCard)
96
123
  : lookupCard(input.registry, agentName), { concurrency: 1 });
97
124
  const ordered = orderMemberCards(resolved);
@@ -101,12 +128,9 @@ function resolveGroup(input) {
101
128
  if (first === undefined || second === undefined || third === undefined) {
102
129
  return yield* Effect.dieMessage("group membership lost a member");
103
130
  }
104
- const canonicalNames = completeNames.slice();
105
- canonicalNames.sort(compareAscii);
106
- const address = yield* Schema.decodeUnknown(GroupAddress)(`${GROUP_ADDRESS_PREFIX}${canonicalNames.join(",")}`).pipe(Effect.mapError(invalidAddress));
107
131
  return {
108
132
  kind: "group",
109
- address,
133
+ address: canonical.address,
110
134
  memberCards: [first, second, third, ...ordered.slice(3)],
111
135
  };
112
136
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/endpoint/addressing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/endpoint/addressing/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,SAAS,EAA0B,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAgB,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,YAAY,EAEZ,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AACtC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AACtC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAsCjC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAiC;IAEjC,OAAO,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3E,MAAM,CAAC,OAAO,CACZ,CAAC,SAAS,EAAoD,EAAE,CAC9D,SAAS,CAAC,IAAI,KAAK,QAAQ;QACzB,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;QACjC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CACrC,CACF,CAAC;AACJ,CAAC;AAeD;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAuB,EACvB,cAAsB;IAEtB,OAAO,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC;QACxC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,CAAC;QACrC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,OAAO,IAAI,SAAS,CAAC;QACnB,MAAM,EACJ,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACnC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,qBAAqB;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAmC;IAEnC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,QAA6B,EAC7B,SAAoB;IAEpB,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACnC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACxB,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS;YAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,EAAuB,EACvB,cAAsB;IAEtB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAe,CACvC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACtC,CAAC;QACF,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAChE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAChC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,EAAuB,EACvB,cAAsB;IAEtB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACzC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAChD,eAAe,EACf,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;QACF,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;YACvB,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC;QAClC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CACvD,GAAG,oBAAoB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAClD,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,KAAiC,EACjC,SAAwE;IAExE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,KAAiC,EACjC,SAAuE;IAEvE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACpC,SAAS,CAAC,WAAW,EACrB,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC,SAAS;YAC1C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YACtC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC3C,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;QACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @file Collective operations over the post envelope.
3
+ *
4
+ * The daemon holds one `CollectiveOperations` per active identity. It turns
5
+ * each send into the posts its operation certifies and each certified remote
6
+ * post into the item the subscriber receives, or consumes it. Every post an
7
+ * endpoint authors carries its operation as an explicit collective part, so
8
+ * each certified post says which operation it belongs to; a post without a
9
+ * collective part reads as multicast, the operation an omitted `op` names.
10
+ *
11
+ * Collective state lives in daemon memory: an operation open at a daemon
12
+ * restart is lost, and a request whose delivery the member already
13
+ * acknowledged can no longer be answered after one.
14
+ *
15
+ * ```mermaid
16
+ * sequenceDiagram
17
+ * participant RM as Requester host
18
+ * participant RE as Requester endpoint
19
+ * participant ME as Member endpoint
20
+ * participant MM as Member host
21
+ * RM->>RE: send gather to, question, deadline, schema
22
+ * RE->>RE: validate schema, mint id&lt;br>deadline = now + duration
23
+ * RE->>ME: one request post per member
24
+ * alt a request post is refused
25
+ * RE-->>RM: error naming each unreachable member
26
+ * else every request post accepted
27
+ * RE-->>RM: operation id
28
+ * end
29
+ * ME->>MM: collectiveRequest item
30
+ * MM->>ME: send collectiveResponse id, action, content
31
+ * ME->>ME: validate content against the stored schema
32
+ * ME->>RE: response post in the direct conversation
33
+ * RE->>RE: consume, validate and record the answer
34
+ * Note over RE: complete when every member has an outcome&lt;br>or at the deadline
35
+ * RE->>RM: collectiveResult item
36
+ * ```
37
+ *
38
+ * An all_gather asks a group in its own conversation. Every member endpoint
39
+ * consumes the answers it sees there, so no model sees a peer's answer before
40
+ * the close, and builds its result from exactly the answers the requester's
41
+ * close lists.
42
+ *
43
+ * ```mermaid
44
+ * sequenceDiagram
45
+ * participant RM as Requester host
46
+ * participant RE as Requester endpoint
47
+ * participant ME as Member endpoints
48
+ * participant MM as Member hosts
49
+ * RM->>RE: send all_gather to group, question, deadline, schema
50
+ * RE->>ME: one request post to the group
51
+ * alt the group post is refused or not certified in time
52
+ * RE-->>RM: error naming each unreachable member
53
+ * else request post certified
54
+ * RE-->>RM: operation id
55
+ * end
56
+ * ME->>MM: collectiveRequest item
57
+ * MM->>ME: send collectiveResponse id, action, content
58
+ * ME->>ME: validate content against the stored schema
59
+ * ME->>RE: response post to the group
60
+ * ME->>ME: peer response posts, consumed and recorded by record hash
61
+ * Note over RE: complete when every member has an outcome&lt;br>or at the deadline
62
+ * RE->>ME: close post listing the counted answers' record hashes
63
+ * RE->>RM: collectiveResult item once the close is certified
64
+ * ME->>ME: build the result from exactly the listed answers
65
+ * ME->>MM: collectiveResult item, the same outcomes
66
+ * ```
67
+ */
68
+ import { Duration, Effect, Option, type Scope } from "effect";
69
+ import type { EngineSendInput, EngineSentPost } from "../engine-types.js";
70
+ import type { RecordHash } from "../representation.js";
71
+ import { AgentAddress, CollectiveError, type FailureDelivery, type InboundItem, type InboundMessage, SendError, type SendInput, type SendResult } from "../../contract.js";
72
+ /** What the collective layer needs from the daemon around it. */
73
+ export interface CollectivePorts {
74
+ /** The local agent: a group gather or all_gather asks every member but this one. */
75
+ readonly self: AgentAddress;
76
+ /**
77
+ * Resolve one member's Registry card without sending. A refused all_gather
78
+ * group post names only the members that fail this lookup.
79
+ */
80
+ readonly lookupMember: (member: AgentAddress) => Effect.Effect<void, SendError>;
81
+ /** Certify one post and complete once it is stored locally. */
82
+ readonly sendPost: (input: EngineSendInput) => Effect.Effect<EngineSentPost, SendError>;
83
+ /** Queue an item the layer emits itself: a result or a failure. */
84
+ readonly emit: (item: InboundItem) => Effect.Effect<void>;
85
+ /** Owns deadline timers and request sends that outlive their send call. */
86
+ readonly scope: Scope.Scope;
87
+ /** Overrides `REQUEST_SEND_WAIT`; tests bound the wait. */
88
+ readonly requestSendWait?: Duration.Duration;
89
+ }
90
+ /** One certified remote post with the hash of its certified record. */
91
+ interface CertifiedPost {
92
+ readonly message: InboundMessage;
93
+ readonly recordHash: RecordHash;
94
+ }
95
+ /** One completed send: the posts certified by its return, and a collective id. */
96
+ interface CollectiveSendOutcome extends SendResult {
97
+ readonly postIds: ReadonlyArray<EngineSentPost["postId"]>;
98
+ }
99
+ /** The daemon's collective layer for one active identity. */
100
+ export interface CollectiveOperations {
101
+ /**
102
+ * Perform one send. A gather completes once every request post is accepted
103
+ * and fails naming each member whose post was refused; an all_gather
104
+ * completes once its group post is certified. A response is validated
105
+ * against its request's schema and addressed to the request's conversation.
106
+ */
107
+ readonly send: (input: SendInput, failureDelivery: FailureDelivery) => Effect.Effect<CollectiveSendOutcome, SendError | CollectiveError>;
108
+ /**
109
+ * Classify one certified remote post. Answers are recorded and consumed,
110
+ * every other protocol post is consumed, and each remaining post becomes
111
+ * one item. Classifying a post again yields the same result, so the daemon
112
+ * may run it on every pass over pending deliveries.
113
+ */
114
+ readonly classify: (post: CertifiedPost) => Effect.Effect<Option.Option<InboundItem>>;
115
+ }
116
+ /**
117
+ * Build the collective layer for one active identity.
118
+ * @param ports The daemon's post sending, item queue, scope and identity.
119
+ * @returns Send and classification over state held in daemon memory.
120
+ */
121
+ export declare const makeCollectiveOperations: (ports: CollectivePorts) => CollectiveOperations;
122
+ export {};
123
+ //# sourceMappingURL=operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/endpoint/collective/operation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,OAAO,EAEL,QAAQ,EACR,MAAM,EAKN,MAAM,EAGN,KAAK,KAAK,EACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,YAAY,EACZ,eAAe,EAMf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EAKnB,SAAS,EACT,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAoF3B,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,CACrB,MAAM,EAAE,YAAY,KACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,eAAe,KACnB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC9C,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC9C;AAED,uEAAuE;AACvE,UAAU,aAAa;IACrB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,kFAAkF;AAClF,UAAU,qBAAsB,SAAQ,UAAU;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC3D;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,CACb,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,eAAe,KAC7B,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,GAAG,eAAe,CAAC,CAAC;IACvE;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,IAAI,EAAE,aAAa,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;CAChD;AAsED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,UAC5B,eAAe,KACrB,oBAiBF,CAAC"}