@a5c-ai/adapters-gateway 5.1.1-staging.00ceebd28cf2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/auth/bootstrap.d.ts +89 -0
- package/dist/auth/bootstrap.d.ts.map +1 -0
- package/dist/auth/bootstrap.js +222 -0
- package/dist/auth/bootstrap.js.map +1 -0
- package/dist/auth/hashing.d.ts +4 -0
- package/dist/auth/hashing.d.ts.map +1 -0
- package/dist/auth/hashing.js +27 -0
- package/dist/auth/hashing.js.map +1 -0
- package/dist/auth/middleware.d.ts +3 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +17 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/tokens.d.ts +45 -0
- package/dist/auth/tokens.d.ts.map +1 -0
- package/dist/auth/tokens.js +186 -0
- package/dist/auth/tokens.js.map +1 -0
- package/dist/builtin-adapters.d.ts +17 -0
- package/dist/builtin-adapters.d.ts.map +1 -0
- package/dist/builtin-adapters.js +119 -0
- package/dist/builtin-adapters.js.map +1 -0
- package/dist/config.d.ts +37 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +97 -0
- package/dist/config.js.map +1 -0
- package/dist/fanout/client-conn.d.ts +20 -0
- package/dist/fanout/client-conn.d.ts.map +1 -0
- package/dist/fanout/client-conn.js +53 -0
- package/dist/fanout/client-conn.js.map +1 -0
- package/dist/fanout/subscriber.d.ts +12 -0
- package/dist/fanout/subscriber.d.ts.map +1 -0
- package/dist/fanout/subscriber.js +40 -0
- package/dist/fanout/subscriber.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/kanban/lib/config-loader.d.ts +29 -0
- package/dist/kanban/lib/config-loader.d.ts.map +1 -0
- package/dist/kanban/lib/config-loader.js +166 -0
- package/dist/kanban/lib/config-loader.js.map +1 -0
- package/dist/kanban/lib/config.d.ts +3 -0
- package/dist/kanban/lib/config.d.ts.map +1 -0
- package/dist/kanban/lib/config.js +6 -0
- package/dist/kanban/lib/config.js.map +1 -0
- package/dist/kanban/lib/create-global-registry.d.ts +28 -0
- package/dist/kanban/lib/create-global-registry.d.ts.map +1 -0
- package/dist/kanban/lib/create-global-registry.js +53 -0
- package/dist/kanban/lib/create-global-registry.js.map +1 -0
- package/dist/kanban/lib/dispatch-context-audit.d.ts +12 -0
- package/dist/kanban/lib/dispatch-context-audit.d.ts.map +1 -0
- package/dist/kanban/lib/dispatch-context-audit.js +44 -0
- package/dist/kanban/lib/dispatch-context-audit.js.map +1 -0
- package/dist/kanban/lib/error-handler.d.ts +28 -0
- package/dist/kanban/lib/error-handler.d.ts.map +1 -0
- package/dist/kanban/lib/error-handler.js +61 -0
- package/dist/kanban/lib/error-handler.js.map +1 -0
- package/dist/kanban/lib/global-registry.d.ts +49 -0
- package/dist/kanban/lib/global-registry.d.ts.map +1 -0
- package/dist/kanban/lib/global-registry.js +18 -0
- package/dist/kanban/lib/global-registry.js.map +1 -0
- package/dist/kanban/lib/parser.d.ts +36 -0
- package/dist/kanban/lib/parser.d.ts.map +1 -0
- package/dist/kanban/lib/parser.js +585 -0
- package/dist/kanban/lib/parser.js.map +1 -0
- package/dist/kanban/lib/path-resolver.d.ts +2 -0
- package/dist/kanban/lib/path-resolver.d.ts.map +1 -0
- package/dist/kanban/lib/path-resolver.js +16 -0
- package/dist/kanban/lib/path-resolver.js.map +1 -0
- package/dist/kanban/lib/review-service.d.ts +63 -0
- package/dist/kanban/lib/review-service.d.ts.map +1 -0
- package/dist/kanban/lib/review-service.js +571 -0
- package/dist/kanban/lib/review-service.js.map +1 -0
- package/dist/kanban/lib/run-cache.d.ts +36 -0
- package/dist/kanban/lib/run-cache.d.ts.map +1 -0
- package/dist/kanban/lib/run-cache.js +313 -0
- package/dist/kanban/lib/run-cache.js.map +1 -0
- package/dist/kanban/lib/server-init.d.ts +26 -0
- package/dist/kanban/lib/server-init.d.ts.map +1 -0
- package/dist/kanban/lib/server-init.js +179 -0
- package/dist/kanban/lib/server-init.js.map +1 -0
- package/dist/kanban/lib/services/automation-rule-service.d.ts +97 -0
- package/dist/kanban/lib/services/automation-rule-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/automation-rule-service.js +806 -0
- package/dist/kanban/lib/services/automation-rule-service.js.map +1 -0
- package/dist/kanban/lib/services/automation-webhook-service.d.ts +44 -0
- package/dist/kanban/lib/services/automation-webhook-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/automation-webhook-service.js +405 -0
- package/dist/kanban/lib/services/automation-webhook-service.js.map +1 -0
- package/dist/kanban/lib/services/backlog-query-service.d.ts +130 -0
- package/dist/kanban/lib/services/backlog-query-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/backlog-query-service.js +1972 -0
- package/dist/kanban/lib/services/backlog-query-service.js.map +1 -0
- package/dist/kanban/lib/services/dispatch-context-label-service.d.ts +39 -0
- package/dist/kanban/lib/services/dispatch-context-label-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/dispatch-context-label-service.js +160 -0
- package/dist/kanban/lib/services/dispatch-context-label-service.js.map +1 -0
- package/dist/kanban/lib/services/kanban-storage.d.ts +36 -0
- package/dist/kanban/lib/services/kanban-storage.d.ts.map +1 -0
- package/dist/kanban/lib/services/kanban-storage.js +26 -0
- package/dist/kanban/lib/services/kanban-storage.js.map +1 -0
- package/dist/kanban/lib/services/run-query-service.d.ts +79 -0
- package/dist/kanban/lib/services/run-query-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/run-query-service.js +202 -0
- package/dist/kanban/lib/services/run-query-service.js.map +1 -0
- package/dist/kanban/lib/services/task-tag-service.d.ts +39 -0
- package/dist/kanban/lib/services/task-tag-service.d.ts.map +1 -0
- package/dist/kanban/lib/services/task-tag-service.js +145 -0
- package/dist/kanban/lib/services/task-tag-service.js.map +1 -0
- package/dist/kanban/lib/settings-section-storage.d.ts +13 -0
- package/dist/kanban/lib/settings-section-storage.d.ts.map +1 -0
- package/dist/kanban/lib/settings-section-storage.js +38 -0
- package/dist/kanban/lib/settings-section-storage.js.map +1 -0
- package/dist/kanban/lib/source-discovery.d.ts +10 -0
- package/dist/kanban/lib/source-discovery.d.ts.map +1 -0
- package/dist/kanban/lib/source-discovery.js +201 -0
- package/dist/kanban/lib/source-discovery.js.map +1 -0
- package/dist/kanban/lib/utils.d.ts +8 -0
- package/dist/kanban/lib/utils.d.ts.map +1 -0
- package/dist/kanban/lib/utils.js +116 -0
- package/dist/kanban/lib/utils.js.map +1 -0
- package/dist/kanban/lib/watcher.d.ts +14 -0
- package/dist/kanban/lib/watcher.d.ts.map +1 -0
- package/dist/kanban/lib/watcher.js +221 -0
- package/dist/kanban/lib/watcher.js.map +1 -0
- package/dist/kanban/lib/workspace-lifecycle.d.ts +68 -0
- package/dist/kanban/lib/workspace-lifecycle.d.ts.map +1 -0
- package/dist/kanban/lib/workspace-lifecycle.js +1085 -0
- package/dist/kanban/lib/workspace-lifecycle.js.map +1 -0
- package/dist/kanban/routes.d.ts +2 -0
- package/dist/kanban/routes.d.ts.map +1 -0
- package/dist/kanban/routes.js +1358 -0
- package/dist/kanban/routes.js.map +1 -0
- package/dist/kanban/types/breakpoint.d.ts +13 -0
- package/dist/kanban/types/breakpoint.d.ts.map +1 -0
- package/dist/kanban/types/breakpoint.js +3 -0
- package/dist/kanban/types/breakpoint.js.map +1 -0
- package/dist/kanban/types/index.d.ts +173 -0
- package/dist/kanban/types/index.d.ts.map +1 -0
- package/dist/kanban/types/index.js +3 -0
- package/dist/kanban/types/index.js.map +1 -0
- package/dist/logging.d.ts +7 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +22 -0
- package/dist/logging.js.map +1 -0
- package/dist/notifications/types.d.ts +18 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/notifications/webhook-out.d.ts +3 -0
- package/dist/notifications/webhook-out.d.ts.map +1 -0
- package/dist/notifications/webhook-out.js +55 -0
- package/dist/notifications/webhook-out.js.map +1 -0
- package/dist/pairing/short-code.d.ts +20 -0
- package/dist/pairing/short-code.d.ts.map +1 -0
- package/dist/pairing/short-code.js +50 -0
- package/dist/pairing/short-code.js.map +1 -0
- package/dist/protocol/errors.d.ts +10 -0
- package/dist/protocol/errors.d.ts.map +1 -0
- package/dist/protocol/errors.js +15 -0
- package/dist/protocol/errors.js.map +1 -0
- package/dist/protocol/frames.d.ts +107 -0
- package/dist/protocol/frames.d.ts.map +1 -0
- package/dist/protocol/frames.js +146 -0
- package/dist/protocol/frames.js.map +1 -0
- package/dist/protocol/v1.d.ts +111 -0
- package/dist/protocol/v1.d.ts.map +1 -0
- package/dist/protocol/v1.js +2 -0
- package/dist/protocol/v1.js.map +1 -0
- package/dist/runs/event-log-index.d.ts +29 -0
- package/dist/runs/event-log-index.d.ts.map +1 -0
- package/dist/runs/event-log-index.js +210 -0
- package/dist/runs/event-log-index.js.map +1 -0
- package/dist/runs/event-log.d.ts +25 -0
- package/dist/runs/event-log.d.ts.map +1 -0
- package/dist/runs/event-log.js +104 -0
- package/dist/runs/event-log.js.map +1 -0
- package/dist/runs/hook-broker.d.ts +18 -0
- package/dist/runs/hook-broker.d.ts.map +1 -0
- package/dist/runs/hook-broker.js +110 -0
- package/dist/runs/hook-broker.js.map +1 -0
- package/dist/runs/manager.d.ts +57 -0
- package/dist/runs/manager.d.ts.map +1 -0
- package/dist/runs/manager.js +753 -0
- package/dist/runs/manager.js.map +1 -0
- package/dist/runs/session-runtime.d.ts +8 -0
- package/dist/runs/session-runtime.d.ts.map +1 -0
- package/dist/runs/session-runtime.js +291 -0
- package/dist/runs/session-runtime.js.map +1 -0
- package/dist/runs/types.d.ts +55 -0
- package/dist/runs/types.d.ts.map +1 -0
- package/dist/runs/types.js +2 -0
- package/dist/runs/types.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +702 -0
- package/dist/server.js.map +1 -0
- package/dist/static/webui-server.d.ts +2 -0
- package/dist/static/webui-server.d.ts.map +1 -0
- package/dist/static/webui-server.js +97 -0
- package/dist/static/webui-server.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { GatewayFrame } from './v1.js';
|
|
3
|
+
export declare const gatewayFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
|
+
type: z.ZodLiteral<"auth">;
|
|
5
|
+
token: z.ZodString;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
type: z.ZodLiteral<"hello">;
|
|
8
|
+
protocolVersions: z.ZodArray<z.ZodLiteral<"1">>;
|
|
9
|
+
serverVersion: z.ZodString;
|
|
10
|
+
serverTime: z.ZodString;
|
|
11
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"error">;
|
|
13
|
+
code: z.ZodString;
|
|
14
|
+
message: z.ZodString;
|
|
15
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
tailSeq: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
18
|
+
type: z.ZodLiteral<"subscribe">;
|
|
19
|
+
runId: z.ZodString;
|
|
20
|
+
sinceSeq: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
22
|
+
type: z.ZodLiteral<"unsubscribe">;
|
|
23
|
+
runId: z.ZodString;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
type: z.ZodLiteral<"session.subscribe">;
|
|
26
|
+
sessionId: z.ZodString;
|
|
27
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
28
|
+
type: z.ZodLiteral<"session.unsubscribe">;
|
|
29
|
+
sessionId: z.ZodString;
|
|
30
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
31
|
+
type: z.ZodLiteral<"session.start">;
|
|
32
|
+
agent: z.ZodString;
|
|
33
|
+
prompt: z.ZodString;
|
|
34
|
+
model: z.ZodOptional<z.ZodString>;
|
|
35
|
+
attachments: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
36
|
+
approvalMode: z.ZodOptional<z.ZodEnum<{
|
|
37
|
+
yolo: "yolo";
|
|
38
|
+
prompt: "prompt";
|
|
39
|
+
deny: "deny";
|
|
40
|
+
}>>;
|
|
41
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
42
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
43
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
44
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
45
|
+
forkSessionId: z.ZodOptional<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
47
|
+
type: z.ZodLiteral<"session.message">;
|
|
48
|
+
sessionId: z.ZodString;
|
|
49
|
+
prompt: z.ZodString;
|
|
50
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
51
|
+
model: z.ZodOptional<z.ZodString>;
|
|
52
|
+
attachments: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
53
|
+
approvalMode: z.ZodOptional<z.ZodEnum<{
|
|
54
|
+
yolo: "yolo";
|
|
55
|
+
prompt: "prompt";
|
|
56
|
+
deny: "deny";
|
|
57
|
+
}>>;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
type: z.ZodLiteral<"ping">;
|
|
60
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
61
|
+
type: z.ZodLiteral<"pong">;
|
|
62
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
63
|
+
type: z.ZodLiteral<"run.event">;
|
|
64
|
+
runId: z.ZodString;
|
|
65
|
+
seq: z.ZodNumber;
|
|
66
|
+
source: z.ZodString;
|
|
67
|
+
event: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
68
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
69
|
+
type: z.ZodLiteral<"hook.request">;
|
|
70
|
+
hookRequestId: z.ZodString;
|
|
71
|
+
runId: z.ZodString;
|
|
72
|
+
hookKind: z.ZodString;
|
|
73
|
+
payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
74
|
+
deadlineTs: z.ZodNumber;
|
|
75
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
76
|
+
type: z.ZodLiteral<"hook.decision">;
|
|
77
|
+
hookRequestId: z.ZodString;
|
|
78
|
+
decision: z.ZodEnum<{
|
|
79
|
+
deny: "deny";
|
|
80
|
+
allow: "allow";
|
|
81
|
+
}>;
|
|
82
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
83
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
84
|
+
type: z.ZodLiteral<"hook.resolved">;
|
|
85
|
+
hookRequestId: z.ZodString;
|
|
86
|
+
resolvedBy: z.ZodString;
|
|
87
|
+
decision: z.ZodEnum<{
|
|
88
|
+
deny: "deny";
|
|
89
|
+
allow: "allow";
|
|
90
|
+
}>;
|
|
91
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
92
|
+
type: z.ZodLiteral<"pairing.register">;
|
|
93
|
+
code: z.ZodString;
|
|
94
|
+
url: z.ZodString;
|
|
95
|
+
token: z.ZodString;
|
|
96
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
97
|
+
type: z.ZodLiteral<"pairing.consume">;
|
|
98
|
+
code: z.ZodString;
|
|
99
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
100
|
+
type: z.ZodLiteral<"pairing.consumed">;
|
|
101
|
+
code: z.ZodString;
|
|
102
|
+
url: z.ZodString;
|
|
103
|
+
token: z.ZodString;
|
|
104
|
+
expiresAt: z.ZodNumber;
|
|
105
|
+
}, z.core.$strip>], "type">;
|
|
106
|
+
export declare function encodeFrame(frame: GatewayFrame): string;
|
|
107
|
+
export declare function decodeFrame(input: string): GatewayFrame;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/protocol/frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+H5C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmB7B,CAAC;AAEH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAgBvD"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { GATEWAY_CLOSE_CODES, GatewayProtocolError } from './errors.js';
|
|
3
|
+
const authFrameSchema = z.object({
|
|
4
|
+
type: z.literal('auth'),
|
|
5
|
+
token: z.string().min(1),
|
|
6
|
+
});
|
|
7
|
+
const helloFrameSchema = z.object({
|
|
8
|
+
type: z.literal('hello'),
|
|
9
|
+
protocolVersions: z.array(z.literal('1')).min(1),
|
|
10
|
+
serverVersion: z.string().min(1),
|
|
11
|
+
serverTime: z.string().min(1),
|
|
12
|
+
});
|
|
13
|
+
const errorFrameSchema = z.object({
|
|
14
|
+
type: z.literal('error'),
|
|
15
|
+
code: z.string().min(1),
|
|
16
|
+
message: z.string().min(1),
|
|
17
|
+
runId: z.string().optional(),
|
|
18
|
+
tailSeq: z.number().int().nonnegative().optional(),
|
|
19
|
+
});
|
|
20
|
+
const subscribeFrameSchema = z.object({
|
|
21
|
+
type: z.literal('subscribe'),
|
|
22
|
+
runId: z.string().min(1),
|
|
23
|
+
sinceSeq: z.number().int().nonnegative().optional(),
|
|
24
|
+
});
|
|
25
|
+
const unsubscribeFrameSchema = z.object({
|
|
26
|
+
type: z.literal('unsubscribe'),
|
|
27
|
+
runId: z.string().min(1),
|
|
28
|
+
});
|
|
29
|
+
const sessionSubscribeFrameSchema = z.object({
|
|
30
|
+
type: z.literal('session.subscribe'),
|
|
31
|
+
sessionId: z.string().min(1),
|
|
32
|
+
});
|
|
33
|
+
const sessionUnsubscribeFrameSchema = z.object({
|
|
34
|
+
type: z.literal('session.unsubscribe'),
|
|
35
|
+
sessionId: z.string().min(1),
|
|
36
|
+
});
|
|
37
|
+
const sessionStartFrameSchema = z.object({
|
|
38
|
+
type: z.literal('session.start'),
|
|
39
|
+
agent: z.string().min(1),
|
|
40
|
+
prompt: z.string(),
|
|
41
|
+
model: z.string().optional(),
|
|
42
|
+
attachments: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
43
|
+
approvalMode: z.enum(['yolo', 'prompt', 'deny']).optional(),
|
|
44
|
+
sessionId: z.string().optional(),
|
|
45
|
+
runId: z.string().optional(),
|
|
46
|
+
cwd: z.string().optional(),
|
|
47
|
+
workspaceId: z.string().optional(),
|
|
48
|
+
forkSessionId: z.string().optional(),
|
|
49
|
+
});
|
|
50
|
+
const sessionMessageFrameSchema = z.object({
|
|
51
|
+
type: z.literal('session.message'),
|
|
52
|
+
sessionId: z.string().min(1),
|
|
53
|
+
prompt: z.string(),
|
|
54
|
+
agent: z.string().optional(),
|
|
55
|
+
model: z.string().optional(),
|
|
56
|
+
attachments: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
57
|
+
approvalMode: z.enum(['yolo', 'prompt', 'deny']).optional(),
|
|
58
|
+
});
|
|
59
|
+
const pingFrameSchema = z.object({
|
|
60
|
+
type: z.literal('ping'),
|
|
61
|
+
});
|
|
62
|
+
const pongFrameSchema = z.object({
|
|
63
|
+
type: z.literal('pong'),
|
|
64
|
+
});
|
|
65
|
+
const runEventFrameSchema = z.object({
|
|
66
|
+
type: z.literal('run.event'),
|
|
67
|
+
runId: z.string().min(1),
|
|
68
|
+
seq: z.number().int().nonnegative(),
|
|
69
|
+
source: z.string().min(1),
|
|
70
|
+
event: z.record(z.string(), z.unknown()),
|
|
71
|
+
});
|
|
72
|
+
const hookRequestFrameSchema = z.object({
|
|
73
|
+
type: z.literal('hook.request'),
|
|
74
|
+
hookRequestId: z.string().min(1),
|
|
75
|
+
runId: z.string().min(1),
|
|
76
|
+
hookKind: z.string().min(1),
|
|
77
|
+
payload: z.record(z.string(), z.unknown()),
|
|
78
|
+
deadlineTs: z.number().int(),
|
|
79
|
+
});
|
|
80
|
+
const hookDecisionFrameSchema = z.object({
|
|
81
|
+
type: z.literal('hook.decision'),
|
|
82
|
+
hookRequestId: z.string().min(1),
|
|
83
|
+
decision: z.enum(['allow', 'deny']),
|
|
84
|
+
reason: z.string().optional(),
|
|
85
|
+
});
|
|
86
|
+
const hookResolvedFrameSchema = z.object({
|
|
87
|
+
type: z.literal('hook.resolved'),
|
|
88
|
+
hookRequestId: z.string().min(1),
|
|
89
|
+
resolvedBy: z.string().min(1),
|
|
90
|
+
decision: z.enum(['allow', 'deny']),
|
|
91
|
+
});
|
|
92
|
+
const pairingRegisterFrameSchema = z.object({
|
|
93
|
+
type: z.literal('pairing.register'),
|
|
94
|
+
code: z.string().min(1),
|
|
95
|
+
url: z.string().min(1),
|
|
96
|
+
token: z.string().min(1),
|
|
97
|
+
});
|
|
98
|
+
const pairingConsumeFrameSchema = z.object({
|
|
99
|
+
type: z.literal('pairing.consume'),
|
|
100
|
+
code: z.string().min(1),
|
|
101
|
+
});
|
|
102
|
+
const pairingConsumedFrameSchema = z.object({
|
|
103
|
+
type: z.literal('pairing.consumed'),
|
|
104
|
+
code: z.string().min(1),
|
|
105
|
+
url: z.string().min(1),
|
|
106
|
+
token: z.string().min(1),
|
|
107
|
+
expiresAt: z.number().int().positive(),
|
|
108
|
+
});
|
|
109
|
+
export const gatewayFrameSchema = z.discriminatedUnion('type', [
|
|
110
|
+
authFrameSchema,
|
|
111
|
+
helloFrameSchema,
|
|
112
|
+
errorFrameSchema,
|
|
113
|
+
subscribeFrameSchema,
|
|
114
|
+
unsubscribeFrameSchema,
|
|
115
|
+
sessionSubscribeFrameSchema,
|
|
116
|
+
sessionUnsubscribeFrameSchema,
|
|
117
|
+
sessionStartFrameSchema,
|
|
118
|
+
sessionMessageFrameSchema,
|
|
119
|
+
pingFrameSchema,
|
|
120
|
+
pongFrameSchema,
|
|
121
|
+
runEventFrameSchema,
|
|
122
|
+
hookRequestFrameSchema,
|
|
123
|
+
hookDecisionFrameSchema,
|
|
124
|
+
hookResolvedFrameSchema,
|
|
125
|
+
pairingRegisterFrameSchema,
|
|
126
|
+
pairingConsumeFrameSchema,
|
|
127
|
+
pairingConsumedFrameSchema,
|
|
128
|
+
]);
|
|
129
|
+
export function encodeFrame(frame) {
|
|
130
|
+
return JSON.stringify(gatewayFrameSchema.parse(frame));
|
|
131
|
+
}
|
|
132
|
+
export function decodeFrame(input) {
|
|
133
|
+
let parsed;
|
|
134
|
+
try {
|
|
135
|
+
parsed = JSON.parse(input);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
throw new GatewayProtocolError(error instanceof Error ? error.message : 'Invalid JSON frame', GATEWAY_CLOSE_CODES.invalidFrame);
|
|
139
|
+
}
|
|
140
|
+
const result = gatewayFrameSchema.safeParse(parsed);
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
throw new GatewayProtocolError(result.error.message, GATEWAY_CLOSE_CODES.invalidFrame);
|
|
143
|
+
}
|
|
144
|
+
return result.data;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=frames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/protocol/frames.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Attachment } from '@a5c-ai/comm-adapter';
|
|
2
|
+
export type ProtocolVersion = '1';
|
|
3
|
+
export interface AuthFrame {
|
|
4
|
+
type: 'auth';
|
|
5
|
+
token: string;
|
|
6
|
+
}
|
|
7
|
+
export interface HelloFrame {
|
|
8
|
+
type: 'hello';
|
|
9
|
+
protocolVersions: ProtocolVersion[];
|
|
10
|
+
serverVersion: string;
|
|
11
|
+
serverTime: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ErrorFrame {
|
|
14
|
+
type: 'error';
|
|
15
|
+
code: string;
|
|
16
|
+
message: string;
|
|
17
|
+
runId?: string;
|
|
18
|
+
tailSeq?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SubscribeFrame {
|
|
21
|
+
type: 'subscribe';
|
|
22
|
+
runId: string;
|
|
23
|
+
sinceSeq?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface UnsubscribeFrame {
|
|
26
|
+
type: 'unsubscribe';
|
|
27
|
+
runId: string;
|
|
28
|
+
}
|
|
29
|
+
export interface SessionSubscribeFrame {
|
|
30
|
+
type: 'session.subscribe';
|
|
31
|
+
sessionId: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SessionUnsubscribeFrame {
|
|
34
|
+
type: 'session.unsubscribe';
|
|
35
|
+
sessionId: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SessionStartFrame {
|
|
38
|
+
type: 'session.start';
|
|
39
|
+
agent: string;
|
|
40
|
+
prompt: string;
|
|
41
|
+
model?: string;
|
|
42
|
+
attachments?: Attachment[];
|
|
43
|
+
approvalMode?: 'yolo' | 'prompt' | 'deny';
|
|
44
|
+
sessionId?: string;
|
|
45
|
+
runId?: string;
|
|
46
|
+
cwd?: string;
|
|
47
|
+
workspaceId?: string;
|
|
48
|
+
forkSessionId?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface SessionMessageFrame {
|
|
51
|
+
type: 'session.message';
|
|
52
|
+
sessionId: string;
|
|
53
|
+
prompt: string;
|
|
54
|
+
agent?: string;
|
|
55
|
+
model?: string;
|
|
56
|
+
attachments?: Attachment[];
|
|
57
|
+
approvalMode?: 'yolo' | 'prompt' | 'deny';
|
|
58
|
+
}
|
|
59
|
+
export interface PingFrame {
|
|
60
|
+
type: 'ping';
|
|
61
|
+
}
|
|
62
|
+
export interface PongFrame {
|
|
63
|
+
type: 'pong';
|
|
64
|
+
}
|
|
65
|
+
export interface RunEventFrame {
|
|
66
|
+
type: 'run.event';
|
|
67
|
+
runId: string;
|
|
68
|
+
seq: number;
|
|
69
|
+
source: string;
|
|
70
|
+
event: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
export interface HookRequestFrame {
|
|
73
|
+
type: 'hook.request';
|
|
74
|
+
hookRequestId: string;
|
|
75
|
+
runId: string;
|
|
76
|
+
hookKind: string;
|
|
77
|
+
payload: Record<string, unknown>;
|
|
78
|
+
deadlineTs: number;
|
|
79
|
+
}
|
|
80
|
+
export interface HookDecisionFrame {
|
|
81
|
+
type: 'hook.decision';
|
|
82
|
+
hookRequestId: string;
|
|
83
|
+
decision: 'allow' | 'deny';
|
|
84
|
+
reason?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface HookResolvedFrame {
|
|
87
|
+
type: 'hook.resolved';
|
|
88
|
+
hookRequestId: string;
|
|
89
|
+
resolvedBy: string;
|
|
90
|
+
decision: 'allow' | 'deny';
|
|
91
|
+
}
|
|
92
|
+
export interface PairingRegisterFrame {
|
|
93
|
+
type: 'pairing.register';
|
|
94
|
+
code: string;
|
|
95
|
+
url: string;
|
|
96
|
+
token: string;
|
|
97
|
+
}
|
|
98
|
+
export interface PairingConsumeFrame {
|
|
99
|
+
type: 'pairing.consume';
|
|
100
|
+
code: string;
|
|
101
|
+
}
|
|
102
|
+
export interface PairingConsumedFrame {
|
|
103
|
+
type: 'pairing.consumed';
|
|
104
|
+
code: string;
|
|
105
|
+
url: string;
|
|
106
|
+
token: string;
|
|
107
|
+
expiresAt: number;
|
|
108
|
+
}
|
|
109
|
+
export type ClientFrame = AuthFrame | SubscribeFrame | UnsubscribeFrame | SessionSubscribeFrame | SessionUnsubscribeFrame | SessionStartFrame | SessionMessageFrame | PingFrame | HookDecisionFrame | PairingRegisterFrame | PairingConsumeFrame;
|
|
110
|
+
export type ServerFrame = HelloFrame | ErrorFrame | PongFrame | RunEventFrame | HookRequestFrame | HookResolvedFrame | PairingConsumedFrame;
|
|
111
|
+
export type GatewayFrame = ClientFrame | ServerFrame;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../src/protocol/v1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v1.js","sourceRoot":"","sources":["../../src/protocol/v1.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RunEntry } from './types.js';
|
|
2
|
+
export interface IndexedRunEvent {
|
|
3
|
+
seq: number;
|
|
4
|
+
ts: number;
|
|
5
|
+
source: string;
|
|
6
|
+
eventType: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RunSeqState {
|
|
9
|
+
headSeq: number;
|
|
10
|
+
tailSeq: number;
|
|
11
|
+
eventCount: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class EventLogIndex {
|
|
14
|
+
private readonly eventLogDir;
|
|
15
|
+
private readonly db;
|
|
16
|
+
constructor(eventLogDir: string);
|
|
17
|
+
upsertRun(entry: RunEntry): void;
|
|
18
|
+
appendEvent(runId: string, event: IndexedRunEvent): void;
|
|
19
|
+
removeEvents(runId: string, droppedSeqs: readonly number[]): void;
|
|
20
|
+
getSeqState(runId: string): RunSeqState;
|
|
21
|
+
nextSeq(runId: string): number;
|
|
22
|
+
getRun(runId: string): RunEntry | null;
|
|
23
|
+
listRuns(): RunEntry[];
|
|
24
|
+
close(): void;
|
|
25
|
+
indexedEventFor(seq: number, ts: number, source: string, event: Record<string, unknown>): IndexedRunEvent;
|
|
26
|
+
private minSeq;
|
|
27
|
+
private rowToRunEntry;
|
|
28
|
+
private ensureRunsColumn;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-log-index.d.ts","sourceRoot":"","sources":["../../src/runs/event-log-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFxC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAM;gBAEI,WAAW,EAAE,MAAM;IA0ChD,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IA8ChC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IAoBxD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IA2BjE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAkBvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAStC,QAAQ,IAAI,QAAQ,EAAE;IAStB,KAAK,IAAI,IAAI;IAIb,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IASzG,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const { DatabaseSync } = require('node:sqlite');
|
|
6
|
+
function ensureParentDir(filePath) {
|
|
7
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
8
|
+
}
|
|
9
|
+
function eventTypeOf(event) {
|
|
10
|
+
return typeof event['type'] === 'string' ? event['type'] : 'unknown';
|
|
11
|
+
}
|
|
12
|
+
export class EventLogIndex {
|
|
13
|
+
eventLogDir;
|
|
14
|
+
db;
|
|
15
|
+
constructor(eventLogDir) {
|
|
16
|
+
this.eventLogDir = eventLogDir;
|
|
17
|
+
const dbPath = path.join(eventLogDir, 'index.db');
|
|
18
|
+
ensureParentDir(dbPath);
|
|
19
|
+
this.db = new DatabaseSync(dbPath);
|
|
20
|
+
this.db.exec(`
|
|
21
|
+
CREATE TABLE IF NOT EXISTS runs (
|
|
22
|
+
run_id TEXT PRIMARY KEY,
|
|
23
|
+
agent TEXT NOT NULL,
|
|
24
|
+
model TEXT,
|
|
25
|
+
cwd TEXT,
|
|
26
|
+
status TEXT NOT NULL,
|
|
27
|
+
created_at INTEGER NOT NULL,
|
|
28
|
+
started_at INTEGER NOT NULL,
|
|
29
|
+
ended_at INTEGER,
|
|
30
|
+
session_id TEXT,
|
|
31
|
+
workspace_id TEXT,
|
|
32
|
+
exit_reason TEXT,
|
|
33
|
+
error_code TEXT,
|
|
34
|
+
error_message TEXT,
|
|
35
|
+
owner_token_id TEXT,
|
|
36
|
+
owner_name TEXT,
|
|
37
|
+
owner_remote_address TEXT,
|
|
38
|
+
head_seq INTEGER NOT NULL DEFAULT 1,
|
|
39
|
+
tail_seq INTEGER NOT NULL DEFAULT 0,
|
|
40
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
41
|
+
updated_at INTEGER NOT NULL
|
|
42
|
+
);
|
|
43
|
+
CREATE TABLE IF NOT EXISTS run_events (
|
|
44
|
+
run_id TEXT NOT NULL,
|
|
45
|
+
seq INTEGER NOT NULL,
|
|
46
|
+
ts INTEGER NOT NULL,
|
|
47
|
+
source TEXT NOT NULL,
|
|
48
|
+
event_type TEXT NOT NULL,
|
|
49
|
+
PRIMARY KEY (run_id, seq)
|
|
50
|
+
);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_runs_updated_at ON runs (updated_at DESC);
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_runs_status ON runs (status);
|
|
53
|
+
`);
|
|
54
|
+
this.ensureRunsColumn('cwd', 'TEXT');
|
|
55
|
+
this.ensureRunsColumn('workspace_id', 'TEXT');
|
|
56
|
+
}
|
|
57
|
+
upsertRun(entry) {
|
|
58
|
+
this.db.prepare(`
|
|
59
|
+
INSERT INTO runs (
|
|
60
|
+
run_id, agent, model, cwd, status, created_at, started_at, ended_at, session_id, workspace_id,
|
|
61
|
+
exit_reason, error_code, error_message, owner_token_id, owner_name,
|
|
62
|
+
owner_remote_address, updated_at
|
|
63
|
+
)
|
|
64
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
65
|
+
ON CONFLICT(run_id) DO UPDATE SET
|
|
66
|
+
agent = excluded.agent,
|
|
67
|
+
model = excluded.model,
|
|
68
|
+
cwd = excluded.cwd,
|
|
69
|
+
status = excluded.status,
|
|
70
|
+
created_at = excluded.created_at,
|
|
71
|
+
started_at = excluded.started_at,
|
|
72
|
+
ended_at = excluded.ended_at,
|
|
73
|
+
session_id = excluded.session_id,
|
|
74
|
+
workspace_id = excluded.workspace_id,
|
|
75
|
+
exit_reason = excluded.exit_reason,
|
|
76
|
+
error_code = excluded.error_code,
|
|
77
|
+
error_message = excluded.error_message,
|
|
78
|
+
owner_token_id = excluded.owner_token_id,
|
|
79
|
+
owner_name = excluded.owner_name,
|
|
80
|
+
owner_remote_address = excluded.owner_remote_address,
|
|
81
|
+
updated_at = excluded.updated_at
|
|
82
|
+
`).run(entry.runId, entry.agent, entry.model ?? null, entry.cwd ?? null, entry.status, entry.createdAt, entry.startedAt, entry.endedAt, entry.sessionId ?? null, entry.workspaceId ?? null, entry.exitReason ?? null, entry.error?.code ?? null, entry.error?.message ?? null, entry.owner.tokenId, entry.owner.name, entry.owner.remoteAddress ?? null, Date.now());
|
|
83
|
+
}
|
|
84
|
+
appendEvent(runId, event) {
|
|
85
|
+
this.db.prepare(`
|
|
86
|
+
INSERT INTO run_events (run_id, seq, ts, source, event_type)
|
|
87
|
+
VALUES (?, ?, ?, ?, ?)
|
|
88
|
+
`).run(runId, event.seq, event.ts, event.source, event.eventType);
|
|
89
|
+
this.db.prepare(`
|
|
90
|
+
UPDATE runs
|
|
91
|
+
SET
|
|
92
|
+
tail_seq = ?,
|
|
93
|
+
head_seq = CASE
|
|
94
|
+
WHEN event_count = 0 THEN ?
|
|
95
|
+
ELSE head_seq
|
|
96
|
+
END,
|
|
97
|
+
event_count = event_count + 1,
|
|
98
|
+
updated_at = ?
|
|
99
|
+
WHERE run_id = ?
|
|
100
|
+
`).run(event.seq, event.seq, Date.now(), runId);
|
|
101
|
+
}
|
|
102
|
+
removeEvents(runId, droppedSeqs) {
|
|
103
|
+
if (droppedSeqs.length === 0)
|
|
104
|
+
return;
|
|
105
|
+
this.db.prepare(`
|
|
106
|
+
DELETE FROM run_events
|
|
107
|
+
WHERE run_id = ?
|
|
108
|
+
AND seq IN (${droppedSeqs.map(() => '?').join(', ')})
|
|
109
|
+
`).run(runId, ...droppedSeqs);
|
|
110
|
+
const nextState = this.getSeqState(runId);
|
|
111
|
+
this.db.prepare(`
|
|
112
|
+
UPDATE runs
|
|
113
|
+
SET
|
|
114
|
+
head_seq = ?,
|
|
115
|
+
tail_seq = ?,
|
|
116
|
+
event_count = ?,
|
|
117
|
+
updated_at = ?
|
|
118
|
+
WHERE run_id = ?
|
|
119
|
+
`).run(nextState.tailSeq === 0 ? 1 : Number(this.minSeq(runId) ?? nextState.tailSeq), nextState.tailSeq, nextState.eventCount, Date.now(), runId);
|
|
120
|
+
}
|
|
121
|
+
getSeqState(runId) {
|
|
122
|
+
const row = this.db.prepare(`
|
|
123
|
+
SELECT head_seq, tail_seq, event_count
|
|
124
|
+
FROM runs
|
|
125
|
+
WHERE run_id = ?
|
|
126
|
+
`).get(runId);
|
|
127
|
+
if (!row) {
|
|
128
|
+
return { headSeq: 1, tailSeq: 0, eventCount: 0 };
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
headSeq: Number(row['head_seq'] ?? 1),
|
|
132
|
+
tailSeq: Number(row['tail_seq'] ?? 0),
|
|
133
|
+
eventCount: Number(row['event_count'] ?? 0),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
nextSeq(runId) {
|
|
137
|
+
return this.getSeqState(runId).tailSeq + 1;
|
|
138
|
+
}
|
|
139
|
+
getRun(runId) {
|
|
140
|
+
const row = this.db.prepare(`
|
|
141
|
+
SELECT *
|
|
142
|
+
FROM runs
|
|
143
|
+
WHERE run_id = ?
|
|
144
|
+
`).get(runId);
|
|
145
|
+
return row ? this.rowToRunEntry(row) : null;
|
|
146
|
+
}
|
|
147
|
+
listRuns() {
|
|
148
|
+
const rows = this.db.prepare(`
|
|
149
|
+
SELECT *
|
|
150
|
+
FROM runs
|
|
151
|
+
ORDER BY updated_at DESC, created_at DESC
|
|
152
|
+
`).all();
|
|
153
|
+
return rows.map((row) => this.rowToRunEntry(row));
|
|
154
|
+
}
|
|
155
|
+
close() {
|
|
156
|
+
this.db.close();
|
|
157
|
+
}
|
|
158
|
+
indexedEventFor(seq, ts, source, event) {
|
|
159
|
+
return {
|
|
160
|
+
seq,
|
|
161
|
+
ts,
|
|
162
|
+
source,
|
|
163
|
+
eventType: eventTypeOf(event),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
minSeq(runId) {
|
|
167
|
+
const row = this.db.prepare(`
|
|
168
|
+
SELECT MIN(seq) AS min_seq
|
|
169
|
+
FROM run_events
|
|
170
|
+
WHERE run_id = ?
|
|
171
|
+
`).get(runId);
|
|
172
|
+
if (!row || row['min_seq'] == null)
|
|
173
|
+
return null;
|
|
174
|
+
return Number(row['min_seq']);
|
|
175
|
+
}
|
|
176
|
+
rowToRunEntry(row) {
|
|
177
|
+
return {
|
|
178
|
+
runId: String(row['run_id']),
|
|
179
|
+
agent: String(row['agent']),
|
|
180
|
+
model: row['model'] == null ? undefined : String(row['model']),
|
|
181
|
+
cwd: row['cwd'] == null ? undefined : String(row['cwd']),
|
|
182
|
+
status: String(row['status']),
|
|
183
|
+
createdAt: Number(row['created_at']),
|
|
184
|
+
startedAt: Number(row['started_at']),
|
|
185
|
+
endedAt: row['ended_at'] == null ? null : Number(row['ended_at']),
|
|
186
|
+
sessionId: row['session_id'] == null ? undefined : String(row['session_id']),
|
|
187
|
+
workspaceId: row['workspace_id'] == null ? undefined : String(row['workspace_id']),
|
|
188
|
+
exitReason: row['exit_reason'] == null ? undefined : String(row['exit_reason']),
|
|
189
|
+
error: row['error_code'] == null
|
|
190
|
+
? null
|
|
191
|
+
: {
|
|
192
|
+
code: String(row['error_code']),
|
|
193
|
+
message: String(row['error_message'] ?? ''),
|
|
194
|
+
},
|
|
195
|
+
owner: {
|
|
196
|
+
tokenId: row['owner_token_id'] == null ? null : String(row['owner_token_id']),
|
|
197
|
+
name: row['owner_name'] == null ? null : String(row['owner_name']),
|
|
198
|
+
remoteAddress: row['owner_remote_address'] == null ? null : String(row['owner_remote_address']),
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
ensureRunsColumn(name, type) {
|
|
203
|
+
const columns = this.db.prepare(`PRAGMA table_info(runs)`).all();
|
|
204
|
+
if (columns.some((column) => String(column['name']) === name)) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
this.db.exec(`ALTER TABLE runs ADD COLUMN ${name} ${type}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=event-log-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-log-index.js","sourceRoot":"","sources":["../../src/runs/event-log-index.ts"],"names":[],"mappings":"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"}
|