@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,79 @@
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
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/commands/review/model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { ConfigurationPaths } from "../../config/paths.js";
2
+ import type { PathApi } from "../../platform/filesystem.js";
3
+ export type ReviewPaths = ConfigurationPaths & {
4
+ databaseFile: string;
5
+ lockFile: string;
6
+ copilotDirectory: string;
7
+ cacheDirectory: string;
8
+ temporaryDirectory: string;
9
+ logsDirectory: string;
10
+ };
11
+ export declare const resolveReviewPaths: (homeDirectory: string, pathApi?: PathApi) => ReviewPaths;
@@ -0,0 +1,16 @@
1
+ import path from "node:path";
2
+ import { resolveConfigurationPaths } from "../../config/paths.js";
3
+ export const resolveReviewPaths = (homeDirectory, pathApi = path) => {
4
+ const configurationPaths = resolveConfigurationPaths(homeDirectory, pathApi);
5
+ const { stateDirectory } = configurationPaths;
6
+ return {
7
+ ...configurationPaths,
8
+ databaseFile: pathApi.join(stateDirectory, "state.sqlite"),
9
+ lockFile: pathApi.join(stateDirectory, "instance.lock"),
10
+ copilotDirectory: pathApi.join(stateDirectory, "copilot"),
11
+ cacheDirectory: pathApi.join(stateDirectory, "cache"),
12
+ temporaryDirectory: pathApi.join(stateDirectory, "tmp"),
13
+ logsDirectory: pathApi.join(stateDirectory, "logs"),
14
+ };
15
+ };
16
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/commands/review/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAalE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,aAAqB,EACrB,OAAO,GAAY,IAAI,EACV,EAAE;IACf,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC;IAC9C,OAAO;QACL,GAAG,kBAAkB;QACrB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC;QAC1D,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;QACvD,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;QACzD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QACrD,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;QACvD,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;KACpD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { RepositoryConfiguration } from "./config.js";
2
+ import type { GitHubClient } from "./adapters/github.js";
3
+ import type { RepositoryState } from "./model.js";
4
+ import type { Store } from "./store.js";
5
+ export declare const pollRepository: (store: Store, configuration: RepositoryConfiguration, client: GitHubClient, options: {
6
+ now: () => number;
7
+ signal?: AbortSignal;
8
+ }) => Promise<RepositoryState>;
9
+ export type RepositoryPollResult = {
10
+ configuration: RepositoryConfiguration;
11
+ ok: true;
12
+ repository: RepositoryState;
13
+ } | {
14
+ configuration: RepositoryConfiguration;
15
+ ok: false;
16
+ error: unknown;
17
+ };
18
+ export declare const pollRepositories: (store: Store, configurations: readonly RepositoryConfiguration[], client: GitHubClient, options: {
19
+ now: () => number;
20
+ signal?: AbortSignal;
21
+ }) => Promise<RepositoryPollResult[]>;
@@ -0,0 +1,44 @@
1
+ export const pollRepository = async (store, configuration, client, options) => {
2
+ let identity = null;
3
+ try {
4
+ const repository = await client.resolveRepository(configuration, options.signal);
5
+ identity = repository;
6
+ const registered = store.registerRepository({ ...repository, remote: configuration.remote, localPath: configuration.path });
7
+ if (registered.startPrNumber === null) {
8
+ const numbers = await client.listPullRequestNumbers(repository, options.signal);
9
+ const startPrNumber = numbers.reduce((maximum, number) => Math.max(maximum, number), 0);
10
+ return store.applyRepositoryPoll(repository, { kind: "initialize", startPrNumber }, options.now());
11
+ }
12
+ const observations = await client.listOpenPullRequests(repository, registered.startPrNumber, options.signal);
13
+ const observed = new Set(observations.map((item) => item.number));
14
+ for (const previous of store.listPullRequests(repository)) {
15
+ if (previous.state === "open" && !observed.has(previous.number))
16
+ observations.push(await client.getPullRequest(repository, previous.number, options.signal));
17
+ }
18
+ return store.applyRepositoryPoll(repository, { kind: "snapshot", observations }, options.now());
19
+ }
20
+ catch (error) {
21
+ if (identity !== null) {
22
+ try {
23
+ store.recordPollError(identity, error instanceof Error ? error.message : String(error));
24
+ }
25
+ catch (recordError) {
26
+ throw new AggregateError([error, recordError], `GitHub polling and error persistence failed for ${configuration.coordinate}.`);
27
+ }
28
+ }
29
+ throw error;
30
+ }
31
+ };
32
+ export const pollRepositories = async (store, configurations, client, options) => {
33
+ const results = [];
34
+ for (const configuration of configurations) {
35
+ try {
36
+ results.push({ configuration, ok: true, repository: await pollRepository(store, configuration, client, options) });
37
+ }
38
+ catch (error) {
39
+ results.push({ configuration, ok: false, error });
40
+ }
41
+ }
42
+ return results;
43
+ };
44
+ //# sourceMappingURL=polling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/commands/review/polling.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ChildProcess } from "node:child_process";
2
- import type { CopilotAttemptOutcome } from "./copilot.js";
3
- import type { AttemptIdentity, ReviewState } from "./store.js";
2
+ import type { CopilotProcessOutcome } from "./adapters/copilot.js";
3
+ import type { AttemptIdentity, ReviewState } from "./model.js";
4
4
  export declare const processGroupIsExecuting: (pid: number, operations: {
5
5
  probe: (pid: number) => void;
6
6
  readStatus: () => Promise<string>;
@@ -12,7 +12,7 @@ export declare const createProcessSupervisor: (options?: {
12
12
  }) => {
13
13
  onProcess: (child: ChildProcess, attempt: AttemptIdentity) => void;
14
14
  stop: (child: ChildProcess, attempt: AttemptIdentity) => Promise<void>;
15
- exclude: (review: ReviewState, outcome?: CopilotAttemptOutcome) => Promise<{
15
+ exclude: (review: ReviewState, outcome?: CopilotProcessOutcome) => Promise<{
16
16
  processesExcluded: true;
17
17
  }>;
18
18
  recover: (_review?: ReviewState) => Promise<{
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processes.js","sourceRoot":"","sources":["../../../src/commands/review/processes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { RepositoryConfiguration } from "./config.js";
2
- import type { RuntimePaths } from "./paths.js";
2
+ import type { ReviewPaths } from "./paths.js";
3
3
  export type AddRepositoryInput = {
4
4
  remote: string;
5
5
  path?: string;
@@ -12,4 +12,4 @@ export type AddRepositoryResult = {
12
12
  repository: RepositoryConfiguration;
13
13
  added: boolean;
14
14
  };
15
- export declare const addRepository: (input: AddRepositoryInput, runtimePaths: RuntimePaths, options: AddRepositoryOptions) => Promise<AddRepositoryResult>;
15
+ export declare const addRepository: (input: AddRepositoryInput, runtimePaths: ReviewPaths, options: AddRepositoryOptions) => Promise<AddRepositoryResult>;
@@ -0,0 +1,70 @@
1
+ import path from "node:path";
2
+ import { Document } from "yaml";
3
+ import { parseConfigurationDocument } from "../../config/document.js";
4
+ import { updateConfigurationFile } from "../../config/files.js";
5
+ import { defaultRepositoryRoot, remoteIdentity, resolveRepositoryRoot, validateConfigurationSource, validateRegistrationConfigurationSource } from "./config.js";
6
+ import { missingPathsReferToSameDirectory, resolvePhysicalDirectory } from "../../platform/filesystem.js";
7
+ const repositoryPathComponent = (component) => {
8
+ let escaped = component.replace(/[<>:"/\\|?*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`)
9
+ .replace(/\.+$/, (dots) => "%2E".repeat(dots.length));
10
+ if (/^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(escaped)) {
11
+ escaped = `%${escaped.charCodeAt(0).toString(16).toUpperCase()}${escaped.slice(1)}`;
12
+ }
13
+ return escaped;
14
+ };
15
+ const sameDirectory = async (first, second) => {
16
+ const [left, right] = await Promise.all([resolvePhysicalDirectory(first), resolvePhysicalDirectory(second)]);
17
+ if (left.ancestorIdentity !== right.ancestorIdentity || left.missingComponents.length !== right.missingComponents.length) {
18
+ return false;
19
+ }
20
+ return left.missingComponents.every((component, index) => component === right.missingComponents[index]) ||
21
+ missingPathsReferToSameDirectory(left.ancestorPath, left.missingComponents, right.missingComponents);
22
+ };
23
+ const updateConfiguration = async (source, input, runtimePaths, options) => {
24
+ const existing = source === undefined ? undefined : await validateRegistrationConfigurationSource(source, runtimePaths);
25
+ const document = source === undefined ? new Document({ repositoryRoot: defaultRepositoryRoot, repositories: [] }) : parseConfigurationDocument(source, runtimePaths).document;
26
+ const decoded = document.toJS();
27
+ const root = document.has("repositoryRoot") ? decoded.repositoryRoot : defaultRepositoryRoot;
28
+ const identity = remoteIdentity(input.remote, "remote");
29
+ const previous = existing?.repositories.find((repository) => repository.coordinate === identity.coordinate);
30
+ if (previous !== undefined && input.path === undefined) {
31
+ return { result: { repository: previous, added: false } };
32
+ }
33
+ let repositoryPath;
34
+ if (input.path === undefined) {
35
+ repositoryPath = path.join(resolveRepositoryRoot(root, runtimePaths, options.homeDirectory), ...[identity.host, identity.owner, identity.name].map(repositoryPathComponent));
36
+ }
37
+ else {
38
+ if (input.path.trim() === "" || input.path.includes("\0") || input.path.startsWith("~")) {
39
+ throw new Error("path must be a nonempty absolute path or working-directory-relative path without NUL characters; expand ~ before passing --path.");
40
+ }
41
+ if (path.sep === "\\" && /^[a-z]:(?![\\/])/i.test(input.path)) {
42
+ throw new Error("path must not use a drive-relative Windows path.");
43
+ }
44
+ repositoryPath = path.resolve(options.workingDirectory, input.path);
45
+ }
46
+ if (previous !== undefined) {
47
+ if (await sameDirectory(previous.path, repositoryPath)) {
48
+ return { result: { repository: previous, added: false } };
49
+ }
50
+ throw new Error(`Repository ${identity.coordinate} is already configured at ${previous.path}; the requested path ${repositoryPath} differs.`);
51
+ }
52
+ if (!document.has("repositoryRoot")) {
53
+ document.set("repositoryRoot", defaultRepositoryRoot);
54
+ }
55
+ if (!document.has("repositories")) {
56
+ document.set("repositories", document.createNode([]));
57
+ }
58
+ document.addIn(["repositories"], { remote: input.remote, path: repositoryPath });
59
+ const updatedSource = document.toString();
60
+ const configuration = await validateConfigurationSource(updatedSource, runtimePaths);
61
+ const repository = configuration.repositories.at(-1);
62
+ return { result: { repository, added: true }, source: updatedSource };
63
+ };
64
+ export const addRepository = async (input, runtimePaths, options) => {
65
+ if (!path.isAbsolute(options.workingDirectory) || !path.isAbsolute(options.homeDirectory)) {
66
+ throw new Error("The working directory and home directory must be absolute paths.");
67
+ }
68
+ return updateConfigurationFile(runtimePaths, (source) => updateConfiguration(source, input, runtimePaths, options));
69
+ };
70
+ //# sourceMappingURL=repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../src/commands/review/repositories.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,16 @@
1
- import { createCopilotRunner } from "./copilot.js";
1
+ import { createCopilotRunner } from "./adapters/copilot.js";
2
2
  import { runCoordinator } from "./coordinator.js";
3
- import { createGitManager } from "./git.js";
4
- import { createGitHubClient } from "./github.js";
3
+ import { createGitManager } from "./adapters/worktrees.js";
4
+ import { createGitHubClient } from "./adapters/github.js";
5
5
  import { createProcessSupervisor } from "./processes.js";
6
6
  import { openStore } from "./store.js";
7
- import type { Configuration } from "./config.js";
7
+ import { prepareReviewSkill } from "./skill.js";
8
+ import type { ReviewConfiguration } from "./config.js";
8
9
  import type { CoordinatorEvent } from "./coordinator.js";
9
- import type { RuntimePaths } from "./paths.js";
10
+ import type { ReviewPaths } from "./paths.js";
10
11
  export { acquireInstanceLock } from "./instance-lock.js";
11
12
  export type RuntimeDependencies = {
13
+ prepareSkill: typeof prepareReviewSkill;
12
14
  openStore: typeof openStore;
13
15
  createClient: typeof createGitHubClient;
14
16
  createGit: typeof createGitManager;
@@ -17,7 +19,8 @@ export type RuntimeDependencies = {
17
19
  coordinate: typeof runCoordinator;
18
20
  };
19
21
  export declare const formatCoordinatorEvent: (event: CoordinatorEvent) => string;
20
- export declare const runForegroundReview: (configuration: Configuration, paths: RuntimePaths, options?: {
22
+ export declare const runForegroundReview: (configuration: ReviewConfiguration, paths: ReviewPaths, options: {
23
+ packageDirectory: string;
21
24
  signal?: AbortSignal;
22
25
  log?: (event: CoordinatorEvent) => void;
23
26
  dependencies?: RuntimeDependencies;
@@ -1,15 +1,16 @@
1
1
  import { mkdir } from "node:fs/promises";
2
- import { formatError } from "./diagnostics.js";
3
- import { createCopilotRunner } from "./copilot.js";
2
+ import { formatError } from "../../platform/diagnostics.js";
3
+ import { createCopilotRunner } from "./adapters/copilot.js";
4
4
  import { runCoordinator } from "./coordinator.js";
5
- import { createGitManager } from "./git.js";
6
- import { createGitHubClient } from "./github.js";
5
+ import { createGitManager } from "./adapters/worktrees.js";
6
+ import { createGitHubClient } from "./adapters/github.js";
7
7
  import { acquireInstanceLock } from "./instance-lock.js";
8
8
  import { createProcessSupervisor } from "./processes.js";
9
9
  import { openStore } from "./store.js";
10
+ import { prepareReviewSkill } from "./skill.js";
10
11
  export { acquireInstanceLock } from "./instance-lock.js";
11
12
  const defaultDependencies = {
12
- openStore, createClient: createGitHubClient, createGit: createGitManager,
13
+ prepareSkill: prepareReviewSkill, openStore, createClient: createGitHubClient, createGit: createGitManager,
13
14
  createRunner: createCopilotRunner, createProcesses: createProcessSupervisor, coordinate: runCoordinator,
14
15
  };
15
16
  export const formatCoordinatorEvent = (event) => {
@@ -19,7 +20,7 @@ export const formatCoordinatorEvent = (event) => {
19
20
  event.attempt === undefined ? undefined : `attempt=${event.attempt}`].filter((value) => value !== undefined).join(" ");
20
21
  return `${identity === "" ? "" : `${identity} `}${event.phase}: ${event.message}${event.retryAt === undefined ? "" : ` retryAt=${new Date(event.retryAt).toISOString()}`}${event.error === undefined ? "" : `\n${formatError(event.error)}`}`;
21
22
  };
22
- export const runForegroundReview = async (configuration, paths, options = {}) => {
23
+ export const runForegroundReview = async (configuration, paths, options) => {
23
24
  const dependencies = options.dependencies === undefined ? defaultDependencies : options.dependencies;
24
25
  const log = options.log === undefined ? (event) => { process.stderr.write(`${formatCoordinatorEvent(event)}\n`); } : options.log;
25
26
  const controller = new AbortController();
@@ -38,12 +39,14 @@ export const runForegroundReview = async (configuration, paths, options = {}) =>
38
39
  lock = await acquireInstanceLock(paths.lockFile);
39
40
  safe = lock.previousProcessesExcluded;
40
41
  signal.throwIfAborted();
42
+ const skill = await dependencies.prepareSkill(options.packageDirectory, paths.cacheDirectory);
43
+ signal.throwIfAborted();
41
44
  store = dependencies.openStore(paths.databaseFile);
42
45
  const client = dependencies.createClient();
43
46
  const git = dependencies.createGit({ temporaryDirectory: paths.temporaryDirectory, client });
44
47
  const processes = dependencies.createProcesses(lock.previousProcessesExcluded ? { previousProcessesExcluded: true } : {});
45
- const runner = dependencies.createRunner({ paths, processOwner: lock.owner, timeoutMs: configuration.agentTimeoutMs });
46
- log({ level: "info", phase: "startup", message: `Foreground review started; state=${paths.stateDirectory}.` });
48
+ const runner = dependencies.createRunner({ paths, skill, processOwner: lock.owner, timeoutMs: configuration.agentTimeoutMs });
49
+ log({ level: "info", phase: "startup", message: `Foreground review started; state=${paths.stateDirectory}; skill=${skill.name} digest=${skill.digest}.` });
47
50
  safe = false;
48
51
  const result = await dependencies.coordinate({ configuration, store, client, git, runner, processes, signal, log });
49
52
  safe = result.safeToReleaseLock && processes.safeToReleaseLock;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/review/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ declare const skillName = "daynight-review";
2
+ export type PreparedReviewSkill = {
3
+ name: typeof skillName;
4
+ digest: string;
5
+ rootDirectory: string;
6
+ directory: string;
7
+ entrypoint: string;
8
+ };
9
+ export declare const prepareReviewSkill: (packageDirectory: string, cacheDirectory: string) => Promise<PreparedReviewSkill>;
10
+ export declare const validateReviewSkillDiscovery: (output: string, skill: PreparedReviewSkill) => Promise<void>;
11
+ export {};