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.
Files changed (205) hide show
  1. package/AGENTS.md +77 -0
  2. package/CONTRIBUTING.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +437 -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 +363 -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 +357 -0
  32. package/dist/codex-app-server-ui.js.map +1 -0
  33. package/dist/codex-app-server.d.ts +144 -0
  34. package/dist/codex-app-server.js +754 -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 +1094 -0
  50. package/dist/concurrent-shared-world-lab.js.map +1 -0
  51. package/dist/core/git-state.d.ts +33 -0
  52. package/dist/core/git-state.js +277 -0
  53. package/dist/core/git-state.js.map +1 -0
  54. package/dist/core/git-workspace.d.ts +31 -0
  55. package/dist/core/git-workspace.js +447 -0
  56. package/dist/core/git-workspace.js.map +1 -0
  57. package/dist/core/index.d.ts +4 -0
  58. package/dist/core/index.js +3 -0
  59. package/dist/core/index.js.map +1 -0
  60. package/dist/core/run-primitives.d.ts +66 -0
  61. package/dist/core/run-primitives.js +120 -0
  62. package/dist/core/run-primitives.js.map +1 -0
  63. package/dist/cua-actor-lab.d.ts +621 -0
  64. package/dist/cua-actor-lab.js +2845 -0
  65. package/dist/cua-actor-lab.js.map +1 -0
  66. package/dist/device-presets.d.ts +67 -0
  67. package/dist/device-presets.js +50 -0
  68. package/dist/device-presets.js.map +1 -0
  69. package/dist/e2b-desktop-executor.d.ts +101 -0
  70. package/dist/e2b-desktop-executor.js +309 -0
  71. package/dist/e2b-desktop-executor.js.map +1 -0
  72. package/dist/e2b-desktop-launch.d.ts +144 -0
  73. package/dist/e2b-desktop-launch.js +59 -0
  74. package/dist/e2b-desktop-launch.js.map +1 -0
  75. package/dist/e2b-detached.d.ts +53 -0
  76. package/dist/e2b-detached.js +130 -0
  77. package/dist/e2b-detached.js.map +1 -0
  78. package/dist/e2b-terminal-lab.d.ts +345 -0
  79. package/dist/e2b-terminal-lab.js +1532 -0
  80. package/dist/e2b-terminal-lab.js.map +1 -0
  81. package/dist/env-file.d.ts +14 -0
  82. package/dist/env-file.js +108 -0
  83. package/dist/env-file.js.map +1 -0
  84. package/dist/feedback.d.ts +51 -0
  85. package/dist/feedback.js +351 -0
  86. package/dist/feedback.js.map +1 -0
  87. package/dist/image-evidence.d.ts +2 -0
  88. package/dist/image-evidence.js +33 -0
  89. package/dist/image-evidence.js.map +1 -0
  90. package/dist/index.d.ts +63 -0
  91. package/dist/index.js +33 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/init-templates.d.ts +12 -0
  94. package/dist/init-templates.js +369 -0
  95. package/dist/init-templates.js.map +1 -0
  96. package/dist/init.d.ts +26 -0
  97. package/dist/init.js +429 -0
  98. package/dist/init.js.map +1 -0
  99. package/dist/lab-app-runner.d.ts +78 -0
  100. package/dist/lab-app-runner.js +403 -0
  101. package/dist/lab-app-runner.js.map +1 -0
  102. package/dist/lab-config.d.ts +583 -0
  103. package/dist/lab-config.js +1789 -0
  104. package/dist/lab-config.js.map +1 -0
  105. package/dist/lab-engine.d.ts +77 -0
  106. package/dist/lab-engine.js +216 -0
  107. package/dist/lab-engine.js.map +1 -0
  108. package/dist/lab-preflight.d.ts +67 -0
  109. package/dist/lab-preflight.js +385 -0
  110. package/dist/lab-preflight.js.map +1 -0
  111. package/dist/labs.d.ts +53 -0
  112. package/dist/labs.js +382 -0
  113. package/dist/labs.js.map +1 -0
  114. package/dist/observer-assets.d.ts +2 -0
  115. package/dist/observer-assets.js +2630 -0
  116. package/dist/observer-assets.js.map +1 -0
  117. package/dist/observer-data.d.ts +63 -0
  118. package/dist/observer-data.js +145 -0
  119. package/dist/observer-data.js.map +1 -0
  120. package/dist/observer-static.d.ts +39 -0
  121. package/dist/observer-static.js +306 -0
  122. package/dist/observer-static.js.map +1 -0
  123. package/dist/observer.d.ts +46 -0
  124. package/dist/observer.js +550 -0
  125. package/dist/observer.js.map +1 -0
  126. package/dist/openai-responses-cu.d.ts +113 -0
  127. package/dist/openai-responses-cu.js +545 -0
  128. package/dist/openai-responses-cu.js.map +1 -0
  129. package/dist/oss-lab.d.ts +52 -0
  130. package/dist/oss-lab.js +344 -0
  131. package/dist/oss-lab.js.map +1 -0
  132. package/dist/oss-meta-lab-scoring.d.ts +15 -0
  133. package/dist/oss-meta-lab-scoring.js +145 -0
  134. package/dist/oss-meta-lab-scoring.js.map +1 -0
  135. package/dist/oss-meta-lab.d.ts +277 -0
  136. package/dist/oss-meta-lab.js +4529 -0
  137. package/dist/oss-meta-lab.js.map +1 -0
  138. package/dist/oss-remote-telemetry.d.ts +77 -0
  139. package/dist/oss-remote-telemetry.js +403 -0
  140. package/dist/oss-remote-telemetry.js.map +1 -0
  141. package/dist/persona.d.ts +35 -0
  142. package/dist/persona.js +133 -0
  143. package/dist/persona.js.map +1 -0
  144. package/dist/pi-agent-core.d.ts +77 -0
  145. package/dist/pi-agent-core.js +203 -0
  146. package/dist/pi-agent-core.js.map +1 -0
  147. package/dist/program.d.ts +54 -0
  148. package/dist/program.js +2349 -0
  149. package/dist/program.js.map +1 -0
  150. package/dist/redaction.d.ts +90 -0
  151. package/dist/redaction.js +292 -0
  152. package/dist/redaction.js.map +1 -0
  153. package/dist/run-paths.d.ts +56 -0
  154. package/dist/run-paths.js +340 -0
  155. package/dist/run-paths.js.map +1 -0
  156. package/dist/run.d.ts +794 -0
  157. package/dist/run.js +4844 -0
  158. package/dist/run.js.map +1 -0
  159. package/dist/scripted-browser-actor.d.ts +297 -0
  160. package/dist/scripted-browser-actor.js +1399 -0
  161. package/dist/scripted-browser-actor.js.map +1 -0
  162. package/dist/scripted-browser-lab.d.ts +107 -0
  163. package/dist/scripted-browser-lab.js +788 -0
  164. package/dist/scripted-browser-lab.js.map +1 -0
  165. package/dist/selected-output-paths.d.ts +49 -0
  166. package/dist/selected-output-paths.js +354 -0
  167. package/dist/selected-output-paths.js.map +1 -0
  168. package/dist/shared-world-lab.d.ts +208 -0
  169. package/dist/shared-world-lab.js +1049 -0
  170. package/dist/shared-world-lab.js.map +1 -0
  171. package/dist/source-archive.d.ts +82 -0
  172. package/dist/source-archive.js +408 -0
  173. package/dist/source-archive.js.map +1 -0
  174. package/dist/stop-conditions.d.ts +26 -0
  175. package/dist/stop-conditions.js +66 -0
  176. package/dist/stop-conditions.js.map +1 -0
  177. package/dist/terminal-agent-actor.d.ts +36 -0
  178. package/dist/terminal-agent-actor.js +23 -0
  179. package/dist/terminal-agent-actor.js.map +1 -0
  180. package/docs/architecture/actor-contract.md +431 -0
  181. package/docs/architecture/github-feedback-loop.md +189 -0
  182. package/docs/architecture/local-codex-tui-actor.md +213 -0
  183. package/docs/architecture/observer.md +118 -0
  184. package/docs/architecture/oss-lab-poc.md +250 -0
  185. package/docs/architecture/project-layout.md +166 -0
  186. package/docs/architecture/state-driven-executor.md +203 -0
  187. package/docs/architecture/terminal-product-lane.md +148 -0
  188. package/docs/contracts/adapter-fixtures.md +80 -0
  189. package/docs/contracts/core.md +71 -0
  190. package/docs/contracts/feedback.md +145 -0
  191. package/docs/contracts/policy.md +311 -0
  192. package/docs/contracts/run-bundle.md +358 -0
  193. package/docs/contracts/schemas.md +984 -0
  194. package/docs/goals/current.md +428 -0
  195. package/docs/principles/invariants-and-defaults.md +135 -0
  196. package/docs/principles/self-driving-harness.md +129 -0
  197. package/docs/product/open-source-install-experience.md +237 -0
  198. package/docs/ramp/README.md +207 -0
  199. package/docs/release/open-source-readiness.md +208 -0
  200. package/docs/release/public-readiness-standard.md +205 -0
  201. package/docs/roadmap/world-class-open-source-v0.md +311 -0
  202. package/package.json +102 -8
  203. package/skills/humanish/SKILL.md +244 -0
  204. package/skills/humanish/agents/openai.yaml +7 -0
  205. package/index.js +0 -1
package/dist/labs.js ADDED
@@ -0,0 +1,382 @@
1
+ import { constants } from "node:fs";
2
+ import { lstat, open, readdir, realpath } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { parse } from "yaml";
5
+ import { parseLabConfig } from "./lab-config.js";
6
+ import { assertPreparedSelectedOutputDirectory, assertSafeOutputPathSegment, prepareSelectedOutputDirectory, readContainedRegularFile } from "./selected-output-paths.js";
7
+ export { LAB_CONFIG_SCHEMA } from "./lab-config.js";
8
+ export const LAB_LIST_SCHEMA = "humanish.lab-list.v1";
9
+ export const LAB_INSPECT_SCHEMA = "humanish.lab-inspect.v1";
10
+ const committedLabsDir = path.join("humanish", "labs");
11
+ const ignoredLabsDirs = [
12
+ path.join(".humanish", "labs"),
13
+ path.join(".humanish", "local", "labs")
14
+ ];
15
+ export async function resolveLabManifest(cwd, lab) {
16
+ const resolvedCwd = path.resolve(cwd);
17
+ const warnings = [];
18
+ const projectRoot = await bindProjectRoot(resolvedCwd);
19
+ if (!projectRoot) {
20
+ return invalidLab({ cwd: resolvedCwd, lab, warnings }, "Project root failed containment validation.");
21
+ }
22
+ if (labLooksLikePath(lab)) {
23
+ const requestedPath = path.resolve(resolvedCwd, lab);
24
+ const read = await readExplicitManifest(projectRoot, requestedPath);
25
+ if (read.status === "missing") {
26
+ return labNotFound(resolvedCwd, lab, warnings);
27
+ }
28
+ if (read.status === "unsafe") {
29
+ return invalidLab({ cwd: resolvedCwd, lab, warnings }, read.message);
30
+ }
31
+ return parseResolvedLab({
32
+ cwd: resolvedCwd,
33
+ lab,
34
+ origin: "explicit",
35
+ path: requestedPath,
36
+ warnings,
37
+ contents: read.contents
38
+ });
39
+ }
40
+ const candidates = [
41
+ { origin: "committed", relativePath: path.join(committedLabsDir, `${lab}.yaml`) },
42
+ { origin: "committed", relativePath: path.join(committedLabsDir, `${lab}.yml`) },
43
+ ...ignoredLabsDirs.flatMap((dir) => [
44
+ { origin: "ignored", relativePath: path.join(dir, `${lab}.yaml`) },
45
+ { origin: "ignored", relativePath: path.join(dir, `${lab}.yml`) }
46
+ ])
47
+ ];
48
+ for (const candidate of candidates) {
49
+ const requestedPath = path.join(resolvedCwd, candidate.relativePath);
50
+ const read = await readManagedManifest(projectRoot, candidate.relativePath);
51
+ if (read.status === "missing") {
52
+ continue;
53
+ }
54
+ if (read.status === "unsafe") {
55
+ return invalidLab({ cwd: resolvedCwd, lab, warnings }, read.message);
56
+ }
57
+ return parseResolvedLab({
58
+ cwd: resolvedCwd,
59
+ lab,
60
+ origin: candidate.origin,
61
+ path: requestedPath,
62
+ warnings,
63
+ contents: read.contents
64
+ });
65
+ }
66
+ return labNotFound(resolvedCwd, lab, warnings);
67
+ }
68
+ export async function listLabManifests(cwd) {
69
+ const resolvedCwd = path.resolve(cwd);
70
+ const warnings = [];
71
+ const labs = new Map();
72
+ const projectRoot = await bindProjectRoot(resolvedCwd);
73
+ if (!projectRoot) {
74
+ return {
75
+ schema: LAB_LIST_SCHEMA,
76
+ ok: true,
77
+ cwd: resolvedCwd,
78
+ labs: [],
79
+ warnings: ["Project root failed containment validation; managed lab manifests were skipped."]
80
+ };
81
+ }
82
+ const dirs = [
83
+ { origin: "committed", relativeDir: committedLabsDir },
84
+ ...ignoredLabsDirs.map((relativeDir) => ({ origin: "ignored", relativeDir }))
85
+ ];
86
+ for (const entry of dirs) {
87
+ const directory = await bindManagedDirectory(projectRoot, entry.relativeDir);
88
+ if (directory.status === "missing") {
89
+ continue;
90
+ }
91
+ if (directory.status === "unsafe") {
92
+ warnings.push(`${entry.relativeDir}: ${directory.message}`);
93
+ continue;
94
+ }
95
+ let names;
96
+ try {
97
+ names = await readdir(directory.binding.physicalPath);
98
+ await assertManagedDirectoryBinding(projectRoot, entry.relativeDir, directory.binding);
99
+ }
100
+ catch {
101
+ warnings.push(`${entry.relativeDir}: unsafe managed lab directory; skipped.`);
102
+ continue;
103
+ }
104
+ for (const name of names.filter((value) => value.endsWith(".yaml") || value.endsWith(".yml"))) {
105
+ let relativePath;
106
+ try {
107
+ assertSafeOutputPathSegment(name, "Lab manifest name");
108
+ relativePath = path.join(entry.relativeDir, name);
109
+ }
110
+ catch {
111
+ warnings.push(`${entry.relativeDir}: unsafe lab manifest name; skipped.`);
112
+ continue;
113
+ }
114
+ const requestedPath = path.join(resolvedCwd, relativePath);
115
+ const read = await readManagedManifest(projectRoot, relativePath);
116
+ if (read.status !== "ok") {
117
+ warnings.push(`${relativeToCwd(resolvedCwd, requestedPath)}: ${read.status === "unsafe" ? read.message : "manifest changed while it was listed; skipped."}`);
118
+ continue;
119
+ }
120
+ const parsed = parseResolvedLab({
121
+ cwd: resolvedCwd,
122
+ lab: name.replace(/\.(?:ya?ml)$/i, ""),
123
+ origin: entry.origin,
124
+ path: requestedPath,
125
+ warnings: [],
126
+ contents: read.contents
127
+ });
128
+ if (!parsed.ok) {
129
+ warnings.push(`${relativeToCwd(resolvedCwd, requestedPath)}: ${parsed.error.message}`);
130
+ continue;
131
+ }
132
+ const key = `${parsed.config.id}:${entry.origin}:${relativeToCwd(resolvedCwd, requestedPath)}`;
133
+ labs.set(key, {
134
+ id: parsed.config.id,
135
+ source: parsed.config.subject.source,
136
+ origin: entry.origin,
137
+ path: relativeToCwd(resolvedCwd, requestedPath),
138
+ ...(parsed.config.title ? { title: parsed.config.title } : {})
139
+ });
140
+ }
141
+ }
142
+ return {
143
+ schema: LAB_LIST_SCHEMA,
144
+ ok: true,
145
+ cwd: resolvedCwd,
146
+ labs: [...labs.values()].sort((left, right) => `${left.origin}:${left.id}`.localeCompare(`${right.origin}:${right.id}`)),
147
+ warnings
148
+ };
149
+ }
150
+ export async function inspectLabManifest(cwd, lab) {
151
+ const resolved = await resolveLabManifest(cwd, lab);
152
+ if (!resolved.ok) {
153
+ return {
154
+ schema: LAB_INSPECT_SCHEMA,
155
+ ok: false,
156
+ cwd: resolved.cwd,
157
+ lab,
158
+ error: resolved.error,
159
+ warnings: resolved.warnings
160
+ };
161
+ }
162
+ return {
163
+ schema: LAB_INSPECT_SCHEMA,
164
+ ok: true,
165
+ cwd: path.resolve(cwd),
166
+ lab,
167
+ config: resolved.config,
168
+ origin: resolved.origin,
169
+ path: resolved.path,
170
+ warnings: resolved.warnings
171
+ };
172
+ }
173
+ function parseResolvedLab(args) {
174
+ let raw;
175
+ try {
176
+ raw = parse(args.contents);
177
+ }
178
+ catch (error) {
179
+ return invalidLab(args, error instanceof Error ? error.message : "Lab YAML could not be parsed.");
180
+ }
181
+ const parsed = parseLabConfig(raw);
182
+ if (!parsed.ok) {
183
+ return invalidLab(args, parsed.error.message);
184
+ }
185
+ const warnings = [...args.warnings, ...parsed.warnings];
186
+ if (args.path.endsWith(".yml")) {
187
+ warnings.push("Prefer .yaml for Humanish-authored lab source; .yml is accepted for compatibility only.");
188
+ }
189
+ return {
190
+ ok: true,
191
+ config: parsed.config,
192
+ origin: args.origin,
193
+ path: relativeToCwd(args.cwd, args.path),
194
+ warnings
195
+ };
196
+ }
197
+ async function bindProjectRoot(cwd) {
198
+ try {
199
+ const lexical = await lstat(cwd);
200
+ if (!lexical.isDirectory() && !lexical.isSymbolicLink()) {
201
+ return null;
202
+ }
203
+ return await prepareSelectedOutputDirectory(path.dirname(cwd), cwd);
204
+ }
205
+ catch {
206
+ return null;
207
+ }
208
+ }
209
+ async function readManagedManifest(projectRoot, relativePath) {
210
+ const inspected = await inspectManagedPath(projectRoot, relativePath, "file");
211
+ if (inspected.status !== "ok") {
212
+ return inspected;
213
+ }
214
+ const contents = await readContainedRegularFile(projectRoot, relativePath.replace(/\\/g, "/"));
215
+ if (!contents) {
216
+ return { status: "unsafe", message: "Managed lab manifest changed or failed containment validation." };
217
+ }
218
+ return { status: "ok", contents: contents.toString("utf8") };
219
+ }
220
+ async function readExplicitManifest(projectRoot, requestedPath) {
221
+ try {
222
+ await assertPreparedSelectedOutputDirectory(projectRoot);
223
+ try {
224
+ await lstat(requestedPath);
225
+ }
226
+ catch (error) {
227
+ if (isNodeError(error) && error.code === "ENOENT") {
228
+ return { status: "missing" };
229
+ }
230
+ throw error;
231
+ }
232
+ const physicalPath = await realpath(requestedPath);
233
+ const before = await lstat(physicalPath, { bigint: true });
234
+ if (!before.isFile() || before.isSymbolicLink() || before.nlink !== 1n) {
235
+ return { status: "unsafe", message: "Explicit lab manifest must resolve to a single-link regular file." };
236
+ }
237
+ const handle = await open(physicalPath, constants.O_RDONLY | constants.O_NOFOLLOW);
238
+ try {
239
+ const opened = await handle.stat({ bigint: true });
240
+ if (!opened.isFile()
241
+ || opened.nlink !== 1n
242
+ || opened.dev !== before.dev
243
+ || opened.ino !== before.ino) {
244
+ return { status: "unsafe", message: "Explicit lab manifest changed before it could be read safely." };
245
+ }
246
+ const contents = await handle.readFile();
247
+ const [currentPhysicalPath, after] = await Promise.all([
248
+ realpath(requestedPath),
249
+ lstat(physicalPath, { bigint: true })
250
+ ]);
251
+ await assertPreparedSelectedOutputDirectory(projectRoot);
252
+ if (currentPhysicalPath !== physicalPath
253
+ || !after.isFile()
254
+ || after.isSymbolicLink()
255
+ || after.nlink !== 1n
256
+ || after.dev !== before.dev
257
+ || after.ino !== before.ino) {
258
+ return { status: "unsafe", message: "Explicit lab manifest changed while it was being read." };
259
+ }
260
+ return { status: "ok", contents: contents.toString("utf8") };
261
+ }
262
+ finally {
263
+ await handle.close();
264
+ }
265
+ }
266
+ catch {
267
+ return { status: "unsafe", message: "Explicit lab manifest failed containment validation." };
268
+ }
269
+ }
270
+ async function bindManagedDirectory(projectRoot, relativePath) {
271
+ const inspected = await inspectManagedPath(projectRoot, relativePath, "directory");
272
+ if (inspected.status !== "ok") {
273
+ return inspected;
274
+ }
275
+ return {
276
+ status: "ok",
277
+ binding: {
278
+ birthtimeNs: inspected.birthtimeNs,
279
+ dev: inspected.dev,
280
+ ino: inspected.ino,
281
+ physicalPath: inspected.physicalPath
282
+ }
283
+ };
284
+ }
285
+ async function inspectManagedPath(projectRoot, relativePath, expectedKind) {
286
+ try {
287
+ await assertPreparedSelectedOutputDirectory(projectRoot);
288
+ const segments = relativePath.replace(/\\/g, "/").split("/");
289
+ let current = projectRoot.physicalPath;
290
+ for (const [index, segment] of segments.entries()) {
291
+ assertSafeOutputPathSegment(segment, "Managed lab path segment");
292
+ current = path.join(current, segment);
293
+ let stats;
294
+ try {
295
+ stats = await lstat(current, { bigint: true });
296
+ }
297
+ catch (error) {
298
+ if (isNodeError(error) && error.code === "ENOENT") {
299
+ return { status: "missing" };
300
+ }
301
+ throw error;
302
+ }
303
+ const leaf = index === segments.length - 1;
304
+ if (stats.isSymbolicLink()) {
305
+ return { status: "unsafe", message: "Managed lab paths must not contain symbolic links." };
306
+ }
307
+ if (!leaf && !stats.isDirectory()) {
308
+ return { status: "unsafe", message: "Managed lab path parents must be directories." };
309
+ }
310
+ if (leaf && expectedKind === "directory" && !stats.isDirectory()) {
311
+ return { status: "unsafe", message: "Managed lab directory has an unsafe file type." };
312
+ }
313
+ if (leaf && expectedKind === "file" && (!stats.isFile() || stats.nlink !== 1n)) {
314
+ return { status: "unsafe", message: "Managed lab manifest must be a single-link regular file." };
315
+ }
316
+ if (leaf) {
317
+ await assertPreparedSelectedOutputDirectory(projectRoot);
318
+ return {
319
+ status: "ok",
320
+ birthtimeNs: stats.birthtimeNs,
321
+ dev: stats.dev,
322
+ ino: stats.ino,
323
+ physicalPath: current
324
+ };
325
+ }
326
+ }
327
+ }
328
+ catch {
329
+ return { status: "unsafe", message: "Managed lab path failed containment validation." };
330
+ }
331
+ return { status: "missing" };
332
+ }
333
+ async function assertManagedDirectoryBinding(projectRoot, relativePath, binding) {
334
+ await assertPreparedSelectedOutputDirectory(projectRoot);
335
+ const current = await inspectManagedPath(projectRoot, relativePath, "directory");
336
+ if (current.status !== "ok"
337
+ || current.physicalPath !== binding.physicalPath
338
+ || current.birthtimeNs !== binding.birthtimeNs
339
+ || current.dev !== binding.dev
340
+ || current.ino !== binding.ino) {
341
+ throw new Error("Managed lab directory identity changed after it was bound.");
342
+ }
343
+ }
344
+ function invalidLab(args, message) {
345
+ return {
346
+ ok: false,
347
+ cwd: args.cwd,
348
+ lab: args.lab,
349
+ error: {
350
+ code: "HUMANISH_LAB_INVALID",
351
+ message
352
+ },
353
+ warnings: args.warnings
354
+ };
355
+ }
356
+ function labNotFound(cwd, lab, warnings) {
357
+ return {
358
+ ok: false,
359
+ cwd,
360
+ lab,
361
+ error: {
362
+ code: "HUMANISH_LAB_NOT_FOUND",
363
+ message: `Lab not found: ${lab}. Look in humanish/labs/ or pass a .yaml path.`
364
+ },
365
+ warnings
366
+ };
367
+ }
368
+ function labLooksLikePath(lab) {
369
+ return lab.endsWith(".yaml")
370
+ || lab.endsWith(".yml")
371
+ || lab.includes("/")
372
+ || lab.includes("\\")
373
+ || lab.startsWith(".");
374
+ }
375
+ function relativeToCwd(cwd, filePath) {
376
+ const relative = path.relative(cwd, filePath);
377
+ return relative && !relative.startsWith("..") ? relative : filePath;
378
+ }
379
+ function isNodeError(error) {
380
+ return error instanceof Error && "code" in error;
381
+ }
382
+ //# sourceMappingURL=labs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labs.js","sourceRoot":"","sources":["../src/labs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function observerCss(): string;
2
+ export declare function observerClientJs(): string;