@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.
Files changed (202) hide show
  1. package/README.md +20 -0
  2. package/dist/auth/bootstrap.d.ts +89 -0
  3. package/dist/auth/bootstrap.d.ts.map +1 -0
  4. package/dist/auth/bootstrap.js +222 -0
  5. package/dist/auth/bootstrap.js.map +1 -0
  6. package/dist/auth/hashing.d.ts +4 -0
  7. package/dist/auth/hashing.d.ts.map +1 -0
  8. package/dist/auth/hashing.js +27 -0
  9. package/dist/auth/hashing.js.map +1 -0
  10. package/dist/auth/middleware.d.ts +3 -0
  11. package/dist/auth/middleware.d.ts.map +1 -0
  12. package/dist/auth/middleware.js +17 -0
  13. package/dist/auth/middleware.js.map +1 -0
  14. package/dist/auth/tokens.d.ts +45 -0
  15. package/dist/auth/tokens.d.ts.map +1 -0
  16. package/dist/auth/tokens.js +186 -0
  17. package/dist/auth/tokens.js.map +1 -0
  18. package/dist/builtin-adapters.d.ts +17 -0
  19. package/dist/builtin-adapters.d.ts.map +1 -0
  20. package/dist/builtin-adapters.js +119 -0
  21. package/dist/builtin-adapters.js.map +1 -0
  22. package/dist/config.d.ts +37 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +97 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/fanout/client-conn.d.ts +20 -0
  27. package/dist/fanout/client-conn.d.ts.map +1 -0
  28. package/dist/fanout/client-conn.js +53 -0
  29. package/dist/fanout/client-conn.js.map +1 -0
  30. package/dist/fanout/subscriber.d.ts +12 -0
  31. package/dist/fanout/subscriber.d.ts.map +1 -0
  32. package/dist/fanout/subscriber.js +40 -0
  33. package/dist/fanout/subscriber.js.map +1 -0
  34. package/dist/index.d.ts +30 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +52 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/kanban/lib/config-loader.d.ts +29 -0
  39. package/dist/kanban/lib/config-loader.d.ts.map +1 -0
  40. package/dist/kanban/lib/config-loader.js +166 -0
  41. package/dist/kanban/lib/config-loader.js.map +1 -0
  42. package/dist/kanban/lib/config.d.ts +3 -0
  43. package/dist/kanban/lib/config.d.ts.map +1 -0
  44. package/dist/kanban/lib/config.js +6 -0
  45. package/dist/kanban/lib/config.js.map +1 -0
  46. package/dist/kanban/lib/create-global-registry.d.ts +28 -0
  47. package/dist/kanban/lib/create-global-registry.d.ts.map +1 -0
  48. package/dist/kanban/lib/create-global-registry.js +53 -0
  49. package/dist/kanban/lib/create-global-registry.js.map +1 -0
  50. package/dist/kanban/lib/dispatch-context-audit.d.ts +12 -0
  51. package/dist/kanban/lib/dispatch-context-audit.d.ts.map +1 -0
  52. package/dist/kanban/lib/dispatch-context-audit.js +44 -0
  53. package/dist/kanban/lib/dispatch-context-audit.js.map +1 -0
  54. package/dist/kanban/lib/error-handler.d.ts +28 -0
  55. package/dist/kanban/lib/error-handler.d.ts.map +1 -0
  56. package/dist/kanban/lib/error-handler.js +61 -0
  57. package/dist/kanban/lib/error-handler.js.map +1 -0
  58. package/dist/kanban/lib/global-registry.d.ts +49 -0
  59. package/dist/kanban/lib/global-registry.d.ts.map +1 -0
  60. package/dist/kanban/lib/global-registry.js +18 -0
  61. package/dist/kanban/lib/global-registry.js.map +1 -0
  62. package/dist/kanban/lib/parser.d.ts +36 -0
  63. package/dist/kanban/lib/parser.d.ts.map +1 -0
  64. package/dist/kanban/lib/parser.js +585 -0
  65. package/dist/kanban/lib/parser.js.map +1 -0
  66. package/dist/kanban/lib/path-resolver.d.ts +2 -0
  67. package/dist/kanban/lib/path-resolver.d.ts.map +1 -0
  68. package/dist/kanban/lib/path-resolver.js +16 -0
  69. package/dist/kanban/lib/path-resolver.js.map +1 -0
  70. package/dist/kanban/lib/review-service.d.ts +63 -0
  71. package/dist/kanban/lib/review-service.d.ts.map +1 -0
  72. package/dist/kanban/lib/review-service.js +571 -0
  73. package/dist/kanban/lib/review-service.js.map +1 -0
  74. package/dist/kanban/lib/run-cache.d.ts +36 -0
  75. package/dist/kanban/lib/run-cache.d.ts.map +1 -0
  76. package/dist/kanban/lib/run-cache.js +313 -0
  77. package/dist/kanban/lib/run-cache.js.map +1 -0
  78. package/dist/kanban/lib/server-init.d.ts +26 -0
  79. package/dist/kanban/lib/server-init.d.ts.map +1 -0
  80. package/dist/kanban/lib/server-init.js +179 -0
  81. package/dist/kanban/lib/server-init.js.map +1 -0
  82. package/dist/kanban/lib/services/automation-rule-service.d.ts +97 -0
  83. package/dist/kanban/lib/services/automation-rule-service.d.ts.map +1 -0
  84. package/dist/kanban/lib/services/automation-rule-service.js +806 -0
  85. package/dist/kanban/lib/services/automation-rule-service.js.map +1 -0
  86. package/dist/kanban/lib/services/automation-webhook-service.d.ts +44 -0
  87. package/dist/kanban/lib/services/automation-webhook-service.d.ts.map +1 -0
  88. package/dist/kanban/lib/services/automation-webhook-service.js +405 -0
  89. package/dist/kanban/lib/services/automation-webhook-service.js.map +1 -0
  90. package/dist/kanban/lib/services/backlog-query-service.d.ts +130 -0
  91. package/dist/kanban/lib/services/backlog-query-service.d.ts.map +1 -0
  92. package/dist/kanban/lib/services/backlog-query-service.js +1972 -0
  93. package/dist/kanban/lib/services/backlog-query-service.js.map +1 -0
  94. package/dist/kanban/lib/services/dispatch-context-label-service.d.ts +39 -0
  95. package/dist/kanban/lib/services/dispatch-context-label-service.d.ts.map +1 -0
  96. package/dist/kanban/lib/services/dispatch-context-label-service.js +160 -0
  97. package/dist/kanban/lib/services/dispatch-context-label-service.js.map +1 -0
  98. package/dist/kanban/lib/services/kanban-storage.d.ts +36 -0
  99. package/dist/kanban/lib/services/kanban-storage.d.ts.map +1 -0
  100. package/dist/kanban/lib/services/kanban-storage.js +26 -0
  101. package/dist/kanban/lib/services/kanban-storage.js.map +1 -0
  102. package/dist/kanban/lib/services/run-query-service.d.ts +79 -0
  103. package/dist/kanban/lib/services/run-query-service.d.ts.map +1 -0
  104. package/dist/kanban/lib/services/run-query-service.js +202 -0
  105. package/dist/kanban/lib/services/run-query-service.js.map +1 -0
  106. package/dist/kanban/lib/services/task-tag-service.d.ts +39 -0
  107. package/dist/kanban/lib/services/task-tag-service.d.ts.map +1 -0
  108. package/dist/kanban/lib/services/task-tag-service.js +145 -0
  109. package/dist/kanban/lib/services/task-tag-service.js.map +1 -0
  110. package/dist/kanban/lib/settings-section-storage.d.ts +13 -0
  111. package/dist/kanban/lib/settings-section-storage.d.ts.map +1 -0
  112. package/dist/kanban/lib/settings-section-storage.js +38 -0
  113. package/dist/kanban/lib/settings-section-storage.js.map +1 -0
  114. package/dist/kanban/lib/source-discovery.d.ts +10 -0
  115. package/dist/kanban/lib/source-discovery.d.ts.map +1 -0
  116. package/dist/kanban/lib/source-discovery.js +201 -0
  117. package/dist/kanban/lib/source-discovery.js.map +1 -0
  118. package/dist/kanban/lib/utils.d.ts +8 -0
  119. package/dist/kanban/lib/utils.d.ts.map +1 -0
  120. package/dist/kanban/lib/utils.js +116 -0
  121. package/dist/kanban/lib/utils.js.map +1 -0
  122. package/dist/kanban/lib/watcher.d.ts +14 -0
  123. package/dist/kanban/lib/watcher.d.ts.map +1 -0
  124. package/dist/kanban/lib/watcher.js +221 -0
  125. package/dist/kanban/lib/watcher.js.map +1 -0
  126. package/dist/kanban/lib/workspace-lifecycle.d.ts +68 -0
  127. package/dist/kanban/lib/workspace-lifecycle.d.ts.map +1 -0
  128. package/dist/kanban/lib/workspace-lifecycle.js +1085 -0
  129. package/dist/kanban/lib/workspace-lifecycle.js.map +1 -0
  130. package/dist/kanban/routes.d.ts +2 -0
  131. package/dist/kanban/routes.d.ts.map +1 -0
  132. package/dist/kanban/routes.js +1358 -0
  133. package/dist/kanban/routes.js.map +1 -0
  134. package/dist/kanban/types/breakpoint.d.ts +13 -0
  135. package/dist/kanban/types/breakpoint.d.ts.map +1 -0
  136. package/dist/kanban/types/breakpoint.js +3 -0
  137. package/dist/kanban/types/breakpoint.js.map +1 -0
  138. package/dist/kanban/types/index.d.ts +173 -0
  139. package/dist/kanban/types/index.d.ts.map +1 -0
  140. package/dist/kanban/types/index.js +3 -0
  141. package/dist/kanban/types/index.js.map +1 -0
  142. package/dist/logging.d.ts +7 -0
  143. package/dist/logging.d.ts.map +1 -0
  144. package/dist/logging.js +22 -0
  145. package/dist/logging.js.map +1 -0
  146. package/dist/notifications/types.d.ts +18 -0
  147. package/dist/notifications/types.d.ts.map +1 -0
  148. package/dist/notifications/types.js +2 -0
  149. package/dist/notifications/types.js.map +1 -0
  150. package/dist/notifications/webhook-out.d.ts +3 -0
  151. package/dist/notifications/webhook-out.d.ts.map +1 -0
  152. package/dist/notifications/webhook-out.js +55 -0
  153. package/dist/notifications/webhook-out.js.map +1 -0
  154. package/dist/pairing/short-code.d.ts +20 -0
  155. package/dist/pairing/short-code.d.ts.map +1 -0
  156. package/dist/pairing/short-code.js +50 -0
  157. package/dist/pairing/short-code.js.map +1 -0
  158. package/dist/protocol/errors.d.ts +10 -0
  159. package/dist/protocol/errors.d.ts.map +1 -0
  160. package/dist/protocol/errors.js +15 -0
  161. package/dist/protocol/errors.js.map +1 -0
  162. package/dist/protocol/frames.d.ts +107 -0
  163. package/dist/protocol/frames.d.ts.map +1 -0
  164. package/dist/protocol/frames.js +146 -0
  165. package/dist/protocol/frames.js.map +1 -0
  166. package/dist/protocol/v1.d.ts +111 -0
  167. package/dist/protocol/v1.d.ts.map +1 -0
  168. package/dist/protocol/v1.js +2 -0
  169. package/dist/protocol/v1.js.map +1 -0
  170. package/dist/runs/event-log-index.d.ts +29 -0
  171. package/dist/runs/event-log-index.d.ts.map +1 -0
  172. package/dist/runs/event-log-index.js +210 -0
  173. package/dist/runs/event-log-index.js.map +1 -0
  174. package/dist/runs/event-log.d.ts +25 -0
  175. package/dist/runs/event-log.d.ts.map +1 -0
  176. package/dist/runs/event-log.js +104 -0
  177. package/dist/runs/event-log.js.map +1 -0
  178. package/dist/runs/hook-broker.d.ts +18 -0
  179. package/dist/runs/hook-broker.d.ts.map +1 -0
  180. package/dist/runs/hook-broker.js +110 -0
  181. package/dist/runs/hook-broker.js.map +1 -0
  182. package/dist/runs/manager.d.ts +57 -0
  183. package/dist/runs/manager.d.ts.map +1 -0
  184. package/dist/runs/manager.js +753 -0
  185. package/dist/runs/manager.js.map +1 -0
  186. package/dist/runs/session-runtime.d.ts +8 -0
  187. package/dist/runs/session-runtime.d.ts.map +1 -0
  188. package/dist/runs/session-runtime.js +291 -0
  189. package/dist/runs/session-runtime.js.map +1 -0
  190. package/dist/runs/types.d.ts +55 -0
  191. package/dist/runs/types.d.ts.map +1 -0
  192. package/dist/runs/types.js +2 -0
  193. package/dist/runs/types.js.map +1 -0
  194. package/dist/server.d.ts +15 -0
  195. package/dist/server.d.ts.map +1 -0
  196. package/dist/server.js +702 -0
  197. package/dist/server.js.map +1 -0
  198. package/dist/static/webui-server.d.ts +2 -0
  199. package/dist/static/webui-server.d.ts.map +1 -0
  200. package/dist/static/webui-server.js +97 -0
  201. package/dist/static/webui-server.js.map +1 -0
  202. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v1.js.map
@@ -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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"}