humanish 0.0.1 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +77 -0
- package/CONTRIBUTING.md +39 -0
- package/LICENSE +21 -0
- package/README.md +437 -8
- package/SECURITY.md +34 -0
- package/dist/actor-contract.d.ts +107 -0
- package/dist/actor-contract.js +286 -0
- package/dist/actor-contract.js.map +1 -0
- package/dist/actor-registry.d.ts +73 -0
- package/dist/actor-registry.js +93 -0
- package/dist/actor-registry.js.map +1 -0
- package/dist/adapter-extension.d.ts +54 -0
- package/dist/adapter-extension.js +214 -0
- package/dist/adapter-extension.js.map +1 -0
- package/dist/argv.d.ts +1 -0
- package/dist/argv.js +8 -0
- package/dist/argv.js.map +1 -0
- package/dist/artifact-reference.d.ts +22 -0
- package/dist/artifact-reference.js +47 -0
- package/dist/artifact-reference.js.map +1 -0
- package/dist/browser-evidence-hygiene.d.ts +7 -0
- package/dist/browser-evidence-hygiene.js +40 -0
- package/dist/browser-evidence-hygiene.js.map +1 -0
- package/dist/claude-agent-sdk.d.ts +94 -0
- package/dist/claude-agent-sdk.js +363 -0
- package/dist/claude-agent-sdk.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/codex-app-server-ui.d.ts +39 -0
- package/dist/codex-app-server-ui.js +357 -0
- package/dist/codex-app-server-ui.js.map +1 -0
- package/dist/codex-app-server.d.ts +144 -0
- package/dist/codex-app-server.js +754 -0
- package/dist/codex-app-server.js.map +1 -0
- package/dist/command-failure.d.ts +29 -0
- package/dist/command-failure.js +54 -0
- package/dist/command-failure.js.map +1 -0
- package/dist/computer-use-actor.d.ts +52 -0
- package/dist/computer-use-actor.js +48 -0
- package/dist/computer-use-actor.js.map +1 -0
- package/dist/computer-use.d.ts +232 -0
- package/dist/computer-use.js +615 -0
- package/dist/computer-use.js.map +1 -0
- package/dist/concurrency.d.ts +1 -0
- package/dist/concurrency.js +27 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/concurrent-shared-world-lab.d.ts +115 -0
- package/dist/concurrent-shared-world-lab.js +1094 -0
- package/dist/concurrent-shared-world-lab.js.map +1 -0
- package/dist/core/git-state.d.ts +33 -0
- package/dist/core/git-state.js +277 -0
- package/dist/core/git-state.js.map +1 -0
- package/dist/core/git-workspace.d.ts +31 -0
- package/dist/core/git-workspace.js +447 -0
- package/dist/core/git-workspace.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/run-primitives.d.ts +66 -0
- package/dist/core/run-primitives.js +120 -0
- package/dist/core/run-primitives.js.map +1 -0
- package/dist/cua-actor-lab.d.ts +621 -0
- package/dist/cua-actor-lab.js +2845 -0
- package/dist/cua-actor-lab.js.map +1 -0
- package/dist/device-presets.d.ts +67 -0
- package/dist/device-presets.js +50 -0
- package/dist/device-presets.js.map +1 -0
- package/dist/e2b-desktop-executor.d.ts +101 -0
- package/dist/e2b-desktop-executor.js +309 -0
- package/dist/e2b-desktop-executor.js.map +1 -0
- package/dist/e2b-desktop-launch.d.ts +144 -0
- package/dist/e2b-desktop-launch.js +59 -0
- package/dist/e2b-desktop-launch.js.map +1 -0
- package/dist/e2b-detached.d.ts +53 -0
- package/dist/e2b-detached.js +130 -0
- package/dist/e2b-detached.js.map +1 -0
- package/dist/e2b-terminal-lab.d.ts +345 -0
- package/dist/e2b-terminal-lab.js +1532 -0
- package/dist/e2b-terminal-lab.js.map +1 -0
- package/dist/env-file.d.ts +14 -0
- package/dist/env-file.js +108 -0
- package/dist/env-file.js.map +1 -0
- package/dist/feedback.d.ts +51 -0
- package/dist/feedback.js +351 -0
- package/dist/feedback.js.map +1 -0
- package/dist/image-evidence.d.ts +2 -0
- package/dist/image-evidence.js +33 -0
- package/dist/image-evidence.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/init-templates.d.ts +12 -0
- package/dist/init-templates.js +369 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.d.ts +26 -0
- package/dist/init.js +429 -0
- package/dist/init.js.map +1 -0
- package/dist/lab-app-runner.d.ts +78 -0
- package/dist/lab-app-runner.js +403 -0
- package/dist/lab-app-runner.js.map +1 -0
- package/dist/lab-config.d.ts +583 -0
- package/dist/lab-config.js +1789 -0
- package/dist/lab-config.js.map +1 -0
- package/dist/lab-engine.d.ts +77 -0
- package/dist/lab-engine.js +216 -0
- package/dist/lab-engine.js.map +1 -0
- package/dist/lab-preflight.d.ts +67 -0
- package/dist/lab-preflight.js +385 -0
- package/dist/lab-preflight.js.map +1 -0
- package/dist/labs.d.ts +53 -0
- package/dist/labs.js +382 -0
- package/dist/labs.js.map +1 -0
- package/dist/observer-assets.d.ts +2 -0
- package/dist/observer-assets.js +2630 -0
- package/dist/observer-assets.js.map +1 -0
- package/dist/observer-data.d.ts +63 -0
- package/dist/observer-data.js +145 -0
- package/dist/observer-data.js.map +1 -0
- package/dist/observer-static.d.ts +39 -0
- package/dist/observer-static.js +306 -0
- package/dist/observer-static.js.map +1 -0
- package/dist/observer.d.ts +46 -0
- package/dist/observer.js +550 -0
- package/dist/observer.js.map +1 -0
- package/dist/openai-responses-cu.d.ts +113 -0
- package/dist/openai-responses-cu.js +545 -0
- package/dist/openai-responses-cu.js.map +1 -0
- package/dist/oss-lab.d.ts +52 -0
- package/dist/oss-lab.js +344 -0
- package/dist/oss-lab.js.map +1 -0
- package/dist/oss-meta-lab-scoring.d.ts +15 -0
- package/dist/oss-meta-lab-scoring.js +145 -0
- package/dist/oss-meta-lab-scoring.js.map +1 -0
- package/dist/oss-meta-lab.d.ts +277 -0
- package/dist/oss-meta-lab.js +4529 -0
- package/dist/oss-meta-lab.js.map +1 -0
- package/dist/oss-remote-telemetry.d.ts +77 -0
- package/dist/oss-remote-telemetry.js +403 -0
- package/dist/oss-remote-telemetry.js.map +1 -0
- package/dist/persona.d.ts +35 -0
- package/dist/persona.js +133 -0
- package/dist/persona.js.map +1 -0
- package/dist/pi-agent-core.d.ts +77 -0
- package/dist/pi-agent-core.js +203 -0
- package/dist/pi-agent-core.js.map +1 -0
- package/dist/program.d.ts +54 -0
- package/dist/program.js +2349 -0
- package/dist/program.js.map +1 -0
- package/dist/redaction.d.ts +90 -0
- package/dist/redaction.js +292 -0
- package/dist/redaction.js.map +1 -0
- package/dist/run-paths.d.ts +56 -0
- package/dist/run-paths.js +340 -0
- package/dist/run-paths.js.map +1 -0
- package/dist/run.d.ts +794 -0
- package/dist/run.js +4844 -0
- package/dist/run.js.map +1 -0
- package/dist/scripted-browser-actor.d.ts +297 -0
- package/dist/scripted-browser-actor.js +1399 -0
- package/dist/scripted-browser-actor.js.map +1 -0
- package/dist/scripted-browser-lab.d.ts +107 -0
- package/dist/scripted-browser-lab.js +788 -0
- package/dist/scripted-browser-lab.js.map +1 -0
- package/dist/selected-output-paths.d.ts +49 -0
- package/dist/selected-output-paths.js +354 -0
- package/dist/selected-output-paths.js.map +1 -0
- package/dist/shared-world-lab.d.ts +208 -0
- package/dist/shared-world-lab.js +1049 -0
- package/dist/shared-world-lab.js.map +1 -0
- package/dist/source-archive.d.ts +82 -0
- package/dist/source-archive.js +408 -0
- package/dist/source-archive.js.map +1 -0
- package/dist/stop-conditions.d.ts +26 -0
- package/dist/stop-conditions.js +66 -0
- package/dist/stop-conditions.js.map +1 -0
- package/dist/terminal-agent-actor.d.ts +36 -0
- package/dist/terminal-agent-actor.js +23 -0
- package/dist/terminal-agent-actor.js.map +1 -0
- package/docs/architecture/actor-contract.md +431 -0
- package/docs/architecture/github-feedback-loop.md +189 -0
- package/docs/architecture/local-codex-tui-actor.md +213 -0
- package/docs/architecture/observer.md +118 -0
- package/docs/architecture/oss-lab-poc.md +250 -0
- package/docs/architecture/project-layout.md +166 -0
- package/docs/architecture/state-driven-executor.md +203 -0
- package/docs/architecture/terminal-product-lane.md +148 -0
- package/docs/contracts/adapter-fixtures.md +80 -0
- package/docs/contracts/core.md +71 -0
- package/docs/contracts/feedback.md +145 -0
- package/docs/contracts/policy.md +311 -0
- package/docs/contracts/run-bundle.md +358 -0
- package/docs/contracts/schemas.md +984 -0
- package/docs/goals/current.md +428 -0
- package/docs/principles/invariants-and-defaults.md +135 -0
- package/docs/principles/self-driving-harness.md +129 -0
- package/docs/product/open-source-install-experience.md +237 -0
- package/docs/ramp/README.md +207 -0
- package/docs/release/open-source-readiness.md +208 -0
- package/docs/release/public-readiness-standard.md +205 -0
- package/docs/roadmap/world-class-open-source-v0.md +311 -0
- package/package.json +102 -8
- package/skills/humanish/SKILL.md +244 -0
- package/skills/humanish/agents/openai.yaml +7 -0
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripted-browser-lab.js","sourceRoot":"","sources":["../src/scripted-browser-lab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type PreparedRunArtifactPaths } from "./run-paths.js";
|
|
2
|
+
interface FileIdentity {
|
|
3
|
+
readonly birthtimeNs: bigint;
|
|
4
|
+
readonly dev: bigint;
|
|
5
|
+
readonly ino: bigint;
|
|
6
|
+
}
|
|
7
|
+
export interface PreparedSelectedOutputDirectory {
|
|
8
|
+
readonly identity: FileIdentity;
|
|
9
|
+
readonly parentRun?: PreparedRunArtifactPaths;
|
|
10
|
+
readonly physicalPath: string;
|
|
11
|
+
readonly requestedPath: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PreparedSelectedOutputFile {
|
|
14
|
+
readonly parentIdentity: FileIdentity;
|
|
15
|
+
readonly physicalParent: string;
|
|
16
|
+
readonly physicalPath: string;
|
|
17
|
+
readonly requestedPath: string;
|
|
18
|
+
}
|
|
19
|
+
export type PreparedOutputDirectory = PreparedSelectedOutputDirectory | PreparedRunArtifactPaths;
|
|
20
|
+
export type PreparedOutputRoot = PreparedOutputDirectory;
|
|
21
|
+
/**
|
|
22
|
+
* Prepare an arbitrary caller-selected output directory without changing the
|
|
23
|
+
* caller's resolution contract. Relative values resolve against baseDir;
|
|
24
|
+
* absolute values keep their authority. Every spelling is caller authority:
|
|
25
|
+
* existing aliases in the selected directory or its parents are canonicalized
|
|
26
|
+
* once, then bound by physical path and directory identity. Managed defaults
|
|
27
|
+
* must use a strict storage preparer instead.
|
|
28
|
+
*/
|
|
29
|
+
export declare function prepareSelectedOutputDirectory(baseDir: string, selectedPath: string): Promise<PreparedSelectedOutputDirectory>;
|
|
30
|
+
/** Prepare a strict `.humanish`-managed directory, then bind its identity. */
|
|
31
|
+
export declare function prepareManagedHumanishOutputDirectory(cwd: string, ...segments: string[]): Promise<PreparedSelectedOutputDirectory>;
|
|
32
|
+
/** Bind an existing strict `.humanish` directory without creating storage. */
|
|
33
|
+
export declare function bindExistingManagedHumanishOutputDirectory(cwd: string, ...segments: string[]): Promise<PreparedSelectedOutputDirectory | null>;
|
|
34
|
+
/** Prepare an arbitrary caller-selected output file whose parent is independent. */
|
|
35
|
+
export declare function prepareSelectedOutputFile(baseDir: string, selectedPath: string): Promise<PreparedSelectedOutputFile>;
|
|
36
|
+
export declare function assertPreparedSelectedOutputDirectory(prepared: PreparedSelectedOutputDirectory): Promise<void>;
|
|
37
|
+
export declare function assertPreparedSelectedOutputFile(prepared: PreparedSelectedOutputFile): Promise<void>;
|
|
38
|
+
export declare function writePreparedSelectedOutputFile(prepared: PreparedSelectedOutputFile, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
|
|
39
|
+
/** Atomically write the sibling latest pointer bound by a prepared run token. */
|
|
40
|
+
export declare function writePreparedRunLatestPointer(prepared: PreparedRunArtifactPaths, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
|
|
41
|
+
export declare function prepareContainedOutputDirectory(rootInput: PreparedOutputRoot, relativePath: string): Promise<string>;
|
|
42
|
+
/** Prepare and identity-bind a generated child directory under a prepared root. */
|
|
43
|
+
export declare function prepareContainedOutputDirectoryRoot(rootInput: PreparedOutputDirectory, relativePath: string): Promise<PreparedSelectedOutputDirectory>;
|
|
44
|
+
export declare function prepareContainedOutputFile(rootInput: PreparedOutputRoot, relativePath: string): Promise<string>;
|
|
45
|
+
export declare function writeContainedOutputFile(rootInput: PreparedOutputRoot, relativePath: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
|
|
46
|
+
/** Read one regular file only when both lexical and physical paths stay in root. */
|
|
47
|
+
export declare function readContainedRegularFile(rootInput: PreparedOutputRoot, relativePath: string): Promise<Buffer | null>;
|
|
48
|
+
export declare function assertSafeOutputPathSegment(value: string, label?: string): void;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { lstat, mkdir, open, realpath, rename, unlink } from "node:fs/promises";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { isPathInside, prepareHumanishStorageDirectory, resolveExistingHumanishStorageDirectory, validatePreparedRunArtifactPaths, validatePreparedRunRootIdentity } from "./run-paths.js";
|
|
6
|
+
/**
|
|
7
|
+
* Prepare an arbitrary caller-selected output directory without changing the
|
|
8
|
+
* caller's resolution contract. Relative values resolve against baseDir;
|
|
9
|
+
* absolute values keep their authority. Every spelling is caller authority:
|
|
10
|
+
* existing aliases in the selected directory or its parents are canonicalized
|
|
11
|
+
* once, then bound by physical path and directory identity. Managed defaults
|
|
12
|
+
* must use a strict storage preparer instead.
|
|
13
|
+
*/
|
|
14
|
+
export async function prepareSelectedOutputDirectory(baseDir, selectedPath) {
|
|
15
|
+
assertPathText(selectedPath, "Output directory");
|
|
16
|
+
const requestedPath = path.resolve(baseDir, selectedPath);
|
|
17
|
+
const physicalPath = await prepareAbsoluteSelectedDirectory(requestedPath);
|
|
18
|
+
return captureSelectedOutputDirectory(requestedPath, physicalPath);
|
|
19
|
+
}
|
|
20
|
+
/** Prepare a strict `.humanish`-managed directory, then bind its identity. */
|
|
21
|
+
export async function prepareManagedHumanishOutputDirectory(cwd, ...segments) {
|
|
22
|
+
const requestedPath = path.resolve(cwd, ".humanish", ...segments);
|
|
23
|
+
const preparedPath = await prepareHumanishStorageDirectory(cwd, ...segments);
|
|
24
|
+
const physicalPath = await realpath(preparedPath);
|
|
25
|
+
return captureSelectedOutputDirectory(requestedPath, physicalPath);
|
|
26
|
+
}
|
|
27
|
+
/** Bind an existing strict `.humanish` directory without creating storage. */
|
|
28
|
+
export async function bindExistingManagedHumanishOutputDirectory(cwd, ...segments) {
|
|
29
|
+
const requestedPath = path.resolve(cwd, ".humanish", ...segments);
|
|
30
|
+
const existing = await resolveExistingHumanishStorageDirectory(cwd, ...segments);
|
|
31
|
+
if (!existing || existing !== requestedPath) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return captureSelectedOutputDirectory(requestedPath, await realpath(existing));
|
|
35
|
+
}
|
|
36
|
+
/** Prepare an arbitrary caller-selected output file whose parent is independent. */
|
|
37
|
+
export async function prepareSelectedOutputFile(baseDir, selectedPath) {
|
|
38
|
+
assertPathText(selectedPath, "Output file");
|
|
39
|
+
const requestedPath = path.resolve(baseDir, selectedPath);
|
|
40
|
+
const fileName = path.basename(requestedPath);
|
|
41
|
+
if (!fileName || requestedPath === path.parse(requestedPath).root) {
|
|
42
|
+
throw new Error("Output file must name a regular file.");
|
|
43
|
+
}
|
|
44
|
+
const requestedParent = path.dirname(requestedPath);
|
|
45
|
+
const physicalParent = await prepareAbsoluteSelectedDirectory(requestedParent);
|
|
46
|
+
const physicalPath = path.join(physicalParent, fileName);
|
|
47
|
+
await assertRegularFileOrMissing(physicalPath);
|
|
48
|
+
const parentIdentity = await captureDirectoryIdentity(physicalParent);
|
|
49
|
+
const prepared = Object.freeze({
|
|
50
|
+
parentIdentity,
|
|
51
|
+
physicalParent,
|
|
52
|
+
physicalPath,
|
|
53
|
+
requestedPath
|
|
54
|
+
});
|
|
55
|
+
await assertPreparedSelectedOutputFile(prepared);
|
|
56
|
+
return prepared;
|
|
57
|
+
}
|
|
58
|
+
export async function assertPreparedSelectedOutputDirectory(prepared) {
|
|
59
|
+
if (prepared.parentRun) {
|
|
60
|
+
await validatePreparedRunRootIdentity(prepared.parentRun);
|
|
61
|
+
}
|
|
62
|
+
const requestedPhysicalPath = await realpath(prepared.requestedPath);
|
|
63
|
+
if (requestedPhysicalPath !== prepared.physicalPath) {
|
|
64
|
+
throw new Error("Selected output root changed physical destination.");
|
|
65
|
+
}
|
|
66
|
+
await assertDirectoryIdentity(prepared.physicalPath, prepared.identity, "Selected output root");
|
|
67
|
+
}
|
|
68
|
+
export async function assertPreparedSelectedOutputFile(prepared) {
|
|
69
|
+
const requestedPhysicalParent = await realpath(path.dirname(prepared.requestedPath));
|
|
70
|
+
if (requestedPhysicalParent !== prepared.physicalParent) {
|
|
71
|
+
throw new Error("Selected output parent changed physical destination.");
|
|
72
|
+
}
|
|
73
|
+
await assertDirectoryIdentity(prepared.physicalParent, prepared.parentIdentity, "Selected output parent");
|
|
74
|
+
await assertRegularFileOrMissing(prepared.physicalPath);
|
|
75
|
+
}
|
|
76
|
+
export async function writePreparedSelectedOutputFile(prepared, data, encoding) {
|
|
77
|
+
await atomicWriteOutputFile(prepared.physicalParent, prepared.physicalPath, data, encoding, () => assertPreparedSelectedOutputFile(prepared));
|
|
78
|
+
}
|
|
79
|
+
/** Atomically write the sibling latest pointer bound by a prepared run token. */
|
|
80
|
+
export async function writePreparedRunLatestPointer(prepared, data, encoding) {
|
|
81
|
+
await atomicWriteOutputFile(prepared.physicalRunsRoot, prepared.physicalLatestPointer, data, encoding, async () => {
|
|
82
|
+
await validatePreparedRunArtifactPaths(prepared);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
export async function prepareContainedOutputDirectory(rootInput, relativePath) {
|
|
86
|
+
assertSafeRelativeOutputPath(relativePath, true);
|
|
87
|
+
const root = await resolveOutputRoot(rootInput);
|
|
88
|
+
return prepareDirectoryWithinRoot(root, normalizeRelativeOutputPath(relativePath));
|
|
89
|
+
}
|
|
90
|
+
/** Prepare and identity-bind a generated child directory under a prepared root. */
|
|
91
|
+
export async function prepareContainedOutputDirectoryRoot(rootInput, relativePath) {
|
|
92
|
+
const root = await resolveOutputRoot(rootInput);
|
|
93
|
+
const physicalPath = await prepareContainedOutputDirectory(rootInput, relativePath);
|
|
94
|
+
const revalidatedRoot = await resolveOutputRoot(rootInput);
|
|
95
|
+
if (revalidatedRoot !== root) {
|
|
96
|
+
throw new Error("Output root changed after it was prepared.");
|
|
97
|
+
}
|
|
98
|
+
const parentRun = "physicalRunRoot" in rootInput ? rootInput : rootInput.parentRun;
|
|
99
|
+
return captureSelectedOutputDirectory(physicalPath, physicalPath, parentRun);
|
|
100
|
+
}
|
|
101
|
+
export async function prepareContainedOutputFile(rootInput, relativePath) {
|
|
102
|
+
assertSafeRelativeOutputPath(relativePath, false);
|
|
103
|
+
const root = await resolveOutputRoot(rootInput);
|
|
104
|
+
const absolute = path.resolve(root, normalizeRelativeOutputPath(relativePath));
|
|
105
|
+
if (!isPathInside(root, absolute) || absolute === root) {
|
|
106
|
+
throw new Error("Output file must stay inside its selected root.");
|
|
107
|
+
}
|
|
108
|
+
const parent = await prepareDirectoryWithinRoot(root, path.relative(root, path.dirname(absolute)));
|
|
109
|
+
const filePath = path.join(parent, path.basename(absolute));
|
|
110
|
+
await assertRegularFileOrMissing(filePath);
|
|
111
|
+
return filePath;
|
|
112
|
+
}
|
|
113
|
+
export async function writeContainedOutputFile(rootInput, relativePath, data, encoding) {
|
|
114
|
+
const filePath = await prepareContainedOutputFile(rootInput, relativePath);
|
|
115
|
+
const root = await resolveOutputRoot(rootInput);
|
|
116
|
+
await atomicWriteOutputFile(path.dirname(filePath), filePath, data, encoding, async () => {
|
|
117
|
+
const validatedRoot = await resolveOutputRoot(rootInput);
|
|
118
|
+
if (validatedRoot !== root) {
|
|
119
|
+
throw new Error("Output root changed after it was prepared.");
|
|
120
|
+
}
|
|
121
|
+
await assertContainedDirectoryChain(root, path.dirname(filePath));
|
|
122
|
+
await assertRegularFileOrMissing(filePath);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/** Read one regular file only when both lexical and physical paths stay in root. */
|
|
126
|
+
export async function readContainedRegularFile(rootInput, relativePath) {
|
|
127
|
+
try {
|
|
128
|
+
assertSafeRelativeOutputPath(relativePath, false);
|
|
129
|
+
const root = await resolveOutputRoot(rootInput);
|
|
130
|
+
const candidate = path.resolve(root, normalizeRelativeOutputPath(relativePath));
|
|
131
|
+
if (!isPathInside(root, candidate) || candidate === root) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
await assertContainedDirectoryChain(root, path.dirname(candidate));
|
|
135
|
+
const before = await lstat(candidate, { bigint: true });
|
|
136
|
+
if (before.isSymbolicLink() || !before.isFile() || before.nlink > 1n) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const physicalFile = await realpath(candidate);
|
|
140
|
+
if (!isPathInside(root, physicalFile)) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const handle = await open(candidate, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
144
|
+
try {
|
|
145
|
+
const after = await handle.stat({ bigint: true });
|
|
146
|
+
if (!after.isFile()
|
|
147
|
+
|| after.nlink > 1n
|
|
148
|
+
|| after.dev !== before.dev
|
|
149
|
+
|| after.ino !== before.ino) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const revalidatedRoot = await resolveOutputRoot(rootInput);
|
|
153
|
+
if (revalidatedRoot !== root) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
await assertContainedDirectoryChain(root, path.dirname(candidate));
|
|
157
|
+
return await handle.readFile();
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
await handle.close();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export function assertSafeOutputPathSegment(value, label = "Output path segment") {
|
|
168
|
+
if (value.length === 0
|
|
169
|
+
|| value === "."
|
|
170
|
+
|| value === ".."
|
|
171
|
+
|| value.includes("/")
|
|
172
|
+
|| value.includes("\\")
|
|
173
|
+
|| value.includes("\0")) {
|
|
174
|
+
throw new Error(`${label} must be one non-empty path segment.`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function assertSafeRelativeOutputPath(value, allowEmpty) {
|
|
178
|
+
if ((!allowEmpty && value.length === 0) || value.includes("\0")) {
|
|
179
|
+
throw new Error("Output path must be a non-empty relative path.");
|
|
180
|
+
}
|
|
181
|
+
if (value === "" && allowEmpty) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (path.isAbsolute(value) || path.posix.isAbsolute(value) || path.win32.isAbsolute(value)) {
|
|
185
|
+
throw new Error("Output path must be relative to its selected root.");
|
|
186
|
+
}
|
|
187
|
+
const parts = value.replace(/\\/g, "/").split("/");
|
|
188
|
+
if (parts.some((part) => part.length === 0 || part === "." || part === "..")) {
|
|
189
|
+
throw new Error("Output path must not contain empty or traversal segments.");
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function normalizeRelativeOutputPath(value) {
|
|
193
|
+
return value.replace(/[\\/]+/g, path.sep);
|
|
194
|
+
}
|
|
195
|
+
async function prepareDirectoryWithinRoot(root, relativePath) {
|
|
196
|
+
const segments = relativePath === ""
|
|
197
|
+
? []
|
|
198
|
+
: relativePath.replace(/[\\/]+/g, path.sep).split(path.sep);
|
|
199
|
+
let current = root;
|
|
200
|
+
for (const segment of segments) {
|
|
201
|
+
assertSafeOutputPathSegment(segment);
|
|
202
|
+
current = path.join(current, segment);
|
|
203
|
+
await mkdirDirectoryLeaf(current);
|
|
204
|
+
}
|
|
205
|
+
const physical = await realpath(current);
|
|
206
|
+
if (!isPathInside(root, physical)) {
|
|
207
|
+
throw new Error("Output directory resolved outside its selected root.");
|
|
208
|
+
}
|
|
209
|
+
return physical;
|
|
210
|
+
}
|
|
211
|
+
async function captureSelectedOutputDirectory(requestedPath, physicalPath, parentRun) {
|
|
212
|
+
const prepared = Object.freeze({
|
|
213
|
+
identity: await captureDirectoryIdentity(physicalPath),
|
|
214
|
+
...(parentRun === undefined ? {} : { parentRun }),
|
|
215
|
+
physicalPath,
|
|
216
|
+
requestedPath
|
|
217
|
+
});
|
|
218
|
+
await assertPreparedSelectedOutputDirectory(prepared);
|
|
219
|
+
return prepared;
|
|
220
|
+
}
|
|
221
|
+
async function prepareAbsoluteSelectedDirectory(absolutePath) {
|
|
222
|
+
const resolved = path.resolve(absolutePath);
|
|
223
|
+
try {
|
|
224
|
+
const existing = await lstat(resolved);
|
|
225
|
+
if (!existing.isDirectory() && !existing.isSymbolicLink()) {
|
|
226
|
+
throw new Error("Selected output root must resolve to a directory.");
|
|
227
|
+
}
|
|
228
|
+
const physical = await realpath(resolved);
|
|
229
|
+
const physicalStats = await lstat(physical);
|
|
230
|
+
if (!physicalStats.isDirectory()) {
|
|
231
|
+
throw new Error("Selected output root must resolve to a directory.");
|
|
232
|
+
}
|
|
233
|
+
return physical;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
if (!isNodeError(error) || error.code !== "ENOENT") {
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
await mkdir(path.dirname(resolved), { recursive: true });
|
|
241
|
+
const physicalParent = await resolveBaseDirectory(path.dirname(resolved), "Selected output parent");
|
|
242
|
+
const selectedLeaf = path.join(physicalParent, path.basename(resolved));
|
|
243
|
+
await mkdirDirectoryLeaf(selectedLeaf);
|
|
244
|
+
return realpath(selectedLeaf);
|
|
245
|
+
}
|
|
246
|
+
async function mkdirDirectoryLeaf(directory) {
|
|
247
|
+
try {
|
|
248
|
+
await mkdir(directory);
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
if (!isNodeError(error) || error.code !== "EEXIST") {
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const stats = await lstat(directory, { bigint: true });
|
|
256
|
+
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
257
|
+
throw new Error("Selected output directories must not be symbolic links or non-directories.");
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async function resolveOutputRoot(root) {
|
|
261
|
+
if ("physicalRunRoot" in root) {
|
|
262
|
+
await validatePreparedRunRootIdentity(root);
|
|
263
|
+
return root.physicalRunRoot;
|
|
264
|
+
}
|
|
265
|
+
await assertPreparedSelectedOutputDirectory(root);
|
|
266
|
+
return root.physicalPath;
|
|
267
|
+
}
|
|
268
|
+
async function resolveBaseDirectory(directory, label) {
|
|
269
|
+
const physical = await realpath(path.resolve(directory));
|
|
270
|
+
const stats = await lstat(physical);
|
|
271
|
+
if (!stats.isDirectory()) {
|
|
272
|
+
throw new Error(`${label} must be a directory.`);
|
|
273
|
+
}
|
|
274
|
+
return physical;
|
|
275
|
+
}
|
|
276
|
+
async function assertRegularFileOrMissing(filePath) {
|
|
277
|
+
try {
|
|
278
|
+
const stats = await lstat(filePath);
|
|
279
|
+
if (stats.isSymbolicLink() || !stats.isFile() || stats.nlink > 1) {
|
|
280
|
+
throw new Error("Selected output files must be single-link regular files, not symbolic links or hardlinks.");
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
throw error;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function captureDirectoryIdentity(directory) {
|
|
291
|
+
const stats = await lstat(directory, { bigint: true });
|
|
292
|
+
if (stats.isSymbolicLink() || !stats.isDirectory() || await realpath(directory) !== directory) {
|
|
293
|
+
throw new Error("Prepared output root must use a physical directory.");
|
|
294
|
+
}
|
|
295
|
+
return Object.freeze({ birthtimeNs: stats.birthtimeNs, dev: stats.dev, ino: stats.ino });
|
|
296
|
+
}
|
|
297
|
+
async function assertDirectoryIdentity(directory, identity, label) {
|
|
298
|
+
const stats = await lstat(directory, { bigint: true });
|
|
299
|
+
if (stats.isSymbolicLink()
|
|
300
|
+
|| !stats.isDirectory()
|
|
301
|
+
|| stats.birthtimeNs !== identity.birthtimeNs
|
|
302
|
+
|| stats.dev !== identity.dev
|
|
303
|
+
|| stats.ino !== identity.ino
|
|
304
|
+
|| await realpath(directory) !== directory) {
|
|
305
|
+
throw new Error(`${label} identity changed after it was prepared.`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
async function assertContainedDirectoryChain(root, directory) {
|
|
309
|
+
if (!isPathInside(root, directory)) {
|
|
310
|
+
throw new Error("Output directory must stay inside its selected root.");
|
|
311
|
+
}
|
|
312
|
+
const relative = path.relative(root, directory);
|
|
313
|
+
let current = root;
|
|
314
|
+
for (const segment of relative === "" ? [] : relative.split(path.sep)) {
|
|
315
|
+
current = path.join(current, segment);
|
|
316
|
+
const stats = await lstat(current);
|
|
317
|
+
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
318
|
+
throw new Error("Selected output directories must not be symbolic links or non-directories.");
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
async function atomicWriteOutputFile(parent, target, data, encoding, revalidate) {
|
|
323
|
+
await revalidate();
|
|
324
|
+
const temporary = path.join(parent, `.humanish-write-${process.pid}-${randomUUID()}.tmp`);
|
|
325
|
+
let handle;
|
|
326
|
+
try {
|
|
327
|
+
handle = await open(temporary, "wx", 0o600);
|
|
328
|
+
if (typeof data === "string") {
|
|
329
|
+
await handle.writeFile(data, encoding ?? "utf8");
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
await handle.writeFile(data);
|
|
333
|
+
}
|
|
334
|
+
await handle.sync();
|
|
335
|
+
await handle.close();
|
|
336
|
+
handle = undefined;
|
|
337
|
+
await revalidate();
|
|
338
|
+
await rename(temporary, target);
|
|
339
|
+
await assertRegularFileOrMissing(target);
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
await handle?.close().catch(() => undefined);
|
|
343
|
+
await unlink(temporary).catch(() => undefined);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function assertPathText(value, label) {
|
|
347
|
+
if (value.includes("\0")) {
|
|
348
|
+
throw new Error(`${label} must not contain a null byte.`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function isNodeError(error) {
|
|
352
|
+
return error instanceof Error && "code" in error;
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=selected-output-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selected-output-paths.js","sourceRoot":"","sources":["../src/selected-output-paths.ts"],"names":[],"mappings":"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"}
|