agent-embassy 3.0.0 → 4.0.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 (115) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/CONTRIBUTING.md +92 -200
  3. package/README.md +159 -138
  4. package/SECURITY.md +191 -335
  5. package/dist/src/gateway/broker-check.d.ts +26 -0
  6. package/dist/src/gateway/broker-check.js +89 -0
  7. package/dist/src/gateway/broker-check.js.map +1 -0
  8. package/dist/src/gateway/broker-control.d.ts +72 -0
  9. package/dist/src/gateway/broker-control.js +164 -0
  10. package/dist/src/gateway/broker-control.js.map +1 -0
  11. package/dist/src/gateway/broker.d.ts +117 -0
  12. package/dist/src/gateway/broker.js +186 -0
  13. package/dist/src/gateway/broker.js.map +1 -0
  14. package/dist/src/gateway/claude-peer.d.ts +1 -124
  15. package/dist/src/gateway/claude-peer.js +62 -1053
  16. package/dist/src/gateway/claude-peer.js.map +1 -1
  17. package/dist/src/gateway/codex-stateless-transport.d.ts +0 -12
  18. package/dist/src/gateway/codex-stateless-transport.js +8 -142
  19. package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
  20. package/dist/src/gateway/config.d.ts +2 -6
  21. package/dist/src/gateway/config.js +17 -27
  22. package/dist/src/gateway/config.js.map +1 -1
  23. package/dist/src/gateway/coordinator.d.ts +57 -0
  24. package/dist/src/gateway/coordinator.js +217 -0
  25. package/dist/src/gateway/coordinator.js.map +1 -0
  26. package/dist/src/gateway/core-cli.d.ts +15 -0
  27. package/dist/src/gateway/core-cli.js +282 -0
  28. package/dist/src/gateway/core-cli.js.map +1 -0
  29. package/dist/src/gateway/core-service-command.d.ts +16 -0
  30. package/dist/src/gateway/core-service-command.js +71 -0
  31. package/dist/src/gateway/core-service-command.js.map +1 -0
  32. package/dist/src/gateway/endpoint-directory.d.ts +33 -0
  33. package/dist/src/gateway/endpoint-directory.js +223 -0
  34. package/dist/src/gateway/endpoint-directory.js.map +1 -0
  35. package/dist/src/gateway/federation.d.ts +89 -0
  36. package/dist/src/gateway/federation.js +632 -0
  37. package/dist/src/gateway/federation.js.map +1 -0
  38. package/dist/src/gateway/ledger-codec.d.ts +3 -0
  39. package/dist/src/gateway/ledger-codec.js +159 -0
  40. package/dist/src/gateway/ledger-codec.js.map +1 -0
  41. package/dist/src/gateway/ledger.d.ts +138 -0
  42. package/dist/src/gateway/ledger.js +319 -0
  43. package/dist/src/gateway/ledger.js.map +1 -0
  44. package/dist/src/gateway/local-control.d.ts +23 -0
  45. package/dist/src/gateway/local-control.js +489 -0
  46. package/dist/src/gateway/local-control.js.map +1 -0
  47. package/dist/src/gateway/native-destinations.d.ts +34 -0
  48. package/dist/src/gateway/native-destinations.js +272 -0
  49. package/dist/src/gateway/native-destinations.js.map +1 -0
  50. package/dist/src/gateway/owned-state.d.ts +57 -0
  51. package/dist/src/gateway/owned-state.js +398 -0
  52. package/dist/src/gateway/owned-state.js.map +1 -0
  53. package/dist/src/gateway/provenance-envelope.d.ts +3 -3
  54. package/dist/src/gateway/provenance-envelope.js +3 -23
  55. package/dist/src/gateway/provenance-envelope.js.map +1 -1
  56. package/dist/src/gateway/runtime.d.ts +41 -0
  57. package/dist/src/gateway/runtime.js +175 -0
  58. package/dist/src/gateway/runtime.js.map +1 -0
  59. package/docs/CONFIGURATION.md +178 -266
  60. package/docs/DELIVERY.md +133 -82
  61. package/docs/GATEWAY-ARCHITECTURE.md +276 -943
  62. package/package.json +5 -5
  63. package/skills/embassy-peer/SKILL.md +38 -194
  64. package/skills/embassy-peer/agents/openai.yaml +2 -2
  65. package/dist/src/gateway/claude-helper-client.d.ts +0 -2
  66. package/dist/src/gateway/claude-helper-client.js +0 -2
  67. package/dist/src/gateway/claude-helper-client.js.map +0 -1
  68. package/dist/src/gateway/claude-helper-protocol.d.ts +0 -117
  69. package/dist/src/gateway/claude-helper-protocol.js +0 -122
  70. package/dist/src/gateway/claude-helper-protocol.js.map +0 -1
  71. package/dist/src/gateway/claude-helper-supervisor.d.ts +0 -87
  72. package/dist/src/gateway/claude-helper-supervisor.js +0 -347
  73. package/dist/src/gateway/claude-helper-supervisor.js.map +0 -1
  74. package/dist/src/gateway/claude-helper.d.ts +0 -1
  75. package/dist/src/gateway/claude-helper.js +0 -252
  76. package/dist/src/gateway/claude-helper.js.map +0 -1
  77. package/dist/src/gateway/cli.d.ts +0 -57
  78. package/dist/src/gateway/cli.js +0 -1503
  79. package/dist/src/gateway/cli.js.map +0 -1
  80. package/dist/src/gateway/codex-socket-holder.d.ts +0 -26
  81. package/dist/src/gateway/codex-socket-holder.js +0 -76
  82. package/dist/src/gateway/codex-socket-holder.js.map +0 -1
  83. package/dist/src/gateway/control.d.ts +0 -261
  84. package/dist/src/gateway/control.js +0 -903
  85. package/dist/src/gateway/control.js.map +0 -1
  86. package/dist/src/gateway/peer-client.d.ts +0 -58
  87. package/dist/src/gateway/peer-client.js +0 -217
  88. package/dist/src/gateway/peer-client.js.map +0 -1
  89. package/dist/src/gateway/peer-mailbox.d.ts +0 -78
  90. package/dist/src/gateway/peer-mailbox.js +0 -168
  91. package/dist/src/gateway/peer-mailbox.js.map +0 -1
  92. package/dist/src/gateway/peer-protocol.d.ts +0 -105
  93. package/dist/src/gateway/peer-protocol.js +0 -70
  94. package/dist/src/gateway/peer-protocol.js.map +0 -1
  95. package/dist/src/gateway/peer-stdio.d.ts +0 -23
  96. package/dist/src/gateway/peer-stdio.js +0 -100
  97. package/dist/src/gateway/peer-stdio.js.map +0 -1
  98. package/dist/src/gateway/providers.d.ts +0 -163
  99. package/dist/src/gateway/providers.js +0 -972
  100. package/dist/src/gateway/providers.js.map +0 -1
  101. package/dist/src/gateway/server.d.ts +0 -47
  102. package/dist/src/gateway/server.js +0 -219
  103. package/dist/src/gateway/server.js.map +0 -1
  104. package/dist/src/gateway/service.d.ts +0 -373
  105. package/dist/src/gateway/service.js +0 -2274
  106. package/dist/src/gateway/service.js.map +0 -1
  107. package/dist/src/gateway/status-view.d.ts +0 -167
  108. package/dist/src/gateway/status-view.js +0 -488
  109. package/dist/src/gateway/status-view.js.map +0 -1
  110. package/dist/src/gateway/store.d.ts +0 -185
  111. package/dist/src/gateway/store.js +0 -2359
  112. package/dist/src/gateway/store.js.map +0 -1
  113. package/dist/src/gateway/types.d.ts +0 -528
  114. package/dist/src/gateway/types.js +0 -341
  115. package/dist/src/gateway/types.js.map +0 -1
@@ -0,0 +1,186 @@
1
+ import { randomBytes, randomUUID } from "node:crypto";
2
+ import { BridgeError } from "../errors.js";
3
+ import { Ledger } from "./ledger.js";
4
+ const publicEndpoint = ({ id, alias, provider, host }) => ({ id, alias, provider, host });
5
+ const admissionRefusals = new Set(["INVALID_PEER_HANDOFF", "ROUTE_UNREGISTERED", "INVALID_MESSAGE_BODY",
6
+ "MESSAGE_EXPIRED", "QUEUE_FULL", "RATE_LIMITED"]);
7
+ class PreEnqueueRefusal extends Error {
8
+ code;
9
+ constructor(code) {
10
+ super(code);
11
+ this.code = code;
12
+ }
13
+ }
14
+ /** Application commands over the directory and the single delivery ledger. */
15
+ export class MessagingBroker {
16
+ options;
17
+ timer;
18
+ stopped = false;
19
+ started = false;
20
+ pumping;
21
+ requested = false;
22
+ fault;
23
+ now;
24
+ constructor(options) {
25
+ this.options = options;
26
+ this.now = options.now ?? Date.now;
27
+ }
28
+ change(operation) {
29
+ return this.options.store.transact((state) => operation(new Ledger(state, this.options.host, this.options.limits, this.now())));
30
+ }
31
+ async start() {
32
+ await this.change((ledger) => ledger.restart());
33
+ this.started = true;
34
+ this.kick();
35
+ }
36
+ async register(caller, alias, succeeds) {
37
+ if (caller.kind !== "codex")
38
+ throw new BridgeError("ROUTE_BINDING_MISMATCH", "Codex registration requires its inherited task identity.");
39
+ const endpoint = await this.options.directory.registerCodex(caller.handle, alias, succeeds);
40
+ return publicEndpoint(endpoint);
41
+ }
42
+ async send(caller, address, body) {
43
+ if (this.stopped)
44
+ throw new BridgeError("GATEWAY_SHUTDOWN", "The gateway is stopping.");
45
+ const source = await this.options.directory.caller(caller);
46
+ const target = "to" in address ? await this.options.directory.named(address.to)
47
+ : await this.options.directory.exact(new Ledger(await this.options.store.snapshot(), this.options.host, this.options.limits, this.now()).replyTarget(address.conversation, source));
48
+ if (!target)
49
+ throw new BridgeError("ROUTE_UNREGISTERED", "The exact destination is unavailable.");
50
+ const deadline = this.now() + this.options.limits.deadlineMs;
51
+ const admitted = await this.change((ledger) => ledger.admit({
52
+ id: `msg_${randomUUID()}`, token: `dlv_${randomBytes(18).toString("base64url")}`,
53
+ reply: `conv_${randomBytes(24).toString("base64url")}`, source, target, body,
54
+ deadline,
55
+ steer: this.options.steeringEnabled !== false && source.provider === "claude" && target.provider === "codex" && body.startsWith("STEER:"),
56
+ }));
57
+ this.kick();
58
+ return { accepted: true, conversationId: admitted.delivery.reply, deliveryToken: admitted.delivery.token };
59
+ }
60
+ async retire(selector) {
61
+ if (typeof selector === "string" && !selector.endsWith(`@${this.options.host}`))
62
+ throw new BridgeError("FEDERATED_ROUTE_READ_ONLY", "Retire a remote route on its owning host.");
63
+ // Retirement acts on owned state, not discovery: an exited session must remain removable.
64
+ const counts = await this.change((ledger) => {
65
+ const endpoint = typeof selector === "string" ? ledger.resolve(selector)
66
+ : ledger.state.endpoints.find((row) => row.id === selector.endpoint);
67
+ if (!endpoint)
68
+ throw new BridgeError("ROUTE_UNREGISTERED", "The local route is absent.");
69
+ return ledger.retire(endpoint);
70
+ });
71
+ this.kick();
72
+ return counts;
73
+ }
74
+ async handoff(peerHost, input) {
75
+ if (this.stopped)
76
+ throw new BridgeError("GATEWAY_SHUTDOWN", "The gateway is stopping.");
77
+ if (!this.options.nodes?.includes(peerHost) || input.target.host !== this.options.host ||
78
+ input.messages.some((m) => m.source.host !== peerHost))
79
+ return { accepted: false, code: "INVALID_PEER_HANDOFF" };
80
+ try {
81
+ await this.change((ledger) => {
82
+ try {
83
+ for (const message of input.messages)
84
+ ledger.admit({
85
+ id: message.id, reply: message.reply, token: `dlv_${randomBytes(18).toString("base64url")}`,
86
+ source: message.source, sourceAlias: message.source.alias, target: input.target,
87
+ body: message.body, deadline: message.deadline, steer: message.steer && this.options.steeringEnabled !== false,
88
+ });
89
+ }
90
+ catch (error) {
91
+ // The sentinel is created ONLY inside the transition, before any persist.
92
+ // A later I/O throw carrying the same text is not a proven refusal.
93
+ if (error instanceof BridgeError && admissionRefusals.has(error.code))
94
+ throw new PreEnqueueRefusal(error.code);
95
+ throw error;
96
+ }
97
+ });
98
+ }
99
+ catch (error) {
100
+ if (error instanceof PreEnqueueRefusal)
101
+ return { accepted: false, code: error.code };
102
+ throw error;
103
+ }
104
+ this.kick();
105
+ return { accepted: true };
106
+ }
107
+ async delivery(token) {
108
+ await this.change((ledger) => ledger.expire());
109
+ const d = (await this.options.store.snapshot()).deliveries.find((d) => d.token === token);
110
+ if (!d)
111
+ return { found: false };
112
+ return { found: true, state: d.state.phase === "terminal" ? d.state.outcome : d.state.phase,
113
+ terminal: d.state.phase === "terminal", deadlineAt: new Date(d.deadline).toISOString(),
114
+ ...(d.state.phase === "terminal" ? { safeErrorCode: d.state.code } : { pendingForMs: Math.max(0, this.now() - d.admittedAt) }) };
115
+ }
116
+ async refresh() {
117
+ const [endpoints] = await Promise.all([
118
+ this.options.directory.refresh(), this.options.federation?.catalog(),
119
+ ]);
120
+ this.kick();
121
+ return { routes: endpoints.map(publicEndpoint) };
122
+ }
123
+ async status() {
124
+ await this.change((ledger) => ledger.expire());
125
+ const state = await this.options.store.snapshot();
126
+ const alias = (ref) => state.endpoints.find((e) => e.id === ref.id && e.host === ref.host)?.alias;
127
+ return {
128
+ health: this.fault ? "degraded" : "healthy", ...(this.fault ? { safeErrorCode: this.fault } : {}),
129
+ revision: state.commit.sequence,
130
+ ...(this.options.federation ? { federation: this.options.federation.snapshot() } : {}),
131
+ routes: state.endpoints.map((e) => ({ ...publicEndpoint(e),
132
+ ...(this.options.coordinator.observation(e) === undefined ? {} : { lastOperation: this.options.coordinator.observation(e) }),
133
+ queueDepth: state.deliveries.filter((d) => d.target.id === e.id && d.target.host === e.host && d.state.phase !== "terminal").length })),
134
+ messages: state.deliveries.map((d) => ({ source: alias(d.source) ?? d.sourceAlias, target: alias(d.target),
135
+ state: d.state.phase === "terminal" ? d.state.outcome : d.state.phase,
136
+ ageMs: Math.max(0, this.now() - d.admittedAt),
137
+ ...(d.state.phase === "terminal" ? { safeErrorCode: d.state.code } : {}) })),
138
+ retirements: state.retirements.map(({ alias, at }) => ({ alias, at: new Date(at).toISOString() })),
139
+ };
140
+ }
141
+ kick() {
142
+ if (this.stopped)
143
+ return;
144
+ this.requested = true;
145
+ if (this.pumping)
146
+ return;
147
+ if (this.timer) {
148
+ clearTimeout(this.timer);
149
+ this.timer = undefined;
150
+ }
151
+ this.pumping = this.pump().catch((error) => {
152
+ this.fault = error instanceof BridgeError ? error.code : "DISPATCH_OUTCOME_AMBIGUOUS";
153
+ }).finally(() => {
154
+ this.pumping = undefined;
155
+ if (this.requested)
156
+ this.kick();
157
+ });
158
+ }
159
+ async pump() {
160
+ this.requested = false;
161
+ const state = await this.options.store.snapshot();
162
+ const targets = new Map();
163
+ for (const d of state.deliveries) {
164
+ if (d.state.phase === "queued")
165
+ targets.set(JSON.stringify([d.target, d.steer]), d);
166
+ }
167
+ for (const d of targets.values()) {
168
+ // Do not await an agent's turn: another target or a STEER must remain dispatchable.
169
+ void this.options.coordinator.wake(d.target, d.steer).catch((error) => {
170
+ this.fault = error instanceof BridgeError ? error.code : "DISPATCH_OUTCOME_AMBIGUOUS";
171
+ });
172
+ }
173
+ if (!this.stopped && state.deliveries.some((d) => d.state.phase !== "terminal")) {
174
+ this.timer = setTimeout(() => { this.timer = undefined; this.kick(); }, 500);
175
+ this.timer.unref();
176
+ }
177
+ }
178
+ async close() {
179
+ this.stopped = true;
180
+ if (this.timer)
181
+ clearTimeout(this.timer);
182
+ await this.pumping;
183
+ await this.options.coordinator.close(this.started);
184
+ }
185
+ }
186
+ //# sourceMappingURL=broker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/gateway/broker.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { type Socket } from "node:net";
2
- import type { GatewayDeliveryNoticeMode } from "./config.js";
3
2
  export declare const CLAUDE_PEER_COMPATIBILITY: Readonly<{
4
3
  peerProtocol: 1;
5
4
  }>;
@@ -23,31 +22,6 @@ export type ClaudePeerDiscovery = {
23
22
  entriesScanned: number;
24
23
  parseableRecords: number;
25
24
  };
26
- export type ClaudePeerDeliveryDiagnostic = {
27
- code: string;
28
- };
29
- export declare const claudePeerInboundStallReasons: readonly ["ROUTE_BUSY", "ROUTE_UNAVAILABLE", "AWAITING_EXTERNAL_APPROVAL"];
30
- export type ClaudePeerInboundStallReason = (typeof claudePeerInboundStallReasons)[number];
31
- export type ClaudePeerInboundProgress = {
32
- kind: "stall";
33
- reason: ClaudePeerInboundStallReason;
34
- queuedForMs: number;
35
- };
36
- export type ClaudePeerAcknowledgmentResult = {
37
- transportStatus: "transport_written" | "suppressed";
38
- };
39
- export type ClaudePeerInboundMessage = {
40
- inboundId: string;
41
- content: string;
42
- sourceTargetId?: string;
43
- sourceAlias?: string;
44
- receiptHandle?: string;
45
- replySupported: boolean;
46
- trust: "untrusted_same_uid_peer" | "untrusted_anonymous_local_peer";
47
- };
48
- export type ClaudePeerProtocolNotice = {
49
- code: "FRAME_TOO_LARGE" | "INVALID_UTF8" | "INVALID_FRAME" | "UNSUPPORTED_FRAME" | "UNREGISTERED_REPLY_ADDRESS" | "RECEIPT_LIMIT" | "CONNECTION_LIMIT" | "CONNECTION_TIMEOUT" | "CALLBACK_ERROR";
50
- };
51
25
  export type ClaudeProcessIdentity = {
52
26
  uid: number;
53
27
  generation: string;
@@ -57,15 +31,10 @@ export type ClaudePeerConnect = (socketPath: string) => Socket;
57
31
  export type ClaudePeerAdapterOptions = {
58
32
  sessionsDir: string;
59
33
  socketDir: string;
60
- deliveryNotices?: GatewayDeliveryNoticeMode;
61
34
  maxRegistryEntries?: number;
62
35
  maxRegistryBytes?: number;
63
36
  maxFrameBytes?: number;
64
37
  connectTimeoutMs?: number;
65
- maxPendingReceipts?: number;
66
- maxConnections?: number;
67
- connectionIdleMs?: number;
68
- maxFramesPerConnection?: number;
69
38
  };
70
39
  export type ClaudePeerAdapterTestOverrides = {
71
40
  expectedUid?: number;
@@ -73,20 +42,8 @@ export type ClaudePeerAdapterTestOverrides = {
73
42
  connect?: ClaudePeerConnect;
74
43
  now?: () => number;
75
44
  createId?: () => string;
76
- createArtifactToken?: () => string;
77
- registryRename?: (source: string, destination: string) => Promise<void>;
78
- registryOperationHook?: (event: {
79
- operation: "advertise" | "status" | "unadvertise";
80
- phase: "entered" | "exited";
81
- generation: string;
82
- }) => void | Promise<void>;
83
45
  userHome?: string;
84
46
  tempRoots?: readonly string[];
85
- postBindHook?: (socketPath: string) => void | Promise<void>;
86
- };
87
- export type ClaudePeerListenerOptions = {
88
- onMessage: (message: ClaudePeerInboundMessage) => void | Promise<void>;
89
- onProtocolNotice?: (notice: ClaudePeerProtocolNotice) => void | Promise<void>;
90
47
  };
91
48
  export type ClaudePeerPreparedSendResult = {
92
49
  messageId: string;
@@ -96,38 +53,12 @@ export type ClaudePeerPreparedSend = Readonly<{
96
53
  messageId: string;
97
54
  frameBytes: number;
98
55
  sha256: string;
99
- perform: () => Promise<ClaudePeerPreparedSendResult>;
56
+ perform: (authorize: () => Promise<boolean>) => Promise<ClaudePeerPreparedSendResult>;
100
57
  cancel: () => void;
101
58
  }>;
102
- type ParsedRegistryRecord = {
103
- pid: number;
104
- sessionId: string;
105
- cwd: string;
106
- kind: ClaudePeerKind;
107
- messagingSocketPath: string;
108
- name: string;
109
- status: ClaudePeerStatus;
110
- embassyAdvertisement: boolean;
111
- };
112
- type TargetBinding = Readonly<{
113
- targetId: string;
114
- alias: string;
115
- record: ParsedRegistryRecord;
116
- }>;
117
- type AdapterLimits = {
118
- maxRegistryEntries: number;
119
- maxRegistryBytes: number;
120
- maxFrameBytes: number;
121
- connectTimeoutMs: number;
122
- maxPendingReceipts: number;
123
- maxConnections: number;
124
- connectionIdleMs: number;
125
- maxFramesPerConnection: number;
126
- };
127
59
  export declare function encodeClaudePeerUserFrame(input: {
128
60
  messageId: string;
129
61
  content: string;
130
- from?: string;
131
62
  maxFrameBytes?: number;
132
63
  }): Buffer;
133
64
  export declare class ClaudePeerAdapter {
@@ -145,62 +76,8 @@ export declare class ClaudePeerAdapter {
145
76
  * every later delivery resolves the UUID to fresh transport coordinates.
146
77
  */
147
78
  resolveReplyAddress(address: string): Promise<ClaudePeerDescriptor>;
148
- listen(options: ClaudePeerListenerOptions): Promise<ClaudePeerListener>;
149
79
  prepareSend(targetId: string, content: string, options: Readonly<{
150
80
  deadlineAt: number;
151
- /** Owned reply address only; no outbound receipt is tracked. */
152
- replyListener?: ClaudePeerListener;
153
81
  }>): Promise<ClaudePeerPreparedSend>;
154
82
  close(): Promise<void>;
155
83
  }
156
- type ListenerCreateOptions = {
157
- sessionsDir: string;
158
- socketDir: string;
159
- expectedUid: number;
160
- limits: AdapterLimits;
161
- createId: () => string;
162
- connect: ClaudePeerConnect;
163
- deliveryNotices: GatewayDeliveryNoticeMode;
164
- resolveReplyAddress: (address: string) => Promise<TargetBinding>;
165
- resolveSessionBinding: (sessionId: string) => Promise<TargetBinding>;
166
- options: ClaudePeerListenerOptions;
167
- generation: string;
168
- registryRename: (source: string, destination: string) => Promise<void>;
169
- registryOperationHook?: ClaudePeerAdapterTestOverrides["registryOperationHook"];
170
- runRegistryMutation: <T>(operation: () => Promise<T>) => Promise<T>;
171
- postBindHook: ClaudePeerAdapterTestOverrides["postBindHook"];
172
- onClosed: () => void;
173
- };
174
- export declare class ClaudePeerListener {
175
- #private;
176
- readonly address: string;
177
- readonly generation: string;
178
- private constructor();
179
- static create(options: ListenerCreateOptions): Promise<ClaudePeerListener>;
180
- get closed(): boolean;
181
- advertise(name: string, cwd: string): Promise<void>;
182
- updateAdvertisedStatus(status: ClaudePeerStatus): Promise<void>;
183
- unadvertise(name?: string): Promise<void>;
184
- acknowledge(receiptHandle: string, status: "held" | "delivered" | "denied" | "expired", diagnostic?: ClaudePeerDeliveryDiagnostic): Promise<ClaudePeerAcknowledgmentResult>;
185
- /**
186
- * Writes one nonterminal gateway progress frame without synthesizing a
187
- * native peer_message_status transition. The receipt remains available for
188
- * its later exact terminal acknowledgement or explicit release.
189
- */
190
- notifyInboundProgress(receiptHandle: string, progress: ClaudePeerInboundProgress): Promise<ClaudePeerAcknowledgmentResult>;
191
- /**
192
- * Releases a listener-owned native receipt capability without writing to the
193
- * peer. The service uses this after a terminal notification becomes
194
- * definitively undeliverable so bounded receipt capacity cannot leak.
195
- */
196
- releaseInboundReceipt(receiptHandle: string): boolean;
197
- /**
198
- * Stop admitting new user-message frames while keeping the listener alive
199
- * for terminal receipt writes. The promise joins every frame already
200
- * admitted, so controller shutdown can drain service receipt work before
201
- * closing the provider socket.
202
- */
203
- quiesceInbound(): Promise<void>;
204
- close(): Promise<void>;
205
- }
206
- export {};