humanish 0.0.1 → 0.15.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/AGENTS.md +77 -0
- package/CONTRIBUTING.md +39 -0
- package/LICENSE +21 -0
- package/README.md +435 -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 +356 -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 +327 -0
- package/dist/codex-app-server-ui.js.map +1 -0
- package/dist/codex-app-server.d.ts +141 -0
- package/dist/codex-app-server.js +747 -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 +1092 -0
- package/dist/concurrent-shared-world-lab.js.map +1 -0
- package/dist/core/git-state.d.ts +31 -0
- package/dist/core/git-state.js +142 -0
- package/dist/core/git-state.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 +620 -0
- package/dist/cua-actor-lab.js +2834 -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 +1467 -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 +313 -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 +343 -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 +578 -0
- package/dist/lab-config.js +1751 -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 +176 -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 +192 -0
- package/dist/observer-static.js.map +1 -0
- package/dist/observer.d.ts +46 -0
- package/dist/observer.js +353 -0
- package/dist/observer.js.map +1 -0
- package/dist/openai-responses-cu.d.ts +113 -0
- package/dist/openai-responses-cu.js +531 -0
- package/dist/openai-responses-cu.js.map +1 -0
- package/dist/oss-lab.d.ts +52 -0
- package/dist/oss-lab.js +299 -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 +279 -0
- package/dist/oss-meta-lab.js +4889 -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 +2347 -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.d.ts +784 -0
- package/dist/run.js +4555 -0
- package/dist/run.js.map +1 -0
- package/dist/scripted-browser-actor.d.ts +294 -0
- package/dist/scripted-browser-actor.js +1286 -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 +738 -0
- package/dist/scripted-browser-lab.js.map +1 -0
- package/dist/shared-world-lab.d.ts +208 -0
- package/dist/shared-world-lab.js +1048 -0
- package/dist/shared-world-lab.js.map +1 -0
- package/dist/source-archive.d.ts +82 -0
- package/dist/source-archive.js +365 -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 +242 -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 +305 -0
- package/docs/contracts/run-bundle.md +358 -0
- package/docs/contracts/schemas.md +984 -0
- package/docs/goals/current.md +409 -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 +229 -0
- package/docs/ramp/README.md +200 -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":"shared-world-lab.js","sourceRoot":"","sources":["../src/shared-world-lab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export interface LocalTreeEntry {
|
|
2
|
+
relPath: string;
|
|
3
|
+
kind: "file" | "symlink";
|
|
4
|
+
size: number;
|
|
5
|
+
}
|
|
6
|
+
export interface LocalTreeGitInfo {
|
|
7
|
+
commit: string;
|
|
8
|
+
dirty: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface LocalTreeArchive {
|
|
11
|
+
archivePath: string;
|
|
12
|
+
/** 64 lowercase hex sha256, the provenance pin (not the repo's 16-char display digest). */
|
|
13
|
+
archiveSha256: string;
|
|
14
|
+
fileCount: number;
|
|
15
|
+
totalBytes: number;
|
|
16
|
+
/** Absent when root is not a git work tree. */
|
|
17
|
+
git?: LocalTreeGitInfo;
|
|
18
|
+
}
|
|
19
|
+
export interface CreateLocalTreeArchiveOptions {
|
|
20
|
+
/** Default: a fresh directory under os.tmpdir(). */
|
|
21
|
+
outputPath?: string;
|
|
22
|
+
/** Author-supplied path prefixes / basenames, on top of the always-on denylist. */
|
|
23
|
+
extraExclude?: string[];
|
|
24
|
+
/** Upload size cap. Default DEFAULT_LOCAL_TREE_MAX_ARCHIVE_BYTES (256 MiB). */
|
|
25
|
+
maxArchiveBytes?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Path segments that are always excluded, wherever they appear in a relPath,
|
|
29
|
+
* in both git and fallback enumeration modes. Not overridable by callers.
|
|
30
|
+
*/
|
|
31
|
+
export declare const LOCAL_TREE_DENYLIST_PATH_SEGMENTS: readonly [".git", "node_modules", ".humanish", ".homun"];
|
|
32
|
+
/**
|
|
33
|
+
* Basename glob patterns (single leading or trailing `*` only) that are always
|
|
34
|
+
* excluded, in both git and fallback enumeration modes. Not overridable by
|
|
35
|
+
* callers. This is a safety net for secret-shaped files that were never
|
|
36
|
+
* gitignored; in git mode `.gitignore` already handles the bulk (build output,
|
|
37
|
+
* caches).
|
|
38
|
+
*/
|
|
39
|
+
export declare const LOCAL_TREE_DENYLIST_BASENAME_PATTERNS: readonly [".env*", "*.pem", "*.key", "*.p12", "*.pfx", "id_rsa*", "id_dsa*", "id_ed25519*", "id_ecdsa*", "*.keystore", "*.jks", "*.ppk", "*.gpg", "*.tfstate", "terraform.tfstate.backup", ".npmrc", ".netrc", ".dockercfg", "kubeconfig", "credentials.json", "service-account.json", "serviceAccount.json", "service_account.json", "secrets.json", "secrets.yaml", "secrets.yml", "auth.json"];
|
|
40
|
+
/** Default upload size cap: 256 MiB. */
|
|
41
|
+
export declare const DEFAULT_LOCAL_TREE_MAX_ARCHIVE_BYTES: number;
|
|
42
|
+
/**
|
|
43
|
+
* Enumerate the packable entries of a local working tree.
|
|
44
|
+
*
|
|
45
|
+
* When root is a git work tree, the list is `git ls-files --cached --others
|
|
46
|
+
* --exclude-standard -z`: tracked files plus untracked-but-not-ignored files,
|
|
47
|
+
* honoring .gitignore exactly as git does. Entries that no longer exist on
|
|
48
|
+
* disk (staged deletes) are dropped, and entries that resolve to a directory
|
|
49
|
+
* on disk (a nested repo or worktree boundary) are dropped rather than
|
|
50
|
+
* recursed into.
|
|
51
|
+
*
|
|
52
|
+
* Otherwise, a recursive readdir walk applies only the always-on denylist
|
|
53
|
+
* plus extraExclude; .gitignore semantics require git, so this fallback is
|
|
54
|
+
* coarser by design.
|
|
55
|
+
*
|
|
56
|
+
* The always-on denylist is applied in both modes and is not overridable.
|
|
57
|
+
* The returned entries are sorted bytewise by relPath.
|
|
58
|
+
*/
|
|
59
|
+
export declare function enumerateLocalTree(root: string, options?: {
|
|
60
|
+
extraExclude?: string[];
|
|
61
|
+
}): {
|
|
62
|
+
entries: LocalTreeEntry[];
|
|
63
|
+
git?: LocalTreeGitInfo;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Enumerate a local working tree and pack it into a gzipped tar archive,
|
|
67
|
+
* computing archiveSha256 from the exact same entries list used for the tar
|
|
68
|
+
* file list.
|
|
69
|
+
*
|
|
70
|
+
* Fails closed when: the root is missing or not a directory; enumeration
|
|
71
|
+
* produces zero entries; or total packed bytes exceed maxArchiveBytes.
|
|
72
|
+
*/
|
|
73
|
+
export declare function createLocalTreeArchive(root: string, options?: CreateLocalTreeArchiveOptions): LocalTreeArchive;
|
|
74
|
+
/**
|
|
75
|
+
* Normalize an author-supplied exclude entry to the relPath shape enumeration
|
|
76
|
+
* produces (no leading "./", no trailing "/"). Absolute paths and glob syntax
|
|
77
|
+
* are REJECTED, not silently no-op'd: an exclude the author believed in but
|
|
78
|
+
* that never matches anything is a leak vector, so unusable shapes fail
|
|
79
|
+
* closed at the packing boundary (and, for lab-config callers, already at
|
|
80
|
+
* parse time).
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeExtraExcludeEntry(entry: string): string;
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
// Local working-tree packaging for `subject.source: local-tree`.
|
|
2
|
+
//
|
|
3
|
+
// Enumeration produces ONE file list that drives BOTH the tar archive and the
|
|
4
|
+
// content digest (archiveSha256), so the digest can never diverge from what
|
|
5
|
+
// actually gets packed. A prior in-house harness reimplemented exclusion in a
|
|
6
|
+
// second, independent digest walker that could drift from what its tar
|
|
7
|
+
// `--exclude` flags actually excluded; this file is deliberately designed so
|
|
8
|
+
// that cannot happen: enumerateLocalTree() builds one entries array, and both
|
|
9
|
+
// the hash and the tar file list are derived from that same array.
|
|
10
|
+
//
|
|
11
|
+
// See docs/goals/local-tree-subject/goal.md ("Packing design") for the full
|
|
12
|
+
// contract implemented here. Node builtins only, no npm dependencies.
|
|
13
|
+
import { execFileSync } from "node:child_process";
|
|
14
|
+
import { createHash } from "node:crypto";
|
|
15
|
+
import { lstatSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, readlinkSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
16
|
+
import { tmpdir } from "node:os";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
/**
|
|
19
|
+
* Path segments that are always excluded, wherever they appear in a relPath,
|
|
20
|
+
* in both git and fallback enumeration modes. Not overridable by callers.
|
|
21
|
+
*/
|
|
22
|
+
// ".homun" stays denied: user trees may still carry runtime dirs from before the humanish rename.
|
|
23
|
+
export const LOCAL_TREE_DENYLIST_PATH_SEGMENTS = [".git", "node_modules", ".humanish", ".homun"];
|
|
24
|
+
/**
|
|
25
|
+
* Basename glob patterns (single leading or trailing `*` only) that are always
|
|
26
|
+
* excluded, in both git and fallback enumeration modes. Not overridable by
|
|
27
|
+
* callers. This is a safety net for secret-shaped files that were never
|
|
28
|
+
* gitignored; in git mode `.gitignore` already handles the bulk (build output,
|
|
29
|
+
* caches).
|
|
30
|
+
*/
|
|
31
|
+
export const LOCAL_TREE_DENYLIST_BASENAME_PATTERNS = [
|
|
32
|
+
".env*",
|
|
33
|
+
"*.pem",
|
|
34
|
+
"*.key",
|
|
35
|
+
"*.p12",
|
|
36
|
+
"*.pfx",
|
|
37
|
+
"id_rsa*",
|
|
38
|
+
"id_dsa*",
|
|
39
|
+
"id_ed25519*",
|
|
40
|
+
"id_ecdsa*",
|
|
41
|
+
"*.keystore",
|
|
42
|
+
"*.jks",
|
|
43
|
+
"*.ppk",
|
|
44
|
+
"*.gpg",
|
|
45
|
+
"*.tfstate",
|
|
46
|
+
"terraform.tfstate.backup",
|
|
47
|
+
".npmrc",
|
|
48
|
+
".netrc",
|
|
49
|
+
".dockercfg",
|
|
50
|
+
"kubeconfig",
|
|
51
|
+
"credentials.json",
|
|
52
|
+
"service-account.json",
|
|
53
|
+
"serviceAccount.json",
|
|
54
|
+
"service_account.json",
|
|
55
|
+
"secrets.json",
|
|
56
|
+
"secrets.yaml",
|
|
57
|
+
"secrets.yml",
|
|
58
|
+
"auth.json",
|
|
59
|
+
];
|
|
60
|
+
/** Default upload size cap: 256 MiB. */
|
|
61
|
+
export const DEFAULT_LOCAL_TREE_MAX_ARCHIVE_BYTES = 256 * 1024 * 1024;
|
|
62
|
+
/**
|
|
63
|
+
* Enumerate the packable entries of a local working tree.
|
|
64
|
+
*
|
|
65
|
+
* When root is a git work tree, the list is `git ls-files --cached --others
|
|
66
|
+
* --exclude-standard -z`: tracked files plus untracked-but-not-ignored files,
|
|
67
|
+
* honoring .gitignore exactly as git does. Entries that no longer exist on
|
|
68
|
+
* disk (staged deletes) are dropped, and entries that resolve to a directory
|
|
69
|
+
* on disk (a nested repo or worktree boundary) are dropped rather than
|
|
70
|
+
* recursed into.
|
|
71
|
+
*
|
|
72
|
+
* Otherwise, a recursive readdir walk applies only the always-on denylist
|
|
73
|
+
* plus extraExclude; .gitignore semantics require git, so this fallback is
|
|
74
|
+
* coarser by design.
|
|
75
|
+
*
|
|
76
|
+
* The always-on denylist is applied in both modes and is not overridable.
|
|
77
|
+
* The returned entries are sorted bytewise by relPath.
|
|
78
|
+
*/
|
|
79
|
+
export function enumerateLocalTree(root, options = {}) {
|
|
80
|
+
const resolvedRoot = path.resolve(root);
|
|
81
|
+
assertValidRoot(resolvedRoot);
|
|
82
|
+
const extraExclude = (options.extraExclude ?? []).map(normalizeExtraExcludeEntry);
|
|
83
|
+
if (isGitWorkTree(resolvedRoot)) {
|
|
84
|
+
const entries = enumerateGitTree(resolvedRoot, extraExclude);
|
|
85
|
+
const git = captureGitInfo(resolvedRoot);
|
|
86
|
+
return git ? { entries, git } : { entries };
|
|
87
|
+
}
|
|
88
|
+
const entries = [];
|
|
89
|
+
walkFallbackTree(resolvedRoot, "", extraExclude, entries);
|
|
90
|
+
entries.sort(compareEntriesByRelPath);
|
|
91
|
+
return { entries };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Enumerate a local working tree and pack it into a gzipped tar archive,
|
|
95
|
+
* computing archiveSha256 from the exact same entries list used for the tar
|
|
96
|
+
* file list.
|
|
97
|
+
*
|
|
98
|
+
* Fails closed when: the root is missing or not a directory; enumeration
|
|
99
|
+
* produces zero entries; or total packed bytes exceed maxArchiveBytes.
|
|
100
|
+
*/
|
|
101
|
+
export function createLocalTreeArchive(root, options = {}) {
|
|
102
|
+
const resolvedRoot = path.resolve(root);
|
|
103
|
+
const extraExclude = options.extraExclude ?? [];
|
|
104
|
+
const maxArchiveBytes = options.maxArchiveBytes ?? DEFAULT_LOCAL_TREE_MAX_ARCHIVE_BYTES;
|
|
105
|
+
const { entries, git } = enumerateLocalTree(resolvedRoot, extraExclude.length > 0 ? { extraExclude } : undefined);
|
|
106
|
+
if (entries.length === 0) {
|
|
107
|
+
throw new Error(`Local tree root "${path.basename(resolvedRoot)}" produced zero packable entries after the always-on denylist` +
|
|
108
|
+
(extraExclude.length > 0 ? " and extraExclude" : "") +
|
|
109
|
+
"; local-tree packing requires at least one non-denylisted file or symlink. (Paths in this message are basenames only; the packed root is the lab resolution cwd.)");
|
|
110
|
+
}
|
|
111
|
+
// Check the cap from enumerated sizes BEFORE reading/hashing file bytes, so
|
|
112
|
+
// an oversized tree fails closed without the cost of hashing all of it.
|
|
113
|
+
const enumeratedBytes = entries.reduce((sum, entry) => (entry.kind === "file" ? sum + entry.size : sum), 0);
|
|
114
|
+
if (enumeratedBytes > maxArchiveBytes) {
|
|
115
|
+
throw new Error(`Local tree archive for "${path.basename(resolvedRoot)}" is ${enumeratedBytes} bytes, exceeding maxArchiveBytes ` +
|
|
116
|
+
`(${maxArchiveBytes}); pass a larger maxArchiveBytes or exclude more paths via localTree.exclude.`);
|
|
117
|
+
}
|
|
118
|
+
const { archiveSha256, totalBytes } = computeArchiveSha256(resolvedRoot, entries);
|
|
119
|
+
const archivePath = options.outputPath
|
|
120
|
+
? path.resolve(options.outputPath)
|
|
121
|
+
: path.join(mkdtempSync(path.join(tmpdir(), "humanish-local-tree-")), "source.tar.gz");
|
|
122
|
+
mkdirSync(path.dirname(archivePath), { recursive: true });
|
|
123
|
+
writeTarArchive(resolvedRoot, entries, archivePath);
|
|
124
|
+
const fileCount = entries.length;
|
|
125
|
+
return git
|
|
126
|
+
? { archivePath, archiveSha256, fileCount, totalBytes, git }
|
|
127
|
+
: { archivePath, archiveSha256, fileCount, totalBytes };
|
|
128
|
+
}
|
|
129
|
+
function assertValidRoot(root) {
|
|
130
|
+
let stat;
|
|
131
|
+
try {
|
|
132
|
+
stat = statSync(root);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
throw new Error(`Local tree root "${path.basename(root)}" does not exist or is not readable; local-tree packing requires an existing directory.`);
|
|
136
|
+
}
|
|
137
|
+
if (!stat.isDirectory()) {
|
|
138
|
+
throw new Error(`Local tree root "${path.basename(root)}" is not a directory; local-tree packing requires a directory root.`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function isGitWorkTree(root) {
|
|
142
|
+
try {
|
|
143
|
+
const out = execFileSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
144
|
+
cwd: root,
|
|
145
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
146
|
+
});
|
|
147
|
+
return out.toString("utf8").trim() === "true";
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function gitListFiles(root) {
|
|
154
|
+
const out = execFileSync("git", ["ls-files", "--cached", "--others", "--exclude-standard", "-z"], {
|
|
155
|
+
cwd: root,
|
|
156
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
157
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
158
|
+
});
|
|
159
|
+
const names = out
|
|
160
|
+
.toString("utf8")
|
|
161
|
+
.split("\0")
|
|
162
|
+
.filter((entry) => entry.length > 0);
|
|
163
|
+
// During an unresolved merge, `ls-files --cached` emits one entry per
|
|
164
|
+
// conflict stage for the same path; pack each path exactly once.
|
|
165
|
+
return [...new Set(names)];
|
|
166
|
+
}
|
|
167
|
+
function captureGitInfo(root) {
|
|
168
|
+
let commit;
|
|
169
|
+
try {
|
|
170
|
+
commit = execFileSync("git", ["rev-parse", "HEAD"], {
|
|
171
|
+
cwd: root,
|
|
172
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
173
|
+
})
|
|
174
|
+
.toString("utf8")
|
|
175
|
+
.trim();
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Unborn HEAD (git init with no commit yet): the tree is still packable
|
|
179
|
+
// and .gitignore-aware, but there is no commit to pin and dirty is
|
|
180
|
+
// meaningless without one, so git info is simply absent.
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
// Pathspec-scoped to the packed root: `git status --porcelain` without a
|
|
184
|
+
// pathspec reports the WHOLE enclosing repository, which would report a
|
|
185
|
+
// clean packed subtree as dirty whenever an unrelated sibling package in a
|
|
186
|
+
// monorepo has in-progress changes.
|
|
187
|
+
const status = execFileSync("git", ["status", "--porcelain", "--", "."], {
|
|
188
|
+
cwd: root,
|
|
189
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
190
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
191
|
+
}).toString("utf8");
|
|
192
|
+
return { commit, dirty: status.trim().length > 0 };
|
|
193
|
+
}
|
|
194
|
+
function enumerateGitTree(root, extraExclude) {
|
|
195
|
+
const entries = [];
|
|
196
|
+
for (const relPath of gitListFiles(root)) {
|
|
197
|
+
if (isPathDenylisted(relPath, extraExclude)) {
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const absolutePath = path.join(root, relPath);
|
|
201
|
+
let stat;
|
|
202
|
+
try {
|
|
203
|
+
stat = lstatSync(absolutePath);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// Staged delete: git still tracks it, but it is gone from disk.
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (stat.isDirectory()) {
|
|
210
|
+
// A nested repo or worktree boundary enumerates as a single
|
|
211
|
+
// directory-shaped entry from git ls-files; never recurse into it.
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (stat.isSymbolicLink()) {
|
|
215
|
+
entries.push({ relPath, kind: "symlink", size: stat.size });
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
if (stat.isFile()) {
|
|
219
|
+
entries.push({ relPath, kind: "file", size: stat.size });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
entries.sort(compareEntriesByRelPath);
|
|
223
|
+
return entries;
|
|
224
|
+
}
|
|
225
|
+
function walkFallbackTree(root, relDir, extraExclude, out) {
|
|
226
|
+
const absoluteDir = relDir ? path.join(root, relDir) : root;
|
|
227
|
+
const names = readdirSync(absoluteDir).sort();
|
|
228
|
+
for (const name of names) {
|
|
229
|
+
const relPath = relDir ? `${relDir}/${name}` : name;
|
|
230
|
+
if (isPathDenylisted(relPath, extraExclude)) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const absolutePath = path.join(root, relPath);
|
|
234
|
+
const stat = lstatSync(absolutePath);
|
|
235
|
+
if (stat.isDirectory()) {
|
|
236
|
+
walkFallbackTree(root, relPath, extraExclude, out);
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
if (stat.isSymbolicLink()) {
|
|
240
|
+
out.push({ relPath, kind: "symlink", size: stat.size });
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (stat.isFile()) {
|
|
244
|
+
out.push({ relPath, kind: "file", size: stat.size });
|
|
245
|
+
}
|
|
246
|
+
// Sockets, fifos, and device files are silently skipped: neither a
|
|
247
|
+
// regular file nor a symlink, so out of scope for packing.
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
function basenameOf(relPath) {
|
|
251
|
+
return relPath.slice(relPath.lastIndexOf("/") + 1);
|
|
252
|
+
}
|
|
253
|
+
function matchesBasenamePattern(basename, pattern) {
|
|
254
|
+
if (pattern.endsWith("*")) {
|
|
255
|
+
return basename.startsWith(pattern.slice(0, -1));
|
|
256
|
+
}
|
|
257
|
+
if (pattern.startsWith("*")) {
|
|
258
|
+
return basename.endsWith(pattern.slice(1));
|
|
259
|
+
}
|
|
260
|
+
return basename === pattern;
|
|
261
|
+
}
|
|
262
|
+
function isDenylistedBasename(basename) {
|
|
263
|
+
return LOCAL_TREE_DENYLIST_BASENAME_PATTERNS.some((pattern) => matchesBasenamePattern(basename, pattern));
|
|
264
|
+
}
|
|
265
|
+
function isDenylistedSegment(relPath) {
|
|
266
|
+
const segments = relPath.split("/");
|
|
267
|
+
return segments.some((segment) => LOCAL_TREE_DENYLIST_PATH_SEGMENTS.includes(segment));
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Normalize an author-supplied exclude entry to the relPath shape enumeration
|
|
271
|
+
* produces (no leading "./", no trailing "/"). Absolute paths and glob syntax
|
|
272
|
+
* are REJECTED, not silently no-op'd: an exclude the author believed in but
|
|
273
|
+
* that never matches anything is a leak vector, so unusable shapes fail
|
|
274
|
+
* closed at the packing boundary (and, for lab-config callers, already at
|
|
275
|
+
* parse time).
|
|
276
|
+
*/
|
|
277
|
+
export function normalizeExtraExcludeEntry(entry) {
|
|
278
|
+
const trimmed = entry.trim();
|
|
279
|
+
if (trimmed.startsWith("/") || /^[A-Za-z]:[\\/]/.test(trimmed)) {
|
|
280
|
+
throw new Error(`localTree.exclude entry "${trimmed}" is an absolute path; entries must be repo-relative path prefixes or basenames (e.g. "big-media" or "fixtures/huge").`);
|
|
281
|
+
}
|
|
282
|
+
if (/[*?[\]]/.test(trimmed)) {
|
|
283
|
+
throw new Error(`localTree.exclude entry "${trimmed}" uses glob syntax, which is not supported; entries match as a repo-relative path prefix or an exact basename.`);
|
|
284
|
+
}
|
|
285
|
+
let normalized = trimmed;
|
|
286
|
+
while (normalized.startsWith("./"))
|
|
287
|
+
normalized = normalized.slice(2);
|
|
288
|
+
while (normalized.endsWith("/"))
|
|
289
|
+
normalized = normalized.slice(0, -1);
|
|
290
|
+
if (normalized.length === 0) {
|
|
291
|
+
throw new Error(`localTree.exclude entry "${entry}" normalizes to an empty path.`);
|
|
292
|
+
}
|
|
293
|
+
return normalized;
|
|
294
|
+
}
|
|
295
|
+
function matchesExtraExclude(relPath, basename, extraExclude) {
|
|
296
|
+
return extraExclude.some((entry) => relPath === entry || relPath.startsWith(`${entry}/`) || basename === entry);
|
|
297
|
+
}
|
|
298
|
+
function isPathDenylisted(relPath, extraExclude) {
|
|
299
|
+
if (isDenylistedSegment(relPath)) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
const basename = basenameOf(relPath);
|
|
303
|
+
if (isDenylistedBasename(basename)) {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
return matchesExtraExclude(relPath, basename, extraExclude);
|
|
307
|
+
}
|
|
308
|
+
/** Bytewise (UTF-8) comparison, independent of locale/platform string ordering. */
|
|
309
|
+
function compareEntriesByRelPath(a, b) {
|
|
310
|
+
return Buffer.compare(Buffer.from(a.relPath, "utf8"), Buffer.from(b.relPath, "utf8"));
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* sha256 over the sorted sequence of records:
|
|
314
|
+
* files: kind\0relPath\0size\0<file bytes>\0
|
|
315
|
+
* symlinks: kind\0relPath\0<link target string>\0
|
|
316
|
+
* Symlinks are never dereferenced: only their target path string is hashed,
|
|
317
|
+
* never bytes at the target.
|
|
318
|
+
*/
|
|
319
|
+
function computeArchiveSha256(root, entries) {
|
|
320
|
+
const hash = createHash("sha256");
|
|
321
|
+
let totalBytes = 0;
|
|
322
|
+
for (const entry of entries) {
|
|
323
|
+
const absolutePath = path.join(root, entry.relPath);
|
|
324
|
+
if (entry.kind === "symlink") {
|
|
325
|
+
const target = readlinkSync(absolutePath);
|
|
326
|
+
hash.update(`symlink\0${entry.relPath}\0${target}\0`);
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
hash.update(`file\0${entry.relPath}\0${entry.size}\0`);
|
|
330
|
+
hash.update(readFileSync(absolutePath));
|
|
331
|
+
hash.update("\0");
|
|
332
|
+
totalBytes += entry.size;
|
|
333
|
+
}
|
|
334
|
+
return { archiveSha256: hash.digest("hex"), totalBytes };
|
|
335
|
+
}
|
|
336
|
+
function writeTarArchive(root, entries, archivePath) {
|
|
337
|
+
const listDir = mkdtempSync(path.join(tmpdir(), "humanish-local-tree-list-"));
|
|
338
|
+
const listFile = path.join(listDir, "files.list");
|
|
339
|
+
try {
|
|
340
|
+
writeFileSync(listFile, `${entries.map((entry) => entry.relPath).join("\0")}\0`);
|
|
341
|
+
const darwinArgs = process.platform === "darwin" ? ["--disable-copyfile", "--no-xattrs", "--no-mac-metadata"] : [];
|
|
342
|
+
// -C must precede -T: both are position-sensitive in GNU tar, and names
|
|
343
|
+
// read from -T resolve against the directory in effect at that point.
|
|
344
|
+
// bsdtar tolerates either order; GNU tar does not.
|
|
345
|
+
const args = [...darwinArgs, "-czf", archivePath, "-C", root, "--null", "-T", listFile];
|
|
346
|
+
try {
|
|
347
|
+
execFileSync("tar", args, { stdio: ["ignore", "ignore", "pipe"] });
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
throw new Error(`Failed to create the local-tree tar archive: ${tarErrorTail(error)}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
finally {
|
|
354
|
+
rmSync(listDir, { recursive: true, force: true });
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
function tarErrorTail(error) {
|
|
358
|
+
const stderr = error && typeof error === "object" && "stderr" in error && error.stderr instanceof Buffer
|
|
359
|
+
? error.stderr.toString("utf8")
|
|
360
|
+
: error instanceof Error
|
|
361
|
+
? error.message
|
|
362
|
+
: String(error);
|
|
363
|
+
return stderr.trim().slice(-400);
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=source-archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-archive.js","sourceRoot":"","sources":["../src/source-archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type StopConditionPrimitive = string | number | boolean | null;
|
|
2
|
+
export interface StopWhenAppStatePathEquals {
|
|
3
|
+
path: string;
|
|
4
|
+
equals: StopConditionPrimitive;
|
|
5
|
+
}
|
|
6
|
+
export interface StopWhenRule {
|
|
7
|
+
id?: string;
|
|
8
|
+
urlIncludes?: string;
|
|
9
|
+
urlPathEquals?: string;
|
|
10
|
+
textIncludes?: string;
|
|
11
|
+
appStatePathEquals?: StopWhenAppStatePathEquals;
|
|
12
|
+
}
|
|
13
|
+
export interface StopWhen {
|
|
14
|
+
any: StopWhenRule[];
|
|
15
|
+
}
|
|
16
|
+
export interface StopConditionObservation {
|
|
17
|
+
url?: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
appState?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface StopConditionMatch {
|
|
22
|
+
id: string;
|
|
23
|
+
ruleIndex: number;
|
|
24
|
+
kinds: string[];
|
|
25
|
+
}
|
|
26
|
+
export declare function evaluateStopWhen(stopWhen: StopWhen | undefined, observation: StopConditionObservation): StopConditionMatch | undefined;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export function evaluateStopWhen(stopWhen, observation) {
|
|
2
|
+
if (!stopWhen)
|
|
3
|
+
return undefined;
|
|
4
|
+
for (const [ruleIndex, rule] of stopWhen.any.entries()) {
|
|
5
|
+
const kinds = [];
|
|
6
|
+
if (rule.urlIncludes !== undefined) {
|
|
7
|
+
if (observation.url === undefined || !observation.url.includes(rule.urlIncludes)) {
|
|
8
|
+
continue;
|
|
9
|
+
}
|
|
10
|
+
kinds.push("urlIncludes");
|
|
11
|
+
}
|
|
12
|
+
if (rule.urlPathEquals !== undefined) {
|
|
13
|
+
if (pathOfUrl(observation.url) !== rule.urlPathEquals) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
kinds.push("urlPathEquals");
|
|
17
|
+
}
|
|
18
|
+
if (rule.textIncludes !== undefined) {
|
|
19
|
+
if (observation.text === undefined || !observation.text.includes(rule.textIncludes)) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
kinds.push("textIncludes");
|
|
23
|
+
}
|
|
24
|
+
if (rule.appStatePathEquals !== undefined) {
|
|
25
|
+
const actual = valueAtPath(observation.appState, rule.appStatePathEquals.path);
|
|
26
|
+
if (actual !== rule.appStatePathEquals.equals) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
kinds.push("appStatePathEquals");
|
|
30
|
+
}
|
|
31
|
+
if (kinds.length === 0)
|
|
32
|
+
continue;
|
|
33
|
+
return {
|
|
34
|
+
id: rule.id ?? `rule-${String(ruleIndex + 1).padStart(2, "0")}`,
|
|
35
|
+
ruleIndex,
|
|
36
|
+
kinds
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
function pathOfUrl(url) {
|
|
42
|
+
if (!url)
|
|
43
|
+
return undefined;
|
|
44
|
+
try {
|
|
45
|
+
return new URL(url, "http://humanish.local").pathname;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function valueAtPath(source, path) {
|
|
52
|
+
if (!source)
|
|
53
|
+
return undefined;
|
|
54
|
+
const parts = path.split(".").filter(Boolean);
|
|
55
|
+
let current = source;
|
|
56
|
+
for (const part of parts) {
|
|
57
|
+
if (!isRecord(current))
|
|
58
|
+
return undefined;
|
|
59
|
+
current = current[part];
|
|
60
|
+
}
|
|
61
|
+
return current;
|
|
62
|
+
}
|
|
63
|
+
function isRecord(value) {
|
|
64
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=stop-conditions.js.map
|