@cotal-ai/core 0.18.0 → 0.19.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 (93) hide show
  1. package/dist/acls.d.ts +0 -7
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +10 -7
  4. package/dist/acls.js.map +1 -1
  5. package/dist/agui-kind.d.ts +71 -0
  6. package/dist/agui-kind.d.ts.map +1 -0
  7. package/dist/agui-kind.js +95 -0
  8. package/dist/agui-kind.js.map +1 -0
  9. package/dist/endpoint-action.d.ts +3 -3
  10. package/dist/endpoint-action.js +4 -4
  11. package/dist/endpoint-action.js.map +1 -1
  12. package/dist/endpoint-binding.d.ts +48 -5
  13. package/dist/endpoint-binding.d.ts.map +1 -1
  14. package/dist/endpoint-binding.js +82 -6
  15. package/dist/endpoint-binding.js.map +1 -1
  16. package/dist/endpoint-cluster.d.ts +20 -0
  17. package/dist/endpoint-cluster.d.ts.map +1 -1
  18. package/dist/endpoint-cluster.js +47 -0
  19. package/dist/endpoint-cluster.js.map +1 -1
  20. package/dist/endpoint-effects.d.ts +73 -0
  21. package/dist/endpoint-effects.d.ts.map +1 -0
  22. package/dist/endpoint-effects.js +46 -0
  23. package/dist/endpoint-effects.js.map +1 -0
  24. package/dist/endpoint-envelope.d.ts +32 -1
  25. package/dist/endpoint-envelope.d.ts.map +1 -1
  26. package/dist/endpoint-envelope.js +56 -2
  27. package/dist/endpoint-envelope.js.map +1 -1
  28. package/dist/endpoint-epname.d.ts +62 -0
  29. package/dist/endpoint-epname.d.ts.map +1 -0
  30. package/dist/endpoint-epname.js +273 -0
  31. package/dist/endpoint-epname.js.map +1 -0
  32. package/dist/endpoint-error.d.ts +155 -1
  33. package/dist/endpoint-error.d.ts.map +1 -1
  34. package/dist/endpoint-error.js +114 -2
  35. package/dist/endpoint-error.js.map +1 -1
  36. package/dist/endpoint-goaleff.d.ts +56 -0
  37. package/dist/endpoint-goaleff.d.ts.map +1 -0
  38. package/dist/endpoint-goaleff.js +212 -0
  39. package/dist/endpoint-goaleff.js.map +1 -0
  40. package/dist/endpoint-grants.d.ts +31 -0
  41. package/dist/endpoint-grants.d.ts.map +1 -1
  42. package/dist/endpoint-grants.js +47 -0
  43. package/dist/endpoint-grants.js.map +1 -1
  44. package/dist/endpoint-invoke.d.ts +1 -1
  45. package/dist/endpoint-invoke.d.ts.map +1 -1
  46. package/dist/endpoint-invoke.js +89 -7
  47. package/dist/endpoint-invoke.js.map +1 -1
  48. package/dist/endpoint-journal.d.ts +103 -0
  49. package/dist/endpoint-journal.d.ts.map +1 -1
  50. package/dist/endpoint-journal.js +290 -0
  51. package/dist/endpoint-journal.js.map +1 -1
  52. package/dist/endpoint-records.d.ts.map +1 -1
  53. package/dist/endpoint-records.js +37 -0
  54. package/dist/endpoint-records.js.map +1 -1
  55. package/dist/endpoint-serve.d.ts.map +1 -1
  56. package/dist/endpoint-serve.js +45 -1
  57. package/dist/endpoint-serve.js.map +1 -1
  58. package/dist/endpoint-verbs.d.ts +12 -3
  59. package/dist/endpoint-verbs.d.ts.map +1 -1
  60. package/dist/endpoint-verbs.js +113 -19
  61. package/dist/endpoint-verbs.js.map +1 -1
  62. package/dist/endpoint.d.ts +149 -6
  63. package/dist/endpoint.d.ts.map +1 -1
  64. package/dist/endpoint.js +330 -14
  65. package/dist/endpoint.js.map +1 -1
  66. package/dist/event-channel.d.ts +107 -0
  67. package/dist/event-channel.d.ts.map +1 -0
  68. package/dist/event-channel.js +139 -0
  69. package/dist/event-channel.js.map +1 -0
  70. package/dist/index.d.ts +5 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +5 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/membership-feed.d.ts.map +1 -1
  75. package/dist/membership-feed.js +35 -12
  76. package/dist/membership-feed.js.map +1 -1
  77. package/dist/parts.d.ts +29 -5
  78. package/dist/parts.d.ts.map +1 -1
  79. package/dist/parts.js +46 -3
  80. package/dist/parts.js.map +1 -1
  81. package/dist/provision.d.ts +1 -1
  82. package/dist/resolve.d.ts.map +1 -1
  83. package/dist/resolve.js +38 -0
  84. package/dist/resolve.js.map +1 -1
  85. package/dist/streams.d.ts +27 -3
  86. package/dist/streams.d.ts.map +1 -1
  87. package/dist/streams.js +28 -4
  88. package/dist/streams.js.map +1 -1
  89. package/dist/subjects.d.ts +42 -0
  90. package/dist/subjects.d.ts.map +1 -1
  91. package/dist/subjects.js +117 -0
  92. package/dist/subjects.js.map +1 -1
  93. package/package.json +5 -2
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The one place the `events.` convention is spelled.
3
+ *
4
+ * {@link eventChannel} and {@link eventChannelPrincipal} both read it, which is the only reason the
5
+ * constructor and the classifier are allowed to be two functions.
6
+ */
7
+ export declare const EVENT_CHANNEL_PREFIX = "events.";
8
+ /**
9
+ * The event channel for a principal: `events.<owner>.<actor>`.
10
+ *
11
+ * THE KEY IS THE PRINCIPAL BECAUSE THE DISPLAY NAME IS NOT AN IDENTITY. An earlier version took a
12
+ * name and reduced it to `[a-z0-9_-]`, which FUSED distinct principals onto one channel:
13
+ * `assertValidName` deliberately permits internal spaces and dots (human display names like
14
+ * "Ada Lovelace"), so `Alice Bob`, `Alice.Bob`, `alice bob` and `alice-bob` all collapsed to
15
+ * `events.alice-bob`, and case-folding collapsed `Alice` onto `alice` besides. Eight valid distinct
16
+ * names measured onto three channels. That was an ISOLATION defect rather than a cosmetic one: the
17
+ * publish grant is minted FROM this value, so two distinct principals received the same grant and
18
+ * published to the same subject.
19
+ *
20
+ * The name-keyed version answered that with a sanitiser plus a truncated digest, and could therefore
21
+ * only ever claim COLLISION RESISTANCE, a defence that itself shipped two constructible collisions.
22
+ * Keyed on the principal there is no lossy transform to defend: {@link assertValidOwnerToken} is
23
+ * `[A-Za-z0-9_]+` and FAILS LOUD rather than rewriting, and `.` separates two tokens that cannot
24
+ * contain one. Distinct principals give distinct channels, injective by construction rather than by
25
+ * digest length.
26
+ *
27
+ * THE DOT FORM COSTS TWO SEGMENTS, deliberately. `principalKey().key` is `<owner>.<actor>`, so a
28
+ * channel is three tokens and `events.<owner>.>` is expressible and means OWNER-WIDE: every actor
29
+ * under one owner, not one agent's sessions. The single-token name form (`<owner>-<actor>`) would
30
+ * avoid that, but the dot form is the canonical serialization every authority enforcing per-agent
31
+ * grants already checks against, and a second encoding of a principal is the drift this design
32
+ * refuses everywhere else.
33
+ *
34
+ * Validation is `principalKey`'s own, reused rather than re-implemented: this function derives an
35
+ * AUTHORIZATION value and must not depend on a caller having validated first.
36
+ *
37
+ * @throws via {@link assertValidOwnerToken} on a token outside `[A-Za-z0-9_]+`. A caller holding
38
+ * untrusted input wants {@link eventChannelPrincipal}, which answers with `null`.
39
+ */
40
+ export declare function eventChannel(principal: {
41
+ owner: string;
42
+ actor: string;
43
+ }): string;
44
+ /**
45
+ * The principal an event channel names, or `null` if the string does not name one.
46
+ *
47
+ * THIS IS A FULL DERIVATION, NOT A PREFIX TEST, AND THAT IS THE WHOLE POINT OF THE FUNCTION. The
48
+ * classifier it replaces asked `channel.startsWith("events.")` and documented the gap as a known
49
+ * limit: any string beginning with those seven characters classified as an event channel. The limit
50
+ * was not harmless in the direction the comment argued. It reasoned that a MALFORMED publisher
51
+ * should stay visible to a filter, but the cost lands on the other side: `assertValidName` permits a
52
+ * dot inside a display name and nothing anywhere reserves the `events.` prefix, so an ordinary chat
53
+ * channel a human called `events.standup` was classified as machine traffic and swept out of the
54
+ * chat pane. A person's messages disappearing from the view they were sent to is a silent loss, and
55
+ * it is exactly the failure this lane exists to remove.
56
+ *
57
+ * The derivation fails the other way, which is the correct direction: a string that does not resolve
58
+ * to a principal is NOT an event channel, so a malformed `events.` name stays in the chat view where
59
+ * a reader can see that something is publishing nonsense. A wrong answer that is visible beats a
60
+ * wrong answer that is quiet.
61
+ *
62
+ * WHAT IT STILL CANNOT SEPARATE, STATED RATHER THAN LEFT FOR A READER TO DISCOVER. Nothing reserves
63
+ * the `events.` prefix, so a human chat channel whose remainder happens to BE principal-shaped is
64
+ * indistinguishable from an agent's stream: `events.team.standup` classifies as an event channel and
65
+ * always will, because `team.standup` is a well-formed principal key and this function has no other
66
+ * evidence to weigh. The derivation narrows the collision rather than closing it. Measured, the
67
+ * narrowing is real and one-directional: `assertValidChannel` admits `-` in a segment and
68
+ * {@link assertValidOwnerToken} does not, and a principal key is exactly two segments, so
69
+ * `events.standup`, `events.my-team.standup` and `events.a.b.c` all return to the chat pane where
70
+ * the prefix test had taken them. Only the exactly-two-underscore-or-alphanumeric-segment case
71
+ * remains. Closing it entirely means reserving the prefix on the wire, which is a change to the
72
+ * normative contract and is deliberately not made here.
73
+ *
74
+ * IT IS THE CONSTRUCTOR'S INVERSE, EXECUTED, not a second expression that resembles it. The parse is
75
+ * checked by rebuilding the name with {@link eventChannel} and comparing. That comparison is
76
+ * currently always true, and it is not decoration: it is the assertion that the two functions still
77
+ * agree, evaluated on every classification rather than argued for in a comment. A change to how the
78
+ * name is formed that forgot this file would be caught by it.
79
+ *
80
+ * IT CANNOT THROW, and that is a property of the order rather than a promise. {@link parsePrincipalKey}
81
+ * admits exactly `[A-Za-z0-9_]+` on both sides of the first dot, which is character for character
82
+ * what {@link assertValidOwnerToken} admits, so by the time {@link eventChannel} is called its
83
+ * refusal is unreachable. The equivalence of those two alphabets is asserted at the boundary
84
+ * characters by the suite rather than assumed here, because it is the load-bearing step and it is
85
+ * one narrowing edit away from being false. No `try` swallows the refusal: a throw arriving here
86
+ * would mean the constructor and the parser had diverged, and hiding that would turn a loud
87
+ * contradiction into a channel silently reclassified as chat.
88
+ *
89
+ * THE SESSION-SCOPED FORM IS DELIBERATELY NOT RECOGNISED. `events.<owner>.<actor>.<session>` is a
90
+ * planned later step, and nothing mints a grant for it or emits on one today. It parses to `null`
91
+ * here, because a classifier that accepts a shape no producer writes is a claim no test can hold up.
92
+ * The commit that starts emitting on a sub-channel is the commit that widens this, and until then
93
+ * the failure if someone forgets is event traffic appearing in the chat pane, which is visible.
94
+ */
95
+ export declare function eventChannelPrincipal(channel: unknown): {
96
+ owner: string;
97
+ actor: string;
98
+ } | null;
99
+ /**
100
+ * Whether a channel name is an agent's structured-event channel rather than ordinary chat.
101
+ *
102
+ * The predicate a display filter wants, over {@link eventChannelPrincipal}'s derivation. It takes
103
+ * `unknown` and means it: a surface classifies whatever its message carried, and a `channel` field
104
+ * is absent on a direct message and on an anycast.
105
+ */
106
+ export declare function isEventChannel(channel: unknown): boolean;
107
+ //# sourceMappingURL=event-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-channel.d.ts","sourceRoot":"","sources":["../src/event-channel.ts"],"names":[],"mappings":"AA4BA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEhF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK/F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAExD"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * The per-agent EVENT channel: how its name is FORMED, and how one is RECOGNISED.
3
+ *
4
+ * WHY THIS IS IN CORE, beside `agui-kind.ts`, and not in the connector that emits on it. The same
5
+ * test `agui-kind.ts` applies to the frame's identity applies here: could one adapter change this
6
+ * while the others are unaffected? It could not. Every connector publishes to this name, a grant is
7
+ * minted from the same value, and a reader on the other side of the wire has to recognise it without
8
+ * knowing which adapter produced it. A shape all adapters must agree on is a protocol shape.
9
+ *
10
+ * The direct evidence is the READER. `cotal console`'s mesh view and the dashboard classify live
11
+ * traffic to keep an agent's event stream out of the chat pane, and neither one imports a connector:
12
+ * `bin/run.ts` loads connectors as removable, lazily-materialized `cotal ext` plugins, so a
13
+ * classifier living in `connector-core` is not merely inconvenient for a console, it is ABSENT from
14
+ * the process that needs it. The alternative every consumer reached for instead was re-spelling
15
+ * `events.` locally, which is one more copy of a convention with nothing recomputing that the copies
16
+ * agree.
17
+ *
18
+ * NAMING AND CLASSIFICATION ONLY, AND THAT LINE IS DELIBERATE. What an event channel CARRIES, when
19
+ * it is written, and who may write it all stay in `connector-core`: the emitter, the write-ahead
20
+ * log, the durable source, the ephemeral-identity refusal, and the display-name resolver, which
21
+ * needs presence records core has no business reading. Core learns the name and the predicate,
22
+ * because those are what a reader needs, and nothing beyond them.
23
+ *
24
+ * CORE GAINS NO DEPENDENCY FOR THIS. Both halves are built out of `subjects.ts`, which is already
25
+ * here: {@link principalKey} forms the name and {@link parsePrincipalKey} takes it apart.
26
+ */
27
+ import { principalKey, parsePrincipalKey } from "./subjects.js";
28
+ /**
29
+ * The one place the `events.` convention is spelled.
30
+ *
31
+ * {@link eventChannel} and {@link eventChannelPrincipal} both read it, which is the only reason the
32
+ * constructor and the classifier are allowed to be two functions.
33
+ */
34
+ export const EVENT_CHANNEL_PREFIX = "events.";
35
+ /**
36
+ * The event channel for a principal: `events.<owner>.<actor>`.
37
+ *
38
+ * THE KEY IS THE PRINCIPAL BECAUSE THE DISPLAY NAME IS NOT AN IDENTITY. An earlier version took a
39
+ * name and reduced it to `[a-z0-9_-]`, which FUSED distinct principals onto one channel:
40
+ * `assertValidName` deliberately permits internal spaces and dots (human display names like
41
+ * "Ada Lovelace"), so `Alice Bob`, `Alice.Bob`, `alice bob` and `alice-bob` all collapsed to
42
+ * `events.alice-bob`, and case-folding collapsed `Alice` onto `alice` besides. Eight valid distinct
43
+ * names measured onto three channels. That was an ISOLATION defect rather than a cosmetic one: the
44
+ * publish grant is minted FROM this value, so two distinct principals received the same grant and
45
+ * published to the same subject.
46
+ *
47
+ * The name-keyed version answered that with a sanitiser plus a truncated digest, and could therefore
48
+ * only ever claim COLLISION RESISTANCE, a defence that itself shipped two constructible collisions.
49
+ * Keyed on the principal there is no lossy transform to defend: {@link assertValidOwnerToken} is
50
+ * `[A-Za-z0-9_]+` and FAILS LOUD rather than rewriting, and `.` separates two tokens that cannot
51
+ * contain one. Distinct principals give distinct channels, injective by construction rather than by
52
+ * digest length.
53
+ *
54
+ * THE DOT FORM COSTS TWO SEGMENTS, deliberately. `principalKey().key` is `<owner>.<actor>`, so a
55
+ * channel is three tokens and `events.<owner>.>` is expressible and means OWNER-WIDE: every actor
56
+ * under one owner, not one agent's sessions. The single-token name form (`<owner>-<actor>`) would
57
+ * avoid that, but the dot form is the canonical serialization every authority enforcing per-agent
58
+ * grants already checks against, and a second encoding of a principal is the drift this design
59
+ * refuses everywhere else.
60
+ *
61
+ * Validation is `principalKey`'s own, reused rather than re-implemented: this function derives an
62
+ * AUTHORIZATION value and must not depend on a caller having validated first.
63
+ *
64
+ * @throws via {@link assertValidOwnerToken} on a token outside `[A-Za-z0-9_]+`. A caller holding
65
+ * untrusted input wants {@link eventChannelPrincipal}, which answers with `null`.
66
+ */
67
+ export function eventChannel(principal) {
68
+ return `${EVENT_CHANNEL_PREFIX}${principalKey(principal.owner, principal.actor).key}`;
69
+ }
70
+ /**
71
+ * The principal an event channel names, or `null` if the string does not name one.
72
+ *
73
+ * THIS IS A FULL DERIVATION, NOT A PREFIX TEST, AND THAT IS THE WHOLE POINT OF THE FUNCTION. The
74
+ * classifier it replaces asked `channel.startsWith("events.")` and documented the gap as a known
75
+ * limit: any string beginning with those seven characters classified as an event channel. The limit
76
+ * was not harmless in the direction the comment argued. It reasoned that a MALFORMED publisher
77
+ * should stay visible to a filter, but the cost lands on the other side: `assertValidName` permits a
78
+ * dot inside a display name and nothing anywhere reserves the `events.` prefix, so an ordinary chat
79
+ * channel a human called `events.standup` was classified as machine traffic and swept out of the
80
+ * chat pane. A person's messages disappearing from the view they were sent to is a silent loss, and
81
+ * it is exactly the failure this lane exists to remove.
82
+ *
83
+ * The derivation fails the other way, which is the correct direction: a string that does not resolve
84
+ * to a principal is NOT an event channel, so a malformed `events.` name stays in the chat view where
85
+ * a reader can see that something is publishing nonsense. A wrong answer that is visible beats a
86
+ * wrong answer that is quiet.
87
+ *
88
+ * WHAT IT STILL CANNOT SEPARATE, STATED RATHER THAN LEFT FOR A READER TO DISCOVER. Nothing reserves
89
+ * the `events.` prefix, so a human chat channel whose remainder happens to BE principal-shaped is
90
+ * indistinguishable from an agent's stream: `events.team.standup` classifies as an event channel and
91
+ * always will, because `team.standup` is a well-formed principal key and this function has no other
92
+ * evidence to weigh. The derivation narrows the collision rather than closing it. Measured, the
93
+ * narrowing is real and one-directional: `assertValidChannel` admits `-` in a segment and
94
+ * {@link assertValidOwnerToken} does not, and a principal key is exactly two segments, so
95
+ * `events.standup`, `events.my-team.standup` and `events.a.b.c` all return to the chat pane where
96
+ * the prefix test had taken them. Only the exactly-two-underscore-or-alphanumeric-segment case
97
+ * remains. Closing it entirely means reserving the prefix on the wire, which is a change to the
98
+ * normative contract and is deliberately not made here.
99
+ *
100
+ * IT IS THE CONSTRUCTOR'S INVERSE, EXECUTED, not a second expression that resembles it. The parse is
101
+ * checked by rebuilding the name with {@link eventChannel} and comparing. That comparison is
102
+ * currently always true, and it is not decoration: it is the assertion that the two functions still
103
+ * agree, evaluated on every classification rather than argued for in a comment. A change to how the
104
+ * name is formed that forgot this file would be caught by it.
105
+ *
106
+ * IT CANNOT THROW, and that is a property of the order rather than a promise. {@link parsePrincipalKey}
107
+ * admits exactly `[A-Za-z0-9_]+` on both sides of the first dot, which is character for character
108
+ * what {@link assertValidOwnerToken} admits, so by the time {@link eventChannel} is called its
109
+ * refusal is unreachable. The equivalence of those two alphabets is asserted at the boundary
110
+ * characters by the suite rather than assumed here, because it is the load-bearing step and it is
111
+ * one narrowing edit away from being false. No `try` swallows the refusal: a throw arriving here
112
+ * would mean the constructor and the parser had diverged, and hiding that would turn a loud
113
+ * contradiction into a channel silently reclassified as chat.
114
+ *
115
+ * THE SESSION-SCOPED FORM IS DELIBERATELY NOT RECOGNISED. `events.<owner>.<actor>.<session>` is a
116
+ * planned later step, and nothing mints a grant for it or emits on one today. It parses to `null`
117
+ * here, because a classifier that accepts a shape no producer writes is a claim no test can hold up.
118
+ * The commit that starts emitting on a sub-channel is the commit that widens this, and until then
119
+ * the failure if someone forgets is event traffic appearing in the chat pane, which is visible.
120
+ */
121
+ export function eventChannelPrincipal(channel) {
122
+ if (typeof channel !== "string" || !channel.startsWith(EVENT_CHANNEL_PREFIX))
123
+ return null;
124
+ const principal = parsePrincipalKey(channel.slice(EVENT_CHANNEL_PREFIX.length));
125
+ if (principal === null)
126
+ return null;
127
+ return eventChannel(principal) === channel ? principal : null;
128
+ }
129
+ /**
130
+ * Whether a channel name is an agent's structured-event channel rather than ordinary chat.
131
+ *
132
+ * The predicate a display filter wants, over {@link eventChannelPrincipal}'s derivation. It takes
133
+ * `unknown` and means it: a surface classifies whatever its message carried, and a `channel` field
134
+ * is absent on a direct message and on an anycast.
135
+ */
136
+ export function isEventChannel(channel) {
137
+ return eventChannelPrincipal(channel) !== null;
138
+ }
139
+ //# sourceMappingURL=event-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-channel.js","sourceRoot":"","sources":["../src/event-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,YAAY,CAAC,SAA2C;IACtE,OAAO,GAAG,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1F,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AACjD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,9 @@ export * from "./endpoint-verbs.js";
15
15
  export * from "./endpoint-invoke.js";
16
16
  export * from "./endpoint-work.js";
17
17
  export * from "./endpoint-action.js";
18
+ export * from "./endpoint-goaleff.js";
19
+ export * from "./endpoint-epname.js";
20
+ export * from "./endpoint-effects.js";
18
21
  export * from "./endpoint-checkpoint.js";
19
22
  export * from "./endpoint-contract-store.js";
20
23
  export * from "./endpoint-serve-kv.js";
@@ -59,6 +62,8 @@ export * from "./auth-provider.js";
59
62
  export * from "./canonical.js";
60
63
  export * from "./artifact.js";
61
64
  export * from "./parts.js";
65
+ export * from "./agui-kind.js";
66
+ export * from "./event-channel.js";
62
67
  export * from "./schema-profile.js";
63
68
  export * from "./broker-floor.js";
64
69
  export * from "./broker-tls.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,9 @@ export * from "./endpoint-verbs.js";
15
15
  export * from "./endpoint-invoke.js";
16
16
  export * from "./endpoint-work.js";
17
17
  export * from "./endpoint-action.js";
18
+ export * from "./endpoint-goaleff.js";
19
+ export * from "./endpoint-epname.js";
20
+ export * from "./endpoint-effects.js";
18
21
  export * from "./endpoint-checkpoint.js";
19
22
  export * from "./endpoint-contract-store.js";
20
23
  export * from "./endpoint-serve-kv.js";
@@ -59,6 +62,8 @@ export * from "./auth-provider.js";
59
62
  export * from "./canonical.js";
60
63
  export * from "./artifact.js";
61
64
  export * from "./parts.js";
65
+ export * from "./agui-kind.js";
66
+ export * from "./event-channel.js";
62
67
  export * from "./schema-profile.js";
63
68
  export * from "./broker-floor.js";
64
69
  export * from "./broker-tls.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"membership-feed.d.ts","sourceRoot":"","sources":["../src/membership-feed.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;IAClB;;+DAE2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;4DAOwD;IACxD,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;;;+GAO2G;IAC3G,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAgCD,sFAAsF;AACtF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsVjG"}
1
+ {"version":3,"file":"membership-feed.d.ts","sourceRoot":"","sources":["../src/membership-feed.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;IAClB;;+DAE2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;4DAOwD;IACxD,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;;;+GAO2G;IAC3G,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAgCD,sFAAsF;AACtF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6WjG"}
@@ -212,6 +212,8 @@ export async function startMembershipFeed(opts) {
212
212
  armRwRefresh(credsRenewalDelayMs(currentRwCreds));
213
213
  let stopped = false;
214
214
  let polling = false;
215
+ /** The poll currently running, so {@link stop} can wait for it instead of draining underneath it. */
216
+ let inFlight;
215
217
  let rerun = false; // a trigger fired mid-poll → run once more after
216
218
  let reqSeq = 0;
217
219
  let clusterWarned = false; // log the multi-server completeness limit at most once (never fires at N=1)
@@ -378,18 +380,25 @@ export async function startMembershipFeed(opts) {
378
380
  return;
379
381
  } // a poll is in flight — coalesce, run once more after it
380
382
  polling = true;
381
- try {
382
- do {
383
- rerun = false;
384
- await reconcile();
385
- } while (rerun && !stopped);
386
- }
387
- catch (e) {
388
- log(`poll failed (graph membership degraded; delivery unaffected): ${e.message}`);
389
- }
390
- finally {
391
- polling = false;
392
- }
383
+ // The running poll is held as a PROMISE, not just a boolean, because `stop()` has to await it and a
384
+ // flag cannot be awaited. Every caller drives this through `void poll()` off a timer or a trigger, so
385
+ // without this handle nothing in the process holds the work and teardown cannot wait for it.
386
+ inFlight = (async () => {
387
+ try {
388
+ do {
389
+ rerun = false;
390
+ await reconcile();
391
+ } while (rerun && !stopped);
392
+ }
393
+ catch (e) {
394
+ log(`poll failed (graph membership degraded; delivery unaffected): ${e.message}`);
395
+ }
396
+ finally {
397
+ polling = false;
398
+ inFlight = undefined;
399
+ }
400
+ })();
401
+ await inFlight;
393
402
  }
394
403
  // Re-poll triggers — debounced. There is NO SUB/UNSUB event, so these only shorten join/leave-the-mesh
395
404
  // latency; the interval is the real reconcile. A connect storm coalesces into one debounced poll.
@@ -434,6 +443,20 @@ export async function startMembershipFeed(opts) {
434
443
  subDisconnect.unsubscribe();
435
444
  }
436
445
  catch { /* draining */ }
446
+ // WAIT FOR THE POLL ALREADY RUNNING, BEFORE THE DRAIN. `stopped` is set above, so the do/while
447
+ // exits after the reconcile in progress rather than starting another; this only waits out the one
448
+ // already in flight. Skipping it drains the connection out from under a live `reconcile()`, which
449
+ // then throws and is logged as `poll failed ... connection closed` — a manufactured error for an
450
+ // ordinary shutdown, printed AFTER the caller believed teardown had finished. That line is not
451
+ // free: it reads as a leak to whoever greps the log next, and it has already cost one
452
+ // investigation. A teardown must not invent evidence.
453
+ //
454
+ // Unbounded on purpose, and stated rather than hidden: a `reconcile()` that never settles hangs
455
+ // `stop()`. The drain below is already unbounded in exactly the same way, so this adds no new class
456
+ // of risk, and a timeout here would silently resume tearing down underneath a live poll, which is
457
+ // the behaviour being removed. `inFlight` never rejects (the poll catches internally), so no
458
+ // `.catch` is needed to keep `stop()` from throwing.
459
+ await inFlight;
437
460
  await Promise.allSettled([connA.drain(), connB.drain()]);
438
461
  },
439
462
  };
@@ -1 +1 @@
1
- {"version":3,"file":"membership-feed.js","sourceRoot":"","sources":["../src/membership-feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"membership-feed.js","sourceRoot":"","sources":["../src/membership-feed.ts"],"names":[],"mappings":"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"}
package/dist/parts.d.ts CHANGED
@@ -1,13 +1,37 @@
1
1
  /**
2
2
  * Rendering message parts as the flat text a human or a model reads.
3
3
  *
4
- * This exists because the expression it replaces was copied verbatim into three surfaces (the
5
- * connector inbox, `cotal join`, and the mesh view), and adding the `artifact` core kind broke all
6
- * three the same way: an artifact part has no `data` field, so the old `JSON.stringify(p.data)`
7
- * fallback rendered it as the literal string "undefined". One renderer means a new core part kind
8
- * is legible everywhere at once, or nowhere never in two surfaces out of three.
4
+ * One renderer, so a new core part kind is legible on every surface at once or on none — the
5
+ * copied-out expression it replaces broke on `artifact` in three places the same way, rendering it
6
+ * as an empty string rather than anything a reader could notice.
7
+ *
8
+ * It reaches only the three surfaces that call it (the connector inbox, `cotal join`, the mesh
9
+ * view). Four others still carry their own copy — two stringify, two filter non-text parts out
10
+ * before mapping — and a fix here cannot reach a surface whose defect is that it does not use this.
9
11
  */
10
12
  import type { Part } from "./types.js";
13
+ import { type Extension } from "./registry.js";
14
+ /**
15
+ * A renderer for ONE extension part kind — an {@link Extension} of kind `"part-renderer"`, whose
16
+ * `name` is the part kind it draws (e.g. `"ag-ui.frame"`).
17
+ *
18
+ * **THIS IS A SEAM, NOT KNOWLEDGE.** Core cannot render an extension's part: it does not know what
19
+ * the payload means, and `AGENTS.md` is explicit that an adapter's concepts must not leak in here.
20
+ * But the alternative that was shipping — every extension part rendering as a marker on every
21
+ * surface — means an extension can put a part on the wire that **nothing in the standard can ever
22
+ * display.** So core declares the contract and stays ignorant of who fills it, exactly as
23
+ * {@link TerminalLayout} does for terminal backends: the provider self-registers on import, and the
24
+ * consumer here resolves by kind without ever importing the extension package.
25
+ *
26
+ * **THE MARKER IS NOT REMOVED, AND THAT MATTERS.** A kind with no registered renderer still renders
27
+ * `[unrenderable part kind …]`. This makes the marker RARER; it does not make absence quiet again.
28
+ */
29
+ export interface PartRenderer extends Extension {
30
+ readonly kind: "part-renderer";
31
+ /** The part kind this draws — the `kind` field of the parts it is resolved for. */
32
+ readonly name: string;
33
+ render(part: Part): string;
34
+ }
11
35
  /** A message's parts as one flat string, space-joined. */
12
36
  export declare function partsToText(parts: readonly Part[]): string;
13
37
  //# sourceMappingURL=parts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAavC,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,CAE1D"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;CAC5B;AAsDD,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,CAE1D"}
package/dist/parts.js CHANGED
@@ -1,5 +1,20 @@
1
- /** One part as display text. An unknown extension kind still falls back to its `data`, which is
2
- * the pre-existing behaviour and deliberately unchanged: extensions are opaque here. */
1
+ import { registry } from "./registry.js";
2
+ /**
3
+ * One part as display text.
4
+ *
5
+ * **NO PART RENDERS AS NOTHING.** That is the rule this function now enforces, and it is
6
+ * `AGENTS.md`'s "No fallbacks. Throw if something is not supported in the current environment or
7
+ * config, rather than silently degrading" applied at the only layer that can see every kind at
8
+ * once. It is a visible marker rather than a throw ON PURPOSE: **a throw here is swallowable.** A
9
+ * caller that wraps this in a try/catch and skips the message reinstates exactly the silence being
10
+ * removed, one layer further up, where it is harder to see. *A refusal that is not delivered is not
11
+ * a refusal* — so the refusal is delivered as content, into the same string the reader is already
12
+ * looking at.
13
+ *
14
+ * Extension kinds stay OPAQUE here, which is unchanged and deliberate: core does not know how to
15
+ * render `ag-ui.frame` or anything else an extension defines, and it must not pretend to. What
16
+ * changes is that not knowing now says so.
17
+ */
3
18
  function partText(p) {
4
19
  if (p.kind === "text")
5
20
  return p.text;
@@ -8,7 +23,35 @@ function partText(p) {
8
23
  // claims they are, not as facts the reader should size a buffer from.
9
24
  if (p.kind === "artifact")
10
25
  return `[artifact ${p.name} (${p.mediaType}, ${p.size} bytes) ${p.digest}]`;
11
- return JSON.stringify(p.data);
26
+ if (p.kind === "data") {
27
+ const encoded = JSON.stringify(p.data);
28
+ // `JSON.stringify(undefined)` returns `undefined`, so a `data` part carrying no data hits the
29
+ // same vanishing act as an unknown kind. Named separately from the kind marker below, because
30
+ // "a data part with nothing in it" and "a kind this build cannot render" are different facts
31
+ // and a reader who sees one must not conclude the other.
32
+ return encoded === undefined ? `[empty data part]` : encoded;
33
+ }
34
+ // An extension kind. Core cannot draw it, but a registered {@link PartRenderer} can — resolved by
35
+ // the part's own kind, so core never learns what any of them mean.
36
+ if (registry.has("part-renderer", p.kind)) {
37
+ const renderer = registry.resolve("part-renderer", p.kind);
38
+ try {
39
+ return renderer.render(p);
40
+ }
41
+ catch (e) {
42
+ // A THROWING RENDERER MUST NOT SILENCE THE MESSAGE, AND MUST NOT TAKE THE SURFACE DOWN.
43
+ //
44
+ // This is the same reasoning that makes the marker below a string rather than a `throw`: a
45
+ // refusal that is not delivered is not a refusal. A renderer that throws is a DIFFERENT fact
46
+ // from a kind nobody renders, so it gets its own marker and names the reason — a reader who
47
+ // sees this must not conclude "no renderer exists", which is what a shared marker would tell
48
+ // them. It is deliberately NOT swallowed into the plain marker for exactly that reason.
49
+ return `[part renderer for ${JSON.stringify(p.kind)} failed: ${e.message}]`;
50
+ }
51
+ }
52
+ // No renderer registered. The marker names the kind, so a reader who meets one knows exactly which
53
+ // renderer is missing rather than seeing a message that looks like it was sent blank.
54
+ return `[unrenderable part kind ${JSON.stringify(p.kind)} — no renderer for it on this surface]`;
12
55
  }
13
56
  /** A message's parts as one flat string, space-joined. */
14
57
  export function partsToText(parts) {
package/dist/parts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAWA;yFACyF;AACzF,SAAS,QAAQ,CAAC,CAAO;IACvB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IACrC,8FAA8F;IAC9F,4FAA4F;IAC5F,sEAAsE;IACtE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;IACvG,OAAO,IAAI,CAAC,SAAS,CAAE,CAAwB,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAwBzD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,QAAQ,CAAC,CAAO;IACvB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IACrC,8FAA8F;IAC9F,4FAA4F;IAC5F,sEAAsE;IACtE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;IACvG,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAE,CAAwB,CAAC,IAAI,CAAC,CAAC;QAC/D,8FAA8F;QAC9F,8FAA8F;QAC9F,6FAA6F;QAC7F,yDAAyD;QACzD,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,CAAC;IACD,kGAAkG;IAClG,mEAAmE;IACnE,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAe,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wFAAwF;YACxF,EAAE;YACF,2FAA2F;YAC3F,6FAA6F;YAC7F,4FAA4F;YAC5F,6FAA6F;YAC7F,wFAAwF;YACxF,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAa,CAAW,CAAC,OAAO,GAAG,CAAC;QACzF,CAAC;IACH,CAAC;IACD,mGAAmG;IACnG,sFAAsF;IACtF,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC;AACnG,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC"}
@@ -319,7 +319,7 @@ export interface ProvisionOpts extends MintOpts {
319
319
  export interface DurableProvisioner {
320
320
  /** Pre-create the lifecycle's bind-only DM durable (`dm_<owner>-<actor>-<uid>`). The implementation
321
321
  * captures the DM stream's ACTIVATION FRONTIER (its `last_seq` at first creation) and starts
322
- * delivery at frontier+1 (SPEC :467) — a same-alias successor inherits no predecessor DMs.
322
+ * delivery at frontier+1 (SPEC §8) — a same-alias successor inherits no predecessor DMs.
323
323
  * Idempotent PER LIFECYCLE: a re-provision of the same uid keeps the existing durable (and so the
324
324
  * ORIGINAL frontier — the activation moment does not move on manager restart). */
325
325
  provisionDmInbox(owner: string, actor: string, lifecycleUid: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D;6FAC6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;0FAC0F;AAC1F,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EAAE;CASvC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,QAAQ,GAAG,SAAS,CAetB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CASlD"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D;6FAC6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;0FAC0F;AAC1F,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EAAE;CASvC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,QAAQ,GAAG,SAAS,CAetB;AAuBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA2BlD"}