@twelvehart/orcats 0.2.2 → 0.2.3

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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Use Orcats when you want coding-agent work to be expressed as code instead of a
8
8
 
9
9
  ## Status
10
10
 
11
- The package is version `0.2.2`. Install the public npm package for normal project use:
11
+ The package is version `0.2.3`. Install the public npm package for normal project use:
12
12
 
13
13
  ```bash
14
14
  npm i @twelvehart/orcats
@@ -63,8 +63,8 @@ curl -fsSL https://github.com/ASRagab/orca-ts/releases/latest/download/install.s
63
63
  Pin a version or change the install directory with environment variables:
64
64
 
65
65
  ```bash
66
- ORCA_VERSION=0.2.2 ORCA_INSTALL_DIR="$HOME/.local/bin" \
67
- bash <(curl -fsSL https://github.com/ASRagab/orca-ts/releases/download/v0.2.2/install.sh)
66
+ ORCA_VERSION=0.2.3 ORCA_INSTALL_DIR="$HOME/.local/bin" \
67
+ bash <(curl -fsSL https://github.com/ASRagab/orca-ts/releases/download/v0.2.3/install.sh)
68
68
  ```
69
69
 
70
70
  The standalone binary embeds the runtime API, so it can run a flow that imports from `@twelvehart/orcats` even when the flow project has no `node_modules`. If the project has its own `@twelvehart/orcats` package dependency, that project copy wins.
@@ -35,7 +35,7 @@ export interface AcpSpawnOptions {
35
35
  readonly env?: NodeJS.ProcessEnv;
36
36
  }
37
37
  export type AcpProcessSpawner = (command: string, args: readonly string[], options: AcpSpawnOptions) => AcpProcess;
38
- export type AcpRequestHandler = (message: AcpRequestMessage) => Promise<unknown> | unknown;
38
+ export type AcpRequestHandler = (message: AcpRequestMessage) => unknown;
39
39
  export interface AcpClientOptions {
40
40
  readonly command: string;
41
41
  readonly args?: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"acp-client.d.ts","sourceRoot":"","sources":["../../src/backends/acp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp-client.d.ts","sourceRoot":"","sources":["../../src/backends/acp-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acp-run.d.ts","sourceRoot":"","sources":["../../src/backends/acp-run.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAML,KAAK,UAAU,EAEhB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,GAAG,OAAO;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAMlF;AAED,wBAAgB,gBAAgB,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAEjG;AAED,wBAAgB,eAAe,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAchG;AAaD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,CAAC,SAAS,QAAQ,GAAG,OAAO,EAC3E,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,EACrC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,EAC5C,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAyHf"}
1
+ {"version":3,"file":"acp-run.d.ts","sourceRoot":"","sources":["../../src/backends/acp-run.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAML,KAAK,UAAU,EAEhB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,GAAG,OAAO;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAMlF;AAED,wBAAgB,gBAAgB,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAEjG;AAED,wBAAgB,eAAe,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAchG;AAaD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,CAAC,SAAS,QAAQ,GAAG,OAAO,EAC3E,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,EACrC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,EAC5C,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Hf"}
@@ -20,6 +20,7 @@ export interface BaselineGateIssue {
20
20
  export interface BaselineRepairResult {
21
21
  readonly usage?: Usage | undefined;
22
22
  }
23
+ type BaselineRepairOutput<T = void> = BaselineRepairResult | T;
23
24
  export interface BaselineGateResult {
24
25
  readonly policy: BaselinePolicy;
25
26
  readonly status: "clean" | "repaired";
@@ -32,7 +33,7 @@ export interface RunBaselineGateOptions {
32
33
  readonly commands: readonly VerificationCommand[];
33
34
  readonly policy?: BaselinePolicy;
34
35
  readonly commandTool?: CommandTool;
35
- readonly repair?: (issues: readonly BaselineGateIssue[]) => Promise<BaselineRepairResult | void>;
36
+ readonly repair?: (issues: readonly BaselineGateIssue[]) => Promise<BaselineRepairOutput>;
36
37
  readonly monitor?: Pick<WorkflowMonitor, "stage" | "recordOutcome" | "recordFailure">;
37
38
  readonly snapshotDir?: string;
38
39
  readonly maxIterations?: number;
@@ -51,4 +52,5 @@ export declare function resolveBaselinePolicy(options?: BaselinePolicyParseOptio
51
52
  export declare function parseBaselinePolicy(value: string | undefined): BaselinePolicy;
52
53
  export declare function runBaselineGate(options: RunBaselineGateOptions): Promise<BaselineGateResult>;
53
54
  export declare function captureDirtyBaselineSnapshot(options: DirtyBaselineSnapshotOptions): Promise<string | undefined>;
55
+ export {};
54
56
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/baseline/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/baseline/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const ORCA_VERSION = "0.2.2";
1
+ export declare const ORCA_VERSION = "0.2.3";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twelvehart/orcats",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "TypeScript-native reimagining of Orca: deterministic coding-agent flows with author-time type feedback.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -56,10 +56,11 @@
56
56
  "build:binary": "bun build src/cli/main.ts --compile --outfile dist/orcats",
57
57
  "build:types": "tsc -p tsconfig.build.json",
58
58
  "build:release": "bun run scripts/build-release-binaries.ts",
59
- "lint": "eslint .",
59
+ "lint": "bun run docs:site:prepare && eslint .",
60
60
  "test": "bun test",
61
61
  "typecheck": "tsc --noEmit",
62
62
  "docs:site:dev": "cd website && bun run dev",
63
+ "docs:site:prepare": "cd website && bun install --frozen-lockfile && bunx astro sync",
63
64
  "docs:site:build": "cd website && bun install --frozen-lockfile && bun run build",
64
65
  "docs:site:preview": "cd website && bun run preview",
65
66
  "docs:check": "bun run scripts/check-doc-links.ts",
@@ -72,7 +73,7 @@
72
73
  "validate:package": "bun run build:types && bun run scripts/validate-package-artifact.ts",
73
74
  "smoke:package": "bun run scripts/smoke-package.ts",
74
75
  "smoke:binary": "bun run scripts/smoke-binary.ts",
75
- "verify": "bun run typecheck && bun test && bun run docs:site:build && bun run docs:check && bun run docs:symbols && bun run validate:fixtures && bun run validate:release && bun run build:types && bun run docs:signatures && bun run check:facade-gate && bun run smoke:binary"
76
+ "verify": "bun run lint && bun run typecheck && bun test && bun run docs:site:build && bun run docs:check && bun run docs:symbols && bun run validate:fixtures && bun run validate:release && bun run build:types && bun run docs:signatures && bun run check:facade-gate && bun run smoke:binary"
76
77
  },
77
78
  "dependencies": {
78
79
  "effect": "^3.21.2",
@@ -83,7 +84,7 @@
83
84
  "@eslint/js": "^9.39.1",
84
85
  "@types/bun": "^1.3.3",
85
86
  "eslint": "^9.39.1",
86
- "eslint-plugin-boundaries": "^5.3.0",
87
+ "eslint-plugin-boundaries": "^6.0.2",
87
88
  "typescript": "^5.9.3",
88
89
  "typescript-eslint": "^8.46.4"
89
90
  },
@@ -52,7 +52,7 @@ export type AcpProcessSpawner = (
52
52
  options: AcpSpawnOptions
53
53
  ) => AcpProcess;
54
54
 
55
- export type AcpRequestHandler = (message: AcpRequestMessage) => Promise<unknown> | unknown;
55
+ export type AcpRequestHandler = (message: AcpRequestMessage) => unknown;
56
56
 
57
57
  interface Deferred<T> {
58
58
  readonly promise: Promise<T>;
@@ -83,7 +83,7 @@ export class AcpClient {
83
83
  readonly timer: ReturnType<typeof setTimeout>;
84
84
  }
85
85
  >();
86
- private readonly closedState: Deferred<void> = Promise.withResolvers<void>();
86
+ private readonly closedState: Deferred<void> = Promise.withResolvers();
87
87
  private nextId = 0;
88
88
  private closed = false;
89
89
 
@@ -121,7 +121,13 @@ export class AcpClient {
121
121
  this.pending.delete(id);
122
122
  reject(new Error(`ACP request ${method} timed out after ${String(timeoutMs)}ms`));
123
123
  }, timeoutMs);
124
- this.pending.set(id, { resolve: (value) => resolve(value as T), reject, timer });
124
+ this.pending.set(id, {
125
+ resolve: (value) => {
126
+ resolve(value as T);
127
+ },
128
+ reject,
129
+ timer
130
+ });
125
131
  });
126
132
  this.write(message);
127
133
  return await response;
@@ -259,23 +265,19 @@ export function spawnAcpProcess(
259
265
  stdio: ["pipe", "pipe", "pipe"]
260
266
  });
261
267
 
262
- if (!child.stdout || !child.stdin) {
263
- throw new Error(`failed to capture stdio for ${command}`);
264
- }
265
-
266
268
  const exit = Promise.withResolvers<number | null>();
267
269
  child.on("error", exit.reject);
268
270
  child.on("close", exit.resolve);
269
271
 
270
272
  return {
271
273
  stdout: child.stdout,
272
- ...(child.stderr ? { stderr: child.stderr } : {}),
274
+ stderr: child.stderr,
273
275
  exit: exit.promise,
274
276
  write(data: string) {
275
- child.stdin?.write(data);
277
+ child.stdin.write(data);
276
278
  },
277
279
  endStdin() {
278
- child.stdin?.end();
280
+ child.stdin.end();
279
281
  },
280
282
  kill(signal?: NodeJS.Signals) {
281
283
  child.kill(signal);
@@ -92,24 +92,26 @@ export async function runAcpConversation<Output, B extends "claude" | "codex">(
92
92
  let markPromptActivity = (): void => {};
93
93
 
94
94
  try {
95
- client = await runAcpPhase(options.backend, "initialization", async () => createAcpClient({
96
- command: options.command,
97
- args: options.args ?? [],
98
- cwd: sessionCwd,
99
- ...(options.env === undefined ? {} : { env: options.env }),
100
- ...(options.spawnProcess === undefined ? {} : { spawnProcess: options.spawnProcess }),
101
- requestTimeoutMs: options.requestTimeoutMs ?? 600_000,
102
- handleRequest: (message) => handleClientRequest(message, sessionCwd, options.config?.readOnly === true),
103
- onIncomingMessage: () => {
104
- markPromptActivity();
105
- }
106
- }));
95
+ client = await runAcpPhase(options.backend, "initialization", () =>
96
+ Promise.resolve(createAcpClient({
97
+ command: options.command,
98
+ args: options.args ?? [],
99
+ cwd: sessionCwd,
100
+ ...(options.env === undefined ? {} : { env: options.env }),
101
+ ...(options.spawnProcess === undefined ? {} : { spawnProcess: options.spawnProcess }),
102
+ requestTimeoutMs: options.requestTimeoutMs ?? 600_000,
103
+ handleRequest: (message) => handleClientRequest(message, sessionCwd, options.config?.readOnly === true),
104
+ onIncomingMessage: () => {
105
+ markPromptActivity();
106
+ }
107
+ }))
108
+ );
107
109
  options.setProcess(client.process);
108
110
  const acpClient = client;
109
111
  options.setCancel(() => cancelAcpTurn(acpClient, activeSessionId, activePrompt, options.cancelTimeoutMs));
110
112
  const done = acpClient.done.then(
111
113
  () => ({ type: "success" as const }),
112
- (error) => ({ type: "failed" as const, error })
114
+ (error: unknown) => ({ type: "failed" as const, error })
113
115
  );
114
116
 
115
117
  const updates = consumeAcpMessages(
@@ -149,7 +151,9 @@ export async function runAcpConversation<Output, B extends "claude" | "codex">(
149
151
  options.requestTimeoutMs ?? 600_000,
150
152
  options.inactivityTimeoutMs ?? DefaultAcpInactivityTimeoutMs
151
153
  );
152
- markPromptActivity = watchdog.markActivity;
154
+ markPromptActivity = () => {
155
+ watchdog.markActivity();
156
+ };
153
157
  activePrompt = runAcpPhase(options.backend, "prompt execution", () => Promise.race([
154
158
  acpClient.request<AcpPromptResponse>("session/prompt", {
155
159
  sessionId: activeSessionId,
@@ -623,10 +627,6 @@ function backendLabel(backend: "claude" | "codex"): string {
623
627
  return backend === "claude" ? "Claude" : "Codex";
624
628
  }
625
629
 
626
- function delay(ms: number): Promise<void> {
627
- return new Promise((resolve) => setTimeout(resolve, ms));
628
- }
629
-
630
630
  function isObject(value: unknown): value is Record<string, unknown> {
631
631
  return typeof value === "object" && value !== null;
632
632
  }
@@ -222,8 +222,5 @@ function resolveClaudeTransport<Output>(
222
222
  if (config.model !== undefined || config.resumeSessionId !== undefined) {
223
223
  return "stream-json";
224
224
  }
225
- if (transport === undefined || transport === "acp") {
226
- return "acp";
227
- }
228
225
  return "acp";
229
226
  }
@@ -31,6 +31,8 @@ export interface BaselineRepairResult {
31
31
  readonly usage?: Usage | undefined;
32
32
  }
33
33
 
34
+ type BaselineRepairOutput<T = void> = BaselineRepairResult | T;
35
+
34
36
  export interface BaselineGateResult {
35
37
  readonly policy: BaselinePolicy;
36
38
  readonly status: "clean" | "repaired";
@@ -44,7 +46,7 @@ export interface RunBaselineGateOptions {
44
46
  readonly commands: readonly VerificationCommand[];
45
47
  readonly policy?: BaselinePolicy;
46
48
  readonly commandTool?: CommandTool;
47
- readonly repair?: (issues: readonly BaselineGateIssue[]) => Promise<BaselineRepairResult | void>;
49
+ readonly repair?: (issues: readonly BaselineGateIssue[]) => Promise<BaselineRepairOutput>;
48
50
  readonly monitor?: Pick<WorkflowMonitor, "stage" | "recordOutcome" | "recordFailure">;
49
51
  readonly snapshotDir?: string;
50
52
  readonly maxIterations?: number;
@@ -205,7 +207,7 @@ async function runBaselineGateInner(options: RunBaselineGateOptions): Promise<Ba
205
207
 
206
208
  let usage: Usage | undefined;
207
209
  const loop = await fixLoop<BaselineGateIssue>(
208
- async () => ok(latest.passed ? [] : [{ message: renderValidationFailure(latest.logs), fixable: true as const }]),
210
+ () => Promise.resolve(ok(latest.passed ? [] : [{ message: renderValidationFailure(latest.logs), fixable: true as const }])),
209
211
  async (issues) => {
210
212
  const repaired = await options.repair?.(issues);
211
213
  usage = addUsage(usage, repaired?.usage);
@@ -37,6 +37,22 @@ export function canResolveOrca(scriptPath: string): boolean {
37
37
  }
38
38
 
39
39
  function canResolveFrom(specifier: string, fromDir: string): boolean {
40
+ if (isBunExecutable()) {
41
+ const probe = Bun.spawnSync(
42
+ [
43
+ process.execPath,
44
+ "--eval",
45
+ `Bun.resolveSync(${JSON.stringify(specifier)}, ${JSON.stringify(fromDir)});`,
46
+ ],
47
+ {
48
+ stdin: "ignore",
49
+ stdout: "ignore",
50
+ stderr: "ignore",
51
+ },
52
+ );
53
+ return probe.exitCode === 0;
54
+ }
55
+
40
56
  try {
41
57
  Bun.resolveSync(specifier, fromDir);
42
58
  return true;
@@ -46,6 +62,9 @@ function canResolveFrom(specifier: string, fromDir: string): boolean {
46
62
  }
47
63
 
48
64
  function hasProjectPackage(specifier: string, fromDir: string, includeSelfReference: boolean): boolean {
65
+ if (!canResolveFrom(specifier, fromDir)) {
66
+ return false;
67
+ }
49
68
  for (let dir = fromDir; ; dir = dirname(dir)) {
50
69
  if (existsSync(join(dir, "node_modules", ...specifier.split("/"), "package.json"))) {
51
70
  return true;
package/src/cli/main.ts CHANGED
@@ -304,8 +304,10 @@ function createCliReporter(): RunReporter {
304
304
  return createRunReporter({
305
305
  sinks: [
306
306
  createRunPresenter({
307
- isTTY: process.stderr.isTTY === true,
308
- writeDiagnostic: (message) => process.stderr.write(message),
307
+ isTTY: process.stderr.isTTY,
308
+ writeDiagnostic: (message) => {
309
+ process.stderr.write(message);
310
+ },
309
311
  }),
310
312
  ],
311
313
  });
@@ -1 +1 @@
1
- export const ORCA_VERSION = "0.2.2";
1
+ export const ORCA_VERSION = "0.2.3";
@@ -336,8 +336,10 @@ function defaultRunReporter(writeStatus: ((line: string) => void) | undefined):
336
336
  return createRunReporter({
337
337
  sinks: [
338
338
  createRunPresenter({
339
- isTTY: process.stderr.isTTY === true,
340
- writeDiagnostic: (text) => writer(text.endsWith("\n") ? text.slice(0, -1) : text),
339
+ isTTY: process.stderr.isTTY,
340
+ writeDiagnostic: (text) => {
341
+ writer(text.endsWith("\n") ? text.slice(0, -1) : text);
342
+ },
341
343
  }),
342
344
  ],
343
345
  });
@@ -186,7 +186,7 @@ export function createRunReporter(options: RunReporterOptions = {}): RunReporter
186
186
 
187
187
  export function createRunPresenter(options: RunPresenterOptions = {}): RunEventSink {
188
188
  const env = options.env ?? process.env;
189
- const isTTY = options.isTTY ?? process.stderr.isTTY === true;
189
+ const isTTY = options.isTTY ?? process.stderr.isTTY;
190
190
  const writeDiagnostic =
191
191
  options.writeDiagnostic ??
192
192
  ((text: string) => {
@@ -285,7 +285,7 @@ function formatCycleProgress(head: string, event: CycleProgressEvent): string {
285
285
 
286
286
  function prefix(options: Pick<RunPresenterOptions, "env" | "isTTY"> = {}): string {
287
287
  const env = options.env ?? process.env;
288
- const isTTY = options.isTTY ?? process.stderr.isTTY === true;
288
+ const isTTY = options.isTTY ?? process.stderr.isTTY;
289
289
  if (isTTY && !env.NO_COLOR && !env.CI) {
290
290
  return "\u001b[36morca\u001b[0m |";
291
291
  }