@orkestrel/probe 0.0.26 → 0.0.28
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/dist/src/core/index.cjs +34 -34
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +70 -70
- package/dist/src/core/index.d.ts +70 -70
- package/dist/src/core/index.js +33 -33
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +45 -37
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +46 -41
- package/dist/src/server/index.d.ts +46 -41
- package/dist/src/server/index.js +47 -39
- package/dist/src/server/index.js.map +1 -1
- package/package.json +13 -13
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Case } from '@orkestrel/probe';
|
|
2
|
-
import type { Check } from '@orkestrel/probe';
|
|
3
2
|
import type { Claim } from '@orkestrel/probe';
|
|
4
3
|
import type { EmitterInterface } from '@orkestrel/emitter';
|
|
5
4
|
import type { EventEmitter } from 'node:events';
|
|
@@ -12,6 +11,7 @@ import type { ProbeInterface } from '@orkestrel/probe';
|
|
|
12
11
|
import type { ProbeOptions } from '@orkestrel/probe';
|
|
13
12
|
import type { Project } from '@orkestrel/probe';
|
|
14
13
|
import type { Stage } from '@orkestrel/probe';
|
|
14
|
+
import type { StageResult } from '@orkestrel/probe';
|
|
15
15
|
import type { Toolchain } from '@orkestrel/probe';
|
|
16
16
|
import type { Verdict } from '@orkestrel/probe';
|
|
17
17
|
import type * as VitestNode from 'vitest/node';
|
|
@@ -55,8 +55,12 @@ export declare function captureListeners(emitter: EventEmitter, events: readonly
|
|
|
55
55
|
* Collects every regular file a target workspace holds, skipping the trees no inspection reads.
|
|
56
56
|
*
|
|
57
57
|
* @remarks
|
|
58
|
-
* Skips a directory named `.git`, `dist`, or `node_modules` at any depth
|
|
59
|
-
*
|
|
58
|
+
* Skips a directory named `.git`, `dist`, or `node_modules` at any depth. Of the workspace-root
|
|
59
|
+
* `tmp` directory it walks only `tmp/probes`: the scaffold tmp layout holds the runtime probes there
|
|
60
|
+
* and nothing else an inspection reads, so a consumer's ignored data under `tmp/` is never read or
|
|
61
|
+
* copied. The match is the lowercase `tmp` spelling exactly, and a `tmp` directory below the root is
|
|
62
|
+
* walked like any other. The directory {@link TYPE_MIRROR} names is skipped as well, so this
|
|
63
|
+
* package's own mirror stays out of the walk if it ever moves outside `tmp`. A
|
|
60
64
|
* directory this host cannot list is skipped rather than raised, so one unreadable directory in a
|
|
61
65
|
* consumer's tree is not a reason to refuse the whole walk. A symbolic link is not carried, whether
|
|
62
66
|
* it names a file or a directory, so a file reached only through one is absent from the result; a
|
|
@@ -86,10 +90,10 @@ export declare function collectWorkspaceFiles(workspace: string): readonly strin
|
|
|
86
90
|
*
|
|
87
91
|
* @example
|
|
88
92
|
* ```ts
|
|
89
|
-
*
|
|
93
|
+
* computeWorkspaceDigest('/srv/checkout', { strict: true }).length // 32
|
|
90
94
|
* ```
|
|
91
95
|
*/
|
|
92
|
-
export declare function
|
|
96
|
+
export declare function computeWorkspaceDigest(workspace: string, value: unknown): string;
|
|
93
97
|
|
|
94
98
|
/**
|
|
95
99
|
* Creates the protocol failure returned when the MCP handshake cannot arm the probe.
|
|
@@ -220,12 +224,12 @@ export declare function filterUniqueIssues(issues: readonly Issue[]): readonly I
|
|
|
220
224
|
*
|
|
221
225
|
* @remarks
|
|
222
226
|
* The published claim schema constrains `Draft.path` to a non-empty string and nothing else, while
|
|
223
|
-
* `isDraft` also refuses an absolute path and one that
|
|
224
|
-
* the whole of the difference between the advertised contract and the enforced one, so a
|
|
225
|
-
* refused after satisfying the schema is refused here and nowhere else. The whole input must
|
|
226
|
-
* satisfy that schema. Each draft is then tested with `isDraft` itself rather than with a
|
|
227
|
-
* copy of its rule. Reports nothing for a value carrying no draft member, including one
|
|
228
|
-
* a member this contract does not declare.
|
|
227
|
+
* `isDraft` also refuses an absolute path and one that resolves outside the workspace. That one
|
|
228
|
+
* member is the whole of the difference between the advertised contract and the enforced one, so a
|
|
229
|
+
* caller refused after satisfying the schema is refused here and nowhere else. The whole input must
|
|
230
|
+
* first satisfy that schema. Each draft is then tested with `isDraft` itself rather than with a
|
|
231
|
+
* second copy of its rule. Reports nothing for a value carrying no draft member, including one
|
|
232
|
+
* refused for a member this contract does not declare.
|
|
229
233
|
*
|
|
230
234
|
* This function lives in the server helpers rather than in core: core's leaf pair, `helpers.ts` and
|
|
231
235
|
* `validators.ts`, may not consume the shapes module this function reads `CLAIM_SHAPE` from, and
|
|
@@ -397,7 +401,7 @@ export declare function isRefusedName(file: string, error: unknown): boolean;
|
|
|
397
401
|
*
|
|
398
402
|
* @remarks
|
|
399
403
|
* Starting launches the target workspace's Oxlint binary with its Language Server Protocol mode
|
|
400
|
-
* and hands the conversation to `@orkestrel/lsp`: `
|
|
404
|
+
* and hands the conversation to `@orkestrel/lsp`: `createLSPStdioTransport` owns the child
|
|
401
405
|
* process and its bytes, and `createLSPClient` owns the framing, the request correlation, the
|
|
402
406
|
* capabilities this stage advertises, and the choice between pulled and pushed diagnostics. This
|
|
403
407
|
* stage owns the workspace, the candidate identity, and the projection from a diagnostic to an
|
|
@@ -425,7 +429,7 @@ export declare function isRefusedName(file: string, error: unknown): boolean;
|
|
|
425
429
|
* @example
|
|
426
430
|
* ```ts
|
|
427
431
|
* const stage = new LintStage('/srv/checkout')
|
|
428
|
-
* const
|
|
432
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
429
433
|
* await stage.destroy()
|
|
430
434
|
* ```
|
|
431
435
|
*/
|
|
@@ -441,7 +445,7 @@ export declare class LintStage implements LintStageInterface {
|
|
|
441
445
|
get progress(): number;
|
|
442
446
|
get exit(): Promise<never>;
|
|
443
447
|
start(): Promise<void>;
|
|
444
|
-
inspect(subject: Case, options?: InspectionOptions): Promise<
|
|
448
|
+
inspect(subject: Case, options?: InspectionOptions): Promise<StageResult>;
|
|
445
449
|
destroy(): Promise<void>;
|
|
446
450
|
}
|
|
447
451
|
|
|
@@ -461,7 +465,7 @@ export declare class LintStage implements LintStageInterface {
|
|
|
461
465
|
*
|
|
462
466
|
* @example
|
|
463
467
|
* ```ts
|
|
464
|
-
* const
|
|
468
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
465
469
|
* ```
|
|
466
470
|
*/
|
|
467
471
|
export declare interface LintStageInterface extends StageInterface {
|
|
@@ -478,10 +482,10 @@ export declare interface LintStageInterface extends StageInterface {
|
|
|
478
482
|
*
|
|
479
483
|
* @example
|
|
480
484
|
* ```ts
|
|
481
|
-
* const
|
|
485
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
482
486
|
* ```
|
|
483
487
|
*/
|
|
484
|
-
inspect(subject: Case, options?: InspectionOptions): Promise<
|
|
488
|
+
inspect(subject: Case, options?: InspectionOptions): Promise<StageResult>;
|
|
485
489
|
}
|
|
486
490
|
|
|
487
491
|
/**
|
|
@@ -582,10 +586,11 @@ export declare function normalizePath(path: string): string;
|
|
|
582
586
|
* `tsc --showConfig` spells a path relative to the project file, so a printed record carries an
|
|
583
587
|
* absolute path only where a project itself declares one. Rewriting a contained absolute path to
|
|
584
588
|
* its relative form keeps one commit checked out at two roots reading to one digest. A path that
|
|
585
|
-
*
|
|
586
|
-
* tree by a relative spelling. Key order is the compiler's own and it differs between
|
|
587
|
-
* majors, so sorting removes a difference that means nothing. A `__proto__` key is
|
|
588
|
-
* the earlier assignment-built record dropped it, so a digest stays the same across
|
|
589
|
+
* resolves outside the workspace is left as it stands, because rewriting it would name a file
|
|
590
|
+
* outside the tree by a relative spelling. Key order is the compiler's own and it differs between
|
|
591
|
+
* the supported majors, so sorting removes a difference that means nothing. A `__proto__` key is
|
|
592
|
+
* dropped, as the earlier assignment-built record dropped it, so a digest stays the same across
|
|
593
|
+
* releases.
|
|
589
594
|
*
|
|
590
595
|
* @param workspace - The target workspace root
|
|
591
596
|
* @param value - The value to rewrite
|
|
@@ -1279,10 +1284,10 @@ export declare function resolveWorkspaceModule(workspace: string, specifier: str
|
|
|
1279
1284
|
* Vitest service after 64 specifications rather than deleting from each map that service owns. Any
|
|
1280
1285
|
* bound holds the retention flat, because the replacement releases everything the instance held,
|
|
1281
1286
|
* and 64 is the value chosen. The inspection that crosses the bound pays the replacement
|
|
1282
|
-
* synchronously: it closes the resident service and warms a
|
|
1283
|
-
* over this package's own workspace on the host `guides/probe.md` § Cost names, two
|
|
1284
|
-
* inspections put that one at 480 ms and 269 ms against median inspections of 156 ms and
|
|
1285
|
-
* budget one call in 64 at 110 ms to 330 ms above the rest.
|
|
1287
|
+
* synchronously: it closes the resident service and warms a fresh service before it runs. On
|
|
1288
|
+
* 2026-08-20, over this package's own workspace on the host `guides/probe.md` § Cost names, two
|
|
1289
|
+
* runs of 66 inspections put that one at 480 ms and 269 ms against median inspections of 156 ms and
|
|
1290
|
+
* 155 ms, so budget one call in 64 at 110 ms to 330 ms above the rest.
|
|
1286
1291
|
*
|
|
1287
1292
|
* Every issue this stage emits names its party, and the stage emits an issue for every party
|
|
1288
1293
|
* `Party` declares. An `origin: 'claimant'` issue is a failure Vitest reported about the candidate.
|
|
@@ -1307,7 +1312,7 @@ export declare function resolveWorkspaceModule(workspace: string, specifier: str
|
|
|
1307
1312
|
* @example
|
|
1308
1313
|
* ```ts
|
|
1309
1314
|
* const stage = new RuntimeStage('/srv/checkout')
|
|
1310
|
-
* const
|
|
1315
|
+
* const result = await stage.inspect(subject)
|
|
1311
1316
|
* await stage.destroy()
|
|
1312
1317
|
* ```
|
|
1313
1318
|
*/
|
|
@@ -1335,7 +1340,7 @@ export declare class RuntimeStage implements StageInterface {
|
|
|
1335
1340
|
* @returns One outcome for this stage
|
|
1336
1341
|
* @throws When the workspace's own tool cannot start or has already been destroyed
|
|
1337
1342
|
*/
|
|
1338
|
-
inspect(subject: Case): Promise<
|
|
1343
|
+
inspect(subject: Case): Promise<StageResult>;
|
|
1339
1344
|
/**
|
|
1340
1345
|
* Tears down the resident tool or the mirror and releases its resources.
|
|
1341
1346
|
*
|
|
@@ -1395,8 +1400,8 @@ export declare function scanDiagnostics(text: string): readonly Diagnostic[];
|
|
|
1395
1400
|
*
|
|
1396
1401
|
* @example
|
|
1397
1402
|
* ```ts
|
|
1398
|
-
* const
|
|
1399
|
-
* console.log(
|
|
1403
|
+
* const result = await stage.inspect(subject)
|
|
1404
|
+
* console.log(result.stage)
|
|
1400
1405
|
* await stage.destroy()
|
|
1401
1406
|
* ```
|
|
1402
1407
|
*/
|
|
@@ -1430,11 +1435,11 @@ export declare interface StageInterface {
|
|
|
1430
1435
|
*
|
|
1431
1436
|
* @example
|
|
1432
1437
|
* ```ts
|
|
1433
|
-
* const
|
|
1434
|
-
* console.log(
|
|
1438
|
+
* const result = await stage.inspect(subject)
|
|
1439
|
+
* console.log(result.stage, result.elapsed, result.issues.length)
|
|
1435
1440
|
* ```
|
|
1436
1441
|
*/
|
|
1437
|
-
inspect(subject: Case): Promise<
|
|
1442
|
+
inspect(subject: Case): Promise<StageResult>;
|
|
1438
1443
|
/**
|
|
1439
1444
|
* Tears down the resident tool or the mirror and releases its resources.
|
|
1440
1445
|
*
|
|
@@ -1484,7 +1489,7 @@ export declare interface StageInterface {
|
|
|
1484
1489
|
* @example
|
|
1485
1490
|
* ```ts
|
|
1486
1491
|
* const stage = new TypeStage('/srv/checkout')
|
|
1487
|
-
* const
|
|
1492
|
+
* const result = await stage.inspect(subject, 'configs/src/tsconfig.core.json')
|
|
1488
1493
|
* await stage.destroy()
|
|
1489
1494
|
* ```
|
|
1490
1495
|
*/
|
|
@@ -1514,7 +1519,7 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1514
1519
|
* @throws When the workspace refuses the mirror, when a project the run reads is malformed, or
|
|
1515
1520
|
* when the stage has already been destroyed
|
|
1516
1521
|
*/
|
|
1517
|
-
inspect(subject: Case, project?: string): Promise<
|
|
1522
|
+
inspect(subject: Case, project?: string): Promise<StageResult>;
|
|
1518
1523
|
/**
|
|
1519
1524
|
* Resolves one project to the path and digest this stage applies for it.
|
|
1520
1525
|
*
|
|
@@ -1528,8 +1533,8 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1528
1533
|
*
|
|
1529
1534
|
* @param project - The workspace-relative TypeScript project to resolve
|
|
1530
1535
|
* @returns The resolved workspace-relative path and the digest of its compiler options
|
|
1531
|
-
* @throws When the project
|
|
1532
|
-
* stage has already been destroyed
|
|
1536
|
+
* @throws When the project resolves outside the workspace, when the compiler refuses it, or when
|
|
1537
|
+
* the stage has already been destroyed
|
|
1533
1538
|
*/
|
|
1534
1539
|
resolve(project: string): Promise<Project>;
|
|
1535
1540
|
/**
|
|
@@ -1555,7 +1560,7 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1555
1560
|
* @example
|
|
1556
1561
|
* ```ts
|
|
1557
1562
|
* const project = await stage.resolve('configs/src/tsconfig.core.json')
|
|
1558
|
-
* const
|
|
1563
|
+
* const result = await stage.inspect(subject, project.path)
|
|
1559
1564
|
* ```
|
|
1560
1565
|
*/
|
|
1561
1566
|
export declare interface TypeStageInterface extends StageInterface {
|
|
@@ -1571,10 +1576,10 @@ export declare interface TypeStageInterface extends StageInterface {
|
|
|
1571
1576
|
*
|
|
1572
1577
|
* @example
|
|
1573
1578
|
* ```ts
|
|
1574
|
-
* const
|
|
1579
|
+
* const result = await stage.inspect(subject, 'configs/src/tsconfig.core.json')
|
|
1575
1580
|
* ```
|
|
1576
1581
|
*/
|
|
1577
|
-
inspect(subject: Case, project?: string): Promise<
|
|
1582
|
+
inspect(subject: Case, project?: string): Promise<StageResult>;
|
|
1578
1583
|
/**
|
|
1579
1584
|
* Resolves one project to the path and digest the stage applies for it.
|
|
1580
1585
|
* Calls `start()` before reading the project.
|
|
@@ -1585,8 +1590,8 @@ export declare interface TypeStageInterface extends StageInterface {
|
|
|
1585
1590
|
*
|
|
1586
1591
|
* @param project - The workspace-relative TypeScript project to resolve
|
|
1587
1592
|
* @returns The resolved workspace-relative path and the digest of its compiler options
|
|
1588
|
-
* @throws When the project
|
|
1589
|
-
* stage has already been destroyed
|
|
1593
|
+
* @throws When the project resolves outside the workspace, when the compiler refuses it, or when
|
|
1594
|
+
* the stage has already been destroyed
|
|
1590
1595
|
*
|
|
1591
1596
|
* @example
|
|
1592
1597
|
* ```ts
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Case } from '@orkestrel/probe';
|
|
2
|
-
import type { Check } from '@orkestrel/probe';
|
|
3
2
|
import type { Claim } from '@orkestrel/probe';
|
|
4
3
|
import type { EmitterInterface } from '@orkestrel/emitter';
|
|
5
4
|
import type { EventEmitter } from 'node:events';
|
|
@@ -12,6 +11,7 @@ import type { ProbeInterface } from '@orkestrel/probe';
|
|
|
12
11
|
import type { ProbeOptions } from '@orkestrel/probe';
|
|
13
12
|
import type { Project } from '@orkestrel/probe';
|
|
14
13
|
import type { Stage } from '@orkestrel/probe';
|
|
14
|
+
import type { StageResult } from '@orkestrel/probe';
|
|
15
15
|
import type { Toolchain } from '@orkestrel/probe';
|
|
16
16
|
import type { Verdict } from '@orkestrel/probe';
|
|
17
17
|
import type * as VitestNode from 'vitest/node';
|
|
@@ -55,8 +55,12 @@ export declare function captureListeners(emitter: EventEmitter, events: readonly
|
|
|
55
55
|
* Collects every regular file a target workspace holds, skipping the trees no inspection reads.
|
|
56
56
|
*
|
|
57
57
|
* @remarks
|
|
58
|
-
* Skips a directory named `.git`, `dist`, or `node_modules` at any depth
|
|
59
|
-
*
|
|
58
|
+
* Skips a directory named `.git`, `dist`, or `node_modules` at any depth. Of the workspace-root
|
|
59
|
+
* `tmp` directory it walks only `tmp/probes`: the scaffold tmp layout holds the runtime probes there
|
|
60
|
+
* and nothing else an inspection reads, so a consumer's ignored data under `tmp/` is never read or
|
|
61
|
+
* copied. The match is the lowercase `tmp` spelling exactly, and a `tmp` directory below the root is
|
|
62
|
+
* walked like any other. The directory {@link TYPE_MIRROR} names is skipped as well, so this
|
|
63
|
+
* package's own mirror stays out of the walk if it ever moves outside `tmp`. A
|
|
60
64
|
* directory this host cannot list is skipped rather than raised, so one unreadable directory in a
|
|
61
65
|
* consumer's tree is not a reason to refuse the whole walk. A symbolic link is not carried, whether
|
|
62
66
|
* it names a file or a directory, so a file reached only through one is absent from the result; a
|
|
@@ -86,10 +90,10 @@ export declare function collectWorkspaceFiles(workspace: string): readonly strin
|
|
|
86
90
|
*
|
|
87
91
|
* @example
|
|
88
92
|
* ```ts
|
|
89
|
-
*
|
|
93
|
+
* computeWorkspaceDigest('/srv/checkout', { strict: true }).length // 32
|
|
90
94
|
* ```
|
|
91
95
|
*/
|
|
92
|
-
export declare function
|
|
96
|
+
export declare function computeWorkspaceDigest(workspace: string, value: unknown): string;
|
|
93
97
|
|
|
94
98
|
/**
|
|
95
99
|
* Creates the protocol failure returned when the MCP handshake cannot arm the probe.
|
|
@@ -220,12 +224,12 @@ export declare function filterUniqueIssues(issues: readonly Issue[]): readonly I
|
|
|
220
224
|
*
|
|
221
225
|
* @remarks
|
|
222
226
|
* The published claim schema constrains `Draft.path` to a non-empty string and nothing else, while
|
|
223
|
-
* `isDraft` also refuses an absolute path and one that
|
|
224
|
-
* the whole of the difference between the advertised contract and the enforced one, so a
|
|
225
|
-
* refused after satisfying the schema is refused here and nowhere else. The whole input must
|
|
226
|
-
* satisfy that schema. Each draft is then tested with `isDraft` itself rather than with a
|
|
227
|
-
* copy of its rule. Reports nothing for a value carrying no draft member, including one
|
|
228
|
-
* a member this contract does not declare.
|
|
227
|
+
* `isDraft` also refuses an absolute path and one that resolves outside the workspace. That one
|
|
228
|
+
* member is the whole of the difference between the advertised contract and the enforced one, so a
|
|
229
|
+
* caller refused after satisfying the schema is refused here and nowhere else. The whole input must
|
|
230
|
+
* first satisfy that schema. Each draft is then tested with `isDraft` itself rather than with a
|
|
231
|
+
* second copy of its rule. Reports nothing for a value carrying no draft member, including one
|
|
232
|
+
* refused for a member this contract does not declare.
|
|
229
233
|
*
|
|
230
234
|
* This function lives in the server helpers rather than in core: core's leaf pair, `helpers.ts` and
|
|
231
235
|
* `validators.ts`, may not consume the shapes module this function reads `CLAIM_SHAPE` from, and
|
|
@@ -397,7 +401,7 @@ export declare function isRefusedName(file: string, error: unknown): boolean;
|
|
|
397
401
|
*
|
|
398
402
|
* @remarks
|
|
399
403
|
* Starting launches the target workspace's Oxlint binary with its Language Server Protocol mode
|
|
400
|
-
* and hands the conversation to `@orkestrel/lsp`: `
|
|
404
|
+
* and hands the conversation to `@orkestrel/lsp`: `createLSPStdioTransport` owns the child
|
|
401
405
|
* process and its bytes, and `createLSPClient` owns the framing, the request correlation, the
|
|
402
406
|
* capabilities this stage advertises, and the choice between pulled and pushed diagnostics. This
|
|
403
407
|
* stage owns the workspace, the candidate identity, and the projection from a diagnostic to an
|
|
@@ -425,7 +429,7 @@ export declare function isRefusedName(file: string, error: unknown): boolean;
|
|
|
425
429
|
* @example
|
|
426
430
|
* ```ts
|
|
427
431
|
* const stage = new LintStage('/srv/checkout')
|
|
428
|
-
* const
|
|
432
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
429
433
|
* await stage.destroy()
|
|
430
434
|
* ```
|
|
431
435
|
*/
|
|
@@ -441,7 +445,7 @@ export declare class LintStage implements LintStageInterface {
|
|
|
441
445
|
get progress(): number;
|
|
442
446
|
get exit(): Promise<never>;
|
|
443
447
|
start(): Promise<void>;
|
|
444
|
-
inspect(subject: Case, options?: InspectionOptions): Promise<
|
|
448
|
+
inspect(subject: Case, options?: InspectionOptions): Promise<StageResult>;
|
|
445
449
|
destroy(): Promise<void>;
|
|
446
450
|
}
|
|
447
451
|
|
|
@@ -461,7 +465,7 @@ export declare class LintStage implements LintStageInterface {
|
|
|
461
465
|
*
|
|
462
466
|
* @example
|
|
463
467
|
* ```ts
|
|
464
|
-
* const
|
|
468
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
465
469
|
* ```
|
|
466
470
|
*/
|
|
467
471
|
export declare interface LintStageInterface extends StageInterface {
|
|
@@ -478,10 +482,10 @@ export declare interface LintStageInterface extends StageInterface {
|
|
|
478
482
|
*
|
|
479
483
|
* @example
|
|
480
484
|
* ```ts
|
|
481
|
-
* const
|
|
485
|
+
* const result = await stage.inspect(subject, { signal: AbortSignal.timeout(30_000) })
|
|
482
486
|
* ```
|
|
483
487
|
*/
|
|
484
|
-
inspect(subject: Case, options?: InspectionOptions): Promise<
|
|
488
|
+
inspect(subject: Case, options?: InspectionOptions): Promise<StageResult>;
|
|
485
489
|
}
|
|
486
490
|
|
|
487
491
|
/**
|
|
@@ -582,10 +586,11 @@ export declare function normalizePath(path: string): string;
|
|
|
582
586
|
* `tsc --showConfig` spells a path relative to the project file, so a printed record carries an
|
|
583
587
|
* absolute path only where a project itself declares one. Rewriting a contained absolute path to
|
|
584
588
|
* its relative form keeps one commit checked out at two roots reading to one digest. A path that
|
|
585
|
-
*
|
|
586
|
-
* tree by a relative spelling. Key order is the compiler's own and it differs between
|
|
587
|
-
* majors, so sorting removes a difference that means nothing. A `__proto__` key is
|
|
588
|
-
* the earlier assignment-built record dropped it, so a digest stays the same across
|
|
589
|
+
* resolves outside the workspace is left as it stands, because rewriting it would name a file
|
|
590
|
+
* outside the tree by a relative spelling. Key order is the compiler's own and it differs between
|
|
591
|
+
* the supported majors, so sorting removes a difference that means nothing. A `__proto__` key is
|
|
592
|
+
* dropped, as the earlier assignment-built record dropped it, so a digest stays the same across
|
|
593
|
+
* releases.
|
|
589
594
|
*
|
|
590
595
|
* @param workspace - The target workspace root
|
|
591
596
|
* @param value - The value to rewrite
|
|
@@ -1279,10 +1284,10 @@ export declare function resolveWorkspaceModule(workspace: string, specifier: str
|
|
|
1279
1284
|
* Vitest service after 64 specifications rather than deleting from each map that service owns. Any
|
|
1280
1285
|
* bound holds the retention flat, because the replacement releases everything the instance held,
|
|
1281
1286
|
* and 64 is the value chosen. The inspection that crosses the bound pays the replacement
|
|
1282
|
-
* synchronously: it closes the resident service and warms a
|
|
1283
|
-
* over this package's own workspace on the host `guides/probe.md` § Cost names, two
|
|
1284
|
-
* inspections put that one at 480 ms and 269 ms against median inspections of 156 ms and
|
|
1285
|
-
* budget one call in 64 at 110 ms to 330 ms above the rest.
|
|
1287
|
+
* synchronously: it closes the resident service and warms a fresh service before it runs. On
|
|
1288
|
+
* 2026-08-20, over this package's own workspace on the host `guides/probe.md` § Cost names, two
|
|
1289
|
+
* runs of 66 inspections put that one at 480 ms and 269 ms against median inspections of 156 ms and
|
|
1290
|
+
* 155 ms, so budget one call in 64 at 110 ms to 330 ms above the rest.
|
|
1286
1291
|
*
|
|
1287
1292
|
* Every issue this stage emits names its party, and the stage emits an issue for every party
|
|
1288
1293
|
* `Party` declares. An `origin: 'claimant'` issue is a failure Vitest reported about the candidate.
|
|
@@ -1307,7 +1312,7 @@ export declare function resolveWorkspaceModule(workspace: string, specifier: str
|
|
|
1307
1312
|
* @example
|
|
1308
1313
|
* ```ts
|
|
1309
1314
|
* const stage = new RuntimeStage('/srv/checkout')
|
|
1310
|
-
* const
|
|
1315
|
+
* const result = await stage.inspect(subject)
|
|
1311
1316
|
* await stage.destroy()
|
|
1312
1317
|
* ```
|
|
1313
1318
|
*/
|
|
@@ -1335,7 +1340,7 @@ export declare class RuntimeStage implements StageInterface {
|
|
|
1335
1340
|
* @returns One outcome for this stage
|
|
1336
1341
|
* @throws When the workspace's own tool cannot start or has already been destroyed
|
|
1337
1342
|
*/
|
|
1338
|
-
inspect(subject: Case): Promise<
|
|
1343
|
+
inspect(subject: Case): Promise<StageResult>;
|
|
1339
1344
|
/**
|
|
1340
1345
|
* Tears down the resident tool or the mirror and releases its resources.
|
|
1341
1346
|
*
|
|
@@ -1395,8 +1400,8 @@ export declare function scanDiagnostics(text: string): readonly Diagnostic[];
|
|
|
1395
1400
|
*
|
|
1396
1401
|
* @example
|
|
1397
1402
|
* ```ts
|
|
1398
|
-
* const
|
|
1399
|
-
* console.log(
|
|
1403
|
+
* const result = await stage.inspect(subject)
|
|
1404
|
+
* console.log(result.stage)
|
|
1400
1405
|
* await stage.destroy()
|
|
1401
1406
|
* ```
|
|
1402
1407
|
*/
|
|
@@ -1430,11 +1435,11 @@ export declare interface StageInterface {
|
|
|
1430
1435
|
*
|
|
1431
1436
|
* @example
|
|
1432
1437
|
* ```ts
|
|
1433
|
-
* const
|
|
1434
|
-
* console.log(
|
|
1438
|
+
* const result = await stage.inspect(subject)
|
|
1439
|
+
* console.log(result.stage, result.elapsed, result.issues.length)
|
|
1435
1440
|
* ```
|
|
1436
1441
|
*/
|
|
1437
|
-
inspect(subject: Case): Promise<
|
|
1442
|
+
inspect(subject: Case): Promise<StageResult>;
|
|
1438
1443
|
/**
|
|
1439
1444
|
* Tears down the resident tool or the mirror and releases its resources.
|
|
1440
1445
|
*
|
|
@@ -1484,7 +1489,7 @@ export declare interface StageInterface {
|
|
|
1484
1489
|
* @example
|
|
1485
1490
|
* ```ts
|
|
1486
1491
|
* const stage = new TypeStage('/srv/checkout')
|
|
1487
|
-
* const
|
|
1492
|
+
* const result = await stage.inspect(subject, 'configs/src/tsconfig.core.json')
|
|
1488
1493
|
* await stage.destroy()
|
|
1489
1494
|
* ```
|
|
1490
1495
|
*/
|
|
@@ -1514,7 +1519,7 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1514
1519
|
* @throws When the workspace refuses the mirror, when a project the run reads is malformed, or
|
|
1515
1520
|
* when the stage has already been destroyed
|
|
1516
1521
|
*/
|
|
1517
|
-
inspect(subject: Case, project?: string): Promise<
|
|
1522
|
+
inspect(subject: Case, project?: string): Promise<StageResult>;
|
|
1518
1523
|
/**
|
|
1519
1524
|
* Resolves one project to the path and digest this stage applies for it.
|
|
1520
1525
|
*
|
|
@@ -1528,8 +1533,8 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1528
1533
|
*
|
|
1529
1534
|
* @param project - The workspace-relative TypeScript project to resolve
|
|
1530
1535
|
* @returns The resolved workspace-relative path and the digest of its compiler options
|
|
1531
|
-
* @throws When the project
|
|
1532
|
-
* stage has already been destroyed
|
|
1536
|
+
* @throws When the project resolves outside the workspace, when the compiler refuses it, or when
|
|
1537
|
+
* the stage has already been destroyed
|
|
1533
1538
|
*/
|
|
1534
1539
|
resolve(project: string): Promise<Project>;
|
|
1535
1540
|
/**
|
|
@@ -1555,7 +1560,7 @@ export declare class TypeStage implements TypeStageInterface {
|
|
|
1555
1560
|
* @example
|
|
1556
1561
|
* ```ts
|
|
1557
1562
|
* const project = await stage.resolve('configs/src/tsconfig.core.json')
|
|
1558
|
-
* const
|
|
1563
|
+
* const result = await stage.inspect(subject, project.path)
|
|
1559
1564
|
* ```
|
|
1560
1565
|
*/
|
|
1561
1566
|
export declare interface TypeStageInterface extends StageInterface {
|
|
@@ -1571,10 +1576,10 @@ export declare interface TypeStageInterface extends StageInterface {
|
|
|
1571
1576
|
*
|
|
1572
1577
|
* @example
|
|
1573
1578
|
* ```ts
|
|
1574
|
-
* const
|
|
1579
|
+
* const result = await stage.inspect(subject, 'configs/src/tsconfig.core.json')
|
|
1575
1580
|
* ```
|
|
1576
1581
|
*/
|
|
1577
|
-
inspect(subject: Case, project?: string): Promise<
|
|
1582
|
+
inspect(subject: Case, project?: string): Promise<StageResult>;
|
|
1578
1583
|
/**
|
|
1579
1584
|
* Resolves one project to the path and digest the stage applies for it.
|
|
1580
1585
|
* Calls `start()` before reading the project.
|
|
@@ -1585,8 +1590,8 @@ export declare interface TypeStageInterface extends StageInterface {
|
|
|
1585
1590
|
*
|
|
1586
1591
|
* @param project - The workspace-relative TypeScript project to resolve
|
|
1587
1592
|
* @returns The resolved workspace-relative path and the digest of its compiler options
|
|
1588
|
-
* @throws When the project
|
|
1589
|
-
* stage has already been destroyed
|
|
1593
|
+
* @throws When the project resolves outside the workspace, when the compiler refuses it, or when
|
|
1594
|
+
* the stage has already been destroyed
|
|
1590
1595
|
*
|
|
1591
1596
|
* @example
|
|
1592
1597
|
* ```ts
|