humanish 0.15.0 → 0.15.2

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 (72) hide show
  1. package/README.md +33 -31
  2. package/dist/claude-agent-sdk.js +14 -7
  3. package/dist/claude-agent-sdk.js.map +1 -1
  4. package/dist/codex-app-server-ui.d.ts +1 -1
  5. package/dist/codex-app-server-ui.js +69 -39
  6. package/dist/codex-app-server-ui.js.map +1 -1
  7. package/dist/codex-app-server.d.ts +3 -0
  8. package/dist/codex-app-server.js +15 -8
  9. package/dist/codex-app-server.js.map +1 -1
  10. package/dist/concurrent-shared-world-lab.js +18 -16
  11. package/dist/concurrent-shared-world-lab.js.map +1 -1
  12. package/dist/core/git-state.d.ts +2 -0
  13. package/dist/core/git-state.js +152 -17
  14. package/dist/core/git-state.js.map +1 -1
  15. package/dist/core/git-workspace.d.ts +31 -0
  16. package/dist/core/git-workspace.js +447 -0
  17. package/dist/core/git-workspace.js.map +1 -0
  18. package/dist/cua-actor-lab.d.ts +3 -2
  19. package/dist/cua-actor-lab.js +34 -23
  20. package/dist/cua-actor-lab.js.map +1 -1
  21. package/dist/e2b-terminal-lab.js +111 -46
  22. package/dist/e2b-terminal-lab.js.map +1 -1
  23. package/dist/feedback.js +139 -101
  24. package/dist/feedback.js.map +1 -1
  25. package/dist/init.d.ts +1 -1
  26. package/dist/init.js +108 -22
  27. package/dist/init.js.map +1 -1
  28. package/dist/lab-config.d.ts +5 -0
  29. package/dist/lab-config.js +38 -0
  30. package/dist/lab-config.js.map +1 -1
  31. package/dist/labs.js +258 -52
  32. package/dist/labs.js.map +1 -1
  33. package/dist/observer-assets.js +3 -2
  34. package/dist/observer-assets.js.map +1 -1
  35. package/dist/observer-static.js +131 -17
  36. package/dist/observer-static.js.map +1 -1
  37. package/dist/observer.js +263 -66
  38. package/dist/observer.js.map +1 -1
  39. package/dist/openai-responses-cu.js +18 -4
  40. package/dist/openai-responses-cu.js.map +1 -1
  41. package/dist/oss-lab.js +59 -14
  42. package/dist/oss-lab.js.map +1 -1
  43. package/dist/oss-meta-lab.d.ts +2 -4
  44. package/dist/oss-meta-lab.js +117 -477
  45. package/dist/oss-meta-lab.js.map +1 -1
  46. package/dist/program.js +23 -21
  47. package/dist/program.js.map +1 -1
  48. package/dist/run-paths.d.ts +56 -0
  49. package/dist/run-paths.js +340 -0
  50. package/dist/run-paths.js.map +1 -0
  51. package/dist/run.d.ts +14 -4
  52. package/dist/run.js +595 -306
  53. package/dist/run.js.map +1 -1
  54. package/dist/scripted-browser-actor.d.ts +7 -4
  55. package/dist/scripted-browser-actor.js +154 -41
  56. package/dist/scripted-browser-actor.js.map +1 -1
  57. package/dist/scripted-browser-lab.js +95 -45
  58. package/dist/scripted-browser-lab.js.map +1 -1
  59. package/dist/selected-output-paths.d.ts +49 -0
  60. package/dist/selected-output-paths.js +354 -0
  61. package/dist/selected-output-paths.js.map +1 -0
  62. package/dist/shared-world-lab.js +13 -12
  63. package/dist/shared-world-lab.js.map +1 -1
  64. package/dist/source-archive.js +44 -1
  65. package/dist/source-archive.js.map +1 -1
  66. package/docs/architecture/oss-lab-poc.md +8 -0
  67. package/docs/assets/humanish-observer-hero.png +0 -0
  68. package/docs/contracts/policy.md +7 -1
  69. package/docs/goals/current.md +20 -1
  70. package/docs/product/open-source-install-experience.md +9 -1
  71. package/docs/ramp/README.md +14 -7
  72. package/package.json +1 -1
@@ -1,9 +1,26 @@
1
1
  import { spawn } from "node:child_process";
2
+ import os from "node:os";
3
+ import { inspectVerifiedGitWorkspace } from "./git-workspace.js";
2
4
  export const GIT_STATE_SCHEMA = "humanish.git-state.v1";
5
+ const DEFAULT_GIT_COMMAND_TIMEOUT_MS = 15_000;
3
6
  export async function captureGitState(cwd, options = {}) {
4
7
  const capturedAt = toIsoString(options.capturedAt ?? new Date());
5
- const runner = options.runner ?? runGitCommand;
6
- const inside = await runner(["rev-parse", "--is-inside-work-tree"], cwd);
8
+ const inspection = await inspectVerifiedGitWorkspace(cwd);
9
+ if (inspection.status === "unsafe") {
10
+ return unavailableState(capturedAt, inspection.note);
11
+ }
12
+ if (inspection.status === "missing") {
13
+ return missingState(capturedAt);
14
+ }
15
+ const commandTimeoutMs = normalizeCommandTimeout(options.commandTimeoutMs);
16
+ const runner = options.runner
17
+ ? (args, commandCwd) => runGitRunnerWithDeadline(options.runner, args, commandCwd, commandTimeoutMs)
18
+ : (args) => runGitCommand(args, inspection.workspace, commandTimeoutMs);
19
+ const commandCwd = inspection.workspace.worktreeRoot;
20
+ const inside = await runner(["rev-parse", "--is-inside-work-tree"], commandCwd);
21
+ if (inside.timedOut) {
22
+ return unavailableState(capturedAt, "Git work-tree detection timed out.");
23
+ }
7
24
  if (inside.exitCode === null) {
8
25
  return unavailableState(capturedAt, "Git command could not be started.");
9
26
  }
@@ -20,16 +37,39 @@ export async function captureGitState(cwd, options = {}) {
20
37
  note: "No git work tree was detected."
21
38
  };
22
39
  }
23
- const statusOutput = await runner(["status", "--porcelain=v1"], cwd);
40
+ const statusOutput = await runner([
41
+ "status",
42
+ "--porcelain=v1",
43
+ "--untracked-files=all",
44
+ "--ignore-submodules=all"
45
+ ], commandCwd);
46
+ if (statusOutput.timedOut) {
47
+ return unavailableState(capturedAt, "Git status capture timed out.");
48
+ }
24
49
  if (statusOutput.exitCode === null) {
25
50
  return unavailableState(capturedAt, "Git status command could not be started.");
26
51
  }
27
52
  if (statusOutput.exitCode !== 0) {
28
53
  return unavailableState(capturedAt, "Git status could not be captured.");
29
54
  }
30
- const headOutput = await runner(["rev-parse", "--short=12", "HEAD"], cwd);
55
+ const headOutput = await runner(["rev-parse", "--short=12", "HEAD"], commandCwd);
56
+ if (headOutput.timedOut) {
57
+ return unavailableState(capturedAt, "Git HEAD capture timed out.");
58
+ }
59
+ if (headOutput.exitCode === null) {
60
+ return unavailableState(capturedAt, "Git HEAD command could not be started.");
61
+ }
31
62
  const shortSha = headOutput.exitCode === 0 ? normalizeNullableText(headOutput.stdout) : null;
32
- const refState = await captureRefState(runner, cwd, shortSha);
63
+ const symbolicRef = await runner(["symbolic-ref", "--quiet", "HEAD"], commandCwd);
64
+ if (symbolicRef.timedOut) {
65
+ return unavailableState(capturedAt, "Git ref-state capture timed out.");
66
+ }
67
+ if (symbolicRef.exitCode === null) {
68
+ return unavailableState(capturedAt, "Git ref-state command could not be started.");
69
+ }
70
+ const refState = symbolicRef.exitCode === 0
71
+ ? "attached"
72
+ : shortSha === null ? "unborn" : "detached";
33
73
  const changes = summarizePorcelainStatus(statusOutput.stdout);
34
74
  const status = changes.total === 0 ? "clean" : "dirty";
35
75
  return {
@@ -72,34 +112,62 @@ export function summarizePorcelainStatus(output) {
72
112
  total: lines.length
73
113
  };
74
114
  }
75
- async function captureRefState(runner, cwd, shortSha) {
76
- const symbolicRef = await runner(["symbolic-ref", "--quiet", "HEAD"], cwd);
77
- if (symbolicRef.exitCode === 0) {
78
- return "attached";
79
- }
80
- return shortSha === null ? "unborn" : "detached";
81
- }
82
- async function runGitCommand(args, cwd) {
115
+ async function runGitCommand(args, workspace, timeoutMs) {
83
116
  return await new Promise((resolve) => {
84
- const child = spawn("git", args, {
85
- cwd,
117
+ const child = spawn("git", [
118
+ `--git-dir=${workspace.gitDir}`,
119
+ `--work-tree=${workspace.worktreeRoot}`,
120
+ "-c",
121
+ "core.fsmonitor=false",
122
+ "-c",
123
+ "core.untrackedCache=false",
124
+ "-c",
125
+ `core.excludesFile=${os.devNull}`,
126
+ "-c",
127
+ `core.attributesFile=${os.devNull}`,
128
+ "-c",
129
+ "core.alternateRefsCommand=",
130
+ "-c",
131
+ "core.alternateRefsPrefixes=",
132
+ ...workspace.configOverrides.flatMap((override) => ["-c", override]),
133
+ ...args
134
+ ], {
135
+ cwd: workspace.worktreeRoot,
136
+ env: isolatedGitEnvironment(process.env),
86
137
  stdio: ["ignore", "pipe", "pipe"]
87
138
  });
88
139
  const stdout = [];
89
140
  const stderr = [];
141
+ let settled = false;
142
+ const finish = (result) => {
143
+ if (settled)
144
+ return;
145
+ settled = true;
146
+ clearTimeout(timer);
147
+ resolve(result);
148
+ };
149
+ const timer = setTimeout(() => {
150
+ child.kill("SIGKILL");
151
+ finish({
152
+ exitCode: null,
153
+ stdout: stdout.join(""),
154
+ stderr: "Git command timed out.",
155
+ timedOut: true
156
+ });
157
+ }, timeoutMs);
90
158
  child.stdout.setEncoding("utf8");
91
159
  child.stderr.setEncoding("utf8");
92
160
  child.stdout.on("data", (chunk) => stdout.push(chunk));
93
161
  child.stderr.on("data", (chunk) => stderr.push(chunk));
94
162
  child.on("error", (error) => {
95
- resolve({
163
+ finish({
96
164
  exitCode: null,
97
165
  stdout: stdout.join(""),
98
166
  stderr: error.message
99
167
  });
100
168
  });
101
169
  child.on("close", (exitCode) => {
102
- resolve({
170
+ finish({
103
171
  exitCode,
104
172
  stdout: stdout.join(""),
105
173
  stderr: stderr.join("")
@@ -107,6 +175,60 @@ async function runGitCommand(args, cwd) {
107
175
  });
108
176
  });
109
177
  }
178
+ async function runGitRunnerWithDeadline(runner, args, cwd, timeoutMs) {
179
+ return await new Promise((resolve) => {
180
+ let settled = false;
181
+ const finish = (result) => {
182
+ if (settled)
183
+ return;
184
+ settled = true;
185
+ clearTimeout(timer);
186
+ resolve(result);
187
+ };
188
+ const timer = setTimeout(() => {
189
+ finish({
190
+ exitCode: null,
191
+ stdout: "",
192
+ stderr: "Git command timed out.",
193
+ timedOut: true
194
+ });
195
+ }, timeoutMs);
196
+ void runner(args, cwd).then(finish, (error) => {
197
+ finish({
198
+ exitCode: null,
199
+ stdout: "",
200
+ stderr: error instanceof Error ? error.message : String(error)
201
+ });
202
+ });
203
+ });
204
+ }
205
+ function isolatedGitEnvironment(source) {
206
+ const isolated = {};
207
+ for (const [name, value] of Object.entries(source)) {
208
+ if (!name.toUpperCase().startsWith("GIT_")) {
209
+ isolated[name] = value;
210
+ }
211
+ }
212
+ return {
213
+ ...isolated,
214
+ GIT_ATTR_NOSYSTEM: "1",
215
+ GIT_CONFIG_GLOBAL: os.devNull,
216
+ GIT_CONFIG_NOSYSTEM: "1",
217
+ GIT_NO_LAZY_FETCH: "1",
218
+ GIT_NO_REPLACE_OBJECTS: "1",
219
+ GIT_OPTIONAL_LOCKS: "0",
220
+ GIT_TERMINAL_PROMPT: "0"
221
+ };
222
+ }
223
+ function normalizeCommandTimeout(value) {
224
+ if (value === undefined) {
225
+ return DEFAULT_GIT_COMMAND_TIMEOUT_MS;
226
+ }
227
+ if (!Number.isSafeInteger(value) || value < 1) {
228
+ throw new Error("Git command timeout must be a positive safe integer.");
229
+ }
230
+ return value;
231
+ }
110
232
  function unavailableState(capturedAt, note) {
111
233
  return {
112
234
  schema: GIT_STATE_SCHEMA,
@@ -120,6 +242,19 @@ function unavailableState(capturedAt, note) {
120
242
  note
121
243
  };
122
244
  }
245
+ function missingState(capturedAt) {
246
+ return {
247
+ schema: GIT_STATE_SCHEMA,
248
+ status: "missing",
249
+ capturedAt,
250
+ head: {
251
+ shortSha: null,
252
+ refState: "unknown"
253
+ },
254
+ changes: emptyChanges(),
255
+ note: "No git work tree was detected."
256
+ };
257
+ }
123
258
  function emptyChanges() {
124
259
  return {
125
260
  staged: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"git-state.js","sourceRoot":"","sources":["../../src/core/git-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-state.js","sourceRoot":"","sources":["../../src/core/git-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export declare const GIT_METADATA_INSPECTION_FAILED_NOTE = "Git metadata could not be inspected safely.";
2
+ export declare const GIT_METADATA_CONTAINMENT_FAILED_NOTE = "Git metadata failed containment validation.";
3
+ export interface VerifiedGitWorkspace {
4
+ readonly commonDir: string;
5
+ readonly configOverrides: readonly string[];
6
+ readonly gitDir: string;
7
+ readonly kind: "directory" | "linked-worktree";
8
+ readonly trustRoot: string;
9
+ readonly worktreeRoot: string;
10
+ }
11
+ export type GitWorkspaceInspection = {
12
+ readonly status: "missing";
13
+ } | {
14
+ readonly note: typeof GIT_METADATA_INSPECTION_FAILED_NOTE | typeof GIT_METADATA_CONTAINMENT_FAILED_NOTE;
15
+ readonly status: "unsafe";
16
+ readonly worktreeRoot: string;
17
+ } | {
18
+ readonly status: "verified";
19
+ readonly workspace: VerifiedGitWorkspace;
20
+ };
21
+ /**
22
+ * Resolve one physical Git worktree without trusting ambient Git discovery.
23
+ *
24
+ * A regular `.git` file is accepted only for Git's exact linked-worktree
25
+ * topology: `<common>/.git/worktrees/<name>` plus single-link `commondir` and
26
+ * `gitdir` backpointer files. Arbitrary `gitdir:` redirects (including valid
27
+ * separate-git-dir repositories) are deliberately unavailable because they
28
+ * delegate metadata authority outside the selected project without a
29
+ * verifiable backlink.
30
+ */
31
+ export declare function inspectVerifiedGitWorkspace(cwdInput: string): Promise<GitWorkspaceInspection>;