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.
Files changed (196) hide show
  1. package/AGENTS.md +77 -0
  2. package/CONTRIBUTING.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +435 -8
  5. package/SECURITY.md +34 -0
  6. package/dist/actor-contract.d.ts +107 -0
  7. package/dist/actor-contract.js +286 -0
  8. package/dist/actor-contract.js.map +1 -0
  9. package/dist/actor-registry.d.ts +73 -0
  10. package/dist/actor-registry.js +93 -0
  11. package/dist/actor-registry.js.map +1 -0
  12. package/dist/adapter-extension.d.ts +54 -0
  13. package/dist/adapter-extension.js +214 -0
  14. package/dist/adapter-extension.js.map +1 -0
  15. package/dist/argv.d.ts +1 -0
  16. package/dist/argv.js +8 -0
  17. package/dist/argv.js.map +1 -0
  18. package/dist/artifact-reference.d.ts +22 -0
  19. package/dist/artifact-reference.js +47 -0
  20. package/dist/artifact-reference.js.map +1 -0
  21. package/dist/browser-evidence-hygiene.d.ts +7 -0
  22. package/dist/browser-evidence-hygiene.js +40 -0
  23. package/dist/browser-evidence-hygiene.js.map +1 -0
  24. package/dist/claude-agent-sdk.d.ts +94 -0
  25. package/dist/claude-agent-sdk.js +356 -0
  26. package/dist/claude-agent-sdk.js.map +1 -0
  27. package/dist/cli.d.ts +2 -0
  28. package/dist/cli.js +5 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/codex-app-server-ui.d.ts +39 -0
  31. package/dist/codex-app-server-ui.js +327 -0
  32. package/dist/codex-app-server-ui.js.map +1 -0
  33. package/dist/codex-app-server.d.ts +141 -0
  34. package/dist/codex-app-server.js +747 -0
  35. package/dist/codex-app-server.js.map +1 -0
  36. package/dist/command-failure.d.ts +29 -0
  37. package/dist/command-failure.js +54 -0
  38. package/dist/command-failure.js.map +1 -0
  39. package/dist/computer-use-actor.d.ts +52 -0
  40. package/dist/computer-use-actor.js +48 -0
  41. package/dist/computer-use-actor.js.map +1 -0
  42. package/dist/computer-use.d.ts +232 -0
  43. package/dist/computer-use.js +615 -0
  44. package/dist/computer-use.js.map +1 -0
  45. package/dist/concurrency.d.ts +1 -0
  46. package/dist/concurrency.js +27 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/concurrent-shared-world-lab.d.ts +115 -0
  49. package/dist/concurrent-shared-world-lab.js +1092 -0
  50. package/dist/concurrent-shared-world-lab.js.map +1 -0
  51. package/dist/core/git-state.d.ts +31 -0
  52. package/dist/core/git-state.js +142 -0
  53. package/dist/core/git-state.js.map +1 -0
  54. package/dist/core/index.d.ts +4 -0
  55. package/dist/core/index.js +3 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/run-primitives.d.ts +66 -0
  58. package/dist/core/run-primitives.js +120 -0
  59. package/dist/core/run-primitives.js.map +1 -0
  60. package/dist/cua-actor-lab.d.ts +620 -0
  61. package/dist/cua-actor-lab.js +2834 -0
  62. package/dist/cua-actor-lab.js.map +1 -0
  63. package/dist/device-presets.d.ts +67 -0
  64. package/dist/device-presets.js +50 -0
  65. package/dist/device-presets.js.map +1 -0
  66. package/dist/e2b-desktop-executor.d.ts +101 -0
  67. package/dist/e2b-desktop-executor.js +309 -0
  68. package/dist/e2b-desktop-executor.js.map +1 -0
  69. package/dist/e2b-desktop-launch.d.ts +144 -0
  70. package/dist/e2b-desktop-launch.js +59 -0
  71. package/dist/e2b-desktop-launch.js.map +1 -0
  72. package/dist/e2b-detached.d.ts +53 -0
  73. package/dist/e2b-detached.js +130 -0
  74. package/dist/e2b-detached.js.map +1 -0
  75. package/dist/e2b-terminal-lab.d.ts +345 -0
  76. package/dist/e2b-terminal-lab.js +1467 -0
  77. package/dist/e2b-terminal-lab.js.map +1 -0
  78. package/dist/env-file.d.ts +14 -0
  79. package/dist/env-file.js +108 -0
  80. package/dist/env-file.js.map +1 -0
  81. package/dist/feedback.d.ts +51 -0
  82. package/dist/feedback.js +313 -0
  83. package/dist/feedback.js.map +1 -0
  84. package/dist/image-evidence.d.ts +2 -0
  85. package/dist/image-evidence.js +33 -0
  86. package/dist/image-evidence.js.map +1 -0
  87. package/dist/index.d.ts +63 -0
  88. package/dist/index.js +33 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/init-templates.d.ts +12 -0
  91. package/dist/init-templates.js +369 -0
  92. package/dist/init-templates.js.map +1 -0
  93. package/dist/init.d.ts +26 -0
  94. package/dist/init.js +343 -0
  95. package/dist/init.js.map +1 -0
  96. package/dist/lab-app-runner.d.ts +78 -0
  97. package/dist/lab-app-runner.js +403 -0
  98. package/dist/lab-app-runner.js.map +1 -0
  99. package/dist/lab-config.d.ts +578 -0
  100. package/dist/lab-config.js +1751 -0
  101. package/dist/lab-config.js.map +1 -0
  102. package/dist/lab-engine.d.ts +77 -0
  103. package/dist/lab-engine.js +216 -0
  104. package/dist/lab-engine.js.map +1 -0
  105. package/dist/lab-preflight.d.ts +67 -0
  106. package/dist/lab-preflight.js +385 -0
  107. package/dist/lab-preflight.js.map +1 -0
  108. package/dist/labs.d.ts +53 -0
  109. package/dist/labs.js +176 -0
  110. package/dist/labs.js.map +1 -0
  111. package/dist/observer-assets.d.ts +2 -0
  112. package/dist/observer-assets.js +2630 -0
  113. package/dist/observer-assets.js.map +1 -0
  114. package/dist/observer-data.d.ts +63 -0
  115. package/dist/observer-data.js +145 -0
  116. package/dist/observer-data.js.map +1 -0
  117. package/dist/observer-static.d.ts +39 -0
  118. package/dist/observer-static.js +192 -0
  119. package/dist/observer-static.js.map +1 -0
  120. package/dist/observer.d.ts +46 -0
  121. package/dist/observer.js +353 -0
  122. package/dist/observer.js.map +1 -0
  123. package/dist/openai-responses-cu.d.ts +113 -0
  124. package/dist/openai-responses-cu.js +531 -0
  125. package/dist/openai-responses-cu.js.map +1 -0
  126. package/dist/oss-lab.d.ts +52 -0
  127. package/dist/oss-lab.js +299 -0
  128. package/dist/oss-lab.js.map +1 -0
  129. package/dist/oss-meta-lab-scoring.d.ts +15 -0
  130. package/dist/oss-meta-lab-scoring.js +145 -0
  131. package/dist/oss-meta-lab-scoring.js.map +1 -0
  132. package/dist/oss-meta-lab.d.ts +279 -0
  133. package/dist/oss-meta-lab.js +4889 -0
  134. package/dist/oss-meta-lab.js.map +1 -0
  135. package/dist/oss-remote-telemetry.d.ts +77 -0
  136. package/dist/oss-remote-telemetry.js +403 -0
  137. package/dist/oss-remote-telemetry.js.map +1 -0
  138. package/dist/persona.d.ts +35 -0
  139. package/dist/persona.js +133 -0
  140. package/dist/persona.js.map +1 -0
  141. package/dist/pi-agent-core.d.ts +77 -0
  142. package/dist/pi-agent-core.js +203 -0
  143. package/dist/pi-agent-core.js.map +1 -0
  144. package/dist/program.d.ts +54 -0
  145. package/dist/program.js +2347 -0
  146. package/dist/program.js.map +1 -0
  147. package/dist/redaction.d.ts +90 -0
  148. package/dist/redaction.js +292 -0
  149. package/dist/redaction.js.map +1 -0
  150. package/dist/run.d.ts +784 -0
  151. package/dist/run.js +4555 -0
  152. package/dist/run.js.map +1 -0
  153. package/dist/scripted-browser-actor.d.ts +294 -0
  154. package/dist/scripted-browser-actor.js +1286 -0
  155. package/dist/scripted-browser-actor.js.map +1 -0
  156. package/dist/scripted-browser-lab.d.ts +107 -0
  157. package/dist/scripted-browser-lab.js +738 -0
  158. package/dist/scripted-browser-lab.js.map +1 -0
  159. package/dist/shared-world-lab.d.ts +208 -0
  160. package/dist/shared-world-lab.js +1048 -0
  161. package/dist/shared-world-lab.js.map +1 -0
  162. package/dist/source-archive.d.ts +82 -0
  163. package/dist/source-archive.js +365 -0
  164. package/dist/source-archive.js.map +1 -0
  165. package/dist/stop-conditions.d.ts +26 -0
  166. package/dist/stop-conditions.js +66 -0
  167. package/dist/stop-conditions.js.map +1 -0
  168. package/dist/terminal-agent-actor.d.ts +36 -0
  169. package/dist/terminal-agent-actor.js +23 -0
  170. package/dist/terminal-agent-actor.js.map +1 -0
  171. package/docs/architecture/actor-contract.md +431 -0
  172. package/docs/architecture/github-feedback-loop.md +189 -0
  173. package/docs/architecture/local-codex-tui-actor.md +213 -0
  174. package/docs/architecture/observer.md +118 -0
  175. package/docs/architecture/oss-lab-poc.md +242 -0
  176. package/docs/architecture/project-layout.md +166 -0
  177. package/docs/architecture/state-driven-executor.md +203 -0
  178. package/docs/architecture/terminal-product-lane.md +148 -0
  179. package/docs/contracts/adapter-fixtures.md +80 -0
  180. package/docs/contracts/core.md +71 -0
  181. package/docs/contracts/feedback.md +145 -0
  182. package/docs/contracts/policy.md +305 -0
  183. package/docs/contracts/run-bundle.md +358 -0
  184. package/docs/contracts/schemas.md +984 -0
  185. package/docs/goals/current.md +409 -0
  186. package/docs/principles/invariants-and-defaults.md +135 -0
  187. package/docs/principles/self-driving-harness.md +129 -0
  188. package/docs/product/open-source-install-experience.md +229 -0
  189. package/docs/ramp/README.md +200 -0
  190. package/docs/release/open-source-readiness.md +208 -0
  191. package/docs/release/public-readiness-standard.md +205 -0
  192. package/docs/roadmap/world-class-open-source-v0.md +311 -0
  193. package/package.json +102 -8
  194. package/skills/humanish/SKILL.md +244 -0
  195. package/skills/humanish/agents/openai.yaml +7 -0
  196. 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