agent-comms 9.0.3 → 9.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +4 -0
- package/dist/bridges/user/web/test/web-access.unit.test.d.ts +1 -1
- package/dist/bridges/user/web/test/web-access.unit.test.js +19 -375
- package/dist/bridges/user/web/test/web-access.unit.test.js.map +1 -1
- package/dist/core/bridge.d.ts +11 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +17 -2
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/test/build-action.unit.test.d.ts +2 -0
- package/dist/core/test/build-action.unit.test.d.ts.map +1 -0
- package/dist/core/test/build-action.unit.test.js +28 -0
- package/dist/core/test/build-action.unit.test.js.map +1 -0
- package/dist/test/ci-required-checks.unit.test.d.ts +2 -0
- package/dist/test/ci-required-checks.unit.test.d.ts.map +1 -0
- package/dist/test/ci-required-checks.unit.test.js +137 -0
- package/dist/test/ci-required-checks.unit.test.js.map +1 -0
- package/dist/test/claude-command.unit.test.js +2 -21
- package/dist/test/claude-command.unit.test.js.map +1 -1
- package/dist/test/conformance/corpus-files.d.ts +11 -0
- package/dist/test/conformance/corpus-files.d.ts.map +1 -0
- package/dist/test/conformance/corpus-files.js +71 -0
- package/dist/test/conformance/corpus-files.js.map +1 -0
- package/dist/test/conformance/corpus-types.d.ts +62 -0
- package/dist/test/conformance/corpus-types.d.ts.map +1 -0
- package/dist/test/conformance/corpus-types.js +8 -0
- package/dist/test/conformance/corpus-types.js.map +1 -0
- package/dist/test/conformance/corpus.d.ts +34 -0
- package/dist/test/conformance/corpus.d.ts.map +1 -0
- package/dist/test/conformance/corpus.js +134 -0
- package/dist/test/conformance/corpus.js.map +1 -0
- package/dist/test/conformance/read-json.d.ts +2 -0
- package/dist/test/conformance/read-json.d.ts.map +1 -0
- package/dist/test/conformance/read-json.js +7 -0
- package/dist/test/conformance/read-json.js.map +1 -0
- package/dist/test/conformance/text.d.ts +10 -0
- package/dist/test/conformance/text.d.ts.map +1 -0
- package/dist/test/conformance/text.js +64 -0
- package/dist/test/conformance/text.js.map +1 -0
- package/dist/test/conformance/validate.d.ts +14 -0
- package/dist/test/conformance/validate.d.ts.map +1 -0
- package/dist/test/conformance/validate.js +85 -0
- package/dist/test/conformance/validate.js.map +1 -0
- package/dist/test/conformance-functions.helper.d.ts +19 -0
- package/dist/test/conformance-functions.helper.d.ts.map +1 -0
- package/dist/test/conformance-functions.helper.js +583 -0
- package/dist/test/conformance-functions.helper.js.map +1 -0
- package/dist/test/conformance.unit.test.d.ts +2 -0
- package/dist/test/conformance.unit.test.d.ts.map +1 -0
- package/dist/test/conformance.unit.test.js +358 -0
- package/dist/test/conformance.unit.test.js.map +1 -0
- package/dist/test/error-reporting.unit.test.js +2 -90
- package/dist/test/error-reporting.unit.test.js.map +1 -1
- package/dist/test/version-report-actions.unit.test.d.ts +1 -1
- package/dist/test/version-report-actions.unit.test.js +2 -55
- package/dist/test/version-report-actions.unit.test.js.map +1 -1
- package/package.json +4 -2
- package/src/core/bridge.ts +30 -1
- package/src/core/index.ts +1 -0
- package/dist/core/test/bridge.unit.test.d.ts +0 -5
- package/dist/core/test/bridge.unit.test.d.ts.map +0 -1
- package/dist/core/test/bridge.unit.test.js +0 -119
- package/dist/core/test/bridge.unit.test.js.map +0 -1
- package/dist/test/agent-table.unit.test.d.ts +0 -5
- package/dist/test/agent-table.unit.test.d.ts.map +0 -1
- package/dist/test/agent-table.unit.test.js +0 -53
- package/dist/test/agent-table.unit.test.js.map +0 -1
- package/dist/test/bind-retry.unit.test.d.ts +0 -2
- package/dist/test/bind-retry.unit.test.d.ts.map +0 -1
- package/dist/test/bind-retry.unit.test.js +0 -42
- package/dist/test/bind-retry.unit.test.js.map +0 -1
- package/dist/test/default-command.unit.test.d.ts +0 -2
- package/dist/test/default-command.unit.test.d.ts.map +0 -1
- package/dist/test/default-command.unit.test.js +0 -26
- package/dist/test/default-command.unit.test.js.map +0 -1
- package/dist/test/delegation-policy.unit.test.d.ts +0 -5
- package/dist/test/delegation-policy.unit.test.d.ts.map +0 -1
- package/dist/test/delegation-policy.unit.test.js +0 -52
- package/dist/test/delegation-policy.unit.test.js.map +0 -1
- package/dist/test/display-name.unit.test.d.ts +0 -5
- package/dist/test/display-name.unit.test.d.ts.map +0 -1
- package/dist/test/display-name.unit.test.js +0 -65
- package/dist/test/display-name.unit.test.js.map +0 -1
- package/dist/test/machine-list-groups.unit.test.d.ts +0 -5
- package/dist/test/machine-list-groups.unit.test.d.ts.map +0 -1
- package/dist/test/machine-list-groups.unit.test.js +0 -61
- package/dist/test/machine-list-groups.unit.test.js.map +0 -1
- package/dist/test/relay-selection.unit.test.d.ts +0 -5
- package/dist/test/relay-selection.unit.test.d.ts.map +0 -1
- package/dist/test/relay-selection.unit.test.js +0 -103
- package/dist/test/relay-selection.unit.test.js.map +0 -1
- package/dist/test/request-timeouts.unit.test.d.ts +0 -2
- package/dist/test/request-timeouts.unit.test.d.ts.map +0 -1
- package/dist/test/request-timeouts.unit.test.js +0 -28
- package/dist/test/request-timeouts.unit.test.js.map +0 -1
- package/dist/test/room-discovery.unit.test.d.ts +0 -2
- package/dist/test/room-discovery.unit.test.d.ts.map +0 -1
- package/dist/test/room-discovery.unit.test.js +0 -29
- package/dist/test/room-discovery.unit.test.js.map +0 -1
- package/dist/test/room-lookup.unit.test.d.ts +0 -2
- package/dist/test/room-lookup.unit.test.d.ts.map +0 -1
- package/dist/test/room-lookup.unit.test.js +0 -59
- package/dist/test/room-lookup.unit.test.js.map +0 -1
- package/dist/test/room-path.unit.test.d.ts +0 -2
- package/dist/test/room-path.unit.test.d.ts.map +0 -1
- package/dist/test/room-path.unit.test.js +0 -54
- package/dist/test/room-path.unit.test.js.map +0 -1
- package/dist/test/send-outcome.unit.test.d.ts +0 -2
- package/dist/test/send-outcome.unit.test.d.ts.map +0 -1
- package/dist/test/send-outcome.unit.test.js +0 -52
- package/dist/test/send-outcome.unit.test.js.map +0 -1
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The call table the TypeScript conformance runner (`conformance.unit.test.ts`) resolves a corpus case's `function` and `schema` names in. Each entry narrows its JSON arguments, builds any object the function takes that JSON cannot carry (a Set, a Map, a callback), calls the function and returns plain data. A case never names anything but a pure function of its arguments.
|
|
3
|
+
*/
|
|
4
|
+
import { AGENT_SELF_GOSSIP_KEY, DEFAULT_PRESENCE_STALE_AFTER_MS, HOSTED_ROOMS_GOSSIP_KEY, PRESENCE_GOSSIP_KEY, PRESENCE_READVERTISE_INTERVAL_MS, hostedRoomAdverts, summariseAgentSelfAdvert, summariseHostedRooms, } from "../core/gossip-extensions.js";
|
|
5
|
+
import { inviterAgentExtension, parseInviterAgentExtension, parseRoomStateExtension, roomStateExtension, } from "../core/room-wire-extensions.js";
|
|
6
|
+
import { buildAction, formatDeliveryEvent, isActionableEvent, MCP_TOOL_PARAMS, } from "../core/bridge.js";
|
|
7
|
+
import { retryOnAddrInUse } from "../core/bind-retry.js";
|
|
8
|
+
import { isClaudeCodeComm } from "../bridges/claude-code/claudeCommand.js";
|
|
9
|
+
import { resolveDefaultCommand } from "../core/default-command.js";
|
|
10
|
+
import { resolveDelegationsRemaining } from "../core/delegation-policy.js";
|
|
11
|
+
import { formatDisplayName, formatNames, parseDisplayName, shortId, } from "../core/display-name.js";
|
|
12
|
+
import { agentTable } from "../core/agent-table.js";
|
|
13
|
+
import { createMeshErrorReporter, describeMeshError, formatMeshError, } from "../core/error-reporting.js";
|
|
14
|
+
import { groupAgentsByMachine } from "../core/machine-list-groups.js";
|
|
15
|
+
import { PeerLinkError } from "../core/peer-link-error.js";
|
|
16
|
+
import { selectRelay } from "../core/relay-selection.js";
|
|
17
|
+
import { APPROVAL_RESPONSE_GRACE_MS, ROOM_JOIN_APPROVAL_TIMEOUT_MS, ROOM_REQUEST_TIMEOUT_MS, manageRequestTimeoutMs, } from "../core/request-timeouts.js";
|
|
18
|
+
import { isHostedRoomAdvert } from "../core/room-discovery.js";
|
|
19
|
+
import { resolveRoomId } from "../core/room-lookup.js";
|
|
20
|
+
import { dmRoomPath, ownerNamedRoomPath, parseRoomPath, slugRoomName, } from "../core/room-path.js";
|
|
21
|
+
import { accessCookieName, accessUrls, authorise, canonicalAddress, isLoopbackAddress, isWildcardHost, localWebUrl, requiresAccessToken, resolveWebBindHost, tokensMatch, } from "../bridges/user/web/web-access.js";
|
|
22
|
+
import { hasConnectedBefore, shouldAutoConnect, } from "../bridges/user/web/frontend/boot-logic.js";
|
|
23
|
+
import { parseInput, routeAction } from "../bridges/user/web/frontend/input.js";
|
|
24
|
+
import { deliveryEventToMessage, roomMessageToDisplay, } from "../bridges/user/web/frontend/messages.js";
|
|
25
|
+
import { buildProjectTree } from "../bridges/user/web/frontend/project-tree.js";
|
|
26
|
+
import { isServedByBridge } from "../bridges/user/web/frontend/served-by-bridge.js";
|
|
27
|
+
import { parseDeepLink, resolveDeepLink, syncUrl, } from "../bridges/user/web/frontend/url-sync.js";
|
|
28
|
+
import { RoomMessageSchema, RoomSchema } from "../core/types.js";
|
|
29
|
+
import { classifyManageOutcome, describeRefusal, } from "../core/send-outcome.js";
|
|
30
|
+
import { CommsError } from "../core/store.js";
|
|
31
|
+
import { AgentIdentitySchema, CommsActionSchema, DeliveryEventSchema, } from "../core/types.js";
|
|
32
|
+
import { formatListedAgentVersions, handleQueryVersion, } from "../core/version-report-actions.js";
|
|
33
|
+
function isRecord(value) {
|
|
34
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35
|
+
}
|
|
36
|
+
function str(value) {
|
|
37
|
+
if (typeof value !== "string")
|
|
38
|
+
throw new TypeError("expected a string");
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
function num(value) {
|
|
42
|
+
if (typeof value !== "number")
|
|
43
|
+
throw new TypeError("expected a number");
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
function bool(value) {
|
|
47
|
+
if (typeof value !== "boolean")
|
|
48
|
+
throw new TypeError("expected a boolean");
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
function list(value) {
|
|
52
|
+
if (!Array.isArray(value))
|
|
53
|
+
throw new TypeError("expected a list");
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
function rec(value) {
|
|
57
|
+
if (!isRecord(value))
|
|
58
|
+
throw new TypeError("expected an object");
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
function strings(value) {
|
|
62
|
+
return list(value).map(str);
|
|
63
|
+
}
|
|
64
|
+
/** The field of an object as a string, or undefined when it is absent. */
|
|
65
|
+
function optStr(object, key) {
|
|
66
|
+
const value = object[key];
|
|
67
|
+
return value === undefined ? undefined : str(value);
|
|
68
|
+
}
|
|
69
|
+
function displayParts(value) {
|
|
70
|
+
const parts = rec(value);
|
|
71
|
+
const petname = optStr(parts, "petname");
|
|
72
|
+
const selfName = optStr(parts, "selfName");
|
|
73
|
+
return {
|
|
74
|
+
id: str(parts.id),
|
|
75
|
+
...(petname !== undefined && { petname }),
|
|
76
|
+
...(selfName !== undefined && { selfName }),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** An error built the way the transport raises one: a plain error, an errno error, or a PeerLinkError around either. */
|
|
80
|
+
function buildError(value) {
|
|
81
|
+
const spec = rec(value);
|
|
82
|
+
const kind = str(spec.kind);
|
|
83
|
+
if (kind === "errno" || kind === "error") {
|
|
84
|
+
const error = new Error(str(spec.message));
|
|
85
|
+
if (kind === "errno")
|
|
86
|
+
error.code = str(spec.code);
|
|
87
|
+
return error;
|
|
88
|
+
}
|
|
89
|
+
const cause = spec.cause === undefined
|
|
90
|
+
? new Error("unspecified")
|
|
91
|
+
: buildError(spec.cause);
|
|
92
|
+
const action = str(spec.action);
|
|
93
|
+
if (action !== "dial" && action !== "send")
|
|
94
|
+
throw new TypeError("unknown action");
|
|
95
|
+
const port = spec.port === undefined ? undefined : num(spec.port);
|
|
96
|
+
return new PeerLinkError(action, str(spec.peerId), port, cause);
|
|
97
|
+
}
|
|
98
|
+
function agent(id) {
|
|
99
|
+
return AgentIdentitySchema.parse({
|
|
100
|
+
id,
|
|
101
|
+
version: 0,
|
|
102
|
+
name: id,
|
|
103
|
+
harness: "test",
|
|
104
|
+
cwd: "/test",
|
|
105
|
+
pid: 1,
|
|
106
|
+
startedAt: "",
|
|
107
|
+
visibility: "visible",
|
|
108
|
+
status: "active",
|
|
109
|
+
tags: [],
|
|
110
|
+
subscribedRooms: [],
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** What an async function made of a scripted series of attempts: its result or error, and how many attempts it made. */
|
|
114
|
+
async function runBindRetry(script, retries, delayMs) {
|
|
115
|
+
const steps = list(script).map(rec);
|
|
116
|
+
const rejections = new Map();
|
|
117
|
+
let attempts = 0;
|
|
118
|
+
const attempt = async () => {
|
|
119
|
+
const index = Math.min(attempts, steps.length - 1);
|
|
120
|
+
const step = steps[index];
|
|
121
|
+
attempts += 1;
|
|
122
|
+
if (step === undefined)
|
|
123
|
+
throw new TypeError("an empty script");
|
|
124
|
+
const rejects = step.rejects;
|
|
125
|
+
if (rejects !== undefined) {
|
|
126
|
+
const error = rejections.get(index) ?? new Error(str(rejects));
|
|
127
|
+
rejections.set(index, error);
|
|
128
|
+
return Promise.reject(error);
|
|
129
|
+
}
|
|
130
|
+
return Promise.resolve(str(step.resolves));
|
|
131
|
+
};
|
|
132
|
+
try {
|
|
133
|
+
return {
|
|
134
|
+
result: await retryOnAddrInUse(attempt, retries, delayMs),
|
|
135
|
+
attempts,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
return {
|
|
140
|
+
error: error instanceof Error ? error.message : String(error),
|
|
141
|
+
rethrownRejection: [...rejections.values()].some((sent) => sent === error),
|
|
142
|
+
attempts,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function relaySelection(value) {
|
|
147
|
+
const input = rec(value);
|
|
148
|
+
const trusted = strings(input.trusted);
|
|
149
|
+
const offers = list(input.offers).map((offer) => {
|
|
150
|
+
const parts = rec(offer);
|
|
151
|
+
return {
|
|
152
|
+
deviceHex: str(parts.deviceHex),
|
|
153
|
+
addresses: strings(parts.addresses),
|
|
154
|
+
machineLocal: bool(parts.machineLocal),
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
return selectRelay({
|
|
158
|
+
offers,
|
|
159
|
+
isTrusted: (hex) => trusted.includes(hex),
|
|
160
|
+
ownDeviceHex: str(input.own),
|
|
161
|
+
publicHubUrl: str(input.publicHub),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
function reporterLines(errors) {
|
|
165
|
+
const lines = [];
|
|
166
|
+
const report = createMeshErrorReporter((line) => {
|
|
167
|
+
lines.push(line);
|
|
168
|
+
});
|
|
169
|
+
for (const error of list(errors))
|
|
170
|
+
report(buildError(error));
|
|
171
|
+
return lines;
|
|
172
|
+
}
|
|
173
|
+
function versionStore(value) {
|
|
174
|
+
const spec = rec(value);
|
|
175
|
+
const agentComms = optStr(spec, "agentComms");
|
|
176
|
+
const wireMeshCore = optStr(spec, "wireMeshCore");
|
|
177
|
+
const ccPeer = optStr(spec, "ccPeer");
|
|
178
|
+
return {
|
|
179
|
+
...(agentComms !== undefined && {
|
|
180
|
+
getPeerAgentCommsVersion: () => agentComms,
|
|
181
|
+
}),
|
|
182
|
+
...(wireMeshCore !== undefined && {
|
|
183
|
+
getPeerWireMeshCoreVersion: () => wireMeshCore,
|
|
184
|
+
}),
|
|
185
|
+
...(ccPeer !== undefined && { getPeerCcPeerVersion: () => ccPeer }),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function accessPolicy(value) {
|
|
189
|
+
const parts = rec(value);
|
|
190
|
+
const localClientAddresses = new Set(strings(parts.localClientAddresses ?? []));
|
|
191
|
+
return {
|
|
192
|
+
token: optStr(parts, "token"),
|
|
193
|
+
bindHost: str(parts.bindHost),
|
|
194
|
+
port: num(parts.port),
|
|
195
|
+
localClientAddresses: () => localClientAddresses,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function accessRequest(value) {
|
|
199
|
+
const parts = rec(value);
|
|
200
|
+
return {
|
|
201
|
+
method: str(parts.method),
|
|
202
|
+
url: str(parts.url),
|
|
203
|
+
remoteAddress: str(parts.remoteAddress),
|
|
204
|
+
headers: Object.fromEntries(Object.entries(rec(parts.headers)).map(([key, header]) => [
|
|
205
|
+
key,
|
|
206
|
+
str(header),
|
|
207
|
+
])),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function interfaceTable(value) {
|
|
211
|
+
const table = {};
|
|
212
|
+
for (const entry of list(value).map(rec)) {
|
|
213
|
+
const name = str(entry.name);
|
|
214
|
+
const base = {
|
|
215
|
+
address: str(entry.address),
|
|
216
|
+
internal: bool(entry.internal),
|
|
217
|
+
mac: "00:00:00:00:00:00",
|
|
218
|
+
};
|
|
219
|
+
const info = entry.family === "IPv6"
|
|
220
|
+
? {
|
|
221
|
+
...base,
|
|
222
|
+
family: "IPv6",
|
|
223
|
+
netmask: "ffff:ffff:ffff:ffff::",
|
|
224
|
+
cidr: null,
|
|
225
|
+
scopeid: 0,
|
|
226
|
+
}
|
|
227
|
+
: { ...base, family: "IPv4", netmask: "255.255.255.0", cidr: null };
|
|
228
|
+
(table[name] ??= []).push(info);
|
|
229
|
+
}
|
|
230
|
+
return table;
|
|
231
|
+
}
|
|
232
|
+
/** The dashboard declares its own DeliveryEvent, whose optional fields cannot hold undefined, while the schema's output type allows it; a parsed event never carries an undefined field, since an absent optional key stays absent. */
|
|
233
|
+
function frontendEvent(value) {
|
|
234
|
+
return DeliveryEventSchema.parse(value);
|
|
235
|
+
}
|
|
236
|
+
function optionalString(value) {
|
|
237
|
+
return value === null || value === undefined ? undefined : str(value);
|
|
238
|
+
}
|
|
239
|
+
/** A Storage whose only entry is the connected flag, when one is given. */
|
|
240
|
+
function connectedFlagStorage(flag) {
|
|
241
|
+
const value = optionalString(flag);
|
|
242
|
+
return {
|
|
243
|
+
getItem: () => value ?? null,
|
|
244
|
+
setItem: () => undefined,
|
|
245
|
+
removeItem: () => undefined,
|
|
246
|
+
clear: () => undefined,
|
|
247
|
+
length: 0,
|
|
248
|
+
key: () => null,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function pageLocation(value) {
|
|
252
|
+
const parts = rec(value);
|
|
253
|
+
return { host: str(parts.host), protocol: str(parts.protocol) };
|
|
254
|
+
}
|
|
255
|
+
function frontendRooms(value) {
|
|
256
|
+
return list(value).map((entry) => {
|
|
257
|
+
const parts = rec(entry);
|
|
258
|
+
const id = str(parts.id);
|
|
259
|
+
return {
|
|
260
|
+
id,
|
|
261
|
+
name: optStr(parts, "name") ?? id,
|
|
262
|
+
type: "public",
|
|
263
|
+
owner: "a1",
|
|
264
|
+
createdAt: "",
|
|
265
|
+
description: optStr(parts, "description") ?? "",
|
|
266
|
+
members: [],
|
|
267
|
+
invited: [],
|
|
268
|
+
};
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/** The URLs `syncUrl` hands to `history.replaceState`, with the globals it reads stubbed for the call and put back after. */
|
|
272
|
+
function syncedUrls(state) {
|
|
273
|
+
const parts = rec(state);
|
|
274
|
+
const urls = [];
|
|
275
|
+
const originalHistory = Reflect.get(globalThis, "history");
|
|
276
|
+
const originalLocation = Reflect.get(globalThis, "location");
|
|
277
|
+
const define = (name, value) => {
|
|
278
|
+
Object.defineProperty(globalThis, name, {
|
|
279
|
+
value,
|
|
280
|
+
writable: true,
|
|
281
|
+
configurable: true,
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
define("history", {
|
|
285
|
+
replaceState(_data, _unused, url) {
|
|
286
|
+
urls.push(url ?? "");
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
define("location", {
|
|
290
|
+
href: "http://localhost:19877/",
|
|
291
|
+
pathname: "/",
|
|
292
|
+
search: "",
|
|
293
|
+
hash: "",
|
|
294
|
+
});
|
|
295
|
+
try {
|
|
296
|
+
syncUrl({
|
|
297
|
+
currentRoom: optionalString(parts.currentRoom),
|
|
298
|
+
dmTarget: optionalString(parts.dmTarget),
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
finally {
|
|
302
|
+
define("history", originalHistory);
|
|
303
|
+
define("location", originalLocation);
|
|
304
|
+
}
|
|
305
|
+
return urls;
|
|
306
|
+
}
|
|
307
|
+
/** A room as the extension helpers read it: the fields a case names, and empty ones for the rest. */
|
|
308
|
+
function roomOf(value) {
|
|
309
|
+
const parts = rec(value);
|
|
310
|
+
const type = str(parts.type);
|
|
311
|
+
if (type !== "public" && type !== "private" && type !== "secret") {
|
|
312
|
+
throw new TypeError("expected a room type");
|
|
313
|
+
}
|
|
314
|
+
return RoomSchema.parse({
|
|
315
|
+
id: str(parts.id),
|
|
316
|
+
version: 0,
|
|
317
|
+
name: str(parts.name),
|
|
318
|
+
type,
|
|
319
|
+
owner: str(parts.owner),
|
|
320
|
+
createdAt: "",
|
|
321
|
+
description: str(parts.description),
|
|
322
|
+
members: [],
|
|
323
|
+
invited: [],
|
|
324
|
+
memberJoins: {},
|
|
325
|
+
memberLeaves: {},
|
|
326
|
+
invitedJoins: {},
|
|
327
|
+
invitedLeaves: {},
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
function hostedAdvert(value) {
|
|
331
|
+
const parts = rec(value);
|
|
332
|
+
const type = str(parts.type);
|
|
333
|
+
if (type !== "public" && type !== "private") {
|
|
334
|
+
throw new TypeError("expected a hosted room type");
|
|
335
|
+
}
|
|
336
|
+
return {
|
|
337
|
+
path: str(parts.path),
|
|
338
|
+
name: str(parts.name),
|
|
339
|
+
type,
|
|
340
|
+
description: str(parts.description),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
function selfAdvert(value) {
|
|
344
|
+
const parts = rec(value);
|
|
345
|
+
const optional = (key) => optStr(parts, key);
|
|
346
|
+
const membership = optional("membership");
|
|
347
|
+
const machine = optional("machine");
|
|
348
|
+
const machineName = optional("machineName");
|
|
349
|
+
const principalName = optional("principalName");
|
|
350
|
+
return {
|
|
351
|
+
name: str(parts.name),
|
|
352
|
+
harness: str(parts.harness),
|
|
353
|
+
...(membership !== undefined && { membership }),
|
|
354
|
+
...(machine !== undefined && { machine }),
|
|
355
|
+
...(machineName !== undefined && { machineName }),
|
|
356
|
+
...(principalName !== undefined && { principalName }),
|
|
357
|
+
cwd: str(parts.cwd),
|
|
358
|
+
pid: num(parts.pid),
|
|
359
|
+
startedAt: str(parts.startedAt),
|
|
360
|
+
tags: strings(parts.tags),
|
|
361
|
+
subscribedRooms: strings(parts.subscribedRooms),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
export const FUNCTIONS = {
|
|
365
|
+
"display-name.formatDisplayName": (parts) => formatDisplayName(displayParts(parts)),
|
|
366
|
+
"display-name.formatNames": (parts) => formatNames(displayParts(parts)),
|
|
367
|
+
"display-name.parseDisplayName": (raw) => parseDisplayName(str(raw)),
|
|
368
|
+
"display-name.shortId": (id) => shortId(str(id)),
|
|
369
|
+
"room-path.ownerNamedRoomPath": (owner, name) => ownerNamedRoomPath(str(owner), str(name)),
|
|
370
|
+
"room-path.dmRoomPath": (a, b) => dmRoomPath(str(a), str(b)),
|
|
371
|
+
"room-path.parseRoomPath": (path) => parseRoomPath(str(path)),
|
|
372
|
+
"room-path.slugRoomName": (name) => slugRoomName(str(name)),
|
|
373
|
+
"send-outcome.classifyManageOutcome": (outcome) => {
|
|
374
|
+
const parts = rec(outcome);
|
|
375
|
+
if (parts.result === "ok")
|
|
376
|
+
return classifyManageOutcome({ result: "ok" });
|
|
377
|
+
const message = optStr(parts, "message");
|
|
378
|
+
return classifyManageOutcome({
|
|
379
|
+
result: "error",
|
|
380
|
+
code: str(parts.code),
|
|
381
|
+
...(message !== undefined && { message }),
|
|
382
|
+
});
|
|
383
|
+
},
|
|
384
|
+
"send-outcome.describeRefusal": (refusal) => {
|
|
385
|
+
const parts = rec(refusal);
|
|
386
|
+
const message = optStr(parts, "message");
|
|
387
|
+
return describeRefusal({
|
|
388
|
+
code: str(parts.code),
|
|
389
|
+
...(message !== undefined && { message }),
|
|
390
|
+
});
|
|
391
|
+
},
|
|
392
|
+
"bridge.formatDeliveryEvent": (event) => formatDeliveryEvent(DeliveryEventSchema.parse(event)),
|
|
393
|
+
"bridge.isActionableEvent": (event) => isActionableEvent(DeliveryEventSchema.parse(event)),
|
|
394
|
+
"bridge.buildAction": (params) => buildAction(rec(params)),
|
|
395
|
+
"default-command.resolveDefaultCommand": (args, stdinIsTerminal) => resolveDefaultCommand(strings(args), bool(stdinIsTerminal)),
|
|
396
|
+
"claude-command.isClaudeCodeComm": (comm) => isClaudeCodeComm(str(comm)),
|
|
397
|
+
"delegation-policy.resolveDelegationsRemaining": (policy, capability, bearer, requested) => {
|
|
398
|
+
const parts = rec(policy);
|
|
399
|
+
const overrides = parts.perAgentOverrides;
|
|
400
|
+
const perAgentOverrides = overrides === undefined
|
|
401
|
+
? undefined
|
|
402
|
+
: new Map(Object.entries(rec(overrides)).map(([key, set]) => [
|
|
403
|
+
key,
|
|
404
|
+
new Set(strings(set)),
|
|
405
|
+
]));
|
|
406
|
+
const resolved = {
|
|
407
|
+
nonDelegable: new Set(strings(parts.nonDelegable)),
|
|
408
|
+
...(perAgentOverrides !== undefined && { perAgentOverrides }),
|
|
409
|
+
};
|
|
410
|
+
if (requested === undefined) {
|
|
411
|
+
return resolveDelegationsRemaining(resolved, str(capability), str(bearer), undefined);
|
|
412
|
+
}
|
|
413
|
+
return resolveDelegationsRemaining(resolved, str(capability), str(bearer), num(requested));
|
|
414
|
+
},
|
|
415
|
+
"request-timeouts.manageRequestTimeoutMs": (command, approvalWindowMs) => {
|
|
416
|
+
const parts = rec(command);
|
|
417
|
+
return manageRequestTimeoutMs({ verb: str(parts.verb), params: rec(parts.params) }, num(approvalWindowMs));
|
|
418
|
+
},
|
|
419
|
+
"request-timeouts.constants": () => ({
|
|
420
|
+
approvalResponseGraceMs: APPROVAL_RESPONSE_GRACE_MS,
|
|
421
|
+
roomJoinApprovalTimeoutMs: ROOM_JOIN_APPROVAL_TIMEOUT_MS,
|
|
422
|
+
roomRequestTimeoutMs: ROOM_REQUEST_TIMEOUT_MS,
|
|
423
|
+
}),
|
|
424
|
+
"bind-retry.retryOnAddrInUse": async (script, retries, delayMs) => runBindRetry(script, num(retries), num(delayMs)),
|
|
425
|
+
"error-reporting.describeMeshError": (error) => describeMeshError(buildError(error)),
|
|
426
|
+
"error-reporting.formatMeshError": (error) => formatMeshError(buildError(error)),
|
|
427
|
+
"error-reporting.reportedLines": (errors) => reporterLines(errors),
|
|
428
|
+
"room-lookup.resolveRoomId": (candidates, roomIdOrName) => resolveRoomId(list(candidates).map((candidate) => {
|
|
429
|
+
const parts = rec(candidate);
|
|
430
|
+
return { id: str(parts.id), name: str(parts.name) };
|
|
431
|
+
}), str(roomIdOrName)),
|
|
432
|
+
"room-discovery.isHostedRoomAdvert": (value) => isHostedRoomAdvert(value),
|
|
433
|
+
"agent-table.agentTable": (rows) => {
|
|
434
|
+
const typed = list(rows).map((row) => {
|
|
435
|
+
const parts = rec(row);
|
|
436
|
+
return {
|
|
437
|
+
id: str(parts.id),
|
|
438
|
+
name: str(parts.name),
|
|
439
|
+
harness: str(parts.harness),
|
|
440
|
+
status: str(parts.status),
|
|
441
|
+
visibility: str(parts.visibility),
|
|
442
|
+
cwd: str(parts.cwd),
|
|
443
|
+
};
|
|
444
|
+
});
|
|
445
|
+
const table = agentTable(typed);
|
|
446
|
+
return { header: table.header, lines: typed.map((row) => table.line(row)) };
|
|
447
|
+
},
|
|
448
|
+
"machine-list-groups.groupAgentsByMachine": (agentIds, machines, ownMachine, namerTemplate) => {
|
|
449
|
+
const agents = strings(agentIds).map(agent);
|
|
450
|
+
const placed = machines === null
|
|
451
|
+
? undefined
|
|
452
|
+
: new Map(list(machines).map((pair) => {
|
|
453
|
+
const [device, machine] = strings(pair);
|
|
454
|
+
if (device === undefined || machine === undefined)
|
|
455
|
+
throw new TypeError("a pair");
|
|
456
|
+
return [device, machine];
|
|
457
|
+
}));
|
|
458
|
+
const template = str(namerTemplate);
|
|
459
|
+
return groupAgentsByMachine(agents, placed, ownMachine === null ? undefined : str(ownMachine), (id) => template.replaceAll("{id}", id)).map((group) => ({
|
|
460
|
+
heading: group.heading,
|
|
461
|
+
agents: group.agents.map((member) => member.id),
|
|
462
|
+
}));
|
|
463
|
+
},
|
|
464
|
+
"relay-selection.selectRelay": relaySelection,
|
|
465
|
+
"gossip-extensions.hostedRoomAdverts": (rooms, ownerId) => hostedRoomAdverts(new Map(list(rooms).map((entry) => [str(rec(entry).id), roomOf(entry)])), str(ownerId)),
|
|
466
|
+
"gossip-extensions.summariseHostedRooms": (adverts) => summariseHostedRooms(list(adverts).map(hostedAdvert)),
|
|
467
|
+
"gossip-extensions.summariseAgentSelfAdvert": (advert) => summariseAgentSelfAdvert(selfAdvert(advert)),
|
|
468
|
+
"gossip-extensions.constants": () => ({
|
|
469
|
+
agentSelfGossipKey: AGENT_SELF_GOSSIP_KEY,
|
|
470
|
+
defaultPresenceStaleAfterMs: DEFAULT_PRESENCE_STALE_AFTER_MS,
|
|
471
|
+
hostedRoomsGossipKey: HOSTED_ROOMS_GOSSIP_KEY,
|
|
472
|
+
presenceGossipKey: PRESENCE_GOSSIP_KEY,
|
|
473
|
+
presenceReadvertiseIntervalMs: PRESENCE_READVERTISE_INTERVAL_MS,
|
|
474
|
+
}),
|
|
475
|
+
"room-wire-extensions.roomStateExtension": (room) => roomStateExtension(room === null ? undefined : roomOf(room)),
|
|
476
|
+
"room-wire-extensions.parseRoomStateExtension": (value) => parseRoomStateExtension(value),
|
|
477
|
+
"room-wire-extensions.inviterAgentExtension": (inviter) => {
|
|
478
|
+
const parts = rec(inviter);
|
|
479
|
+
return inviterAgentExtension({
|
|
480
|
+
...agent(str(parts.name)),
|
|
481
|
+
name: str(parts.name),
|
|
482
|
+
cwd: str(parts.cwd),
|
|
483
|
+
});
|
|
484
|
+
},
|
|
485
|
+
"room-wire-extensions.parseInviterAgentExtension": (value) => parseInviterAgentExtension(value),
|
|
486
|
+
"input.parseInput": (text, room, dm) => parseInput(str(text), optionalString(room), optionalString(dm)),
|
|
487
|
+
"input.routeParsedInput": (text, room, dm) => routeAction(parseInput(str(text), optionalString(room), optionalString(dm))) ?? null,
|
|
488
|
+
"url-sync.parseDeepLink": (search) => parseDeepLink(str(search)),
|
|
489
|
+
"url-sync.resolveParsedDeepLink": (search, rooms) => {
|
|
490
|
+
const link = parseDeepLink(str(search));
|
|
491
|
+
if (link === undefined)
|
|
492
|
+
throw new Error("not a deep link");
|
|
493
|
+
return resolveDeepLink(link, frontendRooms(rooms));
|
|
494
|
+
},
|
|
495
|
+
"url-sync.syncedUrls": (state) => syncedUrls(state),
|
|
496
|
+
"boot-logic.hasConnectedBefore": (flag) => hasConnectedBefore(connectedFlagStorage(flag)),
|
|
497
|
+
"boot-logic.shouldAutoConnect": (location, flag) => shouldAutoConnect(pageLocation(location), connectedFlagStorage(flag)),
|
|
498
|
+
"served-by-bridge.isServedByBridge": (location) => isServedByBridge(pageLocation(location)),
|
|
499
|
+
"messages.deliveryEventToMessage": (event, currentRoom) => deliveryEventToMessage(frontendEvent(event), optionalString(currentRoom)),
|
|
500
|
+
"messages.roomMessageToDisplay": (message) => roomMessageToDisplay(RoomMessageSchema.parse(message)),
|
|
501
|
+
"project-tree.buildProjectTree": (agents, rooms) => buildProjectTree(list(agents).map((entry) => {
|
|
502
|
+
const parts = rec(entry);
|
|
503
|
+
const id = str(parts.id);
|
|
504
|
+
return {
|
|
505
|
+
id,
|
|
506
|
+
name: optStr(parts, "name") ?? `agent-${id}`,
|
|
507
|
+
harness: "pi",
|
|
508
|
+
cwd: optStr(parts, "cwd") ?? `/home/user/project-${id}`,
|
|
509
|
+
pid: 1,
|
|
510
|
+
startedAt: "",
|
|
511
|
+
visibility: "visible",
|
|
512
|
+
status: "active",
|
|
513
|
+
tags: [],
|
|
514
|
+
subscribedRooms: [],
|
|
515
|
+
};
|
|
516
|
+
}), frontendRooms(rooms)),
|
|
517
|
+
"web-access.authorise": (policy, request) => authorise(accessPolicy(policy), accessRequest(request)),
|
|
518
|
+
"web-access.accessCookieName": (port) => accessCookieName(num(port)),
|
|
519
|
+
"web-access.resolveWebBindHost": (option, environment) => resolveWebBindHost(option === null ? undefined : str(option), Object.fromEntries(Object.entries(rec(environment)).map(([key, v]) => [key, str(v)]))),
|
|
520
|
+
"web-access.wildcardAfterResolve": (spelling) => {
|
|
521
|
+
const host = resolveWebBindHost(str(spelling), {});
|
|
522
|
+
return {
|
|
523
|
+
requiresAccessToken: requiresAccessToken(host),
|
|
524
|
+
wildcard: isWildcardHost(host),
|
|
525
|
+
};
|
|
526
|
+
},
|
|
527
|
+
"web-access.canonicalAddress": (address) => canonicalAddress(str(address)),
|
|
528
|
+
"web-access.isWildcardHost": (host) => isWildcardHost(str(host)),
|
|
529
|
+
"web-access.localWebUrl": (host, port) => localWebUrl(str(host), num(port)),
|
|
530
|
+
"web-access.requiresAccessToken": (host) => requiresAccessToken(str(host)),
|
|
531
|
+
"web-access.isLoopbackAddress": (address) => isLoopbackAddress(str(address)),
|
|
532
|
+
"web-access.tokensMatch": (presented, expected) => tokensMatch(str(presented), str(expected)),
|
|
533
|
+
"web-access.accessUrls": (policy, interfaces) => {
|
|
534
|
+
const parts = rec(policy);
|
|
535
|
+
return accessUrls({ ...accessPolicy(parts), token: str(parts.token) }, () => interfaceTable(interfaces));
|
|
536
|
+
},
|
|
537
|
+
"version-report-actions.handleQueryVersion": async (store, action) => {
|
|
538
|
+
const parts = rec(store);
|
|
539
|
+
const query = parts.queryVersion;
|
|
540
|
+
const result = await handleQueryVersion(query === undefined
|
|
541
|
+
? {}
|
|
542
|
+
: {
|
|
543
|
+
queryVersion: async (deviceId) => {
|
|
544
|
+
if (deviceId !== str(rec(action).device))
|
|
545
|
+
throw new Error("asked for another device");
|
|
546
|
+
return Promise.resolve("error" in rec(query)
|
|
547
|
+
? { error: str(rec(query).error) }
|
|
548
|
+
: { version: str(rec(query).version) });
|
|
549
|
+
},
|
|
550
|
+
}, { action: "query_version", device: str(rec(action).device) });
|
|
551
|
+
return { content: result.content, isError: result.isError };
|
|
552
|
+
},
|
|
553
|
+
"version-report-actions.formatListedAgentVersions": (store, deviceId) => formatListedAgentVersions(versionStore(store), str(deviceId), false, undefined),
|
|
554
|
+
};
|
|
555
|
+
function toIssues(error) {
|
|
556
|
+
return {
|
|
557
|
+
ok: false,
|
|
558
|
+
issues: error.issues.map((issue) => ({
|
|
559
|
+
path: issue.path.map((step) => typeof step === "number" ? step : String(step)),
|
|
560
|
+
code: issue.code,
|
|
561
|
+
message: issue.message,
|
|
562
|
+
})),
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
export const SCHEMAS = {
|
|
566
|
+
"tool-params": (input) => {
|
|
567
|
+
const result = MCP_TOOL_PARAMS.safeParse(input);
|
|
568
|
+
return result.success
|
|
569
|
+
? { ok: true, value: result.data }
|
|
570
|
+
: toIssues(result.error);
|
|
571
|
+
},
|
|
572
|
+
"comms-action": (input) => {
|
|
573
|
+
const result = CommsActionSchema.safeParse(input);
|
|
574
|
+
return result.success
|
|
575
|
+
? { ok: true, value: result.data }
|
|
576
|
+
: toIssues(result.error);
|
|
577
|
+
},
|
|
578
|
+
};
|
|
579
|
+
/** Exposed for the CommsError code check the runner makes on a `throws` expectation. */
|
|
580
|
+
export function errorCode(error) {
|
|
581
|
+
return error instanceof CommsError ? error.code : undefined;
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=conformance-functions.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance-functions.helper.js","sourceRoot":"","sources":["../../src/test/conformance-functions.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/conformance.unit.test.ts"],"names":[],"mappings":""}
|