@bybrawe/opencode-loop 0.5.15 → 0.5.17

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +34 -13
  3. package/agents/opencode-loop-local.md +10 -0
  4. package/commands/loop-ask.md +1 -0
  5. package/commands/loop-clear.md +1 -0
  6. package/commands/loop-cmd.md +1 -0
  7. package/commands/loop-command.md +1 -0
  8. package/commands/loop-compact.md +1 -0
  9. package/commands/loop-dev.md +1 -0
  10. package/commands/loop-doctor.md +1 -0
  11. package/commands/loop-export.md +1 -0
  12. package/commands/loop-goal-blocked.md +1 -0
  13. package/commands/loop-goal-clear.md +1 -0
  14. package/commands/loop-goal-done.md +1 -0
  15. package/commands/loop-goal-pause.md +1 -0
  16. package/commands/loop-goal-resume.md +1 -0
  17. package/commands/loop-goal-status.md +1 -0
  18. package/commands/loop-goal.md +1 -0
  19. package/commands/loop-help.md +1 -0
  20. package/commands/loop-init.md +1 -0
  21. package/commands/loop-logs.md +1 -0
  22. package/commands/loop-now.md +1 -0
  23. package/commands/loop-pause.md +1 -0
  24. package/commands/loop-progress.md +1 -0
  25. package/commands/loop-prompt.md +1 -0
  26. package/commands/loop-remove.md +1 -0
  27. package/commands/loop-resume.md +1 -0
  28. package/commands/loop-safe-dev.md +1 -0
  29. package/commands/loop-shell.md +1 -0
  30. package/commands/loop-status.md +1 -0
  31. package/commands/loop-stop.md +1 -0
  32. package/commands/loop-testfix.md +1 -0
  33. package/commands/loop.md +1 -0
  34. package/package.json +6 -5
  35. package/scripts/comprehensive-test.mjs +455 -0
  36. package/scripts/install-node.mjs +100 -4
  37. package/scripts/install-test.mjs +86 -0
  38. package/scripts/install.ps1 +6 -32
  39. package/scripts/install.sh +6 -34
  40. package/scripts/smoke-test.mjs +45 -2
  41. package/src/index.js +297 -41
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.17
4
+
5
+ - Prevented OpenCode project bootstrap deadlocks by deferring local SDK logging and session discovery until after plugin hooks are returned.
6
+ - Added a tool-denied `opencode-loop-local` command agent for all 30 slash commands, preventing local status/control commands from spawning tools or background subagents; scheduled work restores the normal agent/model context.
7
+ - Made the installer detect package-based plugin configuration in JSON or JSONC and remove duplicate local plugin copies instead of loading two schedulers.
8
+ - Fixed watched jobs so file changes actually trigger them, while unchanged paths remain dormant.
9
+ - Fixed preset parsing for explicit `0s`, flag-only presets, and custom `/loop-testfix` commands.
10
+ - Fixed command-event deduplication so compatibility events are suppressed without swallowing intentional repeated commands.
11
+ - Hardened safe shell detection for PowerShell and `rm` variants, removed the `npm run format` false positive, and paused invalid synchronous actions instead of retrying them indefinitely.
12
+ - Added comprehensive parser, preset, lifecycle, watch, safety, routing, goal, installer, JSONC, and initialization regression coverage.
13
+
14
+ ## 0.5.16
15
+
16
+ - Treat active OpenCode tools, shell calls, and foreground or background subtasks as busy even if the parent session receives an idle/status event while they are still running.
17
+ - Prevent stale active-run recovery from finalizing a loop turn while any tracked tool call remains active.
18
+ - Added regression coverage proving that a due loop waits for long-running tools and background child sessions, then resumes only after that work finishes and the parent session becomes idle.
19
+
3
20
  ## 0.5.15
4
21
 
5
22
  - Hardened experimental Goal Mode completion: agent tool completion now requires concrete evidence instead of accepting empty or generic claims.
package/README.md CHANGED
@@ -16,7 +16,7 @@ v0.5.11 includes a referenced heartbeat scheduler. This is important in OpenCode
16
16
 
17
17
  ## Current status
18
18
 
19
- **v0.5.15 is a Goal Mode and SDK compatibility hardening release.** It keeps the timer/watchdog reliability fixes from v0.5.11-v0.5.14, then tightens experimental goals with evidence-gated completion, passing-check requirements, no-progress pausing, user-message interruption, explicit workspace paths, and safer active-turn recovery. It also prefers the OpenCode plugin SDK argument shape while keeping fallbacks for older builds.
19
+ **v0.5.17 hardens command, installer, and scheduler behavior around the v0.5.16 busy-detection fix.** Long-running tools and child sessions remain authoritative busy signals. Local `/loop-*` commands now use a tool-denied acknowledgement agent, scheduled work restores the normal agent/model context, package/local duplicate loading is prevented, watched jobs fire correctly, and preset/safe-shell edge cases have regression coverage.
20
20
 
21
21
  The known update-related symptoms from older builds are fixed:
22
22
 
@@ -32,14 +32,14 @@ The known update-related symptoms from older builds are fixed:
32
32
 
33
33
  The TUI loop is still intentionally session-bound: it runs while OpenCode is open and the current session emits status/idle events. For long-running background work after closing the terminal or OpenCode, use `opencode-loopd`.
34
34
 
35
- ## v0.5.15 quick behavior guide
35
+ ## v0.5.17 quick behavior guide
36
36
 
37
37
  OpenCode Loop has two triggers now:
38
38
 
39
39
  1. **Idle/status events** from OpenCode. These are used when OpenCode finishes a turn.
40
40
  2. **A real due timer** inside the plugin. This wakes delayed jobs even when no new OpenCode event happens.
41
41
 
42
- All TUI jobs are still idle-safe. If the timer expires while OpenCode is busy, the job does not interrupt the active turn. It waits and retries until the session becomes idle.
42
+ All TUI jobs are still idle-safe. If the timer expires while OpenCode is busy, or while a tool/background child session is still executing, the job does not interrupt the active turn. It waits and retries until that work finishes and the parent session becomes idle.
43
43
 
44
44
  Simple examples:
45
45
 
@@ -79,7 +79,7 @@ Run a shell command every 10 minutes when idle.
79
79
 
80
80
  Experimental persistent goal mode: keep working until the goal is complete, blocked, paused, cleared, or a safety limit is reached.
81
81
 
82
- > Note: OpenCode custom command markdown still creates a tiny assistant turn for slash commands. v0.5.11 keeps these command templates short and asks the model to reply `OK`. The actual loop scheduling is handled locally by the plugin. If that short turn briefly makes OpenCode look busy, the loop now recovers with fresh status checks, stale-active-run recovery, and a watchdog that does not require another manual command.
82
+ > Note: OpenCode custom command markdown still creates an assistant turn for slash commands. v0.5.17 routes that acknowledgement through the installed `opencode-loop-local` agent, which denies tools and subagents. The real scheduled iteration explicitly restores the normal coding agent/model, so a status or control command cannot launch background exploration or leave later loop work tool-disabled.
83
83
 
84
84
  ## Why this exists
85
85
 
@@ -157,14 +157,14 @@ Use the npm installer from any shell: Windows PowerShell, Windows CMD, macOS, or
157
157
  npx -y @bybrawe/opencode-loop@latest
158
158
  ```
159
159
 
160
- The installer copies the plugin and slash command files into your OpenCode config directory. It also ensures that the config directory has a `package.json` dependency on `@opencode-ai/plugin`, which local `.ts` plugins need for the `tool()` helper.
161
- It also removes the old local `opencode-loop.js` copy from earlier releases so only the current local `opencode-loop.ts` plugin remains.
160
+ The installer copies the slash command files and the tool-denied local command agent into your OpenCode config directory. If `@bybrawe/opencode-loop` is already present in the OpenCode `plugin` array, that package entry remains authoritative and the installer removes duplicate local plugin copies. Otherwise it installs `opencode-loop.ts` locally and ensures the config directory has the `@opencode-ai/plugin` dependency required by `tool()`.
162
161
 
163
162
  Windows target paths:
164
163
 
165
164
  ```text
166
165
  %USERPROFILE%\.config\opencode\plugins\opencode-loop.ts
167
166
  %USERPROFILE%\.config\opencode\commands\loop*.md
167
+ %USERPROFILE%\.config\opencode\agents\opencode-loop-local.md
168
168
  ```
169
169
 
170
170
  macOS / Linux target paths:
@@ -172,6 +172,7 @@ macOS / Linux target paths:
172
172
  ```text
173
173
  ~/.config/opencode/plugins/opencode-loop.ts
174
174
  ~/.config/opencode/commands/loop*.md
175
+ ~/.config/opencode/agents/opencode-loop-local.md
175
176
  ```
176
177
 
177
178
  Then fully restart OpenCode and run:
@@ -195,9 +196,9 @@ The `npx` installer installs both parts:
195
196
 
196
197
  - the OpenCode plugin file
197
198
  - the `/loop-*` command markdown files
199
+ - the tool-denied `opencode-loop-local` acknowledgement agent
198
200
 
199
- Use the OpenCode config-only method only if you already installed the command files separately or you are only testing plugin loading.
200
- Do not use the config package entry and the local `npx`-installed plugin at the same time unless you intentionally want to test duplicate plugin loading.
201
+ The installer automatically avoids loading both the package entry and a local plugin copy. It can therefore be rerun safely after switching installation styles.
201
202
 
202
203
  ### Optional: OpenCode config package entry
203
204
 
@@ -220,7 +221,7 @@ If `/loop` does not appear after using only the config method, run the installer
220
221
  npx -y @bybrawe/opencode-loop
221
222
  ```
222
223
 
223
- If you later switch back to the recommended `npx` local install, remove `@bybrawe/opencode-loop` from the `plugin` array to avoid loading the package plugin and local plugin together.
224
+ If you later remove `@bybrawe/opencode-loop` from the `plugin` array, rerun the installer so it restores the local plugin copy.
224
225
 
225
226
  ### Install from GitHub
226
227
 
@@ -257,16 +258,19 @@ Windows PowerShell:
257
258
  ```powershell
258
259
  mkdir "$env:USERPROFILE\.config\opencode\plugins" -Force
259
260
  mkdir "$env:USERPROFILE\.config\opencode\commands" -Force
261
+ mkdir "$env:USERPROFILE\.config\opencode\agents" -Force
260
262
  copy .\src\index.js "$env:USERPROFILE\.config\opencode\plugins\opencode-loop.ts"
261
263
  copy .\commands\*.md "$env:USERPROFILE\.config\opencode\commands\"
264
+ copy .\agents\*.md "$env:USERPROFILE\.config\opencode\agents\"
262
265
  ```
263
266
 
264
267
  macOS / Linux:
265
268
 
266
269
  ```bash
267
- mkdir -p ~/.config/opencode/plugins ~/.config/opencode/commands
270
+ mkdir -p ~/.config/opencode/plugins ~/.config/opencode/commands ~/.config/opencode/agents
268
271
  cp ./src/index.js ~/.config/opencode/plugins/opencode-loop.ts
269
272
  cp ./commands/*.md ~/.config/opencode/commands/
273
+ cp ./agents/*.md ~/.config/opencode/agents/
270
274
  ```
271
275
 
272
276
  ### Project-local install
@@ -274,9 +278,10 @@ cp ./commands/*.md ~/.config/opencode/commands/
274
278
  Use this when you want the plugin to be available only inside one repository.
275
279
 
276
280
  ```bash
277
- mkdir -p .opencode/plugins .opencode/commands
281
+ mkdir -p .opencode/plugins .opencode/commands .opencode/agents
278
282
  cp ./src/index.js .opencode/plugins/opencode-loop.ts
279
283
  cp ./commands/*.md .opencode/commands/
284
+ cp ./agents/*.md .opencode/agents/
280
285
  ```
281
286
 
282
287
  On Windows PowerShell:
@@ -284,8 +289,10 @@ On Windows PowerShell:
284
289
  ```powershell
285
290
  mkdir .opencode\plugins -Force
286
291
  mkdir .opencode\commands -Force
292
+ mkdir .opencode\agents -Force
287
293
  copy .\src\index.js .opencode\plugins\opencode-loop.ts
288
294
  copy .\commands\*.md .opencode\commands\
295
+ copy .\agents\*.md .opencode\agents\
289
296
  ```
290
297
 
291
298
  ### Verify installation
@@ -302,7 +309,8 @@ If the commands do not appear:
302
309
  1. Make sure OpenCode was fully restarted.
303
310
  2. Check that `opencode-loop.ts` exists in the OpenCode plugin directory.
304
311
  3. Check that `loop.md`, `loop-help.md`, and the other command files exist in the OpenCode commands directory.
305
- 4. Run `npx -y @bybrawe/opencode-loop` again to reinstall the command files.
312
+ 4. Check that `opencode-loop-local.md` exists in the OpenCode agents directory.
313
+ 5. Run `npx -y @bybrawe/opencode-loop` again to reinstall the command and agent files.
306
314
 
307
315
  ## Quick start
308
316
 
@@ -352,7 +360,7 @@ Experimental goal mode: keep working until the objective is actually done, block
352
360
 
353
361
  ### What “when idle” means
354
362
 
355
- OpenCode Loop is idle-safe. It does **not** intentionally start a new agent turn while OpenCode is already busy.
363
+ OpenCode Loop is idle-safe. It does **not** intentionally start a new agent turn while OpenCode is already busy. Active tool calls and running child sessions also count as busy, even if OpenCode emits a premature idle/status signal for the parent during long-running background work.
356
364
 
357
365
  Example:
358
366
 
@@ -1112,6 +1120,19 @@ Improve the application in small safe steps.
1112
1120
 
1113
1121
  ## Changelog highlights
1114
1122
 
1123
+ ### v0.5.17
1124
+
1125
+ - Added a tool-denied local command agent and restored the normal coding agent/model for scheduled iterations.
1126
+ - Prevented package/local duplicate plugin loading and deferred bootstrap SDK calls to avoid project startup deadlocks.
1127
+ - Fixed watched jobs, preset parsing, repeated-command deduplication, safe-shell patterns, and invalid-action retry storms.
1128
+ - Added comprehensive command, lifecycle, installer, JSONC, scheduler, and safety regression tests.
1129
+
1130
+ ### v0.5.16
1131
+
1132
+ - Treat active tools, shell calls, and running foreground/background child sessions as busy even when the parent session appears idle.
1133
+ - Prevent stale-run recovery from enqueueing another continuation while tracked background work is still active.
1134
+ - Added regression tests for long-running tool calls and background child sessions.
1135
+
1115
1136
  ### v0.5.15
1116
1137
 
1117
1138
  - Hardened experimental Goal Mode completion with concrete evidence, passing-check requirements, no-progress pausing, and user-message interruption.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Handles OpenCode Loop slash-command acknowledgements without tools.
3
+ mode: primary
4
+ permission:
5
+ "*": deny
6
+ ---
7
+
8
+ The OpenCode Loop plugin has already handled the slash command locally.
9
+ Never call tools, spawn subagents, inspect files, or perform additional work.
10
+ Reply exactly: OK
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Schedule a recurring prompt/question. Usage: /loop-ask 1h did you run tests?
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop ask scheduler handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Clear all OpenCode Loop jobs for this session.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop clear command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Alias for /loop-command. Usage: /loop-cmd 200m /compact
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop command scheduler handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Schedule an OpenCode slash command loop. Usage: /loop-command 200m /compact
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop command scheduler handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Run OpenCode Loop diagnostics.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop doctor command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Export OpenCode Loop state.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop export command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Mark experimental goal blocked.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal blocked command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Clear experimental goal jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal clear command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Mark experimental goal done.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal done command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Pause experimental goal jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal pause command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Resume experimental goal jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal resume command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Show experimental goal status.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal status command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Experimental persistent goal mode. Usage: /loop-goal finish the feature and keep tests green
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop experimental goal command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Show OpenCode Loop help.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop help command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Create a starter progress.md file.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop init command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Show OpenCode Loop logs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop logs command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Run due OpenCode Loop jobs now when idle.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop run-now command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Pause OpenCode Loop jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop pause command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Schedule a recurring prompt loop. Usage: /loop-prompt 1h continue the project
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop prompt scheduler received. The OpenCode Loop plugin handles this recurring prompt locally. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Resume OpenCode Loop jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop resume command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Schedule a recurring shell command. Usage: /loop-shell 10m npm test
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop shell scheduler handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Show OpenCode Loop status.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop status command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Stop OpenCode Loop jobs.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop stop command handled locally. Reply exactly: OK.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: OpenCode Loop plugin command.
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  Loop command received. The OpenCode Loop plugin handles this command. Do not explain this command, do not search the web, do not create scheduler files, and do not run extra shell commands because of this command.
package/commands/loop.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Start an OpenCode auto-continue loop. Usage: /loop 5m <task>
3
+ agent: opencode-loop-local
3
4
  ---
4
5
 
5
6
  OpenCode Loop local command handled. Reply exactly: OK.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bybrawe/opencode-loop",
3
- "version": "0.5.15",
3
+ "version": "0.5.17",
4
4
  "description": "Claude Code/Codex style /loop and experimental goal mode for OpenCode: heartbeat scheduler, idle-safe loops, scheduled commands, compact scheduling, verification, checkpoints, and persistent coding goals.",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -10,6 +10,7 @@
10
10
  "files": [
11
11
  "src",
12
12
  "commands",
13
+ "agents",
13
14
  "scripts",
14
15
  "examples",
15
16
  "README.md",
@@ -17,8 +18,8 @@
17
18
  "CHANGELOG.md"
18
19
  ],
19
20
  "scripts": {
20
- "check": "node --check src/index.js && node --check scripts/install-node.mjs && node --check scripts/loopd.mjs && node --check scripts/smoke-test.mjs",
21
- "test": "node scripts/smoke-test.mjs",
21
+ "check": "node --check src/index.js && node --check scripts/install-node.mjs && node --check scripts/loopd.mjs && node --check scripts/install-test.mjs && node --check scripts/smoke-test.mjs && node --check scripts/comprehensive-test.mjs",
22
+ "test": "node scripts/install-test.mjs && node scripts/smoke-test.mjs && node scripts/comprehensive-test.mjs",
22
23
  "install:global": "node scripts/install-node.mjs",
23
24
  "pack:zip": "node scripts/make-zip.mjs"
24
25
  },
@@ -59,8 +60,8 @@
59
60
  "@opencode-ai/plugin": "^1.4.0"
60
61
  },
61
62
  "bin": {
62
- "opencode-loop": "./scripts/install-node.mjs",
63
- "opencode-loopd": "./scripts/loopd.mjs"
63
+ "opencode-loop": "scripts/install-node.mjs",
64
+ "opencode-loopd": "scripts/loopd.mjs"
64
65
  },
65
66
  "publishConfig": {
66
67
  "access": "public"