agent-comms 4.1.10 → 4.2.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -1
- package/dist/bridges/cc-peer/approval-commands.d.ts +26 -0
- package/dist/bridges/cc-peer/approval-commands.d.ts.map +1 -0
- package/dist/bridges/cc-peer/approval-commands.js +56 -0
- package/dist/bridges/cc-peer/approval-commands.js.map +1 -0
- package/dist/bridges/cc-peer/bridge.d.ts +2 -0
- package/dist/bridges/cc-peer/bridge.d.ts.map +1 -1
- package/dist/bridges/cc-peer/bridge.js +16 -8
- package/dist/bridges/cc-peer/bridge.js.map +1 -1
- package/dist/bridges/cc-peer/default-front.d.ts +2 -0
- package/dist/bridges/cc-peer/default-front.d.ts.map +1 -1
- package/dist/bridges/cc-peer/default-front.js +1 -0
- package/dist/bridges/cc-peer/default-front.js.map +1 -1
- package/dist/bridges/cc-peer/front-relay.d.ts +2 -0
- package/dist/bridges/cc-peer/front-relay.d.ts.map +1 -1
- package/dist/bridges/cc-peer/front-relay.js +17 -9
- package/dist/bridges/cc-peer/front-relay.js.map +1 -1
- package/dist/bridges/cc-peer/front-runtime.d.ts +2 -0
- package/dist/bridges/cc-peer/front-runtime.d.ts.map +1 -1
- package/dist/bridges/cc-peer/front-runtime.js +2 -0
- package/dist/bridges/cc-peer/front-runtime.js.map +1 -1
- package/dist/bridges/cc-peer/run.d.ts.map +1 -1
- package/dist/bridges/cc-peer/run.js +5 -1
- package/dist/bridges/cc-peer/run.js.map +1 -1
- package/dist/test/cc-peer-approval-commands.unit.test.d.ts +2 -0
- package/dist/test/cc-peer-approval-commands.unit.test.d.ts.map +1 -0
- package/dist/test/cc-peer-approval-commands.unit.test.js +110 -0
- package/dist/test/cc-peer-approval-commands.unit.test.js.map +1 -0
- package/dist/test/cc-peer-bridge.unit.test.js +107 -0
- package/dist/test/cc-peer-bridge.unit.test.js.map +1 -1
- package/dist/test/cc-peer-front-relay.unit.test.js +113 -0
- package/dist/test/cc-peer-front-relay.unit.test.js.map +1 -1
- package/dist/test/cc-peer-fronted-approval.integration.test.d.ts +5 -0
- package/dist/test/cc-peer-fronted-approval.integration.test.d.ts.map +1 -0
- package/dist/test/cc-peer-fronted-approval.integration.test.js +125 -0
- package/dist/test/cc-peer-fronted-approval.integration.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/ExaDev/agent-comms)
|
|
4
4
|
[](https://www.npmjs.com/package/agent-comms)
|
|
5
|
-
[](https://github.com/ExaDev/agent-comms/releases/tag/v4.2.0)
|
|
6
6
|
[](https://github.com/ExaDev/agent-comms/actions)
|
|
7
7
|
|
|
8
8
|
Cross-harness communication mesh for LLM agents: rooms, DMs, presence, and visibility over TCP with zero filesystem dependencies.
|
|
@@ -163,6 +163,8 @@ cc-peer allows one peer per process, so `bridge cc-peer` lends its own peer to t
|
|
|
163
163
|
|
|
164
164
|
Claude Code itself decides whether a message from another local process reaches a session. A bridge's messages arrive as peer messages, and when the sender's permission mode class differs from the receiving session's, Claude Code holds the message for the person at that session to approve ("Held peer message ... set \"crossSessionInbound\" to \"accept\""). Until they approve it or set `crossSessionInbound` to `accept` in their Claude Code settings, nothing from the mesh reaches that session.
|
|
165
165
|
|
|
166
|
+
A session reached only through cc-peer has no agent-comms tool, so it can't call `room_accept` or `room_reject`. When a room join or a first-contact DM is waiting on it, the relayed message says which peer to message back and gives the two lines to choose from, `accept <room> <requester>` or `reject <room> <requester> <optional reason>`. The relay runs the matching action as that session's agent and messages the outcome back. Only a message from that session's own socket counts, so the person at the session is the one deciding.
|
|
167
|
+
|
|
166
168
|
The fronted session can reply, not just receive. A message with a single originating mesh agent (a DM or a room message) materialises a lazy, per-correspondent reply alias via `cc-peer`'s own `AliasPool` (the `cc-peer/alias-pool` subpath) — a real, natively-discoverable local peer the session can address the way it addresses any other local `cc-peer` peer. Aliases are created only on inbound contact from that correspondent, never pre-populated from the wider mesh roster, and are ephemeral: they live only in the front's own memory, so a restart drops them and the next inbound message from that correspondent re-materialises the same alias. A reply landing on an alias the front no longer recognises (e.g. after a restart) is reported back into the session as a clear error rather than silently dropped.
|
|
167
169
|
|
|
168
170
|
## Adding a new harness
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lets a cc-peer session answer a room join or first-contact DM request. A session reached only through cc-peer (no agent-comms tool of its own) cannot call room_accept or room_reject, so the relayed request tells it exactly what to message back, and the relay runs the same tool action when that message arrives. The person at the session decides: only a message from that session's own socket ever reaches its relay.
|
|
3
|
+
*/
|
|
4
|
+
import type { CommsContext, CommsTool } from "../../core/tool.js";
|
|
5
|
+
import type { DeliveryEvent } from "../../core/types.js";
|
|
6
|
+
export type ApprovalCommand = {
|
|
7
|
+
kind: "accept";
|
|
8
|
+
room: string;
|
|
9
|
+
requesterId: string;
|
|
10
|
+
} | {
|
|
11
|
+
kind: "reject";
|
|
12
|
+
room: string;
|
|
13
|
+
requesterId: string;
|
|
14
|
+
reason?: string;
|
|
15
|
+
};
|
|
16
|
+
/** The command a message body is, or undefined when it is not a well-formed one. */
|
|
17
|
+
export declare function parseApprovalCommand(body: string): ApprovalCommand | undefined;
|
|
18
|
+
/** Renders a delivery event for a cc-peer session. A join request carries the instructions for answering it through `peerName`, the peer the session should message; every other event renders as the shared formatter does. */
|
|
19
|
+
export declare function formatCcPeerDelivery(event: DeliveryEvent, peerName: string): string;
|
|
20
|
+
export interface AnswerJoinRequestDeps {
|
|
21
|
+
tool: Pick<CommsTool, "handle">;
|
|
22
|
+
ctx: Readonly<CommsContext>;
|
|
23
|
+
}
|
|
24
|
+
/** Runs the room_accept or room_reject the command asks for as this session's own agent, and returns the tool's own text so the session learns what happened, including why a decision failed. */
|
|
25
|
+
export declare function answerJoinRequest(deps: Readonly<AnswerJoinRequestDeps>, command: Readonly<ApprovalCommand>): Promise<string>;
|
|
26
|
+
//# sourceMappingURL=approval-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-commands.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/approval-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAWzD,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,oFAAoF;AACpF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX,eAAe,GAAG,SAAS,CAgB7B;AAED,gOAAgO;AAChO,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC7B;AAED,kMAAkM;AAClM,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EACrC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lets a cc-peer session answer a room join or first-contact DM request. A session reached only through cc-peer (no agent-comms tool of its own) cannot call room_accept or room_reject, so the relayed request tells it exactly what to message back, and the relay runs the same tool action when that message arrives. The person at the session decides: only a message from that session's own socket ever reaches its relay.
|
|
3
|
+
*/
|
|
4
|
+
import { buildAction, formatDeliveryEvent } from "../../core/bridge.js";
|
|
5
|
+
/** A device-id is a 64-character lowercase hex SHA-256 digest. */
|
|
6
|
+
const DEVICE_ID_HEX = "[0-9a-f]{64}";
|
|
7
|
+
/** `accept <room> <requester>` or `reject <room> <requester> [reason]`, the whole message and nothing else, so an ordinary message that merely mentions the word is never mistaken for a decision. */
|
|
8
|
+
const APPROVAL_COMMAND = new RegExp(`^\\s*(accept|reject)\\s+(\\S+)\\s+(${DEVICE_ID_HEX})(?:\\s+(\\S[\\s\\S]*?))?\\s*$`, "i");
|
|
9
|
+
/** The command a message body is, or undefined when it is not a well-formed one. */
|
|
10
|
+
export function parseApprovalCommand(body) {
|
|
11
|
+
const match = APPROVAL_COMMAND.exec(body);
|
|
12
|
+
if (match === null)
|
|
13
|
+
return undefined;
|
|
14
|
+
const [, verb, room, requesterId, reason] = match;
|
|
15
|
+
if (verb === undefined || room === undefined || requesterId === undefined) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
if (verb.toLowerCase() === "accept") {
|
|
19
|
+
return { kind: "accept", room, requesterId: requesterId.toLowerCase() };
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
kind: "reject",
|
|
23
|
+
room,
|
|
24
|
+
requesterId: requesterId.toLowerCase(),
|
|
25
|
+
...(reason !== undefined ? { reason } : {}),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Renders a delivery event for a cc-peer session. A join request carries the instructions for answering it through `peerName`, the peer the session should message; every other event renders as the shared formatter does. */
|
|
29
|
+
export function formatCcPeerDelivery(event, peerName) {
|
|
30
|
+
if (event.type !== "room_join_request")
|
|
31
|
+
return formatDeliveryEvent(event);
|
|
32
|
+
return [
|
|
33
|
+
`${event.requesterId} is asking to join ${event.room}.`,
|
|
34
|
+
`To answer, send the peer "${peerName}" one of these messages:`,
|
|
35
|
+
`accept ${event.room} ${event.requesterId}`,
|
|
36
|
+
`reject ${event.room} ${event.requesterId} <optional reason>`,
|
|
37
|
+
].join("\n");
|
|
38
|
+
}
|
|
39
|
+
/** Runs the room_accept or room_reject the command asks for as this session's own agent, and returns the tool's own text so the session learns what happened, including why a decision failed. */
|
|
40
|
+
export async function answerJoinRequest(deps, command) {
|
|
41
|
+
const action = command.kind === "accept"
|
|
42
|
+
? buildAction({
|
|
43
|
+
action: "room_accept",
|
|
44
|
+
room: command.room,
|
|
45
|
+
requesterId: command.requesterId,
|
|
46
|
+
})
|
|
47
|
+
: buildAction({
|
|
48
|
+
action: "room_reject",
|
|
49
|
+
room: command.room,
|
|
50
|
+
requesterId: command.requesterId,
|
|
51
|
+
...(command.reason !== undefined ? { reason: command.reason } : {}),
|
|
52
|
+
});
|
|
53
|
+
const result = await deps.tool.handle(deps.ctx, action);
|
|
54
|
+
return result.content;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=approval-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-commands.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/approval-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIxE,kEAAkE;AAClE,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,sMAAsM;AACtM,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,sCAAsC,aAAa,gCAAgC,EACnF,GAAG,CACJ,CAAC;AAMF,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAClC,IAAY;IAEZ,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;QACtC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,gOAAgO;AAChO,MAAM,UAAU,oBAAoB,CAClC,KAAoB,EACpB,QAAgB;IAEhB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1E,OAAO;QACL,GAAG,KAAK,CAAC,WAAW,sBAAsB,KAAK,CAAC,IAAI,GAAG;QACvD,6BAA6B,QAAQ,0BAA0B;QAC/D,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;QAC3C,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,oBAAoB;KAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAOD,kMAAkM;AAClM,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAqC,EACrC,OAAkC;IAElC,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,KAAK,QAAQ;QACvB,CAAC,CAAC,WAAW,CAAC;YACV,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACJ,CAAC,CAAC,WAAW,CAAC;YACV,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC,CAAC;IACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
|
|
@@ -52,6 +52,8 @@ export interface CcPeerBridgeDeps {
|
|
|
52
52
|
roomId: string;
|
|
53
53
|
target: Readonly<CcPeerRef>;
|
|
54
54
|
cwd: string;
|
|
55
|
+
/** The name this bridge's peer is registered under, which the target is told to message to answer a join request. */
|
|
56
|
+
peerName: string;
|
|
55
57
|
/** Whether an inbound message was sent by the target session. Only those are posted into the project room: the peer may be shared with the default front, whose fronted sessions message it as well, and those belong to the front's own relay. */
|
|
56
58
|
isFromTarget: (message: Readonly<CcPeerInboundMessage>) => Promise<boolean>;
|
|
57
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,gOAAgO;AAChO,MAAM,MAAM,SAAS,GACnB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,oIAAoI;AACpI,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oIAAoI;AACpI,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,CACF,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,KAClD,IAAI,CAAC;IACV,IAAI,EAAE,CACJ,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC3B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,iNAAiN;AACjN,MAAM,WAAW,iBAAiB;IAChC,UAAU,EACN,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACjE,SAAS,CAAC;IACd,8IAA8I;IAC9I,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,2IAA2I;AAC3I,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC3B,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACjC,OAAO,CAIT;AAED,mTAAmT;AACnT,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC3B,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,GACtD,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAU/D;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,QAAQ,EAAE,MAAM,CAAC;IACjB,mPAAmP;IACnP,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,oSAAoS;AACpS,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAwCvE"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The wiring itself (wireCcPeerBridge) is dependency-injected and deliberately separate from the real CcPeer/MeshStore construction in run.ts, so it can be tested against a fake CcPeer without a real local Claude Code session.
|
|
7
7
|
*/
|
|
8
8
|
import { buildAction } from "../../core/bridge.js";
|
|
9
|
-
import {
|
|
9
|
+
import { answerJoinRequest, formatCcPeerDelivery, parseApprovalCommand, } from "./approval-commands.js";
|
|
10
10
|
/** Whether a roster entry is the session a target ref addresses. An address target names the session's own `uds:<socket path>` address. */
|
|
11
11
|
export function targetMatchesEntry(target, entry) {
|
|
12
12
|
if ("pid" in target)
|
|
@@ -33,24 +33,32 @@ export function wireCcPeerBridge(deps) {
|
|
|
33
33
|
void (async () => {
|
|
34
34
|
if (!(await deps.isFromTarget(m)))
|
|
35
35
|
return;
|
|
36
|
+
const ctx = {
|
|
37
|
+
agentId: deps.agentId,
|
|
38
|
+
harness: "cc-peer",
|
|
39
|
+
cwd: deps.cwd,
|
|
40
|
+
pid: process.pid,
|
|
41
|
+
};
|
|
42
|
+
// A well-formed accept or reject is the target's decision on a waiting join request, not something to post into the project room.
|
|
43
|
+
const decision = parseApprovalCommand(m.body);
|
|
44
|
+
if (decision !== undefined) {
|
|
45
|
+
const text = await answerJoinRequest({ tool: deps.tool, ctx }, decision);
|
|
46
|
+
await deps.peer.send(deps.target, text);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
36
49
|
const sender = m.fromName ?? m.from ?? "unknown";
|
|
37
50
|
const action = buildAction({
|
|
38
51
|
action: "send",
|
|
39
52
|
room: deps.roomId,
|
|
40
53
|
content: `${sender}: ${m.body}`,
|
|
41
54
|
});
|
|
42
|
-
await deps.tool.handle(
|
|
43
|
-
agentId: deps.agentId,
|
|
44
|
-
harness: "cc-peer",
|
|
45
|
-
cwd: deps.cwd,
|
|
46
|
-
pid: process.pid,
|
|
47
|
-
}, action);
|
|
55
|
+
await deps.tool.handle(ctx, action);
|
|
48
56
|
})().catch((error) => {
|
|
49
57
|
deps.store.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
50
58
|
});
|
|
51
59
|
});
|
|
52
60
|
deps.store.onDelivery = (_targetId, event) => {
|
|
53
|
-
void deps.peer.send(deps.target,
|
|
61
|
+
void deps.peer.send(deps.target, formatCcPeerDelivery(event, deps.peerName));
|
|
54
62
|
};
|
|
55
63
|
}
|
|
56
64
|
//# sourceMappingURL=bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export interface WireDefaultCcPeerFrontOptions {
|
|
|
12
12
|
hubUrl?: string | undefined;
|
|
13
13
|
/** The cc-peer peer this process already owns, lent to the front instead of it creating a second one -- see CreateDefaultCcPeerFrontOptions.peer. */
|
|
14
14
|
peer?: CreateDefaultCcPeerFrontOptions["peer"];
|
|
15
|
+
/** The name the lent peer is registered under -- see CreateDefaultCcPeerFrontOptions.peerName. */
|
|
16
|
+
peerName?: CreateDefaultCcPeerFrontOptions["peerName"];
|
|
15
17
|
/** Sessions this process already relays by other means -- see CreateDefaultCcPeerFrontOptions.excludeSession. */
|
|
16
18
|
excludeSession?: CreateDefaultCcPeerFrontOptions["excludeSession"];
|
|
17
19
|
/** Builds the front itself -- defaults to the real createDefaultCcPeerFront. Overridable so this function's own start/stop wiring against store.onCoordinatorRoleChanged is testable without a real CcPeer/local Claude Code session. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-front.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/default-front.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,6BAA6B;IAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qJAAqJ;IACrJ,IAAI,CAAC,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAC/C,iHAAiH;IACjH,cAAc,CAAC,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IACnE,yOAAyO;IACzO,WAAW,CAAC,EACR,CAAC,CACC,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC,KAC/C,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,GAC/D,SAAS,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAC3C,OAAO,GAAE,QAAQ,CAAC,6BAA6B,CAAM,GACpD,CAAC,aAAa,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"default-front.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/default-front.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,6BAA6B;IAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qJAAqJ;IACrJ,IAAI,CAAC,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAC/C,kGAAkG;IAClG,QAAQ,CAAC,EAAE,+BAA+B,CAAC,UAAU,CAAC,CAAC;IACvD,iHAAiH;IACjH,cAAc,CAAC,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IACnE,yOAAyO;IACzO,WAAW,CAAC,EACR,CAAC,CACC,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC,KAC/C,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,GAC/D,SAAS,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAC3C,OAAO,GAAE,QAAQ,CAAC,6BAA6B,CAAM,GACpD,CAAC,aAAa,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAoB3C"}
|
|
@@ -13,6 +13,7 @@ export function wireDefaultCcPeerFront(store, options = {}) {
|
|
|
13
13
|
coordinatorPort: options.coordinatorPort,
|
|
14
14
|
hubUrl: options.hubUrl,
|
|
15
15
|
peer: options.peer,
|
|
16
|
+
peerName: options.peerName,
|
|
16
17
|
excludeSession: options.excludeSession,
|
|
17
18
|
onError: (error) => {
|
|
18
19
|
store.onError?.(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-front.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/default-front.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,wBAAwB,GAEzB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-front.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/default-front.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,wBAAwB,GAEzB,MAAM,oBAAoB,CAAC;AAqB5B;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA2C,EAC3C,UAAmD,EAAE;IAErD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,wBAAwB,CAAC;IACpE,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,aAAsB,EAAE,EAAE;QACtC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -35,6 +35,8 @@ export interface FrontedRelayRecord extends FrontedSessionRecord {
|
|
|
35
35
|
}
|
|
36
36
|
export interface BuildFrontedSessionRecordDeps {
|
|
37
37
|
entry: Readonly<CcPeerRosterEntryLike>;
|
|
38
|
+
/** The name the shared peer is registered under, which a session is told to message to answer a join request. */
|
|
39
|
+
peerName: string;
|
|
38
40
|
agentId: string;
|
|
39
41
|
roomId: string;
|
|
40
42
|
store: FrontRelayStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-relay.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-relay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"front-relay.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-relay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAwB,SAAS,EAAE,MAAM,aAAa,CAAC;AAGnE,gMAAgM;AAChM,MAAM,WAAW,eAAe;IAC9B,UAAU,EACN,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACjE,SAAS,CAAC;IACd,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,mQAAmQ;AACnQ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CACJ,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC3B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,iWAAiW;AACjW,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,wKAAwK;AACxK,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACvC,iHAAiH;IACjH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,cAAc,EAAE,wBAAwB,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAC5C,kBAAkB,CAyFpB;AAED,0UAA0U;AAC1U,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,GAC9D,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Reuses CcPeerRef/CcPeerInboundMessage from bridge.ts rather than redeclaring them -- the wire shape a shared front-wide peer speaks is identical to the one-shot bridge command's own peer, just addressed by pid instead of a fixed target.
|
|
5
5
|
*/
|
|
6
|
-
import { buildAction
|
|
6
|
+
import { buildAction } from "../../core/bridge.js";
|
|
7
|
+
import { answerJoinRequest, formatCcPeerDelivery, parseApprovalCommand, } from "./approval-commands.js";
|
|
7
8
|
import { correspondentForEvent } from "./reply-aliases.js";
|
|
8
9
|
/**
|
|
9
10
|
* Wires both relay directions for one fronted session and returns the record CcPeerFront tracks it under. Mesh-to-session: store.onDelivery sends the formatted event to this session's own pid via the shared peer -- for an event with a single originating correspondent (a dm or room_message, per correspondentForEvent), it first materialises a reply alias for that correspondent and mentions it in the delivered body, so the session can address a reply to that specific correspondent the way it addresses any other local peer (agent-comms#158). Session-to-mesh: the returned handleInbound (called by the front's shared "message" listener once it's matched this record by socket path) posts the message into this session's own project room, exactly as wireCcPeerBridge's own peer.on("message") handler does for the one-shot bridge command; handleAliasReply (called once CcPeerFront has resolved an inbound alias message to its correspondent) instead sends a mesh DM to that correspondent, as this session's own agentId; notifyStaleAlias delivers a clear error back into the session for a reply on an alias the directory no longer recognises.
|
|
10
11
|
*/
|
|
11
12
|
export function buildFrontedSessionRecord(deps) {
|
|
12
|
-
const { entry, agentId, roomId, store, tool, peer, aliasPool, aliasDirectory, } = deps;
|
|
13
|
+
const { entry, peerName, agentId, roomId, store, tool, peer, aliasPool, aliasDirectory, } = deps;
|
|
13
14
|
store.onDelivery = async (_targetId, event) => {
|
|
14
|
-
const body =
|
|
15
|
+
const body = formatCcPeerDelivery(event, peerName);
|
|
15
16
|
const correspondentId = correspondentForEvent(event);
|
|
16
17
|
if (correspondentId === undefined) {
|
|
17
18
|
await peer.send({ pid: entry.pid }, body);
|
|
@@ -35,18 +36,25 @@ export function buildFrontedSessionRecord(deps) {
|
|
|
35
36
|
roomId,
|
|
36
37
|
store,
|
|
37
38
|
handleInbound: (message) => {
|
|
39
|
+
const ctx = {
|
|
40
|
+
agentId,
|
|
41
|
+
harness: "claude-code",
|
|
42
|
+
cwd: entry.cwd,
|
|
43
|
+
pid: process.pid,
|
|
44
|
+
};
|
|
45
|
+
// A well-formed accept or reject is the session's decision on a waiting join request, not something to post into the project room.
|
|
46
|
+
const decision = parseApprovalCommand(message.body);
|
|
47
|
+
if (decision !== undefined) {
|
|
48
|
+
void answerJoinRequest({ tool, ctx }, decision).then(async (text) => peer.send({ pid: entry.pid }, text));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
38
51
|
const sender = message.fromName ?? message.from ?? "unknown";
|
|
39
52
|
const action = buildAction({
|
|
40
53
|
action: "send",
|
|
41
54
|
room: roomId,
|
|
42
55
|
content: `${sender}: ${message.body}`,
|
|
43
56
|
});
|
|
44
|
-
void tool.handle(
|
|
45
|
-
agentId,
|
|
46
|
-
harness: "claude-code",
|
|
47
|
-
cwd: entry.cwd,
|
|
48
|
-
pid: process.pid,
|
|
49
|
-
}, action);
|
|
57
|
+
void tool.handle(ctx, action);
|
|
50
58
|
},
|
|
51
59
|
handleAliasReply: (correspondentId, message) => {
|
|
52
60
|
const action = buildAction({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-relay.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-relay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"front-relay.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export interface CreateDefaultCcPeerFrontOptions {
|
|
|
20
20
|
onError?: ((error: Error) => void) | undefined;
|
|
21
21
|
/** The cc-peer peer this process already owns, when it has one. cc-peer allows one peer per process, so a process that runs its own (the one-shot `bridge cc-peer` command) must lend it here rather than let the front try to create a second. The front only borrows it: it never stops it, and registers its inbound listener on it once. Without this the front creates and owns its own peer. */
|
|
22
22
|
peer?: FrontCcPeer | undefined;
|
|
23
|
+
/** The name the shared peer is registered under, which fronted sessions are told to message to answer a join request. Defaults to the front's own peer name; a host process that lends its own peer names it here. */
|
|
24
|
+
peerName?: string | undefined;
|
|
23
25
|
/** Sessions this process already relays by other means, which the front must therefore leave alone. */
|
|
24
26
|
excludeSession?: ((entry: Readonly<CcPeerRosterEntryLike>) => boolean) | undefined;
|
|
25
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-runtime.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAO1B,gKAAgK;AAChK,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;IACxD,EAAE,EAAE,CACF,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,KACxD,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,sYAAsY;IACtY,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,uGAAuG;IACvG,cAAc,CAAC,EACb,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CACrE;AAOD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,QAAQ,CAAC,+BAA+B,CAAM,GACtD,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"front-runtime.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAO1B,gKAAgK;AAChK,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;IACxD,EAAE,EAAE,CACF,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,KACxD,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,sYAAsY;IACtY,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,sNAAsN;IACtN,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uGAAuG;IACvG,cAAc,CAAC,EACb,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CACrE;AAOD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,QAAQ,CAAC,+BAA+B,CAAM,GACtD,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CA8FzD"}
|
|
@@ -23,6 +23,7 @@ function defaultSessionName(entry) {
|
|
|
23
23
|
*/
|
|
24
24
|
export function createDefaultCcPeerFront(options = {}) {
|
|
25
25
|
const borrowedPeer = options.peer;
|
|
26
|
+
const peerName = options.peerName ?? FRONT_PEER_NAME;
|
|
26
27
|
let aliasPool;
|
|
27
28
|
const aliasDirectory = new ReplyAliasDirectory();
|
|
28
29
|
const front = new CcPeerFront({
|
|
@@ -96,6 +97,7 @@ export function createDefaultCcPeerFront(options = {}) {
|
|
|
96
97
|
const roomId = await ensureProjectRoom(store, reg.agentId, entry.cwd);
|
|
97
98
|
return buildFrontedSessionRecord({
|
|
98
99
|
entry,
|
|
100
|
+
peerName,
|
|
99
101
|
agentId: reg.agentId,
|
|
100
102
|
roomId,
|
|
101
103
|
store,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-runtime.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,kPAAkP;AAClP,MAAM,eAAe,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"front-runtime.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/front-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/bridges/cc-peer/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4CH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDzC"}
|
|
@@ -13,6 +13,8 @@ import { wireDefaultCcPeerFront } from "./default-front.js";
|
|
|
13
13
|
const PID_FLAG_PREFIX = "--pid=";
|
|
14
14
|
/** argv layout for `node cli.js bridge cc-peer <target-arg>`: index 0/1 are the node binary and script path, 2 is "bridge", 3 is the bridge id ("cc-peer") itself -- this bridge's own args start one past that. */
|
|
15
15
|
const BRIDGE_ARGS_START_INDEX = 4;
|
|
16
|
+
/** The name this command registers its one cc-peer peer under, which the target session is told to message to answer a join request. */
|
|
17
|
+
const BRIDGE_PEER_NAME = "agent-comms-bridge";
|
|
16
18
|
function parseTarget(argv) {
|
|
17
19
|
const arg = argv[0];
|
|
18
20
|
if (arg === undefined || arg === "") {
|
|
@@ -33,12 +35,13 @@ export async function run() {
|
|
|
33
35
|
const target = parseTarget(process.argv.slice(BRIDGE_ARGS_START_INDEX));
|
|
34
36
|
const identitySlot = { harness: "cc-peer", cwd: process.cwd() };
|
|
35
37
|
// cc-peer allows one peer per process, so this is the only one: the default front borrows it below rather than creating its own, and the front leaves this bridge's own target alone since the relay below already covers it.
|
|
36
|
-
const peer = await CcPeer.create({ name:
|
|
38
|
+
const peer = await CcPeer.create({ name: BRIDGE_PEER_NAME });
|
|
37
39
|
const { store, tool } = await createBridgeMesh(identitySlot);
|
|
38
40
|
store.onError = createMeshErrorReporter();
|
|
39
41
|
store.getCcPeerVersion = () => CC_PEER_VERSION;
|
|
40
42
|
store.onCoordinatorRoleChanged = wireDefaultCcPeerFront(store, {
|
|
41
43
|
peer,
|
|
44
|
+
peerName: BRIDGE_PEER_NAME,
|
|
42
45
|
excludeSession: (entry) => targetMatchesEntry(target, entry),
|
|
43
46
|
});
|
|
44
47
|
const reg = await ensureRegistered({
|
|
@@ -56,6 +59,7 @@ export async function run() {
|
|
|
56
59
|
roomId,
|
|
57
60
|
target,
|
|
58
61
|
cwd: process.cwd(),
|
|
62
|
+
peerName: BRIDGE_PEER_NAME,
|
|
59
63
|
isFromTarget: createTargetSenderMatcher(target, async () => peer.roster()),
|
|
60
64
|
});
|
|
61
65
|
await store.init();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,oNAAoN;AACpN,MAAM,uBAAuB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/bridges/cc-peer/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-peer-approval-commands.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/cc-peer-approval-commands.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the approval commands a cc-peer session sends back to answer a join or DM request, and the relayed text that tells it exactly what to send.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { answerJoinRequest, formatCcPeerDelivery, parseApprovalCommand, } from "../bridges/cc-peer/approval-commands.js";
|
|
6
|
+
/** A device-id is a 64-character lowercase hex digest. */
|
|
7
|
+
const DEVICE_ID_HEX_LENGTH = 64;
|
|
8
|
+
const REQUESTER = "a".repeat(DEVICE_ID_HEX_LENGTH);
|
|
9
|
+
const OTHER = "b".repeat(DEVICE_ID_HEX_LENGTH);
|
|
10
|
+
const DM_ROOM = `${OTHER}+${REQUESTER}`;
|
|
11
|
+
const PEER_NAME = "agent-comms-front";
|
|
12
|
+
describe("parseApprovalCommand", () => {
|
|
13
|
+
it("parses an accept naming the room and the requester", () => {
|
|
14
|
+
expect(parseApprovalCommand(`accept ${DM_ROOM} ${REQUESTER}`)).toEqual({
|
|
15
|
+
kind: "accept",
|
|
16
|
+
room: DM_ROOM,
|
|
17
|
+
requesterId: REQUESTER,
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
it("parses a reject, keeping everything after the requester as the reason", () => {
|
|
21
|
+
expect(parseApprovalCommand(`reject ${DM_ROOM} ${REQUESTER} not now, sorry`)).toEqual({
|
|
22
|
+
kind: "reject",
|
|
23
|
+
room: DM_ROOM,
|
|
24
|
+
requesterId: REQUESTER,
|
|
25
|
+
reason: "not now, sorry",
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it("omits the reason when a reject has none", () => {
|
|
29
|
+
expect(parseApprovalCommand(`reject ${DM_ROOM} ${REQUESTER}`)).toEqual({
|
|
30
|
+
kind: "reject",
|
|
31
|
+
room: DM_ROOM,
|
|
32
|
+
requesterId: REQUESTER,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
it("is case-insensitive on the verb and tolerant of surrounding whitespace", () => {
|
|
36
|
+
expect(parseApprovalCommand(` ACCEPT ${DM_ROOM} ${REQUESTER} \n`)).toEqual({ kind: "accept", room: DM_ROOM, requesterId: REQUESTER });
|
|
37
|
+
});
|
|
38
|
+
it("returns undefined for anything that is not a well-formed command, so ordinary messages still relay", () => {
|
|
39
|
+
for (const body of [
|
|
40
|
+
"hello there",
|
|
41
|
+
"accept",
|
|
42
|
+
`accept ${DM_ROOM}`,
|
|
43
|
+
`accept ${DM_ROOM} not-a-device-id`,
|
|
44
|
+
`please accept ${DM_ROOM} ${REQUESTER}`,
|
|
45
|
+
`acceptance ${DM_ROOM} ${REQUESTER}`,
|
|
46
|
+
"",
|
|
47
|
+
]) {
|
|
48
|
+
expect(parseApprovalCommand(body)).toBeUndefined();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("formatCcPeerDelivery", () => {
|
|
53
|
+
const request = {
|
|
54
|
+
type: "room_join_request",
|
|
55
|
+
room: DM_ROOM,
|
|
56
|
+
requesterId: REQUESTER,
|
|
57
|
+
};
|
|
58
|
+
it("tells the session which peer to message and the exact accept and reject commands for a join request", () => {
|
|
59
|
+
const text = formatCcPeerDelivery(request, PEER_NAME);
|
|
60
|
+
expect(text).toContain(REQUESTER);
|
|
61
|
+
expect(text).toContain(`"${PEER_NAME}"`);
|
|
62
|
+
expect(text).toContain(`accept ${DM_ROOM} ${REQUESTER}`);
|
|
63
|
+
expect(text).toContain(`reject ${DM_ROOM} ${REQUESTER}`);
|
|
64
|
+
});
|
|
65
|
+
it("leaves every other event exactly as the shared formatter renders it", () => {
|
|
66
|
+
const event = {
|
|
67
|
+
type: "member_joined",
|
|
68
|
+
room: "owner/room",
|
|
69
|
+
agent: "someone",
|
|
70
|
+
};
|
|
71
|
+
expect(formatCcPeerDelivery(event, PEER_NAME)).toBe("someone joined owner/room");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe("answerJoinRequest", () => {
|
|
75
|
+
const ctx = {
|
|
76
|
+
agentId: "agent-1",
|
|
77
|
+
harness: "claude-code",
|
|
78
|
+
cwd: "/tmp/project",
|
|
79
|
+
pid: 1,
|
|
80
|
+
};
|
|
81
|
+
it("runs room_accept for an accept command and returns the tool's own text", async () => {
|
|
82
|
+
const handle = vi.fn(async () => Promise.resolve({ content: "Accepted.", isError: false }));
|
|
83
|
+
const text = await answerJoinRequest({ tool: { handle }, ctx }, { kind: "accept", room: DM_ROOM, requesterId: REQUESTER });
|
|
84
|
+
expect(handle).toHaveBeenCalledWith(ctx, {
|
|
85
|
+
action: "room_accept",
|
|
86
|
+
room: DM_ROOM,
|
|
87
|
+
requesterId: REQUESTER,
|
|
88
|
+
});
|
|
89
|
+
expect(text).toBe("Accepted.");
|
|
90
|
+
});
|
|
91
|
+
it("runs room_reject with the reason for a reject command", async () => {
|
|
92
|
+
const handle = vi.fn(async () => Promise.resolve({ content: "Rejected.", isError: false }));
|
|
93
|
+
await answerJoinRequest({ tool: { handle }, ctx }, { kind: "reject", room: DM_ROOM, requesterId: REQUESTER, reason: "busy" });
|
|
94
|
+
expect(handle).toHaveBeenCalledWith(ctx, {
|
|
95
|
+
action: "room_reject",
|
|
96
|
+
room: DM_ROOM,
|
|
97
|
+
requesterId: REQUESTER,
|
|
98
|
+
reason: "busy",
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
it("returns a failure's own text so the session learns why nothing happened", async () => {
|
|
102
|
+
const handle = vi.fn(async () => Promise.resolve({
|
|
103
|
+
content: "Failed to accept: No pending room.join",
|
|
104
|
+
isError: true,
|
|
105
|
+
}));
|
|
106
|
+
const text = await answerJoinRequest({ tool: { handle }, ctx }, { kind: "accept", room: DM_ROOM, requesterId: REQUESTER });
|
|
107
|
+
expect(text).toBe("Failed to accept: No pending room.join");
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=cc-peer-approval-commands.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-peer-approval-commands.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-approval-commands.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { createTargetSenderMatcher, targetMatchesEntry, wireCcPeerBridge, } from "../bridges/cc-peer/bridge.js";
|
|
6
|
+
/** The name the bridge's peer is registered under; the target is told to message it to answer a join request. */
|
|
7
|
+
const PEER_NAME = "agent-comms-bridge";
|
|
8
|
+
/** A device-id is a 64-character lowercase hex digest. */
|
|
9
|
+
const DEVICE_ID_HEX_LENGTH = 64;
|
|
10
|
+
const REQUESTER_ID = "a".repeat(DEVICE_ID_HEX_LENGTH);
|
|
11
|
+
const DM_ROOM = `${"b".repeat(DEVICE_ID_HEX_LENGTH)}+${REQUESTER_ID}`;
|
|
6
12
|
function fakePeer() {
|
|
7
13
|
const peer = {
|
|
8
14
|
messageListener: undefined,
|
|
@@ -55,6 +61,7 @@ describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
|
|
|
55
61
|
roomId: "owner/project",
|
|
56
62
|
target: { name: "local-session" },
|
|
57
63
|
cwd: "/tmp/project",
|
|
64
|
+
peerName: PEER_NAME,
|
|
58
65
|
isFromTarget: async () => Promise.resolve(true),
|
|
59
66
|
});
|
|
60
67
|
peer.messageListener?.({
|
|
@@ -94,6 +101,7 @@ describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
|
|
|
94
101
|
roomId: "owner/project",
|
|
95
102
|
target: { name: "local-session" },
|
|
96
103
|
cwd: "/tmp/project",
|
|
104
|
+
peerName: PEER_NAME,
|
|
97
105
|
isFromTarget: async () => Promise.resolve(true),
|
|
98
106
|
});
|
|
99
107
|
peer.messageListener?.({ from: "local-session", body: "hi" });
|
|
@@ -120,6 +128,7 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
|
|
|
120
128
|
roomId: "owner/project",
|
|
121
129
|
target: { name: "local-session" },
|
|
122
130
|
cwd: "/tmp/project",
|
|
131
|
+
peerName: PEER_NAME,
|
|
123
132
|
isFromTarget: async () => Promise.resolve(true),
|
|
124
133
|
});
|
|
125
134
|
expect(store.onDelivery).toBeDefined();
|
|
@@ -150,6 +159,7 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
|
|
|
150
159
|
roomId: "owner/project",
|
|
151
160
|
target: { pid: 4242 },
|
|
152
161
|
cwd: "/tmp/project",
|
|
162
|
+
peerName: PEER_NAME,
|
|
153
163
|
isFromTarget: async () => Promise.resolve(true),
|
|
154
164
|
});
|
|
155
165
|
void store.onDelivery?.("agent-1", {
|
|
@@ -172,6 +182,7 @@ describe("wireCcPeerBridge — inbound from anyone but the target", () => {
|
|
|
172
182
|
roomId: "owner/project",
|
|
173
183
|
target: { name: "local-session" },
|
|
174
184
|
cwd: "/tmp/project",
|
|
185
|
+
peerName: PEER_NAME,
|
|
175
186
|
isFromTarget,
|
|
176
187
|
});
|
|
177
188
|
peer.messageListener?.({ from: "uds:/tmp/other.sock", body: "not for us" });
|
|
@@ -194,6 +205,7 @@ describe("wireCcPeerBridge — relay failures", () => {
|
|
|
194
205
|
roomId: "owner/project",
|
|
195
206
|
target: { name: "local-session" },
|
|
196
207
|
cwd: "/tmp/project",
|
|
208
|
+
peerName: PEER_NAME,
|
|
197
209
|
isFromTarget: async () => Promise.reject(new Error("roster unreadable")),
|
|
198
210
|
});
|
|
199
211
|
peer.messageListener?.({ from: "uds:/tmp/x.sock", body: "x" });
|
|
@@ -251,4 +263,99 @@ describe("createTargetSenderMatcher", () => {
|
|
|
251
263
|
expect(listRoster).not.toHaveBeenCalled();
|
|
252
264
|
});
|
|
253
265
|
});
|
|
266
|
+
describe("wireCcPeerBridge — answering a join request", () => {
|
|
267
|
+
it("tells the target which peer to message and the exact commands when a join request is waiting", () => {
|
|
268
|
+
const peer = fakePeer();
|
|
269
|
+
const store = {
|
|
270
|
+
onDelivery: undefined,
|
|
271
|
+
onError: undefined,
|
|
272
|
+
};
|
|
273
|
+
wireCcPeerBridge({
|
|
274
|
+
store,
|
|
275
|
+
tool: fakeTool(),
|
|
276
|
+
peer,
|
|
277
|
+
agentId: "agent-1",
|
|
278
|
+
roomId: "owner/project",
|
|
279
|
+
target: { name: "local-session" },
|
|
280
|
+
cwd: "/tmp/project",
|
|
281
|
+
peerName: PEER_NAME,
|
|
282
|
+
isFromTarget: async () => Promise.resolve(true),
|
|
283
|
+
});
|
|
284
|
+
void store.onDelivery?.("agent-1", {
|
|
285
|
+
type: "room_join_request",
|
|
286
|
+
room: DM_ROOM,
|
|
287
|
+
requesterId: REQUESTER_ID,
|
|
288
|
+
});
|
|
289
|
+
const body = peer.sendCalls[0]?.body ?? "";
|
|
290
|
+
expect(body).toContain(`"${PEER_NAME}"`);
|
|
291
|
+
expect(body).toContain(`accept ${DM_ROOM} ${REQUESTER_ID}`);
|
|
292
|
+
});
|
|
293
|
+
it("runs room_accept for an accept message from the target and reports the result back to it, without posting it to the project room", async () => {
|
|
294
|
+
const peer = fakePeer();
|
|
295
|
+
const tool = fakeTool();
|
|
296
|
+
wireCcPeerBridge({
|
|
297
|
+
store: { onDelivery: undefined, onError: undefined },
|
|
298
|
+
tool,
|
|
299
|
+
peer,
|
|
300
|
+
agentId: "agent-1",
|
|
301
|
+
roomId: "owner/project",
|
|
302
|
+
target: { name: "local-session" },
|
|
303
|
+
cwd: "/tmp/project",
|
|
304
|
+
peerName: PEER_NAME,
|
|
305
|
+
isFromTarget: async () => Promise.resolve(true),
|
|
306
|
+
});
|
|
307
|
+
peer.messageListener?.({
|
|
308
|
+
from: "uds:/tmp/cc-socks/1.sock",
|
|
309
|
+
body: `accept ${DM_ROOM} ${REQUESTER_ID}`,
|
|
310
|
+
});
|
|
311
|
+
await vi.waitFor(() => {
|
|
312
|
+
expect(peer.sendCalls).toHaveLength(1);
|
|
313
|
+
});
|
|
314
|
+
expect(tool.handleCalls).toEqual([
|
|
315
|
+
{
|
|
316
|
+
ctx: {
|
|
317
|
+
agentId: "agent-1",
|
|
318
|
+
harness: "cc-peer",
|
|
319
|
+
cwd: "/tmp/project",
|
|
320
|
+
pid: process.pid,
|
|
321
|
+
},
|
|
322
|
+
action: {
|
|
323
|
+
action: "room_accept",
|
|
324
|
+
room: DM_ROOM,
|
|
325
|
+
requesterId: REQUESTER_ID,
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
]);
|
|
329
|
+
expect(peer.sendCalls[0]).toEqual({
|
|
330
|
+
target: { name: "local-session" },
|
|
331
|
+
body: "ok",
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
it("ignores an accept that did not come from the target", async () => {
|
|
335
|
+
const peer = fakePeer();
|
|
336
|
+
const tool = fakeTool();
|
|
337
|
+
const isFromTarget = vi.fn(async () => Promise.resolve(false));
|
|
338
|
+
wireCcPeerBridge({
|
|
339
|
+
store: { onDelivery: undefined, onError: undefined },
|
|
340
|
+
tool,
|
|
341
|
+
peer,
|
|
342
|
+
agentId: "agent-1",
|
|
343
|
+
roomId: "owner/project",
|
|
344
|
+
target: { name: "local-session" },
|
|
345
|
+
cwd: "/tmp/project",
|
|
346
|
+
peerName: PEER_NAME,
|
|
347
|
+
isFromTarget,
|
|
348
|
+
});
|
|
349
|
+
peer.messageListener?.({
|
|
350
|
+
from: "uds:/tmp/cc-socks/other.sock",
|
|
351
|
+
body: `accept ${DM_ROOM} ${REQUESTER_ID}`,
|
|
352
|
+
});
|
|
353
|
+
await vi.waitFor(() => {
|
|
354
|
+
expect(isFromTarget).toHaveBeenCalledTimes(1);
|
|
355
|
+
});
|
|
356
|
+
await Promise.resolve();
|
|
357
|
+
expect(tool.handleCalls).toEqual([]);
|
|
358
|
+
expect(peer.sendCalls).toEqual([]);
|
|
359
|
+
});
|
|
360
|
+
});
|
|
254
361
|
//# sourceMappingURL=cc-peer-bridge.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-peer-bridge.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-bridge.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cc-peer-bridge.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-bridge.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { buildFrontedSessionRecord, detachFrontedSession, } from "../bridges/cc-peer/front-relay.js";
|
|
6
|
+
/** The peer name the front is registered under; sessions are told to message it to answer a join request. */
|
|
7
|
+
const PEER_NAME = "agent-comms-front";
|
|
8
|
+
/** A device-id is a 64-character lowercase hex digest. */
|
|
9
|
+
const DEVICE_ID_HEX_LENGTH = 64;
|
|
10
|
+
const REQUESTER_ID = "a".repeat(DEVICE_ID_HEX_LENGTH);
|
|
11
|
+
const DM_ROOM = `${"b".repeat(DEVICE_ID_HEX_LENGTH)}+${REQUESTER_ID}`;
|
|
6
12
|
function rosterEntry(overrides = {}) {
|
|
7
13
|
return {
|
|
8
14
|
pid: 222,
|
|
@@ -95,6 +101,7 @@ describe("buildFrontedSessionRecord — outbound (mesh -> cc-peer)", () => {
|
|
|
95
101
|
const entry = rosterEntry({ pid: 333 });
|
|
96
102
|
buildFrontedSessionRecord({
|
|
97
103
|
entry,
|
|
104
|
+
peerName: PEER_NAME,
|
|
98
105
|
agentId: "agent-1",
|
|
99
106
|
roomId: "owner/project",
|
|
100
107
|
store,
|
|
@@ -119,6 +126,7 @@ describe("buildFrontedSessionRecord — outbound (mesh -> cc-peer)", () => {
|
|
|
119
126
|
const aliasDirectory = fakeAliasDirectory((id) => `mesh-${id}`);
|
|
120
127
|
buildFrontedSessionRecord({
|
|
121
128
|
entry: rosterEntry(),
|
|
129
|
+
peerName: PEER_NAME,
|
|
122
130
|
agentId: "agent-1",
|
|
123
131
|
roomId: "owner/project",
|
|
124
132
|
store,
|
|
@@ -142,6 +150,7 @@ describe("buildFrontedSessionRecord — outbound (mesh -> cc-peer)", () => {
|
|
|
142
150
|
const aliasPool = fakeAliasPool();
|
|
143
151
|
buildFrontedSessionRecord({
|
|
144
152
|
entry: rosterEntry(),
|
|
153
|
+
peerName: PEER_NAME,
|
|
145
154
|
agentId: "agent-1",
|
|
146
155
|
roomId: "owner/project",
|
|
147
156
|
store,
|
|
@@ -168,6 +177,7 @@ describe("buildFrontedSessionRecord — outbound (mesh -> cc-peer)", () => {
|
|
|
168
177
|
};
|
|
169
178
|
buildFrontedSessionRecord({
|
|
170
179
|
entry: rosterEntry(),
|
|
180
|
+
peerName: PEER_NAME,
|
|
171
181
|
agentId: "agent-1",
|
|
172
182
|
roomId: "owner/project",
|
|
173
183
|
store,
|
|
@@ -190,6 +200,7 @@ describe("buildFrontedSessionRecord — alias reply (cc-peer -> mesh DM)", () =>
|
|
|
190
200
|
const tool = fakeTool();
|
|
191
201
|
const record = buildFrontedSessionRecord({
|
|
192
202
|
entry: rosterEntry({ cwd: "/tmp/my-project" }),
|
|
203
|
+
peerName: PEER_NAME,
|
|
193
204
|
agentId: "agent-1",
|
|
194
205
|
roomId: "owner/my-project",
|
|
195
206
|
store: fakeStore(),
|
|
@@ -224,6 +235,7 @@ describe("buildFrontedSessionRecord — stale alias notification", () => {
|
|
|
224
235
|
const peer = fakePeer();
|
|
225
236
|
const record = buildFrontedSessionRecord({
|
|
226
237
|
entry: rosterEntry({ pid: 555 }),
|
|
238
|
+
peerName: PEER_NAME,
|
|
227
239
|
agentId: "agent-1",
|
|
228
240
|
roomId: "owner/project",
|
|
229
241
|
store: fakeStore(),
|
|
@@ -244,6 +256,7 @@ describe("buildFrontedSessionRecord — inbound (cc-peer -> mesh)", () => {
|
|
|
244
256
|
const entry = rosterEntry({ cwd: "/tmp/my-project" });
|
|
245
257
|
const record = buildFrontedSessionRecord({
|
|
246
258
|
entry,
|
|
259
|
+
peerName: PEER_NAME,
|
|
247
260
|
agentId: "agent-1",
|
|
248
261
|
roomId: "owner/my-project",
|
|
249
262
|
store: fakeStore(),
|
|
@@ -276,6 +289,7 @@ describe("buildFrontedSessionRecord — inbound (cc-peer -> mesh)", () => {
|
|
|
276
289
|
const tool = fakeTool();
|
|
277
290
|
const record = buildFrontedSessionRecord({
|
|
278
291
|
entry: rosterEntry(),
|
|
292
|
+
peerName: PEER_NAME,
|
|
279
293
|
agentId: "agent-1",
|
|
280
294
|
roomId: "owner/project",
|
|
281
295
|
store: fakeStore(),
|
|
@@ -298,6 +312,7 @@ describe("buildFrontedSessionRecord — record shape", () => {
|
|
|
298
312
|
});
|
|
299
313
|
const record = buildFrontedSessionRecord({
|
|
300
314
|
entry,
|
|
315
|
+
peerName: PEER_NAME,
|
|
301
316
|
agentId: "agent-1",
|
|
302
317
|
roomId: "owner/other",
|
|
303
318
|
store: fakeStore(),
|
|
@@ -333,4 +348,102 @@ describe("detachFrontedSession", () => {
|
|
|
333
348
|
expect(order).toEqual(["offline", "shutdown"]);
|
|
334
349
|
});
|
|
335
350
|
});
|
|
351
|
+
describe("buildFrontedSessionRecord — answering a join request", () => {
|
|
352
|
+
const request = {
|
|
353
|
+
type: "room_join_request",
|
|
354
|
+
room: DM_ROOM,
|
|
355
|
+
requesterId: REQUESTER_ID,
|
|
356
|
+
};
|
|
357
|
+
function build(overrides = {}) {
|
|
358
|
+
const store = fakeStore();
|
|
359
|
+
const peer = overrides.peer ?? fakePeer();
|
|
360
|
+
const tool = overrides.tool ?? fakeTool();
|
|
361
|
+
const record = buildFrontedSessionRecord({
|
|
362
|
+
entry: rosterEntry({ pid: 444, cwd: "/tmp/answering" }),
|
|
363
|
+
peerName: PEER_NAME,
|
|
364
|
+
agentId: "agent-1",
|
|
365
|
+
roomId: "owner/answering",
|
|
366
|
+
store,
|
|
367
|
+
tool,
|
|
368
|
+
peer,
|
|
369
|
+
aliasPool: fakeAliasPool(),
|
|
370
|
+
aliasDirectory: fakeAliasDirectory(),
|
|
371
|
+
});
|
|
372
|
+
return { store, peer, tool, record };
|
|
373
|
+
}
|
|
374
|
+
it("tells the session which peer to message and the exact commands when a join request is waiting", async () => {
|
|
375
|
+
const { store, peer } = build();
|
|
376
|
+
await store.onDelivery?.("agent-1", request);
|
|
377
|
+
expect(peer.sendCalls).toHaveLength(1);
|
|
378
|
+
const body = peer.sendCalls[0]?.body ?? "";
|
|
379
|
+
expect(body).toContain(`"${PEER_NAME}"`);
|
|
380
|
+
expect(body).toContain(`accept ${DM_ROOM} ${REQUESTER_ID}`);
|
|
381
|
+
});
|
|
382
|
+
it("runs room_accept as the session's own agent when the session messages an accept, and reports the result back to it", async () => {
|
|
383
|
+
const { record, tool, peer } = build();
|
|
384
|
+
record.handleInbound({
|
|
385
|
+
from: "uds:/tmp/sock-444",
|
|
386
|
+
body: `accept ${DM_ROOM} ${REQUESTER_ID}`,
|
|
387
|
+
});
|
|
388
|
+
await vi.waitFor(() => {
|
|
389
|
+
expect(peer.sendCalls).toHaveLength(1);
|
|
390
|
+
});
|
|
391
|
+
expect(tool.handleCalls).toEqual([
|
|
392
|
+
{
|
|
393
|
+
ctx: {
|
|
394
|
+
agentId: "agent-1",
|
|
395
|
+
harness: "claude-code",
|
|
396
|
+
cwd: "/tmp/answering",
|
|
397
|
+
pid: process.pid,
|
|
398
|
+
},
|
|
399
|
+
action: {
|
|
400
|
+
action: "room_accept",
|
|
401
|
+
room: DM_ROOM,
|
|
402
|
+
requesterId: REQUESTER_ID,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
]);
|
|
406
|
+
expect(peer.sendCalls[0]).toEqual({ target: { pid: 444 }, body: "ok" });
|
|
407
|
+
});
|
|
408
|
+
it("runs room_reject with the reason when the session messages a reject", async () => {
|
|
409
|
+
const { record, tool, peer } = build();
|
|
410
|
+
record.handleInbound({
|
|
411
|
+
body: `reject ${DM_ROOM} ${REQUESTER_ID} not now`,
|
|
412
|
+
});
|
|
413
|
+
await vi.waitFor(() => {
|
|
414
|
+
expect(peer.sendCalls).toHaveLength(1);
|
|
415
|
+
});
|
|
416
|
+
expect(tool.handleCalls).toEqual([
|
|
417
|
+
expect.objectContaining({
|
|
418
|
+
action: {
|
|
419
|
+
action: "room_reject",
|
|
420
|
+
room: DM_ROOM,
|
|
421
|
+
requesterId: REQUESTER_ID,
|
|
422
|
+
reason: "not now",
|
|
423
|
+
},
|
|
424
|
+
}),
|
|
425
|
+
]);
|
|
426
|
+
});
|
|
427
|
+
it("does not post a decision into the project room, and still posts an ordinary message there", async () => {
|
|
428
|
+
const { record, tool, peer } = build();
|
|
429
|
+
record.handleInbound({ body: `accept ${DM_ROOM} ${REQUESTER_ID}` });
|
|
430
|
+
await vi.waitFor(() => {
|
|
431
|
+
expect(peer.sendCalls).toHaveLength(1);
|
|
432
|
+
});
|
|
433
|
+
expect(tool.handleCalls.some((call) => typeof call === "object" &&
|
|
434
|
+
call !== null &&
|
|
435
|
+
"action" in call &&
|
|
436
|
+
typeof call.action === "object" &&
|
|
437
|
+
call.action !== null &&
|
|
438
|
+
"action" in call.action &&
|
|
439
|
+
call.action.action === "send")).toBe(false);
|
|
440
|
+
record.handleInbound({ from: "local", body: "just chatting" });
|
|
441
|
+
await vi.waitFor(() => {
|
|
442
|
+
expect(tool.handleCalls).toHaveLength(2);
|
|
443
|
+
});
|
|
444
|
+
expect(tool.handleCalls[1]).toEqual(expect.objectContaining({
|
|
445
|
+
action: expect.objectContaining({ action: "send" }),
|
|
446
|
+
}));
|
|
447
|
+
});
|
|
448
|
+
});
|
|
336
449
|
//# sourceMappingURL=cc-peer-front-relay.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-peer-front-relay.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-front-relay.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cc-peer-front-relay.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-front-relay.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test for the whole first-contact path to a session reached only through cc-peer: a real store fronted by buildFrontedSessionRecord, a real CommsTool, and a fake cc-peer peer standing in for the session. The session is told what to send, sends it, and that alone admits the requester.
|
|
3
|
+
*/
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=cc-peer-fronted-approval.integration.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-peer-fronted-approval.integration.test.d.ts","sourceRoot":"","sources":["../../src/test/cc-peer-fronted-approval.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test for the whole first-contact path to a session reached only through cc-peer: a real store fronted by buildFrontedSessionRecord, a real CommsTool, and a fake cc-peer peer standing in for the session. The session is told what to send, sends it, and that alone admits the requester.
|
|
3
|
+
*/
|
|
4
|
+
import { test, expect } from "vitest";
|
|
5
|
+
import { MeshStore } from "../core/mesh-store.js";
|
|
6
|
+
import { CommsTool } from "../core/tool.js";
|
|
7
|
+
import { dmRoomPath } from "../core/room-path.js";
|
|
8
|
+
import { buildFrontedSessionRecord } from "../bridges/cc-peer/front-relay.js";
|
|
9
|
+
import { waitFor, wireTestTransport } from "./test-transport.js";
|
|
10
|
+
let nextPort = 24_450;
|
|
11
|
+
function freshPort() {
|
|
12
|
+
nextPort += 1;
|
|
13
|
+
return nextPort;
|
|
14
|
+
}
|
|
15
|
+
const PEER_NAME = "agent-comms-front";
|
|
16
|
+
const SESSION_PID = 4242;
|
|
17
|
+
async function registered(port, name) {
|
|
18
|
+
const store = new MeshStore({ coordinatorPort: port });
|
|
19
|
+
await wireTestTransport(store);
|
|
20
|
+
await store.init();
|
|
21
|
+
await store.registerAgent({
|
|
22
|
+
name,
|
|
23
|
+
harness: "test",
|
|
24
|
+
cwd: `/test/${name}`,
|
|
25
|
+
pid: process.pid,
|
|
26
|
+
visibility: "visible",
|
|
27
|
+
tags: [],
|
|
28
|
+
});
|
|
29
|
+
return store;
|
|
30
|
+
}
|
|
31
|
+
test("a session with no agent-comms tool admits a first-contact DM by messaging the front, and hears the outcome", async () => {
|
|
32
|
+
const port = freshPort();
|
|
33
|
+
const sender = await registered(port, "sender");
|
|
34
|
+
const fronted = await registered(port, "fronted");
|
|
35
|
+
await waitFor(() => sender.serialise().agents[fronted.peerId] !== undefined, "the sender sees the fronted agent");
|
|
36
|
+
const toSession = [];
|
|
37
|
+
const record = buildFrontedSessionRecord({
|
|
38
|
+
entry: {
|
|
39
|
+
pid: SESSION_PID,
|
|
40
|
+
cwd: "/test/fronted",
|
|
41
|
+
version: "2.1.278",
|
|
42
|
+
messagingSocketPath: "/tmp/cc-socks/fronted.sock",
|
|
43
|
+
},
|
|
44
|
+
peerName: PEER_NAME,
|
|
45
|
+
agentId: fronted.peerId,
|
|
46
|
+
roomId: "unused",
|
|
47
|
+
store: fronted,
|
|
48
|
+
tool: new CommsTool(fronted),
|
|
49
|
+
peer: {
|
|
50
|
+
send: async (_target, body) => {
|
|
51
|
+
toSession.push(body);
|
|
52
|
+
return Promise.resolve({ msgId: "m" });
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
aliasPool: { ensure: async () => Promise.resolve() },
|
|
56
|
+
aliasDirectory: { ensure: (correspondent) => `mesh-${correspondent}` },
|
|
57
|
+
});
|
|
58
|
+
try {
|
|
59
|
+
const dmPath = dmRoomPath(sender.peerId, fronted.peerId);
|
|
60
|
+
const send = sender.sendDm(sender.peerId, fronted.peerId, "hello session");
|
|
61
|
+
await waitFor(() => toSession.some((body) => body.includes("accept ")), "the session is told a request is waiting");
|
|
62
|
+
const instruction = toSession.find((body) => body.includes("accept "));
|
|
63
|
+
const command = instruction
|
|
64
|
+
?.split("\n")
|
|
65
|
+
.find((line) => line.startsWith("accept "));
|
|
66
|
+
expect(command).toBe(`accept ${dmPath} ${sender.peerId}`);
|
|
67
|
+
expect(instruction).toContain(`"${PEER_NAME}"`);
|
|
68
|
+
// The session replies with exactly the line it was given.
|
|
69
|
+
record.handleInbound({
|
|
70
|
+
from: `uds:${record.messagingSocketPath}`,
|
|
71
|
+
body: command ?? "",
|
|
72
|
+
});
|
|
73
|
+
const sent = await send;
|
|
74
|
+
await waitFor(() => (fronted.serialise().dms[dmPath] ?? []).some((m) => m.id === sent.id), "the fronted agent receives the DM");
|
|
75
|
+
await waitFor(() => toSession.some((body) => body.startsWith("Accepted ")), "the session hears the outcome");
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
await fronted.shutdown();
|
|
79
|
+
await sender.shutdown();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
test("a session that rejects a first-contact DM makes the sender's dm fail", async () => {
|
|
83
|
+
const port = freshPort();
|
|
84
|
+
const sender = await registered(port, "sender");
|
|
85
|
+
const fronted = await registered(port, "fronted");
|
|
86
|
+
await waitFor(() => sender.serialise().agents[fronted.peerId] !== undefined, "the sender sees the fronted agent");
|
|
87
|
+
const toSession = [];
|
|
88
|
+
const record = buildFrontedSessionRecord({
|
|
89
|
+
entry: {
|
|
90
|
+
pid: SESSION_PID,
|
|
91
|
+
cwd: "/test/fronted",
|
|
92
|
+
version: "2.1.278",
|
|
93
|
+
messagingSocketPath: "/tmp/cc-socks/fronted.sock",
|
|
94
|
+
},
|
|
95
|
+
peerName: PEER_NAME,
|
|
96
|
+
agentId: fronted.peerId,
|
|
97
|
+
roomId: "unused",
|
|
98
|
+
store: fronted,
|
|
99
|
+
tool: new CommsTool(fronted),
|
|
100
|
+
peer: {
|
|
101
|
+
send: async (_target, body) => {
|
|
102
|
+
toSession.push(body);
|
|
103
|
+
return Promise.resolve({ msgId: "m" });
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
aliasPool: { ensure: async () => Promise.resolve() },
|
|
107
|
+
aliasDirectory: { ensure: (correspondent) => `mesh-${correspondent}` },
|
|
108
|
+
});
|
|
109
|
+
try {
|
|
110
|
+
const dmPath = dmRoomPath(sender.peerId, fronted.peerId);
|
|
111
|
+
const send = sender.sendDm(sender.peerId, fronted.peerId, "unwelcome");
|
|
112
|
+
const settled = expect(send).rejects.toThrow(/was refused \(denied\)/);
|
|
113
|
+
await waitFor(() => toSession.some((body) => body.includes("reject ")), "the session is told a request is waiting");
|
|
114
|
+
record.handleInbound({
|
|
115
|
+
body: `reject ${dmPath} ${sender.peerId} not now`,
|
|
116
|
+
});
|
|
117
|
+
await settled;
|
|
118
|
+
await waitFor(() => toSession.some((body) => body.startsWith("Rejected ")), "the session hears the outcome");
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await fronted.shutdown();
|
|
122
|
+
await sender.shutdown();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=cc-peer-fronted-approval.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-peer-fronted-approval.integration.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-fronted-approval.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,SAAS,SAAS;IAChB,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,SAAS,GAAG,mBAAmB,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,KAAK,CAAC,aAAa,CAAC;QACxB,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,SAAS,IAAI,EAAE;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,CAAC,4GAA4G,EAAE,KAAK,IAAI,EAAE;IAC5H,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAC7D,mCAAmC,CACpC,CAAC;IAEF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,KAAK,EAAE;YACL,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,eAAe;YACpB,OAAO,EAAE,SAAS;YAClB,mBAAmB,EAAE,4BAA4B;SAClD;QACD,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;SACF;QACD,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;QACpD,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,aAAa,EAAE,EAAE;KACvE,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAE3E,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACxD,0CAA0C,CAC3C,CAAC;QACF,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,WAAW;YACzB,EAAE,KAAK,CAAC,IAAI,CAAC;aACZ,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,CAAC,aAAa,CAAC;YACnB,IAAI,EAAE,OAAO,MAAM,CAAC,mBAAmB,EAAE;YACzC,IAAI,EAAE,OAAO,IAAI,EAAE;SACpB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;QACxB,MAAM,OAAO,CACX,GAAG,EAAE,CACH,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EACvE,mCAAmC,CACpC,CAAC;QACF,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC5D,+BAA+B,CAChC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;IACtF,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAC7D,mCAAmC,CACpC,CAAC;IAEF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,KAAK,EAAE;YACL,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,eAAe;YACpB,OAAO,EAAE,SAAS;YAClB,mBAAmB,EAAE,4BAA4B;SAClD;QACD,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;SACF;QACD,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;QACpD,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,aAAa,EAAE,EAAE;KACvE,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEvE,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACxD,0CAA0C,CAC3C,CAAC;QACF,MAAM,CAAC,aAAa,CAAC;YACnB,IAAI,EAAE,UAAU,MAAM,IAAI,MAAM,CAAC,MAAM,UAAU;SAClD,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC;QACd,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC5D,+BAA+B,CAChC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED