@codyswann/lisa 4.28.4 → 4.29.0
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 +3 -1
- package/all/copy-overwrite/scripts/lisa-gates.mjs +2 -1
- package/all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh +3 -2
- package/all/copy-overwrite/scripts/lisa-postinstall.mjs +6 -2
- package/cdk/create-only/vitest.config.local.ts +5 -1
- package/cdk/package-lisa/package.lisa.json +14 -7
- package/dist/cli/apply.d.ts +20 -0
- package/dist/cli/apply.d.ts.map +1 -1
- package/dist/cli/apply.js +70 -3
- package/dist/cli/apply.js.map +1 -1
- package/dist/cli/doctor-apply-freshness.d.ts.map +1 -1
- package/dist/cli/doctor-apply-freshness.js +10 -4
- package/dist/cli/doctor-apply-freshness.js.map +1 -1
- package/dist/cli/lisa-test-run-bootstrap.d.ts +3 -0
- package/dist/cli/lisa-test-run-bootstrap.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-bootstrap.js +201 -0
- package/dist/cli/lisa-test-run-bootstrap.js.map +1 -0
- package/dist/cli/lisa-test-run-ipc.d.ts +42 -0
- package/dist/cli/lisa-test-run-ipc.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-ipc.js +200 -0
- package/dist/cli/lisa-test-run-ipc.js.map +1 -0
- package/dist/cli/lisa-test-run-process-group.d.ts +30 -0
- package/dist/cli/lisa-test-run-process-group.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-process-group.js +123 -0
- package/dist/cli/lisa-test-run-process-group.js.map +1 -0
- package/dist/cli/lisa-test-run-reaper.d.ts +3 -0
- package/dist/cli/lisa-test-run-reaper.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-reaper.js +195 -0
- package/dist/cli/lisa-test-run-reaper.js.map +1 -0
- package/dist/cli/lisa-test-run-runtime.d.ts +46 -0
- package/dist/cli/lisa-test-run-runtime.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-runtime.js +123 -0
- package/dist/cli/lisa-test-run-runtime.js.map +1 -0
- package/dist/cli/lisa-test-run-supervisor.d.ts +13 -0
- package/dist/cli/lisa-test-run-supervisor.d.ts.map +1 -0
- package/dist/cli/lisa-test-run-supervisor.js +268 -0
- package/dist/cli/lisa-test-run-supervisor.js.map +1 -0
- package/dist/cli/lisa-test-run.d.ts +3 -0
- package/dist/cli/lisa-test-run.d.ts.map +1 -0
- package/dist/cli/lisa-test-run.js +66 -0
- package/dist/cli/lisa-test-run.js.map +1 -0
- package/dist/cli/shared-options.d.ts +11 -4
- package/dist/cli/shared-options.d.ts.map +1 -1
- package/dist/cli/shared-options.js +8 -8
- package/dist/cli/shared-options.js.map +1 -1
- package/dist/configs/vitest/base.d.ts.map +1 -1
- package/dist/configs/vitest/base.js +5 -2
- package/dist/configs/vitest/base.js.map +1 -1
- package/dist/configs/vitest/cdk.d.ts +4 -0
- package/dist/configs/vitest/cdk.d.ts.map +1 -1
- package/dist/configs/vitest/cdk.js +5 -0
- package/dist/configs/vitest/cdk.js.map +1 -1
- package/dist/configs/vitest/harper-fabric.d.ts.map +1 -1
- package/dist/configs/vitest/harper-fabric.js +1 -0
- package/dist/configs/vitest/harper-fabric.js.map +1 -1
- package/dist/configs/vitest/nestjs.d.ts.map +1 -1
- package/dist/configs/vitest/nestjs.js +1 -0
- package/dist/configs/vitest/nestjs.js.map +1 -1
- package/dist/configs/vitest/phaser.d.ts.map +1 -1
- package/dist/configs/vitest/phaser.js +1 -0
- package/dist/configs/vitest/phaser.js.map +1 -1
- package/dist/configs/vitest/scratch-authority.d.ts +25 -0
- package/dist/configs/vitest/scratch-authority.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-authority.js +107 -0
- package/dist/configs/vitest/scratch-authority.js.map +1 -0
- package/dist/configs/vitest/scratch-bound-cleanup-programs.d.ts +5 -0
- package/dist/configs/vitest/scratch-bound-cleanup-programs.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-bound-cleanup-programs.js +219 -0
- package/dist/configs/vitest/scratch-bound-cleanup-programs.js.map +1 -0
- package/dist/configs/vitest/scratch-bound-cleanup.d.ts +28 -0
- package/dist/configs/vitest/scratch-bound-cleanup.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-bound-cleanup.js +155 -0
- package/dist/configs/vitest/scratch-bound-cleanup.js.map +1 -0
- package/dist/configs/vitest/scratch-bound-root-cleanup.d.ts +17 -0
- package/dist/configs/vitest/scratch-bound-root-cleanup.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-bound-root-cleanup.js +149 -0
- package/dist/configs/vitest/scratch-bound-root-cleanup.js.map +1 -0
- package/dist/configs/vitest/scratch-global-setup.d.ts +17 -9
- package/dist/configs/vitest/scratch-global-setup.d.ts.map +1 -1
- package/dist/configs/vitest/scratch-global-setup.js +103 -35
- package/dist/configs/vitest/scratch-global-setup.js.map +1 -1
- package/dist/configs/vitest/scratch-leak-setup.d.ts +2 -0
- package/dist/configs/vitest/scratch-leak-setup.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-leak-setup.js +108 -0
- package/dist/configs/vitest/scratch-leak-setup.js.map +1 -0
- package/dist/configs/vitest/scratch-namespace-authority.d.ts +80 -0
- package/dist/configs/vitest/scratch-namespace-authority.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-namespace-authority.js +291 -0
- package/dist/configs/vitest/scratch-namespace-authority.js.map +1 -0
- package/dist/configs/vitest/scratch-owner.d.ts +131 -0
- package/dist/configs/vitest/scratch-owner.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-owner.js +297 -0
- package/dist/configs/vitest/scratch-owner.js.map +1 -0
- package/dist/configs/vitest/scratch-route-profile.d.ts +36 -0
- package/dist/configs/vitest/scratch-route-profile.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-route-profile.js +217 -0
- package/dist/configs/vitest/scratch-route-profile.js.map +1 -0
- package/dist/configs/vitest/scratch-run-root-compatibility.d.ts +33 -0
- package/dist/configs/vitest/scratch-run-root-compatibility.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-run-root-compatibility.js +137 -0
- package/dist/configs/vitest/scratch-run-root-compatibility.js.map +1 -0
- package/dist/configs/vitest/scratch-run-root-intent.d.ts +66 -0
- package/dist/configs/vitest/scratch-run-root-intent.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-run-root-intent.js +183 -0
- package/dist/configs/vitest/scratch-run-root-intent.js.map +1 -0
- package/dist/configs/vitest/scratch-setup.d.ts.map +1 -1
- package/dist/configs/vitest/scratch-setup.js +45 -15
- package/dist/configs/vitest/scratch-setup.js.map +1 -1
- package/dist/configs/vitest/scratch-supervision-intent.d.ts +8 -0
- package/dist/configs/vitest/scratch-supervision-intent.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-supervision-intent.js +125 -0
- package/dist/configs/vitest/scratch-supervision-intent.js.map +1 -0
- package/dist/configs/vitest/scratch-supervision-protocol.d.ts +12 -0
- package/dist/configs/vitest/scratch-supervision-protocol.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-supervision-protocol.js +230 -0
- package/dist/configs/vitest/scratch-supervision-protocol.js.map +1 -0
- package/dist/configs/vitest/scratch-supervision.d.ts +64 -0
- package/dist/configs/vitest/scratch-supervision.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-supervision.js +209 -0
- package/dist/configs/vitest/scratch-supervision.js.map +1 -0
- package/dist/configs/vitest/scratch-sweep.d.ts +66 -0
- package/dist/configs/vitest/scratch-sweep.d.ts.map +1 -0
- package/dist/configs/vitest/scratch-sweep.js +82 -0
- package/dist/configs/vitest/scratch-sweep.js.map +1 -0
- package/dist/configs/vitest/scratch.d.ts +14 -187
- package/dist/configs/vitest/scratch.d.ts.map +1 -1
- package/dist/configs/vitest/scratch.js +18 -285
- package/dist/configs/vitest/scratch.js.map +1 -1
- package/dist/configs/vitest/typescript.d.ts.map +1 -1
- package/dist/configs/vitest/typescript.js +1 -0
- package/dist/configs/vitest/typescript.js.map +1 -1
- package/dist/core/apply-mode.d.ts +80 -29
- package/dist/core/apply-mode.d.ts.map +1 -1
- package/dist/core/apply-mode.js +23 -2
- package/dist/core/apply-mode.js.map +1 -1
- package/dist/core/apply-receipt.d.ts +5 -1
- package/dist/core/apply-receipt.d.ts.map +1 -1
- package/dist/core/apply-receipt.js.map +1 -1
- package/dist/core/config.d.ts +24 -12
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +8 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +63 -15
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-lisa-postinstall.d.ts +1 -1
- package/dist/migrations/ensure-lisa-postinstall.d.ts.map +1 -1
- package/dist/migrations/ensure-lisa-postinstall.js +28 -5
- package/dist/migrations/ensure-lisa-postinstall.js.map +1 -1
- package/dist/utils/postinstall-trampoline-source.js +10 -1
- package/dist/utils/postinstall-trampoline-source.js.map +1 -1
- package/expo/package-lisa/package.lisa.json +14 -14
- package/harper-fabric/package-lisa/package.lisa.json +8 -3
- package/nestjs/create-only/vitest.config.local.ts +5 -1
- package/nestjs/package-lisa/package.lisa.json +14 -8
- package/npm-package/package-lisa/package.lisa.json +8 -0
- package/package.json +17 -13
- package/phaser/package-lisa/package.lisa.json +9 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/hooks/sonar-secrets.sh +3 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/sonar-secrets.sh +3 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/sonar-secrets.sh +3 -2
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/sonar-secrets.sh +3 -2
- package/scripts/install-claude-plugins.sh +7 -2
- package/typescript/create-only/vitest.config.local.ts +5 -1
- package/typescript/package-lisa/package.lisa.json +14 -8
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** Owner-marker filename stored directly inside every run root. */
|
|
2
|
+
export declare const SCRATCH_OWNER_FILE = ".lisa-scratch-owner.json";
|
|
3
|
+
/** Prefix identifying a per-process run root inside the namespace. */
|
|
4
|
+
export declare const SCRATCH_RUN_ROOT_PREFIX = "run-";
|
|
5
|
+
/** Filesystem identity pinned into an owner record. */
|
|
6
|
+
export interface ScratchPathIdentity {
|
|
7
|
+
readonly canonicalPath: string;
|
|
8
|
+
readonly dev: number;
|
|
9
|
+
readonly ino: number;
|
|
10
|
+
}
|
|
11
|
+
/** Version-one durable owner marker. */
|
|
12
|
+
export interface ScratchOwnerRecordV1 {
|
|
13
|
+
readonly schema: 1;
|
|
14
|
+
readonly pid: number;
|
|
15
|
+
readonly processBirthFingerprint: string;
|
|
16
|
+
readonly createdAt: string;
|
|
17
|
+
readonly token: string;
|
|
18
|
+
readonly suiteLabel: string;
|
|
19
|
+
readonly registeredPrefixes: readonly string[];
|
|
20
|
+
readonly namespace: ScratchPathIdentity;
|
|
21
|
+
readonly root: ScratchPathIdentity;
|
|
22
|
+
}
|
|
23
|
+
/** Minimal namespace authority consumed while constructing a record. */
|
|
24
|
+
interface OwnerAuthority {
|
|
25
|
+
readonly namespace: ScratchPathIdentity;
|
|
26
|
+
}
|
|
27
|
+
/** Inputs for a new owner record. */
|
|
28
|
+
export interface CreateScratchOwnerRecordOptions {
|
|
29
|
+
readonly authority: OwnerAuthority;
|
|
30
|
+
readonly root: string;
|
|
31
|
+
readonly pid?: number;
|
|
32
|
+
readonly processBirthFingerprint?: string;
|
|
33
|
+
readonly suiteLabel: string;
|
|
34
|
+
readonly registeredPrefixes: readonly string[];
|
|
35
|
+
/** Precommitted 128-bit ownership token, when a supervisor armed it first. */
|
|
36
|
+
readonly token?: string;
|
|
37
|
+
readonly now?: Date;
|
|
38
|
+
}
|
|
39
|
+
/** Probes used to classify a persisted owner. */
|
|
40
|
+
export interface ScratchOwnerProbes {
|
|
41
|
+
readonly isProcessAlive: (pid: number) => boolean;
|
|
42
|
+
readonly processBirthFingerprint: (pid: number) => string | undefined;
|
|
43
|
+
}
|
|
44
|
+
/** Safe reclaim verdict for an owner record. */
|
|
45
|
+
export type ScratchOwnerDisposition = "reclaim" | "preserve";
|
|
46
|
+
/** Injectable seams for one bulk process-birth snapshot. */
|
|
47
|
+
export interface ProcessBirthFingerprintSnapshotOptions {
|
|
48
|
+
/** Platform contract to exercise; defaults to the current platform. */
|
|
49
|
+
readonly platform?: NodeJS.Platform;
|
|
50
|
+
/** Bounded macOS batch runner, injectable for deterministic call-count tests. */
|
|
51
|
+
readonly runDarwinBatch?: (pids: readonly number[]) => string | undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Capture process birth once for a bounded pid set.
|
|
55
|
+
*
|
|
56
|
+
* Darwin has no `/proc`, so namespace audits must not launch one `ps` process
|
|
57
|
+
* per live scratch root. This snapshot deduplicates pids and reads them in
|
|
58
|
+
* bounded 256-pid batches; callers reuse the returned map throughout one
|
|
59
|
+
* sweep/inspection transaction.
|
|
60
|
+
* @param pids - Process ids needed by one audit transaction
|
|
61
|
+
* @param options - Platform and deterministic batch seam
|
|
62
|
+
* @returns A complete lookup whose missing observations remain undefined
|
|
63
|
+
*/
|
|
64
|
+
export declare function processBirthFingerprintSnapshot(pids: readonly number[], options?: ProcessBirthFingerprintSnapshotOptions): ReadonlyMap<number, string | undefined>;
|
|
65
|
+
/**
|
|
66
|
+
* Read the OS-authoritative birth fingerprint for a process.
|
|
67
|
+
* @param pid - Process id to inspect
|
|
68
|
+
* @returns Fingerprint, or undefined on an unsupported/ambiguous platform
|
|
69
|
+
*/
|
|
70
|
+
export declare function processBirthFingerprint(pid: number): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Fingerprint the current process for a newly-created marker.
|
|
73
|
+
*
|
|
74
|
+
* Unsupported platforms still need an opaque value to make the marker
|
|
75
|
+
* complete. Reclaim never treats this fallback as authoritative: a live pid on
|
|
76
|
+
* such a platform yields an ambiguous observation and is preserved.
|
|
77
|
+
* @returns Current process birth fingerprint
|
|
78
|
+
*/
|
|
79
|
+
export declare function currentProcessBirthFingerprint(): string;
|
|
80
|
+
/** Ownership encoded in a legacy or current run-root basename. */
|
|
81
|
+
export interface RunRootOwner {
|
|
82
|
+
readonly pid: number;
|
|
83
|
+
readonly startedAt: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build a run-root basename.
|
|
87
|
+
* @param pid - Owning process id
|
|
88
|
+
* @param startedAt - Creation epoch milliseconds
|
|
89
|
+
* @param suffix - Opaque random suffix
|
|
90
|
+
* @returns Direct namespace-child basename
|
|
91
|
+
*/
|
|
92
|
+
export declare function scratchRunRootName(pid: number, startedAt: number, suffix: string): string;
|
|
93
|
+
/**
|
|
94
|
+
* Parse the owner fields encoded in a run-root basename.
|
|
95
|
+
* @param name - Direct namespace-child basename
|
|
96
|
+
* @returns Parsed owner, or undefined for an unrelated name
|
|
97
|
+
*/
|
|
98
|
+
export declare function parseScratchRunRootName(name: string): RunRootOwner | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Decide whether a valid owner may be reclaimed.
|
|
101
|
+
* @param record - Persisted owner marker
|
|
102
|
+
* @param probes - Kernel probes, injectable for deterministic tests
|
|
103
|
+
* @returns Fail-closed reclaim disposition
|
|
104
|
+
*/
|
|
105
|
+
export declare function classifyScratchOwner(record: ScratchOwnerRecordV1, probes: ScratchOwnerProbes): ScratchOwnerDisposition;
|
|
106
|
+
/**
|
|
107
|
+
* Capture an immutable filesystem identity without following a final symlink.
|
|
108
|
+
* @param candidate - Existing regular file or directory
|
|
109
|
+
* @returns Canonical path plus device/inode identity
|
|
110
|
+
*/
|
|
111
|
+
export declare function scratchPathIdentity(candidate: string): ScratchPathIdentity;
|
|
112
|
+
/**
|
|
113
|
+
* Construct a version-one owner marker from live filesystem state.
|
|
114
|
+
* @param options - Owner and path facts
|
|
115
|
+
* @returns Immutable owner record
|
|
116
|
+
*/
|
|
117
|
+
export declare function createScratchOwnerRecord(options: CreateScratchOwnerRecordOptions): ScratchOwnerRecordV1;
|
|
118
|
+
/**
|
|
119
|
+
* Write an owner marker without permitting a pre-existing file or symlink.
|
|
120
|
+
* @param root - Owned run root
|
|
121
|
+
* @param record - Marker to persist
|
|
122
|
+
*/
|
|
123
|
+
export declare function writeScratchOwnerRecord(root: string, record: ScratchOwnerRecordV1): void;
|
|
124
|
+
/**
|
|
125
|
+
* Read and validate an owner marker without following a marker symlink.
|
|
126
|
+
* @param root - Run root containing the marker
|
|
127
|
+
* @returns Validated owner marker
|
|
128
|
+
*/
|
|
129
|
+
export declare function readScratchOwnerRecord(root: string): ScratchOwnerRecordV1;
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=scratch-owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scratch-owner.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-owner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable owner records for Vitest scratch roots.
|
|
3
|
+
*
|
|
4
|
+
* A pid is not an identity: kernels reuse it. The marker therefore binds the
|
|
5
|
+
* pid to the process birth value reported by the operating system, and every
|
|
6
|
+
* reclaim decision compares both. A live pid whose birth cannot be read is
|
|
7
|
+
* preserved; deletion fails closed rather than guessing.
|
|
8
|
+
* @module configs/vitest/scratch-owner
|
|
9
|
+
*/
|
|
10
|
+
import { randomBytes } from "node:crypto";
|
|
11
|
+
import * as fs from "node:fs";
|
|
12
|
+
import * as path from "node:path";
|
|
13
|
+
import { spawnSync } from "node:child_process";
|
|
14
|
+
/** Owner-marker filename stored directly inside every run root. */
|
|
15
|
+
export const SCRATCH_OWNER_FILE = ".lisa-scratch-owner.json";
|
|
16
|
+
/** Prefix identifying a per-process run root inside the namespace. */
|
|
17
|
+
export const SCRATCH_RUN_ROOT_PREFIX = "run-";
|
|
18
|
+
/** Maximum time allowed for the bounded macOS process-birth probe. */
|
|
19
|
+
const PS_TIMEOUT_MS = 1_000;
|
|
20
|
+
/** Maximum pids admitted to one bounded macOS `ps` invocation. */
|
|
21
|
+
const DARWIN_BIRTH_BATCH_SIZE = 256;
|
|
22
|
+
/** Maximum owner-marker bytes accepted at the destructive authority boundary. */
|
|
23
|
+
const MAX_OWNER_MARKER_BYTES = 16 * 1024;
|
|
24
|
+
/** Maximum bytes accepted for one opaque marker string. */
|
|
25
|
+
const MAX_OWNER_TEXT_BYTES = 256;
|
|
26
|
+
/** Maximum bytes accepted for one canonical filesystem path. */
|
|
27
|
+
const MAX_OWNER_PATH_BYTES = 4_096;
|
|
28
|
+
/** Maximum registered prefixes accepted in one marker. */
|
|
29
|
+
const MAX_OWNER_PREFIXES = 64;
|
|
30
|
+
/**
|
|
31
|
+
* Read Linux's immutable process start ticks.
|
|
32
|
+
* @param pid - Process id to inspect
|
|
33
|
+
* @returns A stable fingerprint, or undefined when unavailable
|
|
34
|
+
*/
|
|
35
|
+
function linuxBirthFingerprint(pid) {
|
|
36
|
+
try {
|
|
37
|
+
const stat = fs.readFileSync(`/proc/${String(pid)}/stat`, "utf8");
|
|
38
|
+
const commEnd = stat.lastIndexOf(")");
|
|
39
|
+
if (commEnd < 0)
|
|
40
|
+
return undefined;
|
|
41
|
+
const fields = stat
|
|
42
|
+
.slice(commEnd + 2)
|
|
43
|
+
.trim()
|
|
44
|
+
.split(/\s+/u);
|
|
45
|
+
const startTicks = fields[19];
|
|
46
|
+
return startTicks === undefined ? undefined : `linux:${startTicks}`;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Read macOS kernel-reported process start times through one bounded `ps` call.
|
|
54
|
+
* @param pids - Process ids to inspect together
|
|
55
|
+
* @returns Raw pid/start rows, or undefined when unavailable
|
|
56
|
+
*/
|
|
57
|
+
function runDarwinBirthBatch(pids) {
|
|
58
|
+
const result = spawnSync("/bin/ps", ["-p", pids.join(","), "-o", "pid=", "-o", "lstart="], {
|
|
59
|
+
encoding: "utf8",
|
|
60
|
+
killSignal: "SIGKILL",
|
|
61
|
+
maxBuffer: Math.max(4_096, pids.length * 128),
|
|
62
|
+
timeout: PS_TIMEOUT_MS,
|
|
63
|
+
});
|
|
64
|
+
if (result.status !== 0 ||
|
|
65
|
+
result.signal !== null ||
|
|
66
|
+
result.error !== undefined) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
return result.stdout;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse one bulk `pid lstart` row without depending on locale text.
|
|
73
|
+
* @param row - One bounded `ps` output row
|
|
74
|
+
* @returns Parsed pid and fingerprint, or undefined for malformed output
|
|
75
|
+
*/
|
|
76
|
+
function parseDarwinBirthRow(row) {
|
|
77
|
+
const normalized = row.trim();
|
|
78
|
+
const separator = normalized.search(/\s/u);
|
|
79
|
+
if (separator < 1)
|
|
80
|
+
return undefined;
|
|
81
|
+
const pid = Number(normalized.slice(0, separator));
|
|
82
|
+
if (!Number.isSafeInteger(pid) || pid <= 0)
|
|
83
|
+
return undefined;
|
|
84
|
+
const start = normalized.slice(separator).trim().replace(/\s+/gu, " ");
|
|
85
|
+
return start === "" ? undefined : [pid, `darwin:${start}`];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Capture process birth once for a bounded pid set.
|
|
89
|
+
*
|
|
90
|
+
* Darwin has no `/proc`, so namespace audits must not launch one `ps` process
|
|
91
|
+
* per live scratch root. This snapshot deduplicates pids and reads them in
|
|
92
|
+
* bounded 256-pid batches; callers reuse the returned map throughout one
|
|
93
|
+
* sweep/inspection transaction.
|
|
94
|
+
* @param pids - Process ids needed by one audit transaction
|
|
95
|
+
* @param options - Platform and deterministic batch seam
|
|
96
|
+
* @returns A complete lookup whose missing observations remain undefined
|
|
97
|
+
*/
|
|
98
|
+
export function processBirthFingerprintSnapshot(pids, options = {}) {
|
|
99
|
+
const unique = [...new Set(pids)]
|
|
100
|
+
.filter(pid => Number.isSafeInteger(pid) && pid > 0)
|
|
101
|
+
.sort((left, right) => left - right);
|
|
102
|
+
const platform = options.platform ?? process.platform;
|
|
103
|
+
if (platform === "linux") {
|
|
104
|
+
return new Map(unique.map(pid => [pid, linuxBirthFingerprint(pid)]));
|
|
105
|
+
}
|
|
106
|
+
if (platform !== "darwin") {
|
|
107
|
+
return new Map(unique.map(pid => [pid, undefined]));
|
|
108
|
+
}
|
|
109
|
+
const runBatch = options.runDarwinBatch ?? runDarwinBirthBatch;
|
|
110
|
+
const batchCount = Math.ceil(unique.length / DARWIN_BIRTH_BATCH_SIZE);
|
|
111
|
+
const observations = new Map(Array.from({ length: batchCount }, (_, index) => unique.slice(index * DARWIN_BIRTH_BATCH_SIZE, (index + 1) * DARWIN_BIRTH_BATCH_SIZE)).flatMap(batch => (runBatch(batch) ?? "")
|
|
112
|
+
.split("\n")
|
|
113
|
+
.map(parseDarwinBirthRow)
|
|
114
|
+
.filter((entry) => entry !== undefined)));
|
|
115
|
+
return new Map(unique.map(pid => [pid, observations.get(pid)]));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Read the OS-authoritative birth fingerprint for a process.
|
|
119
|
+
* @param pid - Process id to inspect
|
|
120
|
+
* @returns Fingerprint, or undefined on an unsupported/ambiguous platform
|
|
121
|
+
*/
|
|
122
|
+
export function processBirthFingerprint(pid) {
|
|
123
|
+
if (!Number.isSafeInteger(pid) || pid <= 0)
|
|
124
|
+
return undefined;
|
|
125
|
+
return processBirthFingerprintSnapshot([pid]).get(pid);
|
|
126
|
+
}
|
|
127
|
+
/** Stable unsupported-platform fallback captured once at module load. */
|
|
128
|
+
const UNSUPPORTED_CURRENT_BIRTH = `unsupported:${String(process.pid)}:${String(Math.round(Date.now() - process.uptime() * 1_000))}`;
|
|
129
|
+
/**
|
|
130
|
+
* Fingerprint the current process for a newly-created marker.
|
|
131
|
+
*
|
|
132
|
+
* Unsupported platforms still need an opaque value to make the marker
|
|
133
|
+
* complete. Reclaim never treats this fallback as authoritative: a live pid on
|
|
134
|
+
* such a platform yields an ambiguous observation and is preserved.
|
|
135
|
+
* @returns Current process birth fingerprint
|
|
136
|
+
*/
|
|
137
|
+
export function currentProcessBirthFingerprint() {
|
|
138
|
+
return processBirthFingerprint(process.pid) ?? UNSUPPORTED_CURRENT_BIRTH;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build a run-root basename.
|
|
142
|
+
* @param pid - Owning process id
|
|
143
|
+
* @param startedAt - Creation epoch milliseconds
|
|
144
|
+
* @param suffix - Opaque random suffix
|
|
145
|
+
* @returns Direct namespace-child basename
|
|
146
|
+
*/
|
|
147
|
+
export function scratchRunRootName(pid, startedAt, suffix) {
|
|
148
|
+
return `${SCRATCH_RUN_ROOT_PREFIX}${String(pid)}-${String(startedAt)}-${suffix}`;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Parse the owner fields encoded in a run-root basename.
|
|
152
|
+
* @param name - Direct namespace-child basename
|
|
153
|
+
* @returns Parsed owner, or undefined for an unrelated name
|
|
154
|
+
*/
|
|
155
|
+
export function parseScratchRunRootName(name) {
|
|
156
|
+
const match = new RegExp(`^${SCRATCH_RUN_ROOT_PREFIX}(\\d+)-(\\d+)-[^-]+$`).exec(name);
|
|
157
|
+
if (match === null)
|
|
158
|
+
return undefined;
|
|
159
|
+
const pid = Number(match[1]);
|
|
160
|
+
const startedAt = Number(match[2]);
|
|
161
|
+
return Number.isSafeInteger(pid) && Number.isSafeInteger(startedAt)
|
|
162
|
+
? { pid, startedAt }
|
|
163
|
+
: undefined;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Decide whether a valid owner may be reclaimed.
|
|
167
|
+
* @param record - Persisted owner marker
|
|
168
|
+
* @param probes - Kernel probes, injectable for deterministic tests
|
|
169
|
+
* @returns Fail-closed reclaim disposition
|
|
170
|
+
*/
|
|
171
|
+
export function classifyScratchOwner(record, probes) {
|
|
172
|
+
if (!probes.isProcessAlive(record.pid))
|
|
173
|
+
return "reclaim";
|
|
174
|
+
if (record.processBirthFingerprint.startsWith("unsupported:")) {
|
|
175
|
+
return "preserve";
|
|
176
|
+
}
|
|
177
|
+
const observed = probes.processBirthFingerprint(record.pid);
|
|
178
|
+
if (observed === undefined)
|
|
179
|
+
return "preserve";
|
|
180
|
+
return observed === record.processBirthFingerprint ? "preserve" : "reclaim";
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Capture an immutable filesystem identity without following a final symlink.
|
|
184
|
+
* @param candidate - Existing regular file or directory
|
|
185
|
+
* @returns Canonical path plus device/inode identity
|
|
186
|
+
*/
|
|
187
|
+
export function scratchPathIdentity(candidate) {
|
|
188
|
+
const stat = fs.lstatSync(candidate);
|
|
189
|
+
if (stat.isSymbolicLink()) {
|
|
190
|
+
throw new Error(`Scratch authority refuses symlink path: ${candidate}`);
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
canonicalPath: fs.realpathSync(candidate),
|
|
194
|
+
dev: stat.dev,
|
|
195
|
+
ino: stat.ino,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Construct a version-one owner marker from live filesystem state.
|
|
200
|
+
* @param options - Owner and path facts
|
|
201
|
+
* @returns Immutable owner record
|
|
202
|
+
*/
|
|
203
|
+
export function createScratchOwnerRecord(options) {
|
|
204
|
+
const prefixes = [...new Set(options.registeredPrefixes)].sort((left, right) => left.localeCompare(right));
|
|
205
|
+
return {
|
|
206
|
+
schema: 1,
|
|
207
|
+
pid: options.pid ?? process.pid,
|
|
208
|
+
processBirthFingerprint: options.processBirthFingerprint ?? currentProcessBirthFingerprint(),
|
|
209
|
+
createdAt: (options.now ?? new Date()).toISOString(),
|
|
210
|
+
token: options.token ?? randomBytes(16).toString("hex"),
|
|
211
|
+
suiteLabel: options.suiteLabel,
|
|
212
|
+
registeredPrefixes: prefixes,
|
|
213
|
+
namespace: options.authority.namespace,
|
|
214
|
+
root: scratchPathIdentity(options.root),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Validate an inert parsed object as a version-one owner record.
|
|
219
|
+
* @param candidate - Parsed marker payload
|
|
220
|
+
* @returns Validated owner record
|
|
221
|
+
*/
|
|
222
|
+
function validateOwnerRecord(candidate) {
|
|
223
|
+
if (typeof candidate !== "object" || candidate === null) {
|
|
224
|
+
throw new Error("Scratch owner marker must be an object");
|
|
225
|
+
}
|
|
226
|
+
const value = candidate;
|
|
227
|
+
const namespace = value["namespace"];
|
|
228
|
+
const root = value["root"];
|
|
229
|
+
const prefixes = value["registeredPrefixes"];
|
|
230
|
+
const validText = (text) => typeof text === "string" &&
|
|
231
|
+
text !== "" &&
|
|
232
|
+
Buffer.byteLength(text, "utf8") <= MAX_OWNER_TEXT_BYTES;
|
|
233
|
+
const validPath = (text) => typeof text === "string" &&
|
|
234
|
+
text !== "" &&
|
|
235
|
+
Buffer.byteLength(text, "utf8") <= MAX_OWNER_PATH_BYTES;
|
|
236
|
+
const validIdentity = (identity) => identity !== undefined &&
|
|
237
|
+
validPath(identity["canonicalPath"]) &&
|
|
238
|
+
path.isAbsolute(identity["canonicalPath"]) &&
|
|
239
|
+
Number.isSafeInteger(identity["dev"]) &&
|
|
240
|
+
Number.isSafeInteger(identity["ino"]);
|
|
241
|
+
if (value["schema"] !== 1 ||
|
|
242
|
+
typeof value["pid"] !== "number" ||
|
|
243
|
+
!Number.isSafeInteger(value["pid"]) ||
|
|
244
|
+
value["pid"] <= 0 ||
|
|
245
|
+
!validText(value["processBirthFingerprint"]) ||
|
|
246
|
+
!validText(value["createdAt"]) ||
|
|
247
|
+
Number.isNaN(Date.parse(value["createdAt"])) ||
|
|
248
|
+
!validText(value["token"]) ||
|
|
249
|
+
!validText(value["suiteLabel"]) ||
|
|
250
|
+
!Array.isArray(prefixes) ||
|
|
251
|
+
prefixes.length > MAX_OWNER_PREFIXES ||
|
|
252
|
+
!prefixes.every(prefix => validText(prefix) &&
|
|
253
|
+
!prefix.includes("/") &&
|
|
254
|
+
!prefix.includes("\\") &&
|
|
255
|
+
prefix !== "." &&
|
|
256
|
+
prefix !== "..") ||
|
|
257
|
+
!validIdentity(namespace) ||
|
|
258
|
+
!validIdentity(root)) {
|
|
259
|
+
throw new Error("Invalid scratch owner marker schema");
|
|
260
|
+
}
|
|
261
|
+
return candidate;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Write an owner marker without permitting a pre-existing file or symlink.
|
|
265
|
+
* @param root - Owned run root
|
|
266
|
+
* @param record - Marker to persist
|
|
267
|
+
*/
|
|
268
|
+
export function writeScratchOwnerRecord(root, record) {
|
|
269
|
+
const marker = path.join(root, SCRATCH_OWNER_FILE);
|
|
270
|
+
const descriptor = fs.openSync(marker, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, 0o600);
|
|
271
|
+
try {
|
|
272
|
+
fs.writeFileSync(descriptor, `${JSON.stringify(record)}\n`, "utf8");
|
|
273
|
+
fs.fsyncSync(descriptor);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
fs.closeSync(descriptor);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Read and validate an owner marker without following a marker symlink.
|
|
281
|
+
* @param root - Run root containing the marker
|
|
282
|
+
* @returns Validated owner marker
|
|
283
|
+
*/
|
|
284
|
+
export function readScratchOwnerRecord(root) {
|
|
285
|
+
const marker = path.join(root, SCRATCH_OWNER_FILE);
|
|
286
|
+
const stat = fs.lstatSync(marker);
|
|
287
|
+
if (stat.isSymbolicLink()) {
|
|
288
|
+
throw new Error(`Scratch owner marker is a symlink: ${marker}`);
|
|
289
|
+
}
|
|
290
|
+
if (!stat.isFile())
|
|
291
|
+
throw new Error(`Scratch owner marker is not a file: ${marker}`);
|
|
292
|
+
if (stat.size > MAX_OWNER_MARKER_BYTES) {
|
|
293
|
+
throw new Error(`Scratch owner marker exceeds ${String(MAX_OWNER_MARKER_BYTES)} bytes`);
|
|
294
|
+
}
|
|
295
|
+
return validateOwnerRecord(JSON.parse(fs.readFileSync(marker, "utf8")));
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=scratch-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scratch-owner.js","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-owner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** JSON-array environment contract for operator-added direct-child prefixes. */
|
|
2
|
+
export declare const SCRATCH_PREFIXES_ENV = "LISA_TEST_SCRATCH_PREFIXES";
|
|
3
|
+
/** Environment assertion for the immutable route suite label. */
|
|
4
|
+
export declare const SCRATCH_SUITE_ENV = "LISA_TEST_SCRATCH_SUITE";
|
|
5
|
+
/** Every generated route profile understood by the public wrapper. */
|
|
6
|
+
export type ScratchRouteProfileName = "lisa" | "typescript" | "npm-package" | "node" | "expo" | "nestjs" | "cdk" | "harper-fabric" | "phaser";
|
|
7
|
+
/** Frozen suite attribution decided before any scratch root exists. */
|
|
8
|
+
export interface ScratchRouteProfile {
|
|
9
|
+
readonly name: ScratchRouteProfileName;
|
|
10
|
+
readonly suiteLabel: string;
|
|
11
|
+
readonly registeredPrefixes: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read the validated bounded prefix registry inherited by scratch owners.
|
|
15
|
+
* @returns Sorted unique direct-child prefixes
|
|
16
|
+
*/
|
|
17
|
+
export declare function registeredScratchPrefixes(): readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* Read the opaque bounded suite label used for owner attribution.
|
|
20
|
+
* @returns Valid suite label
|
|
21
|
+
*/
|
|
22
|
+
export declare function scratchSuiteLabel(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a generated route plus bounded operator additions before allocation.
|
|
25
|
+
* @param name - Exact managed route name
|
|
26
|
+
* @param environment - Inherited operator configuration
|
|
27
|
+
* @returns Deeply frozen immutable registry
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveScratchRouteProfile(name: string, environment?: NodeJS.ProcessEnv): ScratchRouteProfile;
|
|
30
|
+
/**
|
|
31
|
+
* Assert dynamic Vitest env agrees with the frozen wrapper lease exactly.
|
|
32
|
+
* @param profile - Frozen wrapper-authoritative profile
|
|
33
|
+
* @param environment - Dynamic Vitest environment to compare
|
|
34
|
+
*/
|
|
35
|
+
export declare function assertScratchRouteProfile(profile: Pick<ScratchRouteProfile, "suiteLabel" | "registeredPrefixes">, environment?: NodeJS.ProcessEnv): void;
|
|
36
|
+
//# sourceMappingURL=scratch-route-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scratch-route-profile.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-route-profile.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAQ3D,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,YAAY,GACZ,aAAa,GACb,MAAM,GACN,MAAM,GACN,QAAQ,GACR,KAAK,GACL,eAAe,GACf,QAAQ,CAAC;AAEb,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAgFD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,SAAS,MAAM,EAAE,CA0B7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAsDD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,MAAM,CAAC,UAAgB,GACnC,mBAAmB,CA8BrB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,oBAAoB,CAAC,EACvE,WAAW,GAAE,MAAM,CAAC,UAAgB,GACnC,IAAI,CAsBN"}
|