Commit graph

65 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
Kit Langton
96a534d8c6
feat(core): bridge GET /config through experimental HttpApi (#23712) 2026-04-21 16:05:23 +00:00
Aiden Cline
2486621ca1
chore: kill unused tool (#23701) 2026-04-21 11:31:20 -04:00
opencode-agent[bot]
5e9d5c734e chore: generate 2026-04-18 03:52:28 +00:00
Kit Langton
b382d1a467
docs(effect): track schema migration progress with concrete file checklists (#23242) 2026-04-18 03:51:30 +00:00
Kit Langton
b493dabfe6 docs(effect): refresh migration status specs (#23206) 2026-04-18 00:29:26 +00:00
Kit Langton
6af8ab0df2
docs(http-api): refresh bridge inventory and clarify Schema.Class vs Struct (#23164) 2026-04-17 16:20:57 -04:00
Aiden Cline
76a141090e
chore: delete filetime module (#22999) 2026-04-16 23:31:21 -05:00
Kit Langton
c51f3e35ca
chore: retire namespace migration tooling + document module shape (#23010) 2026-04-17 02:48:40 +00:00
Kit Langton
76275fc3ab
refactor: move Pty into pty/index.ts with self-reexport (#22881) 2026-04-16 15:49:21 -04:00
Kit Langton
219b473e66
refactor: unwrap BashArity namespace to flat exports + self-reexport (#22874) 2026-04-16 15:24:24 -04:00
Kit Langton
c802695ee9
docs: add circular import rules to namespace treeshake spec (#22754) 2026-04-15 23:44:08 -04:00
Kit Langton
b0eae5e12f
feat: bridge permission and provider auth routes behind OPENCODE_EXPERIMENTAL_HTTPAPI (#22736) 2026-04-15 23:02:48 -04:00
Kit Langton
5eae926846
add experimental provider auth HttpApi slice (#22389) 2026-04-16 02:07:42 +00:00
Kit Langton
02f2cf439e
feat: namespace → flat export migration (Bus proof-of-concept) (#22685) 2026-04-16 01:18:36 +00:00
Kit Langton
250e30bc7d
add experimental permission HttpApi slice (#22385) 2026-04-15 21:28:01 +00:00
Kit Langton
5fc656e2a0
docs(opencode): add instance context migration plan (#22529) 2026-04-15 10:57:58 -04:00
Shoubhit Dash
6706358a6e
feat(core): bootstrap packages/server and document extraction plan (#22492) 2026-04-15 04:01:45 +05:30
Kit Langton
f2525a63c9
add experimental question HttpApi slice (#22357) 2026-04-14 19:43:49 +00:00
Kit Langton
0a8b6298cd
refactor(tui): move config cache to InstanceState (#22378) 2026-04-13 22:24:40 -04:00
Kit Langton
5b8b874732
update effect docs (#22340) 2026-04-13 14:07:59 -04:00
Kit Langton
6fdb8ab90d
refactor(file): add ripgrep search service (#22295) 2026-04-13 10:04:32 -04:00
Kit Langton
321bf1f8e1
refactor: finish small effect service adoption cleanups (#22094) 2026-04-13 09:17:13 -04:00
opencode-agent[bot]
1eacc3c339 chore: generate 2026-04-12 00:03:01 +00:00
Kit Langton
1a509d62a0
refactor(session): destroy SessionRunState facade (#22064) 2026-04-11 20:01:52 -04:00
Kit Langton
5ee7edaf9e
refactor(tool): make Tool.Info init effectful (#21989) 2026-04-11 12:33:17 -04:00
Kit Langton
9ca06e0336
docs(effect): mark SessionTodo migrated (#21987) 2026-04-10 23:35:50 -04:00
Kit Langton
9581bf0670
refactor(effect): upgrade opencode to beta.46 context APIs (#21977) 2026-04-10 23:06:28 -04:00
Kit Langton
f99812443c
refactor: destroy SessionStatus facade (#21968) 2026-04-10 22:16:53 -04:00
Kit Langton
9e7045eaec
refactor: destroy ShareNext facade (#21965) 2026-04-10 22:03:06 -04:00
Kit Langton
5cd4c6eb22
refactor: destroy Storage facades (#21956) 2026-04-10 21:21:02 -04: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
Dax
463318486f
core: refactor tool system to remove agent context from initialization (#21052) 2026-04-07 19:48:12 -04:00
Kit Langton
c796b9a19e
refactor(effect): move read tool onto defineEffect (#21016) 2026-04-04 19:06:00 -04:00
opencode-agent[bot]
650d0dbe54 chore: generate 2026-04-03 22:55:05 +00:00
Sebastian
a5ec741cff
notes on v2 (#20941) 2026-04-04 00:54:03 +02:00
Sebastian
29f7dc073b
Adds TUI prompt traits, refs, and plugin slots (#20741) 2026-04-02 22:11:17 +02:00
Kit Langton
ae7b49b034
docs(effect): refresh migration status (#20665) 2026-04-02 14:33:58 -04:00
Sebastian
f6fd43e574
Refactor plugin/config loading, add theme-only plugin package support (#20556) 2026-04-01 23:50:22 +00:00
Sebastian
25a2b739e6
warn only and ignore plugins without entrypoints, default config via exports (#20284) 2026-03-31 17:14:03 +02:00
Sebastian
2e78fdec43
ensure pinned plugin versions and do not run package scripts on install (#20248) 2026-03-31 16:59:43 +02:00
Kit Langton
3df18dcde1
refactor(provider): effectify Provider service (#20160) 2026-03-30 21:56:43 -04:00
Sebastian
fa95a61c4e
Refactor into plugin loader and do not enforce (#20112) 2026-03-30 20:36:21 +02:00
Sebastian
8e4bab5181
update plugin themes when plugin was updated (#20052) 2026-03-30 13:51:07 +02:00
Sebastian
0b1018f6dd
plugins installs should preserve jsonc comments (#19938) 2026-03-29 21:15:03 +02:00
Sebastian
f3997d8082
Single target plugin entrypoints (#19467) 2026-03-27 23:44:46 +00:00
opencode-agent[bot]
02b19bc3d7 chore: generate 2026-03-27 21:38:08 +00:00
Kit Langton
5cd54ec345
refactor(format): use ChildProcessSpawner instead of Process.spawn (#19457) 2026-03-27 17:37:07 -04:00
Sebastian
6274b0677c
tui plugins (#19347) 2026-03-27 15:00:26 +01:00
Kit Langton
9c6f1edfd7
refactor(effect): yield services instead of promise facades (#19325) 2026-03-26 21:46:38 -04:00