@bradygaster/squad-cli 0.9.4 → 0.9.5-insider.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,127 +0,0 @@
1
- /**
2
- * Shared agent spawn utilities for watch capabilities.
3
- *
4
- * Centralises `buildAgentCommand()` and `spawnWithTimeout()` so every
5
- * capability uses the same logic, respects `agentCmd` from config,
6
- * and works on Windows (shell: true when win32).
7
- *
8
- * @see https://github.com/bradygaster/squad/issues/920
9
- * @see https://github.com/bradygaster/squad/issues/923
10
- */
11
- import { execFile, execFileSync } from 'node:child_process';
12
- /** True when running on Windows — used to gate `shell: true`. */
13
- export const IS_WINDOWS = process.platform === 'win32';
14
- /**
15
- * Cached result of copilot CLI detection.
16
- * `null` means we haven't checked yet.
17
- */
18
- let _copilotResolved = null;
19
- /**
20
- * Detect which copilot CLI is available at runtime.
21
- *
22
- * Tries standalone `copilot` first (modern default). If that fails,
23
- * falls back to `gh copilot` (legacy). The result is cached for the
24
- * lifetime of the process so we only shell-out once.
25
- *
26
- * @returns `{ cmd, cmdPrefix }` — e.g. `{ cmd: 'copilot', cmdPrefix: [] }`
27
- * or `{ cmd: 'gh', cmdPrefix: ['copilot'] }`.
28
- */
29
- export function resolveCopilotCmd() {
30
- if (_copilotResolved)
31
- return _copilotResolved;
32
- try {
33
- execFileSync('copilot', ['--version'], {
34
- stdio: 'ignore',
35
- timeout: 5_000,
36
- shell: IS_WINDOWS,
37
- });
38
- _copilotResolved = { cmd: 'copilot', cmdPrefix: [] };
39
- }
40
- catch {
41
- // Standalone copilot not found — fall back to gh copilot
42
- _copilotResolved = { cmd: 'gh', cmdPrefix: ['copilot'] };
43
- }
44
- return _copilotResolved;
45
- }
46
- /**
47
- * Reset the cached copilot detection. Exported for testing only.
48
- * @internal
49
- */
50
- export function _resetCopilotDetection() {
51
- _copilotResolved = null;
52
- }
53
- /**
54
- * Build the command + args array for an agent invocation.
55
- *
56
- * Resolution order:
57
- * 1. `context.agentCmd` (explicit override from config / CLI)
58
- * 2. Runtime detection via `resolveCopilotCmd()`:
59
- * - standalone `copilot` if available on PATH
60
- * - `gh copilot` as fallback
61
- */
62
- export function buildAgentCommand(prompt, context) {
63
- if (context.agentCmd) {
64
- const parts = context.agentCmd.trim().split(/\s+/);
65
- const cmd = parts[0];
66
- const args = [...parts.slice(1), '--message', prompt];
67
- return { cmd, args };
68
- }
69
- // Default: detect available copilot CLI at runtime (cached)
70
- const { cmd, cmdPrefix } = resolveCopilotCmd();
71
- const args = [...cmdPrefix, '--message', prompt];
72
- if (context.copilotFlags) {
73
- args.push(...context.copilotFlags.trim().split(/\s+/));
74
- }
75
- return { cmd, args };
76
- }
77
- /**
78
- * Spawn an agent command with a timeout.
79
- *
80
- * Uses `shell: true` on Windows so that `.cmd`/`.bat` wrappers and
81
- * PATH resolution work correctly.
82
- */
83
- export function spawnWithTimeout(cmd, args, cwd, timeoutMs) {
84
- return new Promise((resolve, reject) => {
85
- execFile(cmd, args, {
86
- cwd,
87
- timeout: timeoutMs,
88
- maxBuffer: 50 * 1024 * 1024,
89
- shell: IS_WINDOWS,
90
- }, (err) => {
91
- if (err) {
92
- const execErr = err;
93
- reject(new Error(execErr.killed
94
- ? `Timed out after ${Math.round(timeoutMs / 1000)}s`
95
- : execErr.message));
96
- }
97
- else {
98
- resolve();
99
- }
100
- });
101
- });
102
- }
103
- /**
104
- * Spawn an agent command with a timeout, resolving with success/error
105
- * instead of rejecting. Used by execute and wave-dispatch where the
106
- * caller wants to handle failure without try/catch.
107
- */
108
- export function spawnAgent(cmd, args, cwd, timeoutMs) {
109
- return new Promise((resolve) => {
110
- execFile(cmd, args, {
111
- cwd,
112
- timeout: timeoutMs,
113
- maxBuffer: 50 * 1024 * 1024,
114
- shell: IS_WINDOWS,
115
- }, (err) => {
116
- if (err) {
117
- const execErr = err;
118
- const msg = execErr.killed ? 'Timed out' : execErr.message;
119
- resolve({ success: false, error: msg });
120
- }
121
- else {
122
- resolve({ success: true });
123
- }
124
- });
125
- });
126
- }
127
- //# sourceMappingURL=agent-spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-spawn.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/agent-spawn.ts"],"names":[],"mappings":"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"}