simt-dev 0.7.0 → 0.8.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.
Files changed (235) hide show
  1. package/CHANGELOG.md +191 -870
  2. package/README.md +188 -213
  3. package/bin/simt.mjs +19 -55
  4. package/docs/decisions/ADR-014-workspace-is-configuration.md +2 -2
  5. package/docs/decisions/ADR-025-a-baseline-is-a-region-in-a-file-the-repo-owns.md +1 -1
  6. package/docs/decisions/ADR-026-a-config-without-a-region-is-a-file-the-repo-owns.md +1 -1
  7. package/docs/decisions/ADR-027-the-one-gitattributes-line-that-is-neither-dangerous-nor-empty.md +1 -1
  8. package/docs/decisions/ADR-028-a-base-file-is-a-floor-so-the-disagreement-it-cannot-repair-becomes-a-check.md +1 -1
  9. package/docs/decisions/ADR-029-the-pins-a-repository-declares-are-its-own.md +1 -1
  10. package/docs/decisions/ADR-030-what-a-plan-does-not-ship-is-a-decision-with-a-record.md +1 -1
  11. package/docs/decisions/ADR-048-a-baseline-carries-only-keys-a-reader-honours.md +1 -1
  12. package/docs/decisions/ADR-082-the-tracker-override-is-a-manifest-key.md +1 -1
  13. package/docs/decisions/ADR-099-the-release-verifies-served-bytes-and-the-formula-mirrors-them.md +1 -1
  14. package/docs/decisions/ADR-117-the-darwin-release-builds-on-supported-macos-15-runners-and-a-re-run-is-idempotent.md +81 -0
  15. package/docs/decisions/ADR-118-the-bench-corpus-is-keyed-on-history-is-append-only-and-is-portable-as-a-sealed-document.md +91 -0
  16. package/docs/decisions/ADR-119-the-environment-variable-points-into-a-workspace-the-repo-declared.md +90 -0
  17. package/docs/decisions/ADR-120-a-pre-push-whose-tree-is-already-proven-green-skips-the-test-gate-on-that-evidence.md +96 -0
  18. package/docs/decisions/ADR-122-the-shims-move-into-the-state-directory-and-the-legacy-directory-removes-itself.md +94 -0
  19. package/docs/decisions/ADR-123-a-surplus-positional-is-not-refused-because-arity-is-not-in-the-source.md +57 -0
  20. package/docs/decisions/ADR-124-the-manifest-has-a-schema-in-the-tool-and-its-unknown-keys-stay-the-repositorys.md +64 -0
  21. package/docs/decisions/ADR-125-a-shared-context-belongs-to-a-read-and-a-writer-reads-directly.md +65 -0
  22. package/docs/decisions/ADR-126-the-mcp-surface-stays-a-reader-so-there-is-no-write-path-to-build.md +68 -0
  23. package/docs/decisions/ADR-127-the-mcp-tool-list-is-written-by-hand-and-roots-is-not-asked-for.md +65 -0
  24. package/docs/decisions/ADR-128-a-research-plan-is-a-plan-and-the-tracker-reads-it.md +42 -0
  25. package/ecosystems/bun.json +6 -0
  26. package/ecosystems/cargo.json +25 -0
  27. package/ecosystems/composer.json +6 -0
  28. package/ecosystems/dart.json +24 -0
  29. package/ecosystems/deno.json +21 -0
  30. package/ecosystems/devcontainers.json +6 -0
  31. package/ecosystems/docker-compose.json +6 -0
  32. package/ecosystems/docker.json +6 -0
  33. package/ecosystems/dotnet.json +25 -0
  34. package/ecosystems/elixir.json +23 -0
  35. package/ecosystems/gitsubmodule.json +6 -0
  36. package/ecosystems/go.json +25 -0
  37. package/ecosystems/gradle.json +13 -0
  38. package/ecosystems/maven.json +23 -0
  39. package/ecosystems/node.json +25 -0
  40. package/ecosystems/python.json +20 -0
  41. package/ecosystems/ruby.json +23 -0
  42. package/ecosystems/swift.json +25 -0
  43. package/ecosystems/terraform.json +6 -0
  44. package/ecosystems/uv.json +6 -0
  45. package/harnesses/antigravity.json +162 -0
  46. package/harnesses/claude.json +206 -0
  47. package/harnesses/codex.json +136 -0
  48. package/harnesses/copilot.json +88 -0
  49. package/harnesses/cursor.json +140 -0
  50. package/harnesses/deepseek.json +99 -0
  51. package/harnesses/gemini.json +122 -0
  52. package/harnesses/opencode.json +173 -0
  53. package/package.json +12 -2
  54. package/rules/core.md +7 -0
  55. package/rules/mdc/intake-questions.mdc +8 -0
  56. package/rules/mdc/slice-commit.mdc +57 -4
  57. package/src/advice/advice.mjs +3 -2
  58. package/src/agenthooks/prompt.mjs +5 -2
  59. package/src/agenthooks/render.mjs +86 -180
  60. package/src/agenthooks/shim.mjs +1 -1
  61. package/src/agents/render.mjs +15 -18
  62. package/src/api.mjs +31 -0
  63. package/src/argv.mjs +48 -3
  64. package/src/bench/ablate.mjs +3 -4
  65. package/src/bench/adapters.json +163 -105
  66. package/src/bench/adapters.mjs +466 -0
  67. package/src/bench/arms.mjs +333 -0
  68. package/src/bench/grade.mjs +33 -73
  69. package/src/bench/graders.mjs +42 -0
  70. package/src/bench/mine.mjs +121 -475
  71. package/src/bench/probe-ledger.mjs +149 -0
  72. package/src/bench/probes.catalog.mjs +918 -0
  73. package/src/bench/probes.mjs +79 -1064
  74. package/src/bench/render.mjs +111 -0
  75. package/src/bench/report.mjs +120 -962
  76. package/src/bench/run.mjs +185 -802
  77. package/src/bench/variants.mjs +4 -5
  78. package/src/bench/workspace.mjs +160 -0
  79. package/src/brief/assemble.mjs +48 -15
  80. package/src/ci/dependabot.mjs +25 -55
  81. package/src/ci/workflow.mjs +30 -7
  82. package/src/cli.mjs +45 -0
  83. package/src/commands/agent.mjs +4 -13
  84. package/src/commands/agenthook.mjs +70 -40
  85. package/src/commands/bench.mjs +191 -18
  86. package/src/commands/brief.mjs +5 -4
  87. package/src/commands/ci.mjs +13 -14
  88. package/src/commands/compare.mjs +42 -42
  89. package/src/commands/completions.mjs +2 -6
  90. package/src/commands/decide.mjs +4 -4
  91. package/src/commands/distill.mjs +4 -3
  92. package/src/commands/docs.mjs +88 -0
  93. package/src/commands/doctor.mjs +11 -7
  94. package/src/commands/evidence.mjs +6 -9
  95. package/src/commands/explain.mjs +0 -1
  96. package/src/commands/gate.mjs +26 -25
  97. package/src/commands/graph.mjs +2 -3
  98. package/src/commands/harness.mjs +6 -5
  99. package/src/commands/help.mjs +168 -19
  100. package/src/commands/hooks.mjs +119 -49
  101. package/src/commands/ignore.mjs +13 -8
  102. package/src/commands/impact.mjs +8 -15
  103. package/src/commands/index.mjs +318 -193
  104. package/src/commands/init-scan.mjs +90 -0
  105. package/src/commands/init.mjs +124 -105
  106. package/src/commands/lease.mjs +73 -25
  107. package/src/commands/lessons.mjs +10 -9
  108. package/src/commands/local.mjs +3 -3
  109. package/src/commands/map.mjs +24 -14
  110. package/src/commands/mcp.mjs +2 -18
  111. package/src/commands/pack.mjs +9 -6
  112. package/src/commands/plan.mjs +6 -5
  113. package/src/commands/plugin.mjs +2 -2
  114. package/src/commands/prbody.mjs +3 -3
  115. package/src/commands/repoindex.mjs +12 -11
  116. package/src/commands/review.mjs +2 -2
  117. package/src/commands/rules.mjs +37 -16
  118. package/src/commands/shared.mjs +14 -19
  119. package/src/commands/skills.mjs +33 -32
  120. package/src/commands/skillscompile.mjs +7 -8
  121. package/src/commands/skillsinstall.mjs +7 -6
  122. package/src/commands/slice.mjs +220 -74
  123. package/src/commands/spec.mjs +167 -0
  124. package/src/commands/status.mjs +27 -18
  125. package/src/commands/sync.mjs +27 -25
  126. package/src/commands/tests.mjs +18 -21
  127. package/src/commands/tokens.mjs +21 -26
  128. package/src/commands/undo.mjs +5 -15
  129. package/src/commands/upgrade.mjs +15 -7
  130. package/src/commands/why.mjs +15 -21
  131. package/src/compare/hooksstate.mjs +2 -6
  132. package/src/compare/learn.mjs +3 -1
  133. package/src/compare/row.mjs +0 -2
  134. package/src/context.mjs +64 -0
  135. package/src/decisions/index-doc.mjs +46 -0
  136. package/src/decisions/index.mjs +3 -2
  137. package/src/diff.mjs +1 -1
  138. package/src/distill/distill.mjs +14 -1
  139. package/src/distill/engine.mjs +5 -1
  140. package/src/docs/commands.mjs +65 -0
  141. package/src/ecosystem/records.mjs +219 -0
  142. package/src/explain.mjs +31 -0
  143. package/src/gates/index.mjs +385 -0
  144. package/src/graph/compile.mjs +8 -4
  145. package/src/graph/load.mjs +6 -2
  146. package/src/graph/spec.mjs +10 -8
  147. package/src/harness/records.mjs +143 -0
  148. package/src/hooks/capability.mjs +7 -5
  149. package/src/hooks/dispatcher.mjs +209 -60
  150. package/src/hooks/gates.mjs +10 -43
  151. package/src/hooks/resolve.mjs +4 -14
  152. package/src/hooks/shim.mjs +5 -2
  153. package/src/hooks/where.mjs +2 -7
  154. package/src/identity.mjs +31 -12
  155. package/src/index/coverage.mjs +58 -0
  156. package/src/index/extract.mjs +6 -16
  157. package/src/index/gate.mjs +1 -1
  158. package/src/index/govern.mjs +26 -9
  159. package/src/index/impact.mjs +4 -8
  160. package/src/index/map.mjs +14 -15
  161. package/src/index/open.mjs +173 -0
  162. package/src/index/persist.mjs +224 -57
  163. package/src/index/store.mjs +82 -39
  164. package/src/index/tests.mjs +2 -6
  165. package/src/journal.mjs +94 -20
  166. package/src/kernel/card.mjs +37 -63
  167. package/src/kernel/checks.mjs +4 -10
  168. package/src/lease.mjs +102 -7
  169. package/src/ledger/index.mjs +150 -14
  170. package/src/local/client.mjs +4 -6
  171. package/src/locate.mjs +33 -9
  172. package/src/manifest/schema.mjs +213 -0
  173. package/src/mcp/paginate.mjs +33 -0
  174. package/src/mcp/resources.mjs +7 -10
  175. package/src/mcp/schemas.mjs +512 -0
  176. package/src/mcp/server.mjs +119 -25
  177. package/src/mcp/tools-facts.mjs +326 -0
  178. package/src/mcp/tools-read.mjs +221 -0
  179. package/src/mcp/tools.mjs +4 -967
  180. package/src/measure/corpus.mjs +150 -0
  181. package/src/measure/metrics.mjs +236 -0
  182. package/src/measure/records.mjs +211 -0
  183. package/src/measure/session.mjs +3 -2
  184. package/src/measure/stats.mjs +538 -0
  185. package/src/measure/task-schema.mjs +125 -0
  186. package/src/measure/tasks.mjs +69 -0
  187. package/src/memory/decide.mjs +6 -15
  188. package/src/memory/lesson-text.mjs +61 -0
  189. package/src/memory/lessons.mjs +29 -82
  190. package/src/name.mjs +7 -0
  191. package/src/node-version.mjs +37 -0
  192. package/src/output/index.mjs +209 -10
  193. package/src/packs/manage.mjs +32 -12
  194. package/src/packs.mjs +20 -2
  195. package/src/plan/index.mjs +1 -1
  196. package/src/plugins.mjs +22 -16
  197. package/src/prbody.mjs +7 -11
  198. package/src/projection/loaders.mjs +7 -692
  199. package/src/projection/lock.mjs +11 -1
  200. package/src/projection/manifest.mjs +29 -468
  201. package/src/projection/mdc.mjs +7 -8
  202. package/src/projection/project.mjs +126 -221
  203. package/src/projection/region.mjs +561 -0
  204. package/src/projection/rules.mjs +20 -550
  205. package/src/projection/surfaces.mjs +43 -210
  206. package/src/projection/targets.mjs +5 -5
  207. package/src/repo-root.mjs +31 -0
  208. package/src/resolve/eval.mjs +2 -1
  209. package/src/resolve/fingerprint.mjs +19 -22
  210. package/src/resolve/resolve.mjs +1 -41
  211. package/src/review/critic.mjs +10 -13
  212. package/src/run.mjs +98 -0
  213. package/src/secrets.mjs +14 -22
  214. package/src/state/events.mjs +129 -0
  215. package/src/status-snapshot.mjs +233 -0
  216. package/src/status.mjs +2 -6
  217. package/src/sys/git.mjs +82 -0
  218. package/src/sys/proc.mjs +151 -0
  219. package/src/testing/parsers.mjs +265 -0
  220. package/src/testing/patches.mjs +23 -0
  221. package/src/testing/paths.mjs +49 -0
  222. package/src/testing/runners.mjs +186 -0
  223. package/src/testing/vault.mjs +68 -0
  224. package/src/text/frontmatter.mjs +49 -0
  225. package/src/text/tokens.mjs +52 -0
  226. package/src/toolwords.mjs +3 -0
  227. package/src/util/fs.mjs +20 -0
  228. package/src/util/sort.mjs +12 -0
  229. package/src/workspace.mjs +58 -11
  230. package/src/write/plan.mjs +82 -0
  231. package/templates/plan/tracker.json +1 -0
  232. package/docs/decisions/ADR-033-three-plan-rows-closed-by-decision-not-by-authoring.md +0 -82
  233. package/docs/decisions/ADR-102-the-two-queued-review-rows-are-closed-by-ruling.md +0 -49
  234. package/docs/decisions/README.md +0 -600
  235. package/src/bench/tasks.mjs +0 -36
@@ -1,149 +1,207 @@
1
1
  {
2
- "schemaVersion": 1,
2
+ "schemaVersion": 2,
3
3
  "adapters": {
4
4
  "claude": {
5
5
  "id": "claude",
6
6
  "label": "Claude Code",
7
- "kind": "cli",
7
+ "kind": "agent",
8
8
  "bin": "claude",
9
- "template": "claude -p \"{prompt}\" --output-format json --max-turns {turns}",
10
- "args": ["-p", "{prompt}", "--output-format", "json", "--max-turns", "{turns}"],
11
- "modelArgs": ["--model", "{model}"],
12
- "format": "json",
13
- "usageSource": "usage.*, total_cost_usd, num_turns",
14
- "fields": {
15
- "input": ["usage.input_tokens", "usage.input"],
16
- "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cacheWrite"],
17
- "cacheRead": ["usage.cache_read_input_tokens", "usage.cacheRead"],
18
- "output": ["usage.output_tokens", "usage.output"],
19
- "turns": ["num_turns", "usage.turns"],
20
- "toolCalls": ["num_tool_calls", "tool_calls", "usage.toolCalls"],
21
- "costUsd": ["total_cost_usd", "cost_usd", "costUsd"]
22
- }
9
+ "prompt": {
10
+ "delivery": "argv",
11
+ "args": ["-p", "{prompt}", "--output-format", "json", "--max-turns", "{turns}"],
12
+ "modelArgs": ["--model", "{model}"]
13
+ },
14
+ "env": { "allow": ["ANTHROPIC_API_KEY"] },
15
+ "isolation": "env",
16
+ "timeoutMs": 120000,
17
+ "usage": {
18
+ "format": "json",
19
+ "fields": {
20
+ "input": ["usage.input_tokens", "usage.input"],
21
+ "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cacheWrite"],
22
+ "cacheRead": ["usage.cache_read_input_tokens", "usage.cacheRead"],
23
+ "output": ["usage.output_tokens", "usage.output"],
24
+ "turns": ["num_turns", "usage.turns"],
25
+ "toolCalls": ["num_tool_calls", "tool_calls", "usage.toolCalls"],
26
+ "costUsd": ["total_cost_usd", "cost_usd", "costUsd"]
27
+ }
28
+ },
29
+ "transcript": { "sources": ["stdout"] }
23
30
  },
24
31
  "codex": {
25
32
  "id": "codex",
26
33
  "label": "Codex",
27
- "kind": "cli",
34
+ "kind": "agent",
28
35
  "bin": "codex",
29
- "template": "codex exec --json \"{prompt}\"",
30
- "args": ["exec", "--json", "{prompt}"],
31
- "modelArgs": ["--model", "{model}"],
32
- "format": "jsonl",
33
- "usageSource": "token events in JSONL",
34
- "fields": {
35
- "input": ["usage.input_tokens", "input_tokens", "usage.input"],
36
- "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cache_write_input_tokens", "cache_write_input_tokens"],
37
- "cacheRead": ["usage.cached_input_tokens", "usage.cache_read_input_tokens", "cached_input_tokens"],
38
- "output": ["usage.output_tokens", "output_tokens", "usage.output"],
39
- "turns": ["turns", "num_turns"],
40
- "toolCalls": ["tool_calls", "num_tool_calls"],
41
- "costUsd": ["total_cost_usd", "cost_usd", "cost"]
42
- }
36
+ "prompt": {
37
+ "delivery": "argv",
38
+ "args": ["exec", "--json", "{prompt}"],
39
+ "modelArgs": ["--model", "{model}"]
40
+ },
41
+ "env": { "allow": ["OPENAI_API_KEY"] },
42
+ "isolation": "env",
43
+ "timeoutMs": 120000,
44
+ "usage": {
45
+ "format": "jsonl",
46
+ "fields": {
47
+ "input": ["usage.input_tokens", "input_tokens", "usage.input"],
48
+ "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cache_write_input_tokens", "cache_write_input_tokens"],
49
+ "cacheRead": ["usage.cached_input_tokens", "usage.cache_read_input_tokens", "cached_input_tokens"],
50
+ "output": ["usage.output_tokens", "output_tokens", "usage.output"],
51
+ "turns": ["turns", "num_turns"],
52
+ "toolCalls": ["tool_calls", "num_tool_calls"],
53
+ "costUsd": ["total_cost_usd", "cost_usd", "cost"]
54
+ },
55
+ "events": {
56
+ "turns": [{ "type": "turn.completed" }],
57
+ "toolCalls": [
58
+ { "type": "item.completed", "item.type": ["command_execution", "tool_call", "mcp_tool_call"] }
59
+ ]
60
+ }
61
+ },
62
+ "transcript": { "sources": ["stdout"] }
43
63
  },
44
64
  "gemini": {
45
65
  "id": "gemini",
46
66
  "label": "Gemini CLI",
47
- "kind": "cli",
67
+ "kind": "agent",
48
68
  "bin": "gemini",
49
- "template": "gemini -p \"{prompt}\" --output-format json",
50
- "args": ["-p", "{prompt}", "--output-format", "json"],
51
- "modelArgs": ["--model", "{model}"],
52
- "format": "json",
53
- "usageSource": "stats block",
54
- "fields": {
55
- "input": ["stats.inputTokens", "stats.tokens.prompt", "stats.prompt_tokens", "usage.input_tokens"],
56
- "cacheWrite": ["stats.cacheWriteTokens", "stats.tokens.cacheWrite", "usage.cache_creation_input_tokens"],
57
- "cacheRead": ["stats.cachedTokens", "stats.tokens.cached", "usage.cache_read_input_tokens"],
58
- "output": ["stats.outputTokens", "stats.tokens.candidates", "stats.completion_tokens", "usage.output_tokens"],
59
- "turns": ["stats.turns", "stats.totalTurns", "num_turns"],
60
- "toolCalls": ["stats.toolCalls", "stats.tools.totalCalls", "num_tool_calls"],
61
- "costUsd": ["stats.totalCostUsd", "stats.costUsd", "total_cost_usd"]
62
- }
69
+ "prompt": {
70
+ "delivery": "argv",
71
+ "args": ["-p", "{prompt}", "--output-format", "json"],
72
+ "modelArgs": ["--model", "{model}"]
73
+ },
74
+ "env": { "allow": ["GEMINI_API_KEY", "GOOGLE_API_KEY"] },
75
+ "isolation": "env",
76
+ "timeoutMs": 120000,
77
+ "usage": {
78
+ "format": "json",
79
+ "fields": {
80
+ "input": ["stats.inputTokens", "stats.tokens.prompt", "stats.prompt_tokens", "usage.input_tokens"],
81
+ "cacheWrite": ["stats.cacheWriteTokens", "stats.tokens.cacheWrite", "usage.cache_creation_input_tokens"],
82
+ "cacheRead": ["stats.cachedTokens", "stats.tokens.cached", "usage.cache_read_input_tokens"],
83
+ "output": ["stats.outputTokens", "stats.tokens.candidates", "stats.completion_tokens", "usage.output_tokens"],
84
+ "turns": ["stats.turns", "stats.totalTurns", "num_turns"],
85
+ "toolCalls": ["stats.toolCalls", "stats.tools.totalCalls", "num_tool_calls"],
86
+ "costUsd": ["stats.totalCostUsd", "stats.costUsd", "total_cost_usd"]
87
+ },
88
+ "totals": [
89
+ {
90
+ "root": "stats.models",
91
+ "keys": { "input": "tokens.prompt", "cacheRead": "tokens.cached", "output": "tokens.candidates" }
92
+ }
93
+ ]
94
+ },
95
+ "transcript": { "sources": ["stdout"] }
63
96
  },
64
97
  "opencode": {
65
98
  "id": "opencode",
66
99
  "label": "opencode",
67
- "kind": "cli",
100
+ "kind": "agent",
68
101
  "bin": "opencode",
69
- "template": "opencode run \"{prompt}\"",
70
- "args": ["run", "--format", "json", "{prompt}"],
71
- "modelArgs": ["--model", "{model}"],
72
- "format": "jsonl",
73
- "usageSource": "session export",
74
- "fields": {
75
- "input": ["tokens.input", "usage.input_tokens", "part.tokens.input"],
76
- "cacheWrite": ["tokens.cache.write", "usage.cache_creation_input_tokens", "part.tokens.cache.write"],
77
- "cacheRead": ["tokens.cache.read", "usage.cache_read_input_tokens", "part.tokens.cache.read"],
78
- "output": ["tokens.output", "usage.output_tokens", "part.tokens.output"],
79
- "turns": ["turns", "num_turns"],
80
- "toolCalls": ["toolCalls", "num_tool_calls"],
81
- "costUsd": ["cost", "part.cost", "total_cost_usd"]
82
- }
102
+ "prompt": {
103
+ "delivery": "argv",
104
+ "args": ["run", "--format", "json", "{prompt}"],
105
+ "modelArgs": ["--model", "{model}"]
106
+ },
107
+ "env": { "allow": ["OPENAI_API_KEY", "ANTHROPIC_API_KEY"] },
108
+ "isolation": "env",
109
+ "timeoutMs": 120000,
110
+ "usage": {
111
+ "format": "jsonl",
112
+ "fields": {
113
+ "input": ["tokens.input", "usage.input_tokens", "part.tokens.input"],
114
+ "cacheWrite": ["tokens.cache.write", "usage.cache_creation_input_tokens", "part.tokens.cache.write"],
115
+ "cacheRead": ["tokens.cache.read", "usage.cache_read_input_tokens", "part.tokens.cache.read"],
116
+ "output": ["tokens.output", "usage.output_tokens", "part.tokens.output"],
117
+ "turns": ["turns", "num_turns"],
118
+ "toolCalls": ["toolCalls", "num_tool_calls"],
119
+ "costUsd": ["cost", "part.cost", "total_cost_usd"]
120
+ },
121
+ "events": {
122
+ "turns": [{ "type": "step_finish" }, { "event": "message_send" }],
123
+ "toolCalls": [{ "type": "tool_use" }]
124
+ }
125
+ },
126
+ "transcript": { "sources": ["stdout"] }
83
127
  },
84
128
  "cursor": {
85
129
  "id": "cursor",
86
130
  "label": "Cursor CLI",
87
- "kind": "cli",
131
+ "kind": "agent",
88
132
  "bin": "cursor-agent",
89
- "template": "cursor-agent -p \"{prompt}\" --output-format json",
90
- "args": ["-p", "{prompt}", "--output-format", "json"],
91
- "modelArgs": ["--model", "{model}"],
92
- "format": "json",
93
- "usageSource": "result JSON",
94
- "fields": {
95
- "input": ["usage.input_tokens", "usage.input", "stats.inputTokens"],
96
- "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cacheWrite", "stats.cacheWriteTokens"],
97
- "cacheRead": ["usage.cache_read_input_tokens", "usage.cacheRead", "stats.cachedTokens"],
98
- "output": ["usage.output_tokens", "usage.output", "stats.outputTokens"],
99
- "turns": ["num_turns", "turns", "usage.turns"],
100
- "toolCalls": ["num_tool_calls", "tool_calls", "usage.toolCalls", "toolCalls"],
101
- "costUsd": ["total_cost_usd", "costUsd", "cost_usd"]
102
- }
133
+ "prompt": {
134
+ "delivery": "argv",
135
+ "args": ["-p", "{prompt}", "--output-format", "json"],
136
+ "modelArgs": ["--model", "{model}"]
137
+ },
138
+ "env": { "allow": ["CURSOR_API_KEY"] },
139
+ "isolation": "env",
140
+ "timeoutMs": 120000,
141
+ "usage": {
142
+ "format": "json",
143
+ "fields": {
144
+ "input": ["usage.input_tokens", "usage.input", "stats.inputTokens"],
145
+ "cacheWrite": ["usage.cache_creation_input_tokens", "usage.cacheWrite", "stats.cacheWriteTokens"],
146
+ "cacheRead": ["usage.cache_read_input_tokens", "usage.cacheRead", "stats.cachedTokens"],
147
+ "output": ["usage.output_tokens", "usage.output", "stats.outputTokens"],
148
+ "turns": ["num_turns", "turns", "usage.turns"],
149
+ "toolCalls": ["num_tool_calls", "tool_calls", "usage.toolCalls", "toolCalls"],
150
+ "costUsd": ["total_cost_usd", "costUsd", "cost_usd"]
151
+ }
152
+ },
153
+ "transcript": { "sources": ["stdout"] }
103
154
  },
104
155
  "aider": {
105
156
  "id": "aider",
106
157
  "label": "Aider",
107
- "kind": "cli",
158
+ "kind": "agent",
108
159
  "bin": "aider",
109
- "template": "aider --message \"{prompt}\" --yes-always",
110
- "args": ["--message", "{prompt}", "--yes-always", "--analytics-log", "{analyticsLog}"],
111
- "modelArgs": ["--model", "{model}"],
112
- "format": "analytics-log",
113
- "usageSource": "--analytics-log file",
114
- "fields": {
115
- "input": ["prompt_tokens", "properties.prompt_tokens", "usage.input_tokens"],
116
- "cacheWrite": ["cache_creation_input_tokens", "properties.cache_write_tokens"],
117
- "cacheRead": ["cache_read_input_tokens", "properties.cache_read_tokens"],
118
- "output": ["completion_tokens", "properties.completion_tokens", "usage.output_tokens"],
119
- "turns": ["turns", "properties.turns"],
120
- "toolCalls": ["tool_calls", "properties.tool_calls"],
121
- "costUsd": ["cost", "total_cost", "properties.cost", "properties.total_cost"]
122
- }
160
+ "prompt": {
161
+ "delivery": "argv",
162
+ "args": ["--message", "{prompt}", "--yes-always", "--analytics-log", "{analyticsLog}"],
163
+ "modelArgs": ["--model", "{model}"]
164
+ },
165
+ "env": { "allow": ["OPENAI_API_KEY", "ANTHROPIC_API_KEY"] },
166
+ "isolation": "env",
167
+ "timeoutMs": 120000,
168
+ "usage": {
169
+ "format": "analytics-log",
170
+ "fields": {
171
+ "input": ["prompt_tokens", "properties.prompt_tokens", "usage.input_tokens"],
172
+ "cacheWrite": ["cache_creation_input_tokens", "properties.cache_write_tokens"],
173
+ "cacheRead": ["cache_read_input_tokens", "properties.cache_read_tokens"],
174
+ "output": ["completion_tokens", "properties.completion_tokens", "usage.output_tokens"],
175
+ "turns": ["turns", "properties.turns"],
176
+ "toolCalls": ["tool_calls", "properties.tool_calls"],
177
+ "costUsd": ["cost", "total_cost", "properties.cost", "properties.total_cost"]
178
+ }
179
+ },
180
+ "transcript": { "sources": ["stdout", "analytics"] }
123
181
  },
124
182
  "gold": {
125
183
  "id": "gold",
126
184
  "label": "Gold Oracle",
127
- "kind": "builtin",
185
+ "kind": "oracle",
186
+ "oracle": { "from": "vault" },
128
187
  "bin": null,
129
- "template": null,
130
- "args": [],
131
- "modelArgs": [],
132
- "format": "builtin",
133
- "usageSource": "vault gold.patch",
134
- "fields": {}
188
+ "prompt": { "delivery": "argv", "args": [], "modelArgs": [] },
189
+ "env": { "allow": [] },
190
+ "isolation": "none",
191
+ "usage": { "format": "none", "fields": {}, "fixed": { "turns": 1, "toolCalls": 1 } },
192
+ "transcript": { "sources": [] }
135
193
  },
136
194
  "noop": {
137
195
  "id": "noop",
138
196
  "label": "No-op Baseline",
139
- "kind": "builtin",
197
+ "kind": "oracle",
198
+ "oracle": { "from": "none" },
140
199
  "bin": null,
141
- "template": null,
142
- "args": [],
143
- "modelArgs": [],
144
- "format": "builtin",
145
- "usageSource": "none",
146
- "fields": {}
200
+ "prompt": { "delivery": "argv", "args": [], "modelArgs": [] },
201
+ "env": { "allow": [] },
202
+ "isolation": "none",
203
+ "usage": { "format": "none", "fields": {} },
204
+ "transcript": { "sources": [] }
147
205
  }
148
206
  }
149
207
  }