agentera 3.0.0-dev.4 → 3.0.0-dev.6

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 (321) hide show
  1. package/README.md +4 -3
  2. package/bundle/.agentera-npx-bundle.json +1 -1
  3. package/bundle/references/adapters/opencode.md +1 -1
  4. package/bundle/references/adapters/package-registry.yaml +0 -1
  5. package/bundle/references/adapters/package-surface-characterization.md +1 -2
  6. package/bundle/references/analysis/startup-measurement-contract.yaml +11 -11
  7. package/bundle/references/cli/agent-ready-state-contract.yaml +5 -5
  8. package/bundle/references/cli/audience-namespace-cli-migration.yaml +40 -26
  9. package/bundle/references/cli/bundle-skill-vocabulary.yaml +2 -30
  10. package/bundle/references/cli/capability-instruction-contract.yaml +98 -57
  11. package/bundle/references/cli/coexistence-probe.yaml +9 -0
  12. package/bundle/references/cli/routing-execution-vocabulary.yaml +6 -6
  13. package/bundle/references/cli/single-name-protocol.yaml +42 -0
  14. package/bundle/references/cli/update-channels.yaml +18 -2
  15. package/bundle/references/cli/upgrade-repair-wording.md +31 -0
  16. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +98 -0
  17. package/bundle/references/cli/vocabulary-index.yaml +3 -3
  18. package/bundle/references/cli/vocabulary.md +34 -26
  19. package/bundle/references/meta/documentation-inventory.md +9 -3
  20. package/bundle/registry.json +1 -1
  21. package/bundle/skills/agentera/SKILL.md +50 -33
  22. package/bundle/skills/agentera/agents/dokumentera.toml +1 -1
  23. package/bundle/skills/agentera/agents/hej.toml +1 -1
  24. package/bundle/skills/agentera/agents/inspektera.toml +1 -1
  25. package/bundle/skills/agentera/agents/inspirera.toml +1 -1
  26. package/bundle/skills/agentera/agents/optimera.toml +1 -1
  27. package/bundle/skills/agentera/agents/orkestrera.toml +1 -1
  28. package/bundle/skills/agentera/agents/planera.toml +1 -1
  29. package/bundle/skills/agentera/agents/profilera.toml +1 -1
  30. package/bundle/skills/agentera/agents/realisera.toml +1 -1
  31. package/bundle/skills/agentera/agents/resonera.toml +1 -1
  32. package/bundle/skills/agentera/agents/visionera.toml +1 -1
  33. package/bundle/skills/agentera/agents/visualisera.toml +1 -1
  34. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +26 -13
  35. package/bundle/skills/agentera/capability_schema_contract.yaml +33 -14
  36. package/bundle/skills/agentera/references/contract.md +2 -2
  37. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +1 -1
  38. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +15 -36
  39. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +14 -0
  40. package/dist/analytics/extractCorpus/cli.js +101 -0
  41. package/dist/analytics/extractCorpus/cli.js.map +1 -0
  42. package/dist/analytics/extractCorpus/copilotSessions.js +231 -0
  43. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -0
  44. package/dist/analytics/extractCorpus/core.js +357 -0
  45. package/dist/analytics/extractCorpus/core.js.map +1 -0
  46. package/dist/analytics/extractCorpus/corpus.js +132 -0
  47. package/dist/analytics/extractCorpus/corpus.js.map +1 -0
  48. package/dist/analytics/extractCorpus/cursorSessions.js +420 -0
  49. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -0
  50. package/dist/analytics/extractCorpus/filesystemSources.js +122 -0
  51. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -0
  52. package/dist/analytics/extractCorpus/index.js +9 -0
  53. package/dist/analytics/extractCorpus/index.js.map +1 -0
  54. package/dist/analytics/extractCorpus/jsonlSessions.js +185 -0
  55. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -0
  56. package/dist/analytics/extractCorpus/sqliteSessions.js +275 -0
  57. package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -0
  58. package/dist/analytics/extractCorpus.js +2 -1790
  59. package/dist/analytics/extractCorpus.js.map +1 -1
  60. package/dist/analytics/usageStats.js +1 -1
  61. package/dist/analytics/usageStats.js.map +1 -1
  62. package/dist/capabilities/dokumentera/instructions.js +6 -0
  63. package/dist/capabilities/dokumentera/instructions.js.map +1 -0
  64. package/dist/capabilities/hej/instructions.js +6 -0
  65. package/dist/capabilities/hej/instructions.js.map +1 -0
  66. package/dist/capabilities/index.js +38 -0
  67. package/dist/capabilities/index.js.map +1 -0
  68. package/dist/capabilities/inspektera/instructions.js +6 -0
  69. package/dist/capabilities/inspektera/instructions.js.map +1 -0
  70. package/dist/capabilities/inspirera/instructions.js +6 -0
  71. package/dist/capabilities/inspirera/instructions.js.map +1 -0
  72. package/dist/capabilities/optimera/instructions.js +6 -0
  73. package/dist/capabilities/optimera/instructions.js.map +1 -0
  74. package/dist/capabilities/orkestrera/instructions.js +6 -0
  75. package/dist/capabilities/orkestrera/instructions.js.map +1 -0
  76. package/dist/capabilities/planera/instructions.js +6 -0
  77. package/dist/capabilities/planera/instructions.js.map +1 -0
  78. package/dist/capabilities/profilera/instructions.js +6 -0
  79. package/dist/capabilities/profilera/instructions.js.map +1 -0
  80. package/dist/capabilities/realisera/instructions.js +6 -0
  81. package/dist/capabilities/realisera/instructions.js.map +1 -0
  82. package/dist/capabilities/resonera/instructions.js +6 -0
  83. package/dist/capabilities/resonera/instructions.js.map +1 -0
  84. package/dist/capabilities/visionera/instructions.js +6 -0
  85. package/dist/capabilities/visionera/instructions.js.map +1 -0
  86. package/dist/capabilities/visualisera/instructions.js +6 -0
  87. package/dist/capabilities/visualisera/instructions.js.map +1 -0
  88. package/dist/cli/capabilityContext/benchmark.js +557 -0
  89. package/dist/cli/capabilityContext/benchmark.js.map +1 -0
  90. package/dist/cli/capabilityContext/bespoke.js +25 -0
  91. package/dist/cli/capabilityContext/bespoke.js.map +1 -0
  92. package/dist/cli/capabilityContext/closeout.js +230 -0
  93. package/dist/cli/capabilityContext/closeout.js.map +1 -0
  94. package/dist/cli/capabilityContext/contract.js +186 -0
  95. package/dist/cli/capabilityContext/contract.js.map +1 -0
  96. package/dist/cli/capabilityContext/evidence.js +446 -0
  97. package/dist/cli/capabilityContext/evidence.js.map +1 -0
  98. package/dist/cli/capabilityContext/index.js +4 -0
  99. package/dist/cli/capabilityContext/index.js.map +1 -0
  100. package/dist/cli/capabilityContext/orchestration.js +107 -0
  101. package/dist/cli/capabilityContext/orchestration.js.map +1 -0
  102. package/dist/cli/capabilityContext/planState.js +271 -0
  103. package/dist/cli/capabilityContext/planState.js.map +1 -0
  104. package/dist/cli/capabilityContext/progress.js +96 -0
  105. package/dist/cli/capabilityContext/progress.js.map +1 -0
  106. package/dist/cli/capabilityContext/realisera.js +174 -0
  107. package/dist/cli/capabilityContext/realisera.js.map +1 -0
  108. package/dist/cli/capabilityContext/shared.js +94 -0
  109. package/dist/cli/capabilityContext/shared.js.map +1 -0
  110. package/dist/cli/capabilityContext/slim.js +106 -0
  111. package/dist/cli/capabilityContext/slim.js.map +1 -0
  112. package/dist/cli/capabilityContext/startup.js +208 -0
  113. package/dist/cli/capabilityContext/startup.js.map +1 -0
  114. package/dist/cli/capabilityContext/types.js +43 -0
  115. package/dist/cli/capabilityContext/types.js.map +1 -0
  116. package/dist/cli/capabilityContext.js +1 -2420
  117. package/dist/cli/capabilityContext.js.map +1 -1
  118. package/dist/cli/commands/capability.js +1 -8
  119. package/dist/cli/commands/capability.js.map +1 -1
  120. package/dist/cli/commands/compact.js +1 -1
  121. package/dist/cli/commands/compact.js.map +1 -1
  122. package/dist/cli/commands/doctor.js +35 -6
  123. package/dist/cli/commands/doctor.js.map +1 -1
  124. package/dist/cli/commands/lint.js +4 -36
  125. package/dist/cli/commands/lint.js.map +1 -1
  126. package/dist/cli/commands/query.js +1 -1
  127. package/dist/cli/commands/query.js.map +1 -1
  128. package/dist/cli/commands/report.js +11 -2
  129. package/dist/cli/commands/report.js.map +1 -1
  130. package/dist/cli/commands/schema.js +1 -2
  131. package/dist/cli/commands/schema.js.map +1 -1
  132. package/dist/cli/commands/state/decisions.js +397 -0
  133. package/dist/cli/commands/state/decisions.js.map +1 -0
  134. package/dist/cli/commands/state/docs.js +93 -0
  135. package/dist/cli/commands/state/docs.js.map +1 -0
  136. package/dist/cli/commands/state/experiments.js +67 -0
  137. package/dist/cli/commands/state/experiments.js.map +1 -0
  138. package/dist/cli/commands/state/health.js +114 -0
  139. package/dist/cli/commands/state/health.js.map +1 -0
  140. package/dist/cli/commands/state/index.js +51 -0
  141. package/dist/cli/commands/state/index.js.map +1 -0
  142. package/dist/cli/commands/state/objective.js +68 -0
  143. package/dist/cli/commands/state/objective.js.map +1 -0
  144. package/dist/cli/commands/state/plan.js +172 -0
  145. package/dist/cli/commands/state/plan.js.map +1 -0
  146. package/dist/cli/commands/state/progress.js +47 -0
  147. package/dist/cli/commands/state/progress.js.map +1 -0
  148. package/dist/cli/commands/state/shared.js +15 -0
  149. package/dist/cli/commands/state/shared.js.map +1 -0
  150. package/dist/cli/commands/state/todo.js +121 -0
  151. package/dist/cli/commands/state/todo.js.map +1 -0
  152. package/dist/cli/commands/state.js +29 -18
  153. package/dist/cli/commands/state.js.map +1 -1
  154. package/dist/cli/commands/validate.js +44 -20
  155. package/dist/cli/commands/validate.js.map +1 -1
  156. package/dist/cli/dispatch/check.js +328 -0
  157. package/dist/cli/dispatch/check.js.map +1 -0
  158. package/dist/cli/dispatch/index.js +177 -0
  159. package/dist/cli/dispatch/index.js.map +1 -0
  160. package/dist/cli/dispatch/lifecycle.js +492 -0
  161. package/dist/cli/dispatch/lifecycle.js.map +1 -0
  162. package/dist/cli/dispatch/prime.js +100 -0
  163. package/dist/cli/dispatch/prime.js.map +1 -0
  164. package/dist/cli/dispatch/shared.js +64 -0
  165. package/dist/cli/dispatch/shared.js.map +1 -0
  166. package/dist/cli/dispatch/state.js +149 -0
  167. package/dist/cli/dispatch/state.js.map +1 -0
  168. package/dist/cli/dispatch.js +1 -995
  169. package/dist/cli/dispatch.js.map +1 -1
  170. package/dist/cli/errors.js +53 -0
  171. package/dist/cli/errors.js.map +1 -0
  172. package/dist/cli/help.js +1 -3
  173. package/dist/cli/help.js.map +1 -1
  174. package/dist/cli/orientation.js +10 -7
  175. package/dist/cli/orientation.js.map +1 -1
  176. package/dist/cli/stateQuery.js +7 -0
  177. package/dist/cli/stateQuery.js.map +1 -1
  178. package/dist/cli/todoMarkdown.js +33 -0
  179. package/dist/cli/todoMarkdown.js.map +1 -0
  180. package/dist/hooks/common.js +8 -25
  181. package/dist/hooks/common.js.map +1 -1
  182. package/dist/hooks/compaction/apply.js +244 -0
  183. package/dist/hooks/compaction/apply.js.map +1 -0
  184. package/dist/hooks/compaction/dryRun.js +181 -0
  185. package/dist/hooks/compaction/dryRun.js.map +1 -0
  186. package/dist/hooks/compaction/index.js +23 -0
  187. package/dist/hooks/compaction/index.js.map +1 -0
  188. package/dist/hooks/compaction/parse.js +129 -0
  189. package/dist/hooks/compaction/parse.js.map +1 -0
  190. package/dist/hooks/compaction/retention.js +197 -0
  191. package/dist/hooks/compaction/retention.js.map +1 -0
  192. package/dist/hooks/compaction/status.js +243 -0
  193. package/dist/hooks/compaction/status.js.map +1 -0
  194. package/dist/hooks/compaction/types.js +6 -0
  195. package/dist/hooks/compaction/types.js.map +1 -0
  196. package/dist/hooks/compaction.js +20 -20
  197. package/dist/hooks/compaction.js.map +1 -1
  198. package/dist/hooks/cursorPreToolUse.js +1 -1
  199. package/dist/hooks/cursorPreToolUse.js.map +1 -1
  200. package/dist/hooks/sessionStart.js +4 -4
  201. package/dist/hooks/sessionStart.js.map +1 -1
  202. package/dist/hooks/sessionStop.js +3 -12
  203. package/dist/hooks/sessionStop.js.map +1 -1
  204. package/dist/hooks/validateArtifact/agentFacing.js +10 -0
  205. package/dist/hooks/validateArtifact/agentFacing.js.map +1 -0
  206. package/dist/hooks/validateArtifact/index.js +149 -0
  207. package/dist/hooks/validateArtifact/index.js.map +1 -0
  208. package/dist/hooks/validateArtifact/markdown.js +95 -0
  209. package/dist/hooks/validateArtifact/markdown.js.map +1 -0
  210. package/dist/hooks/validateArtifact/runtime.js +83 -0
  211. package/dist/hooks/validateArtifact/runtime.js.map +1 -0
  212. package/dist/hooks/validateArtifact/schema.js +455 -0
  213. package/dist/hooks/validateArtifact/schema.js.map +1 -0
  214. package/dist/hooks/validateArtifact/traversal.js +105 -0
  215. package/dist/hooks/validateArtifact/traversal.js.map +1 -0
  216. package/dist/hooks/validateArtifact/violations.js +105 -0
  217. package/dist/hooks/validateArtifact/violations.js.map +1 -0
  218. package/dist/hooks/validateArtifact.js +40 -49
  219. package/dist/hooks/validateArtifact.js.map +1 -1
  220. package/dist/migrate/v2HandoffManifest.js +333 -0
  221. package/dist/migrate/v2HandoffManifest.js.map +1 -0
  222. package/dist/registries/artifactProtocolIds.js +77 -0
  223. package/dist/registries/artifactProtocolIds.js.map +1 -0
  224. package/dist/registries/capabilityContract.js +12 -11
  225. package/dist/registries/capabilityContract.js.map +1 -1
  226. package/dist/registries/evaluatorHandoffContract.js +171 -0
  227. package/dist/registries/evaluatorHandoffContract.js.map +1 -0
  228. package/dist/release/releaseMetadata.js +235 -0
  229. package/dist/release/releaseMetadata.js.map +1 -0
  230. package/dist/setup/codex/agents.js +96 -0
  231. package/dist/setup/codex/agents.js.map +1 -0
  232. package/dist/setup/codex/cli.js +161 -0
  233. package/dist/setup/codex/cli.js.map +1 -0
  234. package/dist/setup/codex/configToml.js +644 -0
  235. package/dist/setup/codex/configToml.js.map +1 -0
  236. package/dist/setup/codex/constants.js +29 -0
  237. package/dist/setup/codex/constants.js.map +1 -0
  238. package/dist/setup/codex/installRoot.js +64 -0
  239. package/dist/setup/codex/installRoot.js.map +1 -0
  240. package/dist/setup/codex/state.js +270 -0
  241. package/dist/setup/codex/state.js.map +1 -0
  242. package/dist/setup/codex.js +11 -1055
  243. package/dist/setup/codex.js.map +1 -1
  244. package/dist/setup/doctor/core.js +300 -0
  245. package/dist/setup/doctor/core.js.map +1 -0
  246. package/dist/setup/doctor/diagnostics.js +247 -0
  247. package/dist/setup/doctor/diagnostics.js.map +1 -0
  248. package/dist/setup/doctor/opencode.js +281 -0
  249. package/dist/setup/doctor/opencode.js.map +1 -0
  250. package/dist/setup/doctor/report.js +474 -0
  251. package/dist/setup/doctor/report.js.map +1 -0
  252. package/dist/setup/doctor.js +9 -1296
  253. package/dist/setup/doctor.js.map +1 -1
  254. package/dist/setup/opencode.js +13 -0
  255. package/dist/setup/opencode.js.map +1 -0
  256. package/dist/setup/smokeChecks.js +1 -1
  257. package/dist/setup/smokeChecks.js.map +1 -1
  258. package/dist/state/progressCommit.js +1 -1
  259. package/dist/state/progressCommit.js.map +1 -1
  260. package/dist/state/startupAnalysis/benchmark.js +367 -0
  261. package/dist/state/startupAnalysis/benchmark.js.map +1 -0
  262. package/dist/state/startupAnalysis/contract.js +122 -0
  263. package/dist/state/startupAnalysis/contract.js.map +1 -0
  264. package/dist/state/startupAnalysis/helpers.js +332 -0
  265. package/dist/state/startupAnalysis/helpers.js.map +1 -0
  266. package/dist/state/startupAnalysis/index.js +7 -0
  267. package/dist/state/startupAnalysis/index.js.map +1 -0
  268. package/dist/state/startupAnalysis/metrics.js +334 -0
  269. package/dist/state/startupAnalysis/metrics.js.map +1 -0
  270. package/dist/state/startupAnalysis/records.js +195 -0
  271. package/dist/state/startupAnalysis/records.js.map +1 -0
  272. package/dist/state/startupAnalysis/report.js +123 -0
  273. package/dist/state/startupAnalysis/report.js.map +1 -0
  274. package/dist/state/startupAnalysis/threshold.js +500 -0
  275. package/dist/state/startupAnalysis/threshold.js.map +1 -0
  276. package/dist/state/startupAnalysis.js +2 -1952
  277. package/dist/state/startupAnalysis.js.map +1 -1
  278. package/dist/upgrade/coexistenceProbe.js +83 -0
  279. package/dist/upgrade/coexistenceProbe.js.map +1 -0
  280. package/dist/upgrade/doctor.js +41 -2
  281. package/dist/upgrade/doctor.js.map +1 -1
  282. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -1
  283. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +1 -1
  284. package/dist/upgrade/migrateArtifactsV2ToV3.js +5 -83
  285. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  286. package/dist/upgrade/nextMajorDoctor.js +136 -0
  287. package/dist/upgrade/nextMajorDoctor.js.map +1 -0
  288. package/dist/upgrade/projectIntegration.js +3 -1
  289. package/dist/upgrade/projectIntegration.js.map +1 -1
  290. package/dist/upgrade/runtimeMigration.js +32 -5
  291. package/dist/upgrade/runtimeMigration.js.map +1 -1
  292. package/dist/upgrade/v3CapabilitySurface.js +15 -0
  293. package/dist/upgrade/v3CapabilitySurface.js.map +1 -0
  294. package/dist/upgrade/versionResolution.js +12 -4
  295. package/dist/upgrade/versionResolution.js.map +1 -1
  296. package/dist/validate/appHomeContract.js +4 -4
  297. package/dist/validate/appHomeContract.js.map +1 -1
  298. package/dist/validate/capability.js +11 -3
  299. package/dist/validate/capability.js.map +1 -1
  300. package/dist/validate/selfAudit.js +62 -20
  301. package/dist/validate/selfAudit.js.map +1 -1
  302. package/dist/validate/vocabularyAuthority.js +298 -0
  303. package/dist/validate/vocabularyAuthority.js.map +1 -0
  304. package/package.json +4 -4
  305. package/bundle/references/v1-section-mapping.md +0 -47
  306. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  307. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  308. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  309. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  310. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  311. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  312. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  313. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  314. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  315. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  316. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  317. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  318. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  319. package/bundle/skills/hej/SKILL.md +0 -69
  320. package/bundle/skills/hej/agents/hej.toml +0 -11
  321. package/bundle/skills/hej/agents/openai.yaml +0 -8
@@ -10,7 +10,7 @@ VALIDATION:
10
10
  source-code read prohibition.
11
11
  severity: critical
12
12
  checks:
13
- - "instructions.md contains NEVER read implementation source code"
13
+ - "orkestrera prose (packages/cli/src/capabilities/orkestrera/instructions.ts) contains NEVER read implementation source code"
14
14
  2:
15
15
  id: V2
16
16
  rule: evaluation_gate_required
@@ -20,7 +20,7 @@ VALIDATION:
20
20
  the prose contains the never-skip-evaluation safety rail.
21
21
  severity: critical
22
22
  checks:
23
- - "instructions.md contains NEVER skip evaluation"
23
+ - "orkestrera prose contains NEVER skip evaluation"
24
24
  3:
25
25
  id: V3
26
26
  rule: retry_budget_enforced
@@ -30,7 +30,7 @@ VALIDATION:
30
30
  is stated in the prose and safety rails.
31
31
  severity: critical
32
32
  checks:
33
- - "instructions.md contains retry budget of 2"
33
+ - "orkestrera prose contains retry budget of 2"
34
34
  4:
35
35
  id: V4
36
36
  rule: exit_marker_required
@@ -40,8 +40,8 @@ VALIDATION:
40
40
  where status is one of EX1-EX4.
41
41
  severity: critical
42
42
  checks:
43
- - "instructions.md contains exit marker with glyph ⎈ (SG12)"
44
- - "instructions.md references exit signals EX1-EX4"
43
+ - "orkestrera prose contains exit marker with glyph ⎈ (SG12)"
44
+ - "orkestrera prose references exit signals EX1-EX4"
45
45
  5:
46
46
  id: V5
47
47
  rule: orchestrator_read_only_artifacts
@@ -66,9 +66,9 @@ VALIDATION:
66
66
  or decisions artifact reads.
67
67
  severity: critical
68
68
  checks:
69
- - "instructions.md contains agentera prime --context orkestrera --format json"
70
- - "instructions.md contains Use the returned `orchestration_context` before raw plan, progress, health, TODO, or decisions artifacts"
71
- - "instructions.md contains If `source_contract.complete_for_orchestration_context` is true, do not read raw plan, progress, health, TODO, or decisions artifacts"
69
+ - "orkestrera prose contains agentera prime --context orkestrera --format json"
70
+ - "orkestrera prose contains Use the returned `orchestration_context` before raw plan, progress, health, TODO, or decisions artifacts"
71
+ - "orkestrera prose contains If `source_contract.complete_for_orchestration_context` is true, do not read raw plan, progress, health, TODO, or decisions artifacts"
72
72
  7:
73
73
  id: V7
74
74
  rule: cli_fallback_before_raw_read
@@ -77,8 +77,8 @@ VALIDATION:
77
77
  routine CLI fallback commands before any last-resort raw artifact read.
78
78
  severity: critical
79
79
  checks:
80
- - "instructions.md contains run the listed routine CLI fallback commands"
81
- - "instructions.md contains Read a raw artifact only as a last-resort diagnostic"
80
+ - "orkestrera prose contains run the listed routine CLI fallback commands"
81
+ - "orkestrera prose contains Read a raw artifact only as a last-resort diagnostic"
82
82
  8:
83
83
  id: V8
84
84
  rule: caveats_preserved_for_evaluation
@@ -88,9 +88,9 @@ VALIDATION:
88
88
  inspektera.
89
89
  severity: critical
90
90
  checks:
91
- - "instructions.md contains compacted decision caveats"
92
- - "instructions.md contains stale health/profile/app caveats"
93
- - "instructions.md contains retry-state provenance"
91
+ - "orkestrera prose contains compacted decision caveats"
92
+ - "orkestrera prose contains stale health/profile/app caveats"
93
+ - "orkestrera prose contains retry-state provenance"
94
94
  9:
95
95
  id: V9
96
96
  rule: satisfaction_authority_boundary
@@ -105,3 +105,16 @@ VALIDATION:
105
105
  - "Provisional satisfaction requires evidence"
106
106
  - "Only the user confirms final satisfaction"
107
107
  - "Missing or compacted satisfaction caveats are preserved"
108
+ 10:
109
+ id: V10
110
+ rule: inspektera_citation_required
111
+ description: >-
112
+ Orkestrera Step 3 Surface 2 inspektera delegation MUST require a
113
+ citation: <file>:<line> (or not-applicable: <reason>) for every WARN and
114
+ FAIL finding, and require verify_command for WARN rows with file:line
115
+ citations. Authority: references/cli/capability-instruction-contract.yaml#evaluator_handoff.
116
+ severity: critical
117
+ checks:
118
+ - "orkestrera prose contains citation: `<file>:<line>` OR `not-applicable: <reason>`"
119
+ - "orkestrera prose contains verify_command"
120
+ - "orkestrera prose contains evaluator_handoff.output_requirements"
@@ -7,15 +7,24 @@
7
7
  # 1. Required groups every capability schema must contain
8
8
  # 2. Entry structure within each group (numbered, stable IDs)
9
9
  # 3. Deprecation protocol (deprecated + replaced_by)
10
- # 4. Directory structure requirements (instructions.md, schemas/)
10
+ # 4. Directory structure requirements (instruction module, schemas/)
11
11
  # 5. Machine-readable validation rules consumed by future contract loaders
12
+ #
13
+ # D65: the per-capability `instructions.md` Markdown file is retired. The
14
+ # behavioral instructions now live at
15
+ # `packages/cli/src/capabilities/<name>/instructions.ts` as a default-exported
16
+ # string constant. The directory requirement below points at the new path;
17
+ # the V1 directory_structure rule's `checks` list and the ARTIFACTS A3 path
18
+ # text follow the same move.
12
19
 
13
20
  meta:
14
21
  name: capability_schema_contract
15
22
  version: "1.0.0"
16
23
  description: >-
17
24
  Defines what a valid capability schema looks like.
18
- A capability directory must contain instructions.md and a schemas/ directory.
25
+ A capability directory must contain schemas/ and the runtime must
26
+ resolve the capability's behavioral instructions from the
27
+ packages/cli/src/capabilities/<name>/instructions.ts module.
19
28
  The union of all YAML files in schemas/ must contain all required groups.
20
29
  capability_type: contract
21
30
  self_referential: true
@@ -68,11 +77,15 @@ GROUP_PREFIXES:
68
77
  EXIT_CONDITIONS: E
69
78
 
70
79
  DIRECTORY_REQUIREMENTS:
71
- instruction_file:
72
- path: instructions.md
80
+ instruction_module:
81
+ path: packages/cli/src/capabilities/<name>/instructions.ts
73
82
  type: file
74
83
  required: true
75
- description: Behavioral instructions the agent reads.
84
+ description: >-
85
+ TypeScript module that exports the capability's behavioral instructions
86
+ as a default-exported string constant. The runtime loads it via the
87
+ compiled .js path and surfaces the prose through
88
+ `agentera prime --context <name> --format json`.
76
89
  schemas_directory:
77
90
  path: schemas
78
91
  type: directory
@@ -246,9 +259,9 @@ ARTIFACTS:
246
259
  name: capability_directory
247
260
  path: "capabilities/<name>/"
248
261
  description: >-
249
- A valid capability directory. Must contain instructions.md and schemas/.
250
- The schemas/ directory holds YAML files whose union covers all required
251
- groups.
262
+ A valid capability directory. Must contain schemas/. The behavioral
263
+ instructions module lives at
264
+ packages/cli/src/capabilities/<name>/instructions.ts.
252
265
  produces: false
253
266
  consumes: true
254
267
  2:
@@ -263,11 +276,15 @@ ARTIFACTS:
263
276
  consumes: true
264
277
  3:
265
278
  id: A3
266
- name: instruction_file
267
- path: "capabilities/<name>/instructions.md"
279
+ name: instruction_module
280
+ path: "packages/cli/src/capabilities/<name>/instructions.ts"
268
281
  description: >-
269
- Behavioral instructions the agent reads. Markdown format. Contains the
270
- capability's workflow, personality, interaction rules, and examples.
282
+ Behavioral instructions the agent reads. TypeScript module that exports
283
+ a default-exported string constant. The runtime loads it via the
284
+ compiled .js path and serves the prose through
285
+ `agentera prime --context <name> --format json`. The Markdown
286
+ `instructions.md` file is no longer part of the on-disk capability
287
+ surface (D65).
271
288
  produces: false
272
289
  consumes: true
273
290
  4:
@@ -285,10 +302,12 @@ VALIDATION:
285
302
  id: V1
286
303
  rule: directory_structure
287
304
  description: >-
288
- Capability directory must contain instructions.md and schemas/ directory.
305
+ Capability directory must contain schemas/ and the instruction module
306
+ packages/cli/src/capabilities/<name>/instructions.ts must exist as a
307
+ TypeScript source file (the runtime resolves the compiled .js path).
289
308
  severity: error
290
309
  checks:
291
- - "instructions.md is a file"
310
+ - "instruction_module is a file"
292
311
  - "schemas/ is a directory"
293
312
  - "schemas/ contains at least one .yaml file"
294
313
  2:
@@ -145,7 +145,7 @@ Three project-facing files at the project root; nine operational files in `.agen
145
145
  | CHANGELOG.md | CHANGELOG.md | realisera | project contributors | ## [Unreleased], ### Added/Changed/Fixed |
146
146
  | DECISIONS.md | .agentera/decisions.yaml | resonera | planera, realisera, inspektera, profilera, optimera, orkestrera | ## Decision N · date, **Question/Context/Alternatives/Choice/Reasoning/Confidence/Feeds into** |
147
147
  | PLAN.md | .agentera/plan.yaml | planera | realisera, inspektera, orkestrera | <!-- Level/Created/Status -->, ## Tasks with ### Task N, **Status/Depends on/Acceptance** |
148
- | PROGRESS.md | .agentera/progress.yaml | realisera | planera, inspektera, dokumentera, visionera, orkestrera | ## Cycle N · date, **Phase/What/Commit/Inspiration/Discovered/Next/Context** |
148
+ | PROGRESS.md | .agentera/progress.yaml | realisera | planera, inspektera, dokumentera, visionera, orkestrera | ## Cycle N · date, **Phase/What/Inspiration/Discovered/Next/Context** |
149
149
  | HEALTH.md | .agentera/health.yaml | inspektera | realisera, planera, orkestrera | ## Audit N · date, **Dimensions/Findings/Overall/Grades**, per-dimension sections |
150
150
  | OBJECTIVE.md | .agentera/optimera/<name>/objective.yaml | optimera | optimera | ## Metric, ## Target, ## Baseline, ## Constraints, **Status** |
151
151
  | EXPERIMENTS.md | .agentera/optimera/<name>/experiments.yaml | optimera | optimera | ## Experiment N · date, **Hypothesis/Method/Result/Conclusion**; ## Closure · date, **Final value/Target/Reason** |
@@ -669,7 +669,7 @@ This gate is orthogonal to Section 19 Staleness Detection. Section 19 asks: did
669
669
 
670
670
  ### Evidence format
671
671
 
672
- Every cycle entry in PROGRESS.md carries a `verified` field alongside phase, what, commit, inspiration, discovered, next, and context fields. The field is mandatory: no cycle is considered closed without it. The field accepts exactly one of three shapes:
672
+ Every cycle entry in PROGRESS.md carries a `verified` field alongside phase, what, inspiration, discovered, next, and context fields. The field is mandatory: no cycle is considered closed without it. The field accepts exactly one of three shapes:
673
673
 
674
674
  | Shape | Content |
675
675
  |-------|---------|
@@ -55,7 +55,7 @@ BUDGET:
55
55
  1:
56
56
  id: DB1
57
57
  scope: per_decision_entry
58
- max_words: 200
58
+ max_words: 1000
59
59
  description: >-
60
60
  Maximum words per decision entry. Budgets are guidelines, not hard
61
61
  blockers.
@@ -1,7 +1,7 @@
1
1
  # Progress Artifact Schema
2
2
  #
3
3
  # Cycle-by-cycle operational log for realisera. Each entry records what happened
4
- # in one development cycle: phase, work done, commit, discoveries, verification,
4
+ # in one development cycle: phase, work done, discoveries, verification,
5
5
  # next steps, and context envelope.
6
6
  #
7
7
  # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
@@ -16,12 +16,11 @@
16
16
  # (type-prefix from heading) CYCLE.type PR3
17
17
  # **Phase**: <phase> CYCLE.phase PR4
18
18
  # **What**: <text> CYCLE.what PR5
19
- # **Commit**: <hash/N/A> CYCLE.commit PR6
20
- # **Inspiration**: <text> CYCLE.inspiration PR7
21
- # **Discovered**: <text> CYCLE.discovered PR8
22
- # **Verified**: <text> CYCLE.verified PR9
23
- # **Next**: <text> CYCLE.next PR10
24
- # **Context**: <text> CYCLE.context PR11
19
+ # **Inspiration**: <text> CYCLE.inspiration PR6
20
+ # **Discovered**: <text> CYCLE.discovered PR7
21
+ # **Verified**: <text> CYCLE.verified PR8
22
+ # **Next**: <text> CYCLE.next PR9
23
+ # **Context**: <text> CYCLE.context PR10
25
24
  # (intent from Context) CONTEXT.intent PT1
26
25
  # (constraints from Context) CONTEXT.constraints PT2
27
26
  # (unknowns from Context) CONTEXT.unknowns PT3
@@ -172,57 +171,38 @@ CYCLE:
172
171
  - "Non-empty string"
173
172
  6:
174
173
  id: PR6
175
- field: commit
176
- type: string
177
- required: true
178
- description: >-
179
- Git commit that contains the product change for this cycle—not the commit
180
- that last edited progress metadata. Use `pending` until that hash is known;
181
- then the product commit hash, optionally with subject (e.g.
182
- `abc1234 Speed up pytest suite`). Use `N/A: …` when no product commit was
183
- made.
184
- validation:
185
- - "Non-empty string"
186
- - "Use `pending` until the product-change commit hash is known; do not amend solely to backfill this field"
187
- - >-
188
- Hashes that do not resolve as commit objects in the local clone (another
189
- machine's copy, shallow CI checkout, or not yet fetched) are intentionally
190
- not flagged by progress validation or `agentera check backfill`; reconcile
191
- with a full clone or forward-fill once the product commit exists locally
192
- 7:
193
- id: PR7
194
174
  field: inspiration
195
175
  type: string
196
176
  required: false
197
177
  description: >-
198
178
  What prompted this cycle. References to active plan tasks,
199
179
  decisions, or conventions that drove the work.
200
- 8:
201
- id: PR8
180
+ 7:
181
+ id: PR7
202
182
  field: discovered
203
183
  type: string
204
184
  required: false
205
185
  description: >-
206
186
  Unexpected findings during the cycle. Things learned that were
207
187
  not known before starting.
208
- 9:
209
- id: PR9
188
+ 8:
189
+ id: PR8
210
190
  field: verified
211
191
  type: string
212
192
  required: false
213
193
  description: >-
214
194
  Evidence that the work was verified. Test commands run, validation
215
195
  passed, manual checks performed.
216
- 10:
217
- id: PR10
196
+ 9:
197
+ id: PR9
218
198
  field: next
219
199
  type: string
220
200
  required: false
221
201
  description: >-
222
202
  What should happen next. Guidance for subsequent cycles.
223
203
  Explicit about scope boundaries to prevent scope creep.
224
- 11:
225
- id: PR11
204
+ 10:
205
+ id: PR10
226
206
  field: context
227
207
  type: map
228
208
  required: true
@@ -293,14 +273,13 @@ VALIDATION:
293
273
  severity: error
294
274
  description: >-
295
275
  Each full-detail cycle entry must have: number, timestamp, type,
296
- phase, what, commit, and context (with intent).
276
+ phase, what, and context (with intent).
297
277
  checks:
298
278
  - "number is present and is a positive integer"
299
279
  - "timestamp is present and matches YYYY-MM-DD HH:MM"
300
280
  - "type is present and is a valid commit prefix"
301
281
  - "phase is present and is a valid phase name"
302
282
  - "what is present and non-empty"
303
- - "commit is present"
304
283
  - "context is present with intent sub-field"
305
284
  3:
306
285
  id: PV3
@@ -108,3 +108,17 @@ CONVENTION:
108
108
  Resolved items should wrap the original task text in Markdown
109
109
  strikethrough (~~text~~) before the resolution summary, keeping
110
110
  the original intent readable while visually marking it closed.
111
+ 6:
112
+ id: TC6
113
+ field: severity_band_policy
114
+ level: required
115
+ description: >-
116
+ Severity band policy: Critical (⇶) is enforced by the validator
117
+ (level: required) and must contain at least one `- [type]` item;
118
+ Degraded (⇉), Normal (→), and Annoying (⇢) are advisory and may
119
+ be header-only (no list entries, no Placeholder sentinel). The
120
+ asymmetry reflects the fact that Critical is the only band whose
121
+ absence is user-visible routing damage; the other three bands
122
+ may be honestly empty. This rule lives in
123
+ packages/cli/src/hooks/validateArtifact.ts `validateMdItems` as
124
+ the single executable source of truth.
@@ -0,0 +1,101 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { pyJsonIndent } from "../../core/pyjson.js";
5
+ import { defaultOutputPath, } from "./core.js";
6
+ import { buildCorpus } from "./corpus.js";
7
+ import { resolveCopilotStorePath, resolveCursorChatsPath, resolveCursorProjectsPath, resolveOpencodeDbPath, } from "./cursorSessions.js";
8
+ export function parseExtractArgs(argv, env = process.env, platform = process.platform) {
9
+ const home = os.homedir();
10
+ const args = {
11
+ output: defaultOutputPath(env, platform),
12
+ projectRoot: [],
13
+ codexSessionsDir: path.join(home, ".codex", "sessions"),
14
+ claudeProjectsDir: path.join(home, ".claude", "projects"),
15
+ opencodeConversationsDir: null,
16
+ copilotConversationsDir: null,
17
+ cursorProjectsDir: null,
18
+ cursorChatsDir: null,
19
+ noCodex: false,
20
+ noClaude: false,
21
+ noOpencode: false,
22
+ noCopilot: false,
23
+ noCursor: false,
24
+ };
25
+ for (let i = 0; i < argv.length; i++) {
26
+ const a = argv[i];
27
+ const val = (name) => {
28
+ if (a === name)
29
+ return argv[++i] ?? null;
30
+ if (a.startsWith(name + "="))
31
+ return a.slice(name.length + 1);
32
+ return null;
33
+ };
34
+ let v;
35
+ if ((v = val("--output")) !== null)
36
+ args.output = v;
37
+ else if ((v = val("--project-root")) !== null)
38
+ args.projectRoot.push(v);
39
+ else if ((v = val("--codex-sessions-dir")) !== null)
40
+ args.codexSessionsDir = v;
41
+ else if ((v = val("--claude-projects-dir")) !== null)
42
+ args.claudeProjectsDir = v;
43
+ else if ((v = val("--opencode-conversations-dir")) !== null)
44
+ args.opencodeConversationsDir = v;
45
+ else if ((v = val("--copilot-conversations-dir")) !== null)
46
+ args.copilotConversationsDir = v;
47
+ else if ((v = val("--cursor-projects-dir")) !== null)
48
+ args.cursorProjectsDir = v;
49
+ else if ((v = val("--cursor-chats-dir")) !== null)
50
+ args.cursorChatsDir = v;
51
+ else if (a === "--no-codex")
52
+ args.noCodex = true;
53
+ else if (a === "--no-claude")
54
+ args.noClaude = true;
55
+ else if (a === "--no-opencode")
56
+ args.noOpencode = true;
57
+ else if (a === "--no-copilot")
58
+ args.noCopilot = true;
59
+ else if (a === "--no-cursor")
60
+ args.noCursor = true;
61
+ else
62
+ throw new Error(`extract-corpus: unrecognized argument: ${a}`);
63
+ }
64
+ return args;
65
+ }
66
+ /** Engine entry point mirroring scripts/extract_corpus.py main(). */
67
+ export function extractCorpusMain(argv, io = {}) {
68
+ const out = io.out ?? ((t) => process.stdout.write(t + "\n"));
69
+ const err = io.err ?? ((t) => process.stderr.write(t + "\n"));
70
+ const env = io.env ?? process.env;
71
+ const platform = io.platform ?? process.platform;
72
+ const cwd = io.cwd ?? process.cwd();
73
+ let args;
74
+ try {
75
+ args = parseExtractArgs(argv, env, platform);
76
+ }
77
+ catch (exc) {
78
+ err(exc.message);
79
+ return 2;
80
+ }
81
+ const projectRoots = args.projectRoot.length > 0 ? args.projectRoot : [cwd];
82
+ const skipCursor = args.noCursor;
83
+ const corpus = buildCorpus({
84
+ projectRoots,
85
+ codexSessionsDir: args.noCodex ? null : args.codexSessionsDir,
86
+ claudeProjectsDir: args.noClaude ? null : args.claudeProjectsDir,
87
+ opencodeConversationsDir: args.noOpencode ? null : args.opencodeConversationsDir || resolveOpencodeDbPath(env),
88
+ copilotConversationsDir: args.noCopilot ? null : args.copilotConversationsDir || resolveCopilotStorePath(env),
89
+ cursorProjectsDir: skipCursor ? null : args.cursorProjectsDir || resolveCursorProjectsPath(env),
90
+ cursorChatsDir: skipCursor ? null : args.cursorChatsDir || resolveCursorChatsPath(env),
91
+ });
92
+ fs.mkdirSync(path.dirname(args.output), { recursive: true });
93
+ fs.writeFileSync(args.output, pyJsonIndent(corpus) + "\n", "utf-8");
94
+ const total = corpus.metadata.total_records;
95
+ const familyBits = Object.entries(corpus.metadata.families)
96
+ .map(([name, summary]) => `${name}=${summary.count}`)
97
+ .join(", ");
98
+ out(`wrote corpus: ${args.output} (${total} records; ${familyBits})`);
99
+ return 0;
100
+ }
101
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/cli.ts"],"names":[],"mappings":"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"}