@sapiom/harness 0.1.5 → 0.2.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/CHANGELOG.md +151 -0
- package/dist/cli/args.d.ts +16 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +80 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/bin.js +30 -66
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/consent.js +1 -1
- package/dist/cli/settings.d.ts.map +1 -1
- package/dist/cli/settings.js +33 -1
- package/dist/cli/settings.js.map +1 -1
- package/dist/core/adapters/adapter.d.ts +2 -2
- package/dist/core/adapters/claude-code.d.ts +60 -2
- package/dist/core/adapters/claude-code.d.ts.map +1 -1
- package/dist/core/adapters/claude-code.js +119 -32
- package/dist/core/adapters/claude-code.js.map +1 -1
- package/dist/core/adapters/codex.d.ts +21 -2
- package/dist/core/adapters/codex.d.ts.map +1 -1
- package/dist/core/adapters/codex.js +53 -2
- package/dist/core/adapters/codex.js.map +1 -1
- package/dist/core/adapters/detect.d.ts +9 -0
- package/dist/core/adapters/detect.d.ts.map +1 -1
- package/dist/core/adapters/detect.js +9 -0
- package/dist/core/adapters/detect.js.map +1 -1
- package/dist/core/api-key-provider.d.ts +79 -0
- package/dist/core/api-key-provider.d.ts.map +1 -0
- package/dist/core/api-key-provider.js +91 -0
- package/dist/core/api-key-provider.js.map +1 -0
- package/dist/core/canvas-body.d.ts +28 -28
- package/dist/core/canvas-body.d.ts.map +1 -1
- package/dist/core/canvas-body.js +117 -55
- package/dist/core/canvas-body.js.map +1 -1
- package/dist/core/canvas-derive.d.ts +43 -0
- package/dist/core/canvas-derive.d.ts.map +1 -0
- package/dist/core/canvas-derive.js +95 -0
- package/dist/core/canvas-derive.js.map +1 -0
- package/dist/core/canvas-enrichment.d.ts +52 -127
- package/dist/core/canvas-enrichment.d.ts.map +1 -1
- package/dist/core/canvas-enrichment.js +17 -178
- package/dist/core/canvas-enrichment.js.map +1 -1
- package/dist/core/canvas-graph.d.ts +40 -1
- package/dist/core/canvas-graph.d.ts.map +1 -1
- package/dist/core/canvas-graph.js +71 -9
- package/dist/core/canvas-graph.js.map +1 -1
- package/dist/core/canvas-interconnections.d.ts +26 -8
- package/dist/core/canvas-interconnections.d.ts.map +1 -1
- package/dist/core/canvas-interconnections.js +132 -24
- package/dist/core/canvas-interconnections.js.map +1 -1
- package/dist/core/canvas-manifest-check.d.ts.map +1 -1
- package/dist/core/canvas-manifest-check.js +15 -2
- package/dist/core/canvas-manifest-check.js.map +1 -1
- package/dist/core/canvas-render.d.ts +8 -15
- package/dist/core/canvas-render.d.ts.map +1 -1
- package/dist/core/canvas-render.js +29 -41
- package/dist/core/canvas-render.js.map +1 -1
- package/dist/core/canvas-run-state.d.ts +50 -5
- package/dist/core/canvas-run-state.d.ts.map +1 -1
- package/dist/core/canvas-run-state.js +176 -11
- package/dist/core/canvas-run-state.js.map +1 -1
- package/dist/core/canvas-svg.d.ts +9 -4
- package/dist/core/canvas-svg.d.ts.map +1 -1
- package/dist/core/canvas-svg.js +84 -13
- package/dist/core/canvas-svg.js.map +1 -1
- package/dist/core/canvas-template.d.ts +9 -10
- package/dist/core/canvas-template.d.ts.map +1 -1
- package/dist/core/canvas-template.js +57 -20
- package/dist/core/canvas-template.js.map +1 -1
- package/dist/core/canvas-watcher.d.ts +22 -1
- package/dist/core/canvas-watcher.d.ts.map +1 -1
- package/dist/core/canvas-watcher.js +111 -30
- package/dist/core/canvas-watcher.js.map +1 -1
- package/dist/core/collector/normalizer.d.ts +8 -0
- package/dist/core/collector/normalizer.d.ts.map +1 -1
- package/dist/core/collector/normalizer.js +8 -0
- package/dist/core/collector/normalizer.js.map +1 -1
- package/dist/core/collector/store.d.ts +75 -1
- package/dist/core/collector/store.d.ts.map +1 -1
- package/dist/core/collector/store.js +334 -2
- package/dist/core/collector/store.js.map +1 -1
- package/dist/core/definition-slug-resolver.d.ts +13 -0
- package/dist/core/definition-slug-resolver.d.ts.map +1 -1
- package/dist/core/definition-slug-resolver.js +29 -0
- package/dist/core/definition-slug-resolver.js.map +1 -1
- package/dist/core/errors.d.ts +10 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +11 -5
- package/dist/core/errors.js.map +1 -1
- package/dist/core/example-seed.d.ts +8 -0
- package/dist/core/example-seed.d.ts.map +1 -1
- package/dist/core/example-seed.js +47 -10
- package/dist/core/example-seed.js.map +1 -1
- package/dist/core/inject/system-prompt.d.ts +8 -0
- package/dist/core/inject/system-prompt.d.ts.map +1 -1
- package/dist/core/inject/system-prompt.js +3 -1
- package/dist/core/inject/system-prompt.js.map +1 -1
- package/dist/core/macros.d.ts.map +1 -1
- package/dist/core/macros.js +5 -6
- package/dist/core/macros.js.map +1 -1
- package/dist/core/paths.d.ts +1 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +1 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/record-archive.d.ts +187 -0
- package/dist/core/record-archive.d.ts.map +1 -0
- package/dist/core/record-archive.js +465 -0
- package/dist/core/record-archive.js.map +1 -0
- package/dist/core/rehydration.d.ts +72 -0
- package/dist/core/rehydration.d.ts.map +1 -0
- package/dist/core/rehydration.js +72 -0
- package/dist/core/rehydration.js.map +1 -0
- package/dist/core/render-local-run.d.ts +82 -0
- package/dist/core/render-local-run.d.ts.map +1 -0
- package/dist/core/render-local-run.js +105 -0
- package/dist/core/render-local-run.js.map +1 -0
- package/dist/core/render-log-slice.d.ts +30 -0
- package/dist/core/render-log-slice.d.ts.map +1 -0
- package/dist/core/render-log-slice.js +49 -0
- package/dist/core/render-log-slice.js.map +1 -0
- package/dist/core/render-run-state.d.ts.map +1 -1
- package/dist/core/render-run-state.js +30 -49
- package/dist/core/render-run-state.js.map +1 -1
- package/dist/core/resume-brief.d.ts +130 -0
- package/dist/core/resume-brief.d.ts.map +1 -0
- package/dist/core/resume-brief.js +404 -0
- package/dist/core/resume-brief.js.map +1 -0
- package/dist/core/rolling-summary.d.ts +130 -0
- package/dist/core/rolling-summary.d.ts.map +1 -0
- package/dist/core/rolling-summary.js +227 -0
- package/dist/core/rolling-summary.js.map +1 -0
- package/dist/core/run-local-bootstrap.d.ts +93 -0
- package/dist/core/run-local-bootstrap.d.ts.map +1 -0
- package/dist/core/run-local-bootstrap.js +155 -0
- package/dist/core/run-local-bootstrap.js.map +1 -0
- package/dist/core/run-state.d.ts +16 -1
- package/dist/core/run-state.d.ts.map +1 -1
- package/dist/core/run-state.js +75 -25
- package/dist/core/run-state.js.map +1 -1
- package/dist/core/session-manager.d.ts +11 -3
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +56 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-record.d.ts +165 -0
- package/dist/core/session-record.d.ts.map +1 -0
- package/dist/core/session-record.js +470 -0
- package/dist/core/session-record.js.map +1 -0
- package/dist/core/spawn-target.d.ts +12 -0
- package/dist/core/spawn-target.d.ts.map +1 -0
- package/dist/core/spawn-target.js +187 -0
- package/dist/core/spawn-target.js.map +1 -0
- package/dist/core/stub-feedback.d.ts +52 -0
- package/dist/core/stub-feedback.d.ts.map +1 -0
- package/dist/core/stub-feedback.js +33 -0
- package/dist/core/stub-feedback.js.map +1 -0
- package/dist/core/task-manager.d.ts.map +1 -1
- package/dist/core/task-manager.js +9 -1
- package/dist/core/task-manager.js.map +1 -1
- package/dist/core/template-catalog.d.ts +48 -0
- package/dist/core/template-catalog.d.ts.map +1 -0
- package/dist/core/template-catalog.js +338 -0
- package/dist/core/template-catalog.js.map +1 -0
- package/dist/core/workflow-registry.d.ts.map +1 -1
- package/dist/core/workflow-registry.js +2 -2
- package/dist/core/workflow-registry.js.map +1 -1
- package/dist/core/workspace-watcher.d.ts.map +1 -1
- package/dist/core/workspace-watcher.js +4 -3
- package/dist/core/workspace-watcher.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles/default.d.ts.map +1 -1
- package/dist/profiles/default.js +9 -14
- package/dist/profiles/default.js.map +1 -1
- package/dist/server/actions.d.ts +139 -0
- package/dist/server/actions.d.ts.map +1 -0
- package/dist/server/actions.js +430 -0
- package/dist/server/actions.js.map +1 -0
- package/dist/server/auth-routes.d.ts +92 -0
- package/dist/server/auth-routes.d.ts.map +1 -0
- package/dist/server/auth-routes.js +151 -0
- package/dist/server/auth-routes.js.map +1 -0
- package/dist/server/canvas.d.ts.map +1 -1
- package/dist/server/canvas.js +7 -7
- package/dist/server/canvas.js.map +1 -1
- package/dist/server/fs.d.ts.map +1 -1
- package/dist/server/fs.js +17 -1
- package/dist/server/fs.js.map +1 -1
- package/dist/server/index.d.ts +12 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +0 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/ingest.d.ts +11 -0
- package/dist/server/ingest.d.ts.map +1 -1
- package/dist/server/ingest.js +1 -0
- package/dist/server/ingest.js.map +1 -1
- package/dist/server/macros.d.ts +4 -6
- package/dist/server/macros.d.ts.map +1 -1
- package/dist/server/macros.js.map +1 -1
- package/dist/server/rest.d.ts +18 -6
- package/dist/server/rest.d.ts.map +1 -1
- package/dist/server/rest.js +185 -50
- package/dist/server/rest.js.map +1 -1
- package/dist/server/runs.d.ts +16 -15
- package/dist/server/runs.d.ts.map +1 -1
- package/dist/server/runs.js +15 -80
- package/dist/server/runs.js.map +1 -1
- package/dist/server/static.d.ts +15 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/static.js +54 -4
- package/dist/server/static.js.map +1 -1
- package/dist/server/templates.d.ts +24 -0
- package/dist/server/templates.d.ts.map +1 -0
- package/dist/server/templates.js +54 -0
- package/dist/server/templates.js.map +1 -0
- package/dist/shared/types.d.ts +558 -66
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +19 -11
- package/dist/shared/types.js.map +1 -1
- package/dist/web/assets/index-DC65cskq.js +446 -0
- package/dist/web/assets/index-xtD-3FFa.css +32 -0
- package/dist/web/canvas/sess-boot/index.html +305 -0
- package/dist/web/index.html +4 -9
- package/package.json +8 -4
- package/dist/core/canvas-enrich.d.ts +0 -115
- package/dist/core/canvas-enrich.d.ts.map +0 -1
- package/dist/core/canvas-enrich.js +0 -186
- package/dist/core/canvas-enrich.js.map +0 -1
- package/dist/core/run-spend.d.ts +0 -55
- package/dist/core/run-spend.d.ts.map +0 -1
- package/dist/core/run-spend.js +0 -109
- package/dist/core/run-spend.js.map +0 -1
- package/dist/core/run-transactions.d.ts +0 -60
- package/dist/core/run-transactions.d.ts.map +0 -1
- package/dist/core/run-transactions.js +0 -129
- package/dist/core/run-transactions.js.map +0 -1
- package/dist/profiles/canvas-guidelines.d.ts +0 -20
- package/dist/profiles/canvas-guidelines.d.ts.map +0 -1
- package/dist/profiles/canvas-guidelines.js +0 -48
- package/dist/profiles/canvas-guidelines.js.map +0 -1
- package/dist/server/skills.d.ts +0 -51
- package/dist/server/skills.d.ts.map +0 -1
- package/dist/server/skills.js +0 -312
- package/dist/server/skills.js.map +0 -1
- package/dist/web/assets/index-DM84J83Y.js +0 -234
- package/dist/web/assets/index-DemtWW4L.css +0 -32
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windows can't spawn a bare command name, or a `.cmd` shim, the way POSIX can.
|
|
3
|
+
*
|
|
4
|
+
* node-pty spawns via `CreateProcess`, which — unlike a shell — does NO `PATHEXT`
|
|
5
|
+
* resolution and cannot execute a `.cmd` at all. So a coding agent installed by
|
|
6
|
+
* npm (which ships `claude.cmd`, not `claude.exe`) failed with
|
|
7
|
+
* `Cannot create process, error code: 2` even though `doctor` found it: detection
|
|
8
|
+
* shells out to `where`, which *does* resolve PATHEXT, so the agent looks present
|
|
9
|
+
* and then won't start.
|
|
10
|
+
*
|
|
11
|
+
* ## Why this does not use `cmd.exe`
|
|
12
|
+
*
|
|
13
|
+
* The obvious fix — `cmd.exe /d /s /c <command> <args…>` — is a command-injection
|
|
14
|
+
* hole, and a functional bug besides. node-pty quotes each argument for
|
|
15
|
+
* `CreateProcess`/MSVCRT, escaping an embedded `"` as `\"`. But the immediate
|
|
16
|
+
* child would be `cmd.exe`, whose tokenizer does not understand backslash-escaped
|
|
17
|
+
* quotes: it toggles "inside quotes" on every literal `"` it sees. One embedded
|
|
18
|
+
* quote therefore desynchronises cmd for the rest of the line, and any `&` or `|`
|
|
19
|
+
* that lands in the now-unquoted span becomes a real command separator. That is
|
|
20
|
+
* CVE-2024-27980's bug class, and `/s` does not address it.
|
|
21
|
+
*
|
|
22
|
+
* It is reachable on every session, not in a corner case: the codex adapter
|
|
23
|
+
* builds `developer_instructions=${JSON.stringify(prompt)}` (JSON *always* emits
|
|
24
|
+
* literal quotes) and the claude-code adapter passes raw prompt-file contents as
|
|
25
|
+
* an argv element. Even ignoring injection, the quote desync mangles those values.
|
|
26
|
+
*
|
|
27
|
+
* So instead of escaping around a shell, we remove the shell. An npm `.cmd` shim
|
|
28
|
+
* is a wrapper that ultimately runs `node <cli.js> %*`, so we read the shim,
|
|
29
|
+
* recover the interpreter and script it points at, and spawn *those* directly.
|
|
30
|
+
* Arguments then pass through exactly one quoting layer — node-pty's, which is
|
|
31
|
+
* correct for `CreateProcess` — and no metacharacter is ever interpreted.
|
|
32
|
+
*
|
|
33
|
+
* Dependencies are injected so the whole Windows path is unit-testable from
|
|
34
|
+
* Linux CI, which is where this class of bug hid: nothing in our test tiers ever
|
|
35
|
+
* spawned a real agent on Windows.
|
|
36
|
+
*/
|
|
37
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
38
|
+
// The win32 namespace explicitly, NOT the host-dependent exports: `join` and
|
|
39
|
+
// `delimiter` resolve to POSIX rules when this runs on Linux, which silently
|
|
40
|
+
// broke both PATH splitting (":" vs ";") and path building ("/" vs "\\") in the
|
|
41
|
+
// unit tests that simulate Windows — and would have broken the real lookup for
|
|
42
|
+
// anyone reasoning about it from a POSIX box.
|
|
43
|
+
import { win32 } from "node:path";
|
|
44
|
+
/** Executable images `CreateProcess` can launch directly, no interpreter needed. */
|
|
45
|
+
const DIRECTLY_EXECUTABLE = [".exe", ".com"];
|
|
46
|
+
/** Shims we must look inside, because Windows cannot execute them. */
|
|
47
|
+
const SHIM_EXTENSIONS = [".cmd", ".bat"];
|
|
48
|
+
function hasExtension(file, extensions) {
|
|
49
|
+
const lower = file.toLowerCase();
|
|
50
|
+
return extensions.some((ext) => lower.endsWith(ext));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Windows' own lookup rules: PATHEXT variants take precedence over a literal
|
|
54
|
+
* extensionless name.
|
|
55
|
+
*
|
|
56
|
+
* This ordering is the whole ballgame. npm installs THREE files for a CLI —
|
|
57
|
+
* `claude.cmd`, `claude.ps1`, and an extensionless `claude` (a POSIX sh script,
|
|
58
|
+
* there for Git Bash). Trying the literal name first finds that sh script, which
|
|
59
|
+
* Windows cannot execute and which is not a shim we can read — so we'd refuse to
|
|
60
|
+
* spawn while `claude.cmd` sat right next to it. `CreateProcess` and `where`
|
|
61
|
+
* both prefer PATHEXT, so we must too.
|
|
62
|
+
*/
|
|
63
|
+
function findOnPath(command, deps) {
|
|
64
|
+
const pathExt = (deps.env.PATHEXT ?? ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);
|
|
65
|
+
const candidates = (base) => {
|
|
66
|
+
const lower = base.toLowerCase();
|
|
67
|
+
// Already carries an extension we know how to handle: use it as given.
|
|
68
|
+
if ([...DIRECTLY_EXECUTABLE, ...SHIM_EXTENSIONS].some((ext) => lower.endsWith(ext)))
|
|
69
|
+
return [base];
|
|
70
|
+
// Otherwise PATHEXT first, the bare name only as a last resort.
|
|
71
|
+
return [...pathExt.map((ext) => base + ext), base];
|
|
72
|
+
};
|
|
73
|
+
// An explicit path (absolute, or containing a separator) is not PATH-searched.
|
|
74
|
+
if (win32.isAbsolute(command) || /[\\/]/.test(command)) {
|
|
75
|
+
return candidates(command).find(deps.fileExists) ?? null;
|
|
76
|
+
}
|
|
77
|
+
// Windows separates PATH with ";" — always, regardless of the host we run on.
|
|
78
|
+
// Entries may be quoted ("C:\\Program Files\\Foo"); cmd and `where` strip those, so
|
|
79
|
+
// we must too or the directory never resolves and we report "not found" for an
|
|
80
|
+
// agent `where` finds — reproducing the detect/spawn disagreement this exists to end.
|
|
81
|
+
const pathEntries = (deps.env.PATH ?? deps.env.Path ?? "")
|
|
82
|
+
.split(";")
|
|
83
|
+
.map((dir) => dir.trim().replace(/^"(.*)"$/, "$1"))
|
|
84
|
+
.filter(Boolean);
|
|
85
|
+
for (const dir of pathEntries) {
|
|
86
|
+
const hit = candidates(win32.join(dir, command)).find(deps.fileExists);
|
|
87
|
+
if (hit)
|
|
88
|
+
return hit;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Recover what an npm-generated `.cmd` shim actually runs. Its final line is of
|
|
94
|
+
* the form:
|
|
95
|
+
*
|
|
96
|
+
* … "%_prog%" "%dp0%\node_modules\@scope\pkg\cli.js" %*
|
|
97
|
+
*
|
|
98
|
+
* so the script is the quoted `%dp0%`-relative path, and the interpreter is the
|
|
99
|
+
* `node.exe` npm placed beside the shim (falling back to `node` on PATH).
|
|
100
|
+
* Returns null when the shim isn't of that shape — we then refuse to spawn
|
|
101
|
+
* rather than reaching for a shell, because a wrong guess here is a security bug.
|
|
102
|
+
*/
|
|
103
|
+
function readShimTarget(shim, deps) {
|
|
104
|
+
let contents;
|
|
105
|
+
try {
|
|
106
|
+
contents = deps.readText(shim);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const shimDir = win32.dirname(shim);
|
|
112
|
+
// Structural, NOT extension-based. A shim's target is whatever it quotes on the
|
|
113
|
+
// line it ends with `%*`, and that is not always a script: Claude Code ships a
|
|
114
|
+
// native launcher, so its real shim reads
|
|
115
|
+
// "%dp0%\node_modules\@anthropic-ai\claude-code\bin\claude.exe" %*
|
|
116
|
+
// while a plain npm package yields "%_prog%" "%dp0%\…\cli.js" %*. Keying on
|
|
117
|
+
// `.js` missed the former entirely — the mistake this now avoids by collecting
|
|
118
|
+
// every quoted token and letting the filesystem decide which is real.
|
|
119
|
+
const lines = contents.split(/\r?\n/);
|
|
120
|
+
const quotedIn = (src) => src.flatMap((line) => [...line.matchAll(/"([^"]+)"/g)].map((m) => m[1] ?? ""));
|
|
121
|
+
const target = [
|
|
122
|
+
...quotedIn(lines.filter((line) => line.includes("%*"))), // the exec line first
|
|
123
|
+
...quotedIn(lines),
|
|
124
|
+
]
|
|
125
|
+
// Skip bare variable references like "%_prog%" — that's the interpreter the
|
|
126
|
+
// shim picks for itself, not a path we can resolve.
|
|
127
|
+
.filter((token) => token && !/^%[^%]*%$/.test(token))
|
|
128
|
+
// `%~dp0` expands WITH a trailing separator while `%dp0%` is usually written
|
|
129
|
+
// followed by one, so supply a separator only when the token lacks it —
|
|
130
|
+
// otherwise `%~dp0node_modules\cli.js` concatenates to `C:\npmnode_modules\…`.
|
|
131
|
+
// The replacement is a FUNCTION, not a string: `$&`, `$$`, `` $` `` and `$'` are
|
|
132
|
+
// special in a replacement pattern, and `$` is legal in a Windows directory
|
|
133
|
+
// name, so a path like `C:\a$&b` would otherwise be mangled into nonsense.
|
|
134
|
+
.map((token) => token.replace(/%~?dp0%?([\\/])?/i, (_match, sep) => sep ? `${shimDir}${sep}` : `${shimDir}\\`))
|
|
135
|
+
.map((token) => win32.normalize(win32.isAbsolute(token) ? token : win32.join(shimDir, token)))
|
|
136
|
+
.find(deps.fileExists);
|
|
137
|
+
if (!target)
|
|
138
|
+
return null;
|
|
139
|
+
const lower = target.toLowerCase();
|
|
140
|
+
// A real executable: spawn it directly. No interpreter, no shell — exactly what
|
|
141
|
+
// CreateProcess wants, and the best possible outcome.
|
|
142
|
+
if (DIRECTLY_EXECUTABLE.some((ext) => lower.endsWith(ext)))
|
|
143
|
+
return { command: target, args: [] };
|
|
144
|
+
// A script: run it under node — the one npm placed beside the shim if present,
|
|
145
|
+
// otherwise PATH's.
|
|
146
|
+
if (/\.[cm]?js$/.test(lower)) {
|
|
147
|
+
const adjacentNode = win32.join(shimDir, "node.exe");
|
|
148
|
+
const interpreter = deps.fileExists(adjacentNode) ? adjacentNode : findOnPath("node", deps);
|
|
149
|
+
return interpreter ? { command: interpreter, args: [target] } : null;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
export function resolveSpawnTarget(command, args, deps = {}) {
|
|
154
|
+
const platform = deps.platform ?? process.platform;
|
|
155
|
+
if (platform !== "win32")
|
|
156
|
+
return { command, args: [...args] };
|
|
157
|
+
const resolved = {
|
|
158
|
+
env: deps.env ?? process.env,
|
|
159
|
+
fileExists: deps.fileExists ?? existsSync,
|
|
160
|
+
readText: deps.readText ?? ((p) => readFileSync(p, "utf8")),
|
|
161
|
+
};
|
|
162
|
+
// Already a real executable image (cmd.exe itself, an absolute .exe): launch it
|
|
163
|
+
// as given. Resolving further would only add failure modes.
|
|
164
|
+
if (hasExtension(command, DIRECTLY_EXECUTABLE))
|
|
165
|
+
return { command, args: [...args] };
|
|
166
|
+
const found = findOnPath(command, resolved);
|
|
167
|
+
if (!found) {
|
|
168
|
+
// Same outcome CreateProcess would give, with a message that says why.
|
|
169
|
+
throw new Error(`cannot spawn "${command}" on Windows: not found on PATH (searched with PATHEXT). ` +
|
|
170
|
+
`Install it, or pass an absolute path to the executable.`);
|
|
171
|
+
}
|
|
172
|
+
if (hasExtension(found, DIRECTLY_EXECUTABLE))
|
|
173
|
+
return { command: found, args: [...args] };
|
|
174
|
+
if (hasExtension(found, SHIM_EXTENSIONS)) {
|
|
175
|
+
const target = readShimTarget(found, resolved);
|
|
176
|
+
if (target)
|
|
177
|
+
return { command: target.command, args: [...target.args, ...args] };
|
|
178
|
+
throw new Error(`cannot spawn "${found}" on Windows: it is a .cmd/.bat shim whose target could not be ` +
|
|
179
|
+
`determined, and running it through cmd.exe would expose arguments to shell parsing ` +
|
|
180
|
+
`(command injection). Install a build that provides a real .exe, or point the harness ` +
|
|
181
|
+
`at the interpreter and script directly.`);
|
|
182
|
+
}
|
|
183
|
+
// Something like an extensionless sh script: not executable by CreateProcess,
|
|
184
|
+
// and not a shim we can read. Refuse rather than shell out.
|
|
185
|
+
throw new Error(`cannot spawn "${found}" on Windows: not an executable image and not a readable shim.`);
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=spawn-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-target.js","sourceRoot":"","sources":["../../src/core/spawn-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,8CAA8C;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAclC,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,sEAAsE;AACtE,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,SAAS,YAAY,CAAC,IAAY,EAAE,UAA6B;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,OAAe,EAAE,IAA2D;IAC9F,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAY,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,uEAAuE;QACvE,IAAI,CAAC,GAAG,mBAAmB,EAAE,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnG,gEAAgE;QAChE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,+EAA+E;IAC/E,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAC3D,CAAC;IACD,8EAA8E;IAC9E,oFAAoF;IACpF,+EAA+E;IAC/E,sFAAsF;IACtF,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SACvD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAClD,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CACrB,IAAY,EACZ,IAAwE;IAExE,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,gFAAgF;IAChF,+EAA+E;IAC/E,0CAA0C;IAC1C,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,sEAAsE;IACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,GAAsB,EAAY,EAAE,CACpD,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAG;QACb,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,sBAAsB;QAChF,GAAG,QAAQ,CAAC,KAAK,CAAC;KACnB;QACC,4EAA4E;QAC5E,oDAAoD;SACnD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,6EAA6E;QAC7E,wEAAwE;QACxE,+EAA+E;QAC/E,iFAAiF;QACjF,4EAA4E;QAC5E,2EAA2E;SAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAuB,EAAE,EAAE,CACrE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAC1C,CACF;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;SAC7F,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEnC,gFAAgF;IAChF,sDAAsD;IACtD,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAEjG,+EAA+E;IAC/E,oBAAoB;IACpB,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5F,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAAuB,EACvB,OAAwB,EAAE;IAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAuE;QACnF,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC5B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;QACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;KAC5D,CAAC;IAEF,gFAAgF;IAChF,4DAA4D;IAC5D,IAAI,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAEpF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,uEAAuE;QACvE,MAAM,IAAI,KAAK,CACb,iBAAiB,OAAO,2DAA2D;YACjF,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,mBAAmB,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAEzF,IAAI,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,iEAAiE;YACrF,qFAAqF;YACrF,uFAAuF;YACvF,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,4DAA4D;IAC5D,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,gEAAgE,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stub-feedback — the pure, read-only derivations behind the run-inspector's
|
|
3
|
+
* stub affordances (WB15-2). Given a {@link RunView} (which already carries the
|
|
4
|
+
* run-level stub facts set by {@link renderLocalRun}), decide:
|
|
5
|
+
* - whether a given step should show the "stubbed" chip, and
|
|
6
|
+
* - what the read-only stub-hygiene notice should say (or nothing).
|
|
7
|
+
*
|
|
8
|
+
* Pure and deterministic: no LLM, no I/O, no clock — every result is a function
|
|
9
|
+
* of the RunView alone, so both are Stryker targets with mutation-first tests.
|
|
10
|
+
*
|
|
11
|
+
* Read-only by design: this surfaces what a stub run DID (served a call, or a
|
|
12
|
+
* supplied stub matched nothing / had the wrong shape). Editing stubs is a
|
|
13
|
+
* deferred fast-follow and lives nowhere here.
|
|
14
|
+
*
|
|
15
|
+
* Honesty is the whole point: the chip appears only for a step that actually ran
|
|
16
|
+
* in a stub-served run (never for a prod run, never for a step the run never
|
|
17
|
+
* reached), and the notice is `null` unless there is a real problem to report —
|
|
18
|
+
* so a clean run shows no chrome at all.
|
|
19
|
+
*/
|
|
20
|
+
import type { RunView } from "../shared/types.js";
|
|
21
|
+
/**
|
|
22
|
+
* Should the "stubbed" chip render for the step named `stepName`?
|
|
23
|
+
*
|
|
24
|
+
* True only when BOTH hold:
|
|
25
|
+
* 1. the run was stub-served (`run.stubbed` — set by renderLocalRun for an
|
|
26
|
+
* offline local run; never by renderRunState for a prod run), and
|
|
27
|
+
* 2. that step actually ran this run (it appears in `run.steps`).
|
|
28
|
+
*
|
|
29
|
+
* A local run resolves every `ctx.sapiom.*` call from a stub, so a step that ran
|
|
30
|
+
* was stub-served — that is the honest granularity (agent-core records no
|
|
31
|
+
* per-CALL stub attribution). A step the run never reached, or any step of a
|
|
32
|
+
* real run, gets no chip. A null run (nothing observed yet) is never stubbed.
|
|
33
|
+
*/
|
|
34
|
+
export declare function stepIsStubbed(run: RunView | null, stepName: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* The read-only stub-hygiene notice for a run, or `null` when there is nothing
|
|
37
|
+
* honest to show. Present only the signals that carry real content:
|
|
38
|
+
* - `unusedStubs`: supplied stub keys that matched no capability call (a no-op
|
|
39
|
+
* mock — almost always a typo or the wrong path form), and
|
|
40
|
+
* - `stubWarnings`: stub values that matched a key but had the wrong shape.
|
|
41
|
+
*
|
|
42
|
+
* Returns `null` unless at least one non-empty signal exists, so the caller can
|
|
43
|
+
* render nothing for a clean run (honesty — no empty "0 issues" panel). The
|
|
44
|
+
* returned arrays are always non-empty when present (empty ones are dropped),
|
|
45
|
+
* so the component never has to re-check length.
|
|
46
|
+
*/
|
|
47
|
+
export interface StubNotice {
|
|
48
|
+
unusedStubs?: NonNullable<RunView["unusedStubs"]>;
|
|
49
|
+
stubWarnings?: NonNullable<RunView["stubWarnings"]>;
|
|
50
|
+
}
|
|
51
|
+
export declare function stubNotice(run: RunView | null): StubNotice | null;
|
|
52
|
+
//# sourceMappingURL=stub-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stub-feedback.d.ts","sourceRoot":"","sources":["../../src/core/stub-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAYjE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Should the "stubbed" chip render for the step named `stepName`?
|
|
3
|
+
*
|
|
4
|
+
* True only when BOTH hold:
|
|
5
|
+
* 1. the run was stub-served (`run.stubbed` — set by renderLocalRun for an
|
|
6
|
+
* offline local run; never by renderRunState for a prod run), and
|
|
7
|
+
* 2. that step actually ran this run (it appears in `run.steps`).
|
|
8
|
+
*
|
|
9
|
+
* A local run resolves every `ctx.sapiom.*` call from a stub, so a step that ran
|
|
10
|
+
* was stub-served — that is the honest granularity (agent-core records no
|
|
11
|
+
* per-CALL stub attribution). A step the run never reached, or any step of a
|
|
12
|
+
* real run, gets no chip. A null run (nothing observed yet) is never stubbed.
|
|
13
|
+
*/
|
|
14
|
+
export function stepIsStubbed(run, stepName) {
|
|
15
|
+
if (!run || run.stubbed !== true)
|
|
16
|
+
return false;
|
|
17
|
+
return run.steps.some((s) => s.name === stepName);
|
|
18
|
+
}
|
|
19
|
+
export function stubNotice(run) {
|
|
20
|
+
if (!run)
|
|
21
|
+
return null;
|
|
22
|
+
const notice = {};
|
|
23
|
+
if (run.unusedStubs && run.unusedStubs.length > 0) {
|
|
24
|
+
notice.unusedStubs = run.unusedStubs;
|
|
25
|
+
}
|
|
26
|
+
if (run.stubWarnings && run.stubWarnings.length > 0) {
|
|
27
|
+
notice.stubWarnings = run.stubWarnings;
|
|
28
|
+
}
|
|
29
|
+
// Empty object == no real signal; report honest absence as null so the
|
|
30
|
+
// inspector renders no notice block at all.
|
|
31
|
+
return notice.unusedStubs || notice.stubWarnings ? notice : null;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=stub-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stub-feedback.js","sourceRoot":"","sources":["../../src/core/stub-feedback.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,GAAmB,EAAE,QAAgB;IACjE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACpD,CAAC;AAmBD,MAAM,UAAU,UAAU,CAAC,GAAmB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACvC,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IACzC,CAAC;IACD,uEAAuE;IACvE,4CAA4C;IAC5C,OAAO,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/core/task-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/core/task-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ import { EventEmitter } from "node:events";
|
|
|
22
22
|
import { spawn as spawnChildProcess } from "node:child_process";
|
|
23
23
|
import { createInterface } from "node:readline";
|
|
24
24
|
import { ENV, } from "../shared/types.js";
|
|
25
|
+
import { resolveSpawnTarget } from "./spawn-target.js";
|
|
25
26
|
import { parseTaskStreamLine } from "./task-stream.js";
|
|
26
27
|
import { AdapterNotFoundError, ExternalHarnessError } from "./errors.js";
|
|
27
28
|
import { listHarnessAdapters } from "./adapters/registry.js";
|
|
@@ -219,7 +220,14 @@ export class TaskManager {
|
|
|
219
220
|
};
|
|
220
221
|
let child;
|
|
221
222
|
try {
|
|
222
|
-
|
|
223
|
+
// Same Windows resolution as the interactive path (SessionManager.spawn):
|
|
224
|
+
// libuv's process lookup appends only .com/.exe, never .cmd, and since
|
|
225
|
+
// CVE-2024-27980 Node refuses an explicit .cmd/.bat without `shell: true`.
|
|
226
|
+
// So a bare `claude` ENOENTs here for an npm-installed agent exactly as it
|
|
227
|
+
// did for sessions — fixing only that path would have left every
|
|
228
|
+
// macro-triggered background task broken on Windows. No-op on POSIX.
|
|
229
|
+
const target = resolveSpawnTarget(spec.command, spec.args);
|
|
230
|
+
child = this.spawnProcess(target.command, target.args, { cwd: spec.cwd, env });
|
|
223
231
|
}
|
|
224
232
|
catch (err) {
|
|
225
233
|
// Never launched — nothing to track, but the generated config files
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/core/task-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/core/task-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* template-catalog — the Studio's template gallery, read from the Sapiom CORE
|
|
3
|
+
* surface so it can never disagree with the dashboard's Template library.
|
|
4
|
+
*
|
|
5
|
+
* WHY this replaced a hardcoded list: the Studio used to ship a pinned copy of
|
|
6
|
+
* two registry entries (`web/src/lib/templates.ts`, pinned at harness 0.1.4 /
|
|
7
|
+
* f0e3406) because — as that module's header said — "no listing API, MCP tool,
|
|
8
|
+
* or CLI command exposes the gallery to any client today". That is no longer
|
|
9
|
+
* true: core serves `GET /v1/workflows/templates` (26 templates) and
|
|
10
|
+
* `GET /v1/workflows/templates/:id`, which is exactly what the dashboard's
|
|
11
|
+
* gallery renders. Reading the same endpoint is what keeps the two surfaces from
|
|
12
|
+
* drifting; re-deriving the list from `registry.json` would just recreate the
|
|
13
|
+
* drift with extra steps (core also merges each example's `template.json` and
|
|
14
|
+
* derives the complexity band from the declared shape).
|
|
15
|
+
*
|
|
16
|
+
* Two non-obvious contract details, both verified against a local backend:
|
|
17
|
+
*
|
|
18
|
+
* - **The core surface authenticates with `Authorization: Bearer`, NOT the
|
|
19
|
+
* `x-sapiom-api-key` header the AGENTS surface takes.** The same key sent as
|
|
20
|
+
* `x-sapiom-api-key` to `/v1/workflows/templates` returns 401. Don't copy the
|
|
21
|
+
* header from `run-state.ts` / `definition-slug-resolver.ts` — those talk to
|
|
22
|
+
* `tools.*`, this talks to `api.*`.
|
|
23
|
+
* - **The path is prefixed `/v1`** (the backend's `GLOBAL_API_PREFIX`); a bare
|
|
24
|
+
* `/workflows/templates` 404s.
|
|
25
|
+
*
|
|
26
|
+
* The key stays server-side and is never forwarded to the browser (same rule as
|
|
27
|
+
* the runs router). A 401/403 triggers exactly one credential refresh + retry,
|
|
28
|
+
* mirroring `run-state.ts`, so a rotated key recovers in place.
|
|
29
|
+
*/
|
|
30
|
+
import type { TemplateDetailView, TemplateListResponse } from "../shared/types.js";
|
|
31
|
+
import { type ApiKeyProvider } from "./api-key-provider.js";
|
|
32
|
+
export interface TemplateCatalog {
|
|
33
|
+
/** The gallery list. Never throws: falls back to `source: "fallback"` with an
|
|
34
|
+
* empty list when signed out or core is unreachable, so the dialog can say
|
|
35
|
+
* what happened instead of rendering silence. */
|
|
36
|
+
list(): Promise<TemplateListResponse>;
|
|
37
|
+
/** One template's detail, or null when the id is unknown / unreachable. */
|
|
38
|
+
detail(id: string): Promise<TemplateDetailView | null>;
|
|
39
|
+
}
|
|
40
|
+
export declare function createTemplateCatalog(opts: {
|
|
41
|
+
/** Accepts a provider (preferred — enables refresh-on-401) or a bare key. */
|
|
42
|
+
apiKey: string | null | ApiKeyProvider;
|
|
43
|
+
/** Override the core base URL (resolved from env by default). Test seam. */
|
|
44
|
+
baseUrl?: string;
|
|
45
|
+
/** Injectable fetch. Test seam, mirroring the resolver suite. */
|
|
46
|
+
fetchImpl?: typeof fetch;
|
|
47
|
+
}): TemplateCatalog;
|
|
48
|
+
//# sourceMappingURL=template-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-catalog.d.ts","sourceRoot":"","sources":["../../src/core/template-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAEV,kBAAkB,EAClB,oBAAoB,EAIrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAgB/B,MAAM,WAAW,eAAe;IAC9B;;sDAEkD;IAClD,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACxD;AAoND,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,6EAA6E;IAC7E,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC;IACvC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,eAAe,CAyGlB"}
|