@codetreker/daynight 0.2.4 → 0.6.1

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 (189) hide show
  1. package/dist/api/client.d.ts +43 -0
  2. package/dist/api/client.js +285 -0
  3. package/dist/api/client.js.map +1 -0
  4. package/dist/api/index.d.ts +7 -0
  5. package/dist/api/index.js +5 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/api/json.d.ts +3 -0
  8. package/dist/api/json.js +25 -0
  9. package/dist/api/json.js.map +1 -0
  10. package/dist/api/operation.d.ts +23 -0
  11. package/dist/api/operation.js +78 -0
  12. package/dist/api/operation.js.map +1 -0
  13. package/dist/api/parse.d.ts +12 -0
  14. package/dist/api/parse.js +160 -0
  15. package/dist/api/parse.js.map +1 -0
  16. package/dist/api/types.d.ts +75 -0
  17. package/dist/api/types.js +2 -0
  18. package/dist/api/types.js.map +1 -0
  19. package/dist/cli/application.d.ts +3 -0
  20. package/dist/cli/application.js +31 -0
  21. package/dist/cli/application.js.map +1 -0
  22. package/dist/cli/commands.d.ts +7 -0
  23. package/dist/cli/commands.js +38 -0
  24. package/dist/cli/commands.js.map +1 -0
  25. package/dist/cli/context.d.ts +17 -0
  26. package/dist/cli/context.js +19 -0
  27. package/dist/cli/context.js.map +1 -0
  28. package/dist/cli/schema.d.ts +52 -0
  29. package/dist/cli/schema.js +108 -0
  30. package/dist/cli/schema.js.map +1 -0
  31. package/dist/commands/completion/bash.d.ts +2 -0
  32. package/dist/commands/completion/bash.js +272 -0
  33. package/dist/commands/completion/bash.js.map +1 -0
  34. package/dist/commands/completion/command.d.ts +2 -0
  35. package/dist/commands/completion/command.js +20 -0
  36. package/dist/commands/completion/command.js.map +1 -0
  37. package/dist/commands/completion/definition.d.ts +2 -0
  38. package/dist/commands/completion/definition.js +8 -0
  39. package/dist/commands/completion/definition.js.map +1 -0
  40. package/dist/commands/completion/zsh.d.ts +2 -0
  41. package/dist/commands/completion/zsh.js +136 -0
  42. package/dist/commands/completion/zsh.js.map +1 -0
  43. package/dist/commands/project/command.d.ts +6 -0
  44. package/dist/commands/project/command.js +39 -0
  45. package/dist/commands/project/command.js.map +1 -0
  46. package/dist/commands/project/definition.d.ts +2 -0
  47. package/dist/commands/project/definition.js +34 -0
  48. package/dist/commands/project/definition.js.map +1 -0
  49. package/dist/commands/project/rendering.d.ts +4 -0
  50. package/dist/commands/project/rendering.js +17 -0
  51. package/dist/commands/project/rendering.js.map +1 -0
  52. package/dist/{copilot.d.ts → commands/review/adapters/copilot.d.ts} +20 -12
  53. package/dist/commands/review/adapters/copilot.js +360 -0
  54. package/dist/commands/review/adapters/copilot.js.map +1 -0
  55. package/dist/{github.d.ts → commands/review/adapters/github.d.ts} +2 -19
  56. package/dist/{github.js → commands/review/adapters/github.js} +0 -43
  57. package/dist/commands/review/adapters/github.js.map +1 -0
  58. package/dist/{git.d.ts → commands/review/adapters/worktrees.d.ts} +3 -2
  59. package/dist/{git.js → commands/review/adapters/worktrees.js} +3 -3
  60. package/dist/commands/review/adapters/worktrees.js.map +1 -0
  61. package/dist/commands/review/command.d.ts +11 -0
  62. package/dist/commands/review/command.js +42 -0
  63. package/dist/commands/review/command.js.map +1 -0
  64. package/dist/{config.d.ts → commands/review/config.d.ts} +8 -8
  65. package/dist/{config.js → commands/review/config.js} +25 -44
  66. package/dist/commands/review/config.js.map +1 -0
  67. package/dist/{coordinator.d.ts → commands/review/coordinator.d.ts} +8 -7
  68. package/dist/{coordinator.js → commands/review/coordinator.js} +8 -3
  69. package/dist/commands/review/coordinator.js.map +1 -0
  70. package/dist/commands/review/definition.d.ts +2 -0
  71. package/dist/commands/review/definition.js +33 -0
  72. package/dist/commands/review/definition.js.map +1 -0
  73. package/dist/commands/review/instance-lock.js.map +1 -0
  74. package/dist/commands/review/listing.d.ts +5 -0
  75. package/dist/{review-list.js → commands/review/listing.js} +3 -9
  76. package/dist/commands/review/listing.js.map +1 -0
  77. package/dist/commands/review/model.d.ts +79 -0
  78. package/dist/commands/review/model.js +2 -0
  79. package/dist/commands/review/model.js.map +1 -0
  80. package/dist/commands/review/paths.d.ts +11 -0
  81. package/dist/commands/review/paths.js +16 -0
  82. package/dist/commands/review/paths.js.map +1 -0
  83. package/dist/commands/review/polling.d.ts +21 -0
  84. package/dist/commands/review/polling.js +44 -0
  85. package/dist/commands/review/polling.js.map +1 -0
  86. package/dist/{processes.d.ts → commands/review/processes.d.ts} +3 -3
  87. package/dist/commands/review/processes.js.map +1 -0
  88. package/dist/{repositories.d.ts → commands/review/repositories.d.ts} +2 -2
  89. package/dist/commands/review/repositories.js +70 -0
  90. package/dist/commands/review/repositories.js.map +1 -0
  91. package/dist/{runtime.d.ts → commands/review/runtime.d.ts} +9 -6
  92. package/dist/{runtime.js → commands/review/runtime.js} +11 -8
  93. package/dist/commands/review/runtime.js.map +1 -0
  94. package/dist/commands/review/skill.d.ts +11 -0
  95. package/dist/commands/review/skill.js +242 -0
  96. package/dist/commands/review/skill.js.map +1 -0
  97. package/dist/commands/review/skills/daynight-review/SKILL.md +63 -0
  98. package/dist/{store.d.ts → commands/review/store.d.ts} +5 -79
  99. package/dist/{store.js → commands/review/store.js} +8 -0
  100. package/dist/commands/review/store.js.map +1 -0
  101. package/dist/commands/server/runtime.d.ts +16 -0
  102. package/dist/commands/server/runtime.js +52 -0
  103. package/dist/commands/server/runtime.js.map +1 -0
  104. package/dist/commands/task/command.d.ts +8 -0
  105. package/dist/commands/task/command.js +106 -0
  106. package/dist/commands/task/command.js.map +1 -0
  107. package/dist/commands/task/definition.d.ts +2 -0
  108. package/dist/commands/task/definition.js +50 -0
  109. package/dist/commands/task/definition.js.map +1 -0
  110. package/dist/commands/task/rendering.d.ts +5 -0
  111. package/dist/commands/task/rendering.js +49 -0
  112. package/dist/commands/task/rendering.js.map +1 -0
  113. package/dist/commands/update/command.d.ts +6 -0
  114. package/dist/commands/update/command.js +23 -0
  115. package/dist/commands/update/command.js.map +1 -0
  116. package/dist/commands/update/definition.d.ts +2 -0
  117. package/dist/commands/update/definition.js +7 -0
  118. package/dist/commands/update/definition.js.map +1 -0
  119. package/dist/{update.d.ts → commands/update/updater.d.ts} +2 -2
  120. package/dist/{update.js → commands/update/updater.js} +3 -3
  121. package/dist/commands/update/updater.js.map +1 -0
  122. package/dist/config/document.d.ts +9 -0
  123. package/dist/config/document.js +45 -0
  124. package/dist/config/document.js.map +1 -0
  125. package/dist/config/files.d.ts +7 -0
  126. package/dist/config/files.js +69 -0
  127. package/dist/config/files.js.map +1 -0
  128. package/dist/config/paths.d.ts +6 -0
  129. package/dist/config/paths.js +9 -0
  130. package/dist/config/paths.js.map +1 -0
  131. package/dist/config/server.d.ts +7 -0
  132. package/dist/config/server.js +34 -0
  133. package/dist/config/server.js.map +1 -0
  134. package/dist/main.js +6 -2
  135. package/dist/main.js.map +1 -1
  136. package/dist/platform/diagnostics.js.map +1 -0
  137. package/dist/platform/files.d.ts +1 -0
  138. package/dist/platform/files.js +48 -0
  139. package/dist/platform/files.js.map +1 -0
  140. package/dist/{paths.d.ts → platform/filesystem.d.ts} +0 -11
  141. package/dist/{paths.js → platform/filesystem.js} +1 -17
  142. package/dist/platform/filesystem.js.map +1 -0
  143. package/dist/platform/terminal.d.ts +1 -0
  144. package/dist/platform/terminal.js +10 -0
  145. package/dist/platform/terminal.js.map +1 -0
  146. package/dist/platform/text.d.ts +2 -0
  147. package/dist/platform/text.js +3 -0
  148. package/dist/platform/text.js.map +1 -0
  149. package/dist/repository/binding.d.ts +21 -0
  150. package/dist/repository/binding.js +242 -0
  151. package/dist/repository/binding.js.map +1 -0
  152. package/dist/repository/context.d.ts +10 -0
  153. package/dist/repository/context.js +32 -0
  154. package/dist/repository/context.js.map +1 -0
  155. package/dist/repository/git.d.ts +20 -0
  156. package/dist/repository/git.js +213 -0
  157. package/dist/repository/git.js.map +1 -0
  158. package/dist/repository/identity.d.ts +5 -0
  159. package/dist/repository/identity.js +154 -0
  160. package/dist/repository/identity.js.map +1 -0
  161. package/dist/repository/index.d.ts +4 -0
  162. package/dist/repository/index.js +3 -0
  163. package/dist/repository/index.js.map +1 -0
  164. package/package.json +6 -5
  165. package/dist/cli.d.ts +0 -19
  166. package/dist/cli.js +0 -202
  167. package/dist/cli.js.map +0 -1
  168. package/dist/config.js.map +0 -1
  169. package/dist/coordinator.js.map +0 -1
  170. package/dist/copilot.js +0 -263
  171. package/dist/copilot.js.map +0 -1
  172. package/dist/diagnostics.js.map +0 -1
  173. package/dist/git.js.map +0 -1
  174. package/dist/github.js.map +0 -1
  175. package/dist/instance-lock.js.map +0 -1
  176. package/dist/paths.js.map +0 -1
  177. package/dist/processes.js.map +0 -1
  178. package/dist/repositories.js +0 -159
  179. package/dist/repositories.js.map +0 -1
  180. package/dist/review-list.d.ts +0 -5
  181. package/dist/review-list.js.map +0 -1
  182. package/dist/runtime.js.map +0 -1
  183. package/dist/store.js.map +0 -1
  184. package/dist/update.js.map +0 -1
  185. /package/dist/{instance-lock.d.ts → commands/review/instance-lock.d.ts} +0 -0
  186. /package/dist/{instance-lock.js → commands/review/instance-lock.js} +0 -0
  187. /package/dist/{processes.js → commands/review/processes.js} +0 -0
  188. /package/dist/{diagnostics.d.ts → platform/diagnostics.d.ts} +0 -0
  189. /package/dist/{diagnostics.js → platform/diagnostics.js} +0 -0
@@ -0,0 +1,242 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstat, mkdir, mkdtemp, readFile, readdir, realpath, rename, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { parseDocument } from "yaml";
5
+ const skillName = "daynight-review";
6
+ const pluginManifest = Buffer.from(`${JSON.stringify({
7
+ $schema: "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
8
+ name: "daynight-review-bundle",
9
+ version: "1.0.0",
10
+ })}\n`, "utf8");
11
+ const hasCode = (error, code) => error instanceof Error && "code" in error && error.code === code;
12
+ const captureBundle = async (directory) => {
13
+ const root = await lstat(directory);
14
+ if (!root.isDirectory() || root.isSymbolicLink()) {
15
+ throw new Error(`Review skill bundle must be a directory without symbolic links: ${directory}.`);
16
+ }
17
+ const entries = [];
18
+ const visit = async (relativeDirectory) => {
19
+ const names = await readdir(path.join(directory, relativeDirectory));
20
+ for (const name of names) {
21
+ if (name === "" || name === "." || name === ".." || /[/\\\0]/u.test(name)) {
22
+ throw new Error(`Review skill bundle contains an invalid path segment: ${JSON.stringify(name)}.`);
23
+ }
24
+ const relativePath = relativeDirectory === "" ? name : `${relativeDirectory}/${name}`;
25
+ const filename = path.join(directory, ...relativePath.split("/"));
26
+ const entry = await lstat(filename);
27
+ if (entry.isSymbolicLink()) {
28
+ throw new Error(`Review skill bundle must not contain symbolic links: ${filename}.`);
29
+ }
30
+ if (entry.isDirectory()) {
31
+ entries.push({ relativePath, type: "directory" });
32
+ await visit(relativePath);
33
+ }
34
+ else if (entry.isFile()) {
35
+ entries.push({ relativePath, type: "file", contents: await readFile(filename) });
36
+ }
37
+ else {
38
+ throw new Error(`Review skill bundle must contain only regular files and directories: ${filename}.`);
39
+ }
40
+ }
41
+ };
42
+ await visit("");
43
+ return entries.sort((left, right) => left.relativePath < right.relativePath ? -1 : left.relativePath > right.relativePath ? 1 : 0);
44
+ };
45
+ const validateEntrypoint = (entries) => {
46
+ const entrypoint = entries.find((entry) => entry.relativePath === "SKILL.md");
47
+ if (entrypoint?.type !== "file") {
48
+ throw new Error("Review skill bundle must contain a regular SKILL.md file.");
49
+ }
50
+ let source;
51
+ try {
52
+ source = new TextDecoder("utf-8", { fatal: true }).decode(entrypoint.contents);
53
+ }
54
+ catch (cause) {
55
+ throw new Error("Review skill SKILL.md must be valid UTF-8.", { cause });
56
+ }
57
+ const frontmatter = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(source);
58
+ if (frontmatter === null) {
59
+ throw new Error("Review skill SKILL.md must begin with YAML frontmatter.");
60
+ }
61
+ const document = parseDocument(frontmatter[1], {
62
+ strict: true,
63
+ uniqueKeys: true,
64
+ stringKeys: true,
65
+ prettyErrors: false,
66
+ });
67
+ const problems = [...document.errors, ...document.warnings];
68
+ if (problems.length !== 0) {
69
+ throw new Error("Review skill SKILL.md has invalid YAML frontmatter.", {
70
+ cause: new AggregateError(problems, "Review skill frontmatter was rejected."),
71
+ });
72
+ }
73
+ let metadata;
74
+ try {
75
+ metadata = document.toJS();
76
+ }
77
+ catch (cause) {
78
+ throw new Error("Cannot decode review skill frontmatter.", { cause });
79
+ }
80
+ if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {
81
+ throw new Error("Review skill frontmatter must be a mapping.");
82
+ }
83
+ if (!("name" in metadata) || metadata.name !== skillName) {
84
+ throw new Error(`Review skill frontmatter name must be ${skillName}.`);
85
+ }
86
+ if (!("description" in metadata) || typeof metadata.description !== "string" || metadata.description.trim() === "" || metadata.description.includes("\0")) {
87
+ throw new Error("Review skill frontmatter description must be a nonempty string without NUL characters.");
88
+ }
89
+ };
90
+ const bundleDigest = (entries) => {
91
+ const hash = createHash("sha256").update("daynight-review-plugin-bundle-v1\0");
92
+ const append = (bytes) => {
93
+ const size = Buffer.alloc(8);
94
+ size.writeBigUInt64BE(BigInt(bytes.length));
95
+ hash.update(size).update(bytes);
96
+ };
97
+ for (const entry of entries) {
98
+ hash.update(entry.type === "file" ? "f" : "d");
99
+ append(Buffer.from(entry.relativePath, "utf8"));
100
+ if (entry.type === "file") {
101
+ append(entry.contents);
102
+ }
103
+ }
104
+ return hash.digest("hex");
105
+ };
106
+ const pluginBundle = (entries) => [
107
+ { relativePath: "plugin.json", type: "file", contents: pluginManifest },
108
+ { relativePath: "skills", type: "directory" },
109
+ { relativePath: `skills/${skillName}`, type: "directory" },
110
+ ...entries.map((entry) => ({ ...entry, relativePath: `skills/${skillName}/${entry.relativePath}` })),
111
+ ];
112
+ const verifySnapshot = async (directory, expected) => {
113
+ const actual = await captureBundle(directory);
114
+ if (actual.length !== expected.length || actual.some((entry, index) => {
115
+ const wanted = expected[index];
116
+ return entry.relativePath !== wanted.relativePath || entry.type !== wanted.type ||
117
+ (entry.type === "file" && wanted.type === "file" && !entry.contents.equals(wanted.contents));
118
+ })) {
119
+ throw new Error(`Review skill snapshot does not match its captured bundle: ${directory}.`);
120
+ }
121
+ };
122
+ export const prepareReviewSkill = async (packageDirectory, cacheDirectory) => {
123
+ const sourceDirectory = path.join(packageDirectory, "dist", "commands", "review", "skills", skillName);
124
+ let entries;
125
+ try {
126
+ entries = await captureBundle(sourceDirectory);
127
+ validateEntrypoint(entries);
128
+ }
129
+ catch (cause) {
130
+ throw new Error(`Cannot capture installed review skill bundle ${sourceDirectory}.`, { cause });
131
+ }
132
+ const snapshot = pluginBundle(entries);
133
+ const digest = bundleDigest(snapshot);
134
+ const snapshotsDirectory = path.resolve(cacheDirectory, "review-skills");
135
+ const rootDirectory = path.join(snapshotsDirectory, digest);
136
+ const directory = path.join(rootDirectory, "skills", skillName);
137
+ const prepared = { name: skillName, digest, rootDirectory, directory, entrypoint: path.join(directory, "SKILL.md") };
138
+ let temporaryDirectory;
139
+ let preparationError;
140
+ let publicationError;
141
+ try {
142
+ await mkdir(snapshotsDirectory, { recursive: true });
143
+ let existing = false;
144
+ try {
145
+ await lstat(rootDirectory);
146
+ existing = true;
147
+ }
148
+ catch (cause) {
149
+ if (!hasCode(cause, "ENOENT")) {
150
+ throw cause;
151
+ }
152
+ }
153
+ if (!existing) {
154
+ temporaryDirectory = await mkdtemp(path.join(snapshotsDirectory, ".prepare-"));
155
+ for (const entry of snapshot) {
156
+ const destination = path.join(temporaryDirectory, ...entry.relativePath.split("/"));
157
+ if (entry.type === "directory") {
158
+ await mkdir(destination);
159
+ }
160
+ else {
161
+ await writeFile(destination, entry.contents, { flag: "wx" });
162
+ }
163
+ }
164
+ try {
165
+ await rename(temporaryDirectory, rootDirectory);
166
+ temporaryDirectory = undefined;
167
+ }
168
+ catch (cause) {
169
+ // A concurrent publication is accepted only after verifying the complete winning snapshot.
170
+ publicationError = cause;
171
+ }
172
+ }
173
+ try {
174
+ await verifySnapshot(rootDirectory, snapshot);
175
+ }
176
+ catch (cause) {
177
+ if (publicationError !== undefined) {
178
+ throw new AggregateError([publicationError, cause], "Cannot publish or reuse the review skill snapshot.");
179
+ }
180
+ throw cause;
181
+ }
182
+ return prepared;
183
+ }
184
+ catch (cause) {
185
+ preparationError = new Error(`Cannot prepare review skill snapshot ${rootDirectory}.`, { cause });
186
+ throw preparationError;
187
+ }
188
+ finally {
189
+ if (temporaryDirectory !== undefined) {
190
+ try {
191
+ await rm(temporaryDirectory, { recursive: true, force: true });
192
+ }
193
+ catch (cause) {
194
+ const cleanupError = new Error(`Cannot remove review skill preparation directory ${temporaryDirectory}.`, { cause });
195
+ if (preparationError !== undefined) {
196
+ throw new AggregateError([preparationError, cleanupError], "Review skill preparation and cleanup failed.");
197
+ }
198
+ throw cleanupError;
199
+ }
200
+ }
201
+ }
202
+ };
203
+ export const validateReviewSkillDiscovery = async (output, skill) => {
204
+ let entries;
205
+ try {
206
+ entries = JSON.parse(output);
207
+ }
208
+ catch (cause) {
209
+ throw new Error("Copilot skill discovery did not return valid JSON.", { cause });
210
+ }
211
+ if (!Array.isArray(entries)) {
212
+ throw new Error("Copilot skill discovery must return a JSON array.");
213
+ }
214
+ for (const entry of entries) {
215
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry) || !("name" in entry) || typeof entry.name !== "string" || entry.name.trim() === "" || entry.name.includes("\0")) {
216
+ throw new Error("Copilot skill discovery contains a malformed skill entry.");
217
+ }
218
+ }
219
+ const matching = entries.filter((entry) => entry.name === skill.name);
220
+ if (matching.length !== 1) {
221
+ throw new Error(`Copilot skill discovery must select exactly one ${skill.name} skill; found ${matching.length}.`);
222
+ }
223
+ const match = matching[0];
224
+ if (match.enabled !== true) {
225
+ throw new Error(`Copilot skill ${skill.name} must be enabled.`);
226
+ }
227
+ if (typeof match.path !== "string" || match.path.trim() === "" || match.path.includes("\0") || !path.isAbsolute(match.path)) {
228
+ throw new Error(`Copilot skill ${skill.name} must have an absolute directory path.`);
229
+ }
230
+ let actualDirectory;
231
+ let expectedDirectory;
232
+ try {
233
+ [actualDirectory, expectedDirectory] = await Promise.all([realpath(match.path), realpath(skill.directory)]);
234
+ }
235
+ catch (cause) {
236
+ throw new Error(`Cannot resolve discovered ${skill.name} skill directory.`, { cause });
237
+ }
238
+ if (actualDirectory !== expectedDirectory) {
239
+ throw new Error(`Copilot skill ${skill.name} resolves to ${actualDirectory}; expected ${expectedDirectory}.`);
240
+ }
241
+ };
242
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/commands/review/skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: daynight-review
3
+ description: Review the immutable pull-request target supplied by Daynight, proving introduced Critical or Major defects and preparing actionable inline findings.
4
+ ---
5
+
6
+ # Daynight Review
7
+
8
+ Use the task-supplied target, publication identity, eligibility checks,
9
+ reconciliation rules and completion protocol. Those values belong to the current
10
+ attempt, including when the conversation contains an earlier review. Repository
11
+ instructions remain applicable within that target and the authorized review.
12
+
13
+ ## Establish the change
14
+
15
+ Read the complete diff for the supplied merge-base and head, the surrounding
16
+ implementation, and relevant requirements. Trace changed behavior through its
17
+ callers, consumers and persisted or exchanged data. Derive expected behavior
18
+ from those contracts; do not treat a plausible alternative design as a defect.
19
+
20
+ For each suspected problem, identify the concrete trigger, affected caller,
21
+ observable failure and changed line that introduces it. Compare the original
22
+ behavior when needed to distinguish an introduced defect from an existing one.
23
+ Include adjacent code only when its interaction with this change causes the
24
+ failure.
25
+
26
+ ## Verify consequential defects
27
+
28
+ Prioritize data loss, incorrect results, broken authorization, unavailable
29
+ operations, and lifecycle or concurrency failures that materially affect the
30
+ delivered behavior. Examine relevant failure paths and resource ownership, not
31
+ only the successful path.
32
+
33
+ Challenge each candidate independently: follow its callers, inspect the actual
34
+ dependency contract, or run a bounded probe that demonstrates its consequence.
35
+ Choose verification that distinguishes the suspected failure from correct
36
+ behavior. A passing test suite does not by itself settle lifecycle, concurrency,
37
+ filesystem, migration or remote-publication behavior. Preserve errors and state
38
+ the limits of evidence; discard findings that remain speculative.
39
+
40
+ Keep probes within the supplied worktree and temporary directory, preserve the
41
+ captured target, and obey the task's foreground-process and cleanup rules.
42
+
43
+ ## Select and publish findings
44
+
45
+ Report only actionable Critical or Major defects introduced by the change.
46
+ Critical defects have severe, broad consequences such as destructive data loss
47
+ or a fundamental security failure. Major defects break required behavior for a
48
+ concrete supported use case. Judge severity by the demonstrated consequence and
49
+ reach, not by how small the fix appears.
50
+
51
+ Defer minor improvements, style preferences, pre-existing defects and unrelated
52
+ cleanup. Do not grow the review into a repository-wide audit. If an uncertain
53
+ candidate cannot be established with the available evidence, leave it out of
54
+ published findings.
55
+
56
+ Write English inline comments on the relevant changed lines and identify the
57
+ reviewing agent as required by the task. Each comment states the defect, the
58
+ trigger or affected behavior, and the necessary correction concisely. Keep
59
+ investigation narration, reproduction transcripts and lists of things checked
60
+ out of the comment. Combine duplicate manifestations of one cause.
61
+
62
+ Follow the current task's result-publication and retry-reconciliation protocol.
63
+ Only its successful publication or confirmation permits its completion marker.
@@ -1,82 +1,4 @@
1
- export type RepositoryIdentity = {
2
- host: string;
3
- githubId: string;
4
- };
5
- export type PullRequestIdentity = RepositoryIdentity & {
6
- number: number;
7
- };
8
- export type RepositoryState = RepositoryIdentity & {
9
- remote: string;
10
- localPath: string;
11
- startPrNumber: number | null;
12
- initializedAt: number | null;
13
- lastPollAt: number | null;
14
- lastPollError: string | null;
15
- };
16
- export type PullRequestObservation = {
17
- number: number;
18
- state: "open" | "closed" | "merged";
19
- draft: boolean;
20
- headSha: string;
21
- baseRef: string;
22
- baseSha: string;
23
- };
24
- export type RepositoryPollUpdate = {
25
- kind: "initialize";
26
- startPrNumber: number;
27
- } | {
28
- kind: "snapshot";
29
- observations: readonly PullRequestObservation[];
30
- };
31
- export type PullRequestState = PullRequestIdentity & Omit<PullRequestObservation, "number"> & {
32
- desiredRevision: number;
33
- completedRevision: number;
34
- sessionId: string | null;
35
- sessionEstablished: boolean;
36
- worktreePath: string | null;
37
- cleanupPending: boolean;
38
- cleanupError: string | null;
39
- observedAt: number;
40
- };
41
- export type ReviewStatus = "preparing" | "running" | "retry_wait" | "completed" | "failed" | "interrupted" | "superseded";
42
- export type ReviewState = PullRequestIdentity & {
43
- id: string;
44
- revision: number;
45
- headSha: string;
46
- baseRef: string;
47
- baseSha: string | null;
48
- status: ReviewStatus;
49
- attemptCount: number;
50
- maxAttempts: number;
51
- retryAt: number | null;
52
- processOwner: string | null;
53
- processId: number | null;
54
- processIdentity: string | null;
55
- stdoutLogPath: string | null;
56
- stderrLogPath: string | null;
57
- lastError: string | null;
58
- createdAt: number;
59
- updatedAt: number;
60
- };
61
- export type ReviewCandidate = {
62
- pullRequest: PullRequestState;
63
- review: ReviewState | null;
64
- };
65
- export type ReviewListingSnapshot = {
66
- repositories: RepositoryState[];
67
- pullRequests: PullRequestState[];
68
- reviews: ReviewState[];
69
- };
70
- export type AttemptIdentity = {
71
- reviewId: string;
72
- attempt: number;
73
- };
74
- export type OperationsStopped = {
75
- operationsStopped: true;
76
- };
77
- export type ProcessesExcluded = {
78
- processesExcluded: true;
79
- };
1
+ import type { RepositoryIdentity, PullRequestIdentity, RepositoryState, PullRequestObservation, RepositoryPollUpdate, PullRequestState, ReviewState, ReviewCandidate, ReviewListingSnapshot, AttemptIdentity, OperationsStopped, ProcessesExcluded } from "./model.js";
80
2
  export declare const readReviewListingSnapshot: (databaseFile: string) => ReviewListingSnapshot | null;
81
3
  export declare const openStore: (databaseFile: string, options?: {
82
4
  busyTimeoutMs?: number;
@@ -114,6 +36,10 @@ export declare const openStore: (databaseFile: string, options?: {
114
36
  pid: number;
115
37
  identity: string;
116
38
  }) => ReviewState;
39
+ clearProcess: (identity: AttemptIdentity, expected: {
40
+ processId: number | null;
41
+ processIdentity: string | null;
42
+ }, proof: ProcessesExcluded) => ReviewState;
117
43
  markSessionEstablished: (identity: PullRequestIdentity) => PullRequestState;
118
44
  completeReview: (identity: AttemptIdentity, proof: ProcessesExcluded, now: number) => ReviewState;
119
45
  retryReview: (identity: AttemptIdentity, proof: ProcessesExcluded, input: {
@@ -424,6 +424,14 @@ export const openStore = (databaseFile, options = {}) => {
424
424
  db.prepare("UPDATE reviews SET process_id = @pid, process_identity = @identity WHERE id = @id").run({ id: review.id, ...input });
425
425
  return needReview(review.id);
426
426
  }),
427
+ clearProcess: (identity, expected, proof) => atomic(() => {
428
+ requireExcluded(proof);
429
+ const review = attemptReview(identity);
430
+ if (review.processId !== expected.processId || review.processIdentity !== expected.processIdentity)
431
+ throw new Error("The running attempt's process identity changed before exclusion was recorded.");
432
+ db.prepare("UPDATE reviews SET process_id = NULL, process_identity = NULL WHERE id = @id").run({ id: review.id });
433
+ return needReview(review.id);
434
+ }),
427
435
  markSessionEstablished: (identity) => atomic(() => {
428
436
  const pullRequest = needPullRequest(identity);
429
437
  if (pullRequest.sessionId === null)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/commands/review/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { EventEmitter } from "node:events";
2
+ import type { ApiClient, Operation, OperationLimits } from "../../api/index.js";
3
+ import type { CliContext } from "../../cli/context.js";
4
+ export type ServerSession = {
5
+ readonly api: ApiClient;
6
+ readonly operation: Operation;
7
+ readonly serverUrl: string;
8
+ };
9
+ export type ServerCommand = (session: ServerSession) => Promise<string>;
10
+ export type ServerCommandOptions = {
11
+ readonly signalEmitter?: Pick<EventEmitter, "on" | "off">;
12
+ readonly platform?: NodeJS.Platform;
13
+ readonly operationLimits?: Partial<OperationLimits>;
14
+ readonly fetch?: typeof globalThis.fetch;
15
+ };
16
+ export declare const runServerCommand: (context: CliContext, command: ServerCommand, options?: ServerCommandOptions) => Promise<void>;
@@ -0,0 +1,52 @@
1
+ import { createApiClient, createOperation } from "../../api/index.js";
2
+ import { resolveConfigurationPaths } from "../../config/paths.js";
3
+ import { loadServerConfiguration } from "../../config/server.js";
4
+ export const runServerCommand = async (context, command, options = {}) => {
5
+ const cancellation = new AbortController();
6
+ const operation = createOperation({ signal: cancellation.signal, ...(options.operationLimits === undefined ? {} : { limits: options.operationLimits }) });
7
+ const emitter = options.signalEmitter ?? process;
8
+ const signals = (options.platform ?? process.platform) === "win32" ? ["SIGINT", "SIGTERM", "SIGBREAK"] : ["SIGINT", "SIGTERM"];
9
+ const listeners = [];
10
+ let failed = false;
11
+ let failure;
12
+ try {
13
+ for (const signal of signals) {
14
+ const cancel = () => cancellation.abort(new Error(`Received ${signal}.`));
15
+ emitter.on(signal, cancel);
16
+ listeners.push([signal, cancel]);
17
+ }
18
+ operation.check();
19
+ const paths = resolveConfigurationPaths(context.homeDirectory());
20
+ const { serverUrl } = await loadServerConfiguration(paths, operation.signal);
21
+ operation.check();
22
+ const api = createApiClient({ serverUrl, operation, ...(options.fetch === undefined ? {} : { fetch: options.fetch }) });
23
+ const output = await command({ api, operation, serverUrl });
24
+ operation.check();
25
+ context.stdout(output);
26
+ }
27
+ catch (cause) {
28
+ failed = true;
29
+ failure = cause;
30
+ throw cause;
31
+ }
32
+ finally {
33
+ const cleanup = [];
34
+ for (const [signal, listener] of listeners) {
35
+ try {
36
+ emitter.off(signal, listener);
37
+ }
38
+ catch (cause) {
39
+ cleanup.push(cause);
40
+ }
41
+ }
42
+ try {
43
+ operation.dispose();
44
+ }
45
+ catch (cause) {
46
+ cleanup.push(cause);
47
+ }
48
+ if (cleanup.length !== 0)
49
+ throw new AggregateError(failed ? [failure, ...cleanup] : cleanup, "Server command or cancellation cleanup failed.");
50
+ }
51
+ };
52
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/server/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CliContext } from "../../cli/context.js";
2
+ import type { resolveProject } from "../../repository/index.js";
3
+ import type { runServerCommand } from "../server/runtime.js";
4
+ export type TaskCommandDependencies = {
5
+ runServerCommand: typeof runServerCommand;
6
+ resolveProject: typeof resolveProject;
7
+ };
8
+ export declare const runTaskCommand: (args: readonly string[], context: CliContext, dependencies?: TaskCommandDependencies) => Promise<void>;