@audit-tools/shared 0.5.1 → 0.5.5

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/index.d.ts CHANGED
@@ -19,7 +19,7 @@ export { AUDITOR_REPORT_MARKER } from "./contracts.js";
19
19
  export type { ModelTokenLimits } from "./tokens.js";
20
20
  export { KNOWN_MODEL_LIMITS, lookupModelLimits, DEFAULT_CONTEXT_TOKENS, DEFAULT_OUTPUT_TOKENS, BLOCK_SAFETY_MARGIN, BYTES_PER_TOKEN, ESTIMATED_TOKENS_PER_LINE, estimateTokensFromBytes, resolveContextBudget, } from "./tokens.js";
21
21
  export type { RunTrackedOptions, RunTrackedResult } from "./tooling/exec.js";
22
- export { runTracked, resolveExecArgv, quoteForCmd, platformCommand, } from "./tooling/exec.js";
22
+ export { runTracked, resolveExecArgv, quoteForCmd, shellQuote, platformCommand, } from "./tooling/exec.js";
23
23
  export type { ProjectCommands } from "./tooling/testCommand.js";
24
24
  export { discoverProjectCommands } from "./tooling/testCommand.js";
25
25
  export type { AnalyzerDepVia, ResolvedAnalyzerDep, ResolveAnalyzerDepOptions, InstallToCacheOptions, InstallToCacheResult, } from "./tooling/analyzerDeps.js";
@@ -32,6 +32,11 @@ export type { ValidationSeverity, ValidationIssue } from "./validation/basic.js"
32
32
  export { describeValue, isRecord, createValidationIssue, pushValidationIssue, prefixValidationIssues, formatValidationIssues, requireKeys, } from "./validation/basic.js";
33
33
  export type { WorkerProgress, LaunchFreshSessionInput, LaunchFreshSessionResult, ProviderRateLimits, FreshSessionProvider, } from "./providers/types.js";
34
34
  export { LOCAL_SUBPROCESS_PROVIDER_NAME } from "./providers/constants.js";
35
+ export { spawnLoggedCommand } from "./providers/spawnLoggedCommand.js";
36
+ export type { SpawnLoggedCommandOptions } from "./providers/spawnLoggedCommand.js";
37
+ export type { WorkerTaskTimeout } from "./providers/workerTaskLaunch.js";
38
+ export { resolveWorkerTaskTimeoutMs, applyWorkerTaskLaunchSettings, } from "./providers/workerTaskLaunch.js";
39
+ export { resolveOpenCodeSpawnCommand } from "./providers/opencodeLaunch.js";
35
40
  export type { LimitSource, LimitConfidence, HostConcurrencyLimitSource, HostConcurrencyLimit, ResolvedLimits, ConcurrencyBucket, QuotaStateEntry, QuotaState, WaveSchedule, BackoffState, ObservedWaveOutcome, } from "./quota/types.js";
36
41
  export type { QuotaSource, QuotaUsageSnapshot } from "./quota/quotaSource.js";
37
42
  export { resolveLimits, lookupKnownModel, classifyProvider, } from "./quota/limits.js";
@@ -43,6 +48,8 @@ export type { RateLimitDetectionResult } from "./quota/errorParsing.js";
43
48
  export { acquireLock, releaseLock, withFileLock, FileLockTimeoutError, } from "./quota/fileLock.js";
44
49
  export { runSlidingWindow } from "./quota/slidingWindow.js";
45
50
  export type { SlidingWindowResult } from "./quota/slidingWindow.js";
51
+ export { scheduleWave, buildProviderModelKey } from "./quota/scheduler.js";
52
+ export type { ScheduleWaveOptions, DiscoveredRateLimitsInput, } from "./quota/scheduler.js";
46
53
  export { LearnedQuotaSource } from "./quota/learnedQuotaSource.js";
47
54
  export { CompositeQuotaSource } from "./quota/compositeQuotaSource.js";
48
55
  export type { ErrorParser } from "./quota/errorParsers/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export { PROVIDER_NAMES, SESSION_UI_MODES, PROVIDER_SECTION_KEYS, ANALYZER_SETTI
6
6
  // Contracts
7
7
  export { AUDITOR_REPORT_MARKER } from "./contracts.js";
8
8
  export { KNOWN_MODEL_LIMITS, lookupModelLimits, DEFAULT_CONTEXT_TOKENS, DEFAULT_OUTPUT_TOKENS, BLOCK_SAFETY_MARGIN, BYTES_PER_TOKEN, ESTIMATED_TOKENS_PER_LINE, estimateTokensFromBytes, resolveContextBudget, } from "./tokens.js";
9
- export { runTracked, resolveExecArgv, quoteForCmd, platformCommand, } from "./tooling/exec.js";
9
+ export { runTracked, resolveExecArgv, quoteForCmd, shellQuote, platformCommand, } from "./tooling/exec.js";
10
10
  export { discoverProjectCommands } from "./tooling/testCommand.js";
11
11
  export { analyzerCacheRoot, parseAnalyzerSpec, resolveAnalyzerDep, installToCache, } from "./tooling/analyzerDeps.js";
12
12
  // Git helpers
@@ -17,12 +17,17 @@ export { isFileMissingError, readJsonFile, writeJsonFile, appendNdjsonFile, read
17
17
  export { describeValue, isRecord, createValidationIssue, pushValidationIssue, prefixValidationIssues, formatValidationIssues, requireKeys, } from "./validation/basic.js";
18
18
  // Provider constants
19
19
  export { LOCAL_SUBPROCESS_PROVIDER_NAME } from "./providers/constants.js";
20
+ // Provider command runner (single source of truth for both orchestrators)
21
+ export { spawnLoggedCommand } from "./providers/spawnLoggedCommand.js";
22
+ export { resolveWorkerTaskTimeoutMs, applyWorkerTaskLaunchSettings, } from "./providers/workerTaskLaunch.js";
23
+ export { resolveOpenCodeSpawnCommand } from "./providers/opencodeLaunch.js";
20
24
  export { resolveLimits, lookupKnownModel, classifyProvider, } from "./quota/limits.js";
21
25
  export { setQuotaStateDir, getQuotaStatePath, readQuotaState, writeQuotaState, computeMaxSafeConcurrency, recordWaveOutcome, decayWeight, applyDecayToEntry, computeBackoffCooldownMs, computeBackoffFailureWeight, computeRampUpConcurrency, } from "./quota/state.js";
22
26
  export { detectRateLimitError, computeCooldownUntil, } from "./quota/errorParsing.js";
23
27
  export { detectHostActiveSubagentLimit, resolveHostActiveSubagentLimit, } from "./quota/hostLimits.js";
24
28
  export { acquireLock, releaseLock, withFileLock, FileLockTimeoutError, } from "./quota/fileLock.js";
25
29
  export { runSlidingWindow } from "./quota/slidingWindow.js";
30
+ export { scheduleWave, buildProviderModelKey } from "./quota/scheduler.js";
26
31
  export { LearnedQuotaSource } from "./quota/learnedQuotaSource.js";
27
32
  export { CompositeQuotaSource } from "./quota/compositeQuotaSource.js";
28
33
  export { GenericErrorParser, ClaudeCodeErrorParser, getErrorParserForProvider, } from "./quota/errorParsers/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAwB3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAwBtC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUnE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,cAAc;AACd,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,KAAK;AACL,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAW/B,qBAAqB;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAiB1E,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Resolve how to spawn an `opencode` invocation per platform. On Windows the
3
+ * `opencode` / `npx` launchers (and any explicit `*.cmd` shim) must go through
4
+ * `cmd.exe`, because Node's `spawn` cannot execute a `.cmd` batch file without
5
+ * a shell. On every other platform the command and args pass through
6
+ * unchanged. Shared by the opencode provider in both orchestrators so neither
7
+ * silently loses the Windows shim.
8
+ */
9
+ export declare function resolveOpenCodeSpawnCommand(command: string, args: string[], platform?: NodeJS.Platform, shellCommand?: string): {
10
+ command: string;
11
+ args: string[];
12
+ };
13
+ //# sourceMappingURL=opencodeLaunch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeLaunch.d.ts","sourceRoot":"","sources":["../../src/providers/opencodeLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,YAAY,GAAE,MAAyC,GACtD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAYrC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Resolve how to spawn an `opencode` invocation per platform. On Windows the
3
+ * `opencode` / `npx` launchers (and any explicit `*.cmd` shim) must go through
4
+ * `cmd.exe`, because Node's `spawn` cannot execute a `.cmd` batch file without
5
+ * a shell. On every other platform the command and args pass through
6
+ * unchanged. Shared by the opencode provider in both orchestrators so neither
7
+ * silently loses the Windows shim.
8
+ */
9
+ export function resolveOpenCodeSpawnCommand(command, args, platform = process.platform, shellCommand = process.env.ComSpec ?? "cmd.exe") {
10
+ if (platform !== "win32") {
11
+ return { command, args };
12
+ }
13
+ const base = command.replace(/\.(cmd|bat|exe)$/i, "").toLowerCase();
14
+ if (base === "opencode" || base === "npx" || command.endsWith(".cmd")) {
15
+ return {
16
+ command: shellCommand,
17
+ args: ["/d", "/s", "/c", [command, ...args].map(quoteOpenCodeCmdArg).join(" ")],
18
+ };
19
+ }
20
+ return { command, args };
21
+ }
22
+ function quoteOpenCodeCmdArg(value) {
23
+ if (/^[A-Za-z0-9_./:=+-]+$/.test(value)) {
24
+ return value;
25
+ }
26
+ return `"${value.replace(/(["^&|<>%])/g, "^$1")}"`;
27
+ }
28
+ //# sourceMappingURL=opencodeLaunch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeLaunch.js","sourceRoot":"","sources":["../../src/providers/opencodeLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAe,EACf,IAAc,EACd,WAA4B,OAAO,CAAC,QAAQ,EAC5C,eAAuB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS;IAEvD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC;AACrD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { createWriteStream } from "node:fs";
2
+ import { spawn } from "node:child_process";
3
+ import type { LaunchFreshSessionInput, LaunchFreshSessionResult } from "./types.js";
4
+ export interface SpawnLoggedCommandOptions {
5
+ createWriteStream?: typeof createWriteStream;
6
+ spawn?: typeof spawn;
7
+ killGraceMs?: number;
8
+ opentoken?: boolean;
9
+ opentokenCommand?: string;
10
+ }
11
+ export declare function spawnLoggedCommand(command: string, args: string[], input: LaunchFreshSessionInput, env?: Record<string, string>, options?: SpawnLoggedCommandOptions): Promise<LaunchFreshSessionResult>;
12
+ //# sourceMappingURL=spawnLoggedCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnLoggedCommand.d.ts","sourceRoot":"","sources":["../../src/providers/spawnLoggedCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAoCD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,uBAAuB,EAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAwOnC"}
@@ -0,0 +1,232 @@
1
+ import { createWriteStream } from "node:fs";
2
+ import { spawn } from "node:child_process";
3
+ const TERMINATION_SIGNAL = "SIGTERM";
4
+ const FORCE_KILL_SIGNAL = "SIGKILL";
5
+ const FORCE_KILL_GRACE_MS = 1_000;
6
+ const HEARTBEAT_INTERVAL_MS = 30_000;
7
+ function formatCommand(command, args) {
8
+ return [command, ...args].join(" ");
9
+ }
10
+ function quoteCmdArg(value) {
11
+ if (/^[A-Za-z0-9_./:=@+-]+$/.test(value))
12
+ return value;
13
+ return `"${value.replace(/(["^&|<>%])/g, "^$1")}"`;
14
+ }
15
+ function applyOpenTokenWrap(command, args, opentokenCommand, platform = process.platform) {
16
+ if (platform === "win32") {
17
+ const shell = process.env.ComSpec ?? "cmd.exe";
18
+ const inner = [command, ...args].map(quoteCmdArg).join(" ");
19
+ return {
20
+ command: shell,
21
+ args: ["/d", "/s", "/c", `${opentokenCommand} wrap ${inner}`],
22
+ };
23
+ }
24
+ return { command: opentokenCommand, args: ["wrap", command, ...args] };
25
+ }
26
+ // Single source of truth for both orchestrators. Combines the auditor's
27
+ // flush-before-settle correctness (settle on "close" only after all buffered
28
+ // log writes have drained, and a computed `accepted`/rich result) with the
29
+ // remediator's stdin piping and optional structured progress telemetry.
30
+ //
31
+ // On Windows `command` must be the resolved .cmd / .exe path because `spawn`
32
+ // does not consult PATH for executables without a shell. Callers should use
33
+ // `platformCommand()` or similar to supply the correct command form per OS.
34
+ export async function spawnLoggedCommand(command, args, input, env, options = {}) {
35
+ const openWriteStream = options.createWriteStream ?? createWriteStream;
36
+ const spawnProcess = options.spawn ?? spawn;
37
+ const killGraceMs = options.killGraceMs ?? FORCE_KILL_GRACE_MS;
38
+ if (options.opentoken) {
39
+ const wrapped = applyOpenTokenWrap(command, args, options.opentokenCommand ?? "opentoken");
40
+ command = wrapped.command;
41
+ args = wrapped.args;
42
+ }
43
+ return await new Promise((resolve, reject) => {
44
+ const stdoutLog = openWriteStream(input.stdoutPath, { flags: "a" });
45
+ const stderrLog = openWriteStream(input.stderrPath, { flags: "a" });
46
+ const startedAt = Date.now();
47
+ let timedOut = false;
48
+ let settled = false;
49
+ let child = null;
50
+ let timer;
51
+ let heartbeat;
52
+ let forceKillTimer;
53
+ let pendingLogWrites = 0;
54
+ let childClosed = false;
55
+ let closeCode = null;
56
+ let closeSignal = null;
57
+ let logsEnded = false;
58
+ let stdoutLineBuf = "";
59
+ const clearTimers = () => {
60
+ if (timer) {
61
+ clearTimeout(timer);
62
+ }
63
+ if (heartbeat) {
64
+ clearInterval(heartbeat);
65
+ }
66
+ if (forceKillTimer) {
67
+ clearTimeout(forceKillTimer);
68
+ }
69
+ };
70
+ const endLogs = (callback) => {
71
+ if (logsEnded) {
72
+ callback();
73
+ return;
74
+ }
75
+ logsEnded = true;
76
+ let remaining = 2;
77
+ const done = () => {
78
+ remaining -= 1;
79
+ if (remaining === 0) {
80
+ callback();
81
+ }
82
+ };
83
+ stdoutLog.end(done);
84
+ stderrLog.end(done);
85
+ };
86
+ const settle = (callback) => {
87
+ if (settled) {
88
+ return;
89
+ }
90
+ settled = true;
91
+ clearTimers();
92
+ endLogs(callback);
93
+ };
94
+ const fail = (error) => {
95
+ if (child && !child.killed) {
96
+ child.kill(FORCE_KILL_SIGNAL);
97
+ }
98
+ const normalized = error instanceof Error ? error : new Error(String(error));
99
+ settle(() => reject(normalized));
100
+ };
101
+ const writeLog = (write, chunk) => {
102
+ pendingLogWrites += 1;
103
+ write.write(chunk, () => {
104
+ pendingLogWrites -= 1;
105
+ maybeSettleFromClose();
106
+ });
107
+ };
108
+ const maybeSettleFromClose = () => {
109
+ if (!childClosed || pendingLogWrites > 0 || settled) {
110
+ return;
111
+ }
112
+ if (timedOut) {
113
+ settle(() => reject(new Error(`Fresh session timed out after ${input.timeoutMs}ms for run ${input.runId}.`)));
114
+ return;
115
+ }
116
+ settle(() => resolve({
117
+ accepted: closeCode === 0 && closeSignal === null,
118
+ processId: spawnedChild.pid,
119
+ exitCode: closeCode,
120
+ signal: closeSignal,
121
+ command: formatCommand(command, args),
122
+ args,
123
+ stdoutPath: input.stdoutPath,
124
+ stderrPath: input.stderrPath,
125
+ error: closeCode === 0 && closeSignal === null
126
+ ? undefined
127
+ : closeSignal
128
+ ? `Provider command exited with signal ${closeSignal}.`
129
+ : `Provider command exited with code ${closeCode}.`,
130
+ }));
131
+ };
132
+ stdoutLog.on("error", fail);
133
+ stderrLog.on("error", fail);
134
+ let spawnedChild;
135
+ try {
136
+ spawnedChild = spawnProcess(command, args, {
137
+ cwd: input.repoRoot,
138
+ env: { ...process.env, ...env },
139
+ stdio: [input.stdinText === undefined ? "ignore" : "pipe", "pipe", "pipe"],
140
+ });
141
+ child = spawnedChild;
142
+ }
143
+ catch (error) {
144
+ fail(error);
145
+ return;
146
+ }
147
+ if (input.stdinText !== undefined) {
148
+ if (!spawnedChild.stdin) {
149
+ fail(new Error(`Fresh session spawn for run ${input.runId} did not provide pipe-backed stdin.`));
150
+ return;
151
+ }
152
+ spawnedChild.stdin.end(input.stdinText);
153
+ }
154
+ if (!spawnedChild.stdout || !spawnedChild.stderr) {
155
+ fail(new Error(`Fresh session spawn for run ${input.runId} did not provide pipe-backed stdout/stderr streams.`));
156
+ return;
157
+ }
158
+ timer = setTimeout(() => {
159
+ timedOut = true;
160
+ spawnedChild.kill(TERMINATION_SIGNAL);
161
+ forceKillTimer = setTimeout(() => {
162
+ if (!settled) {
163
+ spawnedChild.kill(FORCE_KILL_SIGNAL);
164
+ }
165
+ }, killGraceMs);
166
+ }, input.timeoutMs);
167
+ heartbeat = setInterval(() => {
168
+ const elapsedMs = Date.now() - startedAt;
169
+ const message = `[provider] run ${input.runId} still running after ${elapsedMs}ms\n`;
170
+ writeLog(stderrLog, message);
171
+ if (input.uiMode === "visible") {
172
+ process.stderr.write(message);
173
+ }
174
+ // Structured telemetry only when a consumer is attached, so the auditor's
175
+ // stderr (which never wires onProgress) stays exactly as before.
176
+ if (input.onProgress) {
177
+ process.stderr.write(JSON.stringify({
178
+ type: "provider_heartbeat",
179
+ runId: input.runId,
180
+ elapsedMs,
181
+ }) + "\n");
182
+ input.onProgress({
183
+ type: "heartbeat",
184
+ runId: input.runId,
185
+ obligationId: input.obligationId,
186
+ elapsedMs,
187
+ });
188
+ }
189
+ }, HEARTBEAT_INTERVAL_MS);
190
+ spawnedChild.stdout.on("data", (chunk) => {
191
+ writeLog(stdoutLog, chunk);
192
+ if (input.uiMode === "visible") {
193
+ process.stdout.write(chunk);
194
+ }
195
+ if (input.onProgress) {
196
+ stdoutLineBuf += chunk.toString();
197
+ const lines = stdoutLineBuf.split("\n");
198
+ stdoutLineBuf = lines.pop() ?? "";
199
+ for (const line of lines) {
200
+ const trimmed = line.trim();
201
+ if (trimmed.length > 0) {
202
+ input.onProgress({
203
+ type: "output",
204
+ runId: input.runId,
205
+ obligationId: input.obligationId,
206
+ elapsedMs: Date.now() - startedAt,
207
+ message: trimmed,
208
+ });
209
+ }
210
+ }
211
+ }
212
+ });
213
+ spawnedChild.stderr.on("data", (chunk) => {
214
+ writeLog(stderrLog, chunk);
215
+ if (input.uiMode === "visible") {
216
+ process.stderr.write(chunk);
217
+ }
218
+ });
219
+ spawnedChild.on("error", fail);
220
+ spawnedChild.on("exit", (code, signal) => {
221
+ closeCode = code;
222
+ closeSignal = signal;
223
+ });
224
+ spawnedChild.on("close", (code, signal) => {
225
+ childClosed = true;
226
+ closeCode = code;
227
+ closeSignal = signal;
228
+ maybeSettleFromClose();
229
+ });
230
+ });
231
+ }
232
+ //# sourceMappingURL=spawnLoggedCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnLoggedCommand.js","sourceRoot":"","sources":["../../src/providers/spawnLoggedCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { LaunchFreshSessionInput } from "./types.js";
2
+ /** Minimal worker-task shape needed to resolve a per-task launch timeout. */
3
+ export interface WorkerTaskTimeout {
4
+ timeout_ms?: number;
5
+ }
6
+ /**
7
+ * Resolve the effective subprocess timeout for a worker task: the task's own
8
+ * `timeout_ms` when it is a positive, finite number, otherwise the caller's
9
+ * fallback. Centralized so both orchestrators honor per-task timeouts
10
+ * identically rather than each provider applying its own (or no) policy.
11
+ */
12
+ export declare function resolveWorkerTaskTimeoutMs(task: WorkerTaskTimeout, fallbackMs: number): number;
13
+ /**
14
+ * Return a launch input with its `timeoutMs` overridden by the worker task's
15
+ * per-task `timeout_ms` when present. Providers call this on the input before
16
+ * spawning so a task can carry a tighter (or looser) timeout than the session
17
+ * default.
18
+ */
19
+ export declare function applyWorkerTaskLaunchSettings(input: LaunchFreshSessionInput, task: WorkerTaskTimeout): LaunchFreshSessionInput;
20
+ //# sourceMappingURL=workerTaskLaunch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerTaskLaunch.d.ts","sourceRoot":"","sources":["../../src/providers/workerTaskLaunch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,iBAAiB,GACtB,uBAAuB,CAKzB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Resolve the effective subprocess timeout for a worker task: the task's own
3
+ * `timeout_ms` when it is a positive, finite number, otherwise the caller's
4
+ * fallback. Centralized so both orchestrators honor per-task timeouts
5
+ * identically rather than each provider applying its own (or no) policy.
6
+ */
7
+ export function resolveWorkerTaskTimeoutMs(task, fallbackMs) {
8
+ if (typeof task.timeout_ms === "number" &&
9
+ Number.isFinite(task.timeout_ms) &&
10
+ task.timeout_ms > 0) {
11
+ return Math.floor(task.timeout_ms);
12
+ }
13
+ return fallbackMs;
14
+ }
15
+ /**
16
+ * Return a launch input with its `timeoutMs` overridden by the worker task's
17
+ * per-task `timeout_ms` when present. Providers call this on the input before
18
+ * spawning so a task can carry a tighter (or looser) timeout than the session
19
+ * default.
20
+ */
21
+ export function applyWorkerTaskLaunchSettings(input, task) {
22
+ return {
23
+ ...input,
24
+ timeoutMs: resolveWorkerTaskTimeoutMs(task, input.timeoutMs),
25
+ };
26
+ }
27
+ //# sourceMappingURL=workerTaskLaunch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerTaskLaunch.js","sourceRoot":"","sources":["../../src/providers/workerTaskLaunch.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAuB,EACvB,UAAkB;IAElB,IACE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,EACnB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAA8B,EAC9B,IAAuB;IAEvB,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { ResolvedProviderName, SessionConfig } from "../types/sessionConfig.js";
2
+ import type { HostConcurrencyLimit, QuotaStateEntry, WaveSchedule } from "./types.js";
3
+ import type { QuotaUsageSnapshot } from "./quotaSource.js";
4
+ /**
5
+ * Minimal structural shape of RPM/TPM limits discovered at runtime (e.g. via
6
+ * response-header extraction). Declared here so the scheduler stays decoupled
7
+ * from any package-specific discovery implementation — callers may pass a
8
+ * richer object (with a `source` field, etc.); only these fields are read.
9
+ */
10
+ export interface DiscoveredRateLimitsInput {
11
+ requests_per_minute?: number | null;
12
+ input_tokens_per_minute?: number | null;
13
+ output_tokens_per_minute?: number | null;
14
+ }
15
+ export interface ScheduleWaveOptions {
16
+ providerName: ResolvedProviderName;
17
+ sessionConfig: SessionConfig;
18
+ hostModel: string | null;
19
+ requestedConcurrency: number;
20
+ /** Per-slot estimated tokens (one entry per worker slot). Used for TPM budget. */
21
+ estimatedSlotTokens?: number[];
22
+ /** @deprecated Use estimatedSlotTokens instead. Average tokens per slot — used as fallback. */
23
+ estimatedPacketTokens?: number;
24
+ quotaStateEntry?: QuotaStateEntry | null;
25
+ hostConcurrencyLimit?: HostConcurrencyLimit | null;
26
+ quotaSourceSnapshot?: QuotaUsageSnapshot | null;
27
+ /** RPM/TPM discovered from provider queries or response header extraction. */
28
+ discoveredLimits?: DiscoveredRateLimitsInput | null;
29
+ }
30
+ export declare function scheduleWave(options: ScheduleWaveOptions): WaveSchedule;
31
+ /** Build the state key used for indexing quota-state.json entries. */
32
+ export declare function buildProviderModelKey(providerName: string, hostModel: string | null | undefined): string;
33
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAEf,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI3D;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACrD;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAqKvE;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAER"}
@@ -0,0 +1,153 @@
1
+ import { classifyProvider, resolveLimits } from "./limits.js";
2
+ import { computeMaxSafeConcurrency, computeRampUpConcurrency } from "./state.js";
3
+ function sumTopN(sorted, n) {
4
+ let sum = 0;
5
+ for (let i = 0; i < Math.min(n, sorted.length); i++)
6
+ sum += sorted[i];
7
+ return sum;
8
+ }
9
+ export function scheduleWave(options) {
10
+ const { providerName, sessionConfig, hostModel, requestedConcurrency, estimatedSlotTokens, estimatedPacketTokens = 0, quotaStateEntry = null, hostConcurrencyLimit = null, quotaSourceSnapshot = null, discoveredLimits = null, } = options;
11
+ // Descending sort so sumTopN picks the largest slots
12
+ const slotsSorted = estimatedSlotTokens
13
+ ? [...estimatedSlotTokens].sort((a, b) => b - a)
14
+ : null;
15
+ const avgTokens = slotsSorted && slotsSorted.length > 0
16
+ ? Math.floor(slotsSorted.reduce((a, b) => a + b, 0) / slotsSorted.length)
17
+ : estimatedPacketTokens;
18
+ const quota = sessionConfig.quota ?? {};
19
+ const applyHostConcurrencyLimit = (waveSize) => {
20
+ if (hostConcurrencyLimit === null)
21
+ return waveSize;
22
+ return Math.min(waveSize, hostConcurrencyLimit.active_subagents);
23
+ };
24
+ if (quota.enabled === false) {
25
+ const waveSize = Math.max(1, applyHostConcurrencyLimit(requestedConcurrency));
26
+ const limits = {
27
+ context_tokens: quota.default_context_tokens ?? 32_000,
28
+ output_tokens: quota.reserved_output_tokens ?? 4_096,
29
+ requests_per_minute: null,
30
+ input_tokens_per_minute: null,
31
+ output_tokens_per_minute: null,
32
+ };
33
+ return {
34
+ wave_size: waveSize,
35
+ estimated_wave_tokens: slotsSorted ? sumTopN(slotsSorted, waveSize) : waveSize * avgTokens,
36
+ cooldown_until: null,
37
+ confidence: "high",
38
+ source: "default",
39
+ resolved_limits: limits,
40
+ host_concurrency_limit: hostConcurrencyLimit,
41
+ model: hostModel,
42
+ };
43
+ }
44
+ const safetyMargin = quota.safety_margin ?? 0.8;
45
+ const halfLifeHours = quota.empirical_half_life_hours ?? 24;
46
+ const { limits, source, confidence } = resolveLimits({ providerName, sessionConfig, hostModel });
47
+ // Fill null RPM/TPM from discovered limits (provider query or header extraction)
48
+ if (discoveredLimits) {
49
+ limits.requests_per_minute ??= discoveredLimits.requests_per_minute ?? null;
50
+ limits.input_tokens_per_minute ??= discoveredLimits.input_tokens_per_minute ?? null;
51
+ limits.output_tokens_per_minute ??= discoveredLimits.output_tokens_per_minute ?? null;
52
+ }
53
+ let waveSize = requestedConcurrency;
54
+ let cooldownUntil = null;
55
+ // Respect an active cooldown period
56
+ if (quotaStateEntry?.cooldown_until) {
57
+ const cooldownExpiry = new Date(quotaStateEntry.cooldown_until).getTime();
58
+ if (cooldownExpiry > Date.now()) {
59
+ cooldownUntil = quotaStateEntry.cooldown_until;
60
+ waveSize = 1;
61
+ }
62
+ }
63
+ if (!cooldownUntil) {
64
+ // Cap by requests-per-minute
65
+ if (limits.requests_per_minute != null) {
66
+ const rpmCap = Math.max(1, Math.floor(limits.requests_per_minute * safetyMargin));
67
+ waveSize = Math.min(waveSize, rpmCap);
68
+ }
69
+ // Cap by input tokens-per-minute
70
+ if (limits.input_tokens_per_minute != null && avgTokens > 0) {
71
+ const tpmBudget = limits.input_tokens_per_minute * safetyMargin;
72
+ if (slotsSorted && slotsSorted.length > 0) {
73
+ let candidateSize = waveSize;
74
+ while (candidateSize > 1 && sumTopN(slotsSorted, candidateSize) > tpmBudget) {
75
+ candidateSize--;
76
+ }
77
+ waveSize = Math.max(1, candidateSize);
78
+ }
79
+ else {
80
+ const tpmCap = Math.max(1, Math.floor(tpmBudget / avgTokens));
81
+ waveSize = Math.min(waveSize, tpmCap);
82
+ }
83
+ }
84
+ if (quotaStateEntry) {
85
+ const rampUp = quota.ramp_up_enabled !== false;
86
+ const learnedCap = rampUp
87
+ ? computeRampUpConcurrency(quotaStateEntry, halfLifeHours)
88
+ : computeMaxSafeConcurrency(quotaStateEntry, halfLifeHours);
89
+ waveSize = Math.min(waveSize, learnedCap);
90
+ }
91
+ else if (hostConcurrencyLimit !== null) {
92
+ // The host explicitly reported its active-subagent capacity. That is a
93
+ // real concurrency signal, so it supersedes the conservative
94
+ // unknown-provider fallback (which exists only when we have no signal at
95
+ // all). Leaving waveSize untouched here lets applyHostConcurrencyLimit()
96
+ // below enforce the reported limit as the hard ceiling, while any RPM/TPM
97
+ // caps applied above still bind.
98
+ }
99
+ else {
100
+ const providerType = classifyProvider(providerName);
101
+ const fallbackCap = providerType === "local"
102
+ ? quota.unknown_local_concurrency
103
+ : (quota.unknown_hosted_concurrency ?? 1);
104
+ if (fallbackCap === "unlimited") {
105
+ // no cap — "unlimited" intentionally skips clamping
106
+ }
107
+ else if (typeof fallbackCap === "number" && Number.isFinite(fallbackCap)) {
108
+ waveSize = Math.min(waveSize, Math.max(1, Math.floor(fallbackCap)));
109
+ }
110
+ // First-contact cap: when no learned history, no configured fallback, AND
111
+ // no RPM/TPM limits from any source, apply a conservative ceiling.
112
+ // This triggers only for unconfigured local providers (fallbackCap is
113
+ // undefined). Hosted providers default to 1 via unknown_hosted_concurrency,
114
+ // and "unlimited" is an explicit opt-out.
115
+ if (fallbackCap == null &&
116
+ limits.requests_per_minute == null &&
117
+ limits.input_tokens_per_minute == null) {
118
+ const firstContactCap = quota.first_contact_concurrency ?? 3;
119
+ waveSize = Math.min(waveSize, Math.max(1, firstContactCap));
120
+ }
121
+ }
122
+ }
123
+ // Apply real-time quota source data if available
124
+ if (quotaSourceSnapshot && !cooldownUntil) {
125
+ if (quotaSourceSnapshot.remaining_pct != null && quotaSourceSnapshot.remaining_pct < 0.1) {
126
+ waveSize = 1;
127
+ if (quotaSourceSnapshot.reset_at) {
128
+ cooldownUntil = quotaSourceSnapshot.reset_at;
129
+ }
130
+ }
131
+ else if (quotaSourceSnapshot.remaining_pct != null && quotaSourceSnapshot.remaining_pct < 0.3) {
132
+ waveSize = Math.min(waveSize, Math.max(1, Math.floor(waveSize * 0.5)));
133
+ }
134
+ }
135
+ waveSize = applyHostConcurrencyLimit(waveSize);
136
+ waveSize = Math.max(1, waveSize);
137
+ return {
138
+ wave_size: waveSize,
139
+ estimated_wave_tokens: slotsSorted ? sumTopN(slotsSorted, waveSize) : waveSize * avgTokens,
140
+ cooldown_until: cooldownUntil,
141
+ confidence,
142
+ source,
143
+ resolved_limits: limits,
144
+ host_concurrency_limit: hostConcurrencyLimit,
145
+ model: hostModel,
146
+ quota_source_snapshot: quotaSourceSnapshot,
147
+ };
148
+ }
149
+ /** Build the state key used for indexing quota-state.json entries. */
150
+ export function buildProviderModelKey(providerName, hostModel) {
151
+ return hostModel ? `${providerName}/${hostModel}` : `${providerName}/*`;
152
+ }
153
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,13 @@ export interface RunTrackedResult {
26
26
  }
27
27
  /** Quote a single argv token for a `cmd.exe /c "..."` command line. */
28
28
  export declare function quoteForCmd(arg: string): string;
29
+ /**
30
+ * Quote a single argv token for embedding inside a shell command line that is
31
+ * rendered as one string (e.g. a subprocess-template entry): `cmd.exe`
32
+ * double-quote doubling on Windows, POSIX single-quote escaping elsewhere.
33
+ * Shared by the subprocess-template provider in both orchestrators.
34
+ */
35
+ export declare function shellQuote(arg: string, platform?: NodeJS.Platform): string;
29
36
  /**
30
37
  * On Windows, package-manager shims (`npm`/`npx`/`pnpm`/`yarn`) are `.cmd`
31
38
  * batch files that `spawn` cannot launch without a shell. Map them to their
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/tooling/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlE,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAID,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAKR;AAqCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CAAO,GAC/D,MAAM,EAAE,CAWV;AAOD,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAgClB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/tooling/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlE,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAID,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAKR;AAqCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CAAO,GAC/D,MAAM,EAAE,CAWV;AAOD,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAgClB"}
@@ -8,6 +8,17 @@ export function quoteForCmd(arg) {
8
8
  return arg;
9
9
  return `"${arg.replace(/"/g, '""')}"`;
10
10
  }
11
+ /**
12
+ * Quote a single argv token for embedding inside a shell command line that is
13
+ * rendered as one string (e.g. a subprocess-template entry): `cmd.exe`
14
+ * double-quote doubling on Windows, POSIX single-quote escaping elsewhere.
15
+ * Shared by the subprocess-template provider in both orchestrators.
16
+ */
17
+ export function shellQuote(arg, platform = process.platform) {
18
+ if (platform === "win32")
19
+ return quoteForCmd(arg);
20
+ return "'" + arg.replace(/'/g, "'\\''") + "'";
21
+ }
11
22
  /**
12
23
  * On Windows, package-manager shims (`npm`/`npx`/`pnpm`/`yarn`) are `.cmd`
13
24
  * batch files that `spawn` cannot launch without a shell. Map them to their
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tooling/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tooling/exec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@audit-tools/shared",
3
- "version": "0.5.1",
3
+ "version": "0.5.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,6 +35,11 @@
35
35
  "engines": {
36
36
  "node": ">=20"
37
37
  },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/OhOkThisIsFine/audit-tools.git",
41
+ "directory": "packages/shared"
42
+ },
38
43
  "publishConfig": {
39
44
  "access": "public"
40
45
  }