opencode-agent-skill 10.0.0 → 11.0.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 +67 -0
- package/README.md +49 -3
- package/bin/ocskill.mjs +330 -5
- package/docs/V11-PERCEPTION-ADAPTIVE-EXECUTION.md +75 -0
- package/docs/V11-PERCEPTION-ADAPTIVE.md +220 -0
- package/evals/router-triggers.json +82 -0
- package/evals/routing.json +76 -0
- package/evals/v11/tasks.json +122 -0
- package/global-config/agents/merge-arbiter.md +12 -0
- package/global-config/agents/visual-verifier.md +12 -0
- package/global-config/plugins/ues-router/index.js +272 -2
- package/global-config/plugins/ues-router/router.js +27 -3
- package/global-config/skills/browser-qa/SKILL.md +14 -0
- package/global-config/skills/browser-qa/references/workflow.md +11 -0
- package/global-config/skills/browser-security/SKILL.md +12 -0
- package/global-config/skills/component-visual-testing/SKILL.md +10 -0
- package/global-config/skills/design-source/SKILL.md +10 -0
- package/global-config/skills/design-source/references/workflow.md +12 -0
- package/global-config/skills/dynamic-workflow/SKILL.md +18 -0
- package/global-config/skills/dynamic-workflow/references/workflow.md +19 -0
- package/global-config/skills/responsive-verification/SKILL.md +10 -0
- package/global-config/skills/skill-authoring/SKILL.md +12 -0
- package/global-config/skills/skill-evaluation/SKILL.md +17 -0
- package/global-config/skills/visual-fidelity/SKILL.md +14 -0
- package/global-config/skills/visual-fidelity/references/workflow.md +14 -0
- package/lib/browser-adapter.mjs +82 -0
- package/lib/browser-runtime.mjs +193 -0
- package/lib/capability-registry.mjs +109 -0
- package/lib/context-engine-v11.mjs +146 -0
- package/lib/context-manifest.mjs +16 -3
- package/lib/control-center.mjs +12 -2
- package/lib/dynamic-workflow.mjs +179 -0
- package/lib/eval-ablation.mjs +43 -1
- package/lib/eval-report.mjs +72 -0
- package/lib/eval-telemetry.mjs +61 -0
- package/lib/evidence-budget.mjs +84 -0
- package/lib/evidence-store.mjs +178 -0
- package/lib/hermes-bridge.mjs +45 -1
- package/lib/model-config.mjs +9 -1
- package/lib/model-policy.mjs +52 -1
- package/lib/orchestrator-policy.mjs +1 -1
- package/lib/png-diff.mjs +229 -0
- package/lib/prompt-cache.mjs +60 -0
- package/lib/skill-quality.mjs +72 -0
- package/lib/task-engine.mjs +78 -4
- package/lib/ui-inspector.mjs +152 -0
- package/lib/v11-metrics.mjs +64 -0
- package/lib/visual-spec.mjs +159 -0
- package/package.json +10 -5
- package/scripts/eval-ablation.mjs +4 -1
- package/scripts/validate-v11-suite.mjs +58 -0
- package/scripts/validate.mjs +16 -4
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { existsSync } from "node:fs"
|
|
2
|
+
import { readFile } from "node:fs/promises"
|
|
3
|
+
import path from "node:path"
|
|
4
|
+
import { fileURLToPath } from "node:url"
|
|
5
|
+
|
|
6
|
+
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..")
|
|
7
|
+
const file = path.join(root, "evals", "v11", "tasks.json")
|
|
8
|
+
const suite = JSON.parse(await readFile(file, "utf8"))
|
|
9
|
+
const errors = []
|
|
10
|
+
|
|
11
|
+
const REQUIRED_V11_FILES = [
|
|
12
|
+
"lib/context-engine-v11.mjs",
|
|
13
|
+
"lib/evidence-store.mjs",
|
|
14
|
+
"lib/evidence-budget.mjs",
|
|
15
|
+
"lib/prompt-cache.mjs",
|
|
16
|
+
"lib/capability-registry.mjs",
|
|
17
|
+
"lib/browser-adapter.mjs",
|
|
18
|
+
"lib/browser-runtime.mjs",
|
|
19
|
+
"lib/png-diff.mjs",
|
|
20
|
+
"lib/visual-spec.mjs",
|
|
21
|
+
"lib/dynamic-workflow.mjs",
|
|
22
|
+
"lib/skill-quality.mjs",
|
|
23
|
+
"lib/ui-inspector.mjs",
|
|
24
|
+
"lib/v11-metrics.mjs",
|
|
25
|
+
"global-config/agents/visual-verifier.md",
|
|
26
|
+
"global-config/agents/merge-arbiter.md",
|
|
27
|
+
]
|
|
28
|
+
for (const relative of REQUIRED_V11_FILES) {
|
|
29
|
+
if (!existsSync(path.join(root, relative))) errors.push("missing V11 runtime file: " + relative)
|
|
30
|
+
}
|
|
31
|
+
const ids = new Set()
|
|
32
|
+
const categories = new Set()
|
|
33
|
+
|
|
34
|
+
if (!Array.isArray(suite.tasks) || suite.tasks.length < 10) errors.push("V11 suite must contain at least 10 tasks")
|
|
35
|
+
|
|
36
|
+
for (const task of suite.tasks || []) {
|
|
37
|
+
if (!task.id || ids.has(task.id)) errors.push("missing/duplicate id: " + (task.id || "<missing>"))
|
|
38
|
+
ids.add(task.id)
|
|
39
|
+
if (!task.category) errors.push((task.id || "<missing>") + ": missing category")
|
|
40
|
+
categories.add(task.category)
|
|
41
|
+
if (!task.objective || task.objective.length < 30) errors.push((task.id || "<missing>") + ": objective is too weak")
|
|
42
|
+
if (!Array.isArray(task.requiredFiles) || !task.requiredFiles.length) errors.push((task.id || "<missing>") + ": requiredFiles missing")
|
|
43
|
+
for (const relative of task.requiredFiles || []) {
|
|
44
|
+
if (!existsSync(path.join(root, relative))) errors.push((task.id || "<missing>") + ": missing required file " + relative)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (const category of ["context","routing","visual","browser","workflow","sidecar"]) {
|
|
49
|
+
if (!categories.has(category)) errors.push("V11 suite missing category: " + category)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (errors.length) {
|
|
53
|
+
console.error("V11 suite validation failed:")
|
|
54
|
+
for (const error of errors) console.error("- " + error)
|
|
55
|
+
process.exit(1)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
console.log("Validated " + suite.tasks.length + " V11 contract tasks across " + categories.size + " categories and " + REQUIRED_V11_FILES.length + " required runtime files.")
|
package/scripts/validate.mjs
CHANGED
|
@@ -87,9 +87,12 @@ for (const entry of await readdir(agentsRoot, { withFileTypes: true })) {
|
|
|
87
87
|
if (!/mode:\s*subagent/.test(source)) errors.push(`${entry.name}: agent must use mode: subagent`)
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
const V11_REQUIRED_SKILLS = ["visual-fidelity","browser-qa","design-source","responsive-verification","component-visual-testing","browser-security","skill-authoring","skill-evaluation","dynamic-workflow"]
|
|
91
|
+
for (const id of V11_REQUIRED_SKILLS) if (!ids.has(id)) errors.push(`missing V11 skill ${id}`)
|
|
92
|
+
|
|
93
|
+
if (ids.size < 48) errors.push(`expected at least 48 skills for V11, found ${ids.size}`)
|
|
91
94
|
if (commands < 11) errors.push(`expected at least 11 commands, found ${commands}`)
|
|
92
|
-
if (agents <
|
|
95
|
+
if (agents < 12) errors.push(`expected at least 12 subagents for V11, found ${agents}`)
|
|
93
96
|
|
|
94
97
|
const routerIndex = path.join(pluginsRoot, "ues-router", "index.js")
|
|
95
98
|
const routerCore = path.join(pluginsRoot, "ues-router", "router.js")
|
|
@@ -115,6 +118,15 @@ if (existsSync(routerIndex)) {
|
|
|
115
118
|
if (!source.includes('name: "task_policy"')) errors.push("v8 router plugin must expose adaptive task policy")
|
|
116
119
|
if (!source.includes('name: "cancel_task"')) errors.push("v8 router plugin must expose executor cancellation")
|
|
117
120
|
if (!source.includes('name: "recover_task"')) errors.push("v8 router plugin must expose task-scoped recovery")
|
|
121
|
+
if (!source.includes('name: "capability_requirements"')) errors.push("v11 router plugin must expose capability requirements")
|
|
122
|
+
if (!source.includes('name: "evidence_get"')) errors.push("v11 router plugin must expose bounded evidence retrieval")
|
|
123
|
+
if (!source.includes('name: "browser_plan"')) errors.push("v11 router plugin must expose browser verification planning")
|
|
124
|
+
if (!source.includes('name: "browser_inspect"')) errors.push("v11 router plugin must expose bounded browser inspection")
|
|
125
|
+
if (!source.includes('name: "visual_geometry"')) errors.push("v11 router plugin must expose visual geometry receipts")
|
|
126
|
+
if (!source.includes('name: "visual_compare"')) errors.push("v11 router plugin must expose deterministic PNG comparison")
|
|
127
|
+
if (!source.includes('name: "workflow_plan"')) errors.push("v11 router plugin must expose dynamic workflow planning")
|
|
128
|
+
if (!source.includes('name: "ui_tokens"')) errors.push("v11 router plugin must expose compact design-token extraction")
|
|
129
|
+
if (!source.includes('name: "ui_layout"')) errors.push("v11 router plugin must expose responsive UI layout verification")
|
|
118
130
|
if (!source.includes("ctx.session.interrupt")) errors.push("v8 task dispatch must interrupt timed-out executors")
|
|
119
131
|
if (!source.includes('"work", "heartbeat"')) errors.push("v8 task dispatch must refresh task leases")
|
|
120
132
|
}
|
|
@@ -138,11 +150,11 @@ if (existsSync(plainInstallSmoke)) {
|
|
|
138
150
|
}
|
|
139
151
|
}
|
|
140
152
|
|
|
141
|
-
for (const name of ["process-runner.mjs","evidence-receipt.mjs","gate-receipt.mjs","runtime-events.mjs","context-manifest.mjs","orchestrator-policy.mjs","worktree-sandbox.mjs","learning-engine.mjs","hermes-bridge.mjs","control-center.mjs"]) {
|
|
153
|
+
for (const name of ["process-runner.mjs","evidence-receipt.mjs","gate-receipt.mjs","runtime-events.mjs","context-manifest.mjs","orchestrator-policy.mjs","worktree-sandbox.mjs","learning-engine.mjs","hermes-bridge.mjs","control-center.mjs","evidence-store.mjs","evidence-budget.mjs","prompt-cache.mjs","capability-registry.mjs","visual-spec.mjs","png-diff.mjs","browser-adapter.mjs","browser-runtime.mjs","dynamic-workflow.mjs","skill-quality.mjs","ui-inspector.mjs","context-engine-v11.mjs","v11-metrics.mjs"]) {
|
|
142
154
|
if (!existsSync(path.join(root, "lib", name))) errors.push(`missing V8 core module ${name}`)
|
|
143
155
|
}
|
|
144
156
|
|
|
145
|
-
for (const name of ["codebase-mapper.md","plan-checker.md","executor.md","integration-verifier.md"]) {
|
|
157
|
+
for (const name of ["codebase-mapper.md","plan-checker.md","executor.md","integration-verifier.md","visual-verifier.md","merge-arbiter.md"]) {
|
|
146
158
|
if (!existsSync(path.join(agentsRoot, name))) errors.push(`missing V6 subagent ${name}`)
|
|
147
159
|
}
|
|
148
160
|
|