@gea-ai/agent-sdk 0.1.260910-alpha.0 → 0.1.260910-alpha.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.
Files changed (51) hide show
  1. package/README.md +3 -1253
  2. package/dist/agent-channel-author-runtime.d.ts +79 -0
  3. package/dist/agent-channel-author-runtime.d.ts.map +1 -0
  4. package/dist/agent-channel-author-runtime.js +511 -0
  5. package/dist/agent-channel-author-runtime.js.map +1 -0
  6. package/dist/agent-channel-receiver.d.ts +46 -0
  7. package/dist/agent-channel-receiver.d.ts.map +1 -0
  8. package/dist/agent-channel-receiver.js +356 -0
  9. package/dist/agent-channel-receiver.js.map +1 -0
  10. package/dist/agent-channel-runtime.d.ts +6 -0
  11. package/dist/agent-channel-runtime.d.ts.map +1 -0
  12. package/dist/agent-channel-runtime.js +623 -0
  13. package/dist/agent-channel-runtime.js.map +1 -0
  14. package/dist/agent-channel-worker.d.ts +22 -0
  15. package/dist/agent-channel-worker.d.ts.map +1 -0
  16. package/dist/agent-channel-worker.js +335 -0
  17. package/dist/agent-channel-worker.js.map +1 -0
  18. package/dist/agent-session.d.ts.map +1 -1
  19. package/dist/agent-session.js +177 -4
  20. package/dist/agent-session.js.map +1 -1
  21. package/dist/agent-worker.d.ts +27 -1
  22. package/dist/agent-worker.d.ts.map +1 -1
  23. package/dist/agent-worker.js +867 -27
  24. package/dist/agent-worker.js.map +1 -1
  25. package/dist/channels/feishu-codec.d.ts +18 -0
  26. package/dist/channels/feishu-codec.d.ts.map +1 -0
  27. package/dist/channels/feishu-codec.js +109 -0
  28. package/dist/channels/feishu-codec.js.map +1 -0
  29. package/dist/channels/feishu-inbound.d.ts +35 -0
  30. package/dist/channels/feishu-inbound.d.ts.map +1 -0
  31. package/dist/channels/feishu-inbound.js +136 -0
  32. package/dist/channels/feishu-inbound.js.map +1 -0
  33. package/dist/channels/feishu-websocket.d.ts +5 -0
  34. package/dist/channels/feishu-websocket.d.ts.map +1 -0
  35. package/dist/channels/feishu-websocket.js +424 -0
  36. package/dist/channels/feishu-websocket.js.map +1 -0
  37. package/dist/channels/feishu.d.ts +32 -0
  38. package/dist/channels/feishu.d.ts.map +1 -0
  39. package/dist/channels/feishu.js +233 -0
  40. package/dist/channels/feishu.js.map +1 -0
  41. package/dist/channels/index.d.ts +180 -0
  42. package/dist/channels/index.d.ts.map +1 -0
  43. package/dist/channels/index.js +93 -0
  44. package/dist/channels/index.js.map +1 -0
  45. package/dist/index.d.ts +18 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +38 -8
  48. package/dist/index.js.map +1 -1
  49. package/package.json +16 -3
  50. package/src/channels/README.md +298 -0
  51. package/src/channels/feishu.ts +295 -0
@@ -0,0 +1,46 @@
1
+ import type { DefinedAgentPackage } from "./index";
2
+ import type { AgentChannelAddressStorage } from "./agent-channel-worker";
3
+ import type { AgentChannelFetchEnvironment } from "./agent-worker";
4
+ export type AgentChannelReceiverEnvironment = AgentChannelFetchEnvironment & {
5
+ CHANNEL: AgentChannelFetchEnvironment["CHANNEL"] & {
6
+ connectWebSocket(url: string, options: {
7
+ authorizationContext: {
8
+ installationId: string;
9
+ revision: number;
10
+ };
11
+ responseHeaders?: readonly string[];
12
+ }): Promise<WebSocket>;
13
+ activateWebSocket(socket: WebSocket): void;
14
+ setTimer(name: string, delayMs: number): void;
15
+ clearTimer(name: string): void;
16
+ closeReceiver(): Promise<void>;
17
+ };
18
+ };
19
+ /** Owns transient protocol callbacks. Storage contains control/retry state only. */
20
+ export declare class AgentChannelReceiver {
21
+ private readonly storage;
22
+ private readonly environment;
23
+ private readonly agents;
24
+ private current?;
25
+ private controller?;
26
+ private connection?;
27
+ private definition?;
28
+ private starting;
29
+ constructor(storage: AgentChannelAddressStorage, environment: AgentChannelReceiverEnvironment, agents: Record<string, {
30
+ definition: DefinedAgentPackage;
31
+ }>);
32
+ private load;
33
+ private persist;
34
+ private host;
35
+ private report;
36
+ private close;
37
+ control(value: unknown): Promise<Response>;
38
+ private context;
39
+ private invoke;
40
+ alarm(): Promise<void>;
41
+ message(socket: WebSocket, message: string | ArrayBuffer): Promise<void>;
42
+ timer(name: string): Promise<void>;
43
+ closed(socket: WebSocket, code: number, reason: string, wasClean?: boolean): Promise<void>;
44
+ errored(socket: WebSocket): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=agent-channel-receiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-channel-receiver.d.ts","sourceRoot":"","sources":["../src/agent-channel-receiver.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAUnE,MAAM,MAAM,+BAA+B,GAAG,4BAA4B,GAAG;IAC3E,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAAG;QACjD,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;YACP,oBAAoB,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAC;YACnE,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;SACrC,GACA,OAAO,CAAC,SAAS,CAAC,CAAC;QACtB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;QAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC,CAAC;CACH,CAAC;AAwBF,oFAAoF;AACpF,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YACmB,OAAO,EAAE,0BAA0B,EACnC,WAAW,EAAE,+BAA+B,EAC5C,MAAM,EAAE,MAAM,CAC7B,MAAM,EACN;QAAE,UAAU,EAAE,mBAAmB,CAAA;KAAE,CACpC,EACC;YAEU,IAAI;YAQJ,OAAO;YAgBP,IAAI;YA2BJ,MAAM;YAUN,KAAK;IAmBb,OAAO,CAAC,KAAK,EAAE,OAAO,qBAiD3B;YAEa,OAAO;YA8IP,MAAM;IA0Cd,KAAK,kBAqCV;IAEK,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,iBAM7D;IAEK,KAAK,CAAC,IAAI,EAAE,MAAM,iBAKvB;IAEK,MAAM,CACV,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,UAAO,iBA0BhB;IAEK,OAAO,CAAC,MAAM,EAAE,SAAS,iBAE9B;CACF"}
@@ -0,0 +1,356 @@
1
+ import { z } from "zod";
2
+ import { TaggedError } from "better-result";
3
+ import { agentChannelReceiverControlSchema, agentChannelReceiverInitializationSchema, agentChannelReceiverStateSchema, agentChannelReceiverErrorSchema, } from "@gea-ai/contract/agent-channel-receivers";
4
+ import { createChannelInputContext } from "./agent-channel-author-runtime.js";
5
+ const recordSchema = z
6
+ .object({
7
+ control: agentChannelReceiverControlSchema,
8
+ state: agentChannelReceiverStateSchema,
9
+ attempt: z.number().int().nonnegative(),
10
+ retryAt: z.number().nullable(),
11
+ lastError: agentChannelReceiverErrorSchema.nullable(),
12
+ })
13
+ .strict();
14
+ const STORAGE_KEY = "receiver:v1";
15
+ const RETRY_CAP_MS = 60_000;
16
+ class ReceiverCapabilityError extends TaggedError("ReceiverCapabilityError")() {
17
+ }
18
+ /** Owns transient protocol callbacks. Storage contains control/retry state only. */
19
+ export class AgentChannelReceiver {
20
+ storage;
21
+ environment;
22
+ agents;
23
+ current;
24
+ controller;
25
+ connection;
26
+ definition;
27
+ starting = false;
28
+ constructor(storage, environment, agents) {
29
+ this.storage = storage;
30
+ this.environment = environment;
31
+ this.agents = agents;
32
+ }
33
+ async load() {
34
+ if (!this.current) {
35
+ const stored = await this.storage.get(STORAGE_KEY);
36
+ if (stored !== undefined)
37
+ this.current = recordSchema.parse(stored);
38
+ }
39
+ return this.current;
40
+ }
41
+ async persist(record) {
42
+ await this.storage.transaction(async (tx) => {
43
+ const existing = await tx.get(STORAGE_KEY);
44
+ if (existing && existing.control.revision > record.control.revision)
45
+ return;
46
+ await tx.put(STORAGE_KEY, record);
47
+ if (record.retryAt !== null)
48
+ await tx.setAlarm(record.retryAt);
49
+ else if (record.control.desiredState === "running" &&
50
+ record.state !== "failed")
51
+ await tx.setAlarm(Date.now() + 30_000);
52
+ else
53
+ await tx.deleteAlarm?.();
54
+ });
55
+ }
56
+ async host(control, operation, body = {}, signal) {
57
+ const response = await this.environment.CHANNEL.fetch(`/v3/receiver/${operation}`, {
58
+ method: "POST",
59
+ headers: { "content-type": "application/json" },
60
+ body: JSON.stringify({
61
+ installationId: control.installationId,
62
+ revision: control.revision,
63
+ ...body,
64
+ }),
65
+ signal,
66
+ });
67
+ if (!response.ok)
68
+ throw new ReceiverCapabilityError({
69
+ status: response.status,
70
+ message: `Channel receiver ${operation} rejected (${response.status}).`,
71
+ });
72
+ return response;
73
+ }
74
+ async report(record) {
75
+ if (record !== this.current)
76
+ return;
77
+ await this.persist(record);
78
+ await this.host(record.control, "status", {
79
+ state: record.state,
80
+ lastError: record.lastError,
81
+ retryAt: record.retryAt,
82
+ });
83
+ }
84
+ async close() {
85
+ const connection = this.connection;
86
+ this.connection = undefined;
87
+ this.controller?.abort(new Error("Channel receiver stopped."));
88
+ await this.environment.CHANNEL.closeReceiver();
89
+ if (connection?.handlers.close) {
90
+ // The provider callback is a protocol edge and must release transient caches even on cancellation.
91
+ try {
92
+ await connection.handlers.close(connection.socket, { code: 1000, reason: "Receiver stopped" }, connection.context);
93
+ }
94
+ catch {
95
+ /* The cancelled context cannot perform provider I/O or restore ownership. */
96
+ }
97
+ }
98
+ }
99
+ async control(value) {
100
+ const control = agentChannelReceiverControlSchema.parse(value);
101
+ const current = await this.load();
102
+ if (current && control.revision < current.control.revision)
103
+ return Response.json({ error: { code: "channel_receiver_revision_expired" } }, { status: 409 });
104
+ if (current && control.revision === current.control.revision) {
105
+ if (JSON.stringify(current.control) !== JSON.stringify(control))
106
+ return Response.json({ error: { code: "channel_receiver_control_conflict" } }, { status: 409 });
107
+ return Response.json({
108
+ state: current.state,
109
+ revision: control.revision,
110
+ });
111
+ }
112
+ await this.close();
113
+ // A newer control can finish closing while this callback awaits the native acknowledgement.
114
+ if (this.current && control.revision <= this.current.control.revision) {
115
+ if (control.revision === this.current.control.revision &&
116
+ JSON.stringify(control) === JSON.stringify(this.current.control))
117
+ return Response.json({
118
+ state: this.current.state,
119
+ revision: control.revision,
120
+ });
121
+ return Response.json({ error: { code: "channel_receiver_revision_expired" } }, { status: 409 });
122
+ }
123
+ const record = {
124
+ control,
125
+ state: control.desiredState === "running" ? "connecting" : "stopped",
126
+ attempt: 0,
127
+ retryAt: control.desiredState === "running" ? Date.now() : null,
128
+ lastError: null,
129
+ };
130
+ this.current = record;
131
+ await this.persist(record);
132
+ if (control.desiredState === "stopped") {
133
+ await this.storage.deleteAlarm?.();
134
+ await this.report(record);
135
+ }
136
+ return Response.json({ state: record.state, revision: control.revision });
137
+ }
138
+ async context(record, controller) {
139
+ controller.signal.throwIfAborted();
140
+ const initialized = agentChannelReceiverInitializationSchema.parse(await (await this.host(record.control, "initialize", {}, controller.signal)).json());
141
+ const definition = this.agents[record.control.agentKey]?.definition.channels.find((entry) => entry.provider === "custom" && entry.key === record.control.channelKey);
142
+ if (!definition?.receiver)
143
+ throw new Error("Channel receiver definition is unavailable.");
144
+ this.definition = definition;
145
+ const environment = {
146
+ ...this.environment,
147
+ TOOLS: {
148
+ fetch: async (path, init) => {
149
+ const operation = path.slice(path.lastIndexOf("/") + 1);
150
+ if (!new Set(["initialize", "authorize", "fetch", "session"]).has(operation))
151
+ throw new Error("Unsupported receiver capability.");
152
+ const body = init?.body
153
+ ? z
154
+ .record(z.string(), z.unknown())
155
+ .parse(JSON.parse(String(init.body)))
156
+ : {};
157
+ return await this.host(record.control, operation, body, init?.signal ?? controller.signal);
158
+ },
159
+ },
160
+ };
161
+ const input = await createChannelInputContext({
162
+ definition,
163
+ environment,
164
+ identity: {
165
+ ...initialized.identity,
166
+ receiverRevision: record.control.revision,
167
+ },
168
+ signal: controller.signal,
169
+ });
170
+ const active = () => {
171
+ controller.signal.throwIfAborted();
172
+ if (this.current !== record || this.controller !== controller)
173
+ throw new Error("Channel receiver revision expired.");
174
+ };
175
+ const end = (error, retry) => {
176
+ active();
177
+ record.state = retry ? "retrying" : "failed";
178
+ record.lastError = {
179
+ code: error.code,
180
+ message: error.message.slice(0, 512),
181
+ at: Date.now(),
182
+ };
183
+ record.retryAt = retry
184
+ ? Date.now() +
185
+ Math.min(RETRY_CAP_MS, Math.max(1000, error.retryAfterMs ?? 1000 * 2 ** Math.min(record.attempt, 6)))
186
+ : null;
187
+ };
188
+ const context = {
189
+ ...input,
190
+ connectWebSocket: async (url, handlers, options) => {
191
+ active();
192
+ if (this.connection)
193
+ throw new Error("A Channel receiver allows one connection.");
194
+ const native = await this.environment.CHANNEL.connectWebSocket(url, {
195
+ ...options,
196
+ authorizationContext: {
197
+ installationId: record.control.installationId,
198
+ revision: record.control.revision,
199
+ },
200
+ });
201
+ active();
202
+ const socket = {
203
+ id: crypto.randomUUID(),
204
+ send(data) {
205
+ active();
206
+ native.send(data instanceof Uint8Array ? new Uint8Array(data) : data);
207
+ },
208
+ close(code, reason) {
209
+ active();
210
+ native.close(code, reason);
211
+ },
212
+ };
213
+ this.connection = { native, socket, handlers, context };
214
+ if (handlers.open)
215
+ await handlers.open(socket, context);
216
+ return socket;
217
+ },
218
+ setTimer: (name, delayMs) => {
219
+ active();
220
+ this.environment.CHANNEL.setTimer(name, delayMs);
221
+ },
222
+ clearTimer: (name) => {
223
+ // Native cancellation already removed this context's timers; cleanup cannot touch a newer connection.
224
+ if (controller.signal.aborted ||
225
+ this.current !== record ||
226
+ this.controller !== controller)
227
+ return;
228
+ this.environment.CHANNEL.clearTimer(name);
229
+ },
230
+ ready() {
231
+ active();
232
+ record.state = "ready";
233
+ record.attempt = 0;
234
+ record.lastError = null;
235
+ record.retryAt = null;
236
+ },
237
+ retry(error) {
238
+ end(error, true);
239
+ },
240
+ fail(error) {
241
+ end(error, false);
242
+ },
243
+ };
244
+ return context;
245
+ }
246
+ async invoke(callback) {
247
+ const record = this.current;
248
+ const controller = this.controller;
249
+ if (!record || !controller || controller.signal.aborted)
250
+ return;
251
+ // Native DO callbacks are protocol boundaries; translate author failures into persistent retry state.
252
+ try {
253
+ const context = await this.context(record, controller);
254
+ await callback(context);
255
+ }
256
+ catch (error) {
257
+ if (this.current !== record || controller.signal.aborted)
258
+ return;
259
+ const denied = ReceiverCapabilityError.is(error) &&
260
+ [401, 403, 409].includes(error.status);
261
+ record.state = denied ? "failed" : "retrying";
262
+ record.lastError = {
263
+ code: denied
264
+ ? "channel_receiver_access_revoked"
265
+ : "channel_receiver_callback_failed",
266
+ message: denied
267
+ ? "Receiver access is unavailable."
268
+ : "Channel receiver callback failed.",
269
+ at: Date.now(),
270
+ };
271
+ record.retryAt = denied
272
+ ? null
273
+ : Date.now() +
274
+ Math.min(RETRY_CAP_MS, 1000 * 2 ** Math.min(record.attempt, 6));
275
+ if (denied) {
276
+ await this.close();
277
+ await this.persist(record);
278
+ await this.storage.deleteAlarm?.();
279
+ return;
280
+ }
281
+ }
282
+ if (this.current !== record || controller.signal.aborted)
283
+ return;
284
+ if (record.state === "failed" || record.state === "retrying")
285
+ await this.close();
286
+ await this.report(record);
287
+ }
288
+ async alarm() {
289
+ const record = await this.load();
290
+ if (!record ||
291
+ record.control.desiredState !== "running" ||
292
+ record.state === "failed" ||
293
+ this.starting)
294
+ return;
295
+ if (record.retryAt !== null && record.retryAt > Date.now()) {
296
+ await this.storage.setAlarm(record.retryAt);
297
+ return;
298
+ }
299
+ if (this.connection) {
300
+ await this.invoke(() => { });
301
+ return;
302
+ }
303
+ this.starting = true;
304
+ this.controller = new AbortController();
305
+ record.attempt++;
306
+ record.state = "connecting";
307
+ record.retryAt = null;
308
+ try {
309
+ await this.invoke(async (context) => {
310
+ await this.definition.receiver.start(context);
311
+ if (this.connection &&
312
+ !this.controller?.signal.aborted &&
313
+ this.current === record &&
314
+ record.state !== "failed" &&
315
+ record.state !== "retrying")
316
+ this.environment.CHANNEL.activateWebSocket(this.connection.native);
317
+ });
318
+ }
319
+ finally {
320
+ this.starting = false;
321
+ }
322
+ }
323
+ async message(socket, message) {
324
+ const connection = this.connection;
325
+ if (!connection || connection.native !== socket)
326
+ return;
327
+ await this.invoke((context) => connection.handlers.message(connection.socket, message, context));
328
+ }
329
+ async timer(name) {
330
+ if (!this.connection)
331
+ return;
332
+ await this.invoke((context) => this.definition?.receiver?.timer?.(name, context));
333
+ }
334
+ async closed(socket, code, reason, wasClean = true) {
335
+ const connection = this.connection;
336
+ if (!connection || connection.native !== socket)
337
+ return;
338
+ await this.invoke(async (context) => {
339
+ if (!wasClean) {
340
+ const error = Object.assign(new Error("Provider connection failed."), { code: "channel_receiver_connection_failed", headers: {} });
341
+ await connection.handlers.error?.(connection.socket, error, context);
342
+ }
343
+ await connection.handlers.close?.(connection.socket, { code, reason }, context);
344
+ if (this.current?.state !== "failed" &&
345
+ this.current?.state !== "retrying")
346
+ context.retry({
347
+ code: "channel_receiver_disconnected",
348
+ message: "Provider connection closed.",
349
+ });
350
+ });
351
+ }
352
+ async errored(socket) {
353
+ await this.closed(socket, 1011, "Connection failed", false);
354
+ }
355
+ }
356
+ //# sourceMappingURL=agent-channel-receiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-channel-receiver.js","sourceRoot":"","sources":["../src/agent-channel-receiver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentChannelAddressStorage, AgentChannelAddressEnvironment } from "./agent-channel-worker";
2
+ /** An accepted operation owns its code target; the address owns only stable session state. */
3
+ export declare function handleCustomChannelAddressRequest(request: Request, storage: AgentChannelAddressStorage, environment?: AgentChannelAddressEnvironment): Promise<Response>;
4
+ /** Input execution, event projection, and delivery advance independently on durable alarms. */
5
+ export declare function handleCustomChannelAddressAlarm(storage: AgentChannelAddressStorage, environment: AgentChannelAddressEnvironment): Promise<void>;
6
+ //# sourceMappingURL=agent-channel-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-channel-runtime.d.ts","sourceRoot":"","sources":["../src/agent-channel-runtime.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,0BAA0B,EAE1B,8BAA8B,EAC/B,MAAM,wBAAwB,CAAC;AAqEhC,8FAA8F;AAC9F,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,0BAA0B,EACnC,WAAW,CAAC,EAAE,8BAA8B,qBAyN7C;AAqaD,+FAA+F;AAC/F,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,0BAA0B,EACnC,WAAW,EAAE,8BAA8B,iBAoE5C"}