claude-spotter 1.5.13 → 1.5.14

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 CHANGED
@@ -3,6 +3,14 @@
3
3
  各節はそのversion公開時点の変更記録であり、後続versionにより置換された仕様を含む。
4
4
  現行runtime契約は[`docs/00_overview.md`](docs/00_overview.md)から辿る。
5
5
 
6
+ ## 1.5.14 — 2026-08-24
7
+
8
+ - **挙動不変のOS層整理(harness用語統一campaignの分離規約)。** Windows絶対パス表記
9
+ (ドライブレター/UNC)の判定を`src/platform/paths.mjs`の`isWindowsAbsolutePath()`へ集約し、
10
+ tool-db側の独自regexを委譲へ置換。runtime-error-storeの`killWorkerTree`には
11
+ `terminateProcessTree`と意図的に別物である理由(絶対にrejectしないbest-effort掃除)を明記した。
12
+ 公開面・挙動は不変。
13
+
6
14
  ## 1.5.13 — 2026-08-23
7
15
 
8
16
  - **OS依存を`src/platform/`へ集約。** 6ファイルへ重複していたWindowsのcmd.exe /c wrap・
@@ -1,6 +1,6 @@
1
1
  # Spotter評価dashboard運用
2
2
 
3
- 現行npm配布版: **v1.5.13**(2026-08-23)。v1.5.13はOS依存・ベンダー依存の内部配置だけを
3
+ 現行npm配布版: **v1.5.14**(2026-08-24)。v1.5.13はOS依存・ベンダー依存の内部配置だけを
4
4
  変更した挙動同一リファクタで、評価・dashboardのrouting構成は変更していない。
5
5
 
6
6
  この文書はservice設定の正本であり、各端末に現在installされているnpm versionの台帳ではない。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-spotter",
3
- "version": "1.5.13",
3
+ "version": "1.5.14",
4
4
  "description": "Audit agent running alongside Claude Code that catches missed tool calls — 気づく役と実行する役の分離",
5
5
  "type": "module",
6
6
  "bin": {
@@ -292,6 +292,8 @@ function runRuntimeWorker(workerPath, args, timeoutMs, signal) {
292
292
  });
293
293
  }
294
294
 
295
+ // platform/spawn.mjs の terminateProcessTree と似るが意図的に別物: こちらは受領記録の
296
+ // best-effort掃除で、絶対にrejectせず(SIGKILL直行・225ms fallback)呼び出し元を止めない。
295
297
  function killWorkerTree(child) {
296
298
  if (!Number.isSafeInteger(child?.pid) || child.pid <= 0) return Promise.resolve();
297
299
  if (process.platform === 'win32') {
@@ -58,3 +58,8 @@ export function normalizeProjectPath(p) {
58
58
  s = s.replace(/\/+$/, '');
59
59
  return s;
60
60
  }
61
+
62
+ // Windows絶対パス表記(ドライブレター/UNC)の判定。パス表記のOS差はこのfileが所有する。
63
+ export function isWindowsAbsolutePath(value) {
64
+ return /^(?:[A-Za-z]:\\|\\\\)/u.test(value);
65
+ }
@@ -10,6 +10,7 @@
10
10
  // 5. ← tools/list result (response with tools[] each having {name, description})
11
11
 
12
12
  import { spawn } from 'node:child_process';
13
+ import { isWindowsAbsolutePath } from '../platform/paths.mjs';
13
14
  import { execFileWindowsSafe, windowsCompatibleCommand } from '../platform/spawn.mjs';
14
15
  import { listToolsHttp } from './investigate-mcp-http.mjs';
15
16
  import { readMcpServers, describeServer } from './mcp-config.mjs';
@@ -186,7 +187,7 @@ export function splitCommandLine(s) {
186
187
  }
187
188
 
188
189
  function extractUnquotedWindowsExecutable(s) {
189
- if (!/^(?:[A-Za-z]:\\|\\\\)/u.test(s)) return null;
190
+ if (!isWindowsAbsolutePath(s)) return null;
190
191
  const match = s.match(/^(.+?\.(?:exe|cmd|bat))(?:\s+|$)(.*)$/iu);
191
192
  if (!match) return null;
192
193
  return { command: match[1], rest: match[2].trim() };