@lawaty/lacode 0.4.1 → 0.5.0
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 +44 -1
- package/README.md +130 -551
- package/dist/agents.js +115 -3
- package/dist/commands.js +62 -15
- package/dist/index.js +326 -62
- package/dist/lacode.js +253 -11
- package/dist/pool.js +17 -6
- package/docs/CONFIGURATION.md +113 -0
- package/docs/INSTALL.md +209 -0
- package/docs/OMNIROUTE.md +232 -0
- package/package.json +1 -1
- package/presets/README.md +2 -2
- package/presets/free-tier.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,48 @@ commit as the changelog entry it describes.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.5.0] — a user-only /manager-directive, instant limit failover, and the longcat preset
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`/manager-directive <text>`** — a client-only command that runs a hidden
|
|
17
|
+
`manager` agent to apply your instruction to `.opencode/context/manager.md`
|
|
18
|
+
(record it, move it between sections, rewrite `## Current`, …). The `manager`
|
|
19
|
+
agent is the only agent permitted to edit that file, its grant is scoped to
|
|
20
|
+
`manager.md` alone, and no other agent can spawn it — the command is the only
|
|
21
|
+
route in. The one-writer guard (`writer-rule.ts` Direction 3) now exempts
|
|
22
|
+
exactly that agent name and still reports every other writer.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **Bundled pool preset** — `opencode-go/step-5-preview-free` and
|
|
27
|
+
`opencode/step-5-preview-free` were retired upstream. Slots 2 and 4 now name
|
|
28
|
+
`longcat-2.5-preview-free` on the same providers (`opencode-go`, `opencode`).
|
|
29
|
+
Update `~/.config/lacode/pool.txt` if you pinned the old ids there.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- **Immediate failover on a usage limit** — when a limit-shaped assistant error or
|
|
34
|
+
a limit-shaped `session.status` retry names the session an in-flight claim is
|
|
35
|
+
running on, the pool aborts that session at once instead of leaving it for the
|
|
36
|
+
~5-minute hang reaper. The claim is released and the next spawn routes to a slot
|
|
37
|
+
that answers; a limit on an unrelated session never kills a claim.
|
|
38
|
+
|
|
39
|
+
## [0.4.2] — fix silent claim eviction, unkillable chatty tasks, and gateway 5xx misclassification
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **Heartbeat-aware claim publishing**: `publish()` now filters claims by `(claim.hb ?? claim.t)` instead of `claim.t`, matching how `pruneOwn` and `readSiblings` already judge liveness. A claim past `CLAIM_TTL_MS` with a fresh heartbeat was being written out of its own file, causing every other process to hand the slot out again while the task still held it.
|
|
44
|
+
- **Claim ceiling (`MAX_CLAIM_AGE_MS`)**: a claim older than 30 minutes is now condemned regardless of activity. Previously, any message event reset the silence clock, so a task that hung while trickling output could reset it forever and never be killed. The ceiling is checked first; a claim that is both past it and silent is reported as `overran`, not `hung`.
|
|
45
|
+
- **Single condemn rule**: `condemnReason()` is now the one place the condemn logic lives. Both `findStuck()` (the reaper) and `pool_status` use it, so a claim the status reports as healthy cannot be one the reaper is about to kill.
|
|
46
|
+
- **Gateway 5xx and transient errors take the flat cooldown**: a 502, 503, 504, queue-budget exhaustion, or `TimeoutError` now cools the model flat (~60s, `strikes: 1`, reason `endpoint-unavailable`) instead of falling through unhandled. A real 429 or limit-shaped error still escalates through `recordStrike` unchanged.
|
|
47
|
+
- **Reaper log distinguishes `overran` from `hung`**: a ceiling kill logs `overran <variant> on <model> after <age>s; aborted session <id>` with no silence claim; a silence kill keeps the existing `hung` wording.
|
|
48
|
+
- **`pool_status` reports `overran` count**: a new line shows how many claims are past the ceiling and would be condemned, matching the reaper's own judgment.
|
|
49
|
+
|
|
50
|
+
### Documented
|
|
51
|
+
|
|
52
|
+
- `docs/OMNIROUTE.md`: corrected the `ProviderModelNotFoundError` troubleshooting row — `combo` is registered whether or not the gateway advertises it, so a valid gateway route works there without an allowlist entry.
|
|
53
|
+
|
|
12
54
|
## [0.4.1] — refuse hand-named slot variants, and ship a changelog
|
|
13
55
|
|
|
14
56
|
### Added
|
|
@@ -151,7 +193,8 @@ commit as the changelog entry it describes.
|
|
|
151
193
|
|
|
152
194
|
- First published release: pooled subagents over a shared set of models.
|
|
153
195
|
|
|
154
|
-
[Unreleased]: https://github.com/lawaty/lacode/compare/v0.
|
|
196
|
+
[Unreleased]: https://github.com/lawaty/lacode/compare/v0.5.0...HEAD
|
|
197
|
+
[0.5.0]: https://github.com/lawaty/lacode/compare/v0.4.2...v0.5.0
|
|
155
198
|
[0.4.1]: https://github.com/lawaty/lacode/compare/v0.4.0...v0.4.1
|
|
156
199
|
[0.4.0]: https://github.com/lawaty/lacode/compare/v0.3.0...v0.4.0
|
|
157
200
|
[0.3.0]: https://github.com/lawaty/lacode/compare/v0.2.2...v0.3.0
|