@tagma/sdk 0.4.18 → 0.4.19
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/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +78 -10
- package/dist/runner.js.map +1 -1
- package/package.json +1 -1
- package/src/runner.ts +76 -11
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiCnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiCnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAoJD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoClF;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,UAAU,CAAC,CAiNrB;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,UAAU,CAAC,CAMrB"}
|
package/dist/runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { existsSync, statSync } from 'node:fs';
|
|
2
|
-
import { isAbsolute, join } from 'node:path';
|
|
1
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { dirname, isAbsolute, join, resolve as pathResolve } from 'node:path';
|
|
3
3
|
import { shellArgs } from './utils';
|
|
4
4
|
// Delay before escalating SIGTERM to SIGKILL when killing a timed-out process.
|
|
5
5
|
const SIGKILL_DELAY_MS = 3_000;
|
|
@@ -36,13 +36,23 @@ function killProcessTree(pid) {
|
|
|
36
36
|
* manually resolve the command against PATH + PATHEXT here so Drivers can
|
|
37
37
|
* keep using short names (`claude`, `npx`, etc.) cross-platform.
|
|
38
38
|
*
|
|
39
|
+
* We also auto-unwrap npm-generated .cmd shims into direct `node <js>`
|
|
40
|
+
* invocations. Spawning the .cmd routes argv through cmd.exe, which silently
|
|
41
|
+
* truncates any argv element at the first newline — a multi-line prompt
|
|
42
|
+
* reaches the child as just its first line. By targeting the underlying JS
|
|
43
|
+
* entry point directly we bypass cmd.exe entirely and newlines survive.
|
|
44
|
+
*
|
|
39
45
|
* Results are cached by (cmd, envPath) key so repeated spawns of the same
|
|
40
|
-
* command don't block the event loop with synchronous PATH scans.
|
|
46
|
+
* command don't block the event loop with synchronous PATH/shim scans.
|
|
41
47
|
*
|
|
42
48
|
* Returns the original name if resolution fails; Bun will raise the same
|
|
43
49
|
* ENOENT it would have otherwise.
|
|
44
50
|
*/
|
|
45
51
|
const RESOLVED_EXE_CACHE_MAX = 128;
|
|
52
|
+
// A cache entry is the replacement argv head for the command:
|
|
53
|
+
// - [path] — a single resolved executable (e.g. `foo.exe`)
|
|
54
|
+
// - [node, jsEntry] — an npm-shim unwrapped into `node <js>`
|
|
55
|
+
// - null — resolution failed, leave the original name
|
|
46
56
|
const resolvedExeCache = new Map();
|
|
47
57
|
/** Evict the oldest entry when the cache is at capacity. */
|
|
48
58
|
function evictIfFull() {
|
|
@@ -53,19 +63,76 @@ function evictIfFull() {
|
|
|
53
63
|
resolvedExeCache.delete(oldest);
|
|
54
64
|
}
|
|
55
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse an npm-generated .cmd shim and return the underlying JS entry path.
|
|
68
|
+
*
|
|
69
|
+
* npm's shim has the shape:
|
|
70
|
+
* "%_prog%" "%dp0%\node_modules\<pkg>\bin\<script>" %*
|
|
71
|
+
*
|
|
72
|
+
* We extract the second double-quoted path, substitute `%dp0%` with the
|
|
73
|
+
* wrapper's own directory, and return the absolute JS path. Returns null for
|
|
74
|
+
* anything that doesn't match the npm-shim pattern (user-written .cmd
|
|
75
|
+
* scripts, non-node tools, etc.), which keeps the caller on the .cmd path.
|
|
76
|
+
*/
|
|
77
|
+
function parseNpmCmdShim(wrapperPath) {
|
|
78
|
+
let contents;
|
|
79
|
+
try {
|
|
80
|
+
contents = readFileSync(wrapperPath, 'utf8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const execLine = contents
|
|
86
|
+
.split(/\r?\n/)
|
|
87
|
+
.find((l) => l.includes('%*') && l.includes('%dp0%'));
|
|
88
|
+
if (!execLine)
|
|
89
|
+
return null;
|
|
90
|
+
const quoted = execLine.match(/"([^"]+)"/g);
|
|
91
|
+
if (!quoted || quoted.length < 2)
|
|
92
|
+
return null;
|
|
93
|
+
const rawTarget = quoted[1].slice(1, -1); // strip surrounding quotes
|
|
94
|
+
const wrapperDir = dirname(wrapperPath);
|
|
95
|
+
// %dp0% expands to wrapper dir with a trailing backslash; strip either form.
|
|
96
|
+
const expanded = rawTarget.replace(/%dp0%\\?/i, '').replace(/\//g, '\\');
|
|
97
|
+
const abs = isAbsolute(expanded) ? expanded : pathResolve(wrapperDir, expanded);
|
|
98
|
+
return existsSync(abs) ? abs : null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Given a resolved .cmd/.bat path, return the argv prefix that should be
|
|
102
|
+
* spawned instead. For npm shims this is `[node, js-entry]`; for everything
|
|
103
|
+
* else it's `[wrapperPath]` (unchanged, caller keeps using the wrapper).
|
|
104
|
+
*/
|
|
105
|
+
function unwrapCmdShim(wrapperPath) {
|
|
106
|
+
if (!/\.(cmd|bat)$/i.test(wrapperPath))
|
|
107
|
+
return [wrapperPath];
|
|
108
|
+
const jsEntry = parseNpmCmdShim(wrapperPath);
|
|
109
|
+
if (!jsEntry)
|
|
110
|
+
return [wrapperPath];
|
|
111
|
+
// Prefer node colocated with the wrapper (npm global bin often ships one).
|
|
112
|
+
const colocated = join(dirname(wrapperPath), 'node.exe');
|
|
113
|
+
const nodeExe = existsSync(colocated) ? colocated : 'node';
|
|
114
|
+
return [nodeExe, jsEntry];
|
|
115
|
+
}
|
|
56
116
|
function resolveWindowsExe(args, envPath) {
|
|
57
117
|
if (process.platform !== 'win32' || args.length === 0)
|
|
58
118
|
return args;
|
|
59
119
|
const cmd = args[0];
|
|
60
|
-
// Already a full path or has an extension → trust caller.
|
|
61
|
-
|
|
120
|
+
// Already a full path or has an extension → trust caller. We still attempt
|
|
121
|
+
// shim unwrapping when the caller handed us a bare .cmd/.bat so drivers
|
|
122
|
+
// that resolve the shim themselves still benefit from the cmd.exe bypass.
|
|
123
|
+
if (isAbsolute(cmd) || /\.[a-z0-9]+$/i.test(cmd)) {
|
|
124
|
+
if (/\.(cmd|bat)$/i.test(cmd) && existsSync(cmd)) {
|
|
125
|
+
const unwrapped = unwrapCmdShim(cmd);
|
|
126
|
+
if (unwrapped.length === 2)
|
|
127
|
+
return [...unwrapped, ...args.slice(1)];
|
|
128
|
+
}
|
|
62
129
|
return args;
|
|
130
|
+
}
|
|
63
131
|
const cacheKey = `${cmd}\x00${envPath}`;
|
|
64
132
|
if (resolvedExeCache.has(cacheKey)) {
|
|
65
|
-
// ?? null coerces undefined→null so
|
|
66
|
-
// check narrows it to string without a spurious 'undefined' arm.
|
|
133
|
+
// ?? null coerces undefined→null so the subsequent guard narrows cleanly.
|
|
67
134
|
const cached = resolvedExeCache.get(cacheKey) ?? null;
|
|
68
|
-
return cached !== null ? [cached, ...args.slice(1)] : args;
|
|
135
|
+
return cached !== null ? [...cached, ...args.slice(1)] : args;
|
|
69
136
|
}
|
|
70
137
|
const exts = (process.env.PATHEXT ?? '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC')
|
|
71
138
|
.split(';')
|
|
@@ -76,9 +143,10 @@ function resolveWindowsExe(args, envPath) {
|
|
|
76
143
|
const candidate = join(dir, cmd + ext);
|
|
77
144
|
try {
|
|
78
145
|
if (existsSync(candidate) && statSync(candidate).isFile()) {
|
|
146
|
+
const head = unwrapCmdShim(candidate);
|
|
79
147
|
evictIfFull();
|
|
80
|
-
resolvedExeCache.set(cacheKey,
|
|
81
|
-
return [
|
|
148
|
+
resolvedExeCache.set(cacheKey, head);
|
|
149
|
+
return [...head, ...args.slice(1)];
|
|
82
150
|
}
|
|
83
151
|
}
|
|
84
152
|
catch {
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/runner.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { existsSync, statSync } from 'node:fs';
|
|
2
|
-
import { isAbsolute, join } from 'node:path';
|
|
1
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { dirname, isAbsolute, join, resolve as pathResolve } from 'node:path';
|
|
3
3
|
import type { SpawnSpec, DriverPlugin, TaskResult } from './types';
|
|
4
4
|
import { shellArgs } from './utils';
|
|
5
5
|
|
|
@@ -45,14 +45,24 @@ export interface RunOptions {
|
|
|
45
45
|
* manually resolve the command against PATH + PATHEXT here so Drivers can
|
|
46
46
|
* keep using short names (`claude`, `npx`, etc.) cross-platform.
|
|
47
47
|
*
|
|
48
|
+
* We also auto-unwrap npm-generated .cmd shims into direct `node <js>`
|
|
49
|
+
* invocations. Spawning the .cmd routes argv through cmd.exe, which silently
|
|
50
|
+
* truncates any argv element at the first newline — a multi-line prompt
|
|
51
|
+
* reaches the child as just its first line. By targeting the underlying JS
|
|
52
|
+
* entry point directly we bypass cmd.exe entirely and newlines survive.
|
|
53
|
+
*
|
|
48
54
|
* Results are cached by (cmd, envPath) key so repeated spawns of the same
|
|
49
|
-
* command don't block the event loop with synchronous PATH scans.
|
|
55
|
+
* command don't block the event loop with synchronous PATH/shim scans.
|
|
50
56
|
*
|
|
51
57
|
* Returns the original name if resolution fails; Bun will raise the same
|
|
52
58
|
* ENOENT it would have otherwise.
|
|
53
59
|
*/
|
|
54
60
|
const RESOLVED_EXE_CACHE_MAX = 128;
|
|
55
|
-
|
|
61
|
+
// A cache entry is the replacement argv head for the command:
|
|
62
|
+
// - [path] — a single resolved executable (e.g. `foo.exe`)
|
|
63
|
+
// - [node, jsEntry] — an npm-shim unwrapped into `node <js>`
|
|
64
|
+
// - null — resolution failed, leave the original name
|
|
65
|
+
const resolvedExeCache = new Map<string, readonly string[] | null>();
|
|
56
66
|
|
|
57
67
|
/** Evict the oldest entry when the cache is at capacity. */
|
|
58
68
|
function evictIfFull(): void {
|
|
@@ -63,18 +73,72 @@ function evictIfFull(): void {
|
|
|
63
73
|
}
|
|
64
74
|
}
|
|
65
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Parse an npm-generated .cmd shim and return the underlying JS entry path.
|
|
78
|
+
*
|
|
79
|
+
* npm's shim has the shape:
|
|
80
|
+
* "%_prog%" "%dp0%\node_modules\<pkg>\bin\<script>" %*
|
|
81
|
+
*
|
|
82
|
+
* We extract the second double-quoted path, substitute `%dp0%` with the
|
|
83
|
+
* wrapper's own directory, and return the absolute JS path. Returns null for
|
|
84
|
+
* anything that doesn't match the npm-shim pattern (user-written .cmd
|
|
85
|
+
* scripts, non-node tools, etc.), which keeps the caller on the .cmd path.
|
|
86
|
+
*/
|
|
87
|
+
function parseNpmCmdShim(wrapperPath: string): string | null {
|
|
88
|
+
let contents: string;
|
|
89
|
+
try {
|
|
90
|
+
contents = readFileSync(wrapperPath, 'utf8');
|
|
91
|
+
} catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const execLine = contents
|
|
95
|
+
.split(/\r?\n/)
|
|
96
|
+
.find((l) => l.includes('%*') && l.includes('%dp0%'));
|
|
97
|
+
if (!execLine) return null;
|
|
98
|
+
const quoted = execLine.match(/"([^"]+)"/g);
|
|
99
|
+
if (!quoted || quoted.length < 2) return null;
|
|
100
|
+
const rawTarget = quoted[1]!.slice(1, -1); // strip surrounding quotes
|
|
101
|
+
const wrapperDir = dirname(wrapperPath);
|
|
102
|
+
// %dp0% expands to wrapper dir with a trailing backslash; strip either form.
|
|
103
|
+
const expanded = rawTarget.replace(/%dp0%\\?/i, '').replace(/\//g, '\\');
|
|
104
|
+
const abs = isAbsolute(expanded) ? expanded : pathResolve(wrapperDir, expanded);
|
|
105
|
+
return existsSync(abs) ? abs : null;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Given a resolved .cmd/.bat path, return the argv prefix that should be
|
|
110
|
+
* spawned instead. For npm shims this is `[node, js-entry]`; for everything
|
|
111
|
+
* else it's `[wrapperPath]` (unchanged, caller keeps using the wrapper).
|
|
112
|
+
*/
|
|
113
|
+
function unwrapCmdShim(wrapperPath: string): readonly string[] {
|
|
114
|
+
if (!/\.(cmd|bat)$/i.test(wrapperPath)) return [wrapperPath];
|
|
115
|
+
const jsEntry = parseNpmCmdShim(wrapperPath);
|
|
116
|
+
if (!jsEntry) return [wrapperPath];
|
|
117
|
+
// Prefer node colocated with the wrapper (npm global bin often ships one).
|
|
118
|
+
const colocated = join(dirname(wrapperPath), 'node.exe');
|
|
119
|
+
const nodeExe = existsSync(colocated) ? colocated : 'node';
|
|
120
|
+
return [nodeExe, jsEntry];
|
|
121
|
+
}
|
|
122
|
+
|
|
66
123
|
function resolveWindowsExe(args: readonly string[], envPath: string): readonly string[] {
|
|
67
124
|
if (process.platform !== 'win32' || args.length === 0) return args;
|
|
68
125
|
const cmd = args[0]!;
|
|
69
|
-
// Already a full path or has an extension → trust caller.
|
|
70
|
-
|
|
126
|
+
// Already a full path or has an extension → trust caller. We still attempt
|
|
127
|
+
// shim unwrapping when the caller handed us a bare .cmd/.bat so drivers
|
|
128
|
+
// that resolve the shim themselves still benefit from the cmd.exe bypass.
|
|
129
|
+
if (isAbsolute(cmd) || /\.[a-z0-9]+$/i.test(cmd)) {
|
|
130
|
+
if (/\.(cmd|bat)$/i.test(cmd) && existsSync(cmd)) {
|
|
131
|
+
const unwrapped = unwrapCmdShim(cmd);
|
|
132
|
+
if (unwrapped.length === 2) return [...unwrapped, ...args.slice(1)];
|
|
133
|
+
}
|
|
134
|
+
return args;
|
|
135
|
+
}
|
|
71
136
|
|
|
72
137
|
const cacheKey = `${cmd}\x00${envPath}`;
|
|
73
138
|
if (resolvedExeCache.has(cacheKey)) {
|
|
74
|
-
// ?? null coerces undefined→null so
|
|
75
|
-
// check narrows it to string without a spurious 'undefined' arm.
|
|
139
|
+
// ?? null coerces undefined→null so the subsequent guard narrows cleanly.
|
|
76
140
|
const cached = resolvedExeCache.get(cacheKey) ?? null;
|
|
77
|
-
return cached !== null ? [cached, ...args.slice(1)] : args;
|
|
141
|
+
return cached !== null ? [...cached, ...args.slice(1)] : args;
|
|
78
142
|
}
|
|
79
143
|
|
|
80
144
|
const exts = (process.env.PATHEXT ?? '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC')
|
|
@@ -87,9 +151,10 @@ function resolveWindowsExe(args: readonly string[], envPath: string): readonly s
|
|
|
87
151
|
const candidate = join(dir, cmd + ext);
|
|
88
152
|
try {
|
|
89
153
|
if (existsSync(candidate) && statSync(candidate).isFile()) {
|
|
154
|
+
const head = unwrapCmdShim(candidate);
|
|
90
155
|
evictIfFull();
|
|
91
|
-
resolvedExeCache.set(cacheKey,
|
|
92
|
-
return [
|
|
156
|
+
resolvedExeCache.set(cacheKey, head);
|
|
157
|
+
return [...head, ...args.slice(1)];
|
|
93
158
|
}
|
|
94
159
|
} catch {
|
|
95
160
|
/* stat race — skip */
|