kiro-spec-engine 1.45.9 → 1.45.11
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 +10 -0
- package/lib/orchestrator/agent-spawner.js +14 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.45.11] - 2026-02-13
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Windows filename special characters**: `AgentSpawner.spawn()` now sanitizes agentId by removing Windows reserved characters `[:<>"|?*]` before using in temp file path, fixing file path parsing errors when agentId contains colon (e.g., `"zeno-v4-uuid:1"` format)
|
|
14
|
+
|
|
15
|
+
## [1.45.10] - 2026-02-13
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- **Windows prompt temp file write failure**: `AgentSpawner.spawn()` now performs shell argument escaping BEFORE extracting prompt from finalArgs, fixing empty temp file issue (0 bytes) that caused `error: unexpected argument 'Spec' found` in v1.45.9
|
|
19
|
+
|
|
10
20
|
## [1.45.9] - 2026-02-13
|
|
11
21
|
|
|
12
22
|
### Fixed
|
|
@@ -104,17 +104,6 @@ class AgentSpawner extends EventEmitter {
|
|
|
104
104
|
let stdinPrompt = null;
|
|
105
105
|
const finalArgs = [...prependArgs, ...args];
|
|
106
106
|
|
|
107
|
-
if (isWindows) {
|
|
108
|
-
// Remove the prompt (last element of args portion) from command line
|
|
109
|
-
// and deliver it via stdin to avoid cmd.exe length limit.
|
|
110
|
-
stdinPrompt = finalArgs.pop(); // remove prompt
|
|
111
|
-
// If the prompt was quoted by the escaping below, unwrap it
|
|
112
|
-
if (stdinPrompt.startsWith('"') && stdinPrompt.endsWith('"')) {
|
|
113
|
-
stdinPrompt = stdinPrompt.slice(1, -1).replace(/\\"/g, '"');
|
|
114
|
-
}
|
|
115
|
-
useStdinPrompt = true;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
107
|
// When shell: true, Node.js concatenates args into a single string without
|
|
119
108
|
// escaping. Arguments containing spaces must be quoted so the shell does
|
|
120
109
|
// not split them into separate tokens.
|
|
@@ -126,6 +115,17 @@ class AgentSpawner extends EventEmitter {
|
|
|
126
115
|
}
|
|
127
116
|
}
|
|
128
117
|
|
|
118
|
+
if (isWindows) {
|
|
119
|
+
// Remove the prompt (last element of args portion) from command line
|
|
120
|
+
// and deliver it via stdin to avoid cmd.exe length limit.
|
|
121
|
+
stdinPrompt = finalArgs.pop(); // remove prompt
|
|
122
|
+
// If the prompt was quoted by the escaping above, unwrap it
|
|
123
|
+
if (stdinPrompt.startsWith('"') && stdinPrompt.endsWith('"')) {
|
|
124
|
+
stdinPrompt = stdinPrompt.slice(1, -1).replace(/\\"/g, '"');
|
|
125
|
+
}
|
|
126
|
+
useStdinPrompt = true;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
129
|
const env = { ...process.env, [apiKeyEnvVar]: apiKey };
|
|
130
130
|
|
|
131
131
|
// When using stdin for the prompt, write it to a temp file and pass
|
|
@@ -134,7 +134,9 @@ class AgentSpawner extends EventEmitter {
|
|
|
134
134
|
// write prompt → pass file path via shell read.
|
|
135
135
|
let promptTmpFile = null;
|
|
136
136
|
if (useStdinPrompt) {
|
|
137
|
-
|
|
137
|
+
// Sanitize agentId for use in filename - remove Windows reserved characters: < > : " | ? *
|
|
138
|
+
const safeAgentId = agentId.replace(/[:<>"|?*]/g, '-');
|
|
139
|
+
promptTmpFile = path.join(os.tmpdir(), `kse-prompt-${safeAgentId}-${Date.now()}.txt`);
|
|
138
140
|
fs.writeFileSync(promptTmpFile, stdinPrompt, 'utf-8');
|
|
139
141
|
}
|
|
140
142
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiro-spec-engine",
|
|
3
|
-
"version": "1.45.
|
|
3
|
+
"version": "1.45.11",
|
|
4
4
|
"description": "kiro-spec-engine (kse) - A CLI tool and npm package for spec-driven development with AI coding assistants. NOT the Kiro IDE desktop application.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|