@codetreker/daynight 0.8.1 → 0.8.13

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 (95) hide show
  1. package/dist/api/client.d.ts +6 -1
  2. package/dist/api/client.js +120 -23
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/index.d.ts +1 -1
  5. package/dist/api/index.js +1 -1
  6. package/dist/api/index.js.map +1 -1
  7. package/dist/api/parse.d.ts +4 -4
  8. package/dist/api/parse.js +28 -4
  9. package/dist/api/parse.js.map +1 -1
  10. package/dist/api/types.d.ts +23 -1
  11. package/dist/cli/byte-output-helper.d.ts +1 -0
  12. package/dist/cli/byte-output-helper.js +48 -0
  13. package/dist/cli/byte-output-helper.js.map +1 -0
  14. package/dist/cli/byte-output.d.ts +7 -0
  15. package/dist/cli/byte-output.js +199 -0
  16. package/dist/cli/byte-output.js.map +1 -0
  17. package/dist/cli/cancellation.d.ts +5 -0
  18. package/dist/cli/cancellation.js +24 -0
  19. package/dist/cli/cancellation.js.map +1 -0
  20. package/dist/cli/commands.js +2 -0
  21. package/dist/cli/commands.js.map +1 -1
  22. package/dist/cli/context.d.ts +2 -0
  23. package/dist/cli/context.js +15 -9
  24. package/dist/cli/context.js.map +1 -1
  25. package/dist/cli/prompts.d.ts +16 -3
  26. package/dist/cli/prompts.js +38 -10
  27. package/dist/cli/prompts.js.map +1 -1
  28. package/dist/cli/schema.js +6 -6
  29. package/dist/cli/schema.js.map +1 -1
  30. package/dist/commands/review/adapters/copilot.d.ts +3 -0
  31. package/dist/commands/review/adapters/copilot.js +16 -7
  32. package/dist/commands/review/adapters/copilot.js.map +1 -1
  33. package/dist/commands/review/adapters/github-review-state.d.ts +21 -0
  34. package/dist/commands/review/adapters/github-review-state.js +144 -0
  35. package/dist/commands/review/adapters/github-review-state.js.map +1 -0
  36. package/dist/commands/review/adapters/github.d.ts +2 -1
  37. package/dist/commands/review/adapters/github.js +31 -4
  38. package/dist/commands/review/adapters/github.js.map +1 -1
  39. package/dist/commands/review/coordinator.js +134 -7
  40. package/dist/commands/review/coordinator.js.map +1 -1
  41. package/dist/commands/review/model.d.ts +21 -0
  42. package/dist/commands/review/publication.d.ts +14 -0
  43. package/dist/commands/review/publication.js +47 -0
  44. package/dist/commands/review/publication.js.map +1 -0
  45. package/dist/commands/review/skill.js +5 -83
  46. package/dist/commands/review/skill.js.map +1 -1
  47. package/dist/commands/review/skills/daynight-review/SKILL.md +90 -22
  48. package/dist/commands/review/store.d.ts +20 -0
  49. package/dist/commands/review/store.js +134 -5
  50. package/dist/commands/review/store.js.map +1 -1
  51. package/dist/commands/server/runtime.d.ts +1 -1
  52. package/dist/commands/server/runtime.js +8 -1
  53. package/dist/commands/server/runtime.js.map +1 -1
  54. package/dist/commands/skill/agents.d.ts +23 -0
  55. package/dist/commands/skill/agents.js +14 -0
  56. package/dist/commands/skill/agents.js.map +1 -0
  57. package/dist/commands/skill/command.d.ts +12 -0
  58. package/dist/commands/skill/command.js +78 -0
  59. package/dist/commands/skill/command.js.map +1 -0
  60. package/dist/commands/skill/definition.d.ts +2 -0
  61. package/dist/commands/skill/definition.js +12 -0
  62. package/dist/commands/skill/definition.js.map +1 -0
  63. package/dist/commands/skill/install.d.ts +13 -0
  64. package/dist/commands/skill/install.js +126 -0
  65. package/dist/commands/skill/install.js.map +1 -0
  66. package/dist/commands/skill/skills/using-daynight/SKILL.md +56 -0
  67. package/dist/commands/skill/skills/using-daynight/references/autopilot.md +71 -0
  68. package/dist/commands/skill/skills/using-daynight/references/create-task.md +103 -0
  69. package/dist/commands/skill/skills/using-daynight/references/handbook.md +72 -0
  70. package/dist/commands/skill/skills/using-daynight/references/run-task.md +80 -0
  71. package/dist/commands/skill/targets.d.ts +11 -0
  72. package/dist/commands/skill/targets.js +36 -0
  73. package/dist/commands/skill/targets.js.map +1 -0
  74. package/dist/commands/task/attachment-rendering.d.ts +5 -0
  75. package/dist/commands/task/attachment-rendering.js +38 -0
  76. package/dist/commands/task/attachment-rendering.js.map +1 -0
  77. package/dist/commands/task/attachment.d.ts +6 -0
  78. package/dist/commands/task/attachment.js +91 -0
  79. package/dist/commands/task/attachment.js.map +1 -0
  80. package/dist/commands/task/command.js +35 -6
  81. package/dist/commands/task/command.js.map +1 -1
  82. package/dist/commands/task/definition.js +59 -8
  83. package/dist/commands/task/definition.js.map +1 -1
  84. package/dist/commands/task/rendering.d.ts +1 -0
  85. package/dist/commands/task/rendering.js +25 -4
  86. package/dist/commands/task/rendering.js.map +1 -1
  87. package/dist/config/setup.js +5 -24
  88. package/dist/config/setup.js.map +1 -1
  89. package/dist/platform/skill-bundle.d.ts +10 -0
  90. package/dist/platform/skill-bundle.js +82 -0
  91. package/dist/platform/skill-bundle.js.map +1 -0
  92. package/dist/repository/git.d.ts +1 -0
  93. package/dist/repository/git.js +6 -3
  94. package/dist/repository/git.js.map +1 -1
  95. package/package.json +7 -2
@@ -0,0 +1,48 @@
1
+ import { OUTPUT_CHUNK_BYTES, writeOutputBytes } from "./byte-output.js";
2
+ const send = (message) => new Promise((resolve, reject) => {
3
+ if (process.send === undefined) {
4
+ reject(new Error("Binary output helper requires an IPC channel."));
5
+ return;
6
+ }
7
+ process.send(message, (error) => error === null ? resolve() : reject(error));
8
+ });
9
+ const run = async () => {
10
+ let pending = Buffer.alloc(0);
11
+ let length;
12
+ const signal = new AbortController().signal;
13
+ for await (const chunk of process.stdin) {
14
+ pending = pending.byteLength === 0 ? chunk : Buffer.concat([pending, chunk]);
15
+ while (true) {
16
+ if (length === undefined) {
17
+ if (pending.byteLength < 4)
18
+ break;
19
+ length = pending.readUInt32BE();
20
+ pending = pending.subarray(4);
21
+ if (length > OUTPUT_CHUNK_BYTES)
22
+ throw new Error("Binary output frame exceeds the chunk limit.");
23
+ }
24
+ if (pending.byteLength < length)
25
+ break;
26
+ await writeOutputBytes(process.stdout, pending.subarray(0, length), signal);
27
+ pending = pending.subarray(length);
28
+ length = undefined;
29
+ await send({ type: "written" });
30
+ }
31
+ }
32
+ if (pending.byteLength !== 0 || length !== undefined)
33
+ throw new Error("Binary output helper received an incomplete frame.");
34
+ };
35
+ try {
36
+ await run();
37
+ }
38
+ catch (cause) {
39
+ process.exitCode = 1;
40
+ const error = cause instanceof Error ? cause : new Error(String(cause));
41
+ await send({ type: "error", message: error.message, ...("code" in error && typeof error.code === "string" ? { code: error.code } : {}) });
42
+ }
43
+ finally {
44
+ process.stdin.destroy();
45
+ if (process.connected)
46
+ process.disconnect();
47
+ }
48
+ //# sourceMappingURL=byte-output-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byte-output-helper.js","sourceRoot":"","sources":["../../src/cli/byte-output-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Writable } from "node:stream";
2
+ export declare const OUTPUT_CHUNK_BYTES = 65536;
3
+ export declare const writeOutputBytes: (output: Writable, chunk: Uint8Array, signal: AbortSignal) => Promise<void>;
4
+ export declare const createByteOutput: () => {
5
+ write: (chunk: Uint8Array, signal: AbortSignal) => Promise<void>;
6
+ close: () => Promise<void>;
7
+ };
@@ -0,0 +1,199 @@
1
+ import { fileURLToPath } from "node:url";
2
+ export const OUTPUT_CHUNK_BYTES = 65_536;
3
+ export const writeOutputBytes = (output, chunk, signal) => new Promise((resolve, reject) => {
4
+ if (signal.aborted) {
5
+ reject(signal.reason);
6
+ return;
7
+ }
8
+ if (output.errored !== null) {
9
+ reject(output.errored);
10
+ return;
11
+ }
12
+ if (!output.writable) {
13
+ reject(new Error("Binary stdout is closed."));
14
+ return;
15
+ }
16
+ let settled = false;
17
+ const cleanup = () => {
18
+ signal.removeEventListener("abort", abort);
19
+ output.off("error", fail);
20
+ output.off("close", closed);
21
+ };
22
+ const finish = (error) => {
23
+ if (settled)
24
+ return;
25
+ settled = true;
26
+ cleanup();
27
+ if (error === undefined)
28
+ resolve();
29
+ else
30
+ reject(error);
31
+ };
32
+ const fail = (error) => finish(error);
33
+ const closed = () => finish(new Error("Binary stdout closed before its pending write completed."));
34
+ const abort = () => { output.destroy(); finish(signal.reason); };
35
+ output.on("error", fail);
36
+ output.on("close", closed);
37
+ signal.addEventListener("abort", abort, { once: true });
38
+ try {
39
+ output.write(chunk, (error) => {
40
+ // Writable emits callback failures as error events after invoking the callback.
41
+ if (error === null || error === undefined)
42
+ finish();
43
+ });
44
+ }
45
+ catch (cause) {
46
+ finish(cause);
47
+ }
48
+ });
49
+ const startOutputHelper = (spawn) => {
50
+ const helperPath = fileURLToPath(new URL("./byte-output-helper.js", import.meta.url));
51
+ // fd 1 writes can block JavaScript on Windows and TTYs. Only this owned child writes file content.
52
+ // https://github.com/nodejs/node/blob/cdc1b38d40cb567b7ad0b39c86addf830a0af0ae/doc/api/process.md#a-note-on-process-io
53
+ const child = spawn(process.execPath, [helperPath], { stdio: ["pipe", "inherit", "ignore", "ipc"], windowsHide: true });
54
+ const input = child.stdin;
55
+ if (input === null)
56
+ throw new Error("The binary output helper has no input pipe.");
57
+ let acknowledgement;
58
+ let failure;
59
+ let exit;
60
+ let terminated = false;
61
+ let termination;
62
+ let closing;
63
+ const exited = new Promise((resolve) => {
64
+ child.once("exit", (code, signal) => {
65
+ exit = { code, signal };
66
+ acknowledgement?.reject(failure === undefined ? new Error(`Binary output helper exited before confirming its write (code=${code}, signal=${signal}).`) : failure);
67
+ });
68
+ child.once("close", (code, signal) => { exit = { code, signal }; resolve(exit); });
69
+ child.once("error", (cause) => {
70
+ failure = cause;
71
+ acknowledgement?.reject(cause);
72
+ });
73
+ });
74
+ child.on("message", (message) => {
75
+ if (typeof message !== "object" || message === null || !("type" in message)) {
76
+ failure = new Error("The binary output helper sent an invalid acknowledgement.");
77
+ }
78
+ else if (message.type === "written") {
79
+ acknowledgement?.resolve();
80
+ return;
81
+ }
82
+ else if (message.type === "error" && "message" in message && typeof message.message === "string") {
83
+ failure = new Error(message.message);
84
+ if ("code" in message && typeof message.code === "string")
85
+ Object.assign(failure, { code: message.code });
86
+ }
87
+ else
88
+ failure = new Error("The binary output helper sent an invalid acknowledgement.");
89
+ acknowledgement?.reject(failure);
90
+ });
91
+ const waitForExit = async () => {
92
+ let timer;
93
+ try {
94
+ return await Promise.race([exited, new Promise((_resolve, reject) => {
95
+ timer = setTimeout(() => reject(new Error("Binary output helper exceeded its 5 second exit deadline.")), 5_000);
96
+ })]);
97
+ }
98
+ finally {
99
+ if (timer !== undefined)
100
+ clearTimeout(timer);
101
+ }
102
+ };
103
+ const terminate = () => termination ??= (async () => {
104
+ terminated = true;
105
+ input.destroy();
106
+ if (exit === undefined)
107
+ child.kill("SIGKILL");
108
+ await waitForExit();
109
+ })();
110
+ return {
111
+ write: async (chunk, signal) => {
112
+ if (signal.aborted)
113
+ throw signal.reason;
114
+ if (failure !== undefined)
115
+ throw failure;
116
+ if (exit !== undefined || closing !== undefined)
117
+ throw new Error("The binary output helper is closed.");
118
+ if (acknowledgement !== undefined)
119
+ throw new Error("A binary stdout write is already in progress.");
120
+ let abort = () => { };
121
+ try {
122
+ const confirmed = new Promise((resolve, reject) => { acknowledgement = { resolve, reject }; });
123
+ const aborted = new Promise((_resolve, reject) => {
124
+ abort = () => { void terminate().then(() => reject(signal.reason), (cleanup) => reject(new AggregateError([signal.reason, cleanup], "Binary stdout cancellation cleanup failed.", { cause: signal.reason }))); };
125
+ signal.addEventListener("abort", abort, { once: true });
126
+ if (signal.aborted)
127
+ abort();
128
+ });
129
+ const frame = Buffer.allocUnsafe(4 + chunk.byteLength);
130
+ frame.writeUInt32BE(chunk.byteLength);
131
+ frame.set(chunk, 4);
132
+ await Promise.race([Promise.all([writeOutputBytes(input, frame, signal), confirmed]), aborted]);
133
+ }
134
+ catch (cause) {
135
+ const primary = signal.aborted ? signal.reason : cause;
136
+ try {
137
+ await terminate();
138
+ }
139
+ catch (cleanup) {
140
+ throw new AggregateError([primary, cleanup], "Binary stdout write and helper cleanup failed.", { cause: primary });
141
+ }
142
+ throw primary;
143
+ }
144
+ finally {
145
+ signal.removeEventListener("abort", abort);
146
+ acknowledgement = undefined;
147
+ }
148
+ },
149
+ close: () => closing ??= (async () => {
150
+ if (termination !== undefined) {
151
+ await termination;
152
+ return;
153
+ }
154
+ input.end();
155
+ try {
156
+ const result = await waitForExit();
157
+ if (failure !== undefined)
158
+ throw failure;
159
+ if (!terminated && result.code !== 0)
160
+ throw new Error(`Binary output helper failed (code=${result.code}, signal=${result.signal}).`);
161
+ }
162
+ catch (cause) {
163
+ try {
164
+ await terminate();
165
+ }
166
+ catch (cleanup) {
167
+ throw new AggregateError([cause, cleanup], "Binary stdout helper shutdown failed.", { cause });
168
+ }
169
+ throw cause;
170
+ }
171
+ })(),
172
+ };
173
+ };
174
+ export const createByteOutput = () => {
175
+ let helper;
176
+ let closed = false;
177
+ return {
178
+ write: async (chunk, signal) => {
179
+ if (signal.aborted)
180
+ throw signal.reason;
181
+ if (closed)
182
+ throw new Error("Binary stdout is closed.");
183
+ for (let offset = 0; offset < chunk.byteLength; offset += OUTPUT_CHUNK_BYTES) {
184
+ if (helper === undefined) {
185
+ const { spawn } = await import("node:child_process");
186
+ if (signal.aborted)
187
+ throw signal.reason;
188
+ if (closed)
189
+ throw new Error("Binary stdout is closed.");
190
+ helper ??= startOutputHelper(spawn);
191
+ }
192
+ await helper.write(chunk.subarray(offset, offset + OUTPUT_CHUNK_BYTES), signal);
193
+ }
194
+ },
195
+ close: async () => { closed = true; if (helper !== undefined)
196
+ await helper.close(); },
197
+ };
198
+ };
199
+ //# sourceMappingURL=byte-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byte-output.js","sourceRoot":"","sources":["../../src/cli/byte-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CliContext } from "./context.js";
2
+ export declare class CliCancelledError extends Error {
3
+ constructor(message?: string, options?: ErrorOptions);
4
+ }
5
+ export declare const withCliCancellation: <Result>(context: CliContext, action: (signal: AbortSignal) => Promise<Result>, supplied?: AbortSignal, cancellation?: () => Error) => Promise<Result>;
@@ -0,0 +1,24 @@
1
+ export class CliCancelledError extends Error {
2
+ constructor(message = "Operation cancelled.", options) {
3
+ super(message, options);
4
+ this.name = "CliCancelledError";
5
+ }
6
+ }
7
+ export const withCliCancellation = async (context, action, supplied, cancellation = () => new CliCancelledError()) => {
8
+ const controller = new AbortController();
9
+ const signals = process.platform === "win32" ? ["SIGINT", "SIGTERM", "SIGBREAK"] : ["SIGINT", "SIGTERM"];
10
+ const cancel = () => controller.abort(cancellation());
11
+ if (supplied === undefined)
12
+ for (const signal of signals)
13
+ process.on(signal, cancel);
14
+ try {
15
+ return await action(supplied ?? controller.signal);
16
+ }
17
+ finally {
18
+ if (supplied === undefined)
19
+ for (const signal of signals)
20
+ process.off(signal, cancel);
21
+ context.prompt?.close();
22
+ }
23
+ };
24
+ //# sourceMappingURL=cancellation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/cli/cancellation.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAO,GAAG,sBAAsB,EAAE,OAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAmB,EACnB,MAAgD,EAChD,QAAsB,EACtB,YAAY,GAAgB,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE,EACxC,EAAE;IACnB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAqB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3H,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS;QAAE,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrF,IAAI,CAAC;QAAC,OAAO,MAAM,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;YACnD,CAAC;QACP,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtF,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
@@ -3,8 +3,10 @@ import { reviewDefinition } from "../commands/review/definition.js";
3
3
  import { projectDefinition } from "../commands/project/definition.js";
4
4
  import { taskDefinition } from "../commands/task/definition.js";
5
5
  import { updateDefinition } from "../commands/update/definition.js";
6
+ import { skillDefinition } from "../commands/skill/definition.js";
6
7
  import { setupDefinition } from "../commands/setup/definition.js";
7
8
  export const commands = [
9
+ { ...skillDefinition, load: async () => ({ run: (await import("../commands/skill/command.js")).runSkillCommand }) },
8
10
  { ...setupDefinition, load: async () => ({ run: (await import("../commands/setup/command.js")).runSetupCommand }) },
9
11
  {
10
12
  ...reviewDefinition,
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMlE,MAAM,CAAC,MAAM,QAAQ,GAAmC;IACtD,EAAE,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE;IACnH;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,oBAAoB;QACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;KACtG;IACD;QACE,GAAG,iBAAiB;QACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KAChG;IACD;QACE,GAAG,cAAc;QACjB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;KAC1F;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;IAC/D,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1E,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;KAC7F;IACD,OAAO,EAAE,kDAAkD;CAC5D,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMlE,MAAM,CAAC,MAAM,QAAQ,GAAmC;IACtD,EAAE,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE;IACnH,EAAE,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE;IACnH;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,oBAAoB;QACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;KACtG;IACD;QACE,GAAG,iBAAiB;QACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KAChG;IACD;QACE,GAAG,cAAc;QACjB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;KAC1F;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;IAC/D,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1E,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;KAC7F;IACD,OAAO,EAAE,kDAAkD;CAC5D,CAAC"}
@@ -5,6 +5,8 @@ export type CliContext = {
5
5
  homeDirectory: () => string;
6
6
  workingDirectory: () => string;
7
7
  stdout: (text: string) => void;
8
+ stdoutBytes: (chunk: Uint8Array, signal: AbortSignal) => Promise<void>;
9
+ closeStdoutBytes?: () => Promise<void>;
8
10
  stderr: (text: string) => void;
9
11
  prompt?: CliPrompt;
10
12
  };
@@ -1,4 +1,5 @@
1
1
  import { homedir } from "node:os";
2
+ import { createByteOutput } from "./byte-output.js";
2
3
  import { createTerminalPrompt } from "./prompts.js";
3
4
  export class UsageError extends Error {
4
5
  helpCommand;
@@ -9,13 +10,18 @@ export class UsageError extends Error {
9
10
  }
10
11
  }
11
12
  export const isHelp = (argument) => argument === "--help" || argument === "-h";
12
- export const createCliContext = (version, packageDirectory) => ({
13
- version,
14
- packageDirectory,
15
- homeDirectory: homedir,
16
- workingDirectory: process.cwd,
17
- stdout: (text) => { process.stdout.write(text); },
18
- stderr: (text) => { process.stderr.write(text); },
19
- prompt: createTerminalPrompt(),
20
- });
13
+ export const createCliContext = (version, packageDirectory) => {
14
+ const binaryOutput = createByteOutput();
15
+ return {
16
+ version,
17
+ packageDirectory,
18
+ homeDirectory: homedir,
19
+ workingDirectory: process.cwd,
20
+ stdout: (text) => { process.stdout.write(text); },
21
+ stdoutBytes: binaryOutput.write,
22
+ closeStdoutBytes: binaryOutput.close,
23
+ stderr: (text) => { process.stderr.write(text); },
24
+ prompt: createTerminalPrompt(),
25
+ };
26
+ };
21
27
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiBpD,MAAM,OAAO,UAAW,SAAQ,KAAK;IACG,WAAW;IAAjD,YAAY,OAAe,EAAW,WAAW,GAAG,iBAAiB;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;2BADqB,WAAW;QAE/C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAW,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;AAE5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,gBAAwB,EAAc,EAAE,CAAC,CAAC;IAC1F,OAAO;IACP,gBAAgB;IAChB,aAAa,EAAE,OAAO;IACtB,gBAAgB,EAAE,OAAO,CAAC,GAAG;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,oBAAoB,EAAE;CAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAmBpD,MAAM,OAAO,UAAW,SAAQ,KAAK;IACG,WAAW;IAAjD,YAAY,OAAe,EAAW,WAAW,GAAG,iBAAiB;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;2BADqB,WAAW;QAE/C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAW,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;AAE5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,gBAAwB,EAAc,EAAE;IACxF,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,OAAO;QACL,OAAO;QACP,gBAAgB;QAChB,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE,OAAO,CAAC,GAAG;QAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,WAAW,EAAE,YAAY,CAAC,KAAK;QAC/B,gBAAgB,EAAE,YAAY,CAAC,KAAK;QACpC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,EAAE,oBAAoB,EAAE;KAC/B,CAAC;AACJ,CAAC,CAAC"}
@@ -1,9 +1,22 @@
1
- export declare class SetupCancelledError extends Error {
2
- constructor(options?: ErrorOptions);
3
- }
1
+ export type PromptChoice<Value> = {
2
+ name: string;
3
+ value: Value;
4
+ };
5
+ export type PromptSelection<Value> = {
6
+ message: string;
7
+ choices: readonly PromptChoice<Value>[];
8
+ default: Value;
9
+ };
10
+ export type PromptMultipleSelection<Value> = {
11
+ message: string;
12
+ choices: readonly PromptChoice<Value>[];
13
+ requiredMessage: string;
14
+ };
4
15
  export type CliPrompt = {
5
16
  readonly isInteractive: boolean;
6
17
  ask(question: string, signal: AbortSignal): Promise<string>;
18
+ select<Value>(selection: PromptSelection<Value>, signal: AbortSignal): Promise<Value>;
19
+ selectMany<Value>(selection: PromptMultipleSelection<Value>, signal: AbortSignal): Promise<Value[]>;
7
20
  close(): void;
8
21
  };
9
22
  export declare const createTerminalPrompt: () => CliPrompt;
@@ -1,29 +1,49 @@
1
1
  import { createInterface } from "node:readline";
2
- export class SetupCancelledError extends Error {
3
- constructor(options) {
4
- super("Setup cancelled.", options);
5
- this.name = "SetupCancelledError";
6
- }
7
- }
2
+ import { CliCancelledError } from "./cancellation.js";
8
3
  export const createTerminalPrompt = () => {
9
4
  let terminal;
10
5
  let closed = false;
6
+ let selecting = false;
7
+ const closing = new AbortController();
11
8
  const lines = [];
12
9
  let waiting;
13
10
  const cancel = () => {
14
11
  closed = true;
15
- waiting?.reject(new SetupCancelledError());
12
+ closing.abort(new CliCancelledError());
13
+ waiting?.reject(new CliCancelledError("Setup cancelled."));
16
14
  waiting = undefined;
17
15
  };
16
+ const selection = async (signal, action) => {
17
+ signal.throwIfAborted();
18
+ if (closed)
19
+ throw new CliCancelledError();
20
+ selecting = true;
21
+ terminal?.pause();
22
+ try {
23
+ return await action({ input: process.stdin, output: process.stderr, signal: AbortSignal.any([signal, closing.signal]) });
24
+ }
25
+ catch (cause) {
26
+ if (cause instanceof Error && ["ExitPromptError", "AbortPromptError"].includes(cause.name))
27
+ throw new CliCancelledError(undefined, { cause });
28
+ throw cause;
29
+ }
30
+ finally {
31
+ selecting = false;
32
+ if (!closed)
33
+ terminal?.resume();
34
+ }
35
+ };
18
36
  return {
19
37
  isInteractive: process.stdin.isTTY === true && process.stderr.isTTY === true,
20
38
  ask: async (question, signal) => {
21
39
  signal.throwIfAborted();
22
40
  if (closed)
23
- throw new SetupCancelledError();
41
+ throw new CliCancelledError("Setup cancelled.");
24
42
  if (terminal === undefined) {
25
43
  terminal = createInterface({ input: process.stdin, output: process.stderr, terminal: true });
26
44
  terminal.on("line", (line) => {
45
+ if (selecting)
46
+ return;
27
47
  if (waiting === undefined)
28
48
  lines.push(line);
29
49
  else {
@@ -39,7 +59,7 @@ export const createTerminalPrompt = () => {
39
59
  if (lines.length !== 0)
40
60
  return lines.shift();
41
61
  return new Promise((resolve, reject) => {
42
- const abort = () => { waiting = undefined; reject(new SetupCancelledError({ cause: signal.reason })); };
62
+ const abort = () => { waiting = undefined; reject(new CliCancelledError("Setup cancelled.", { cause: signal.reason })); };
43
63
  waiting = {
44
64
  resolve: (line) => { signal.removeEventListener("abort", abort); resolve(line); },
45
65
  reject: (cause) => { signal.removeEventListener("abort", abort); reject(cause); },
@@ -49,7 +69,15 @@ export const createTerminalPrompt = () => {
49
69
  abort();
50
70
  });
51
71
  },
52
- close: () => { closed = true; terminal?.close(); },
72
+ select: async (config, signal) => selection(signal, async (context) => {
73
+ const { select } = await import("@inquirer/prompts");
74
+ return select({ ...config, choices: [...config.choices] }, context);
75
+ }),
76
+ selectMany: async (config, signal) => selection(signal, async (context) => {
77
+ const { checkbox } = await import("@inquirer/prompts");
78
+ return checkbox({ message: config.message, choices: [...config.choices], validate: (values) => values.length > 0 || config.requiredMessage }, context);
79
+ }),
80
+ close: () => { cancel(); terminal?.close(); },
53
81
  };
54
82
  };
55
83
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export const parseCommand = (definition, args, path = [definition.name], helpCom
17
17
  const selection = selectCommand(definition, args, path, helpCommand);
18
18
  if (selection.kind !== "selected")
19
19
  return selection;
20
- return parseCommand(selection.command, selection.remaining, selection.path, helpCommand);
20
+ return parseCommand(selection.command, selection.remaining, selection.path, `${selection.path.join(" ")} --help`);
21
21
  }
22
22
  const action = informationAction(definition, args);
23
23
  if (action !== undefined)
@@ -37,7 +37,7 @@ export const parseCommand = (definition, args, path = [definition.name], helpCom
37
37
  const optionName = inline ? argument.slice(0, separator) : argument;
38
38
  const option = definition.options?.find((candidate) => candidate.names.includes(optionName));
39
39
  if (option === undefined || option.action !== undefined || inline && option.value?.kind !== "text") {
40
- throw new UsageError(`Unknown ${definition.name} option ${JSON.stringify(argument)}.`, helpCommand);
40
+ throw new UsageError(`Unknown ${path.join(" ")} option ${JSON.stringify(argument)}.`, helpCommand);
41
41
  }
42
42
  const name = option.names[0];
43
43
  if (options.has(name) && option.repeatable !== true)
@@ -67,9 +67,9 @@ export const parseCommand = (definition, args, path = [definition.name], helpCom
67
67
  }
68
68
  const positional = definition.arguments?.[values.length];
69
69
  if (positional === undefined)
70
- throw new UsageError(`Unexpected ${definition.name} argument ${JSON.stringify(argument)}.`, helpCommand);
70
+ throw new UsageError(`Unexpected ${path.join(" ")} argument ${JSON.stringify(argument)}.`, helpCommand);
71
71
  if (argument === "")
72
- throw new UsageError(`${definition.name} requires a ${positional.name} value.`, helpCommand);
72
+ throw new UsageError(`${path.join(" ")} requires a ${positional.name} value.`, helpCommand);
73
73
  if (positional.choices !== undefined && !positional.choices.includes(argument)) {
74
74
  throw new UsageError(`Unknown ${positional.name} ${JSON.stringify(argument)}. Expected ${positional.choices.join(" or ")}.`, helpCommand);
75
75
  }
@@ -77,11 +77,11 @@ export const parseCommand = (definition, args, path = [definition.name], helpCom
77
77
  }
78
78
  const missing = definition.arguments?.[values.length];
79
79
  if (missing !== undefined)
80
- throw new UsageError(`${definition.name} requires a ${missing.name} value.`, helpCommand);
80
+ throw new UsageError(`${path.join(" ")} requires a ${missing.name} value.`, helpCommand);
81
81
  for (const option of definition.options ?? []) {
82
82
  const name = option.names[0];
83
83
  if (option.required === true && !options.has(name))
84
- throw new UsageError(`${definition.name} requires ${name}.`, helpCommand);
84
+ throw new UsageError(`${path.join(" ")} requires ${name}.`, helpCommand);
85
85
  }
86
86
  return { kind: "run", command: definition, path, values, options };
87
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/cli/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/cli/schema.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ChildProcess } from "node:child_process";
2
+ import type { PublicationIdentityFormat } from "../publication.js";
2
3
  import type { PreparedWorktree } from "./worktrees.js";
3
4
  import type { ReviewPaths } from "../paths.js";
4
5
  import type { Store } from "../store.js";
@@ -40,6 +41,8 @@ export type CopilotRunnerOptions = {
40
41
  };
41
42
  };
42
43
  export type CopilotRunOptions = {
44
+ publisherId: string;
45
+ publicationIdentityFormat: PublicationIdentityFormat;
43
46
  excludeProcess: (review: ReviewState, outcome: CopilotProcessOutcome) => Promise<ProcessesExcluded>;
44
47
  signal?: AbortSignal;
45
48
  previousReview?: PreviousReview;