@groundnuty/macf-channel-server 0.2.0 → 0.2.2
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/dist/mcp.d.ts +14 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +12 -4
- package/dist/mcp.js.map +1 -1
- package/dist/notify-formatter.d.ts.map +1 -1
- package/dist/notify-formatter.js +11 -1
- package/dist/notify-formatter.js.map +1 -1
- package/dist/notify-peer.d.ts +52 -0
- package/dist/notify-peer.d.ts.map +1 -0
- package/dist/notify-peer.js +162 -0
- package/dist/notify-peer.js.map +1 -0
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +25 -0
- package/dist/package-version.js.map +1 -0
- package/dist/server.js +38 -0
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
package/dist/mcp.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
2
|
import type { McpChannel } from '@groundnuty/macf-core';
|
|
3
|
+
/**
|
|
4
|
+
* Extended McpChannel surface — adds the underlying McpServer accessor
|
|
5
|
+
* so callers (server.ts) can register MCP tools (notify_peer per
|
|
6
|
+
* macf#256 / DR-023 UC-1) on the same MCP-stdio session that delivers
|
|
7
|
+
* channel notifications. Without this, registering tools would require
|
|
8
|
+
* a separate MCP server process; same-server keeps the dispatcher
|
|
9
|
+
* single-tenant + matches DR-022 Amendment K (channel-server's tool
|
|
10
|
+
* surface ships from the same package).
|
|
11
|
+
*/
|
|
12
|
+
export interface McpChannelWithTools extends McpChannel {
|
|
13
|
+
readonly mcp: McpServer;
|
|
14
|
+
}
|
|
2
15
|
export declare function createMcpChannel(config: {
|
|
3
16
|
readonly agentName: string;
|
|
4
17
|
readonly instructions?: string;
|
|
5
|
-
}):
|
|
18
|
+
}): McpChannelWithTools;
|
|
6
19
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAcxD;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,mBAAmB,CAoDtB"}
|
package/dist/mcp.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { McpChannelError } from '@groundnuty/macf-core';
|
|
4
|
+
import { PACKAGE_VERSION } from './package-version.js';
|
|
4
5
|
const CHANNEL_INSTRUCTIONS = `Events arrive as <channel source="macf-agent" type="..." ...>.
|
|
5
6
|
|
|
6
7
|
type="issue_routed": A GitHub issue was routed to you by the agent-router Action.
|
|
@@ -13,23 +14,30 @@ type="startup_check": Pending issues found at session startup.
|
|
|
13
14
|
Review and pick up the most important one.`;
|
|
14
15
|
export function createMcpChannel(config) {
|
|
15
16
|
const instructions = config.instructions ?? CHANNEL_INSTRUCTIONS;
|
|
16
|
-
|
|
17
|
+
// Switched from low-level `Server` to `McpServer` per macf#256 (DR-023
|
|
18
|
+
// implementation) — McpServer is the v1.x canonical API for tool
|
|
19
|
+
// registration via `registerTool()`. The underlying `Server` is still
|
|
20
|
+
// accessible via `.server` for the raw `notifications/claude/channel`
|
|
21
|
+
// push (Claude-Code-extension method that sits outside MCP's typed
|
|
22
|
+
// notification union).
|
|
23
|
+
const mcp = new McpServer({ name: `macf-${config.agentName}`, version: PACKAGE_VERSION }, {
|
|
17
24
|
capabilities: {
|
|
18
25
|
experimental: { 'claude/channel': {} },
|
|
19
26
|
},
|
|
20
27
|
instructions,
|
|
21
28
|
});
|
|
22
29
|
return {
|
|
30
|
+
mcp,
|
|
23
31
|
async connect() {
|
|
24
32
|
const transport = new StdioServerTransport();
|
|
25
|
-
await
|
|
33
|
+
await mcp.connect(transport);
|
|
26
34
|
},
|
|
27
35
|
async pushNotification(content, meta) {
|
|
28
36
|
try {
|
|
29
37
|
// notifications/claude/channel is a Claude Code extension not in MCP's
|
|
30
38
|
// typed ServerNotification union, but Server.assertNotificationCapability
|
|
31
39
|
// has no default case so unknown methods pass through at runtime.
|
|
32
|
-
await server.notification({
|
|
40
|
+
await mcp.server.notification({
|
|
33
41
|
method: 'notifications/claude/channel',
|
|
34
42
|
params: { content, meta },
|
|
35
43
|
});
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,oBAAoB,GAAG;;;;;;;;;6CASgB,CAAC;AAe9C,MAAM,UAAU,gBAAgB,CAAC,MAGhC;IACC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAEjE,uEAAuE;IACvE,iEAAiE;IACjE,sEAAsE;IACtE,sEAAsE;IACtE,mEAAmE;IACnE,uBAAuB;IACvB,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,EAAE,IAAI,EAAE,QAAQ,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAC9D;QACE,YAAY,EAAE;YACZ,YAAY,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACvC;QACD,YAAY;KACb,CACF,CAAC;IAEF,OAAO;QACL,GAAG;QAEH,KAAK,CAAC,OAAO;YACX,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAC7C,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,gBAAgB,CACpB,OAAe,EACf,IAA4B;YAE5B,IAAI,CAAC;gBACH,uEAAuE;gBACvE,0EAA0E;gBAC1E,kEAAkE;gBAClE,MAAO,GAAG,CAAC,MAAM,CAAC,YAME,CAAC;oBACnB,MAAM,EAAE,8BAA8B;oBACtC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify-formatter.d.ts","sourceRoot":"","sources":["../src/notify-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"notify-formatter.d.ts","sourceRoot":"","sources":["../src/notify-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,CAsD3E"}
|
package/dist/notify-formatter.js
CHANGED
|
@@ -2,8 +2,18 @@ export function formatNotifyContent(payload) {
|
|
|
2
2
|
if (payload.type === 'issue_routed') {
|
|
3
3
|
if (payload.issue_number !== undefined) {
|
|
4
4
|
const suffix = payload.title ? `: ${payload.title}` : '';
|
|
5
|
+
// Include `--repo <repo>` instruction when the producer
|
|
6
|
+
// supplied origin-repo (macf-actions v3.2.0+, #30). Multi-homed
|
|
7
|
+
// receivers otherwise fall back to cwd-repo on bare `gh issue
|
|
8
|
+
// view N`, which is rarely the routing source. The hint mirrors
|
|
9
|
+
// the route-by-mention path's MESSAGE template. When repo is
|
|
10
|
+
// absent (older producer), the trailing-period + Run-hint are
|
|
11
|
+
// omitted to keep the legacy single-sentence shape unchanged.
|
|
12
|
+
const repoSuffix = payload.repo
|
|
13
|
+
? `. Run: gh issue view ${payload.issue_number} --repo ${payload.repo} --json title,body,labels,comments`
|
|
14
|
+
: '';
|
|
5
15
|
return {
|
|
6
|
-
content: `Issue #${payload.issue_number} was routed to you${suffix}`,
|
|
16
|
+
content: `Issue #${payload.issue_number} was routed to you${suffix}${repoSuffix}`,
|
|
7
17
|
issueNumber: payload.issue_number,
|
|
8
18
|
};
|
|
9
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify-formatter.js","sourceRoot":"","sources":["../src/notify-formatter.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,UAAU,OAAO,CAAC,YAAY,qBAAqB,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"notify-formatter.js","sourceRoot":"","sources":["../src/notify-formatter.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,wDAAwD;YACxD,gEAAgE;YAChE,8DAA8D;YAC9D,gEAAgE;YAChE,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;gBAC7B,CAAC,CAAC,wBAAwB,OAAO,CAAC,YAAY,WAAW,OAAO,CAAC,IAAI,oCAAoC;gBACzG,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,UAAU,OAAO,CAAC,YAAY,qBAAqB,MAAM,GAAG,UAAU,EAAE;gBACjF,WAAW,EAAE,OAAO,CAAC,YAAY;aAClC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,KAAK;gBACpB,CAAC,CAAC,+BAA+B,OAAO,CAAC,KAAK,EAAE;gBAChD,CAAC,CAAC,4BAA4B;SACjC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACrC,+DAA+D;QAC/D,8DAA8D;QAC9D,+DAA+D;QAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACxE,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,cAAc,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB;gBACxC,CAAC,CAAC,2BAA2B,OAAO,CAAC,kBAAkB,IAAI;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,GAAG,KAAK,QAAQ,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE;aACtE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,yDAAyD;IACzD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,iCAAiC,EAAE,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Registry } from '@groundnuty/macf-core';
|
|
2
|
+
import type { Logger } from '@groundnuty/macf-core';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export declare const NotifyPeerInputSchema: {
|
|
5
|
+
readonly to: z.ZodOptional<z.ZodString>;
|
|
6
|
+
readonly event: z.ZodEnum<{
|
|
7
|
+
error: "error";
|
|
8
|
+
"session-end": "session-end";
|
|
9
|
+
"turn-complete": "turn-complete";
|
|
10
|
+
custom: "custom";
|
|
11
|
+
}>;
|
|
12
|
+
readonly message: z.ZodOptional<z.ZodString>;
|
|
13
|
+
readonly context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
14
|
+
};
|
|
15
|
+
export declare const NotifyPeerOutputSchema: {
|
|
16
|
+
readonly delivered: z.ZodBoolean;
|
|
17
|
+
readonly channel_state: z.ZodEnum<{
|
|
18
|
+
online: "online";
|
|
19
|
+
offline: "offline";
|
|
20
|
+
}>;
|
|
21
|
+
readonly peers_attempted: z.ZodNumber;
|
|
22
|
+
readonly peers_delivered: z.ZodNumber;
|
|
23
|
+
};
|
|
24
|
+
export interface NotifyPeerDeps {
|
|
25
|
+
readonly registry: Registry;
|
|
26
|
+
readonly selfAgentName: string;
|
|
27
|
+
readonly mTlsClientCertPem: string;
|
|
28
|
+
readonly mTlsClientKeyPem: string;
|
|
29
|
+
readonly caCertPem: string;
|
|
30
|
+
readonly logger: Logger;
|
|
31
|
+
}
|
|
32
|
+
export interface NotifyPeerInput {
|
|
33
|
+
readonly to?: string;
|
|
34
|
+
readonly event: 'session-end' | 'turn-complete' | 'error' | 'custom';
|
|
35
|
+
readonly message?: string;
|
|
36
|
+
readonly context?: Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
export interface NotifyPeerResult {
|
|
39
|
+
readonly delivered: boolean;
|
|
40
|
+
readonly channel_state: 'online' | 'offline';
|
|
41
|
+
readonly peers_attempted: number;
|
|
42
|
+
readonly peers_delivered: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Tool body — resolves peers, fans out, aggregates.
|
|
46
|
+
*
|
|
47
|
+
* Per-peer timeout is 1s (well under DR-023 Stop event's 500ms typical
|
|
48
|
+
* budget for the whole tool call; broadcasts to N peers run in parallel
|
|
49
|
+
* so wall-clock is max(per-peer-time), not sum).
|
|
50
|
+
*/
|
|
51
|
+
export declare function notifyPeer(deps: NotifyPeerDeps, input: NotifyPeerInput): Promise<NotifyPeerResult>;
|
|
52
|
+
//# sourceMappingURL=notify-peer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-peer.d.ts","sourceRoot":"","sources":["../src/notify-peer.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;CASxB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;CASzB,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AA4FD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA+B3B"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `notify_peer` MCP tool implementation per macf#256 / DR-023 UC-1.
|
|
3
|
+
*
|
|
4
|
+
* Registered on the channel-server's MCP surface; called by Claude Code's
|
|
5
|
+
* plugin loader when the `Stop` hook fires (per `packages/macf/plugin/hooks/hooks.json`).
|
|
6
|
+
* The tool resolves the peer agent's channel-server URL from the project
|
|
7
|
+
* registry, then sends a notification payload to the peer's `/notify`
|
|
8
|
+
* HTTP endpoint over mTLS.
|
|
9
|
+
*
|
|
10
|
+
* Failure semantics (per DR-023 §"Failure-mode contract" + §UC-1):
|
|
11
|
+
*
|
|
12
|
+
* The hook layer is observational + non-blocking by default. All errors
|
|
13
|
+
* (peer unreachable, TLS handshake failure, peer rejected payload) are
|
|
14
|
+
* surfaced as `isError: true` — the LLM sees the error in the tool
|
|
15
|
+
* response + can self-correct, but the `Stop` event itself is NOT
|
|
16
|
+
* blocked. Polling-fallback (existing pattern: peer's SessionStart
|
|
17
|
+
* hook checks GitHub queue) catches missed notifications.
|
|
18
|
+
*
|
|
19
|
+
* `to` field semantic (refinement from DR-023 design — see macf#256
|
|
20
|
+
* Option A):
|
|
21
|
+
*
|
|
22
|
+
* `to` is OPTIONAL. When absent, the tool fans out to all peer
|
|
23
|
+
* agents registered in the project (registry `list()`). When
|
|
24
|
+
* present, it's a single-peer POST. This keeps the plugin-shipped
|
|
25
|
+
* hook entry universal across consumer workspaces (no per-agent
|
|
26
|
+
* `to:` customization needed).
|
|
27
|
+
*/
|
|
28
|
+
import { request as httpsRequest } from 'node:https';
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
export const NotifyPeerInputSchema = {
|
|
31
|
+
to: z.string().optional()
|
|
32
|
+
.describe('Peer agent name to notify. If omitted, broadcasts to all registered peers in the project.'),
|
|
33
|
+
event: z.enum(['session-end', 'turn-complete', 'error', 'custom'])
|
|
34
|
+
.describe('Event type triggering the notification.'),
|
|
35
|
+
message: z.string().optional()
|
|
36
|
+
.describe('Optional human-readable message body.'),
|
|
37
|
+
context: z.record(z.string(), z.unknown()).optional()
|
|
38
|
+
.describe('Optional structured context payload (string-keyed object).'),
|
|
39
|
+
};
|
|
40
|
+
export const NotifyPeerOutputSchema = {
|
|
41
|
+
delivered: z.boolean()
|
|
42
|
+
.describe('True if at least one peer received HTTP 200 from /notify.'),
|
|
43
|
+
channel_state: z.enum(['online', 'offline'])
|
|
44
|
+
.describe('Aggregate state — "online" if at least one peer reachable, "offline" otherwise.'),
|
|
45
|
+
peers_attempted: z.number().int().nonnegative()
|
|
46
|
+
.describe('Number of peers the tool attempted to notify.'),
|
|
47
|
+
peers_delivered: z.number().int().nonnegative()
|
|
48
|
+
.describe('Subset of attempted peers that returned HTTP 200.'),
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Resolve target peer list. Single-peer mode if `to` provided; broadcast
|
|
52
|
+
* to all-but-self otherwise. Always excludes self to prevent the
|
|
53
|
+
* (server, tool, input) deduplication cycle DR-023 §"Cycle prevention"
|
|
54
|
+
* warns about.
|
|
55
|
+
*/
|
|
56
|
+
async function resolveTargetPeers(deps, to) {
|
|
57
|
+
if (to !== undefined && to !== '') {
|
|
58
|
+
if (to === deps.selfAgentName)
|
|
59
|
+
return [];
|
|
60
|
+
const info = await deps.registry.get(to);
|
|
61
|
+
if (info === null)
|
|
62
|
+
return [];
|
|
63
|
+
return [{ name: to, info }];
|
|
64
|
+
}
|
|
65
|
+
// Broadcast: list all registered peers, exclude self
|
|
66
|
+
const all = await deps.registry.list('');
|
|
67
|
+
return all.filter(p => p.name !== deps.selfAgentName);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Send a single mTLS POST to `https://${host}:${port}/notify` with the
|
|
71
|
+
* payload as JSON. Returns true on HTTP 200, false on any other status
|
|
72
|
+
* (peer alive but rejected) or transport error (peer unreachable).
|
|
73
|
+
*
|
|
74
|
+
* Distinguishes "peer alive + rejected" from "peer unreachable" via the
|
|
75
|
+
* caller's outer aggregation (peer-alive returns false; transport-error
|
|
76
|
+
* also returns false, but the next channel_state derivation can use the
|
|
77
|
+
* stats to surface aggregate health).
|
|
78
|
+
*/
|
|
79
|
+
function postToPeer(deps, peer, payload, timeoutMs) {
|
|
80
|
+
return new Promise((resolve) => {
|
|
81
|
+
const body = JSON.stringify(payload);
|
|
82
|
+
const req = httpsRequest({
|
|
83
|
+
hostname: peer.info.host,
|
|
84
|
+
port: peer.info.port,
|
|
85
|
+
path: '/notify',
|
|
86
|
+
method: 'POST',
|
|
87
|
+
cert: deps.mTlsClientCertPem,
|
|
88
|
+
key: deps.mTlsClientKeyPem,
|
|
89
|
+
ca: deps.caCertPem,
|
|
90
|
+
// Channel server's cert SAN may not match host name when
|
|
91
|
+
// advertise_host=127.0.0.1 (the canonical loopback case);
|
|
92
|
+
// mTLS ensures identity via cert chain, not hostname.
|
|
93
|
+
rejectUnauthorized: true,
|
|
94
|
+
checkServerIdentity: () => undefined,
|
|
95
|
+
headers: {
|
|
96
|
+
'Content-Type': 'application/json',
|
|
97
|
+
'Content-Length': Buffer.byteLength(body).toString(),
|
|
98
|
+
},
|
|
99
|
+
timeout: timeoutMs,
|
|
100
|
+
}, (res) => {
|
|
101
|
+
const httpOk = res.statusCode === 200;
|
|
102
|
+
// Drain response body so socket can free; we don't care about content.
|
|
103
|
+
res.resume();
|
|
104
|
+
res.on('end', () => resolve({ httpOk, transportOk: true }));
|
|
105
|
+
});
|
|
106
|
+
req.on('error', (err) => {
|
|
107
|
+
deps.logger.warn('notify_peer_transport_error', {
|
|
108
|
+
peer: peer.name,
|
|
109
|
+
host: peer.info.host,
|
|
110
|
+
port: String(peer.info.port),
|
|
111
|
+
error: err.message,
|
|
112
|
+
});
|
|
113
|
+
resolve({ httpOk: false, transportOk: false });
|
|
114
|
+
});
|
|
115
|
+
req.on('timeout', () => {
|
|
116
|
+
deps.logger.warn('notify_peer_timeout', {
|
|
117
|
+
peer: peer.name,
|
|
118
|
+
host: peer.info.host,
|
|
119
|
+
port: String(peer.info.port),
|
|
120
|
+
timeoutMs: String(timeoutMs),
|
|
121
|
+
});
|
|
122
|
+
req.destroy();
|
|
123
|
+
resolve({ httpOk: false, transportOk: false });
|
|
124
|
+
});
|
|
125
|
+
req.write(body);
|
|
126
|
+
req.end();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Tool body — resolves peers, fans out, aggregates.
|
|
131
|
+
*
|
|
132
|
+
* Per-peer timeout is 1s (well under DR-023 Stop event's 500ms typical
|
|
133
|
+
* budget for the whole tool call; broadcasts to N peers run in parallel
|
|
134
|
+
* so wall-clock is max(per-peer-time), not sum).
|
|
135
|
+
*/
|
|
136
|
+
export async function notifyPeer(deps, input) {
|
|
137
|
+
const peers = await resolveTargetPeers(deps, input.to);
|
|
138
|
+
if (peers.length === 0) {
|
|
139
|
+
return {
|
|
140
|
+
delivered: false,
|
|
141
|
+
channel_state: 'offline',
|
|
142
|
+
peers_attempted: 0,
|
|
143
|
+
peers_delivered: 0,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const payload = {
|
|
147
|
+
type: input.event,
|
|
148
|
+
source: deps.selfAgentName,
|
|
149
|
+
...(input.message !== undefined ? { message: input.message } : {}),
|
|
150
|
+
...(input.context !== undefined ? { context: input.context } : {}),
|
|
151
|
+
};
|
|
152
|
+
const results = await Promise.all(peers.map(p => postToPeer(deps, p, payload, 1000)));
|
|
153
|
+
const peers_delivered = results.filter(r => r.httpOk).length;
|
|
154
|
+
const peers_reachable = results.filter(r => r.transportOk).length;
|
|
155
|
+
return {
|
|
156
|
+
delivered: peers_delivered > 0,
|
|
157
|
+
channel_state: peers_reachable > 0 ? 'online' : 'offline',
|
|
158
|
+
peers_attempted: peers.length,
|
|
159
|
+
peers_delivered,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=notify-peer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-peer.js","sourceRoot":"","sources":["../src/notify-peer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.d.ts","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,eAAe,EAAE,MAErB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package version, derived from `package.json` at module load.
|
|
3
|
+
*
|
|
4
|
+
* Structural fix for macf#216 — replaces the hardcoded version
|
|
5
|
+
* literal in `mcp.ts` (the MCP handshake's server-info version
|
|
6
|
+
* field). Without this util, every release bump required editing
|
|
7
|
+
* the literal in sync with package.json; missing it caused the
|
|
8
|
+
* handshake to advertise a stale version to clients.
|
|
9
|
+
*
|
|
10
|
+
* Path resolution works for both dev (source loaded from `src/`)
|
|
11
|
+
* and installed (compiled loaded from `dist/`) layouts: one dir up
|
|
12
|
+
* from this file's location lands at the package root where
|
|
13
|
+
* `package.json` lives in both cases.
|
|
14
|
+
*
|
|
15
|
+
* `package.json` is always included in npm-published tarballs
|
|
16
|
+
* regardless of the `files` field, so the runtime read works post-
|
|
17
|
+
* publish for the server invoked via `npx -y @groundnuty/macf-
|
|
18
|
+
* channel-server`.
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync } from 'node:fs';
|
|
21
|
+
import { dirname, join } from 'node:path';
|
|
22
|
+
import { fileURLToPath } from 'node:url';
|
|
23
|
+
const pkgPath = join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
|
|
24
|
+
export const PACKAGE_VERSION = JSON.parse(readFileSync(pkgPath, 'utf-8')).version;
|
|
25
|
+
//# sourceMappingURL=package-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.js","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAC1C,CAAC,OAAO,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -205,6 +205,44 @@ async function main() {
|
|
|
205
205
|
onSign,
|
|
206
206
|
logger,
|
|
207
207
|
});
|
|
208
|
+
// macf#256 / DR-023 UC-1: register notify_peer MCP tool on the MCP
|
|
209
|
+
// channel BEFORE connecting (registerTool is a one-shot capability
|
|
210
|
+
// declaration; can't add tools post-connect). Tool resolves peer URLs
|
|
211
|
+
// via the registry, mTLS-POSTs to peer's /notify HTTP endpoint.
|
|
212
|
+
// Per Option A (impl-time refinement to DR-023 §UC-1, approved on
|
|
213
|
+
// macf#256): `to` field is OPTIONAL — when absent, broadcasts to all
|
|
214
|
+
// peers in the project registry (excluding self).
|
|
215
|
+
const { readFileSync } = await import('node:fs');
|
|
216
|
+
const { notifyPeer, NotifyPeerInputSchema, NotifyPeerOutputSchema } = await import('./notify-peer.js');
|
|
217
|
+
const notifyPeerDeps = {
|
|
218
|
+
registry,
|
|
219
|
+
selfAgentName: config.agentName,
|
|
220
|
+
mTlsClientCertPem: readFileSync(config.agentCertPath, 'utf8'),
|
|
221
|
+
mTlsClientKeyPem: readFileSync(config.agentKeyPath, 'utf8'),
|
|
222
|
+
caCertPem: readFileSync(config.caCertPath, 'utf8'),
|
|
223
|
+
logger,
|
|
224
|
+
};
|
|
225
|
+
mcp.mcp.registerTool('notify_peer', {
|
|
226
|
+
description: 'Notify a peer agent of an event via the channel-server network. ' +
|
|
227
|
+
'If `to` is provided, POSTs to that peer\'s /notify. If absent, broadcasts to ' +
|
|
228
|
+
'all registered peers in the project (excluding self). Failure semantics are ' +
|
|
229
|
+
'observational + non-blocking per DR-023 §"Failure-mode contract" — `isError: true` ' +
|
|
230
|
+
'when peers were attempted but none delivered, signaling LLM self-correction; ' +
|
|
231
|
+
'the triggering Stop event proceeds regardless.',
|
|
232
|
+
inputSchema: NotifyPeerInputSchema,
|
|
233
|
+
outputSchema: NotifyPeerOutputSchema,
|
|
234
|
+
}, async (input) => {
|
|
235
|
+
const result = await notifyPeer(notifyPeerDeps, input);
|
|
236
|
+
return {
|
|
237
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
238
|
+
// Spread into a fresh object so the SDK's open
|
|
239
|
+
// `{[x: string]: unknown}` index-signature constraint accepts
|
|
240
|
+
// it. NotifyPeerResult's `readonly` props make the strict-shape
|
|
241
|
+
// assignment fail otherwise.
|
|
242
|
+
structuredContent: { ...result },
|
|
243
|
+
isError: result.peers_attempted > 0 && result.peers_delivered === 0,
|
|
244
|
+
};
|
|
245
|
+
});
|
|
208
246
|
// P1: Connect MCP channel
|
|
209
247
|
await mcp.connect();
|
|
210
248
|
// P1: Bind port
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@groundnuty/macf-channel-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "MCP channel server for the Multi-Agent Coordination Framework. HTTPS + mTLS endpoint agents connect to for inter-agent messaging (notify), CI-completion routing, and /sign certificate issuance. Invoked by Claude Code's plugin via `npx -y @groundnuty/macf-channel-server` per DR-022.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"test:e2e": "vitest run --config vitest.e2e.config.ts"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@groundnuty/macf-core": "0.2.
|
|
35
|
+
"@groundnuty/macf-core": "0.2.2",
|
|
36
36
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
37
37
|
"@opentelemetry/api": "1.9.1",
|
|
38
38
|
"@opentelemetry/exporter-trace-otlp-proto": "0.215.0",
|