relaymessenger 0.1.15 → 0.1.16-staging.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/dist/approvals.d.ts +66 -41
- package/dist/approvals.d.ts.map +1 -1
- package/dist/approvals.js +145 -108
- package/dist/approvals.js.map +1 -1
- package/package.json +3 -3
package/dist/approvals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MessagePart, type Relay, type RelayWebhookEvent } from "@relaymessenger/sdk";
|
|
2
2
|
import type { PiApprovals } from "@relaymessenger/pi";
|
|
3
3
|
/**
|
|
4
4
|
* Relays a coding agent's own permission prompts to the people who own the
|
|
@@ -22,8 +22,12 @@ import type { PiApprovals } from "@relaymessenger/pi";
|
|
|
22
22
|
* names the owners itself: `GET /v1/me` returns `owner_people` for the calling
|
|
23
23
|
* Agent Token (Relay-Server server/src/me.ts, `app.get("/me")`).
|
|
24
24
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* The card is a `rich_card` whose reply suggestions are the harness's
|
|
26
|
+
* choices; a tap comes back as the owner's own message, a `suggestion_response`
|
|
27
|
+
* carrying the choice's id and replying to the card. A Pi select with more
|
|
28
|
+
* choices than a card holds is a single-choice `selection` instead, answered
|
|
29
|
+
* by a `selection_response`. A tap from anyone else is not registered, and
|
|
30
|
+
* the card stays open for an owner to answer.
|
|
27
31
|
*/
|
|
28
32
|
/**
|
|
29
33
|
* How a person may answer, in the words every harness maps to. `choice` is an
|
|
@@ -44,20 +48,21 @@ export interface ApprovalRequest {
|
|
|
44
48
|
harness: string;
|
|
45
49
|
/** The tool it wants to use, e.g. "Bash". */
|
|
46
50
|
tool: string;
|
|
47
|
-
/** The card's
|
|
51
|
+
/** The card's title, one sentence; `<harness> asks to use <tool>.` when absent. */
|
|
48
52
|
title?: string;
|
|
49
|
-
/** The command or file
|
|
53
|
+
/** The command or file the harness wants to use. */
|
|
50
54
|
summary: string;
|
|
51
55
|
/**
|
|
52
56
|
* A plain line under the command: Bash's own description of it, which
|
|
53
57
|
* Claude Code's terminal prompt shows under the command too.
|
|
54
58
|
*/
|
|
55
59
|
note?: string;
|
|
56
|
-
/** The full input as a person reads it
|
|
60
|
+
/** The full input as a person reads it. */
|
|
57
61
|
detail: string;
|
|
58
62
|
/**
|
|
59
|
-
* Whether `detail` holds anything
|
|
60
|
-
* beyond the summarized value and the note.
|
|
63
|
+
* Whether `detail` holds anything `summary` and `note` do not: an input
|
|
64
|
+
* field beyond the summarized value and the note. The card then shows
|
|
65
|
+
* `detail` in place of them.
|
|
61
66
|
*/
|
|
62
67
|
extra: boolean;
|
|
63
68
|
/** The harness's own choices, allow first. */
|
|
@@ -84,61 +89,81 @@ export interface ApprovalOutcome {
|
|
|
84
89
|
* inkbox-codex-plugin-config.py.txt:132).
|
|
85
90
|
*/
|
|
86
91
|
export declare const APPROVAL_TIMEOUT_MS = 600000;
|
|
87
|
-
/** The Button event every answer on the card carries. */
|
|
88
|
-
export declare const ANSWER_EVENT = "approval_answer";
|
|
89
|
-
/** The Modal trigger's event: it opens "See more" on the phone and asks nothing. */
|
|
90
|
-
export declare const SEE_MORE_EVENT = "approval_see_more";
|
|
91
92
|
/** The one line the terminal shows when nobody can be asked. */
|
|
92
93
|
export declare const noOwnerLine: (request: Pick<ApprovalRequest, "harness" | "tool">) => string;
|
|
93
|
-
/** What the card says once a prompt has ended. */
|
|
94
|
+
/** What the reply to the card says once a prompt has ended. */
|
|
94
95
|
export declare const outcomeLine: (outcome: ApprovalOutcome) => string;
|
|
95
96
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* backtick longer than the longest run inside (CommonMark, "Code spans").
|
|
97
|
+
* The contract's limits (Relay-Server contracts/developer/openapi.yaml), the
|
|
98
|
+
* card's from the SDK; a `SelectionPart` subtitle is 512 characters and an
|
|
99
|
+
* id-bearing `SelectionOption` has a 24-character label and a 200-character id.
|
|
100
100
|
*/
|
|
101
|
-
export declare const
|
|
101
|
+
export declare const CARD_LIMITS: {
|
|
102
|
+
readonly title: 200;
|
|
103
|
+
readonly description: 2000;
|
|
104
|
+
readonly suggestions: 4;
|
|
105
|
+
readonly label: 25;
|
|
106
|
+
readonly replyId: 256;
|
|
107
|
+
readonly selectionTitle: 60;
|
|
108
|
+
readonly selectionSubtitle: 512;
|
|
109
|
+
readonly selectionOptions: 25;
|
|
110
|
+
readonly selectionLabel: 24;
|
|
111
|
+
readonly selectionId: 200;
|
|
112
|
+
};
|
|
113
|
+
/** The card's title: the harness's sentence, or `<harness> asks to use <tool>.` */
|
|
114
|
+
export declare const cardTitle: (request: ApprovalRequest) => string;
|
|
102
115
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* `interpretedSyntax: .inlineOnlyPreservingWhitespace`), where an escaped
|
|
108
|
-
* `**bold**` stays as typed.
|
|
116
|
+
* The card's description, plain text as the app draws it (Relay-iOS
|
|
117
|
+
* RelayRichCardRow.swift, `Text(description)`): the command and its note, or,
|
|
118
|
+
* when the input holds more than them, the whole input as a person reads it.
|
|
119
|
+
* Cut at the contract's 2,000 characters with a closing "…".
|
|
109
120
|
*/
|
|
110
|
-
export declare const
|
|
121
|
+
export declare const cardDescription: (request: ApprovalRequest) => string | undefined;
|
|
111
122
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
123
|
+
* The prefix of every reply id on an approval card. Relay stores a reply
|
|
124
|
+
* suggestion's `id` as sent and returns it in the person's
|
|
125
|
+
* `suggestion_response` (or `selection_response`), so a tap on any approval
|
|
126
|
+
* card, even one a bridge process no longer holds (sent before a restart),
|
|
127
|
+
* is known by its id alone and never becomes a person's turn.
|
|
116
128
|
*/
|
|
117
|
-
export declare const
|
|
118
|
-
/**
|
|
119
|
-
export declare const
|
|
120
|
-
/**
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
129
|
+
export declare const APPROVAL_REPLY_PREFIX = "relay-approval:";
|
|
130
|
+
/** Whether a reply id is one an approval card gave out. */
|
|
131
|
+
export declare const isApprovalReplyId: (id: string) => boolean;
|
|
132
|
+
/**
|
|
133
|
+
* The message part that asks: a `rich_card` with one reply suggestion per
|
|
134
|
+
* choice, or, past the card's 4 suggestions, a single-choice `selection` of up
|
|
135
|
+
* to 25 options.
|
|
136
|
+
*/
|
|
137
|
+
export declare const approvalPart: (request: ApprovalRequest) => MessagePart;
|
|
138
|
+
/** The choice a reply id names, as `approvalPart` gave it out. */
|
|
139
|
+
export declare const choiceFor: (request: ApprovalRequest, id: string) => ApprovalChoice | undefined;
|
|
140
|
+
/**
|
|
141
|
+
* A tap on a card, as `message.received` carries it: the card message it
|
|
142
|
+
* replies to, and the id of the reply the person chose. A card reply is plain
|
|
143
|
+
* text then `suggestion_response`; a picker answer, plain text then
|
|
144
|
+
* `selection_response` (Relay-Server contracts/developer/openapi.yaml,
|
|
145
|
+
* `SuggestionResponsePart` and `SelectionResponsePart`).
|
|
146
|
+
*/
|
|
147
|
+
export declare const readAnswer: (event: RelayWebhookEvent) => {
|
|
148
|
+
messageId: string;
|
|
149
|
+
id: string;
|
|
150
|
+
} | undefined;
|
|
124
151
|
/** The Relay calls this needs: who owns the agent, and the chat with each owner. */
|
|
125
152
|
export type ApprovalClient = Pick<Relay, "chats" | "me">;
|
|
126
153
|
export interface OwnerApprovalsOptions {
|
|
127
154
|
client: ApprovalClient;
|
|
128
155
|
say(line: string): void;
|
|
129
|
-
/** A new surface id; random unless a test pins it. */
|
|
130
|
-
surfaceId?: () => string;
|
|
131
156
|
}
|
|
132
157
|
/**
|
|
133
158
|
* One per bridge process. `ask` sends the card and waits; `take` reads every
|
|
134
|
-
* event first and keeps the
|
|
159
|
+
* event first and keeps the answers to its own cards, so they never start a turn.
|
|
135
160
|
*/
|
|
136
161
|
export declare class OwnerApprovals {
|
|
137
162
|
#private;
|
|
138
163
|
constructor(options: OwnerApprovalsOptions);
|
|
139
164
|
ask(request: ApprovalRequest): Promise<ApprovalOutcome>;
|
|
140
165
|
/**
|
|
141
|
-
* Whether this event is
|
|
166
|
+
* Whether this event is an answer to one of this process's approval cards.
|
|
142
167
|
* Such an event is handled here and must not start a turn.
|
|
143
168
|
*/
|
|
144
169
|
take(event: RelayWebhookEvent): Promise<boolean>;
|
|
@@ -156,7 +181,7 @@ export declare const beyond: (input: Record<string, unknown>, shown: readonly st
|
|
|
156
181
|
*/
|
|
157
182
|
export declare const inputCard: (input: Record<string, unknown>) => Pick<ApprovalRequest, "summary" | "note" | "detail" | "extra">;
|
|
158
183
|
/**
|
|
159
|
-
* The whole tool input as a person reads it, for
|
|
184
|
+
* The whole tool input as a person reads it, for the card's description: an Edit is its
|
|
160
185
|
* file and a diff (a MultiEdit, a diff per edit), a Write its file and the
|
|
161
186
|
* content, anything else one `name: value` line per field.
|
|
162
187
|
*/
|
package/dist/approvals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
|
package/dist/approvals.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { RICH_CARD_DESCRIPTION_MAX_LENGTH, RICH_CARD_MAX_SUGGESTIONS, RICH_CARD_TITLE_MAX_LENGTH, SELECTION_MAX_OPTIONS, SELECTION_TITLE_MAX_LENGTH, SUGGESTION_ID_MAX_LENGTH, SUGGESTION_LABEL_MAX_LENGTH, selectionReply, suggestionReply, } from "@relaymessenger/sdk";
|
|
3
3
|
/**
|
|
4
4
|
* Inkbox waits 600 seconds for a person's answer and then treats the request
|
|
5
5
|
* as not approved (`permission_timeout_s: float = 600.0`,
|
|
@@ -7,13 +7,9 @@ import { A2UI_VERSION, RELAY_A2UI_CATALOG_ID, a2uiPart, readA2uiAction, updateA2
|
|
|
7
7
|
* inkbox-codex-plugin-config.py.txt:132).
|
|
8
8
|
*/
|
|
9
9
|
export const APPROVAL_TIMEOUT_MS = 600_000;
|
|
10
|
-
/** The Button event every answer on the card carries. */
|
|
11
|
-
export const ANSWER_EVENT = "approval_answer";
|
|
12
|
-
/** The Modal trigger's event: it opens "See more" on the phone and asks nothing. */
|
|
13
|
-
export const SEE_MORE_EVENT = "approval_see_more";
|
|
14
10
|
/** The one line the terminal shows when nobody can be asked. */
|
|
15
11
|
export const noOwnerLine = (request) => `${request.harness} was not allowed to use ${request.tool}: nobody who owns this agent has a Relay app account to approve it. Link a phone from Settings in the Relay console, or with \`relay phone link\`.`;
|
|
16
|
-
/** What the card says once a prompt has ended. */
|
|
12
|
+
/** What the reply to the card says once a prompt has ended. */
|
|
17
13
|
export const outcomeLine = (outcome) => {
|
|
18
14
|
const who = outcome.by ? `@${outcome.by}` : "Someone";
|
|
19
15
|
switch (outcome.choice?.decision) {
|
|
@@ -27,109 +23,147 @@ export const outcomeLine = (outcome) => {
|
|
|
27
23
|
return "Timed out, not approved.";
|
|
28
24
|
return "Not approved.";
|
|
29
25
|
};
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
/**
|
|
27
|
+
* The contract's limits (Relay-Server contracts/developer/openapi.yaml), the
|
|
28
|
+
* card's from the SDK; a `SelectionPart` subtitle is 512 characters and an
|
|
29
|
+
* id-bearing `SelectionOption` has a 24-character label and a 200-character id.
|
|
30
|
+
*/
|
|
31
|
+
export const CARD_LIMITS = {
|
|
32
|
+
title: RICH_CARD_TITLE_MAX_LENGTH,
|
|
33
|
+
description: RICH_CARD_DESCRIPTION_MAX_LENGTH,
|
|
34
|
+
suggestions: RICH_CARD_MAX_SUGGESTIONS,
|
|
35
|
+
label: SUGGESTION_LABEL_MAX_LENGTH,
|
|
36
|
+
replyId: SUGGESTION_ID_MAX_LENGTH,
|
|
37
|
+
selectionTitle: SELECTION_TITLE_MAX_LENGTH,
|
|
38
|
+
selectionSubtitle: 512,
|
|
39
|
+
selectionOptions: SELECTION_MAX_OPTIONS,
|
|
40
|
+
selectionLabel: 24,
|
|
41
|
+
selectionId: 200,
|
|
42
|
+
};
|
|
32
43
|
const clip = (text, max) => text.length <= max ? text : `${text.slice(0, max - 1)}…`;
|
|
44
|
+
const oneLine = (text) => text.replace(/\s+/gu, " ").trim();
|
|
45
|
+
/** The card's title: the harness's sentence, or `<harness> asks to use <tool>.` */
|
|
46
|
+
export const cardTitle = (request) => oneLine(request.title ?? "") || `${request.harness} asks to use ${request.tool}.`;
|
|
33
47
|
/**
|
|
34
|
-
*
|
|
35
|
-
* (
|
|
36
|
-
*
|
|
37
|
-
*
|
|
48
|
+
* The card's description, plain text as the app draws it (Relay-iOS
|
|
49
|
+
* RelayRichCardRow.swift, `Text(description)`): the command and its note, or,
|
|
50
|
+
* when the input holds more than them, the whole input as a person reads it.
|
|
51
|
+
* Cut at the contract's 2,000 characters with a closing "…".
|
|
38
52
|
*/
|
|
39
|
-
export const
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
53
|
+
export const cardDescription = (request) => {
|
|
54
|
+
const text = request.extra
|
|
55
|
+
? request.detail.trim()
|
|
56
|
+
: [request.summary.trim(), request.note?.trim() ?? ""].filter(Boolean).join("\n\n");
|
|
57
|
+
return text ? clip(text, CARD_LIMITS.description) : undefined;
|
|
44
58
|
};
|
|
45
59
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* `**bold**` stays as typed.
|
|
60
|
+
* The prefix of every reply id on an approval card. Relay stores a reply
|
|
61
|
+
* suggestion's `id` as sent and returns it in the person's
|
|
62
|
+
* `suggestion_response` (or `selection_response`), so a tap on any approval
|
|
63
|
+
* card, even one a bridge process no longer holds (sent before a restart),
|
|
64
|
+
* is known by its id alone and never becomes a person's turn.
|
|
52
65
|
*/
|
|
53
|
-
export const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const cardLine = (text) => clip(oneLine(text), MAX_SUMMARY);
|
|
57
|
-
/** Whether the card had to cut a line: a newline or run of spaces collapsed, or the end clipped. */
|
|
58
|
-
const cut = (text) => cardLine(text) !== text.trim();
|
|
66
|
+
export const APPROVAL_REPLY_PREFIX = "relay-approval:";
|
|
67
|
+
/** Whether a reply id is one an approval card gave out. */
|
|
68
|
+
export const isApprovalReplyId = (id) => id.startsWith(APPROVAL_REPLY_PREFIX);
|
|
59
69
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* mock mocks/approval-see-more.html, 2026-09-26).
|
|
70
|
+
* The id a choice's reply carries: the prefix and the harness's own id, or,
|
|
71
|
+
* when that is longer than the contract allows, the prefix and the SHA-256 of
|
|
72
|
+
* the harness's id, which no two different ids share.
|
|
64
73
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
74
|
+
const replyId = (choice, max) => {
|
|
75
|
+
const plain = `${APPROVAL_REPLY_PREFIX}${choice.id}`;
|
|
76
|
+
return plain.length <= max ? plain : `${APPROVAL_REPLY_PREFIX}sha256:${createHash("sha256").update(choice.id).digest("hex")}`;
|
|
77
|
+
};
|
|
78
|
+
/** Whether the choices fit on one card's suggestions. */
|
|
79
|
+
const onCard = (request) => request.choices.length <= CARD_LIMITS.suggestions;
|
|
80
|
+
/**
|
|
81
|
+
* The message part that asks: a `rich_card` with one reply suggestion per
|
|
82
|
+
* choice, or, past the card's 4 suggestions, a single-choice `selection` of up
|
|
83
|
+
* to 25 options.
|
|
84
|
+
*/
|
|
85
|
+
export const approvalPart = (request) => {
|
|
86
|
+
if (request.choices.length > CARD_LIMITS.selectionOptions) {
|
|
87
|
+
throw new Error(`${request.harness} offered ${request.choices.length} choices; a Relay approval list holds at most ${CARD_LIMITS.selectionOptions}, so it was not sent.`);
|
|
88
|
+
}
|
|
89
|
+
const ids = request.choices.map((choice) => replyId(choice, onCard(request) ? CARD_LIMITS.replyId : CARD_LIMITS.selectionId));
|
|
90
|
+
if (new Set(ids).size !== ids.length) {
|
|
91
|
+
throw new Error(`${request.harness} offered two choices with the same id; the owner's answer could not say which, so it was not sent.`);
|
|
92
|
+
}
|
|
93
|
+
const description = cardDescription(request);
|
|
94
|
+
if (onCard(request)) {
|
|
95
|
+
return {
|
|
96
|
+
type: "rich_card",
|
|
97
|
+
title: clip(cardTitle(request), CARD_LIMITS.title),
|
|
98
|
+
...(description !== undefined ? { description } : {}),
|
|
99
|
+
suggestions: request.choices.map((choice, index) => ({
|
|
100
|
+
type: "reply",
|
|
101
|
+
label: clip(oneLine(choice.label) || choice.id, CARD_LIMITS.label),
|
|
102
|
+
id: ids[index],
|
|
103
|
+
})),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
type: "selection",
|
|
108
|
+
title: clip(cardTitle(request), CARD_LIMITS.selectionTitle),
|
|
109
|
+
...(description !== undefined ? { subtitle: clip(description, CARD_LIMITS.selectionSubtitle) } : {}),
|
|
110
|
+
multiple: false,
|
|
111
|
+
options: request.choices.map((choice, index) => ({
|
|
112
|
+
id: ids[index],
|
|
113
|
+
label: clip(oneLine(choice.label) || choice.id, CARD_LIMITS.selectionLabel),
|
|
114
|
+
})),
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
/** The choice a reply id names, as `approvalPart` gave it out. */
|
|
118
|
+
export const choiceFor = (request, id) => {
|
|
119
|
+
const max = onCard(request) ? CARD_LIMITS.replyId : CARD_LIMITS.selectionId;
|
|
120
|
+
return request.choices.find((choice) => replyId(choice, max) === id);
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* A tap on a card, as `message.received` carries it: the card message it
|
|
124
|
+
* replies to, and the id of the reply the person chose. A card reply is plain
|
|
125
|
+
* text then `suggestion_response`; a picker answer, plain text then
|
|
126
|
+
* `selection_response` (Relay-Server contracts/developer/openapi.yaml,
|
|
127
|
+
* `SuggestionResponsePart` and `SelectionResponsePart`).
|
|
128
|
+
*/
|
|
129
|
+
export const readAnswer = (event) => {
|
|
130
|
+
if (event.event_type !== "message.received")
|
|
131
|
+
return undefined;
|
|
132
|
+
const parts = event.data.parts ?? [];
|
|
133
|
+
const card = suggestionReply(parts, event.data.reply_to);
|
|
134
|
+
if (card)
|
|
135
|
+
return { messageId: card.reply_to.message_id, id: card.id };
|
|
136
|
+
const picked = selectionReply(parts, event.data.reply_to);
|
|
137
|
+
const id = picked?.selected_ids?.[0] ?? picked?.selected_values[0];
|
|
138
|
+
return picked && id !== undefined ? { messageId: picked.reply_to.message_id, id } : undefined;
|
|
103
139
|
};
|
|
104
|
-
/** The card after the prompt ended: the buttons give way to what happened. */
|
|
105
|
-
export const settledComponents = (request, outcome) => [
|
|
106
|
-
{ id: "body", component: "Column", children: bodyChildren(request, "outcome") },
|
|
107
|
-
{ id: "outcome", component: "Text", text: outcomeLine(outcome), variant: "caption" },
|
|
108
|
-
];
|
|
109
|
-
/** The A2UI messages of a new card: `createSurface` then `updateComponents` (Relay-Docs interactions/cards.mdx, "Send a card"). */
|
|
110
|
-
export const approvalMessages = (surfaceId, request) => [
|
|
111
|
-
{ version: A2UI_VERSION, createSurface: { surfaceId, catalogId: RELAY_A2UI_CATALOG_ID } },
|
|
112
|
-
{ version: A2UI_VERSION, updateComponents: { surfaceId, components: approvalComponents(request) } },
|
|
113
|
-
];
|
|
114
140
|
/**
|
|
115
141
|
* One per bridge process. `ask` sends the card and waits; `take` reads every
|
|
116
|
-
* event first and keeps the
|
|
142
|
+
* event first and keeps the answers to its own cards, so they never start a turn.
|
|
117
143
|
*/
|
|
118
144
|
export class OwnerApprovals {
|
|
119
145
|
#client;
|
|
120
146
|
#say;
|
|
121
|
-
|
|
147
|
+
/** Open prompts, by the message id of each owner's card. */
|
|
122
148
|
#pending = new Map();
|
|
123
149
|
/** Cards already settled, so a late tap on one is dropped quietly. */
|
|
124
150
|
#settled = new Set();
|
|
125
151
|
constructor(options) {
|
|
126
152
|
this.#client = options.client;
|
|
127
153
|
this.#say = options.say;
|
|
128
|
-
this.#surfaceId = options.surfaceId ?? (() => `approval-${randomUUID()}`);
|
|
129
154
|
}
|
|
130
155
|
async ask(request) {
|
|
131
156
|
if (request.signal?.aborted)
|
|
132
157
|
return { reason: "aborted" };
|
|
158
|
+
// A prompt no card can carry fails loudly to the harness, before anything is sent.
|
|
159
|
+
let part;
|
|
160
|
+
try {
|
|
161
|
+
part = approvalPart(request);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
this.#say(error instanceof Error ? error.message : String(error));
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
133
167
|
// Read fresh each time, so an owner who links a phone while the bridge
|
|
134
168
|
// runs is asked from the next prompt on.
|
|
135
169
|
let me;
|
|
@@ -145,11 +179,9 @@ export class OwnerApprovals {
|
|
|
145
179
|
this.#say(noOwnerLine(request));
|
|
146
180
|
return { reason: "no_owner" };
|
|
147
181
|
}
|
|
148
|
-
const surfaceId = this.#surfaceId();
|
|
149
182
|
let settle;
|
|
150
183
|
const done = new Promise((resolve) => { settle = resolve; });
|
|
151
184
|
const pending = { request, owners: new Set(owners.map((owner) => owner.handle)), cards: [], settle };
|
|
152
|
-
this.#pending.set(surfaceId, pending);
|
|
153
185
|
for (const owner of owners) {
|
|
154
186
|
try {
|
|
155
187
|
// The chat between the agent and this owner: Relay reuses the direct
|
|
@@ -157,16 +189,17 @@ export class OwnerApprovals {
|
|
|
157
189
|
const sent = await this.#client.chats.create({
|
|
158
190
|
from: me.handle,
|
|
159
191
|
to: [owner.handle],
|
|
160
|
-
message: { parts: [
|
|
192
|
+
message: { parts: [part] },
|
|
161
193
|
});
|
|
162
|
-
|
|
194
|
+
const card = { chatId: sent.chat.id, messageId: sent.chat.message.id, owner: owner.handle };
|
|
195
|
+
pending.cards.push(card);
|
|
196
|
+
this.#pending.set(card.messageId, pending);
|
|
163
197
|
}
|
|
164
198
|
catch (error) {
|
|
165
199
|
this.#say(`The approval card did not reach @${owner.handle}: ${error instanceof Error ? error.message : String(error)}.`);
|
|
166
200
|
}
|
|
167
201
|
}
|
|
168
202
|
if (!pending.cards.length) {
|
|
169
|
-
this.#pending.delete(surfaceId);
|
|
170
203
|
this.#say(`${request.harness} was not allowed to use ${request.tool}: no owner could be asked.`);
|
|
171
204
|
return { reason: "unsent" };
|
|
172
205
|
}
|
|
@@ -178,40 +211,44 @@ export class OwnerApprovals {
|
|
|
178
211
|
const outcome = await done;
|
|
179
212
|
clearTimeout(timer);
|
|
180
213
|
request.signal?.removeEventListener("abort", abort);
|
|
181
|
-
|
|
182
|
-
|
|
214
|
+
for (const card of pending.cards) {
|
|
215
|
+
this.#pending.delete(card.messageId);
|
|
216
|
+
this.#settled.add(card.messageId);
|
|
217
|
+
}
|
|
218
|
+
// The card cannot change once sent, so what happened is a reply to it in
|
|
219
|
+
// every owner's chat.
|
|
183
220
|
await Promise.all(pending.cards.map(async (card) => {
|
|
184
221
|
try {
|
|
185
|
-
await
|
|
222
|
+
await this.#client.chats.messages.send(card.chatId, {
|
|
223
|
+
message: { parts: [{ type: "text", value: outcomeLine(outcome) }], reply_to: { message_id: card.messageId, part_index: 0 } },
|
|
224
|
+
});
|
|
186
225
|
}
|
|
187
|
-
catch { /* The harness already has its answer;
|
|
226
|
+
catch { /* The harness already has its answer; an unanswered card is the lesser harm. */ }
|
|
188
227
|
}));
|
|
189
228
|
this.#say(`${request.tool}: ${outcomeLine(outcome)}`);
|
|
190
229
|
return outcome;
|
|
191
230
|
}
|
|
192
231
|
/**
|
|
193
|
-
* Whether this event is
|
|
232
|
+
* Whether this event is an answer to one of this process's approval cards.
|
|
194
233
|
* Such an event is handled here and must not start a turn.
|
|
195
234
|
*/
|
|
196
235
|
async take(event) {
|
|
197
|
-
|
|
236
|
+
const answer = readAnswer(event);
|
|
237
|
+
if (!answer || event.event_type !== "message.received")
|
|
198
238
|
return false;
|
|
199
|
-
|
|
200
|
-
if (!tap)
|
|
201
|
-
return false;
|
|
202
|
-
const surfaceId = tap.action.surfaceId;
|
|
203
|
-
if (this.#settled.has(surfaceId))
|
|
239
|
+
if (this.#settled.has(answer.messageId))
|
|
204
240
|
return true;
|
|
205
|
-
const pending = this.#pending.get(
|
|
241
|
+
const pending = this.#pending.get(answer.messageId);
|
|
242
|
+
// An answer to an approval card this process does not hold (sent before a
|
|
243
|
+
// restart, or by another bridge of the same agent) is dropped quietly: the
|
|
244
|
+
// harness that asked is gone, and the tap is not a message to answer.
|
|
206
245
|
if (!pending)
|
|
207
|
-
return
|
|
208
|
-
if (tap.action.name !== ANSWER_EVENT)
|
|
209
|
-
return true;
|
|
246
|
+
return isApprovalReplyId(answer.id);
|
|
210
247
|
const sender = event.data.sender_handle;
|
|
211
|
-
// Anyone but an owner is not registered
|
|
248
|
+
// Anyone but an owner is not registered, and the card stays open.
|
|
212
249
|
if (sender.kind !== "user" || !pending.owners.has(sender.handle))
|
|
213
250
|
return true;
|
|
214
|
-
const choice = pending.request
|
|
251
|
+
const choice = choiceFor(pending.request, answer.id);
|
|
215
252
|
if (!choice)
|
|
216
253
|
return true;
|
|
217
254
|
pending.settle({ reason: "answered", choice, by: sender.handle });
|
|
@@ -299,7 +336,7 @@ const diff = (before, after) => [
|
|
|
299
336
|
];
|
|
300
337
|
const isReplacement = (value) => isRecord(value) && typeof value.old_string === "string" && typeof value.new_string === "string";
|
|
301
338
|
/**
|
|
302
|
-
* The whole tool input as a person reads it, for
|
|
339
|
+
* The whole tool input as a person reads it, for the card's description: an Edit is its
|
|
303
340
|
* file and a diff (a MultiEdit, a diff per edit), a Write its file and the
|
|
304
341
|
* content, anything else one `name: value` line per field.
|
|
305
342
|
*/
|
package/dist/approvals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,cAAc,EACd,eAAe,GAKhB,MAAM,qBAAqB,CAAC;AA0F7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAkD,EAAU,EAAE,CACxF,GAAG,OAAO,CAAC,OAAO,2BAA2B,OAAO,CAAC,IAAI,oJAAoJ,CAAC;AAEhN,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAwB,EAAU,EAAE;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACjC,KAAK,YAAY,EAAE,OAAO,GAAG,GAAG,qBAAqB,CAAC;QACtD,KAAK,eAAe,EAAE,OAAO,GAAG,GAAG,iCAAiC,CAAC;QACrE,KAAK,MAAM,EAAE,OAAO,GAAG,GAAG,eAAe,CAAC;QAC1C,KAAK,QAAQ,EAAE,OAAO,GAAG,GAAG,UAAU,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;QAC9D,SAAS,MAAM;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,0BAA0B,CAAC;IACpE,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE,yBAAyB;IACtC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,wBAAwB;IACjC,cAAc,EAAE,0BAA0B;IAC1C,iBAAiB,EAAE,GAAG;IACtB,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,GAAG;CACR,CAAC;AAEX,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CACjD,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAE3D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAE5E,mFAAmF;AACnF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC5D,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,gBAAgB,OAAO,CAAC,IAAI,GAAG,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAsB,EAAE;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK;QACxB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;QACvB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,OAAO,GAAG,CAAC,MAAsB,EAAE,GAAW,EAAU,EAAE;IAC9D,MAAM,KAAK,GAAG,GAAG,qBAAqB,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAChI,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,GAAG,CAAC,OAAwB,EAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC;AAExG;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAe,EAAE;IACpE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,iDAAiD,WAAW,CAAC,gBAAgB,uBAAuB,CAAC,CAAC;IAC5K,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9H,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,oGAAoG,CAAC,CAAC;IAC1I,CAAC;IACD,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC;YAClD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACnD,IAAI,EAAE,OAAgB;gBACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC;gBAClE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAE;aAChB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC;QAC3D,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,GAAG,CAAC,KAAK,CAAE;YACf,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC;SAC5E,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAwB,EAAE,EAAU,EAA8B,EAAE;IAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;IAC5E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAwB,EAAiD,EAAE;IACpG,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,IAAI;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,MAAM,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChG,CAAC,CAAC;AAkBF;;;GAGG;AACH,MAAM,OAAO,cAAc;IAChB,OAAO,CAAiB;IACxB,IAAI,CAAyB;IACtC,4DAA4D;IACnD,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,sEAAsE;IAC7D,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAwB;QAChC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1D,mFAAmF;QACnF,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,uEAAuE;QACvE,yCAAyC;QACzC,IAAI,EAAyD,CAAC;QAC9D,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,2BAA2B,OAAO,CAAC,IAAI,4CAA4C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3K,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAkB,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,MAA2C,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC9G,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,qEAAqE;gBACrE,qEAAqE;gBACrE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC3C,IAAI,EAAE,EAAE,CAAC,MAAM;oBACf,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClB,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;iBAC3B,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC5F,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5H,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,2BAA2B,OAAO,CAAC,IAAI,4BAA4B,CAAC,CAAC;YACjG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3G,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC;QAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;QAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,yEAAyE;QACzE,sBAAsB;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAClD,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iBAC7H,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,gFAAgF,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,KAAwB;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,0EAA0E;QAC1E,2EAA2E;QAC3E,sEAAsE;QACtE,IAAI,CAAC,OAAO;YAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC,kEAAkE;QAClE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,yGAAyG;AACzG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAwB,EAAU,EAAE;IAChE,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,SAAS,EAAE,OAAO,6EAA6E,CAAC;QACrG,KAAK,UAAU,EAAE,OAAO,4EAA4E,CAAC;QACrG,KAAK,QAAQ,EAAE,OAAO,yEAAyE,CAAC;QAChG,KAAK,SAAS,EAAE,OAAO,8DAA8D,CAAC;QACtF,SAAS,OAAO,kEAAkE,CAAC;IACrF,CAAC;AACH,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,UAAU,GAAG,CAAC,KAA8B,EAAsB,EAAE,CACxE,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AACzI,CAAC,CAAC,CAAC;AAEL,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA8B,EAAU,EAAE;IACrE,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAW,EAAE;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA8B,EAAE,KAAwB,EAAW,EAAE,CAC1F,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAA8B,EAAkE,EAAE;IAC1H,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3I,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC5B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;QAC1B,KAAK,EAAE,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACpG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAE1F,kDAAkD;AAClD,MAAM,MAAM,GAAG,CAAC,KAAc,EAAU,EAAE;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7G,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,gHAAgH;AAChH,MAAM,MAAM,GAAG,CAAC,KAA8B,EAAE,MAAM,GAAG,EAAE,EAAY,EAAE,CACvE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACxF,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACxI,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,kFAAkF;AAClF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAY,EAAE,CAAC;IACxD,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;IAChD,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAiF,EAAE,CACtH,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IACxF,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9D,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QACjC,OAAO;YACL,IAAI;YACJ,GAAI,KAAsD,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrK,GAAG,MAAM,CAAC,KAAK,CAAC;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO,CAAC,IAAI,EAAE,OAAiB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAA+C,EAAe,EAAE,CAAC,CAAC;IAC5F,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,OAAO,GAAqB,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3D,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACpG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC;YAClC,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY;YACxD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,qBAAqB;YACnD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACnE,kEAAkE;YAClE,KAAK,EAAE,KAAK;YACZ,OAAO;YACP,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;CACvC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relaymessenger",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16-staging.0",
|
|
4
4
|
"description": "Official command-line client for Relay v1 resources.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
32
32
|
"@anthropic-ai/claude-agent-sdk": "0.3.278",
|
|
33
33
|
"@clack/prompts": "1.8.1",
|
|
34
|
-
"@relaymessenger/pi": "0.1.
|
|
35
|
-
"@relaymessenger/sdk": "0.
|
|
34
|
+
"@relaymessenger/pi": "0.1.6-staging.0",
|
|
35
|
+
"@relaymessenger/sdk": "0.5.0-staging.0",
|
|
36
36
|
"@vercel/detect-agent": "1.2.5",
|
|
37
37
|
"commander": "^15.0.0",
|
|
38
38
|
"smol-toml": "^1.8.0",
|