@codetreker/daynight 0.25.2 → 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 (181) hide show
  1. package/README.md +116 -8
  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/skill/skills/using-daynight/SKILL.md +24 -20
  104. package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +16 -10
  105. package/dist/commands/skill/skills/using-daynight/references/create-task.md +40 -39
  106. package/dist/commands/skill/skills/using-daynight/references/goal.md +40 -29
  107. package/dist/commands/skill/skills/using-daynight/references/handbook.md +4 -3
  108. package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -0
  109. package/dist/commands/skill/skills/using-daynight/references/run-task.md +3 -3
  110. package/dist/commands/skill/skills/using-daynight/references/task-content.md +96 -51
  111. package/dist/commands/skill/skills/using-daynight/references/task-execution.md +28 -22
  112. package/dist/commands/worker/backend.d.ts +7 -0
  113. package/dist/commands/worker/backend.js +7 -0
  114. package/dist/commands/worker/backend.js.map +1 -0
  115. package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
  116. package/dist/commands/worker/backends/grant-renewal.js +42 -0
  117. package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
  118. package/dist/commands/worker/backends/session-api.d.ts +66 -0
  119. package/dist/commands/worker/backends/session-api.js +84 -0
  120. package/dist/commands/worker/backends/session-api.js.map +1 -0
  121. package/dist/commands/worker/backends/web-process.d.ts +79 -0
  122. package/dist/commands/worker/backends/web-process.js +156 -0
  123. package/dist/commands/worker/backends/web-process.js.map +1 -0
  124. package/dist/commands/worker/backends/web-store.d.ts +49 -0
  125. package/dist/commands/worker/backends/web-store.js +323 -0
  126. package/dist/commands/worker/backends/web-store.js.map +1 -0
  127. package/dist/commands/worker/backends/web-types.d.ts +83 -0
  128. package/dist/commands/worker/backends/web-types.js +3 -0
  129. package/dist/commands/worker/backends/web-types.js.map +1 -0
  130. package/dist/commands/worker/backends/web.d.ts +26 -0
  131. package/dist/commands/worker/backends/web.js +178 -0
  132. package/dist/commands/worker/backends/web.js.map +1 -0
  133. package/dist/commands/worker/config.js +12 -5
  134. package/dist/commands/worker/config.js.map +1 -1
  135. package/dist/commands/worker/control.d.ts +2 -0
  136. package/dist/commands/worker/control.js +11 -4
  137. package/dist/commands/worker/control.js.map +1 -1
  138. package/dist/commands/worker/coordinator.d.ts +7 -0
  139. package/dist/commands/worker/coordinator.js +138 -19
  140. package/dist/commands/worker/coordinator.js.map +1 -1
  141. package/dist/commands/worker/herdr/agents.js +11 -8
  142. package/dist/commands/worker/herdr/agents.js.map +1 -1
  143. package/dist/commands/worker/herdr/arguments.js +10 -5
  144. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  145. package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
  146. package/dist/commands/worker/herdr/claude-input.js +20 -0
  147. package/dist/commands/worker/herdr/claude-input.js.map +1 -0
  148. package/dist/commands/worker/herdr/instance.js +1 -1
  149. package/dist/commands/worker/herdr/instance.js.map +1 -1
  150. package/dist/commands/worker/herdr/preflight.d.ts +1 -1
  151. package/dist/commands/worker/herdr/preflight.js +31 -10
  152. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  153. package/dist/commands/worker/herdr.js +5 -1
  154. package/dist/commands/worker/herdr.js.map +1 -1
  155. package/dist/commands/worker/prompts.js +5 -1
  156. package/dist/commands/worker/prompts.js.map +1 -1
  157. package/dist/commands/worker/repositories.js +2 -2
  158. package/dist/commands/worker/repositories.js.map +1 -1
  159. package/dist/commands/worker/runtime.js +62 -10
  160. package/dist/commands/worker/runtime.js.map +1 -1
  161. package/dist/commands/worker/setup-environment.d.ts +2 -1
  162. package/dist/commands/worker/setup-environment.js +10 -4
  163. package/dist/commands/worker/setup-environment.js.map +1 -1
  164. package/dist/commands/worker/setup.js +5 -5
  165. package/dist/commands/worker/setup.js.map +1 -1
  166. package/dist/commands/worker/store.d.ts +2 -1
  167. package/dist/commands/worker/store.js +19 -9
  168. package/dist/commands/worker/store.js.map +1 -1
  169. package/dist/commands/worker/types.d.ts +4 -1
  170. package/dist/commands/worker/worktrees.js +9 -6
  171. package/dist/commands/worker/worktrees.js.map +1 -1
  172. package/dist/session/controller-protocol.d.ts +245 -0
  173. package/dist/session/controller-protocol.js +218 -0
  174. package/dist/session/controller-protocol.js.map +1 -0
  175. package/dist/session/controls.d.ts +28 -0
  176. package/dist/session/controls.js +37 -0
  177. package/dist/session/controls.js.map +1 -0
  178. package/dist/session/protocol.d.ts +290 -0
  179. package/dist/session/protocol.js +307 -0
  180. package/dist/session/protocol.js.map +1 -0
  181. package/package.json +7 -2
@@ -0,0 +1,307 @@
1
+ import { parseSessionControls } from "./controls.js";
2
+ // This wire contract is shared with the browser and must not import Node modules.
3
+ export const SESSION_PROTOCOL = "daynight.session.v1";
4
+ export const SESSION_SCHEMA_VERSION = 1;
5
+ export const SESSION_PROJECTION_VERSION = 1;
6
+ const invalid = () => { throw new Error("Invalid Daynight session protocol value."); };
7
+ const object = (value, keys) => {
8
+ if (typeof value !== "object" || value === null || Array.isArray(value))
9
+ return invalid();
10
+ const data = value;
11
+ if (Object.keys(data).length !== keys.length || keys.some((key) => !Object.hasOwn(data, key)))
12
+ return invalid();
13
+ return data;
14
+ };
15
+ const textBytes = new TextEncoder();
16
+ const text = (value, allowEmpty = false) => {
17
+ if (typeof value !== "string" || value.length > 1_048_576 || !value.isWellFormed() || value.includes("\0") || (!allowEmpty && !/[^\p{White_Space}]/u.test(value)) || textBytes.encode(value).byteLength > 1_048_576)
18
+ return invalid();
19
+ return value;
20
+ };
21
+ const key = (value) => {
22
+ const result = text(value);
23
+ return textBytes.encode(result).byteLength <= 256 ? result : invalid();
24
+ };
25
+ const id = (value) => {
26
+ if (typeof value !== "string" || !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value))
27
+ return invalid();
28
+ return value;
29
+ };
30
+ const sequence = (value, zero = false) => {
31
+ if (typeof value !== "string" || !/^(0|[1-9][0-9]*)$/.test(value) || value.length > 19 || (!zero && value === "0") || BigInt(value) > 9223372036854775807n)
32
+ return invalid();
33
+ return value;
34
+ };
35
+ const bool = (value) => typeof value === "boolean" ? value : invalid();
36
+ const finite = (value) => typeof value === "number" && Number.isFinite(value) ? value : invalid();
37
+ const oneOf = (value, values) => typeof value === "string" && values.includes(value) ? value : invalid();
38
+ const nullable = (value, parse) => value === null ? null : parse(value);
39
+ const list = (value, parse) => {
40
+ if (!Array.isArray(value) || value.length > 1000)
41
+ return invalid();
42
+ return value.map(parse);
43
+ };
44
+ const unique = (values, identity) => new Set(values.map(identity)).size === values.length ? values : invalid();
45
+ const nonempty = (values) => values.length > 0 ? values : invalid();
46
+ const protocol = (value) => value === SESSION_PROTOCOL ? value : invalid();
47
+ export const sessionBindingKeys = (value) => {
48
+ if (!value || typeof value !== "object" || Object.hasOwn(value, "claimId") === Object.hasOwn(value, "testExecutionId"))
49
+ return invalid();
50
+ return Object.hasOwn(value, "testExecutionId") ? ["testExecutionId"] : ["claimId"];
51
+ };
52
+ export const sessionBinding = (value) => {
53
+ const keys = sessionBindingKeys(value), data = value;
54
+ return keys[0] === "testExecutionId" ? { testExecutionId: id(data.testExecutionId) } : { claimId: id(data.claimId) };
55
+ };
56
+ const fenceKeys = (value) => ["sessionId", ...sessionBindingKeys(value), "executionGeneration"];
57
+ export const sessionFence = (data) => ({ sessionId: id(data.sessionId), ...sessionBinding(data), executionGeneration: sequence(data.executionGeneration) });
58
+ const fence = (data) => sessionFence(data);
59
+ export const sessionFenceKey = (data) => JSON.stringify(sessionFence(data));
60
+ // A connection epoch fences relay traffic; it is not evidence that a native writer stopped.
61
+ export const assertSessionFence = (actual, expected) => {
62
+ if (actual.sessionId !== expected.sessionId || actual.claimId !== expected.claimId || actual.testExecutionId !== expected.testExecutionId || actual.executionGeneration !== expected.executionGeneration || (expected.connectionEpoch !== undefined && actual.connectionEpoch !== expected.connectionEpoch)) {
63
+ throw new Error("Daynight session fence mismatch.");
64
+ }
65
+ };
66
+ const approvalAction = (value) => oneOf(value, ["allow_once", "allow_session", "reject"]);
67
+ const option = (value) => {
68
+ const data = object(value, ["id", "label"]);
69
+ return { id: key(data.id), label: text(data.label) };
70
+ };
71
+ const options = (value) => unique(list(value, option), (item) => item.id);
72
+ export const parseInteractionResponse = (value) => {
73
+ if (typeof value !== "object" || value === null || !("kind" in value))
74
+ return invalid();
75
+ if (value.kind === "dismiss") {
76
+ object(value, ["kind"]);
77
+ return { kind: "dismiss" };
78
+ }
79
+ if (value.kind === "approval") {
80
+ const data = object(value, ["kind", "action"]);
81
+ return { kind: "approval", action: approvalAction(data.action) };
82
+ }
83
+ if (value.kind === "question") {
84
+ const data = object(value, ["kind", "answers"]);
85
+ return { kind: "question", answers: nonempty(unique(list(data.answers, (answer) => {
86
+ const item = object(answer, ["questionId", "optionIds", "text"]);
87
+ return { questionId: key(item.questionId), optionIds: unique(list(item.optionIds, key), (entry) => entry), text: nullable(item.text, (value) => text(value, true)) };
88
+ }), (item) => item.questionId)) };
89
+ }
90
+ if (value.kind === "form") {
91
+ const data = object(value, ["kind", "values"]);
92
+ return { kind: "form", values: unique(list(data.values, (field) => {
93
+ const item = object(field, ["fieldId", "value"]);
94
+ const parsed = typeof item.value === "string" ? text(item.value, true) : typeof item.value === "boolean" ? item.value : typeof item.value === "number" ? finite(item.value) : unique(list(item.value, key), (entry) => entry);
95
+ return { fieldId: key(item.fieldId), value: parsed };
96
+ }), (item) => item.fieldId) };
97
+ }
98
+ return invalid();
99
+ };
100
+ export const parseSessionCommand = (value) => {
101
+ const data = object(value, ["protocol", "requestId", "operationId", ...fenceKeys(value), "kind", "payload"]);
102
+ const requestId = key(data.requestId);
103
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/.test(requestId))
104
+ return invalid();
105
+ const base = { protocol: protocol(data.protocol), requestId, operationId: id(data.operationId), ...fence(data) };
106
+ if (data.kind === "send_message") {
107
+ const payload = object(data.payload, ["content", "expectedTurnId"]);
108
+ const content = nonempty(list(payload.content, (part) => {
109
+ const item = object(part, ["type", "text"]);
110
+ if (item.type !== "text")
111
+ return invalid();
112
+ return { type: "text", text: text(item.text) };
113
+ }));
114
+ return { ...base, kind: "send_message", payload: { content, expectedTurnId: nullable(payload.expectedTurnId, key) } };
115
+ }
116
+ if (data.kind === "update_setting") {
117
+ const payload = object(data.payload, ["settingId", "value", "expectedControlsRevision"]);
118
+ const value = text(payload.value);
119
+ if (textBytes.encode(value).length > 4096)
120
+ return invalid();
121
+ return { ...base, kind: "update_setting", payload: { settingId: key(payload.settingId), value, expectedControlsRevision: sequence(payload.expectedControlsRevision) } };
122
+ }
123
+ if (data.kind === "execute_command") {
124
+ const payload = object(data.payload, ["commandId", "arguments", "expectedControlsRevision", "expectedTurnId"]);
125
+ return { ...base, kind: "execute_command", payload: { commandId: key(payload.commandId), arguments: text(payload.arguments, true), expectedControlsRevision: sequence(payload.expectedControlsRevision), expectedTurnId: nullable(payload.expectedTurnId, key) } };
126
+ }
127
+ if (data.kind === "refresh_controls") {
128
+ object(data.payload, []);
129
+ return { ...base, kind: "refresh_controls", payload: {} };
130
+ }
131
+ if (data.kind === "cancel") {
132
+ const payload = object(data.payload, ["expectedTurnId"]);
133
+ return { ...base, kind: "cancel", payload: { expectedTurnId: key(payload.expectedTurnId) } };
134
+ }
135
+ if (data.kind === "interaction_response") {
136
+ const payload = object(data.payload, ["interactionId", "interactionRevision", "submissionId", "response"]);
137
+ return { ...base, kind: "interaction_response", payload: { interactionId: id(payload.interactionId), interactionRevision: sequence(payload.interactionRevision), submissionId: id(payload.submissionId), response: parseInteractionResponse(payload.response) } };
138
+ }
139
+ return invalid();
140
+ };
141
+ export const sessionControlKeys = (value) => value && typeof value === "object" ? ["controls", "turnStartedAt"].filter(key => Object.hasOwn(value, key)) : [];
142
+ export const parseSessionControlFields = (data) => {
143
+ const result = {};
144
+ if (Object.hasOwn(data, "controls"))
145
+ result.controls = parseSessionControls(data.controls);
146
+ if (Object.hasOwn(data, "turnStartedAt")) {
147
+ const value = data.turnStartedAt;
148
+ if (value !== null && (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value) || !Number.isFinite(Date.parse(value)) || new Date(value).toISOString() !== value))
149
+ return invalid();
150
+ result.turnStartedAt = value;
151
+ }
152
+ return result;
153
+ };
154
+ export const parseSessionSnapshot = (value) => {
155
+ const data = object(value, ["protocol", "schemaVersion", "projectionVersion", ...fenceKeys(value), ...sessionControlKeys(value), "connectionEpoch", "identity", "sessionRevision", "historyEpoch", "lastEventSeq", "lastTimelineSeq", "initialInputState", "synchronized", "lifecycle", "connectionState", "activity", "currentTurnId", "capabilities", "operations", ...(value && typeof value === "object" && Object.hasOwn(value, "cleanupInteractionIds") ? ["cleanupInteractionIds"] : [])]);
156
+ if (data.schemaVersion !== SESSION_SCHEMA_VERSION || data.projectionVersion !== SESSION_PROJECTION_VERSION)
157
+ return invalid();
158
+ const test = Object.hasOwn(data, "testExecutionId");
159
+ const identity = object(data.identity, [...(test ? ["ownerUserId"] : ["projectId", "taskId", "workerId", "worktreeId"]), "controllerId", "controllerInstanceId", "agentControlMode", "provider", "nativeSessionId"]);
160
+ if (identity.agentControlMode !== "web")
161
+ return invalid();
162
+ const capabilities = object(data.capabilities, ["send", "steer", "cancel", "respond"]);
163
+ const operations = object(data.operations, ["canSend", "canCancel", "canRespond"]);
164
+ const result = {
165
+ ...parseSessionControlFields(data),
166
+ ...(Object.hasOwn(data, "cleanupInteractionIds") ? { cleanupInteractionIds: unique(list(data.cleanupInteractionIds, id), item => item) } : {}),
167
+ protocol: protocol(data.protocol), schemaVersion: SESSION_SCHEMA_VERSION, projectionVersion: SESSION_PROJECTION_VERSION, ...fence(data), connectionEpoch: sequence(data.connectionEpoch, true),
168
+ identity: { ...(test ? { ownerUserId: id(identity.ownerUserId) } : { projectId: id(identity.projectId), taskId: id(identity.taskId), workerId: id(identity.workerId), worktreeId: id(identity.worktreeId) }), controllerId: id(identity.controllerId), controllerInstanceId: id(identity.controllerInstanceId), agentControlMode: "web", provider: oneOf(identity.provider, ["codex", "claude", "copilot"]), nativeSessionId: nullable(identity.nativeSessionId, key) },
169
+ sessionRevision: sequence(data.sessionRevision), historyEpoch: key(data.historyEpoch), lastEventSeq: sequence(data.lastEventSeq, true), lastTimelineSeq: sequence(data.lastTimelineSeq, true),
170
+ initialInputState: oneOf(data.initialInputState, [...(test ? ["not_required"] : []), "not_submitted", "dispatching", "provider_accepted", "confirmed", "failed", "unknown"]), synchronized: bool(data.synchronized),
171
+ lifecycle: oneOf(data.lifecycle, ["active", "draining", "archived"]), connectionState: oneOf(data.connectionState, ["connected", "disconnected", "synchronizing"]), activity: oneOf(data.activity, ["initializing", "idle", "working", "waiting_input", "stopped", "unknown"]), currentTurnId: nullable(data.currentTurnId, key),
172
+ capabilities: { send: bool(capabilities.send), steer: bool(capabilities.steer), cancel: bool(capabilities.cancel), respond: bool(capabilities.respond) },
173
+ operations: { canSend: bool(operations.canSend), canCancel: bool(operations.canCancel), canRespond: bool(operations.canRespond) },
174
+ };
175
+ // Initial approval callbacks may be actionable before the managed input is accepted.
176
+ const writable = (result.lifecycle === "active" || result.lifecycle === "draining" && !result.operations.canSend && !result.operations.canCancel) && result.connectionState === "connected" && result.synchronized;
177
+ if (result.connectionEpoch === "0" && (result.connectionState === "connected" || result.operations.canSend || result.operations.canCancel || result.operations.canRespond))
178
+ return invalid();
179
+ if ((result.operations.canSend || result.operations.canCancel || result.operations.canRespond) && !writable)
180
+ return invalid();
181
+ if (result.operations.canSend && (!result.capabilities.send || (result.identity.nativeSessionId === null && !(test && result.initialInputState === "not_required" && result.activity === "idle")) || !["not_required", "provider_accepted", "confirmed"].includes(result.initialInputState) || !(result.activity === "idle" || (result.activity === "working" && result.capabilities.steer && result.currentTurnId !== null))))
182
+ return invalid();
183
+ if (result.operations.canCancel && (!result.capabilities.cancel || result.currentTurnId === null))
184
+ return invalid();
185
+ if (result.operations.canRespond && (!result.capabilities.respond || result.lifecycle === "draining" && !result.cleanupInteractionIds?.length))
186
+ return invalid();
187
+ return result;
188
+ };
189
+ export const parseSessionOperation = (value) => {
190
+ const data = object(value, ["protocol", ...fenceKeys(value), "operationId", "kind", "state", "providerResult", "error"]);
191
+ const error = data.error === null ? null : object(data.error, ["code", "message"]);
192
+ return { protocol: protocol(data.protocol), ...fence(data), operationId: id(data.operationId), kind: oneOf(data.kind, ["send_message", "cancel", "interaction_response", "update_setting", "execute_command", "refresh_controls"]), state: oneOf(data.state, ["accepted", "offered", "dispatching", "provider_accepted", "confirmed", "failed", "rejected", "expired", "unknown"]), providerResult: nullable(data.providerResult, (value) => oneOf(value, ["started", "queued", "handled"])), error: error === null ? null : { code: key(error.code), message: text(error.message) } };
193
+ };
194
+ export const parseSessionResource = (value) => {
195
+ const data = object(value, ["resourceId", "status", "name", "mediaType", "byteLength", "sha256", "error"]);
196
+ const result = { resourceId: id(data.resourceId), status: oneOf(data.status, ["pending", "available", "failed", "unavailable"]), name: key(data.name), mediaType: nullable(data.mediaType, key), byteLength: nullable(data.byteLength, (value) => sequence(value, true)), sha256: nullable(data.sha256, key), error: nullable(data.error, text) };
197
+ if (result.sha256 !== null && !/^[a-f0-9]{64}$/.test(result.sha256))
198
+ return invalid();
199
+ if (result.mediaType !== null && !/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/.test(result.mediaType))
200
+ return invalid();
201
+ if (result.status === "available" && (result.sha256 === null || result.mediaType === null || result.byteLength === null || result.error !== null))
202
+ return invalid();
203
+ return result;
204
+ };
205
+ const formField = (value) => {
206
+ if (typeof value !== "object" || value === null || !("type" in value))
207
+ return invalid();
208
+ const extra = value.type === "text" ? ["sensitive"] : value.type === "number" ? ["min", "max"] : value.type === "boolean" ? [] : ["options"];
209
+ const data = object(value, ["fieldId", "label", "required", "type", ...extra]);
210
+ const base = { fieldId: key(data.fieldId), label: text(data.label), required: bool(data.required) };
211
+ if (data.type === "text")
212
+ return { ...base, type: "text", sensitive: bool(data.sensitive) };
213
+ if (data.type === "number") {
214
+ const min = nullable(data.min, finite), max = nullable(data.max, finite);
215
+ if (min !== null && max !== null && min > max)
216
+ return invalid();
217
+ return { ...base, type: "number", min, max };
218
+ }
219
+ if (data.type === "boolean")
220
+ return { ...base, type: "boolean" };
221
+ return { ...base, type: oneOf(data.type, ["select", "multiselect"]), options: nonempty(options(data.options)) };
222
+ };
223
+ export const parseSessionInteraction = (value) => {
224
+ if (typeof value !== "object" || value === null || !("kind" in value))
225
+ return invalid();
226
+ const extra = value.kind === "approval" ? ["detail", "actions"] : value.kind === "question" ? ["questions", "canDismiss"] : ["fields", "canDismiss"];
227
+ const data = object(value, ["interactionId", "revision", "state", "title", "kind", ...extra]);
228
+ const base = { interactionId: id(data.interactionId), revision: sequence(data.revision), state: oneOf(data.state, ["pending", "resolved", "expired"]), title: text(data.title) };
229
+ if (data.kind === "approval")
230
+ return { ...base, kind: "approval", detail: text(data.detail, true), actions: nonempty(unique(list(data.actions, approvalAction), (item) => item)) };
231
+ if (data.kind === "question") {
232
+ return { ...base, kind: "question", canDismiss: bool(data.canDismiss), questions: nonempty(unique(list(data.questions, (value) => {
233
+ const item = object(value, ["questionId", "label", "options", "multiple", "allowCustom", "required", "sensitive"]);
234
+ const result = { questionId: key(item.questionId), label: text(item.label), options: options(item.options), multiple: bool(item.multiple), allowCustom: bool(item.allowCustom), required: bool(item.required), sensitive: bool(item.sensitive) };
235
+ if (result.options.length === 0 && !result.allowCustom)
236
+ return invalid();
237
+ return result;
238
+ }), (item) => item.questionId)) };
239
+ }
240
+ if (data.kind === "form")
241
+ return { ...base, kind: "form", canDismiss: bool(data.canDismiss), fields: nonempty(unique(list(data.fields, formField), (item) => item.fieldId)) };
242
+ return invalid();
243
+ };
244
+ const messagePart = (value) => {
245
+ if (typeof value !== "object" || value === null || !("type" in value))
246
+ return invalid();
247
+ if (value.type === "text") {
248
+ const data = object(value, ["type", "text"]);
249
+ return { type: "text", text: text(data.text, true) };
250
+ }
251
+ if (value.type === "resource") {
252
+ const data = object(value, ["type", "resourceId", "label"]);
253
+ return { type: "resource", resourceId: id(data.resourceId), label: text(data.label) };
254
+ }
255
+ return invalid();
256
+ };
257
+ export const parseTimelineEntry = (value) => {
258
+ if (typeof value !== "object" || value === null || !("kind" in value))
259
+ return invalid();
260
+ const common = ["entryId", "entrySeq", "revision", "kind"];
261
+ const extras = {
262
+ user_message: ["content"], assistant_message: ["content"], reasoning: ["text"], tool_call: ["callId", "name", "input", "output", "status", "truncated"],
263
+ interaction: ["interaction"], error: ["code", "message"], compaction: ["summary"], todo: ["items"],
264
+ };
265
+ const kind = oneOf(value.kind, ["user_message", "assistant_message", "reasoning", "tool_call", "interaction", "error", "compaction", "todo"]);
266
+ const data = object(value, [...common, ...extras[kind]]);
267
+ const base = { entryId: id(data.entryId), entrySeq: sequence(data.entrySeq), revision: sequence(data.revision) };
268
+ if (kind === "user_message" || kind === "assistant_message")
269
+ return { ...base, kind, content: list(data.content, messagePart) };
270
+ if (kind === "reasoning")
271
+ return { ...base, kind, text: text(data.text, true) };
272
+ if (kind === "tool_call")
273
+ return { ...base, kind, callId: key(data.callId), name: key(data.name), input: text(data.input, true), output: list(data.output, messagePart), status: oneOf(data.status, ["running", "completed", "failed"]), truncated: bool(data.truncated) };
274
+ if (kind === "interaction")
275
+ return { ...base, kind, interaction: parseSessionInteraction(data.interaction) };
276
+ if (kind === "error")
277
+ return { ...base, kind, code: key(data.code), message: text(data.message) };
278
+ if (kind === "compaction")
279
+ return { ...base, kind, summary: text(data.summary, true) };
280
+ return { ...base, kind: "todo", items: unique(list(data.items, (value) => { const item = object(value, ["id", "text", "status"]); return { id: key(item.id), text: text(item.text), status: oneOf(item.status, ["pending", "in_progress", "completed"]) }; }), (item) => item.id) };
281
+ };
282
+ export const parseSessionEvent = (value) => {
283
+ const data = object(value, ["protocol", ...fenceKeys(value), "connectionEpoch", "eventSeq", "historyEpoch", "kind", "payload"]);
284
+ const base = { protocol: protocol(data.protocol), ...fence(data), connectionEpoch: sequence(data.connectionEpoch, data.kind === "snapshot"), eventSeq: sequence(data.eventSeq), historyEpoch: key(data.historyEpoch) };
285
+ if (data.kind === "timeline_upsert")
286
+ return { ...base, kind: "timeline_upsert", payload: parseTimelineEntry(data.payload) };
287
+ if (data.kind === "snapshot") {
288
+ const payload = parseSessionSnapshot(data.payload);
289
+ assertSessionFence(payload, base);
290
+ if (payload.historyEpoch !== base.historyEpoch)
291
+ return invalid();
292
+ return { ...base, kind: "snapshot", payload };
293
+ }
294
+ if (data.kind === "operation") {
295
+ const payload = parseSessionOperation(data.payload);
296
+ assertSessionFence(payload, fence(data));
297
+ return { ...base, kind: "operation", payload };
298
+ }
299
+ if (data.kind === "resource")
300
+ return { ...base, kind: "resource", payload: parseSessionResource(data.payload) };
301
+ if (data.kind === "gap") {
302
+ const payload = object(data.payload, ["reason", "cursor"]);
303
+ return { ...base, kind: "gap", payload: { reason: text(payload.reason), cursor: nullable(payload.cursor, key) } };
304
+ }
305
+ return invalid();
306
+ };
307
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/session/protocol.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codetreker/daynight",
3
- "version": "0.25.2",
3
+ "version": "0.26.0",
4
4
  "description": "A client command toolkit for development workflows",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,6 +28,9 @@
28
28
  "completion:acceptance": "pnpm run build && python3 -u test/acceptance/shell-completion.py"
29
29
  },
30
30
  "dependencies": {
31
+ "@anthropic-ai/claude-agent-sdk": "0.3.247",
32
+ "@github/copilot": "1.0.83",
33
+ "@github/copilot-sdk": "1.0.11",
31
34
  "@inquirer/prompts": "8.7.4",
32
35
  "better-sqlite3": "13.0.3",
33
36
  "cross-spawn": "7.0.6",
@@ -36,6 +39,7 @@
36
39
  "semver": "7.8.5",
37
40
  "smol-toml": "1.9.1",
38
41
  "which": "6.0.1",
42
+ "ws": "8.22.0",
39
43
  "yaml": "2.9.1"
40
44
  },
41
45
  "devDependencies": {
@@ -44,10 +48,11 @@
44
48
  "@types/node": "24.19.2",
45
49
  "@types/semver": "7.8.0",
46
50
  "@types/which": "3.0.4",
51
+ "@types/ws": "8.18.2",
47
52
  "node-pty": "1.1.0",
48
53
  "typescript": "7.0.2",
49
54
  "vite": "8.3.4",
50
55
  "vitest": "5.0.5"
51
56
  },
52
- "gitHead": "fb07e18b269c8ccacaaf07e6f08aa43ac3da4ddd"
57
+ "gitHead": "f630cc553e38d079e6d08a9a4ef01c68d7258d67"
53
58
  }