agent-embassy 3.1.0 → 4.1.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 (118) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/CONTRIBUTING.md +92 -202
  3. package/README.md +179 -162
  4. package/SECURITY.md +191 -348
  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 +61 -1052
  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 +9 -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 +14 -0
  27. package/dist/src/gateway/core-cli.js +293 -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/core-version.d.ts +1 -0
  33. package/dist/src/gateway/core-version.js +2 -0
  34. package/dist/src/gateway/core-version.js.map +1 -0
  35. package/dist/src/gateway/endpoint-directory.d.ts +33 -0
  36. package/dist/src/gateway/endpoint-directory.js +223 -0
  37. package/dist/src/gateway/endpoint-directory.js.map +1 -0
  38. package/dist/src/gateway/federation.d.ts +89 -0
  39. package/dist/src/gateway/federation.js +632 -0
  40. package/dist/src/gateway/federation.js.map +1 -0
  41. package/dist/src/gateway/ledger-codec.d.ts +3 -0
  42. package/dist/src/gateway/ledger-codec.js +159 -0
  43. package/dist/src/gateway/ledger-codec.js.map +1 -0
  44. package/dist/src/gateway/ledger.d.ts +138 -0
  45. package/dist/src/gateway/ledger.js +319 -0
  46. package/dist/src/gateway/ledger.js.map +1 -0
  47. package/dist/src/gateway/local-control.d.ts +23 -0
  48. package/dist/src/gateway/local-control.js +489 -0
  49. package/dist/src/gateway/local-control.js.map +1 -0
  50. package/dist/src/gateway/native-destinations.d.ts +34 -0
  51. package/dist/src/gateway/native-destinations.js +272 -0
  52. package/dist/src/gateway/native-destinations.js.map +1 -0
  53. package/dist/src/gateway/owned-state.d.ts +57 -0
  54. package/dist/src/gateway/owned-state.js +398 -0
  55. package/dist/src/gateway/owned-state.js.map +1 -0
  56. package/dist/src/gateway/provenance-envelope.d.ts +3 -3
  57. package/dist/src/gateway/provenance-envelope.js +3 -23
  58. package/dist/src/gateway/provenance-envelope.js.map +1 -1
  59. package/dist/src/gateway/runtime.d.ts +41 -0
  60. package/dist/src/gateway/runtime.js +175 -0
  61. package/dist/src/gateway/runtime.js.map +1 -0
  62. package/dist/src/gateway/tui.d.ts +67 -0
  63. package/dist/src/gateway/tui.js +516 -0
  64. package/dist/src/gateway/tui.js.map +1 -0
  65. package/docs/CONFIGURATION.md +178 -266
  66. package/docs/DELIVERY.md +133 -82
  67. package/docs/GATEWAY-ARCHITECTURE.md +281 -949
  68. package/package.json +5 -5
  69. package/skills/embassy-peer/SKILL.md +38 -196
  70. package/skills/embassy-peer/agents/openai.yaml +2 -2
  71. package/dist/src/gateway/claude-helper-protocol.d.ts +0 -117
  72. package/dist/src/gateway/claude-helper-protocol.js +0 -122
  73. package/dist/src/gateway/claude-helper-protocol.js.map +0 -1
  74. package/dist/src/gateway/claude-helper-supervisor.d.ts +0 -87
  75. package/dist/src/gateway/claude-helper-supervisor.js +0 -374
  76. package/dist/src/gateway/claude-helper-supervisor.js.map +0 -1
  77. package/dist/src/gateway/claude-helper.d.ts +0 -1
  78. package/dist/src/gateway/claude-helper.js +0 -252
  79. package/dist/src/gateway/claude-helper.js.map +0 -1
  80. package/dist/src/gateway/cli.d.ts +0 -56
  81. package/dist/src/gateway/cli.js +0 -1532
  82. package/dist/src/gateway/cli.js.map +0 -1
  83. package/dist/src/gateway/codex-socket-holder.d.ts +0 -26
  84. package/dist/src/gateway/codex-socket-holder.js +0 -76
  85. package/dist/src/gateway/codex-socket-holder.js.map +0 -1
  86. package/dist/src/gateway/control.d.ts +0 -279
  87. package/dist/src/gateway/control.js +0 -933
  88. package/dist/src/gateway/control.js.map +0 -1
  89. package/dist/src/gateway/peer-client.d.ts +0 -58
  90. package/dist/src/gateway/peer-client.js +0 -217
  91. package/dist/src/gateway/peer-client.js.map +0 -1
  92. package/dist/src/gateway/peer-mailbox.d.ts +0 -78
  93. package/dist/src/gateway/peer-mailbox.js +0 -168
  94. package/dist/src/gateway/peer-mailbox.js.map +0 -1
  95. package/dist/src/gateway/peer-protocol.d.ts +0 -110
  96. package/dist/src/gateway/peer-protocol.js +0 -79
  97. package/dist/src/gateway/peer-protocol.js.map +0 -1
  98. package/dist/src/gateway/peer-stdio.d.ts +0 -23
  99. package/dist/src/gateway/peer-stdio.js +0 -100
  100. package/dist/src/gateway/peer-stdio.js.map +0 -1
  101. package/dist/src/gateway/providers.d.ts +0 -164
  102. package/dist/src/gateway/providers.js +0 -975
  103. package/dist/src/gateway/providers.js.map +0 -1
  104. package/dist/src/gateway/server.d.ts +0 -46
  105. package/dist/src/gateway/server.js +0 -216
  106. package/dist/src/gateway/server.js.map +0 -1
  107. package/dist/src/gateway/service.d.ts +0 -371
  108. package/dist/src/gateway/service.js +0 -2335
  109. package/dist/src/gateway/service.js.map +0 -1
  110. package/dist/src/gateway/status-view.d.ts +0 -119
  111. package/dist/src/gateway/status-view.js +0 -484
  112. package/dist/src/gateway/status-view.js.map +0 -1
  113. package/dist/src/gateway/store.d.ts +0 -188
  114. package/dist/src/gateway/store.js +0 -2360
  115. package/dist/src/gateway/store.js.map +0 -1
  116. package/dist/src/gateway/types.d.ts +0 -541
  117. package/dist/src/gateway/types.js +0 -332
  118. 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 {};