claude-spotter 1.9.0 → 1.9.1

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,12 @@
3
3
  各節はそのversion公開時点の変更記録であり、後続versionにより置換された仕様を含む。
4
4
  現行runtime契約は[`docs/00_overview.md`](https://github.com/kitepon/Spotter/blob/main/docs/00_overview.md)から辿る。
5
5
 
6
+ ## 1.9.1 — 2026-10-03
7
+
8
+ - runtime-error定期送信のlaunchd/systemd雛形を、NodeとCLI本体を絶対pathで起動する形へ修正。launchdの既定PATHにNodeが無く
9
+ `env node` shebangがexit 127で失敗する問題と、systemd user unitが導入時と異なるsystem Nodeを選ぶ問題を解消する。
10
+ - Windows Task Schedulerへ1時間ごとの送信taskをconsole非表示で登録するinstallerを追加。
11
+
6
12
  ## 1.9.0 — 2026-10-03
7
13
 
8
14
  - Spotter自身が端末内runtime-errorの累計をBugHubへ送るopt-in CLIを追加。署名済み受領だけでackし、既定では通信しない。
package/README.ja.md CHANGED
@@ -314,8 +314,13 @@ BugHub担当が別途、端末ごとの合鍵を`~/.config/bughub/product-creden
314
314
  `spotter runtime-errors report`を実行し、継続時はlaunchd、systemd user timer、Windows Task Schedulerで
315
315
  同じコマンドを1時間に1回起動します。未受領だけを送信し、署名を検証した200応答だけでackします。
316
316
  配布物の`ops/runtime-reporting/`にlaunchdとsystemd user timerの雛形があります。
317
- `REPLACE_WITH_ABSOLUTE_SPOTTER_PATH`を導入済みCLIの絶対pathへ替えてから登録します。
318
- Windowsでは同じ利用者のTask Schedulerへ`spotter.cmd runtime-errors report`を1時間ごとに登録します。
317
+ 登録前に、`REPLACE_WITH_ABSOLUTE_NODE_PATH`をSpotterを導入したNode.jsの絶対path(`command -v node`)へ、
318
+ `REPLACE_WITH_ABSOLUTE_SPOTTER_SCRIPT_PATH`を導入済みの`claude-spotter/bin/spotter.mjs`の絶対path
319
+ (`realpath "$(command -v spotter)"`)へ替えます。service managerはlogin shellのPATHを読みません。
320
+ launchdの既定PATHにはHomebrewやnvmのdirectoryが無く、CLIの`env node` shebangは起動に失敗します。
321
+ systemd user unitは別のsystem Nodeを選ぶことがあります。そのため雛形はNodeを直接起動します。
322
+ Windowsでは同じ利用者で、導入済みpackageの`ops\runtime-reporting\windows\install-runtime-errors-task.ps1`を
323
+ 実行します。1時間ごとの`spotter-runtime-errors` taskを、console windowを隠して登録します。
319
324
  422が返った版は再送を止め、修正版を導入すると再試行します。無効化は`reporting.enabled`を`false`にします。
320
325
  401/403で拒まれた合鍵は入れ替わるまで再送を止めます。時計ずれはackせず、時刻修正後に再試行します。
321
326
 
package/README.md CHANGED
@@ -343,9 +343,14 @@ BugHub's operator supplies a separate `0600` credential at
343
343
  `~/.config/bughub/product-credentials/spotter.json` (Windows:
344
344
  `%LOCALAPPDATA%\bughub\product-credentials\spotter.json`). Run `spotter runtime-errors report`
345
345
  once, then schedule the same command hourly with launchd, a systemd user timer, or Windows Task Scheduler.
346
- The package includes launchd and systemd templates in `ops/runtime-reporting/`; replace
347
- `REPLACE_WITH_ABSOLUTE_SPOTTER_PATH` with the installed CLI path before registering them. On Windows,
348
- register an hourly task for the installed `spotter.cmd runtime-errors report` under the same user account.
346
+ The package includes launchd and systemd templates in `ops/runtime-reporting/`. Before registering them,
347
+ replace `REPLACE_WITH_ABSOLUTE_NODE_PATH` with the Node.js binary that installed Spotter (`command -v node`)
348
+ and `REPLACE_WITH_ABSOLUTE_SPOTTER_SCRIPT_PATH` with the installed `claude-spotter/bin/spotter.mjs`
349
+ (`realpath "$(command -v spotter)"`). The templates start Node directly because a service manager does not
350
+ read the login shell's PATH: launchd's default PATH has no Homebrew or nvm directory, so the CLI's
351
+ `env node` shebang fails there, and a systemd user unit may resolve a different system Node. On Windows,
352
+ run `ops\runtime-reporting\windows\install-runtime-errors-task.ps1` from the installed package as the
353
+ same user; it registers the hourly `spotter-runtime-errors` task with a hidden console window.
349
354
  Only unacknowledged records are sent. A signed 200 response advances the cursor; timeout, 5xx, or an
350
355
  unverified response leaves it pending. A 422 blocks further sends for that installed version until a
351
356
  corrected Spotter version is installed; the block marker is under the private `~/.spotter` state directory
@@ -3,7 +3,8 @@
3
3
  <plist version="1.0"><dict>
4
4
  <key>Label</key><string>dev.spotter.runtime-errors</string>
5
5
  <key>ProgramArguments</key><array>
6
- <string>REPLACE_WITH_ABSOLUTE_SPOTTER_PATH</string>
6
+ <string>REPLACE_WITH_ABSOLUTE_NODE_PATH</string>
7
+ <string>REPLACE_WITH_ABSOLUTE_SPOTTER_SCRIPT_PATH</string>
7
8
  <string>runtime-errors</string><string>report</string>
8
9
  </array>
9
10
  <key>StartInterval</key><integer>3600</integer>
@@ -3,4 +3,4 @@ Description=Send pending Spotter runtime errors to owner-LAN BugHub
3
3
 
4
4
  [Service]
5
5
  Type=oneshot
6
- ExecStart=REPLACE_WITH_ABSOLUTE_SPOTTER_PATH runtime-errors report
6
+ ExecStart=REPLACE_WITH_ABSOLUTE_NODE_PATH REPLACE_WITH_ABSOLUTE_SPOTTER_SCRIPT_PATH runtime-errors report
@@ -0,0 +1,11 @@
1
+ $ErrorActionPreference = 'Stop'
2
+ $ops = Split-Path -Parent $MyInvocation.MyCommand.Path
3
+ $powershell = "$env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe"
4
+ $principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Limited
5
+ $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit (New-TimeSpan -Minutes 5)
6
+ $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1)
7
+
8
+ $action = New-ScheduledTaskAction -Execute $powershell -Argument "-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ops\spotter-runtime-errors.ps1`""
9
+ Register-ScheduledTask -TaskName 'spotter-runtime-errors' -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description 'Send pending Spotter runtime errors to owner-LAN BugHub hourly' -Force | Out-Null
10
+
11
+ Start-ScheduledTask -TaskName 'spotter-runtime-errors'
@@ -0,0 +1,4 @@
1
+ $ErrorActionPreference = 'Stop'
2
+ $spotter = Join-Path $env:APPDATA 'npm\spotter.cmd'
3
+ & $spotter runtime-errors report
4
+ exit $LASTEXITCODE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-spotter",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Audit agent running alongside Claude Code that catches missed tool calls — 気づく役と実行する役の分離",
5
5
  "type": "module",
6
6
  "bin": {