Commit Graph
1294 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 ClineandGitHub 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 LangtonandGitHub 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]andopencode 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 LangtonandGitHub 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 LongandGitHub 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 LongandGitHub 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
DaxandGitHub 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 LangtonandGitHub 80f1f1b5b8 feat: enable type-aware no-floating-promises rule, fix all 177 violations (#22741)
publish-github-action / publish (push) Has been cancelled
2026-04-15 23:27:32 -04:00
opencode-agent[bot] 64cc4623b5 chore: generate 2026-04-16 02:08:47 +00:00
Kit LangtonandGitHub 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 LongandGitHub 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 LangtonandGitHub 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 LongandGitHub 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 AllanandGitHub 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. RossiandGitHub 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 LongandGitHub 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 LongandGitHub 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