Problem
oclite fails to start with ConfigInvalidError when opencode.work.json contains an experimental.hook section.
Error:
ConfigInvalidError: ConfigInvalidError
data: {
path: "/Users/janni/.config/opencode/opencode.work.json",
issues: [[Object ...], [Object ...]]
}
Root Cause
The experimental schema in packages/opencode/src/config/config.ts (lines 1120-1191) uses .strict() and doesn't include hook as a valid field.
Config in Use
"experimental": {
"hook": {
"file_edited": {
"python_linter": [{"command": ["ruff", "check", "--fix", "."], "environment": {}}],
...
}
}
}
Solution
Add hook to the experimental schema:
// In packages/opencode/src/config/config.ts, add to experimental schema:
hook: z
.object({
file_edited: z.record(z.string(), z.array(
z.object({
command: z.array(z.string()),
environment: z.record(z.string(), z.string()).optional(),
})
)).optional()
})
.optional()
Files
packages/opencode/src/config/config.ts - lines 1120-1191
Acceptance Criteria
Problem
oclite fails to start with
ConfigInvalidErrorwhenopencode.work.jsoncontains anexperimental.hooksection.Error:
Root Cause
The
experimentalschema inpackages/opencode/src/config/config.ts(lines 1120-1191) uses.strict()and doesn't includehookas a valid field.Config in Use
Solution
Add
hookto the experimental schema:Files
packages/opencode/src/config/config.ts- lines 1120-1191Acceptance Criteria
experimental.hook.file_editedis a valid config option