@relaymessenger/cli 0.3.1 → 0.3.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/README.md +5 -5
- package/claude-plugin/marketplace/plugins/relay/.claude-plugin/plugin.json +13 -4
- package/claude-plugin/marketplace/plugins/relay/runtime/server.mjs +91 -13
- package/dist/api.d.ts +40 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +33 -4
- package/dist/api.js.map +1 -1
- package/dist/claude-settings.js +1 -1
- package/dist/claude-settings.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex.js +5 -5
- package/dist/codex.js.map +1 -1
- package/dist/doctor.js +6 -6
- package/dist/doctor.js.map +1 -1
- package/dist/engine/acp.d.ts +6 -1
- package/dist/engine/acp.d.ts.map +1 -1
- package/dist/engine/acp.js +16 -5
- package/dist/engine/acp.js.map +1 -1
- package/dist/engine/catalog.d.ts.map +1 -1
- package/dist/install.d.ts +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +5 -2
- package/dist/install.js.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/permissions.d.ts +6 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +20 -1
- package/dist/permissions.js.map +1 -1
- package/dist/receive.d.ts +51 -2
- package/dist/receive.d.ts.map +1 -1
- package/dist/receive.js +206 -15
- package/dist/receive.js.map +1 -1
- package/dist/store.d.ts +6 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +1 -0
- package/dist/store.js.map +1 -1
- package/openclaw-plugin/relaymessenger-openclaw-plugin-0.1.0.tgz +0 -0
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ machine. It also installs native Relay channels for Claude Code and OpenClaw.
|
|
|
6
6
|
Texts become prompts, replies come back as messages, and tool approvals arrive
|
|
7
7
|
as Allow/Deny cards you answer with a tap.
|
|
8
8
|
|
|
9
|
-
Relay is
|
|
9
|
+
Relay is the messenger for AI agents: https://relayapp.im. API reference:
|
|
10
10
|
https://docs.relayapp.im.
|
|
11
11
|
|
|
12
12
|
## Quickstart
|
|
@@ -32,14 +32,14 @@ the engine works and posts one finalized reply per turn.
|
|
|
32
32
|
| --- | --- |
|
|
33
33
|
| `relaymessenger pair` | `POST /v1/pairings`, shows a terminal QR + code, long-polls until you claim it in the app, stores the Agent Token in `~/.relaymessenger/config.json` (chmod 600) and pins your user id as the bridge owner (from `GET /v1/agents/me`; override with `RELAY_OWNER_USER_ID`). If owner lookup is interrupted after the token is saved, running the command again resumes that saved token without creating another agent. The token never appears on the phone. |
|
|
34
34
|
| `relaymessenger start` | Receive loop: long-polls `GET /v1/events`, drives the engine over ACP, replies via `POST /v1/messages` with an `Idempotency-Key`. Flags: `--engine claude\|codex\|hermes`, `--dir <path>`. Claude and Codex adapters are bundled; Hermes must already be installed and pass `hermes acp --check`. |
|
|
35
|
-
| `relaymessenger install-codex` | Run from a project root to opt in that project only. Merges
|
|
35
|
+
| `relaymessenger install-codex` | Run from a project root to opt in that project only. Merges, never clobbers, `[mcp_servers.relay]` + `notify` into `~/.codex/config.toml` (comments preserved; a `.bak` of the original is kept) and a `PermissionRequest` hook into `~/.codex/hooks.json`. Other projects are suppressed until installed separately. Codex gates untrusted hook handlers: the first run may ask you to trust the relaymessenger handler. |
|
|
36
36
|
| `relaymessenger install-claude` | After pairing, strictly validates the Claude plugin bundled in the installed npm package, persists its local marketplace under the paired account's private runtime directory, installs `relay@relaymessenger-bundled`, and writes the token/API origin/owner pin to `~/.claude/channels/relay/.env` with mode 600 without printing the token. It refuses to overwrite a different configured identity. |
|
|
37
|
-
| `relaymessenger install-openclaw` | After pairing, persists
|
|
37
|
+
| `relaymessenger install-openclaw` | After pairing, persists the OpenClaw plugin archive bundled in the npm package and installs it through OpenClaw's managed `npm-pack:` path, adds only Relay's plugin/channel fields to `~/.openclaw/openclaw.json`, and writes the paired token to an owner-only file. Existing unrelated config is preserved and a different configured identity is refused. |
|
|
38
38
|
| `relaymessenger doctor` | Checks Node, pairing, token file permissions, API reachability, installed adapter pins, and durable-state health. |
|
|
39
39
|
|
|
40
40
|
## How the wire works
|
|
41
41
|
|
|
42
|
-
Everything rides Relay's public agent API
|
|
42
|
+
Everything rides Relay's public agent API, the same surface you can drive
|
|
43
43
|
with curl:
|
|
44
44
|
|
|
45
45
|
```sh
|
|
@@ -111,7 +111,7 @@ curl -X POST https://api.relayapp.im/v1/messages \
|
|
|
111
111
|
- `RELAY_API_ORIGIN` points `pair`, `start`, and `doctor` at a
|
|
112
112
|
non-production Relay API origin, e.g. a local dev server:
|
|
113
113
|
`RELAY_API_ORIGIN=http://127.0.0.1:8787 relaymessenger pair`. This is a
|
|
114
|
-
development/testing mechanism only
|
|
114
|
+
development/testing mechanism only, production
|
|
115
115
|
(`https://api.relayapp.im`) stays the default, the value must be an
|
|
116
116
|
origin with no path/query/credentials, and plain HTTP is accepted only
|
|
117
117
|
for loopback hosts (same rule as every other origin the bridge uses).
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relay",
|
|
3
|
-
"description": "Relay channel for Claude Code
|
|
3
|
+
"description": "Relay channel for Claude Code. Message your Claude Code session from your Relay agent conversation, with remote Allow/Deny permission relay. Run /relay:configure to set up.",
|
|
4
4
|
"version": "0.2.0",
|
|
5
|
-
"author": {
|
|
6
|
-
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Relay"
|
|
7
|
+
},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"relay",
|
|
10
|
+
"messaging",
|
|
11
|
+
"channel",
|
|
12
|
+
"mcp"
|
|
13
|
+
],
|
|
7
14
|
"mcpServers": {
|
|
8
15
|
"relay": {
|
|
9
16
|
"command": "node",
|
|
10
|
-
"args": [
|
|
17
|
+
"args": [
|
|
18
|
+
"${CLAUDE_PLUGIN_ROOT}/runtime/server.mjs"
|
|
19
|
+
]
|
|
11
20
|
}
|
|
12
21
|
},
|
|
13
22
|
"channels": [
|
|
@@ -6,7 +6,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
|
|
9
|
+
try {
|
|
10
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
+
} catch (e) {
|
|
12
|
+
throw mod = 0, e;
|
|
13
|
+
}
|
|
10
14
|
};
|
|
11
15
|
var __export = (target, all) => {
|
|
12
16
|
for (var name in all)
|
|
@@ -3640,7 +3644,12 @@ var require_fast_uri = __commonJS({
|
|
|
3640
3644
|
}
|
|
3641
3645
|
function resolve(baseURI, relativeURI, options) {
|
|
3642
3646
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
3643
|
-
const
|
|
3647
|
+
const { parsed: baseParsed, malformedAuthorityOrPort: baseMalformed } = parseWithStatus(baseURI, schemelessOptions);
|
|
3648
|
+
const { parsed: relativeParsed, malformedAuthorityOrPort: relativeMalformed } = parseWithStatus(relativeURI, schemelessOptions);
|
|
3649
|
+
if (baseMalformed || relativeMalformed) {
|
|
3650
|
+
throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
|
|
3651
|
+
}
|
|
3652
|
+
const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
|
|
3644
3653
|
schemelessOptions.skipEscape = true;
|
|
3645
3654
|
return serialize(resolved, schemelessOptions);
|
|
3646
3655
|
}
|
|
@@ -3766,6 +3775,7 @@ var require_fast_uri = __commonJS({
|
|
|
3766
3775
|
}
|
|
3767
3776
|
var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
|
|
3768
3777
|
var AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/;
|
|
3778
|
+
var AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;
|
|
3769
3779
|
function getParseError(parsed, matches) {
|
|
3770
3780
|
if (matches[2] !== void 0 && parsed.path && parsed.path[0] !== "/") {
|
|
3771
3781
|
return 'URI path must start with "/" when authority is present.';
|
|
@@ -3800,6 +3810,20 @@ var require_fast_uri = __commonJS({
|
|
|
3800
3810
|
parsed.error = "URI authority must not contain a literal backslash.";
|
|
3801
3811
|
malformedAuthorityOrPort = true;
|
|
3802
3812
|
}
|
|
3813
|
+
const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION);
|
|
3814
|
+
if (introducerMatch !== null) {
|
|
3815
|
+
const region = introducerMatch[1];
|
|
3816
|
+
const normalizedRegion = region.replace(/[\t\n\r]/g, "");
|
|
3817
|
+
if (normalizedRegion.length >= 2) {
|
|
3818
|
+
if (normalizedRegion.slice(0, 2) !== "//") {
|
|
3819
|
+
parsed.error = parsed.error || "URI authority must not contain a literal backslash.";
|
|
3820
|
+
malformedAuthorityOrPort = true;
|
|
3821
|
+
} else if (region.length !== normalizedRegion.length) {
|
|
3822
|
+
parsed.error = parsed.error || "URI authority introducer must not contain whitespace.";
|
|
3823
|
+
malformedAuthorityOrPort = true;
|
|
3824
|
+
}
|
|
3825
|
+
}
|
|
3826
|
+
}
|
|
3803
3827
|
const matches = uri.match(URI_PARSE);
|
|
3804
3828
|
if (matches) {
|
|
3805
3829
|
parsed.scheme = matches[1];
|
|
@@ -7230,7 +7254,7 @@ function $constructor(name, initializer3, params) {
|
|
|
7230
7254
|
Object.defineProperty(_, "name", { value: name });
|
|
7231
7255
|
return _;
|
|
7232
7256
|
}
|
|
7233
|
-
var $brand = Symbol("zod_brand");
|
|
7257
|
+
var $brand = /* @__PURE__ */ Symbol("zod_brand");
|
|
7234
7258
|
var $ZodAsyncError = class extends Error {
|
|
7235
7259
|
constructor() {
|
|
7236
7260
|
super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);
|
|
@@ -16973,8 +16997,8 @@ function yo_default() {
|
|
|
16973
16997
|
|
|
16974
16998
|
// ../../node_modules/zod/v4/core/registries.js
|
|
16975
16999
|
var _a2;
|
|
16976
|
-
var $output = Symbol("ZodOutput");
|
|
16977
|
-
var $input = Symbol("ZodInput");
|
|
17000
|
+
var $output = /* @__PURE__ */ Symbol("ZodOutput");
|
|
17001
|
+
var $input = /* @__PURE__ */ Symbol("ZodInput");
|
|
16978
17002
|
var $ZodRegistry = class {
|
|
16979
17003
|
constructor() {
|
|
16980
17004
|
this._map = /* @__PURE__ */ new WeakMap();
|
|
@@ -22995,9 +23019,6 @@ function isTerminal(status) {
|
|
|
22995
23019
|
return status === "completed" || status === "failed" || status === "cancelled";
|
|
22996
23020
|
}
|
|
22997
23021
|
|
|
22998
|
-
// ../../node_modules/zod-to-json-schema/dist/esm/Options.js
|
|
22999
|
-
var ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use");
|
|
23000
|
-
|
|
23001
23022
|
// ../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js
|
|
23002
23023
|
var ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");
|
|
23003
23024
|
|
|
@@ -24814,6 +24835,12 @@ function extractMessage(event) {
|
|
|
24814
24835
|
if (typeof m.sender !== "object" || m.sender === null) return null;
|
|
24815
24836
|
return m;
|
|
24816
24837
|
}
|
|
24838
|
+
function extractInvocationId(event) {
|
|
24839
|
+
const data = event.data;
|
|
24840
|
+
if (typeof data !== "object" || data === null) return void 0;
|
|
24841
|
+
const value = data.invocation_id;
|
|
24842
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
24843
|
+
}
|
|
24817
24844
|
function textOfMessage(message) {
|
|
24818
24845
|
const texts = message.parts.filter((part) => part.type === "text" && typeof part.text === "string" && part.text.length > 0).map((part) => part.text);
|
|
24819
24846
|
if (texts.length > 0) return texts.join("\n");
|
|
@@ -24858,12 +24885,18 @@ function classifyEvent(event, ownerUserId, isPendingRequest = () => false, canAc
|
|
|
24858
24885
|
return { kind: "verdict", verdict: textVerdict };
|
|
24859
24886
|
}
|
|
24860
24887
|
if (text.length === 0) return { kind: "ignore", reason: "empty message body" };
|
|
24888
|
+
const invocationId = extractInvocationId(event);
|
|
24861
24889
|
return {
|
|
24862
24890
|
kind: "message",
|
|
24863
24891
|
content: text,
|
|
24864
|
-
meta: {
|
|
24892
|
+
meta: {
|
|
24893
|
+
chat_id: message.conversation_id,
|
|
24894
|
+
sender: message.sender.id,
|
|
24895
|
+
...invocationId ? { invocation_id: invocationId } : {}
|
|
24896
|
+
},
|
|
24865
24897
|
conversationId: message.conversation_id,
|
|
24866
|
-
sender: message.sender.id
|
|
24898
|
+
sender: message.sender.id,
|
|
24899
|
+
...invocationId ? { invocationId } : {}
|
|
24867
24900
|
};
|
|
24868
24901
|
}
|
|
24869
24902
|
var MAX_DESCRIPTION_CHARS = 500;
|
|
@@ -24954,8 +24987,12 @@ function buildPermissionCard(request, conversationId) {
|
|
|
24954
24987
|
remoteAllowEnabled
|
|
24955
24988
|
};
|
|
24956
24989
|
}
|
|
24957
|
-
function buildReply(chatId, text) {
|
|
24958
|
-
return {
|
|
24990
|
+
function buildReply(chatId, text, invocationId) {
|
|
24991
|
+
return {
|
|
24992
|
+
conversation_id: chatId,
|
|
24993
|
+
parts: [{ type: "text", text }],
|
|
24994
|
+
...invocationId ? { invocation_id: invocationId } : {}
|
|
24995
|
+
};
|
|
24959
24996
|
}
|
|
24960
24997
|
|
|
24961
24998
|
// src/config.ts
|
|
@@ -25269,6 +25306,11 @@ var StateStore = class {
|
|
|
25269
25306
|
if (parsed.last_conversation_id !== void 0 && typeof parsed.last_conversation_id !== "string") {
|
|
25270
25307
|
throw new Error("invalid routing state");
|
|
25271
25308
|
}
|
|
25309
|
+
if (parsed.pending_invocations !== void 0 && (typeof parsed.pending_invocations !== "object" || parsed.pending_invocations === null || Array.isArray(parsed.pending_invocations) || Object.entries(parsed.pending_invocations).some(
|
|
25310
|
+
([conversationId, invocationId]) => !conversationId.startsWith("cnv_") || typeof invocationId !== "string"
|
|
25311
|
+
))) {
|
|
25312
|
+
throw new Error("invalid pending invocations");
|
|
25313
|
+
}
|
|
25272
25314
|
if (parsed.observed_conversation_ids !== void 0 && (!Array.isArray(parsed.observed_conversation_ids) || parsed.observed_conversation_ids.some(
|
|
25273
25315
|
(conversationId) => typeof conversationId !== "string" || !conversationId.startsWith("cnv_")
|
|
25274
25316
|
))) {
|
|
@@ -25351,6 +25393,32 @@ var StateStore = class {
|
|
|
25351
25393
|
hasObservedConversation(conversationId) {
|
|
25352
25394
|
return (this.routingState.observed_conversation_ids ?? []).includes(conversationId);
|
|
25353
25395
|
}
|
|
25396
|
+
/**
|
|
25397
|
+
* Remember the invocation a group message arrived under. A newer invocation
|
|
25398
|
+
* replaces an older unanswered one: the reply this session is about to send
|
|
25399
|
+
* answers the message Claude actually saw last.
|
|
25400
|
+
*/
|
|
25401
|
+
recordInvocation(conversationId, invocationId) {
|
|
25402
|
+
this.routingState = {
|
|
25403
|
+
...this.routingState,
|
|
25404
|
+
pending_invocations: {
|
|
25405
|
+
...this.routingState.pending_invocations ?? {},
|
|
25406
|
+
[conversationId]: invocationId
|
|
25407
|
+
}
|
|
25408
|
+
};
|
|
25409
|
+
writeJsonAtomic(this.sessionStatePath, this.routingState);
|
|
25410
|
+
}
|
|
25411
|
+
invocationFor(conversationId) {
|
|
25412
|
+
return this.routingState.pending_invocations?.[conversationId];
|
|
25413
|
+
}
|
|
25414
|
+
/** Spend the invocation once its reply is committed by Relay. */
|
|
25415
|
+
consumeInvocation(conversationId) {
|
|
25416
|
+
const pending = { ...this.routingState.pending_invocations ?? {} };
|
|
25417
|
+
if (!(conversationId in pending)) return;
|
|
25418
|
+
delete pending[conversationId];
|
|
25419
|
+
this.routingState = { ...this.routingState, pending_invocations: pending };
|
|
25420
|
+
writeJsonAtomic(this.sessionStatePath, this.routingState);
|
|
25421
|
+
}
|
|
25354
25422
|
/**
|
|
25355
25423
|
* Bind a permission notification to its only safe active destination.
|
|
25356
25424
|
* Claude's channel permission payload has no chat id. A pending delivery is
|
|
@@ -25814,7 +25882,7 @@ mcp.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
25814
25882
|
if (typeof send_id !== "string" || !/^[A-Za-z0-9._:-]{1,128}$/.test(send_id)) {
|
|
25815
25883
|
return toolError("send_id must be 1-128 letters, digits, dot, underscore, colon, or hyphen");
|
|
25816
25884
|
}
|
|
25817
|
-
const body = buildReply(chat_id, text);
|
|
25885
|
+
const body = buildReply(chat_id, text, state.invocationFor(chat_id));
|
|
25818
25886
|
const payloadHash = hashJson(body);
|
|
25819
25887
|
const idempotencyKey = `claude-reply-${createHash2("sha256").update(`${scope.baseUrl}
|
|
25820
25888
|
${scope.agentId}
|
|
@@ -25827,6 +25895,7 @@ ${send_id}`).digest("hex")}`;
|
|
|
25827
25895
|
}
|
|
25828
25896
|
await client.sendMessage(body, registered.idempotency_key);
|
|
25829
25897
|
state.confirmOutboundSend(send_id);
|
|
25898
|
+
if (body.invocation_id) state.consumeInvocation(chat_id);
|
|
25830
25899
|
return { content: [{ type: "text", text: "sent" }] };
|
|
25831
25900
|
} catch (error51) {
|
|
25832
25901
|
const detail = error51 instanceof RelayApiError ? `${error51.status} ${error51.code}: ${error51.message}` : String(error51);
|
|
@@ -25863,6 +25932,12 @@ mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {
|
|
|
25863
25932
|
);
|
|
25864
25933
|
return;
|
|
25865
25934
|
}
|
|
25935
|
+
if (state.invocationFor(conversationId)) {
|
|
25936
|
+
log(
|
|
25937
|
+
`permission request ${params.request_id} not relayed: ${conversationId} is a group invocation that owes its single message to the reply; review it at the local terminal`
|
|
25938
|
+
);
|
|
25939
|
+
return;
|
|
25940
|
+
}
|
|
25866
25941
|
const request = params;
|
|
25867
25942
|
const card = buildPermissionCard(request, conversationId);
|
|
25868
25943
|
try {
|
|
@@ -25946,6 +26021,9 @@ async function handleEvent(event) {
|
|
|
25946
26021
|
}
|
|
25947
26022
|
case "message": {
|
|
25948
26023
|
state.recordConversation(action.conversationId);
|
|
26024
|
+
if (action.invocationId) {
|
|
26025
|
+
state.recordInvocation(action.conversationId, action.invocationId);
|
|
26026
|
+
}
|
|
25949
26027
|
const delivery = {
|
|
25950
26028
|
event_id: event.event_id,
|
|
25951
26029
|
content: action.content,
|
package/dist/api.d.ts
CHANGED
|
@@ -20,7 +20,19 @@ export declare function resolveApiOrigin(fallback?: string): string;
|
|
|
20
20
|
export declare class RelayApiError extends Error {
|
|
21
21
|
readonly status: number;
|
|
22
22
|
readonly code: string | undefined;
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* `error.details` from the Relay error body. The cursor faults carry the
|
|
25
|
+
* recovery target there (`highest_delivered_cursor`, `latest_sequence`),
|
|
26
|
+
* so it has to survive the throw.
|
|
27
|
+
*/
|
|
28
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
29
|
+
constructor(status: number, code: string | undefined, message: string,
|
|
30
|
+
/**
|
|
31
|
+
* `error.details` from the Relay error body. The cursor faults carry the
|
|
32
|
+
* recovery target there (`highest_delivered_cursor`, `latest_sequence`),
|
|
33
|
+
* so it has to survive the throw.
|
|
34
|
+
*/
|
|
35
|
+
details?: Record<string, unknown> | undefined);
|
|
24
36
|
}
|
|
25
37
|
export interface PairingCreated {
|
|
26
38
|
pairing_id: string;
|
|
@@ -40,6 +52,17 @@ export interface EventsPage {
|
|
|
40
52
|
events: RelayEvent[];
|
|
41
53
|
next_cursor: number;
|
|
42
54
|
}
|
|
55
|
+
export interface EventCursorReconciliation {
|
|
56
|
+
reconciled: true;
|
|
57
|
+
resume_cursor: number;
|
|
58
|
+
}
|
|
59
|
+
/** One row of GET /v1/conversations (AgentConversation in the OpenAPI contract). */
|
|
60
|
+
export interface RelayConversation {
|
|
61
|
+
id: string;
|
|
62
|
+
kind?: "direct" | "group";
|
|
63
|
+
last_sequence?: number;
|
|
64
|
+
last_message_at?: string | null;
|
|
65
|
+
}
|
|
43
66
|
export interface PostMessageBody {
|
|
44
67
|
conversation_id: string;
|
|
45
68
|
parts: Array<Record<string, unknown>>;
|
|
@@ -50,6 +73,12 @@ export interface PostMessageBody {
|
|
|
50
73
|
message_id: string;
|
|
51
74
|
part_index?: number;
|
|
52
75
|
};
|
|
76
|
+
/**
|
|
77
|
+
* Required in a group: the id Relay supplied on the invocation this message
|
|
78
|
+
* answers. The server rejects a group agent message without it, and consumes
|
|
79
|
+
* the invocation on commit, so exactly one message may carry a given id.
|
|
80
|
+
*/
|
|
81
|
+
invocation_id?: string;
|
|
53
82
|
}
|
|
54
83
|
export declare class RelayClient {
|
|
55
84
|
private readonly token?;
|
|
@@ -61,14 +90,23 @@ export declare class RelayClient {
|
|
|
61
90
|
waitPairing(pairingId: string, pollToken: string): Promise<PairingStatus>;
|
|
62
91
|
getMe(): Promise<Record<string, unknown>>;
|
|
63
92
|
getEvents(cursor: number, timeoutS?: number, limit?: number): Promise<EventsPage>;
|
|
93
|
+
reconcileEvents(expiredCursor: number): Promise<EventCursorReconciliation>;
|
|
64
94
|
postMessage(body: PostMessageBody, idempotencyKey: string): Promise<{
|
|
65
95
|
message_id: string;
|
|
66
96
|
message: RelayMessage;
|
|
67
97
|
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Conversations this agent still participates in, newest activity first.
|
|
100
|
+
* The canonical inventory used to reconcile after a cursor fault, when the
|
|
101
|
+
* event log can no longer say which conversations moved.
|
|
102
|
+
*/
|
|
103
|
+
listConversations(limit?: number): Promise<{
|
|
104
|
+
conversations: RelayConversation[];
|
|
105
|
+
}>;
|
|
68
106
|
listMessages(conversationId: string, limit?: number): Promise<{
|
|
69
107
|
messages: RelayMessage[];
|
|
70
108
|
}>;
|
|
71
|
-
setTyping(conversationId: string, started: boolean, label?: string): Promise<void>;
|
|
109
|
+
setTyping(conversationId: string, started: boolean, label?: string, invocationId?: string): Promise<void>;
|
|
72
110
|
markRead(conversationId: string, messageId: string): Promise<void>;
|
|
73
111
|
}
|
|
74
112
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAO3D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAI7E;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAO3D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAI7E;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAT5C,YACW,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM;IACf;;;;OAIG;IACM,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAI3C;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,IAAI,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YACE,MAAM,EAAE,MAAM,EACG,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,SAAS,GAAE,OAAO,KAAa,EAGjD;YAEa,OAAO;IAiDrB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAI1E;IAED,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKxE;IAID,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAExC;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAK,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGzE;IAED,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAKzE;IAED,WAAW,CACT,IAAI,EAAE,eAAe,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC,CAKxD;IAED;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAE7E;IAED,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAEtF;IAED,SAAS,CACP,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf;IAED,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE;CACF"}
|
package/dist/api.js
CHANGED
|
@@ -38,10 +38,18 @@ export function resolveApiOrigin(fallback = PRODUCTION_ORIGIN) {
|
|
|
38
38
|
export class RelayApiError extends Error {
|
|
39
39
|
status;
|
|
40
40
|
code;
|
|
41
|
-
|
|
41
|
+
details;
|
|
42
|
+
constructor(status, code, message,
|
|
43
|
+
/**
|
|
44
|
+
* `error.details` from the Relay error body. The cursor faults carry the
|
|
45
|
+
* recovery target there (`highest_delivered_cursor`, `latest_sequence`),
|
|
46
|
+
* so it has to survive the throw.
|
|
47
|
+
*/
|
|
48
|
+
details) {
|
|
42
49
|
super(message);
|
|
43
50
|
this.status = status;
|
|
44
51
|
this.code = code;
|
|
52
|
+
this.details = details;
|
|
45
53
|
this.name = "RelayApiError";
|
|
46
54
|
}
|
|
47
55
|
}
|
|
@@ -82,7 +90,8 @@ export class RelayClient {
|
|
|
82
90
|
if (!okStatuses.includes(res.status)) {
|
|
83
91
|
const code = json?.error?.code ?? json?.code;
|
|
84
92
|
const message = json?.error?.message ?? json?.message ?? text.slice(0, 300) ?? res.statusText;
|
|
85
|
-
|
|
93
|
+
const details = json?.error?.details;
|
|
94
|
+
throw new RelayApiError(res.status, code, `${method} ${path} → ${res.status}: ${message}`, details && typeof details === "object" && !Array.isArray(details) ? details : undefined);
|
|
86
95
|
}
|
|
87
96
|
return json;
|
|
88
97
|
}
|
|
@@ -106,18 +115,38 @@ export class RelayClient {
|
|
|
106
115
|
const qs = `cursor=${cursor}&timeout=${timeoutS}&limit=${limit}`;
|
|
107
116
|
return this.request("GET", `/v1/events?${qs}`, { timeoutMs: (timeoutS + 15) * 1000 });
|
|
108
117
|
}
|
|
118
|
+
reconcileEvents(expiredCursor) {
|
|
119
|
+
return this.request("POST", "/v1/events/reconcile", {
|
|
120
|
+
body: { expired_cursor: expiredCursor, history_reconciled: true },
|
|
121
|
+
headers: { "idempotency-key": `event-cursor-reconcile:${expiredCursor}` },
|
|
122
|
+
});
|
|
123
|
+
}
|
|
109
124
|
postMessage(body, idempotencyKey) {
|
|
110
125
|
return this.request("POST", "/v1/messages", {
|
|
111
126
|
body,
|
|
112
127
|
headers: { "idempotency-key": idempotencyKey },
|
|
113
128
|
});
|
|
114
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Conversations this agent still participates in, newest activity first.
|
|
132
|
+
* The canonical inventory used to reconcile after a cursor fault, when the
|
|
133
|
+
* event log can no longer say which conversations moved.
|
|
134
|
+
*/
|
|
135
|
+
listConversations(limit = 50) {
|
|
136
|
+
return this.request("GET", `/v1/conversations?limit=${limit}`);
|
|
137
|
+
}
|
|
115
138
|
listMessages(conversationId, limit = 20) {
|
|
116
139
|
return this.request("GET", `/v1/conversations/${conversationId}/messages?limit=${limit}`);
|
|
117
140
|
}
|
|
118
|
-
setTyping(conversationId, started, label) {
|
|
141
|
+
setTyping(conversationId, started, label, invocationId) {
|
|
119
142
|
return this.request("POST", `/v1/conversations/${conversationId}/typing`, {
|
|
120
|
-
|
|
143
|
+
// Group typing is gated on a still-pending invocation, so the id has to
|
|
144
|
+
// ride along until the reply consumes it.
|
|
145
|
+
body: {
|
|
146
|
+
started,
|
|
147
|
+
...(label ? { label } : {}),
|
|
148
|
+
...(invocationId ? { invocation_id: invocationId } : {}),
|
|
149
|
+
},
|
|
121
150
|
});
|
|
122
151
|
}
|
|
123
152
|
markRead(conversationId, messageId) {
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE3D,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/claude-settings.js
CHANGED
|
@@ -41,7 +41,7 @@ export function claudeBypassWarning(projectDir, home) {
|
|
|
41
41
|
const resolved = resolveClaudeDefaultMode(projectDir, home);
|
|
42
42
|
if (resolved?.mode !== "bypassPermissions")
|
|
43
43
|
return undefined;
|
|
44
|
-
return (`Claude permissions.defaultMode=bypassPermissions (${resolved.source})
|
|
44
|
+
return (`Claude permissions.defaultMode=bypassPermissions (${resolved.source}). ` +
|
|
45
45
|
"the engine never asks for approval, so Relay's phone Allow/Deny cards will not appear");
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=claude-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../src/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;QAC9C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,
|
|
1
|
+
{"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../src/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;QAC9C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAU,GAAW,OAAO,CAAC,GAAG,EAAE,EAClC,IAAI,GAAW,OAAO,EAAE;IAExB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB,CAAC;QAClD,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;KACvC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CACjC,UAAmB,EACnB,IAAa;IAEb,MAAM,QAAQ,GAAG,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,IAAI,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,CACL,qDAAqD,QAAQ,CAAC,MAAM,KAAK;QACzE,uFAAuF,CACxF,CAAC;AACJ,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* relaymessenger
|
|
3
|
+
* relaymessenger: bridge your local coding agent to Relay.
|
|
4
4
|
*
|
|
5
5
|
* relaymessenger pair [--engine <preset>] [--name <device-name>]
|
|
6
6
|
* relaymessenger start [--engine <preset>] [--dir <path>]
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,MAAM,KAAK,GAAG;;;;;iBAKG,WAAW;;;;;;;0CAOc,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAExE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/codex.js
CHANGED
|
@@ -68,7 +68,7 @@ export async function notifyCommand(argv, out = console.log, dependencies = {})
|
|
|
68
68
|
return;
|
|
69
69
|
const projectRoot = (dependencies.policy ?? new CodexNotifyPolicyStore()).matchProject(payload.cwd);
|
|
70
70
|
if (!projectRoot) {
|
|
71
|
-
out("relaymessenger notify: suppressed
|
|
71
|
+
out("relaymessenger notify: suppressed; this project was not explicitly opted in.");
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
74
|
const config = dependencies.config ?? new ConfigStore();
|
|
@@ -78,7 +78,7 @@ export async function notifyCommand(argv, out = console.log, dependencies = {})
|
|
|
78
78
|
const conversationId = readStateSnapshot(runtimeHomeForConfig(loaded, dirname(config.path))).owner_conversation_id;
|
|
79
79
|
const client = dependencies.client ?? new RelayClient(loaded.api_origin, loaded.agent_token);
|
|
80
80
|
if (!conversationId) {
|
|
81
|
-
out("relaymessenger notify: no pinned owner conversation yet
|
|
81
|
+
out("relaymessenger notify: no pinned owner conversation yet; run `relaymessenger start` once and " +
|
|
82
82
|
"message the agent from the Relay app first.");
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
@@ -153,7 +153,7 @@ export async function permissionRequestHook(write = (json) => process.stdout.wri
|
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
155
|
catch (error) {
|
|
156
|
-
process.stderr.write(`relaymessenger: refusing concealed approval input (${error})
|
|
156
|
+
process.stderr.write(`relaymessenger: refusing concealed approval input (${error}); denying.\n`);
|
|
157
157
|
write(decisionJson(false));
|
|
158
158
|
return 0;
|
|
159
159
|
}
|
|
@@ -167,7 +167,7 @@ export async function permissionRequestHook(write = (json) => process.stdout.wri
|
|
|
167
167
|
}
|
|
168
168
|
catch (error) {
|
|
169
169
|
approvals.consume(requestId);
|
|
170
|
-
process.stderr.write(`relaymessenger: approval card could not be delivered (${error})
|
|
170
|
+
process.stderr.write(`relaymessenger: approval card could not be delivered (${error}); denying.\n`);
|
|
171
171
|
write(decisionJson(false));
|
|
172
172
|
return 0;
|
|
173
173
|
}
|
|
@@ -206,7 +206,7 @@ export async function permissionRequestHook(write = (json) => process.stdout.wri
|
|
|
206
206
|
// transient — keep polling until deadline
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
process.stderr.write("relaymessenger: no approval from Relay within the window
|
|
209
|
+
process.stderr.write("relaymessenger: no approval from Relay within the window; denying.\n");
|
|
210
210
|
return finish(false);
|
|
211
211
|
}
|
|
212
212
|
/**
|
package/dist/codex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../src/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,aAAa,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE;IAStD,MAAM,WAAW,GAAG,IAAI,sBAAsB,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,SAAS,CAAC;IAC1B,CAAC;IACD,OAAO;QACL,MAAM,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;QAC9D,WAAW;QACX,kEAAkE;QAClE,0CAA0C;QAC1C,cAAc,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB;QAC3G,WAAW;QACX,WAAW,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC;KAChD,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAc,EACd,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../src/codex.ts"],"names":[],"mappings":"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"}
|