@codetreker/daynight 0.25.4 → 0.26.0

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 (170) hide show
  1. package/README.md +108 -4
  2. package/config.example.yml +3 -0
  3. package/dist/api/client.js +2 -2
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/parse.js +14 -2
  6. package/dist/api/parse.js.map +1 -1
  7. package/dist/api/types.d.ts +4 -1
  8. package/dist/api/worker-mode.d.ts +6 -0
  9. package/dist/api/worker-mode.js +14 -0
  10. package/dist/api/worker-mode.js.map +1 -0
  11. package/dist/cli/commands.js +2 -0
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/commands/controller/command-controls.d.ts +4 -0
  14. package/dist/commands/controller/command-controls.js +33 -0
  15. package/dist/commands/controller/command-controls.js.map +1 -0
  16. package/dist/commands/controller/definition.d.ts +3 -0
  17. package/dist/commands/controller/definition.js +22 -0
  18. package/dist/commands/controller/definition.js.map +1 -0
  19. package/dist/commands/controller/independent.d.ts +3 -0
  20. package/dist/commands/controller/independent.js +344 -0
  21. package/dist/commands/controller/independent.js.map +1 -0
  22. package/dist/commands/controller/index.d.ts +12 -0
  23. package/dist/commands/controller/index.js +73 -0
  24. package/dist/commands/controller/index.js.map +1 -0
  25. package/dist/commands/controller/launch-ticket.d.ts +49 -0
  26. package/dist/commands/controller/launch-ticket.js +99 -0
  27. package/dist/commands/controller/launch-ticket.js.map +1 -0
  28. package/dist/commands/controller/lifecycle-store.d.ts +84 -0
  29. package/dist/commands/controller/lifecycle-store.js +278 -0
  30. package/dist/commands/controller/lifecycle-store.js.map +1 -0
  31. package/dist/commands/controller/local-client.d.ts +44 -0
  32. package/dist/commands/controller/local-client.js +75 -0
  33. package/dist/commands/controller/local-client.js.map +1 -0
  34. package/dist/commands/controller/local-content.d.ts +23 -0
  35. package/dist/commands/controller/local-content.js +103 -0
  36. package/dist/commands/controller/local-content.js.map +1 -0
  37. package/dist/commands/controller/process-proof.d.ts +13 -0
  38. package/dist/commands/controller/process-proof.js +121 -0
  39. package/dist/commands/controller/process-proof.js.map +1 -0
  40. package/dist/commands/controller/providers/claude.d.ts +2 -0
  41. package/dist/commands/controller/providers/claude.js +470 -0
  42. package/dist/commands/controller/providers/claude.js.map +1 -0
  43. package/dist/commands/controller/providers/codex.d.ts +2 -0
  44. package/dist/commands/controller/providers/codex.js +254 -0
  45. package/dist/commands/controller/providers/codex.js.map +1 -0
  46. package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
  47. package/dist/commands/controller/providers/controls-claude.js +138 -0
  48. package/dist/commands/controller/providers/controls-claude.js.map +1 -0
  49. package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
  50. package/dist/commands/controller/providers/controls-codex.js +199 -0
  51. package/dist/commands/controller/providers/controls-codex.js.map +1 -0
  52. package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
  53. package/dist/commands/controller/providers/controls-copilot.js +143 -0
  54. package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
  55. package/dist/commands/controller/providers/controls.d.ts +21 -0
  56. package/dist/commands/controller/providers/controls.js +53 -0
  57. package/dist/commands/controller/providers/controls.js.map +1 -0
  58. package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
  59. package/dist/commands/controller/providers/copilot-interactions.js +295 -0
  60. package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
  61. package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
  62. package/dist/commands/controller/providers/copilot-projection.js +93 -0
  63. package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
  64. package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
  65. package/dist/commands/controller/providers/copilot-runtime.js +127 -0
  66. package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
  67. package/dist/commands/controller/providers/copilot.d.ts +2 -0
  68. package/dist/commands/controller/providers/copilot.js +309 -0
  69. package/dist/commands/controller/providers/copilot.js.map +1 -0
  70. package/dist/commands/controller/providers/interactions.d.ts +3 -0
  71. package/dist/commands/controller/providers/interactions.js +79 -0
  72. package/dist/commands/controller/providers/interactions.js.map +1 -0
  73. package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
  74. package/dist/commands/controller/providers/native-rpc.js +85 -0
  75. package/dist/commands/controller/providers/native-rpc.js.map +1 -0
  76. package/dist/commands/controller/providers/projection.d.ts +23 -0
  77. package/dist/commands/controller/providers/projection.js +99 -0
  78. package/dist/commands/controller/providers/projection.js.map +1 -0
  79. package/dist/commands/controller/providers/turns.d.ts +7 -0
  80. package/dist/commands/controller/providers/turns.js +21 -0
  81. package/dist/commands/controller/providers/turns.js.map +1 -0
  82. package/dist/commands/controller/providers/types.d.ts +44 -0
  83. package/dist/commands/controller/providers/types.js +2 -0
  84. package/dist/commands/controller/providers/types.js.map +1 -0
  85. package/dist/commands/controller/recovery.d.ts +6 -0
  86. package/dist/commands/controller/recovery.js +22 -0
  87. package/dist/commands/controller/recovery.js.map +1 -0
  88. package/dist/commands/controller/relay.d.ts +18 -0
  89. package/dist/commands/controller/relay.js +299 -0
  90. package/dist/commands/controller/relay.js.map +1 -0
  91. package/dist/commands/controller/resume.d.ts +18 -0
  92. package/dist/commands/controller/resume.js +193 -0
  93. package/dist/commands/controller/resume.js.map +1 -0
  94. package/dist/commands/controller/runtime.d.ts +5 -0
  95. package/dist/commands/controller/runtime.js +455 -0
  96. package/dist/commands/controller/runtime.js.map +1 -0
  97. package/dist/commands/controller/windows-job.d.ts +3 -0
  98. package/dist/commands/controller/windows-job.js +59 -0
  99. package/dist/commands/controller/windows-job.js.map +1 -0
  100. package/dist/commands/controller/wire-display.d.ts +5 -0
  101. package/dist/commands/controller/wire-display.js +11 -0
  102. package/dist/commands/controller/wire-display.js.map +1 -0
  103. package/dist/commands/worker/backend.d.ts +7 -0
  104. package/dist/commands/worker/backend.js +7 -0
  105. package/dist/commands/worker/backend.js.map +1 -0
  106. package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
  107. package/dist/commands/worker/backends/grant-renewal.js +42 -0
  108. package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
  109. package/dist/commands/worker/backends/session-api.d.ts +66 -0
  110. package/dist/commands/worker/backends/session-api.js +84 -0
  111. package/dist/commands/worker/backends/session-api.js.map +1 -0
  112. package/dist/commands/worker/backends/web-process.d.ts +79 -0
  113. package/dist/commands/worker/backends/web-process.js +156 -0
  114. package/dist/commands/worker/backends/web-process.js.map +1 -0
  115. package/dist/commands/worker/backends/web-store.d.ts +49 -0
  116. package/dist/commands/worker/backends/web-store.js +323 -0
  117. package/dist/commands/worker/backends/web-store.js.map +1 -0
  118. package/dist/commands/worker/backends/web-types.d.ts +83 -0
  119. package/dist/commands/worker/backends/web-types.js +3 -0
  120. package/dist/commands/worker/backends/web-types.js.map +1 -0
  121. package/dist/commands/worker/backends/web.d.ts +26 -0
  122. package/dist/commands/worker/backends/web.js +178 -0
  123. package/dist/commands/worker/backends/web.js.map +1 -0
  124. package/dist/commands/worker/config.js +12 -5
  125. package/dist/commands/worker/config.js.map +1 -1
  126. package/dist/commands/worker/control.d.ts +2 -0
  127. package/dist/commands/worker/control.js +11 -4
  128. package/dist/commands/worker/control.js.map +1 -1
  129. package/dist/commands/worker/coordinator.d.ts +7 -0
  130. package/dist/commands/worker/coordinator.js +138 -19
  131. package/dist/commands/worker/coordinator.js.map +1 -1
  132. package/dist/commands/worker/herdr/agents.js +5 -4
  133. package/dist/commands/worker/herdr/agents.js.map +1 -1
  134. package/dist/commands/worker/herdr/arguments.js +9 -4
  135. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  136. package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
  137. package/dist/commands/worker/herdr/claude-input.js +20 -0
  138. package/dist/commands/worker/herdr/claude-input.js.map +1 -0
  139. package/dist/commands/worker/herdr/instance.js +1 -1
  140. package/dist/commands/worker/herdr/instance.js.map +1 -1
  141. package/dist/commands/worker/herdr/preflight.d.ts +1 -1
  142. package/dist/commands/worker/herdr/preflight.js +31 -10
  143. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  144. package/dist/commands/worker/herdr.js +5 -1
  145. package/dist/commands/worker/herdr.js.map +1 -1
  146. package/dist/commands/worker/prompts.js +5 -1
  147. package/dist/commands/worker/prompts.js.map +1 -1
  148. package/dist/commands/worker/repositories.js +2 -2
  149. package/dist/commands/worker/repositories.js.map +1 -1
  150. package/dist/commands/worker/runtime.js +62 -10
  151. package/dist/commands/worker/runtime.js.map +1 -1
  152. package/dist/commands/worker/setup-environment.d.ts +2 -1
  153. package/dist/commands/worker/setup-environment.js +10 -4
  154. package/dist/commands/worker/setup-environment.js.map +1 -1
  155. package/dist/commands/worker/setup.js +5 -5
  156. package/dist/commands/worker/setup.js.map +1 -1
  157. package/dist/commands/worker/store.d.ts +2 -1
  158. package/dist/commands/worker/store.js +19 -9
  159. package/dist/commands/worker/store.js.map +1 -1
  160. package/dist/commands/worker/types.d.ts +4 -1
  161. package/dist/session/controller-protocol.d.ts +245 -0
  162. package/dist/session/controller-protocol.js +218 -0
  163. package/dist/session/controller-protocol.js.map +1 -0
  164. package/dist/session/controls.d.ts +28 -0
  165. package/dist/session/controls.js +37 -0
  166. package/dist/session/controls.js.map +1 -0
  167. package/dist/session/protocol.d.ts +290 -0
  168. package/dist/session/protocol.js +307 -0
  169. package/dist/session/protocol.js.map +1 -0
  170. package/package.json +7 -2
@@ -0,0 +1,245 @@
1
+ import { SESSION_PROTOCOL, type SessionBinding, type SessionFence, type ControllerFence, type DecimalSequence, type SessionCapabilities, type SessionCommand, type SessionEvent, type SessionOperation, type SessionProvider, type SessionResource, type SessionSnapshot, type TimelineEntry } from "./protocol.js";
2
+ export declare const RELAY_LIMITS: {
3
+ readonly maxFrameBytes: 2097152;
4
+ readonly maxBatchEvents: 100;
5
+ readonly maxResourceBytes: 8388608;
6
+ readonly pollIntervalMs: 250;
7
+ };
8
+ type Wire = {
9
+ readonly protocol: typeof SESSION_PROTOCOL;
10
+ };
11
+ export type RegistrationRequest = Wire & {
12
+ readonly registrationId: string;
13
+ readonly claimId: string;
14
+ readonly workerId: string;
15
+ readonly worktreeId: string;
16
+ readonly provider: SessionProvider;
17
+ readonly controllerId: string;
18
+ readonly controllerInstanceId: string;
19
+ };
20
+ export type RegistrationResponse = {
21
+ readonly session: SessionSnapshot;
22
+ };
23
+ export type ControllerGrantRequest = Wire & SessionBinding & {
24
+ readonly controllerId: string;
25
+ readonly controllerInstanceId: string;
26
+ readonly executionGeneration: DecimalSequence;
27
+ readonly kind: "bootstrap" | "reconnect";
28
+ readonly previousGeneration: DecimalSequence | null;
29
+ readonly stopProof: {
30
+ readonly recordId: string;
31
+ readonly previousControllerInstanceId: string;
32
+ readonly stoppedAt: string;
33
+ } | null;
34
+ };
35
+ export type ControllerGrantResponse = SessionFence & {
36
+ readonly token: string;
37
+ readonly expiresAt: string;
38
+ readonly controllerId: string;
39
+ readonly controllerInstanceId: string;
40
+ };
41
+ export type CurrentSessionResponse = {
42
+ readonly status: "not_applicable";
43
+ readonly claimId: string | null;
44
+ readonly agentControlMode: "herdr" | null;
45
+ } | {
46
+ readonly status: "not_registered";
47
+ readonly claimId: string;
48
+ readonly agentControlMode: "web";
49
+ } | {
50
+ readonly status: "registered";
51
+ readonly session: SessionSnapshot;
52
+ };
53
+ export type TimelinePage = {
54
+ readonly sessionId: string;
55
+ readonly historyEpoch: string;
56
+ readonly items: readonly TimelineEntry[];
57
+ readonly resources: readonly SessionResource[];
58
+ readonly beforeCursor: string | null;
59
+ readonly afterCursor: string | null;
60
+ readonly hasMoreBefore: boolean;
61
+ readonly hasMoreAfter: boolean;
62
+ readonly lastEventSeq: DecimalSequence;
63
+ };
64
+ export type OperationResponse = {
65
+ readonly operation: SessionOperation;
66
+ };
67
+ export type CommandResponse = OperationResponse & {
68
+ readonly operationUrl: string;
69
+ };
70
+ export type ControllerState = Pick<SessionSnapshot, "controls" | "turnStartedAt"> & {
71
+ readonly cleanupInteractionIds?: readonly string[];
72
+ readonly nativeSessionId: string | null;
73
+ readonly initialInputState: SessionSnapshot["initialInputState"];
74
+ readonly synchronized: boolean;
75
+ readonly activity: SessionSnapshot["activity"];
76
+ readonly currentTurnId: string | null;
77
+ readonly capabilities: SessionCapabilities;
78
+ };
79
+ type WithoutEntrySeq<T> = T extends unknown ? Omit<T, "entrySeq"> : never;
80
+ export type SourceTimelineEntry = WithoutEntrySeq<TimelineEntry> & {
81
+ readonly entrySeq?: DecimalSequence;
82
+ };
83
+ export type SourceEvent = {
84
+ readonly sourceSeq: DecimalSequence;
85
+ } & ({
86
+ readonly kind: "state";
87
+ readonly payload: ControllerState;
88
+ } | {
89
+ readonly kind: "timeline_upsert";
90
+ readonly payload: SourceTimelineEntry;
91
+ } | {
92
+ readonly kind: "resource";
93
+ readonly payload: SessionResource;
94
+ } | {
95
+ readonly kind: "gap";
96
+ readonly payload: {
97
+ readonly reason: string;
98
+ };
99
+ });
100
+ export type Reconciliation = {
101
+ readonly operationId: string;
102
+ readonly state: "not_submitted" | "dispatching" | "provider_accepted" | "confirmed" | "failed" | "rejected" | "expired" | "unknown";
103
+ readonly providerResult: SessionOperation["providerResult"];
104
+ readonly error: SessionOperation["error"];
105
+ };
106
+ export type ContentRequest = {
107
+ readonly requestId: string;
108
+ } & ({
109
+ readonly kind: "timeline";
110
+ readonly historyEpoch: string;
111
+ readonly direction: "tail" | "before" | "after";
112
+ readonly cursor: string | null;
113
+ readonly limit: number;
114
+ } | {
115
+ readonly kind: "resource";
116
+ readonly resourceId: string;
117
+ readonly offset: string;
118
+ readonly limit: number;
119
+ });
120
+ export type ContentResult = (Omit<TimelinePage, "sessionId" | "lastEventSeq"> & {
121
+ readonly kind: "timeline";
122
+ }) | {
123
+ readonly kind: "resource";
124
+ readonly resource: SessionResource;
125
+ readonly offset: string;
126
+ readonly data: string;
127
+ readonly eof: boolean;
128
+ };
129
+ export type ContentResponse = {
130
+ readonly requestId: string;
131
+ readonly sourceThrough: string;
132
+ readonly result: ContentResult | null;
133
+ readonly error: {
134
+ readonly code: string;
135
+ readonly message: string;
136
+ } | null;
137
+ };
138
+ export type ControllerHello = Wire & SessionFence & {
139
+ readonly type: "hello";
140
+ readonly schemaVersion: 1;
141
+ readonly projectionVersion: 1;
142
+ readonly controllerId: string;
143
+ readonly controllerInstanceId: string;
144
+ readonly provider: SessionProvider;
145
+ readonly sourceEpoch: string;
146
+ readonly lastAckedSourceSeq: DecimalSequence;
147
+ readonly sourceFloor?: DecimalSequence;
148
+ };
149
+ export type ControllerMessage = ControllerHello | (Wire & ControllerFence & ({
150
+ readonly type: "events";
151
+ readonly batchId: string;
152
+ readonly sourceEpoch: string;
153
+ readonly events: readonly SourceEvent[];
154
+ } | {
155
+ readonly type: "source_reset";
156
+ readonly previousSourceEpoch: string;
157
+ readonly newSourceEpoch: string;
158
+ readonly reason: string;
159
+ } | {
160
+ readonly type: "operation_begin";
161
+ readonly operationId: string;
162
+ } | {
163
+ readonly type: "operation_receipt";
164
+ readonly operation: SessionOperation;
165
+ } | {
166
+ readonly type: "reconcile";
167
+ readonly final: boolean;
168
+ readonly operations: readonly Reconciliation[];
169
+ } | {
170
+ readonly type: "sync_state";
171
+ readonly state: ControllerState;
172
+ readonly pendingInteractions: readonly TimelineEntry[];
173
+ } | ({
174
+ readonly type: "content_response";
175
+ } & ContentResponse) | {
176
+ readonly type: "heartbeat";
177
+ }));
178
+ export type RelayMessage = (Wire & {
179
+ readonly type: "welcome";
180
+ readonly connectionEpoch: DecimalSequence;
181
+ readonly session: SessionSnapshot;
182
+ readonly lastAckedSourceSeq: DecimalSequence;
183
+ readonly limits: typeof RELAY_LIMITS;
184
+ readonly requiresLiveSync?: true;
185
+ }) | (Wire & ControllerFence & ({
186
+ readonly type: "events_ack";
187
+ readonly batchId: string;
188
+ readonly sourceEpoch: string;
189
+ readonly lastAckedSourceSeq: DecimalSequence;
190
+ readonly lastEventSeq: DecimalSequence;
191
+ } | {
192
+ readonly type: "source_reset_ack";
193
+ readonly sourceEpoch: string;
194
+ readonly lastEventSeq: DecimalSequence;
195
+ } | {
196
+ readonly type: "operation_offer";
197
+ readonly operationSeq: DecimalSequence;
198
+ readonly command: SessionCommand;
199
+ } | {
200
+ readonly type: "operation_authorized";
201
+ readonly operationId: string;
202
+ } | {
203
+ readonly type: "receipt_ack";
204
+ readonly operation: SessionOperation;
205
+ } | {
206
+ readonly type: "reconcile_result";
207
+ readonly operations: readonly SessionOperation[];
208
+ } | {
209
+ readonly type: "sync_ack";
210
+ } | ({
211
+ readonly type: "content_request";
212
+ } & ContentRequest) | {
213
+ readonly type: "heartbeat_ack";
214
+ } | {
215
+ readonly type: "error";
216
+ readonly code: string;
217
+ readonly message: string;
218
+ }));
219
+ export type BrowserMessage = Wire & ({
220
+ readonly type: "snapshot";
221
+ readonly userId: string;
222
+ readonly snapshot: SessionSnapshot;
223
+ readonly cursor: string;
224
+ } | {
225
+ readonly type: "event";
226
+ readonly event: SessionEvent;
227
+ readonly cursor: string;
228
+ } | {
229
+ readonly type: "reset_required";
230
+ readonly reason: string;
231
+ });
232
+ export declare const parseRegistrationRequest: (x: unknown) => RegistrationRequest;
233
+ export declare const parseRegistrationResponse: (x: unknown) => RegistrationResponse;
234
+ export declare const parseControllerGrantRequest: (x: unknown) => ControllerGrantRequest;
235
+ export declare const parseControllerGrantResponse: (x: unknown) => ControllerGrantResponse;
236
+ export declare const parseCurrentSessionResponse: (x: unknown) => CurrentSessionResponse;
237
+ export declare const parseTimelinePage: (x: unknown) => TimelinePage;
238
+ export declare const parseOperationResponse: (x: unknown) => OperationResponse;
239
+ export declare const parseCommandResponse: (x: unknown) => CommandResponse;
240
+ export declare const parseControllerState: (x: unknown) => ControllerState;
241
+ export declare const parseSourceEvent: (x: unknown) => SourceEvent;
242
+ export declare const parseControllerMessage: (x: unknown) => ControllerMessage;
243
+ export declare const parseRelayMessage: (x: unknown) => RelayMessage;
244
+ export declare const parseBrowserMessage: (x: unknown) => BrowserMessage;
245
+ export {};
@@ -0,0 +1,218 @@
1
+ import { sessionControlKeys, parseSessionControlFields } from "./protocol.js";
2
+ import { assertSessionFence, sessionBinding, sessionBindingKeys, sessionFence, SESSION_PROTOCOL, parseSessionSnapshot, parseSessionCommand, parseSessionEvent, parseSessionOperation, parseSessionResource, parseTimelineEntry } from "./protocol.js";
3
+ export const RELAY_LIMITS = { maxFrameBytes: 2_097_152, maxBatchEvents: 100, maxResourceBytes: 8_388_608, pollIntervalMs: 250 };
4
+ const fail = () => { throw new Error("Invalid Daynight relay protocol value."); };
5
+ const obj = (x, keys) => {
6
+ if (!x || typeof x !== "object" || Array.isArray(x))
7
+ return fail();
8
+ const o = x;
9
+ if (Object.keys(o).length !== keys.length || keys.some(k => !Object.hasOwn(o, k)))
10
+ return fail();
11
+ return o;
12
+ };
13
+ const str = (x, max = 256) => typeof x === "string" && x.length > 0 && /[^\p{White_Space}]/u.test(x) && x.isWellFormed() && !x.includes("\0") && new TextEncoder().encode(x).length <= max ? x : fail();
14
+ const id = (x) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(str(x)) ? x : fail();
15
+ const seq = (x, zero = false) => { const s = str(x); return /^(0|[1-9][0-9]*)$/.test(s) && s.length <= 19 && BigInt(s) <= 9223372036854775807n && (zero || s !== "0") ? s : fail(); };
16
+ const bool = (x) => typeof x === "boolean" ? x : fail();
17
+ const nullable = (x, f) => x === null ? null : f(x);
18
+ const choice = (x, choices) => typeof x === "string" && choices.includes(x) ? x : fail();
19
+ const protocol = (x) => x === SESSION_PROTOCOL ? x : fail();
20
+ const list = (x, f, max = 100) => Array.isArray(x) && x.length <= max ? x.map(f) : fail();
21
+ const fenceKeys = (value) => ["sessionId", ...sessionBindingKeys(value), "executionGeneration", "connectionEpoch"];
22
+ const fence = (o) => ({ sessionId: id(o.sessionId), ...sessionBinding(o), executionGeneration: seq(o.executionGeneration), connectionEpoch: seq(o.connectionEpoch) });
23
+ const timestamp = (x) => { const s = str(x); return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(s) && Number.isFinite(Date.parse(s)) ? s : fail(); };
24
+ export const parseRegistrationRequest = (x) => {
25
+ const o = obj(x, ["protocol", "registrationId", "claimId", "workerId", "worktreeId", "provider", "controllerId", "controllerInstanceId"]);
26
+ return { protocol: protocol(o.protocol), registrationId: id(o.registrationId), claimId: id(o.claimId), workerId: id(o.workerId), worktreeId: id(o.worktreeId), provider: choice(o.provider, ["codex", "claude", "copilot"]), controllerId: id(o.controllerId), controllerInstanceId: id(o.controllerInstanceId) };
27
+ };
28
+ export const parseRegistrationResponse = (x) => ({ session: parseSessionSnapshot(obj(x, ["session"]).session) });
29
+ export const parseControllerGrantRequest = (x) => {
30
+ const o = obj(x, ["protocol", ...sessionBindingKeys(x), "controllerId", "controllerInstanceId", "executionGeneration", "kind", "previousGeneration", "stopProof"]);
31
+ const proof = nullable(o.stopProof, x => { const p = obj(x, ["recordId", "previousControllerInstanceId", "stoppedAt"]); return { recordId: id(p.recordId), previousControllerInstanceId: id(p.previousControllerInstanceId), stoppedAt: timestamp(p.stoppedAt) }; });
32
+ const previousGeneration = nullable(o.previousGeneration, seq);
33
+ if ((proof === null) !== (previousGeneration === null) || Object.hasOwn(o, "testExecutionId") && previousGeneration !== null)
34
+ return fail();
35
+ return { protocol: protocol(o.protocol), ...sessionBinding(o), controllerId: id(o.controllerId), controllerInstanceId: id(o.controllerInstanceId), executionGeneration: seq(o.executionGeneration), kind: choice(o.kind, ["bootstrap", "reconnect"]), previousGeneration, stopProof: proof };
36
+ };
37
+ export const parseControllerGrantResponse = (x) => {
38
+ const o = obj(x, ["token", "expiresAt", "sessionId", ...sessionBindingKeys(x), "executionGeneration", "controllerId", "controllerInstanceId"]);
39
+ return { token: str(o.token), expiresAt: timestamp(o.expiresAt), sessionId: id(o.sessionId), ...sessionBinding(o), executionGeneration: seq(o.executionGeneration), controllerId: id(o.controllerId), controllerInstanceId: id(o.controllerInstanceId) };
40
+ };
41
+ export const parseCurrentSessionResponse = (x) => {
42
+ if (!x || typeof x !== "object" || !("status" in x))
43
+ return fail();
44
+ if (x.status === "registered") {
45
+ const session = parseSessionSnapshot(obj(x, ["status", "session"]).session);
46
+ if (session.claimId === undefined)
47
+ return fail();
48
+ return { status: "registered", session };
49
+ }
50
+ const o = obj(x, ["status", "claimId", "agentControlMode"]);
51
+ if (o.status === "not_registered" && o.agentControlMode === "web")
52
+ return { status: "not_registered", claimId: id(o.claimId), agentControlMode: "web" };
53
+ if (o.status !== "not_applicable" || !(o.agentControlMode === null || o.agentControlMode === "herdr"))
54
+ return fail();
55
+ return { status: "not_applicable", claimId: nullable(o.claimId, id), agentControlMode: o.agentControlMode };
56
+ };
57
+ export const parseTimelinePage = (x) => {
58
+ const o = obj(x, ["sessionId", "historyEpoch", "items", "resources", "beforeCursor", "afterCursor", "hasMoreBefore", "hasMoreAfter", "lastEventSeq"]);
59
+ return { sessionId: id(o.sessionId), historyEpoch: str(o.historyEpoch), items: list(o.items, parseTimelineEntry, 200), resources: list(o.resources, parseSessionResource, 1000), beforeCursor: nullable(o.beforeCursor, str), afterCursor: nullable(o.afterCursor, str), hasMoreBefore: bool(o.hasMoreBefore), hasMoreAfter: bool(o.hasMoreAfter), lastEventSeq: seq(o.lastEventSeq, true) };
60
+ };
61
+ export const parseOperationResponse = (x) => ({ operation: parseSessionOperation(obj(x, ["operation"]).operation) });
62
+ export const parseCommandResponse = (x) => { const o = obj(x, ["operation", "operationUrl"]); return { operation: parseSessionOperation(o.operation), operationUrl: str(o.operationUrl, 2048) }; };
63
+ export const parseControllerState = (x) => {
64
+ const o = obj(x, [...sessionControlKeys(x), "nativeSessionId", "initialInputState", "synchronized", "activity", "currentTurnId", "capabilities", ...(x && typeof x === "object" && Object.hasOwn(x, "cleanupInteractionIds") ? ["cleanupInteractionIds"] : [])]);
65
+ const c = obj(o.capabilities, ["send", "steer", "cancel", "respond"]);
66
+ const cleanup = Object.hasOwn(o, "cleanupInteractionIds") ? list(o.cleanupInteractionIds, id, 1000) : undefined;
67
+ if (cleanup && new Set(cleanup).size !== cleanup.length)
68
+ return fail();
69
+ return { ...parseSessionControlFields(o), ...(cleanup ? { cleanupInteractionIds: cleanup } : {}), nativeSessionId: nullable(o.nativeSessionId, str), initialInputState: choice(o.initialInputState, ["not_required", "not_submitted", "dispatching", "provider_accepted", "confirmed", "failed", "unknown"]), synchronized: bool(o.synchronized), activity: choice(o.activity, ["initializing", "idle", "working", "waiting_input", "stopped", "unknown"]), currentTurnId: nullable(o.currentTurnId, str), capabilities: { send: bool(c.send), steer: bool(c.steer), cancel: bool(c.cancel), respond: bool(c.respond) } };
70
+ };
71
+ export const parseSourceEvent = (x) => {
72
+ const o = obj(x, ["sourceSeq", "kind", "payload"]), sourceSeq = seq(o.sourceSeq);
73
+ if (o.kind === "state")
74
+ return { sourceSeq, kind: "state", payload: parseControllerState(o.payload) };
75
+ if (o.kind === "resource")
76
+ return { sourceSeq, kind: "resource", payload: parseSessionResource(o.payload) };
77
+ if (o.kind === "gap")
78
+ return { sourceSeq, kind: "gap", payload: { reason: str(obj(o.payload, ["reason"]).reason, 1_048_576) } };
79
+ if (o.kind !== "timeline_upsert" || !o.payload || typeof o.payload !== "object")
80
+ return fail();
81
+ const { entrySeq, ...payload } = parseTimelineEntry({ ...o.payload, entrySeq: "entrySeq" in o.payload ? o.payload.entrySeq : "1" });
82
+ return { sourceSeq, kind: "timeline_upsert", payload: { ...payload, ...("entrySeq" in o.payload ? { entrySeq } : {}) } };
83
+ };
84
+ const parseContentResult = (value) => {
85
+ if (!value || typeof value !== "object" || !("kind" in value))
86
+ return fail();
87
+ if (value.kind === "timeline") {
88
+ const o = obj(value, ["kind", "historyEpoch", "items", "resources", "beforeCursor", "afterCursor", "hasMoreBefore", "hasMoreAfter"]);
89
+ return { kind: "timeline", historyEpoch: id(o.historyEpoch), items: list(o.items, parseTimelineEntry, 200), resources: list(o.resources, parseSessionResource, 1000), beforeCursor: nullable(o.beforeCursor, str), afterCursor: nullable(o.afterCursor, str), hasMoreBefore: bool(o.hasMoreBefore), hasMoreAfter: bool(o.hasMoreAfter) };
90
+ }
91
+ const o = obj(value, ["kind", "resource", "offset", "data", "eof"]);
92
+ if (o.kind !== "resource" || typeof o.data !== "string" || o.data.length > 699052 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(o.data))
93
+ return fail();
94
+ return { kind: "resource", resource: parseSessionResource(o.resource), offset: seq(o.offset, true), data: o.data, eof: bool(o.eof) };
95
+ };
96
+ export const parseControllerMessage = (x) => {
97
+ if (!x || typeof x !== "object" || !("type" in x))
98
+ return fail();
99
+ if (x.type === "hello") {
100
+ const o = obj(x, ["type", "protocol", "schemaVersion", "projectionVersion", "sessionId", ...sessionBindingKeys(x), "executionGeneration", "controllerId", "controllerInstanceId", "provider", "sourceEpoch", "lastAckedSourceSeq", ...("sourceFloor" in x ? ["sourceFloor"] : [])]);
101
+ if (o.schemaVersion !== 1 || o.projectionVersion !== 1)
102
+ return fail();
103
+ return { type: "hello", protocol: protocol(o.protocol), schemaVersion: 1, projectionVersion: 1, sessionId: id(o.sessionId), ...sessionBinding(o), executionGeneration: seq(o.executionGeneration), controllerId: id(o.controllerId), controllerInstanceId: id(o.controllerInstanceId), provider: choice(o.provider, ["codex", "claude", "copilot"]), sourceEpoch: id(o.sourceEpoch), lastAckedSourceSeq: seq(o.lastAckedSourceSeq, true), ...("sourceFloor" in o ? { sourceFloor: seq(o.sourceFloor, true) } : {}) };
104
+ }
105
+ const extras = { events: ["batchId", "sourceEpoch", "events"], source_reset: ["previousSourceEpoch", "newSourceEpoch", "reason"], operation_begin: ["operationId"], operation_receipt: ["operation"], reconcile: ["operations", "final"], sync_state: ["state", "pendingInteractions"], content_response: ["requestId", "sourceThrough", "result", "error"], heartbeat: [] };
106
+ if (typeof x.type !== "string" || !Object.hasOwn(extras, x.type))
107
+ return fail();
108
+ const o = obj(x, ["type", "protocol", ...fenceKeys(x), ...extras[x.type]]), base = { protocol: protocol(o.protocol), ...fence(o) };
109
+ switch (x.type) {
110
+ case "events": {
111
+ const events = list(o.events, parseSourceEvent);
112
+ if (!events.length || base.claimId !== undefined && events.some(event => event.kind === "state" && event.payload.initialInputState === "not_required"))
113
+ return fail();
114
+ return { ...base, type: "events", batchId: id(o.batchId), sourceEpoch: id(o.sourceEpoch), events };
115
+ }
116
+ case "source_reset": return { ...base, type: "source_reset", previousSourceEpoch: id(o.previousSourceEpoch), newSourceEpoch: id(o.newSourceEpoch), reason: str(o.reason, 1_048_576) };
117
+ case "operation_begin": return { ...base, type: "operation_begin", operationId: id(o.operationId) };
118
+ case "operation_receipt": {
119
+ const operation = parseSessionOperation(o.operation);
120
+ assertSessionFence(operation, sessionFence(base));
121
+ return { ...base, type: "operation_receipt", operation };
122
+ }
123
+ case "sync_state": {
124
+ const pendingInteractions = list(o.pendingInteractions, parseTimelineEntry);
125
+ if (pendingInteractions.some(entry => entry.kind !== "interaction" || entry.interaction.state !== "pending") || new Set(pendingInteractions.map(entry => entry.entryId)).size !== pendingInteractions.length)
126
+ return fail();
127
+ return { ...base, type: "sync_state", state: parseControllerState(o.state), pendingInteractions };
128
+ }
129
+ case "content_response": {
130
+ if ((o.result === null) === (o.error === null))
131
+ return fail();
132
+ return { ...base, type: "content_response", requestId: id(o.requestId), sourceThrough: seq(o.sourceThrough, true), result: nullable(o.result, parseContentResult), error: nullable(o.error, value => { const e = obj(value, ["code", "message"]); return { code: str(e.code), message: str(e.message, 4096) }; }) };
133
+ }
134
+ case "heartbeat": return { ...base, type: "heartbeat" };
135
+ case "reconcile": return { ...base, type: "reconcile", final: bool(o.final), operations: list(o.operations, x => { const p = obj(x, ["operationId", "state", "providerResult", "error"]); const state = choice(p.state, ["not_submitted", "dispatching", "provider_accepted", "confirmed", "failed", "rejected", "expired", "unknown"]); const parsed = parseSessionOperation({ protocol: SESSION_PROTOCOL, ...sessionFence(base), operationId: p.operationId, kind: "send_message", state: state === "not_submitted" ? "accepted" : state, providerResult: p.providerResult, error: p.error }); return { operationId: parsed.operationId, state, providerResult: parsed.providerResult, error: parsed.error }; }) };
136
+ }
137
+ return fail();
138
+ };
139
+ export const parseRelayMessage = (x) => {
140
+ if (!x || typeof x !== "object" || !("type" in x))
141
+ return fail();
142
+ if (x.type === "welcome") {
143
+ const o = obj(x, ["type", "protocol", "connectionEpoch", "session", "lastAckedSourceSeq", "limits", ...("requiresLiveSync" in x ? ["requiresLiveSync"] : [])]);
144
+ if ("requiresLiveSync" in o && o.requiresLiveSync !== true)
145
+ return fail();
146
+ const limits = obj(o.limits, Object.keys(RELAY_LIMITS));
147
+ for (const [k, v] of Object.entries(RELAY_LIMITS))
148
+ if (limits[k] !== v)
149
+ return fail();
150
+ return { type: "welcome", protocol: protocol(o.protocol), connectionEpoch: seq(o.connectionEpoch), session: parseSessionSnapshot(o.session), lastAckedSourceSeq: seq(o.lastAckedSourceSeq, true), limits: RELAY_LIMITS, ...("requiresLiveSync" in o ? { requiresLiveSync: true } : {}) };
151
+ }
152
+ const extras = { events_ack: ["batchId", "sourceEpoch", "lastAckedSourceSeq", "lastEventSeq"], source_reset_ack: ["sourceEpoch", "lastEventSeq"], operation_offer: ["operationSeq", "command"], operation_authorized: ["operationId"], receipt_ack: ["operation"], reconcile_result: ["operations"], sync_ack: [], content_request: ["requestId", "kind", ...("kind" in x && x.kind === "timeline" ? ["historyEpoch", "direction", "cursor", "limit"] : ["resourceId", "offset", "limit"])], heartbeat_ack: [], error: ["code", "message"] };
153
+ if (typeof x.type !== "string" || !Object.hasOwn(extras, x.type))
154
+ return fail();
155
+ const o = obj(x, ["type", "protocol", ...fenceKeys(x), ...extras[x.type]]), base = { protocol: protocol(o.protocol), ...fence(o) };
156
+ switch (x.type) {
157
+ case "events_ack": return { ...base, type: "events_ack", batchId: id(o.batchId), sourceEpoch: id(o.sourceEpoch), lastAckedSourceSeq: seq(o.lastAckedSourceSeq, true), lastEventSeq: seq(o.lastEventSeq, true) };
158
+ case "source_reset_ack": return { ...base, type: "source_reset_ack", sourceEpoch: id(o.sourceEpoch), lastEventSeq: seq(o.lastEventSeq, true) };
159
+ case "operation_offer": {
160
+ const command = parseSessionCommand(o.command);
161
+ assertSessionFence(command, sessionFence(base));
162
+ return { ...base, type: "operation_offer", operationSeq: seq(o.operationSeq), command };
163
+ }
164
+ case "operation_authorized": return { ...base, type: "operation_authorized", operationId: id(o.operationId) };
165
+ case "receipt_ack": {
166
+ const operation = parseSessionOperation(o.operation);
167
+ assertSessionFence(operation, sessionFence(base));
168
+ return { ...base, type: "receipt_ack", operation };
169
+ }
170
+ case "reconcile_result": {
171
+ const operations = list(o.operations, parseSessionOperation, 200);
172
+ for (const operation of operations) {
173
+ // Durable receipts retain their original generation across controller recovery.
174
+ if (BigInt(operation.executionGeneration) > BigInt(base.executionGeneration))
175
+ return fail();
176
+ assertSessionFence(operation, { ...sessionFence(base), executionGeneration: operation.executionGeneration });
177
+ }
178
+ return { ...base, type: "reconcile_result", operations };
179
+ }
180
+ case "sync_ack": return { ...base, type: "sync_ack" };
181
+ case "content_request": {
182
+ if (typeof o.limit !== "number" || !Number.isSafeInteger(o.limit) || o.limit < 1)
183
+ return fail();
184
+ if (o.kind === "timeline") {
185
+ if (o.limit > 200)
186
+ return fail();
187
+ const direction = choice(o.direction, ["tail", "before", "after"]);
188
+ const cursor = nullable(o.cursor, str);
189
+ if ((direction === "tail") !== (cursor === null))
190
+ return fail();
191
+ return { ...base, type: "content_request", requestId: id(o.requestId), kind: "timeline", historyEpoch: id(o.historyEpoch), direction, cursor, limit: o.limit };
192
+ }
193
+ if (o.kind !== "resource" || o.limit > 524288)
194
+ return fail();
195
+ return { ...base, type: "content_request", requestId: id(o.requestId), kind: "resource", resourceId: id(o.resourceId), offset: seq(o.offset, true), limit: o.limit };
196
+ }
197
+ case "heartbeat_ack": return { ...base, type: "heartbeat_ack" };
198
+ case "error": return { ...base, type: "error", code: str(o.code), message: str(o.message, 1_048_576) };
199
+ }
200
+ return fail();
201
+ };
202
+ export const parseBrowserMessage = (x) => {
203
+ if (!x || typeof x !== "object" || !("type" in x))
204
+ return fail();
205
+ if (x.type === "snapshot") {
206
+ const o = obj(x, ["type", "protocol", "userId", "snapshot", "cursor"]);
207
+ return { type: "snapshot", protocol: protocol(o.protocol), userId: id(o.userId), snapshot: parseSessionSnapshot(o.snapshot), cursor: str(o.cursor) };
208
+ }
209
+ if (x.type === "event") {
210
+ const o = obj(x, ["type", "protocol", "event", "cursor"]);
211
+ return { type: "event", protocol: protocol(o.protocol), event: parseSessionEvent(o.event), cursor: str(o.cursor) };
212
+ }
213
+ const o = obj(x, ["type", "protocol", "reason"]);
214
+ if (o.type !== "reset_required")
215
+ return fail();
216
+ return { type: "reset_required", protocol: protocol(o.protocol), reason: str(o.reason, 1_048_576) };
217
+ };
218
+ //# sourceMappingURL=controller-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller-protocol.js","sourceRoot":"","sources":["../../src/session/controller-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type SessionSetting = {
2
+ readonly id: string;
3
+ readonly category: "model" | "reasoning" | "permission";
4
+ readonly label: string;
5
+ readonly description: string | null;
6
+ readonly value: string | null;
7
+ readonly options: readonly {
8
+ readonly value: string;
9
+ readonly label: string;
10
+ }[];
11
+ readonly mutable: boolean;
12
+ readonly scope: "session" | "next_turn";
13
+ };
14
+ export type SessionNativeCommand = {
15
+ readonly id: string;
16
+ readonly name: string;
17
+ readonly description: string;
18
+ readonly argumentHint: string | null;
19
+ readonly available: boolean;
20
+ };
21
+ export type SessionControls = {
22
+ readonly revision: string;
23
+ readonly settings: readonly SessionSetting[];
24
+ readonly commands: readonly SessionNativeCommand[];
25
+ readonly settingsError: string | null;
26
+ readonly commandsError: string | null;
27
+ };
28
+ export declare const parseSessionControls: (value: unknown) => SessionControls;
@@ -0,0 +1,37 @@
1
+ const invalid = () => { throw new Error("Invalid session controls."); };
2
+ const object = (value, keys) => {
3
+ if (!value || typeof value !== "object" || Array.isArray(value))
4
+ return invalid();
5
+ const result = value;
6
+ if (Object.keys(result).length !== keys.length || keys.some(key => !Object.hasOwn(result, key)))
7
+ return invalid();
8
+ return result;
9
+ };
10
+ const text = (value, maximum = 4096) => typeof value === "string" && value.isWellFormed() && !value.includes("\0") && /[^\p{White_Space}]/u.test(value) && new TextEncoder().encode(value).length <= maximum ? value : invalid();
11
+ const nullable = (value) => value === null ? null : text(value);
12
+ const bool = (value) => typeof value === "boolean" ? value : invalid();
13
+ const choice = (value, options) => options.includes(value) ? value : invalid();
14
+ const list = (value, parse, key, maximum) => {
15
+ if (!Array.isArray(value) || value.length > maximum)
16
+ return invalid();
17
+ const result = value.map(parse);
18
+ if (new Set(result.map(key)).size !== result.length)
19
+ return invalid();
20
+ return result;
21
+ };
22
+ export const parseSessionControls = (value) => {
23
+ const data = object(value, ["revision", "settings", "commands", "settingsError", "commandsError"]);
24
+ const revision = text(data.revision, 19);
25
+ if (!/^[1-9][0-9]{0,18}$/.test(revision) || BigInt(revision) > 9223372036854775807n)
26
+ return invalid();
27
+ return {
28
+ revision,
29
+ settings: list(data.settings, raw => {
30
+ const setting = object(raw, ["id", "category", "label", "description", "value", "options", "mutable", "scope"]);
31
+ return { id: text(setting.id, 256), category: choice(setting.category, ["model", "reasoning", "permission"]), label: text(setting.label), description: nullable(setting.description), value: nullable(setting.value), options: list(setting.options, raw => { const option = object(raw, ["value", "label"]); return { value: text(option.value), label: text(option.label) }; }, option => option.value, 500), mutable: bool(setting.mutable), scope: choice(setting.scope, ["session", "next_turn"]) };
32
+ }, setting => setting.id, 32),
33
+ commands: list(data.commands, raw => { const command = object(raw, ["id", "name", "description", "argumentHint", "available"]); return { id: text(command.id, 256), name: text(command.name, 256), description: text(command.description), argumentHint: nullable(command.argumentHint), available: bool(command.available) }; }, command => command.id, 500),
34
+ settingsError: nullable(data.settingsError), commandsError: nullable(data.commandsError),
35
+ };
36
+ };
37
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/session/controls.ts"],"names":[],"mappings":"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"}