@agent-relay/sdk 9.1.0 → 9.1.1

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.
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,186 @@
1
+ import type { AgentClientOptions, RelayCastOptions } from '@relaycast/sdk';
2
+ import { type RelaycastTelemetryOptions } from '../relaycast-telemetry.js';
3
+ import type { RelayCreateChannelInput, RelayListNodesOptions, RelayMessageBlock, RelayMessageListOptions, RelayUpdateChannelInput } from './types.js';
4
+ export type RelaycastWorkspaceLike = {
5
+ agents: {
6
+ list(query?: Record<string, unknown>): Promise<unknown[]>;
7
+ get(name: string): Promise<unknown>;
8
+ register(input: unknown): Promise<unknown>;
9
+ /** Register an agent, rotating its token when the name already exists. */
10
+ registerOrRotate?: (data: unknown) => Promise<unknown>;
11
+ update(name: string, input: unknown): Promise<unknown>;
12
+ delete(name: string): Promise<void>;
13
+ presence(): Promise<unknown[]>;
14
+ };
15
+ channels: {
16
+ list(options?: Record<string, unknown>): Promise<unknown[]>;
17
+ get(name: string): Promise<unknown>;
18
+ };
19
+ messages: {
20
+ list(channel: string, options?: RelayMessageListOptions): Promise<unknown[]>;
21
+ get(id: string): Promise<unknown>;
22
+ thread(id: string, options?: RelayMessageListOptions): Promise<unknown>;
23
+ reactions(id: string): Promise<unknown[]>;
24
+ };
25
+ allDmConversations?: () => Promise<unknown[]>;
26
+ dmMessages?: (conversationId: string, options?: RelayMessageListOptions) => Promise<unknown[]>;
27
+ webhooks?: {
28
+ create(data: unknown): Promise<unknown>;
29
+ createInbound(data: unknown): Promise<unknown>;
30
+ list(): Promise<unknown[]>;
31
+ delete(id: string): Promise<void>;
32
+ trigger(id: string, data: unknown, token?: string): Promise<unknown>;
33
+ };
34
+ subscriptions?: {
35
+ create(data: unknown): Promise<unknown>;
36
+ list(): Promise<unknown[]>;
37
+ get(id: string): Promise<unknown>;
38
+ delete(id: string): Promise<void>;
39
+ };
40
+ actions?: {
41
+ register(data: unknown): Promise<unknown>;
42
+ list(): Promise<unknown[]>;
43
+ get(name: string): Promise<unknown>;
44
+ delete(name: string): Promise<void>;
45
+ };
46
+ nodes?: {
47
+ list(options?: RelayListNodesOptions): Promise<unknown[]>;
48
+ get?(name: string): Promise<unknown>;
49
+ };
50
+ triggers?: {
51
+ list(): Promise<unknown[]>;
52
+ create(input: unknown): Promise<unknown>;
53
+ update(id: string, input: unknown): Promise<unknown>;
54
+ delete(id: string): Promise<void>;
55
+ };
56
+ workspace?: {
57
+ info(): Promise<unknown>;
58
+ fleetNodes?: {
59
+ get(): Promise<unknown>;
60
+ set(enabled: boolean): Promise<unknown>;
61
+ inherit(): Promise<unknown>;
62
+ };
63
+ };
64
+ as?: (agentToken: string, options?: AgentClientOptions) => RelaycastAgentLike;
65
+ connect?: () => void;
66
+ disconnect?: () => void;
67
+ on?: {
68
+ any(handler: (event: unknown) => void): () => void;
69
+ };
70
+ };
71
+ export type RelaycastDeliveryStatus = 'accepted' | 'delivered' | 'deferred' | 'failed';
72
+ /** The durable delivery methods an agent client must expose for server-backed inbox state. */
73
+ export type RelaycastAgentDeliverySurface = Required<Pick<RelaycastAgentLike, 'deliveries' | 'ackDelivery' | 'failDelivery' | 'deferDelivery'>>;
74
+ export type RelaycastAgentLike = {
75
+ me(): Promise<unknown>;
76
+ connect(): void;
77
+ disconnect(): Promise<void>;
78
+ subscribe(channels: string[]): void;
79
+ unsubscribe(channels: string[]): void;
80
+ send(channel: string, text: string, options?: {
81
+ attachments?: string[];
82
+ blocks?: RelayMessageBlock[];
83
+ mode?: 'wait' | 'steer';
84
+ idempotencyKey?: string;
85
+ }): Promise<unknown>;
86
+ messages(channel: string, options?: RelayMessageListOptions): Promise<unknown[]>;
87
+ message(id: string): Promise<unknown>;
88
+ reply(id: string, text: string, options?: {
89
+ blocks?: RelayMessageBlock[];
90
+ idempotencyKey?: string;
91
+ }): Promise<unknown>;
92
+ thread(id: string, options?: RelayMessageListOptions): Promise<unknown>;
93
+ dm(agent: string, text: string, options?: {
94
+ mode?: 'wait' | 'steer';
95
+ attachments?: string[];
96
+ idempotencyKey?: string;
97
+ }): Promise<unknown>;
98
+ dms: {
99
+ conversations(): Promise<unknown[]>;
100
+ messages(conversationId: string, options?: RelayMessageListOptions): Promise<unknown[]>;
101
+ createGroup(options: {
102
+ participants: string[];
103
+ name?: string;
104
+ }, idempotency?: {
105
+ idempotencyKey?: string;
106
+ }): Promise<unknown>;
107
+ sendMessage(conversationId: string, text: string, options?: {
108
+ attachments?: string[];
109
+ mode?: 'wait' | 'steer';
110
+ idempotencyKey?: string;
111
+ }): Promise<unknown>;
112
+ };
113
+ channels: {
114
+ create(input: RelayCreateChannelInput): Promise<unknown>;
115
+ get(name: string): Promise<unknown>;
116
+ join(name: string): Promise<unknown>;
117
+ leave(name: string): Promise<void>;
118
+ setTopic(name: string, topic: string): Promise<unknown>;
119
+ archive(name: string): Promise<void>;
120
+ invite(channel: string, agent: string): Promise<unknown>;
121
+ members(name: string): Promise<unknown[]>;
122
+ update(name: string, input: RelayUpdateChannelInput): Promise<unknown>;
123
+ mute(name: string): Promise<void>;
124
+ unmute(name: string): Promise<void>;
125
+ };
126
+ inbox(options?: {
127
+ limit?: number;
128
+ }): Promise<unknown>;
129
+ deliveries?(options?: {
130
+ status?: RelaycastDeliveryStatus;
131
+ limit?: number;
132
+ }): Promise<unknown[]>;
133
+ ackDelivery?(deliveryId: string): Promise<unknown>;
134
+ failDelivery?(deliveryId: string, options?: {
135
+ error?: string;
136
+ retryable?: boolean;
137
+ }): Promise<unknown>;
138
+ deferDelivery?(deliveryId: string, options: {
139
+ availableAt: string;
140
+ reason?: string;
141
+ }): Promise<unknown>;
142
+ markRead(messageId: string): Promise<unknown>;
143
+ readers(messageId: string): Promise<unknown[]>;
144
+ readStatus(channel: string): Promise<unknown[]>;
145
+ reactions(messageId: string): Promise<unknown[]>;
146
+ react(messageId: string, emoji: string): Promise<unknown>;
147
+ unreact(messageId: string, emoji: string): Promise<void>;
148
+ search(query: string, options?: {
149
+ channel?: string;
150
+ from?: string;
151
+ limit?: number;
152
+ before?: string;
153
+ after?: string;
154
+ }): Promise<unknown[]>;
155
+ actions?: {
156
+ invoke(name: string, input?: Record<string, unknown>): Promise<unknown>;
157
+ getInvocation(name: string, invocationId: string): Promise<unknown>;
158
+ completeInvocation(name: string, invocationId: string, data: unknown): Promise<unknown>;
159
+ };
160
+ on: {
161
+ any(handler: (event: unknown) => void): () => void;
162
+ actionInvoked?(handler: (event: unknown) => void): () => void;
163
+ };
164
+ };
165
+ export interface RelaycastMessagingOptions extends RelaycastTelemetryOptions {
166
+ /** Workspace key returned when creating or joining an Agent Relay workspace. */
167
+ workspaceKey?: string;
168
+ /** @deprecated Use workspaceKey for public Agent Relay flows. */
169
+ apiKey?: string;
170
+ baseUrl?: string;
171
+ retryPolicy?: RelayCastOptions['retryPolicy'];
172
+ relaycast?: RelaycastWorkspaceLike;
173
+ agentToken?: string;
174
+ agentClient?: RelaycastAgentLike;
175
+ agentClientOptions?: AgentClientOptions;
176
+ /** Local node name used to resolve placement requests with `node: "self"`. */
177
+ selfNodeName?: string;
178
+ /** Default bounded placement queue TTL. RFC placeholder default is one hour. */
179
+ placementTtlMs?: number;
180
+ /** Max in-process placement requests allowed to wait for an eligible node. */
181
+ maxQueuedPlacements?: number;
182
+ /** Receives placement queue/reject/fail log lines. */
183
+ placementLog?: (message: string) => void;
184
+ }
185
+ export declare function createRelaycastClient(options: RelaycastMessagingOptions): RelaycastWorkspaceLike;
186
+ //# sourceMappingURL=relaycast-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaycast-client.d.ts","sourceRoot":"","sources":["../../src/messaging/relaycast-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The structural adapter surface over the `@relaycast/sdk` client.
3
+ *
4
+ * `RelaycastWorkspaceLike` / `RelaycastAgentLike` describe only the slice of the
5
+ * relaycast SDK that `RelaycastMessagingClient` depends on. Modeling them
6
+ * structurally (rather than importing the SDK's concrete classes) keeps the
7
+ * client testable with lightweight fakes and insulates relay from relaycast SDK
8
+ * shape churn. `createRelaycastClient` is the single place that constructs a
9
+ * real `RelayCast` instance from messaging options.
10
+ */
11
+ import { RelayCast } from '@relaycast/sdk';
12
+ import { relaycastTelemetryOptions } from '../relaycast-telemetry.js';
13
+ import { definedOptions } from './relaycast-translate.js';
14
+ export function createRelaycastClient(options) {
15
+ if (options.relaycast)
16
+ return options.relaycast;
17
+ const workspaceKey = options.workspaceKey ?? options.apiKey;
18
+ if (!workspaceKey) {
19
+ throw new Error('RelaycastMessagingClient requires workspaceKey when relaycast is not provided.');
20
+ }
21
+ return new RelayCast(definedOptions({
22
+ apiKey: workspaceKey,
23
+ baseUrl: options.baseUrl,
24
+ retryPolicy: options.retryPolicy,
25
+ ...relaycastTelemetryOptions({
26
+ originActor: options.originActor,
27
+ agentRelayDistinctId: options.agentRelayDistinctId,
28
+ }),
29
+ }));
30
+ }
31
+ //# sourceMappingURL=relaycast-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaycast-client.js","sourceRoot":"","sources":["../../src/messaging/relaycast-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,yBAAyB,EAAkC,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAuM1D,MAAM,UAAU,qBAAqB,CAAC,OAAkC;IACtE,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAED,OAAO,IAAI,SAAS,CAClB,cAAc,CAAC;QACb,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,yBAAyB,CAAC;YAC3B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC;KACH,CAAqB,CACc,CAAC;AACzC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Placement primitives for capability-routed spawns. The
3
+ * `RelaycastMessagingClient` owns the queue/reconcile state machine; this
4
+ * module holds the stateless pieces it builds on: the error type the queue
5
+ * throws, the selection result shape, and the helpers that translate a chosen
6
+ * placement into an `actions.invoke` payload.
7
+ */
8
+ import type { RelayNode } from './types.js';
9
+ export type PlacementReconcileReason = 'no_eligible_node' | 'target_offline' | 'unmapped_repo';
10
+ export type PlacementSelection = {
11
+ node: RelayNode;
12
+ message?: never;
13
+ hardFail?: never;
14
+ reason?: never;
15
+ reconcileReason?: never;
16
+ } | {
17
+ node?: never;
18
+ message: string;
19
+ hardFail: true;
20
+ reason: 'capability_mismatch';
21
+ reconcileReason: PlacementReconcileReason;
22
+ } | {
23
+ node?: never;
24
+ message: string;
25
+ hardFail?: false;
26
+ reason?: never;
27
+ reconcileReason: PlacementReconcileReason;
28
+ };
29
+ export declare class RelayPlacementError extends Error {
30
+ readonly code: 'capability_mismatch' | 'placement_queue_full' | 'placement_ttl_expired' | 'unmapped_repo';
31
+ readonly capability: string;
32
+ readonly node?: string;
33
+ readonly repo?: string;
34
+ readonly attempts: number;
35
+ constructor(code: RelayPlacementError['code'], message: string, context: {
36
+ capability: string;
37
+ node?: string;
38
+ repo?: string;
39
+ attempts: number;
40
+ });
41
+ }
42
+ export declare function nonEmptyPlacement(value: string, label: string): string;
43
+ export declare function placementActionName(capability: string): string;
44
+ export declare function placementActionInput(input: Record<string, unknown> | undefined, placement: {
45
+ capability: string;
46
+ node: string;
47
+ repo?: string;
48
+ ttlMs: number;
49
+ }): Record<string, unknown>;
50
+ export declare function delay(ms: number): Promise<void>;
51
+ //# sourceMappingURL=relaycast-placement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaycast-placement.d.ts","sourceRoot":"","sources":["../../src/messaging/relaycast-placement.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE/F,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,GAC/F;IAEE,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC;IAC9B,eAAe,EAAE,wBAAwB,CAAC;CAC3C,GACD;IAEE,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,eAAe,EAAE,wBAAwB,CAAC;CAC3C,CAAC;AAEN,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,uBAAuB,GAAG,eAAe,CAAC;IAC1G,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAUlF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC1C,SAAS,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
@@ -0,0 +1,52 @@
1
+ export class RelayPlacementError extends Error {
2
+ code;
3
+ capability;
4
+ node;
5
+ repo;
6
+ attempts;
7
+ constructor(code, message, context) {
8
+ super(message);
9
+ this.name = 'RelayPlacementError';
10
+ this.code = code;
11
+ this.capability = context.capability;
12
+ this.node = context.node;
13
+ this.repo = context.repo;
14
+ this.attempts = context.attempts;
15
+ }
16
+ }
17
+ export function nonEmptyPlacement(value, label) {
18
+ const trimmed = value.trim();
19
+ if (!trimmed)
20
+ throw new Error(`${label} is required.`);
21
+ return trimmed;
22
+ }
23
+ export function placementActionName(capability) {
24
+ return capability.startsWith('spawn:') ? 'spawn' : capability;
25
+ }
26
+ export function placementActionInput(input, placement) {
27
+ const payload = { ...(input ?? {}) };
28
+ payload.capability = placement.capability;
29
+ payload.node = placement.node;
30
+ payload.target_node = placement.node;
31
+ if (placement.repo)
32
+ payload.repo = placement.repo;
33
+ if (placement.ttlMs > 0) {
34
+ payload.ttl_override_ms = placement.ttlMs;
35
+ }
36
+ if (placement.capability.startsWith('spawn:')) {
37
+ // The broker picks the harness from `cli`, but node eligibility was gated on
38
+ // the `spawn:<cli>` capability. An explicit, mismatched `cli` would select a
39
+ // harness the chosen node never advertised — reject it instead of silently
40
+ // dispatching the wrong harness.
41
+ const capabilityCli = placement.capability.slice('spawn:'.length);
42
+ if (typeof payload.cli === 'string' && payload.cli !== capabilityCli) {
43
+ throw new RelayPlacementError('capability_mismatch', `Placement rejected: input cli "${payload.cli}" does not match capability "${placement.capability}"`, { capability: placement.capability, node: placement.node, repo: placement.repo, attempts: 0 });
44
+ }
45
+ payload.cli = capabilityCli;
46
+ }
47
+ return payload;
48
+ }
49
+ export function delay(ms) {
50
+ return new Promise((resolve) => setTimeout(resolve, ms));
51
+ }
52
+ //# sourceMappingURL=relaycast-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaycast-placement.js","sourceRoot":"","sources":["../../src/messaging/relaycast-placement.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAA6F;IACjG,UAAU,CAAS;IACnB,IAAI,CAAU;IACd,IAAI,CAAU;IACd,QAAQ,CAAS;IAE1B,YACE,IAAiC,EACjC,OAAe,EACf,OAA+E;QAE/E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0C,EAC1C,SAA6E;IAE7E,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;IAC1C,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC;IACrC,IAAI,SAAS,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAClD,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;IAC5C,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,6EAA6E;QAC7E,6EAA6E;QAC7E,2EAA2E;QAC3E,iCAAiC;QACjC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;YACrE,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,EACrB,kCAAkC,OAAO,CAAC,GAAG,gCAAgC,SAAS,CAAC,UAAU,GAAG,EACpG,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,aAAa,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Pure translation helpers between the relaycast wire shapes and relay's
3
+ * domain types. Everything in this module is stateless: it reads loosely-typed
4
+ * records (`unknown`) coming off the relaycast SDK and produces relay-facing
5
+ * objects, or shapes relay inputs into relaycast request payloads.
6
+ *
7
+ * Keeping these free functions out of `RelaycastMessagingClient` lets the
8
+ * stateful client focus on transport/lifecycle while the wire mapping stays
9
+ * independently testable.
10
+ */
11
+ import type { RelayActionInvocation, RelayActionInvocationAck, RelayCapability, RelayCompleteInvocationInput, RelayInboundWebhook, RelayMessageAttachmentInput, RelayMessageListOptions, RelayNode, RelayNodeCapability, RelayRegisterCapabilityInput, RelayTrigger, RelayTriggerInput, RelayWebhookSubscription, RelayWorkspaceFleetNodesConfig } from './types.js';
12
+ export declare function asRecord(value: unknown): Record<string, unknown>;
13
+ export declare function readStr(record: Record<string, unknown>, ...keys: string[]): string | undefined;
14
+ /**
15
+ * Translate a relay capability registration into a relaycast `actions.register`
16
+ * request. Relaycast 2.x replaced the `commands` registry with `actions`:
17
+ * `command` → `name`, `parameters` → `inputSchema`.
18
+ */
19
+ export declare function toRegisterActionRequest(input: RelayRegisterCapabilityInput): Record<string, unknown>;
20
+ export declare function toTriggerRequest(input: RelayTriggerInput | Partial<RelayTriggerInput>): Record<string, unknown>;
21
+ /** Translate a relay completion result into the relaycast `CompleteInvocationRequest` shape. */
22
+ export declare function toCompleteInvocationRequest(data: RelayCompleteInvocationInput): Record<string, unknown>;
23
+ /**
24
+ * Translate a relaycast `ActionDefinition` back into a relay `RelayCapability`,
25
+ * preserving the relay-facing `command`/`parameters` vocabulary.
26
+ */
27
+ export declare function toRelayCapability(raw: unknown): RelayCapability;
28
+ export declare function toRelayNode(raw: unknown): RelayNode;
29
+ export declare function toRelayNodeCapability(raw: unknown): RelayNodeCapability;
30
+ export declare function toRelayTrigger(raw: unknown): RelayTrigger;
31
+ export declare function toRelayWorkspaceFleetNodesConfig(raw: unknown): RelayWorkspaceFleetNodesConfig;
32
+ /** Normalize a relaycast invoke ack (camelized) into the relay `RelayActionInvocationAck`. */
33
+ export declare function normalizeActionInvocationAck(raw: unknown): RelayActionInvocationAck;
34
+ /** Normalize a relaycast invocation record (camelized) into `RelayActionInvocation`. */
35
+ export declare function normalizeActionInvocation(raw: unknown): RelayActionInvocation;
36
+ /** Normalize a relaycast inbound webhook (snake_case) into `RelayInboundWebhook`. */
37
+ export declare function normalizeInboundWebhook(raw: unknown): RelayInboundWebhook;
38
+ /** Normalize a relaycast event subscription into `RelayWebhookSubscription`. */
39
+ export declare function normalizeWebhookSubscription(raw: unknown): RelayWebhookSubscription;
40
+ export declare function definedOptions<T extends Record<string, unknown>>(options: T): Partial<T>;
41
+ export declare function toMessageListOptions(options?: RelayMessageListOptions): RelayMessageListOptions | undefined;
42
+ export declare function serializeAttachmentInputs(input?: RelayMessageAttachmentInput[]): string[] | undefined;
43
+ //# sourceMappingURL=relaycast-translate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaycast-translate.d.ts","sourceRoot":"","sources":["../../src/messaging/relaycast-translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EACf,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,SAAS,EACT,mBAAmB,EACnB,4BAA4B,EAC5B,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAIpB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIhE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAM9F;AAuCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYpG;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GACpD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,gGAAgG;AAChG,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMvG;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAU/D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAoBnD;AASD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAOvE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAUzD;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,OAAO,GAAG,8BAA8B,CAO7F;AAED,8FAA8F;AAC9F,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,wBAAwB,CAoBnF;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,CAsB7E;AAED,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAYzE;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,wBAAwB,CAanF;AAID,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAExF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,GAAG,SAAS,CAO3G;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,2BAA2B,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAKrG"}