@gencode/cli 0.0.6 → 0.0.8

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 (45) hide show
  1. package/dist/commands/agents.js.map +1 -1
  2. package/dist/commands/run.d.ts +4 -1
  3. package/dist/commands/run.d.ts.map +1 -1
  4. package/dist/commands/run.js +297 -136
  5. package/dist/commands/run.js.map +1 -1
  6. package/dist/events/agent-progress.d.ts +58 -0
  7. package/dist/events/agent-progress.d.ts.map +1 -0
  8. package/dist/events/agent-progress.js +2 -0
  9. package/dist/events/agent-progress.js.map +1 -0
  10. package/dist/events/composite-sink.d.ts +9 -0
  11. package/dist/events/composite-sink.d.ts.map +1 -0
  12. package/dist/events/composite-sink.js +17 -0
  13. package/dist/events/composite-sink.js.map +1 -0
  14. package/dist/events/event-sink.d.ts +6 -0
  15. package/dist/events/event-sink.d.ts.map +1 -0
  16. package/dist/events/event-sink.js +2 -0
  17. package/dist/events/event-sink.js.map +1 -0
  18. package/dist/events/http-callback-sink.d.ts +11 -0
  19. package/dist/events/http-callback-sink.d.ts.map +1 -0
  20. package/dist/events/http-callback-sink.js +68 -0
  21. package/dist/events/http-callback-sink.js.map +1 -0
  22. package/dist/events/types.d.ts +75 -0
  23. package/dist/events/types.d.ts.map +1 -0
  24. package/dist/events/types.js +2 -0
  25. package/dist/events/types.js.map +1 -0
  26. package/dist/events/websocket-auth.d.ts +8 -0
  27. package/dist/events/websocket-auth.d.ts.map +1 -0
  28. package/dist/events/websocket-auth.js +9 -0
  29. package/dist/events/websocket-auth.js.map +1 -0
  30. package/dist/events/websocket-sink.d.ts +17 -0
  31. package/dist/events/websocket-sink.d.ts.map +1 -0
  32. package/dist/events/websocket-sink.js +143 -0
  33. package/dist/events/websocket-sink.js.map +1 -0
  34. package/dist/gensign_node_bg.wasm +0 -0
  35. package/dist/logger.d.ts +6 -3
  36. package/dist/logger.d.ts.map +1 -1
  37. package/dist/logger.js +14 -5
  38. package/dist/logger.js.map +1 -1
  39. package/dist/output.d.ts +2 -1
  40. package/dist/output.d.ts.map +1 -1
  41. package/dist/output.js +6 -0
  42. package/dist/output.js.map +1 -1
  43. package/dist/program-glxy0j6y.js +765 -0
  44. package/dist/program-glxy0j6y.js.map +1 -0
  45. package/package.json +3 -2
@@ -0,0 +1,9 @@
1
+ import type { EventSink } from "./event-sink.js";
2
+ import type { CallbackEventPayload } from "@gencode/shared";
3
+ export declare class CompositeSink implements EventSink {
4
+ private readonly sinks;
5
+ constructor(sinks: EventSink[]);
6
+ send(event: CallbackEventPayload): Promise<void>;
7
+ close(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=composite-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-sink.d.ts","sourceRoot":"","sources":["../../src/events/composite-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS,EAAE;IAEzC,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -0,0 +1,17 @@
1
+ export class CompositeSink {
2
+ sinks;
3
+ constructor(sinks) {
4
+ this.sinks = sinks;
5
+ }
6
+ async send(event) {
7
+ await Promise.allSettled(this.sinks.map(async (sink) => {
8
+ await sink.send(event);
9
+ }));
10
+ }
11
+ async close() {
12
+ await Promise.allSettled(this.sinks.map(async (sink) => {
13
+ await sink.close();
14
+ }));
15
+ }
16
+ }
17
+ //# sourceMappingURL=composite-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-sink.js","sourceRoot":"","sources":["../../src/events/composite-sink.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,KAA2B;QACpC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { CallbackEventPayload } from "@gencode/shared";
2
+ export interface EventSink {
3
+ send(event: CallbackEventPayload): Promise<void>;
4
+ close(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=event-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-sink.d.ts","sourceRoot":"","sources":["../../src/events/event-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-sink.js","sourceRoot":"","sources":["../../src/events/event-sink.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { EventSink } from "./event-sink.js";
2
+ import type { CallbackEventPayload } from "@gencode/shared";
3
+ export declare class HttpCallbackSink implements EventSink {
4
+ private readonly url;
5
+ constructor(url: string);
6
+ send(event: CallbackEventPayload): Promise<void>;
7
+ close(): Promise<void>;
8
+ private post;
9
+ private toPayload;
10
+ }
11
+ //# sourceMappingURL=http-callback-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-callback-sink.d.ts","sourceRoot":"","sources":["../../src/events/http-callback-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,qBAAa,gBAAiB,YAAW,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAElC,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAEd,IAAI;IAiClB,OAAO,CAAC,SAAS;CAkBlB"}
@@ -0,0 +1,68 @@
1
+ import { logger } from "../logger.js";
2
+ export class HttpCallbackSink {
3
+ url;
4
+ constructor(url) {
5
+ this.url = url;
6
+ }
7
+ async send(event) {
8
+ await this.post(this.toPayload(event));
9
+ }
10
+ async close() { }
11
+ async post(payload) {
12
+ const startedAt = Date.now();
13
+ const summary = summarizeCallbackPayload(payload);
14
+ logger.info("sending callback event", {
15
+ callbackUrl: this.url,
16
+ ...summary,
17
+ });
18
+ const response = await fetch(this.url, {
19
+ method: "POST",
20
+ headers: { "content-type": "application/json" },
21
+ body: JSON.stringify(payload),
22
+ });
23
+ const durationMs = Date.now() - startedAt;
24
+ if (!response.ok) {
25
+ logger.error("callback event failed", {
26
+ callbackUrl: this.url,
27
+ httpStatus: response.status,
28
+ durationMs,
29
+ ...summary,
30
+ });
31
+ throw new Error(`Callback failed with status ${response.status}`);
32
+ }
33
+ logger.info("callback event delivered", {
34
+ callbackUrl: this.url,
35
+ httpStatus: response.status,
36
+ durationMs,
37
+ ...summary,
38
+ });
39
+ }
40
+ toPayload(event) {
41
+ switch (event.type) {
42
+ case "start":
43
+ return event;
44
+ case "progress":
45
+ return event;
46
+ case "done":
47
+ return event;
48
+ case "error":
49
+ return event;
50
+ case "session_reset":
51
+ return event;
52
+ default: {
53
+ const exhaustive = event;
54
+ throw new Error(`Unsupported callback event: ${JSON.stringify(exhaustive)}`);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ function summarizeCallbackPayload(payload) {
60
+ return {
61
+ eventType: payload.type,
62
+ sessionId: payload.sessionId,
63
+ messageId: payload.messageId,
64
+ channel: payload.channel,
65
+ progressType: payload.type === "progress" ? payload.event.type : undefined,
66
+ };
67
+ }
68
+ //# sourceMappingURL=http-callback-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-callback-sink.js","sourceRoot":"","sources":["../../src/events/http-callback-sink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE5C,KAAK,CAAC,IAAI,CAAC,KAA2B;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,KAAmB,CAAC;IAEvB,KAAK,CAAC,IAAI,CAAC,OAA6B;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,GAAG,OAAO;SACX,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACpC,WAAW,EAAE,IAAI,CAAC,GAAG;gBACrB,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,UAAU;gBACV,GAAG,OAAO;aACX,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACtC,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,UAAU;YACV,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,KAA2B;QAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC;YACf,KAAK,UAAU;gBACb,OAAO,KAAK,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC;YACf,KAAK,eAAe;gBAClB,OAAO,KAAK,CAAC;YACf,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,UAAU,GAAU,KAAK,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,wBAAwB,CAAC,OAA6B;IAC7D,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,IAAI;QACvB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAC3E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,75 @@
1
+ import type { AgentRunResult, Channel } from "@gencode/agents";
2
+ import type { AgentProgressEvent } from "@gencode/shared";
3
+ export type CliRunEvent = {
4
+ sessionId: string;
5
+ channel: Channel;
6
+ messageId?: string;
7
+ type: "start";
8
+ message: string;
9
+ } | {
10
+ sessionId: string;
11
+ channel: Channel;
12
+ messageId?: string;
13
+ type: "progress";
14
+ event: AgentProgressEvent;
15
+ } | {
16
+ sessionId: string;
17
+ channel: Channel;
18
+ messageId?: string;
19
+ type: "done";
20
+ result: Omit<AgentRunResult, "sessionId">;
21
+ } | {
22
+ sessionId: string;
23
+ channel: Channel;
24
+ messageId?: string;
25
+ type: "error";
26
+ message: string;
27
+ } | {
28
+ sessionId: string;
29
+ channel: Channel;
30
+ messageId?: string;
31
+ type: "session_reset";
32
+ action: "new" | "reset";
33
+ previousSessionId?: string;
34
+ message: string;
35
+ };
36
+ export type CallbackEventPayload = CliRunEvent;
37
+ export type StreamEventName = "start" | "text" | "progress" | "done" | "error";
38
+ export type StreamEnvelope = {
39
+ type: "start";
40
+ sessionId: string;
41
+ messageId?: string;
42
+ channel: Channel;
43
+ timestamp: string;
44
+ message: string;
45
+ } | {
46
+ type: "text";
47
+ sessionId: string;
48
+ messageId?: string;
49
+ channel: Channel;
50
+ timestamp: string;
51
+ sequence: number;
52
+ delta: string;
53
+ } | {
54
+ type: "progress";
55
+ sessionId: string;
56
+ messageId?: string;
57
+ channel: Channel;
58
+ timestamp: string;
59
+ event: AgentProgressEvent;
60
+ } | {
61
+ type: "done";
62
+ sessionId: string;
63
+ messageId?: string;
64
+ channel: Channel;
65
+ timestamp: string;
66
+ result: Omit<AgentRunResult, "sessionId">;
67
+ } | {
68
+ type: "error";
69
+ sessionId: string;
70
+ messageId?: string;
71
+ channel: Channel;
72
+ timestamp: string;
73
+ message: string;
74
+ };
75
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,WAAW,GACnB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3F;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GACxG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;CAAE,GACpH;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3F;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/E,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;CAC3C,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export type WebSocketAuthStrategy = {
2
+ kind: "none";
3
+ } | {
4
+ kind: "query_token";
5
+ token: string;
6
+ };
7
+ export declare function buildWebSocketConnectionUrl(url: string, auth: WebSocketAuthStrategy): string;
8
+ //# sourceMappingURL=websocket-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-auth.d.ts","sourceRoot":"","sources":["../../src/events/websocket-auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAQ5F"}
@@ -0,0 +1,9 @@
1
+ export function buildWebSocketConnectionUrl(url, auth) {
2
+ if (auth.kind === "none") {
3
+ return url;
4
+ }
5
+ const resolved = new URL(url);
6
+ resolved.searchParams.set("authToken", auth.token);
7
+ return resolved.toString();
8
+ }
9
+ //# sourceMappingURL=websocket-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-auth.js","sourceRoot":"","sources":["../../src/events/websocket-auth.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,IAA2B;IAClF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { EventSink } from "./event-sink.js";
2
+ import type { CallbackEventPayload, StreamEventName } from "@gencode/shared";
3
+ export declare class WebSocketSink implements EventSink {
4
+ private readonly url;
5
+ private readonly events;
6
+ private readonly authToken?;
7
+ private socket;
8
+ private connectPromise;
9
+ private enabled;
10
+ private textSequence;
11
+ constructor(url: string, events: Set<StreamEventName>, authToken?: string | undefined);
12
+ send(event: CallbackEventPayload): Promise<void>;
13
+ close(): Promise<void>;
14
+ private ensureConnected;
15
+ private toEnvelope;
16
+ }
17
+ //# sourceMappingURL=websocket-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-sink.d.ts","sourceRoot":"","sources":["../../src/events/websocket-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAkB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA6B7F,qBAAa,aAAc,YAAW,SAAS;IAO3C,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAR7B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAK;gBAGN,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,EAC5B,SAAS,CAAC,EAAE,MAAM,YAAA;IAG/B,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBd,eAAe;IAsC7B,OAAO,CAAC,UAAU;CA2CnB"}
@@ -0,0 +1,143 @@
1
+ import { buildWebSocketConnectionUrl } from "./websocket-auth.js";
2
+ function getWebSocketConstructor() {
3
+ const ctor = globalThis.WebSocket;
4
+ if (!ctor) {
5
+ throw new Error("WebSocket is not available in this runtime");
6
+ }
7
+ return ctor;
8
+ }
9
+ function resolveAuthStrategy(token) {
10
+ return token ? { kind: "query_token", token } : { kind: "none" };
11
+ }
12
+ export class WebSocketSink {
13
+ url;
14
+ events;
15
+ authToken;
16
+ socket = null;
17
+ connectPromise = null;
18
+ enabled = true;
19
+ textSequence = 0;
20
+ constructor(url, events, authToken) {
21
+ this.url = url;
22
+ this.events = events;
23
+ this.authToken = authToken;
24
+ }
25
+ async send(event) {
26
+ const envelope = this.toEnvelope(event);
27
+ if (!envelope || !this.enabled) {
28
+ return;
29
+ }
30
+ try {
31
+ await this.ensureConnected();
32
+ const WebSocketCtor = getWebSocketConstructor();
33
+ if (!this.socket || this.socket.readyState !== WebSocketCtor.OPEN) {
34
+ return;
35
+ }
36
+ this.socket.send(JSON.stringify(envelope));
37
+ }
38
+ catch {
39
+ this.enabled = false;
40
+ }
41
+ }
42
+ async close() {
43
+ this.enabled = false;
44
+ const socket = this.socket;
45
+ this.socket = null;
46
+ this.connectPromise = null;
47
+ if (!socket) {
48
+ return;
49
+ }
50
+ const WebSocketCtor = getWebSocketConstructor();
51
+ if (socket.readyState === WebSocketCtor.CLOSED) {
52
+ return;
53
+ }
54
+ await new Promise((resolve) => {
55
+ socket.once("close", () => resolve());
56
+ socket.close();
57
+ });
58
+ }
59
+ async ensureConnected() {
60
+ if (!this.enabled) {
61
+ return;
62
+ }
63
+ const WebSocketCtor = getWebSocketConstructor();
64
+ if (this.socket && this.socket.readyState === WebSocketCtor.OPEN) {
65
+ return;
66
+ }
67
+ if (this.connectPromise) {
68
+ await this.connectPromise;
69
+ return;
70
+ }
71
+ const connectionUrl = buildWebSocketConnectionUrl(this.url, resolveAuthStrategy(this.authToken));
72
+ const socket = new WebSocketCtor(connectionUrl);
73
+ this.connectPromise = new Promise((resolve, reject) => {
74
+ socket.once("open", () => {
75
+ this.socket = socket;
76
+ socket.on("close", () => {
77
+ if (this.socket === socket) {
78
+ this.socket = null;
79
+ }
80
+ });
81
+ resolve();
82
+ });
83
+ socket.once("error", (err) => {
84
+ reject(err);
85
+ });
86
+ });
87
+ try {
88
+ await this.connectPromise;
89
+ }
90
+ finally {
91
+ this.connectPromise = null;
92
+ }
93
+ }
94
+ toEnvelope(event) {
95
+ const timestamp = new Date().toISOString();
96
+ switch (event.type) {
97
+ case "start":
98
+ if (!this.events.has("start"))
99
+ return null;
100
+ return { ...event, timestamp };
101
+ case "done":
102
+ if (!this.events.has("done"))
103
+ return null;
104
+ return { ...event, timestamp };
105
+ case "error":
106
+ if (!this.events.has("error"))
107
+ return null;
108
+ return { ...event, timestamp };
109
+ case "session_reset":
110
+ return null;
111
+ case "progress":
112
+ if (event.event.type === "text") {
113
+ if (!this.events.has("text"))
114
+ return null;
115
+ this.textSequence += 1;
116
+ return {
117
+ type: "text",
118
+ sessionId: event.sessionId,
119
+ messageId: event.messageId,
120
+ channel: event.channel,
121
+ timestamp,
122
+ sequence: this.textSequence,
123
+ delta: event.event.text,
124
+ };
125
+ }
126
+ if (!this.events.has("progress"))
127
+ return null;
128
+ return {
129
+ type: "progress",
130
+ sessionId: event.sessionId,
131
+ messageId: event.messageId,
132
+ channel: event.channel,
133
+ timestamp,
134
+ event: event.event,
135
+ };
136
+ default: {
137
+ const exhaustive = event;
138
+ throw new Error(`Unsupported stream event: ${JSON.stringify(exhaustive)}`);
139
+ }
140
+ }
141
+ }
142
+ }
143
+ //# sourceMappingURL=websocket-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-sink.js","sourceRoot":"","sources":["../../src/events/websocket-sink.ts"],"names":[],"mappings":"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"}
Binary file
package/dist/logger.d.ts CHANGED
@@ -7,10 +7,12 @@ export declare enum LogLevel {
7
7
  ERROR = "ERROR",
8
8
  WARN = "WARN"
9
9
  }
10
+ type LogContextValue = string | number | boolean | null | undefined;
11
+ type LogContext = Record<string, LogContextValue>;
10
12
  export declare const logger: {
11
- info: (message: string) => void;
12
- warn: (message: string) => void;
13
- error: (message: string) => void;
13
+ info: (message: string, context?: LogContext) => void;
14
+ warn: (message: string, context?: LogContext) => void;
15
+ error: (message: string, context?: LogContext) => void;
14
16
  };
15
17
  /**
16
18
  * A simple performance timer for measuring execution time.
@@ -24,4 +26,5 @@ export declare class PerfTimer {
24
26
  */
25
27
  end(): number;
26
28
  }
29
+ export {};
27
30
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAmBD,eAAO,MAAM,MAAM;oBACD,MAAM;oBACN,MAAM;qBACL,MAAM;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,MAAM;IAKxB;;OAEG;IACH,GAAG,IAAI,MAAM;CAKd"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AACpE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AA+BlD,eAAO,MAAM,MAAM;oBACD,MAAM,YAAY,UAAU;oBAC5B,MAAM,YAAY,UAAU;qBAC3B,MAAM,YAAY,UAAU;CAC9C,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,MAAM;IAKxB;;OAEG;IACH,GAAG,IAAI,MAAM;CAKd"}
package/dist/logger.js CHANGED
@@ -19,14 +19,23 @@ function formatTimestamp() {
19
19
  const ms = String(now.getMilliseconds()).padStart(3, "0");
20
20
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${ms}`;
21
21
  }
22
- function log(level, message) {
22
+ function formatContext(context) {
23
+ if (!context) {
24
+ return "";
25
+ }
26
+ const parts = Object.entries(context)
27
+ .filter(([, value]) => value !== undefined)
28
+ .map(([key, value]) => `${key}=${JSON.stringify(value)}`);
29
+ return parts.length > 0 ? ` ${parts.join(" ")}` : "";
30
+ }
31
+ function log(level, message, context) {
23
32
  const timestamp = formatTimestamp();
24
- process.stderr.write(`[${timestamp}] [${level}] ${message}\n`);
33
+ process.stderr.write(`[${timestamp}] [${level}] ${message}${formatContext(context)}\n`);
25
34
  }
26
35
  export const logger = {
27
- info: (message) => log(LogLevel.INFO, message),
28
- warn: (message) => log(LogLevel.WARN, message),
29
- error: (message) => log(LogLevel.ERROR, message),
36
+ info: (message, context) => log(LogLevel.INFO, message, context),
37
+ warn: (message, context) => log(LogLevel.WARN, message, context),
38
+ error: (message, context) => log(LogLevel.ERROR, message, context),
30
39
  };
31
40
  /**
32
41
  * A simple performance timer for measuring execution time.
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,yBAAa,CAAA;AACf,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,SAAS,eAAe;IACtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,GAAG,CAAC,KAAe,EAAE,OAAe;IAC3C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACtD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACtD,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzD,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,SAAS;IACZ,SAAS,CAAS;IAClB,IAAI,CAAS;IAErB,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,iBAAiB,OAAO,IAAI,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
package/dist/output.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Output formatting utilities for @gencode/cli.
3
3
  */
4
- import type { AgentRunResult, AgentProgressEvent, SessionSummary, BootstrapMountResult } from "@gencode/agents";
4
+ import type { AgentRunResult, SessionSummary, BootstrapMountResult } from "@gencode/agents";
5
+ import type { AgentProgressEvent } from "@gencode/shared";
5
6
  export type OutputFormat = "text" | "json";
6
7
  /** Writes a string to stdout without a trailing newline */
7
8
  export declare function write(text: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,2DAA2D;AAC3D,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExC;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,8BAA8B;AAC9B,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAiClE;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAYjF;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAavF;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAY7F"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,2DAA2D;AAC3D,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExC;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,8BAA8B;AAC9B,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAuClE;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAYjF;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAavF;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAY7F"}
package/dist/output.js CHANGED
@@ -16,12 +16,18 @@ export function writeError(text) {
16
16
  /** Formats and prints a progress event during streaming execution */
17
17
  export function printProgressEvent(event) {
18
18
  switch (event.type) {
19
+ case "start":
20
+ writeLine(`\n[start] ${event.message}`);
21
+ break;
19
22
  case "text":
20
23
  write(event.text);
21
24
  break;
22
25
  case "bootstrap":
23
26
  writeLine(`\n[bootstrap:${event.phase}] ${event.dataDir}`);
24
27
  break;
28
+ case "session_reset":
29
+ writeLine(`\n[session:${event.action}] ${event.message}`);
30
+ break;
25
31
  case "tool_start":
26
32
  writeLine(`\n[tool:${event.name}] ${JSON.stringify(event.input)}`);
27
33
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}