Commit graph

1,294 commits

Author SHA1 Message Date
Kit Langton
fce074726f refactor(core): migrate ConfigPermission.Info to Effect Schema canonical
Follow-up to #23716. Moves ConfigPermission.Info from zod-first (with a
preprocess hack) to Effect Schema canonical using Schema.StructWithRest +
Schema.decodeTo, and deletes the now-unused ZodPreprocess plumbing.

Core change: rule precedence in `Permission.fromConfig` now sorts top-level
keys so wildcard permissions (e.g. `*`, `mcp_*`) come before specific
ones (e.g. `bash`, `edit`). Combined with `findLast` in evaluate(),
this gives the intuitive semantic 'specific tool rules override the `*`
fallback' regardless of the user's JSON key order. This silently fixes the
previously-broken case `{bash: "allow", "*": "deny"}` (which under
the old semantics denied bash because `*` came last).

Once rule precedence no longer depends on JSON insertion order, the
`__originalKeys` + ZodPreprocess hack can go — StructWithRest's natural
canonicalisation is fine because fromConfig sorts anyway.

- src/config/permission.ts: rewrite. InputObject is StructWithRest with known
  permission keys (read/edit/bash/... as Rule, todowrite/webfetch/... as
  Action-only for type narrowing) + Record rest. Schema.decodeTo normalises
  the Action shorthand into { "*": action }. .zod is derived — walker
  already carries the decodeTo transform.
- src/config/config.ts, src/config/agent.ts: reference ConfigPermission.Info
  directly instead of via Schema.Any + ZodOverride. The Effect decoder now
  applies the permission transform at load time.
- src/permission/index.ts: fromConfig sorts wildcards-before-specifics at
  top level. Sub-pattern order inside a tool key is preserved (documented
  `*` first, specifics after).
- src/util/effect-zod.ts: delete ZodPreprocess symbol, its walkUncached
  branch, and the TODO comment. Zero remaining consumers.
- test/permission/next.test.ts: 6 new tests pinning the new semantics —
  order-independent precedence, wildcard-as-fallback, sub-pattern order
  preservation, canonical documented-example regression guard.
- test/config/config.test.ts: updated the "preserves key order" test to
  reflect the new canonical output shape (declaration-order known fields,
  then input-order rest keys). Behavioural guarantees live in the new
  permission tests.
- test/util/effect-zod.test.ts: delete the ZodPreprocess describe block
  (~115 lines of tests for the now-removed feature).

SDK diff vs dev:
- Removed `__originalKeys?: Array<string>` (internal leak).
- Catchall cleaned up (no unrelated `Array<string>`).
- Known-field types preserved (autocomplete + narrowing).
- Only shape change: PermissionConfig union order swap (commutative).

Safety audit: no config, test, or doc in the repo (including all 16
translations) exercises the pattern where specifics come before wildcards
at the top level. The only configs whose behaviour changes are ones that
were silently broken.
2026-04-21 17:38:24 -04:00
opencode
7c6948cf6f sync release versions for v1.14.19 2026-04-20 07:21:46 +00:00
Aiden Cline
c6c56ac2cf
tweak: rename tail_tokens -> preserve_recent_tokens (#23491) 2026-04-20 01:06:29 -05:00
opencode-agent[bot]
29f05cb1ee chore: generate 2026-04-19 23:48:44 +00:00
opencode
c09bcfe531 sync release versions for v1.14.18 2026-04-19 09:36:56 +00:00
opencode
40ba8f3570 sync release versions for v1.14.17 2026-04-19 03:02:14 +00:00
Dax Raad
5eaef6b758 release: avoid package.json drift during publish 2026-04-18 12:32:23 -04:00
Kit Langton
24fb9b1296
fix: stop rewriting dev during release publish (#22982) 2026-04-18 02:53:19 +00:00
opencode-agent[bot]
a92c75e5f4 chore: generate 2026-04-18 01:21:01 +00:00
opencode-agent[bot]
cf0a53c501 chore: generate 2026-04-18 00:29:26 +00:00
opencode
a35b8a95c2 release: v1.4.11 2026-04-18 00:29:16 +00:00
opencode-agent[bot]
ed0f022502 chore: generate 2026-04-17 20:50:37 +00:00
Kit Langton
b1307d5c2a
refactor(config): migrate skills, formatter, console-state to Effect Schema (#23162) 2026-04-17 20:49:36 +00:00
opencode-agent[bot]
54435325b6 chore: generate 2026-04-17 20:26:43 +00:00
opencode
9b6c397171 release: v1.4.10 2026-04-17 20:13:25 +00:00
James Long
a8c78fc005
fix(core): add historical sync on workspace connect (#23121) 2026-04-17 13:30:09 -04:00
opencode
803d9eb7ad release: v1.4.9 2026-04-17 16:19:46 +00:00
opencode-agent[bot]
cb425ac927 chore: generate 2026-04-17 13:53:11 +00:00
opencode
06ae43920b release: v1.4.8 2026-04-17 13:37:06 +00:00
James Long
7605acff65
refactor(core): move server routes around to clarify workspacing (#23031) 2026-04-17 02:06:20 -04:00
opencode-agent[bot]
dc38f22bd8 chore: generate 2026-04-17 02:34:07 +00:00
Dax
220e3e9a2b
refactor: make formatter config opt-in (#22997) 2026-04-17 02:33:09 +00:00
opencode
9f201d6370 release: v1.4.7 2026-04-16 21:54:54 +00:00
opencode-agent[bot]
7341718f92 chore: generate 2026-04-16 07:15:05 +00:00
opencode-agent[bot]
0beaf04df5 chore: generate 2026-04-16 03:28:30 +00:00
Kit Langton
80f1f1b5b8
feat: enable type-aware no-floating-promises rule, fix all 177 violations (#22741) 2026-04-15 23:27:32 -04:00
opencode-agent[bot]
64cc4623b5 chore: generate 2026-04-16 02:08:47 +00:00
Kit Langton
cce05c1665
fix: clean up 49 unused variables, catch params, and stale imports (#22695) 2026-04-16 02:01:53 +00:00
opencode-agent[bot]
3b75f16119 chore: generate 2026-04-15 21:29:10 +00:00
James Long
af20191d1c
feat(core): sync routes, refactor proxy, session restore, and more syncing (#22518) 2026-04-15 10:18:48 -04:00
opencode
7659321990 release: v1.4.6 2026-04-15 07:26:23 +00:00
opencode
dfc72838d7 release: v1.4.5 2026-04-15 04:25:18 +00:00
opencode
bddf830083 release: v1.4.4 2026-04-15 00:03:43 +00:00
opencode-agent[bot]
4ed3afea84 chore: generate 2026-04-14 20:58:35 +00:00
Kit Langton
3cf7c7536b
fix(question): restore flat reply sdk shape (#22487) 2026-04-14 16:57:32 -04:00
opencode-agent[bot]
85674f4bfd chore: generate 2026-04-14 19:45:10 +00:00
James Long
b22add292c
refactor(core): publish sync events to global event stream (#22347) 2026-04-13 16:51:59 -04:00
opencode-agent[bot]
329fcb040b chore: generate 2026-04-13 17:37:41 +00:00
opencode-agent[bot]
7164662be2 chore: generate 2026-04-13 14:18:05 +00:00
Brendan Allan
26d35583c5
sdk: throw error if response has text/html content type (#21289) 2026-04-13 09:39:53 +08:00
opencode-agent[bot]
17b2900884 chore: generate 2026-04-12 00:58:05 +00:00
opencode-agent[bot]
4c4eef46f1 chore: generate 2026-04-11 22:15:53 +00:00
Tommy D. Rossi
d62ec7776e
feat: allow session permission updates (#22070) 2026-04-11 17:14:30 -05:00
opencode-agent[bot]
cb1e5d9e41 chore: generate 2026-04-11 20:56:22 +00:00
opencode-agent[bot]
2e340d976f chore: generate 2026-04-11 03:53:48 +00:00
opencode-agent[bot]
b898c6d0ea chore: generate 2026-04-11 02:04:02 +00:00
opencode-agent[bot]
57f9397677 chore: generate 2026-04-11 01:48:25 +00:00
James Long
180ded6a27
rector(core,tui): handle workspace state in project context, add workspace status, improve ui (#21896) 2026-04-10 13:03:20 -04:00
James Long
42206da1f8
refactor(tui): switch to global events and start passing workspace param (#21719) 2026-04-10 10:47:27 -04:00
opencode
877be7e8e0 release: v1.4.3 2026-04-10 01:00:12 +00:00