agentera 3.0.0-dev.3 → 3.0.0-dev.31

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 (766) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +96 -6
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1144 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +136 -0
  8. package/bundle/UPGRADE.md +201 -0
  9. package/bundle/extract-corpus-parity.json +21 -0
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-manifest-interface-model.yaml +42 -252
  12. package/bundle/references/adapters/package-registry.yaml +20 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +36 -37
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +97 -0
  18. package/bundle/references/analysis/benchmark.md +10 -6
  19. package/bundle/references/analysis/evidence-tier-authority.yaml +516 -0
  20. package/bundle/references/analysis/startup-measurement-contract.yaml +37 -26
  21. package/bundle/references/analysis/verification-policy.yaml +142 -0
  22. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +9 -8
  23. package/bundle/references/artifacts/state-storage-authority.yaml +2167 -0
  24. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  25. package/bundle/references/cli/agent-ready-state-contract.yaml +64 -81
  26. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  27. package/bundle/references/cli/audience-namespace-cli-migration.yaml +58 -29
  28. package/bundle/references/cli/bundle-skill-vocabulary.yaml +12 -49
  29. package/bundle/references/cli/capability-instruction-contract.yaml +96 -58
  30. package/bundle/references/cli/capability-instruction-structure.md +144 -0
  31. package/bundle/references/cli/capability-tool-classification.yaml +14 -14
  32. package/bundle/references/cli/coexistence-probe.yaml +13 -0
  33. package/bundle/references/cli/hybrid-route-contract.yaml +416 -0
  34. package/bundle/references/cli/parity-expected-actual-template.md +30 -0
  35. package/bundle/references/cli/prime-consumer-compatibility.yaml +651 -0
  36. package/bundle/references/cli/routing-execution-vocabulary.yaml +16 -38
  37. package/bundle/references/cli/routing-model.md +139 -0
  38. package/bundle/references/cli/single-name-protocol.yaml +42 -0
  39. package/bundle/references/cli/trigger-schema-enrichment.md +140 -0
  40. package/bundle/references/cli/update-channels.yaml +45 -7
  41. package/bundle/references/cli/upgrade-repair-wording.md +25 -0
  42. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +97 -0
  43. package/bundle/references/cli/vocabulary-index.yaml +23 -18
  44. package/bundle/references/cli/vocabulary.md +346 -331
  45. package/bundle/references/meta/documentation-inventory.md +10 -3
  46. package/bundle/registry.json +14 -14
  47. package/bundle/skills/agentera/SKILL.md +182 -407
  48. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  49. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  50. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  51. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +20 -19
  52. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +85 -0
  53. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +3 -3
  54. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  55. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/validation.yaml +16 -16
  56. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  57. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  58. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  59. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  60. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +49 -0
  61. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  62. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  63. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/validation.yaml +9 -8
  64. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  65. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  66. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  67. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +17 -17
  68. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  69. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  70. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  71. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  72. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  73. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  74. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  75. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +63 -0
  76. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  77. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +89 -0
  79. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/artifacts.yaml +4 -4
  80. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +3 -3
  81. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  82. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +85 -0
  83. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  84. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  85. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  86. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +72 -0
  87. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  88. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  89. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  90. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  91. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  92. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  93. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  94. package/bundle/skills/agentera/protocol.yaml +31 -31
  95. package/bundle/skills/agentera/references/contract.md +387 -329
  96. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  97. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  98. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  99. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  100. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  101. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  102. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  103. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  104. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +327 -15
  105. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +51 -53
  106. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +257 -28
  107. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  108. package/dist/analytics/extractCorpus/cli.js +191 -0
  109. package/dist/analytics/extractCorpus/cli.js.map +1 -0
  110. package/dist/analytics/extractCorpus/copilotSessions.js +276 -0
  111. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -0
  112. package/dist/analytics/extractCorpus/core.js +393 -0
  113. package/dist/analytics/extractCorpus/core.js.map +1 -0
  114. package/dist/analytics/extractCorpus/corpus.js +168 -0
  115. package/dist/analytics/extractCorpus/corpus.js.map +1 -0
  116. package/dist/analytics/extractCorpus/coverageAudit.js +261 -0
  117. package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -0
  118. package/dist/analytics/extractCorpus/cursorSessions.js +426 -0
  119. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -0
  120. package/dist/analytics/extractCorpus/evidenceTiers.js +561 -0
  121. package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -0
  122. package/dist/analytics/extractCorpus/extractCorpusParity.js +106 -0
  123. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -0
  124. package/dist/analytics/extractCorpus/filesystemSources.js +119 -0
  125. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -0
  126. package/dist/analytics/extractCorpus/index.js +15 -0
  127. package/dist/analytics/extractCorpus/index.js.map +1 -0
  128. package/dist/analytics/extractCorpus/jsonlSessions.js +205 -0
  129. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -0
  130. package/dist/analytics/extractCorpus/sqliteCaps.js +44 -0
  131. package/dist/analytics/extractCorpus/sqliteCaps.js.map +1 -0
  132. package/dist/analytics/extractCorpus/sqliteSessions.js +368 -0
  133. package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -0
  134. package/dist/analytics/extractCorpus/tierReader.js +109 -0
  135. package/dist/analytics/extractCorpus/tierReader.js.map +1 -0
  136. package/dist/analytics/extractCorpus.js +2 -1790
  137. package/dist/analytics/extractCorpus.js.map +1 -1
  138. package/dist/analytics/profileSignals.js +212 -0
  139. package/dist/analytics/profileSignals.js.map +1 -0
  140. package/dist/analytics/usageStats.js +191 -41
  141. package/dist/analytics/usageStats.js.map +1 -1
  142. package/dist/bin/agentera.js +3 -1
  143. package/dist/bin/agentera.js.map +1 -1
  144. package/dist/capabilities/audit/instructions.js +16 -0
  145. package/dist/capabilities/audit/instructions.js.map +1 -0
  146. package/dist/capabilities/build/instructions.js +18 -0
  147. package/dist/capabilities/build/instructions.js.map +1 -0
  148. package/dist/capabilities/design/instructions.js +5 -0
  149. package/dist/capabilities/design/instructions.js.map +1 -0
  150. package/dist/capabilities/discuss/instructions.js +16 -0
  151. package/dist/capabilities/discuss/instructions.js.map +1 -0
  152. package/dist/capabilities/document/instructions.js +12 -0
  153. package/dist/capabilities/document/instructions.js.map +1 -0
  154. package/dist/capabilities/index.js +39 -0
  155. package/dist/capabilities/index.js.map +1 -0
  156. package/dist/capabilities/optimize/instructions.js +14 -0
  157. package/dist/capabilities/optimize/instructions.js.map +1 -0
  158. package/dist/capabilities/orchestrate/instructions.js +41 -0
  159. package/dist/capabilities/orchestrate/instructions.js.map +1 -0
  160. package/dist/capabilities/plan/instructions.js +15 -0
  161. package/dist/capabilities/plan/instructions.js.map +1 -0
  162. package/dist/capabilities/profile/instructions.js +5 -0
  163. package/dist/capabilities/profile/instructions.js.map +1 -0
  164. package/dist/capabilities/research/instructions.js +6 -0
  165. package/dist/capabilities/research/instructions.js.map +1 -0
  166. package/dist/capabilities/status/instructions.js +5 -0
  167. package/dist/capabilities/status/instructions.js.map +1 -0
  168. package/dist/capabilities/status/startupInstructions.js +39 -0
  169. package/dist/capabilities/status/startupInstructions.js.map +1 -0
  170. package/dist/capabilities/vision/instructions.js +5 -0
  171. package/dist/capabilities/vision/instructions.js.map +1 -0
  172. package/dist/cli/appContext.js +30 -23
  173. package/dist/cli/appContext.js.map +1 -1
  174. package/dist/cli/argvalidate.js.map +1 -1
  175. package/dist/cli/capabilityContext/benchmark.js +564 -0
  176. package/dist/cli/capabilityContext/benchmark.js.map +1 -0
  177. package/dist/cli/capabilityContext/bespoke.js +44 -0
  178. package/dist/cli/capabilityContext/bespoke.js.map +1 -0
  179. package/dist/cli/capabilityContext/build.js +191 -0
  180. package/dist/cli/capabilityContext/build.js.map +1 -0
  181. package/dist/cli/capabilityContext/closeout.js +231 -0
  182. package/dist/cli/capabilityContext/closeout.js.map +1 -0
  183. package/dist/cli/capabilityContext/contract.js +214 -0
  184. package/dist/cli/capabilityContext/contract.js.map +1 -0
  185. package/dist/cli/capabilityContext/evidence.js +469 -0
  186. package/dist/cli/capabilityContext/evidence.js.map +1 -0
  187. package/dist/cli/capabilityContext/index.js +4 -0
  188. package/dist/cli/capabilityContext/index.js.map +1 -0
  189. package/dist/cli/capabilityContext/orchestration.js +128 -0
  190. package/dist/cli/capabilityContext/orchestration.js.map +1 -0
  191. package/dist/cli/capabilityContext/planState.js +280 -0
  192. package/dist/cli/capabilityContext/planState.js.map +1 -0
  193. package/dist/cli/capabilityContext/progress.js +143 -0
  194. package/dist/cli/capabilityContext/progress.js.map +1 -0
  195. package/dist/cli/capabilityContext/shared.js +100 -0
  196. package/dist/cli/capabilityContext/shared.js.map +1 -0
  197. package/dist/cli/capabilityContext/slim.js +153 -0
  198. package/dist/cli/capabilityContext/slim.js.map +1 -0
  199. package/dist/cli/capabilityContext/startup.js +257 -0
  200. package/dist/cli/capabilityContext/startup.js.map +1 -0
  201. package/dist/cli/capabilityContext/types.js +51 -0
  202. package/dist/cli/capabilityContext/types.js.map +1 -0
  203. package/dist/cli/capabilityContext.js +1 -2420
  204. package/dist/cli/capabilityContext.js.map +1 -1
  205. package/dist/cli/commands/appHome.js +23 -0
  206. package/dist/cli/commands/appHome.js.map +1 -0
  207. package/dist/cli/commands/capability.js +3 -10
  208. package/dist/cli/commands/capability.js.map +1 -1
  209. package/dist/cli/commands/compact.js +41 -12
  210. package/dist/cli/commands/compact.js.map +1 -1
  211. package/dist/cli/commands/doctor.js +59 -97
  212. package/dist/cli/commands/doctor.js.map +1 -1
  213. package/dist/cli/commands/durability.js +82 -0
  214. package/dist/cli/commands/durability.js.map +1 -0
  215. package/dist/cli/commands/entityMigrate.js +132 -0
  216. package/dist/cli/commands/entityMigrate.js.map +1 -0
  217. package/dist/cli/commands/lint.js +26 -43
  218. package/dist/cli/commands/lint.js.map +1 -1
  219. package/dist/cli/commands/prime/briefOrientation.js +592 -0
  220. package/dist/cli/commands/prime/briefOrientation.js.map +1 -0
  221. package/dist/cli/commands/prime/bundleStatus.js +191 -0
  222. package/dist/cli/commands/prime/bundleStatus.js.map +1 -0
  223. package/dist/cli/commands/prime/collectEntityOrientation.js +266 -0
  224. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -0
  225. package/dist/cli/commands/prime/collectOrientationState.js +180 -0
  226. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -0
  227. package/dist/cli/commands/prime/orientationOutput.js +360 -0
  228. package/dist/cli/commands/prime/orientationOutput.js.map +1 -0
  229. package/dist/cli/commands/prime/types.js +2 -0
  230. package/dist/cli/commands/prime/types.js.map +1 -0
  231. package/dist/cli/commands/prime/v1Migration.js +39 -0
  232. package/dist/cli/commands/prime/v1Migration.js.map +1 -0
  233. package/dist/cli/commands/prime.js +61 -556
  234. package/dist/cli/commands/prime.js.map +1 -1
  235. package/dist/cli/commands/query.js +66 -51
  236. package/dist/cli/commands/query.js.map +1 -1
  237. package/dist/cli/commands/report.js +100 -24
  238. package/dist/cli/commands/report.js.map +1 -1
  239. package/dist/cli/commands/route.js +142 -0
  240. package/dist/cli/commands/route.js.map +1 -0
  241. package/dist/cli/commands/schema.js +260 -78
  242. package/dist/cli/commands/schema.js.map +1 -1
  243. package/dist/cli/commands/state/decisions.js +388 -0
  244. package/dist/cli/commands/state/decisions.js.map +1 -0
  245. package/dist/cli/commands/state/docs.js +71 -0
  246. package/dist/cli/commands/state/docs.js.map +1 -0
  247. package/dist/cli/commands/state/experimentRecords.js +139 -0
  248. package/dist/cli/commands/state/experimentRecords.js.map +1 -0
  249. package/dist/cli/commands/state/experiments.js +15 -0
  250. package/dist/cli/commands/state/experiments.js.map +1 -0
  251. package/dist/cli/commands/state/get.js +127 -0
  252. package/dist/cli/commands/state/get.js.map +1 -0
  253. package/dist/cli/commands/state/health.js +15 -0
  254. package/dist/cli/commands/state/health.js.map +1 -0
  255. package/dist/cli/commands/state/index.js +60 -0
  256. package/dist/cli/commands/state/index.js.map +1 -0
  257. package/dist/cli/commands/state/list.js +176 -0
  258. package/dist/cli/commands/state/list.js.map +1 -0
  259. package/dist/cli/commands/state/objective.js +26 -0
  260. package/dist/cli/commands/state/objective.js.map +1 -0
  261. package/dist/cli/commands/state/plan.js +15 -0
  262. package/dist/cli/commands/state/plan.js.map +1 -0
  263. package/dist/cli/commands/state/planTasks.js +142 -0
  264. package/dist/cli/commands/state/planTasks.js.map +1 -0
  265. package/dist/cli/commands/state/plans.js +143 -0
  266. package/dist/cli/commands/state/plans.js.map +1 -0
  267. package/dist/cli/commands/state/progress.js +14 -0
  268. package/dist/cli/commands/state/progress.js.map +1 -0
  269. package/dist/cli/commands/state/shared.js +15 -0
  270. package/dist/cli/commands/state/shared.js.map +1 -0
  271. package/dist/cli/commands/state/todo.js +42 -0
  272. package/dist/cli/commands/state/todo.js.map +1 -0
  273. package/dist/cli/commands/state/write.js +418 -0
  274. package/dist/cli/commands/state/write.js.map +1 -0
  275. package/dist/cli/commands/upgrade.js +146 -4
  276. package/dist/cli/commands/upgrade.js.map +1 -1
  277. package/dist/cli/commands/upgradeVerify.js +119 -0
  278. package/dist/cli/commands/upgradeVerify.js.map +1 -0
  279. package/dist/cli/commands/validate.js +133 -210
  280. package/dist/cli/commands/validate.js.map +1 -1
  281. package/dist/cli/commands/verify.js +30 -8
  282. package/dist/cli/commands/verify.js.map +1 -1
  283. package/dist/cli/contracts/bundleStatus.js +2 -0
  284. package/dist/cli/contracts/bundleStatus.js.map +1 -0
  285. package/dist/cli/contracts/orientationState.js +2 -0
  286. package/dist/cli/contracts/orientationState.js.map +1 -0
  287. package/dist/cli/dispatch/argvParser.js +33 -0
  288. package/dist/cli/dispatch/argvParser.js.map +1 -0
  289. package/dist/cli/dispatch/check.js +390 -0
  290. package/dist/cli/dispatch/check.js.map +1 -0
  291. package/dist/cli/dispatch/commands.js +27 -0
  292. package/dist/cli/dispatch/commands.js.map +1 -0
  293. package/dist/cli/dispatch/index.js +226 -0
  294. package/dist/cli/dispatch/index.js.map +1 -0
  295. package/dist/cli/dispatch/lifecycle.js +653 -0
  296. package/dist/cli/dispatch/lifecycle.js.map +1 -0
  297. package/dist/cli/dispatch/prime.js +119 -0
  298. package/dist/cli/dispatch/prime.js.map +1 -0
  299. package/dist/cli/dispatch/shared.js +64 -0
  300. package/dist/cli/dispatch/shared.js.map +1 -0
  301. package/dist/cli/dispatch/state.js +174 -0
  302. package/dist/cli/dispatch/state.js.map +1 -0
  303. package/dist/cli/dispatch.js +1 -957
  304. package/dist/cli/dispatch.js.map +1 -1
  305. package/dist/cli/errors.js +53 -0
  306. package/dist/cli/errors.js.map +1 -0
  307. package/dist/cli/help.js +419 -0
  308. package/dist/cli/help.js.map +1 -0
  309. package/dist/cli/migrationRequired.js +87 -0
  310. package/dist/cli/migrationRequired.js.map +1 -0
  311. package/dist/cli/orientation/attention.js +67 -0
  312. package/dist/cli/orientation/attention.js.map +1 -0
  313. package/dist/cli/orientation/corpusCoverage.js +103 -0
  314. package/dist/cli/orientation/corpusCoverage.js.map +1 -0
  315. package/dist/cli/orientation.js +407 -159
  316. package/dist/cli/orientation.js.map +1 -1
  317. package/dist/cli/planArtifacts.js +351 -0
  318. package/dist/cli/planArtifacts.js.map +1 -0
  319. package/dist/cli/planEvidence.js +158 -0
  320. package/dist/cli/planEvidence.js.map +1 -0
  321. package/dist/cli/planLifecycleState.js +34 -0
  322. package/dist/cli/planLifecycleState.js.map +1 -0
  323. package/dist/cli/planTaskIndex.js +12 -0
  324. package/dist/cli/planTaskIndex.js.map +1 -0
  325. package/dist/cli/prime-blob.js +69 -2
  326. package/dist/cli/prime-blob.js.map +1 -1
  327. package/dist/cli/startupCompletenessContract.js +57 -0
  328. package/dist/cli/startupCompletenessContract.js.map +1 -0
  329. package/dist/cli/stateQuery.js +63 -10
  330. package/dist/cli/stateQuery.js.map +1 -1
  331. package/dist/cli/structured.js.map +1 -1
  332. package/dist/cli/todoMarkdown.js +33 -0
  333. package/dist/cli/todoMarkdown.js.map +1 -0
  334. package/dist/cli/todoReadinessSelection.js +157 -0
  335. package/dist/cli/todoReadinessSelection.js.map +1 -0
  336. package/dist/cli/todoSeverity.js +19 -0
  337. package/dist/cli/todoSeverity.js.map +1 -0
  338. package/dist/core/atomicWriter.js +21 -0
  339. package/dist/core/atomicWriter.js.map +1 -0
  340. package/dist/core/difflib.js.map +1 -1
  341. package/dist/core/envPaths.js +21 -0
  342. package/dist/core/envPaths.js.map +1 -0
  343. package/dist/core/jsonValue.js +6 -0
  344. package/dist/core/jsonValue.js.map +1 -0
  345. package/dist/core/paths.js.map +1 -1
  346. package/dist/core/pyjson.js +67 -2
  347. package/dist/core/pyjson.js.map +1 -1
  348. package/dist/core/skillIdentity.js +24 -0
  349. package/dist/core/skillIdentity.js.map +1 -0
  350. package/dist/core/sourceRoot.js.map +1 -1
  351. package/dist/core/text.js +11 -0
  352. package/dist/core/text.js.map +1 -0
  353. package/dist/core/toml.js.map +1 -1
  354. package/dist/core/yaml.js +8 -0
  355. package/dist/core/yaml.js.map +1 -1
  356. package/dist/eval/evalSkills.js +30 -25
  357. package/dist/eval/evalSkills.js.map +1 -1
  358. package/dist/eval/hybridRouteEvaluation.js +156 -0
  359. package/dist/eval/hybridRouteEvaluation.js.map +1 -0
  360. package/dist/eval/semanticEval.js +43 -19
  361. package/dist/eval/semanticEval.js.map +1 -1
  362. package/dist/eval/semanticFixtures.js +16 -4
  363. package/dist/eval/semanticFixtures.js.map +1 -1
  364. package/dist/hooks/common.js +10 -27
  365. package/dist/hooks/common.js.map +1 -1
  366. package/dist/hooks/compaction/apply.js +447 -0
  367. package/dist/hooks/compaction/apply.js.map +1 -0
  368. package/dist/hooks/compaction/dryRun.js +185 -0
  369. package/dist/hooks/compaction/dryRun.js.map +1 -0
  370. package/dist/hooks/compaction/index.js +23 -0
  371. package/dist/hooks/compaction/index.js.map +1 -0
  372. package/dist/hooks/compaction/parse.js +326 -0
  373. package/dist/hooks/compaction/parse.js.map +1 -0
  374. package/dist/hooks/compaction/retention.js +203 -0
  375. package/dist/hooks/compaction/retention.js.map +1 -0
  376. package/dist/hooks/compaction/status.js +361 -0
  377. package/dist/hooks/compaction/status.js.map +1 -0
  378. package/dist/hooks/compaction/types.js +6 -0
  379. package/dist/hooks/compaction/types.js.map +1 -0
  380. package/dist/hooks/cursorPreToolUse.js +1 -1
  381. package/dist/hooks/cursorPreToolUse.js.map +1 -1
  382. package/dist/hooks/cursorSessionStart.js +14 -21
  383. package/dist/hooks/cursorSessionStart.js.map +1 -1
  384. package/dist/hooks/projectHookInput.js +26 -0
  385. package/dist/hooks/projectHookInput.js.map +1 -0
  386. package/dist/hooks/sessionStart.js +55 -170
  387. package/dist/hooks/sessionStart.js.map +1 -1
  388. package/dist/hooks/sessionStop.js +12 -26
  389. package/dist/hooks/sessionStop.js.map +1 -1
  390. package/dist/hooks/validateArtifact/agentFacing.js +10 -0
  391. package/dist/hooks/validateArtifact/agentFacing.js.map +1 -0
  392. package/dist/hooks/validateArtifact/index.js +151 -0
  393. package/dist/hooks/validateArtifact/index.js.map +1 -0
  394. package/dist/hooks/validateArtifact/markdown.js +146 -0
  395. package/dist/hooks/validateArtifact/markdown.js.map +1 -0
  396. package/dist/hooks/validateArtifact/runtime.js +86 -0
  397. package/dist/hooks/validateArtifact/runtime.js.map +1 -0
  398. package/dist/hooks/validateArtifact/schema.js +541 -0
  399. package/dist/hooks/validateArtifact/schema.js.map +1 -0
  400. package/dist/hooks/validateArtifact/traversal.js +108 -0
  401. package/dist/hooks/validateArtifact/traversal.js.map +1 -0
  402. package/dist/hooks/validateArtifact/violations.js +108 -0
  403. package/dist/hooks/validateArtifact/violations.js.map +1 -0
  404. package/dist/migrate/v2HandoffManifest.js +455 -0
  405. package/dist/migrate/v2HandoffManifest.js.map +1 -0
  406. package/dist/registries/artifactProtocolIds.js +77 -0
  407. package/dist/registries/artifactProtocolIds.js.map +1 -0
  408. package/dist/registries/artifactRegistry.js +222 -62
  409. package/dist/registries/artifactRegistry.js.map +1 -1
  410. package/dist/registries/capabilityContract.js +141 -12
  411. package/dist/registries/capabilityContract.js.map +1 -1
  412. package/dist/registries/evaluatorHandoffContract.js +171 -0
  413. package/dist/registries/evaluatorHandoffContract.js.map +1 -0
  414. package/dist/registries/evidenceTierContract.js +362 -0
  415. package/dist/registries/evidenceTierContract.js.map +1 -0
  416. package/dist/registries/hybridRoute.js +203 -0
  417. package/dist/registries/hybridRoute.js.map +1 -0
  418. package/dist/registries/hybridRouteReceipt.js +221 -0
  419. package/dist/registries/hybridRouteReceipt.js.map +1 -0
  420. package/dist/registries/packageRegistry.js +90 -230
  421. package/dist/registries/packageRegistry.js.map +1 -1
  422. package/dist/registries/todoReadinessContract.js +406 -0
  423. package/dist/registries/todoReadinessContract.js.map +1 -0
  424. package/dist/registries/triggerLoader.js +175 -0
  425. package/dist/registries/triggerLoader.js.map +1 -0
  426. package/dist/registries/verbosityBudgetContract.js +206 -0
  427. package/dist/registries/verbosityBudgetContract.js.map +1 -0
  428. package/dist/release/releaseMetadata.js +319 -0
  429. package/dist/release/releaseMetadata.js.map +1 -0
  430. package/dist/runtime/lifecycleAdapterContract.js +458 -0
  431. package/dist/runtime/lifecycleAdapterContract.js.map +1 -0
  432. package/dist/runtime/lifecycleAdapters.js +778 -0
  433. package/dist/runtime/lifecycleAdapters.js.map +1 -0
  434. package/dist/runtime/lifecycleAuthority.js +454 -0
  435. package/dist/runtime/lifecycleAuthority.js.map +1 -0
  436. package/dist/runtime/lifecycleOperationContract.js +114 -0
  437. package/dist/runtime/lifecycleOperationContract.js.map +1 -0
  438. package/dist/runtime/lifecycleOperations.js +635 -0
  439. package/dist/runtime/lifecycleOperations.js.map +1 -0
  440. package/dist/runtime/lifecycleOwnershipJournal.js +623 -0
  441. package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -0
  442. package/dist/runtime/lifecyclePublication.js +416 -0
  443. package/dist/runtime/lifecyclePublication.js.map +1 -0
  444. package/dist/runtime/lifecycleSnapshot.js +439 -0
  445. package/dist/runtime/lifecycleSnapshot.js.map +1 -0
  446. package/dist/runtime/nativeResourceCleanup.js +317 -0
  447. package/dist/runtime/nativeResourceCleanup.js.map +1 -0
  448. package/dist/setup/codex/cli.js +130 -0
  449. package/dist/setup/codex/cli.js.map +1 -0
  450. package/dist/setup/codex/configToml.js +558 -0
  451. package/dist/setup/codex/configToml.js.map +1 -0
  452. package/dist/setup/codex/constants.js +14 -0
  453. package/dist/setup/codex/constants.js.map +1 -0
  454. package/dist/setup/codex/installRoot.js +64 -0
  455. package/dist/setup/codex/installRoot.js.map +1 -0
  456. package/dist/setup/codex/state.js +252 -0
  457. package/dist/setup/codex/state.js.map +1 -0
  458. package/dist/setup/codex.js +9 -1055
  459. package/dist/setup/codex.js.map +1 -1
  460. package/dist/setup/opencode.js +21 -0
  461. package/dist/setup/opencode.js.map +1 -0
  462. package/dist/setup/opencodeConstants.js +2 -0
  463. package/dist/setup/opencodeConstants.js.map +1 -0
  464. package/dist/setup/sharedSkill.js +46 -0
  465. package/dist/setup/sharedSkill.js.map +1 -0
  466. package/dist/setup/smokeChecks.js +82 -0
  467. package/dist/setup/smokeChecks.js.map +1 -0
  468. package/dist/state/archiveDiscovery.js +578 -0
  469. package/dist/state/archiveDiscovery.js.map +1 -0
  470. package/dist/state/archivePublication.js +226 -0
  471. package/dist/state/archivePublication.js.map +1 -0
  472. package/dist/state/archiveRecovery.js +238 -0
  473. package/dist/state/archiveRecovery.js.map +1 -0
  474. package/dist/state/archiveReplay.js +54 -0
  475. package/dist/state/archiveReplay.js.map +1 -0
  476. package/dist/state/canonicalMigrationRecord.js +37 -0
  477. package/dist/state/canonicalMigrationRecord.js.map +1 -0
  478. package/dist/state/decisionEntities.js +322 -0
  479. package/dist/state/decisionEntities.js.map +1 -0
  480. package/dist/state/decisionLegacyValidation.js +216 -0
  481. package/dist/state/decisionLegacyValidation.js.map +1 -0
  482. package/dist/state/decisionMigrationProvenance.js +117 -0
  483. package/dist/state/decisionMigrationProvenance.js.map +1 -0
  484. package/dist/state/decisionOverlay.js +278 -0
  485. package/dist/state/decisionOverlay.js.map +1 -0
  486. package/dist/state/decisionRevision.js +632 -0
  487. package/dist/state/decisionRevision.js.map +1 -0
  488. package/dist/state/decisionRevisionPublication.js +532 -0
  489. package/dist/state/decisionRevisionPublication.js.map +1 -0
  490. package/dist/state/directRetrieval.js +373 -0
  491. package/dist/state/directRetrieval.js.map +1 -0
  492. package/dist/state/durability.js +325 -0
  493. package/dist/state/durability.js.map +1 -0
  494. package/dist/state/entityCutover.js +294 -0
  495. package/dist/state/entityCutover.js.map +1 -0
  496. package/dist/state/entityCutoverGit.js +128 -0
  497. package/dist/state/entityCutoverGit.js.map +1 -0
  498. package/dist/state/entityMigrationCausality.js +99 -0
  499. package/dist/state/entityMigrationCausality.js.map +1 -0
  500. package/dist/state/entityMigrationPreview.js +864 -0
  501. package/dist/state/entityMigrationPreview.js.map +1 -0
  502. package/dist/state/entityPublicationContext.js +662 -0
  503. package/dist/state/entityPublicationContext.js.map +1 -0
  504. package/dist/state/entityStorage.js +881 -0
  505. package/dist/state/entityStorage.js.map +1 -0
  506. package/dist/state/experimentArchive.js +64 -0
  507. package/dist/state/experimentArchive.js.map +1 -0
  508. package/dist/state/experimentIdentity.js +203 -0
  509. package/dist/state/experimentIdentity.js.map +1 -0
  510. package/dist/state/experimentRetrieval.js +447 -0
  511. package/dist/state/experimentRetrieval.js.map +1 -0
  512. package/dist/state/healthEntities.js +266 -0
  513. package/dist/state/healthEntities.js.map +1 -0
  514. package/dist/state/healthEntityValidation.js +19 -0
  515. package/dist/state/healthEntityValidation.js.map +1 -0
  516. package/dist/state/healthRepair.js +70 -0
  517. package/dist/state/healthRepair.js.map +1 -0
  518. package/dist/state/installRoot.js +64 -24
  519. package/dist/state/installRoot.js.map +1 -1
  520. package/dist/state/legacyEntityCutoverEvidence.js +66 -0
  521. package/dist/state/legacyEntityCutoverEvidence.js.map +1 -0
  522. package/dist/state/legacyIdentity.js +48 -0
  523. package/dist/state/legacyIdentity.js.map +1 -0
  524. package/dist/state/legacySummaryRecord.js +7 -0
  525. package/dist/state/legacySummaryRecord.js.map +1 -0
  526. package/dist/state/listAccounting.js +55 -0
  527. package/dist/state/listAccounting.js.map +1 -0
  528. package/dist/state/listClassification.js +18 -0
  529. package/dist/state/listClassification.js.map +1 -0
  530. package/dist/state/listCursor.js +43 -0
  531. package/dist/state/listCursor.js.map +1 -0
  532. package/dist/state/listRetrieval.js +813 -0
  533. package/dist/state/listRetrieval.js.map +1 -0
  534. package/dist/state/migrationSourceBinding.js +31 -0
  535. package/dist/state/migrationSourceBinding.js.map +1 -0
  536. package/dist/state/objectiveExperimentEntities.js +323 -0
  537. package/dist/state/objectiveExperimentEntities.js.map +1 -0
  538. package/dist/state/planEntities.js +444 -0
  539. package/dist/state/planEntities.js.map +1 -0
  540. package/dist/state/planIdentity.js +45 -0
  541. package/dist/state/planIdentity.js.map +1 -0
  542. package/dist/state/planRetrieval.js +314 -0
  543. package/dist/state/planRetrieval.js.map +1 -0
  544. package/dist/state/planTaskRetrieval.js +285 -0
  545. package/dist/state/planTaskRetrieval.js.map +1 -0
  546. package/dist/state/progressEntities.js +360 -0
  547. package/dist/state/progressEntities.js.map +1 -0
  548. package/dist/state/projectRoot.js +63 -0
  549. package/dist/state/projectRoot.js.map +1 -0
  550. package/dist/state/projectionPolicy.js +184 -0
  551. package/dist/state/projectionPolicy.js.map +1 -0
  552. package/dist/state/retrievalAuthority.js +343 -0
  553. package/dist/state/retrievalAuthority.js.map +1 -0
  554. package/dist/state/safeProjectFile.js +153 -0
  555. package/dist/state/safeProjectFile.js.map +1 -0
  556. package/dist/state/startupAnalysis/benchmark.js +433 -0
  557. package/dist/state/startupAnalysis/benchmark.js.map +1 -0
  558. package/dist/state/startupAnalysis/contract.js +126 -0
  559. package/dist/state/startupAnalysis/contract.js.map +1 -0
  560. package/dist/state/startupAnalysis/helpers.js +287 -0
  561. package/dist/state/startupAnalysis/helpers.js.map +1 -0
  562. package/dist/state/startupAnalysis/index.js +7 -0
  563. package/dist/state/startupAnalysis/index.js.map +1 -0
  564. package/dist/state/startupAnalysis/metrics.js +341 -0
  565. package/dist/state/startupAnalysis/metrics.js.map +1 -0
  566. package/dist/state/startupAnalysis/records.js +199 -0
  567. package/dist/state/startupAnalysis/records.js.map +1 -0
  568. package/dist/state/startupAnalysis/report.js +112 -0
  569. package/dist/state/startupAnalysis/report.js.map +1 -0
  570. package/dist/state/startupAnalysis/threshold.js +513 -0
  571. package/dist/state/startupAnalysis/threshold.js.map +1 -0
  572. package/dist/state/startupAnalysis.js +2 -1952
  573. package/dist/state/startupAnalysis.js.map +1 -1
  574. package/dist/state/startupProjection.js +567 -0
  575. package/dist/state/startupProjection.js.map +1 -0
  576. package/dist/state/stateMode.js +83 -0
  577. package/dist/state/stateMode.js.map +1 -0
  578. package/dist/state/summaryEntityRead.js +26 -0
  579. package/dist/state/summaryEntityRead.js.map +1 -0
  580. package/dist/state/summaryMigrationProvenance.js +67 -0
  581. package/dist/state/summaryMigrationProvenance.js.map +1 -0
  582. package/dist/state/summarySourceRowAuthority.js +37 -0
  583. package/dist/state/summarySourceRowAuthority.js.map +1 -0
  584. package/dist/state/todoDocsEntities.js +267 -0
  585. package/dist/state/todoDocsEntities.js.map +1 -0
  586. package/dist/state/todoDocsEntityValidation.js +34 -0
  587. package/dist/state/todoDocsEntityValidation.js.map +1 -0
  588. package/dist/state/write/assign.js +21 -0
  589. package/dist/state/write/assign.js.map +1 -0
  590. package/dist/state/write/candidateMutation.js +281 -0
  591. package/dist/state/write/candidateMutation.js.map +1 -0
  592. package/dist/state/write/errors.js +12 -0
  593. package/dist/state/write/errors.js.map +1 -0
  594. package/dist/state/write/experimentPublication.js +193 -0
  595. package/dist/state/write/experimentPublication.js.map +1 -0
  596. package/dist/state/write/explain.js +303 -0
  597. package/dist/state/write/explain.js.map +1 -0
  598. package/dist/state/write/fields.js +62 -0
  599. package/dist/state/write/fields.js.map +1 -0
  600. package/dist/state/write/helpers.js +30 -0
  601. package/dist/state/write/helpers.js.map +1 -0
  602. package/dist/state/write/index.js +12 -0
  603. package/dist/state/write/index.js.map +1 -0
  604. package/dist/state/write/input.js +22 -0
  605. package/dist/state/write/input.js.map +1 -0
  606. package/dist/state/write/lock.js +838 -0
  607. package/dist/state/write/lock.js.map +1 -0
  608. package/dist/state/write/mutation.js +235 -0
  609. package/dist/state/write/mutation.js.map +1 -0
  610. package/dist/state/write/operations.js +375 -0
  611. package/dist/state/write/operations.js.map +1 -0
  612. package/dist/state/write/planEvaluation.js +121 -0
  613. package/dist/state/write/planEvaluation.js.map +1 -0
  614. package/dist/state/write/planPublication.js +135 -0
  615. package/dist/state/write/planPublication.js.map +1 -0
  616. package/dist/state/write/serialize.js +2 -0
  617. package/dist/state/write/serialize.js.map +1 -0
  618. package/dist/state/write/transaction.js +44 -0
  619. package/dist/state/write/transaction.js.map +1 -0
  620. package/dist/state/write/validate.js +8 -0
  621. package/dist/state/write/validate.js.map +1 -0
  622. package/dist/upgrade/appContentRefresh.js +384 -0
  623. package/dist/upgrade/appContentRefresh.js.map +1 -0
  624. package/dist/upgrade/appModel.js +8 -6
  625. package/dist/upgrade/appModel.js.map +1 -1
  626. package/dist/upgrade/atomicWriter.js +2 -0
  627. package/dist/upgrade/atomicWriter.js.map +1 -0
  628. package/dist/upgrade/bundleEvidence.js +34 -0
  629. package/dist/upgrade/bundleEvidence.js.map +1 -0
  630. package/dist/upgrade/channels.js +21 -10
  631. package/dist/upgrade/channels.js.map +1 -1
  632. package/dist/upgrade/coexistenceProbe.js +105 -0
  633. package/dist/upgrade/coexistenceProbe.js.map +1 -0
  634. package/dist/upgrade/compatibility.js +56 -20
  635. package/dist/upgrade/compatibility.js.map +1 -1
  636. package/dist/upgrade/doctor.js +197 -191
  637. package/dist/upgrade/doctor.js.map +1 -1
  638. package/dist/upgrade/doctorClassifier.js +188 -0
  639. package/dist/upgrade/doctorClassifier.js.map +1 -0
  640. package/dist/upgrade/installedHooksRetirement.js +197 -0
  641. package/dist/upgrade/installedHooksRetirement.js.map +1 -0
  642. package/dist/upgrade/legacyAgentCleanup.js +283 -0
  643. package/dist/upgrade/legacyAgentCleanup.js.map +1 -0
  644. package/dist/upgrade/lifecycleUpgrade.js +114 -0
  645. package/dist/upgrade/lifecycleUpgrade.js.map +1 -0
  646. package/dist/upgrade/migrateArtifactsV2ToV3.js +363 -137
  647. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  648. package/dist/upgrade/migrationPublication.js +123 -0
  649. package/dist/upgrade/migrationPublication.js.map +1 -0
  650. package/dist/upgrade/nextMajorDoctor.js +156 -0
  651. package/dist/upgrade/nextMajorDoctor.js.map +1 -0
  652. package/dist/upgrade/npxPlatformStatus.js +23 -0
  653. package/dist/upgrade/npxPlatformStatus.js.map +1 -0
  654. package/dist/upgrade/projectIntegration.js +142 -171
  655. package/dist/upgrade/projectIntegration.js.map +1 -1
  656. package/dist/upgrade/projectIntegrationDecision.js +51 -0
  657. package/dist/upgrade/projectIntegrationDecision.js.map +1 -0
  658. package/dist/upgrade/runtimeMigration.js +336 -281
  659. package/dist/upgrade/runtimeMigration.js.map +1 -1
  660. package/dist/upgrade/upgradeCommands.js +9 -0
  661. package/dist/upgrade/upgradeCommands.js.map +1 -1
  662. package/dist/upgrade/upgradeLock.js +86 -0
  663. package/dist/upgrade/upgradeLock.js.map +1 -0
  664. package/dist/upgrade/upgradeOrchestrator.js +212 -56
  665. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  666. package/dist/upgrade/v3CapabilitySurface.js +15 -0
  667. package/dist/upgrade/v3CapabilitySurface.js.map +1 -0
  668. package/dist/upgrade/versionResolution.js +12 -4
  669. package/dist/upgrade/versionResolution.js.map +1 -1
  670. package/dist/validate/appHomeContract.js +5 -9
  671. package/dist/validate/appHomeContract.js.map +1 -1
  672. package/dist/validate/capability.js +144 -14
  673. package/dist/validate/capability.js.map +1 -1
  674. package/dist/validate/crossCapability.js +12 -9
  675. package/dist/validate/crossCapability.js.map +1 -1
  676. package/dist/validate/selfAudit.js +73 -36
  677. package/dist/validate/selfAudit.js.map +1 -1
  678. package/dist/validate/vocabularyAuthority.js +303 -0
  679. package/dist/validate/vocabularyAuthority.js.map +1 -0
  680. package/package.json +45 -27
  681. package/bundle/references/adapters/cursor.md +0 -213
  682. package/bundle/references/adapters/opencode.md +0 -530
  683. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  684. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  685. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  686. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  687. package/bundle/references/v1-section-mapping.md +0 -47
  688. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  689. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  690. package/bundle/skills/agentera/agents/hej.toml +0 -6
  691. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  692. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  693. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  694. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  695. package/bundle/skills/agentera/agents/planera.toml +0 -6
  696. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  697. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  698. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  699. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  700. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  701. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  702. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  703. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  704. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  705. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  706. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  707. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  708. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  709. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  710. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  711. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  712. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  713. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  714. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  715. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  716. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  717. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  718. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  719. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  720. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  721. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  722. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  723. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  724. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  725. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  726. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  727. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  728. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  729. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  730. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  731. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  732. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  733. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  734. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  735. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  736. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  737. package/bundle/skills/hej/SKILL.md +0 -69
  738. package/bundle/skills/hej/agents/hej.toml +0 -11
  739. package/bundle/skills/hej/agents/openai.yaml +0 -8
  740. package/dist/cli/commands/backfill.js +0 -84
  741. package/dist/cli/commands/backfill.js.map +0 -1
  742. package/dist/cli/commands/state.js +0 -1012
  743. package/dist/cli/commands/state.js.map +0 -1
  744. package/dist/core/git.js +0 -43
  745. package/dist/core/git.js.map +0 -1
  746. package/dist/hooks/compaction.js +0 -935
  747. package/dist/hooks/compaction.js.map +0 -1
  748. package/dist/hooks/validateArtifact.js +0 -933
  749. package/dist/hooks/validateArtifact.js.map +0 -1
  750. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  751. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  752. package/dist/setup/copilot.js +0 -227
  753. package/dist/setup/copilot.js.map +0 -1
  754. package/dist/setup/cursor.js +0 -127
  755. package/dist/setup/cursor.js.map +0 -1
  756. package/dist/setup/doctor.js +0 -1276
  757. package/dist/setup/doctor.js.map +0 -1
  758. package/dist/state/progressCommit.js +0 -289
  759. package/dist/state/progressCommit.js.map +0 -1
  760. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  761. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  762. package/dist/validate/lifecycleAdapters.js +0 -772
  763. package/dist/validate/lifecycleAdapters.js.map +0 -1
  764. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  765. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  766. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -1,40 +1,35 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { resolveArtifactPath, } from "../registries/artifactRegistry.js";
4
- import { activeObjectiveName, artifactPath, loadRegistryForSchemas, } from "./appContext.js";
3
+ import { loadArtifactRecord, resolveArtifactPath, } from "../registries/artifactRegistry.js";
4
+ import { activeObjectiveName, artifactPath, resolveRegistryModelPath, } from "./appContext.js";
5
5
  import { asList, extractEntries, firstPresent, loadArtifact, recentCycles, truncate, } from "./stateQuery.js";
6
- import { decisionContextEntry, latestHealthAudit, normalizeSeverity } from "./commands/state.js";
6
+ import { normalizeSeverity } from "./commands/state/index.js";
7
+ import { isResolvedTodoMarkdownStatus, parseTodoMarkdownListItem } from "./todoMarkdown.js";
8
+ import { truncateCodePoints } from "../core/text.js";
9
+ import { TODO_SEVERITY_ORDER_KEYS } from "./todoSeverity.js";
10
+ import { evaluateTodoReadinessQueue, } from "./todoReadinessSelection.js";
11
+ import { capabilityStartupComplete } from "./startupCompletenessContract.js";
12
+ import { discoverPlanArtifacts, planCatalogEntry, planDocumentParts } from "./planArtifacts.js";
13
+ import { planLifecycleState } from "./planLifecycleState.js";
14
+ import { dependencyReadyTasks } from "./capabilityContext/planState.js";
15
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
16
+ import { scanYamlCollection } from "../state/startupProjection.js";
17
+ import { numberedArchiveContract } from "../state/archiveDiscovery.js";
18
+ /**
19
+ * Orientation summaries layer for prime/status. Faithful port of the
20
+ * scripts/agentera `_*_summary`, `_load_todo_items`, `_issue_counts`,
21
+ * `_decision_*`, `_select_status_next_action`, and staleness helpers.
22
+ */
7
23
  export const DONE_STATUSES = new Set(["complete", "completed", "closed", "done", "resolved", "retired"]);
8
24
  export const BLOCKED_STATUSES = new Set(["blocked", "stuck"]);
9
25
  export const DECISION_ATTENTION_MAX_ENTRIES = 3;
10
- export const STARTUP_COMPLETENESS_MISSING_STATE = [];
11
- const TODO_SEVERITY_ORDER = {
12
- critical: 0,
13
- degraded: 1,
14
- warning: 1,
15
- normal: 2,
16
- info: 3,
17
- annoying: 3,
18
- };
19
- const TODO_SECTION_SEVERITIES = {
20
- critical: "critical",
21
- degraded: "degraded",
22
- warning: "warning",
23
- normal: "normal",
24
- info: "info",
25
- annoying: "annoying",
26
- };
27
- const TODO_ITEM_RE = /^- \[([^\]]+)\]\s+(.*)/;
28
- const TODO_PLANERA_SIGNALS = new Set([
29
- "acceptance", "artifact", "capability", "capability-context", "compatibility", "contract",
30
- "cross-capability", "docs", "metadata", "migration", "schema", "startup", "surface", "test", "validation",
31
- ]);
32
- const PROFILERA_STALE_DAYS_ENV = "AGENTERA_PROFILERA_MAX_AGE_DAYS";
33
- const DEFAULT_PROFILERA_STALE_DAYS = 7;
34
- const INSPEKTERA_STALE_DAYS_ENV = "AGENTERA_INSPEKTERA_MAX_AGE_DAYS";
35
- const DEFAULT_INSPEKTERA_STALE_DAYS = 30;
36
- const INSPEKTERA_STALE_CYCLES_ENV = "AGENTERA_INSPEKTERA_MAX_CYCLES";
37
- const DEFAULT_INSPEKTERA_STALE_CYCLES = 10;
26
+ const TODO_SECTION_SEVERITIES = Object.fromEntries(TODO_SEVERITY_ORDER_KEYS.map((key) => [key, key]));
27
+ const PROFILE_STALE_DAYS_ENV = "AGENTERA_PROFILE_MAX_AGE_DAYS";
28
+ const DEFAULT_PROFILE_STALE_DAYS = 7;
29
+ const AUDIT_STALE_DAYS_ENV = "AGENTERA_AUDIT_MAX_AGE_DAYS";
30
+ const DEFAULT_AUDIT_STALE_DAYS = 30;
31
+ const AUDIT_STALE_CYCLES_ENV = "AGENTERA_AUDIT_MAX_CYCLES";
32
+ const DEFAULT_AUDIT_STALE_CYCLES = 10;
38
33
  function intEnv(env, key, def) {
39
34
  const raw = env[key] ?? String(def);
40
35
  const n = parseInt(raw, 10);
@@ -77,14 +72,47 @@ export function loadNamedArtifact(schemas, name) {
77
72
  return null;
78
73
  return loadArtifact(artifactPath(info, name));
79
74
  }
80
- export function registryArtifactPath(artifactId, schemasDir) {
81
- const record = loadRegistryForSchemas(schemasDir).get(artifactId);
75
+ export function registryArtifactPath(artifactId, schemasDir, env = process.env) {
76
+ // Targeted lookup: resolving a single identity (e.g. `profile` against a
77
+ // v2-shaped install) must not walk the full registry and warn about every
78
+ // required schema that happens to be absent from this install. Only the
79
+ // requested identity is inspected; model/schemas authority is shared with the
80
+ // full loader via `resolveRegistryModelPath`.
81
+ let record;
82
+ try {
83
+ record = loadArtifactRecord(artifactId, schemasDir, resolveRegistryModelPath(schemasDir));
84
+ }
85
+ catch (exc) {
86
+ process.stderr.write(`warning: failed to load artifact registry for schemas: ${exc.message}\n`);
87
+ record = undefined;
88
+ }
82
89
  if (record === undefined)
83
90
  throw new Error(`artifact registry does not define '${artifactId}'`);
84
- return resolveArtifactPath(record, process.cwd(), activeObjectiveName());
91
+ return resolveArtifactPath(record, process.cwd(), activeObjectiveName(), env);
85
92
  }
86
93
  // ── staleness ───────────────────────────────────────────────────────
87
- export function checkProfileraStaleness(profilePath, env = process.env) {
94
+ const PROFILE_GENERATED_RE = /<!-- Generated:\s*(\d{4}-\d{2}-\d{2})/;
95
+ const PROFILE_VALIDATED_RE = /Validated:\s*(\d{4}-\d{2}-\d{2})/;
96
+ export function parseProfileHeaderDates(text) {
97
+ const genMatch = PROFILE_GENERATED_RE.exec(text);
98
+ const generatedDate = genMatch ? genMatch[1] : null;
99
+ const generatedUtc = generatedDate ? dateFromIso(generatedDate) : null;
100
+ const valMatch = PROFILE_VALIDATED_RE.exec(text);
101
+ const validatedDate = valMatch ? valMatch[1] : null;
102
+ const validatedUtc = validatedDate ? dateFromIso(validatedDate) : null;
103
+ return { generatedDate, validatedDate, generatedUtc, validatedUtc };
104
+ }
105
+ function profileRefreshAnchorUtc(text) {
106
+ const { generatedUtc, validatedUtc } = parseProfileHeaderDates(text);
107
+ if (generatedUtc === null && validatedUtc === null)
108
+ return null;
109
+ if (generatedUtc === null)
110
+ return validatedUtc;
111
+ if (validatedUtc === null)
112
+ return generatedUtc;
113
+ return Math.max(generatedUtc, validatedUtc);
114
+ }
115
+ export function checkProfileStaleness(profilePath, env = process.env) {
88
116
  if (!fs.existsSync(profilePath))
89
117
  return null;
90
118
  let text;
@@ -95,14 +123,11 @@ export function checkProfileraStaleness(profilePath, env = process.env) {
95
123
  process.stderr.write(`warning: failed to read profile path ${profilePath}: ${exc.message}\n`);
96
124
  return null;
97
125
  }
98
- const m = /<!-- Generated:\s*(\d{4}-\d{2}-\d{2})/.exec(text);
99
- if (!m)
100
- return null;
101
- const gen = dateFromIso(m[1]);
102
- if (gen === null)
126
+ const anchor = profileRefreshAnchorUtc(text);
127
+ if (anchor === null)
103
128
  return null;
104
- const staleDays = intEnv(env, PROFILERA_STALE_DAYS_ENV, DEFAULT_PROFILERA_STALE_DAYS);
105
- const since = daysSince(gen);
129
+ const staleDays = intEnv(env, PROFILE_STALE_DAYS_ENV, DEFAULT_PROFILE_STALE_DAYS);
130
+ const since = daysSince(anchor);
106
131
  return [since >= staleDays, since, staleDays];
107
132
  }
108
133
  export function healthAuditDate(entry) {
@@ -127,8 +152,25 @@ function progressEntryDate(entry) {
127
152
  }
128
153
  return null;
129
154
  }
155
+ function scanSchemaArtifact(schemas, artifactId) {
156
+ const info = schemas[artifactId];
157
+ const contract = numberedArchiveContract(artifactId, resolveSourceRoot());
158
+ const currentPath = info ? artifactPath(info, artifactId) : path.join(process.cwd(), ".agentera", `${artifactId}.yaml`);
159
+ const primary = scanYamlCollection(currentPath, contract.entryCollection, artifactId, contract.entryNumberField);
160
+ const active = artifactId === "progress" && !primary.collection_found
161
+ ? scanYamlCollection(currentPath, "progress", artifactId, contract.entryNumberField)
162
+ : primary;
163
+ return {
164
+ active,
165
+ archive: scanYamlCollection(currentPath, "archive", artifactId, contract.entryNumberField),
166
+ };
167
+ }
130
168
  function cyclesSinceHealthAudit(schemas, auditDate) {
131
- const entries = extractEntries(loadNamedArtifact(schemas, "progress"));
169
+ const info = schemas.progress;
170
+ if (!info)
171
+ return null;
172
+ const scan = scanSchemaArtifact(schemas, "progress").active;
173
+ const entries = scan.entries.map((entry) => entry.fields);
132
174
  if (entries.length === 0)
133
175
  return null;
134
176
  let count = 0;
@@ -139,11 +181,11 @@ function cyclesSinceHealthAudit(schemas, auditDate) {
139
181
  }
140
182
  return count;
141
183
  }
142
- function checkInspekteraAuditStaleness(schemas, latest, auditDate, env = process.env) {
184
+ function checkAuditStaleness(schemas, latest, auditDate, env = process.env) {
143
185
  if (latest === null || auditDate === null)
144
186
  return null;
145
- const staleDaysThreshold = intEnv(env, INSPEKTERA_STALE_DAYS_ENV, DEFAULT_INSPEKTERA_STALE_DAYS);
146
- const staleCyclesThreshold = intEnv(env, INSPEKTERA_STALE_CYCLES_ENV, DEFAULT_INSPEKTERA_STALE_CYCLES);
187
+ const staleDaysThreshold = intEnv(env, AUDIT_STALE_DAYS_ENV, DEFAULT_AUDIT_STALE_DAYS);
188
+ const staleCyclesThreshold = intEnv(env, AUDIT_STALE_CYCLES_ENV, DEFAULT_AUDIT_STALE_CYCLES);
147
189
  const since = daysSince(auditDate);
148
190
  const cyclesSince = cyclesSinceHealthAudit(schemas, auditDate);
149
191
  const timeStale = since >= staleDaysThreshold;
@@ -168,7 +210,7 @@ function checkInspekteraAuditStaleness(schemas, latest, auditDate, env = process
168
210
  if (cyclesSince !== null)
169
211
  result.cycles_since_audit = cyclesSince;
170
212
  if (isStale)
171
- result.suggested_action = "Run inspektera to refresh health audit";
213
+ result.suggested_action = "Run audit to refresh health audit";
172
214
  return result;
173
215
  }
174
216
  // ── todo items + issue counts ───────────────────────────────────────
@@ -217,9 +259,12 @@ export function loadTodoItems(schemas) {
217
259
  continue;
218
260
  }
219
261
  if (currentSeverity) {
220
- const m = TODO_ITEM_RE.exec(stripped);
221
- if (m)
222
- items.push({ severity: currentSeverity, status: "open", text: m[2].trim() });
262
+ const parsed = parseTodoMarkdownListItem(stripped);
263
+ if (!parsed || isResolvedTodoMarkdownStatus(parsed.status))
264
+ continue;
265
+ if (!parsed.description)
266
+ continue;
267
+ items.push({ severity: currentSeverity, status: parsed.status, text: parsed.description });
223
268
  }
224
269
  }
225
270
  return items;
@@ -239,123 +284,228 @@ export function issueCounts(todoItems) {
239
284
  }
240
285
  return counts;
241
286
  }
242
- function todoNeedsPlanera(item) {
243
- const text = item.text.toLowerCase();
244
- let signalCount = 0;
245
- for (const signal of TODO_PLANERA_SIGNALS)
246
- if (text.includes(signal))
247
- signalCount += 1;
248
- return signalCount >= 2 || (signalCount >= 1 && text.length > 180);
249
- }
250
287
  // ── per-artifact summaries ──────────────────────────────────────────
251
288
  export function planSummary(schemas) {
252
- const data = loadNamedArtifact(schemas, "plan");
253
- if (!data || typeof data !== "object" || Array.isArray(data)) {
254
- return {
289
+ const info = schemas.plan;
290
+ if (!info) {
291
+ const summary = {
255
292
  exists: false,
256
293
  active: false,
257
294
  tasks: [],
258
295
  status: "absent",
259
296
  title: "",
260
- absence_reason: "No active plan artifact is available from agentera plan.",
297
+ active_path: "",
298
+ absence_reason: "No active plan artifact is available from agentera state plan.",
261
299
  };
300
+ summary.lifecycle_state = planLifecycleState(summary);
301
+ return summary;
262
302
  }
263
- const d = data;
264
- const legacyEntries = asList(d.entries);
265
- let tasks;
266
- let status;
267
- let title;
268
- if (legacyEntries.length > 0) {
269
- tasks = legacyEntries;
270
- status = entryStatusPy(tasks[0], "");
271
- title = String(firstPresent(tasks[0], ["title", "name"], ""));
272
- }
273
- else {
274
- const header = d.header && typeof d.header === "object" && !Array.isArray(d.header) ? d.header : {};
275
- tasks = asList(d.tasks);
276
- status = String(firstPresent(header, ["status"], d.status ?? "") || "");
277
- title = String(firstPresent(header, ["title"], d.title ?? "") || "");
303
+ const discovery = discoverPlanArtifacts(artifactPath(info, "plan"));
304
+ const activeDiagnostics = discovery.diagnostics.filter((diagnostic) => diagnostic.path === discovery.activePath && diagnostic.category !== "legacy");
305
+ const archivedPlans = discovery.archived.map((artifact) => planCatalogEntry(artifact, discovery.activePath));
306
+ if (!discovery.active) {
307
+ const summary = {
308
+ exists: activeDiagnostics.length === 0 && archivedPlans.length > 0,
309
+ active: false,
310
+ tasks: [],
311
+ status: activeDiagnostics.length > 0 ? "invalid" : archivedPlans.length > 0 ? "archived" : "absent",
312
+ title: "",
313
+ active_path: discovery.activePath,
314
+ absence_reason: activeDiagnostics.length > 0
315
+ ? "Current plan artifact is invalid; see diagnostics."
316
+ : archivedPlans.length > 0
317
+ ? "No active plan artifact is available; archived plan state is history only."
318
+ : "No active plan artifact is available from agentera state plan.",
319
+ complete: 0,
320
+ total: 0,
321
+ complete_plan: false,
322
+ first_pending: null,
323
+ archived_plans: archivedPlans,
324
+ archive_count: archivedPlans.length,
325
+ invalid_archive_paths: discovery.invalidArchivePaths,
326
+ ...(activeDiagnostics.length > 0 ? { invalid_path: discovery.activePath } : {}),
327
+ diagnostics: discovery.diagnostics,
328
+ };
329
+ summary.lifecycle_state = planLifecycleState(summary);
330
+ return summary;
278
331
  }
332
+ const d = discovery.active.data;
333
+ const parts = planDocumentParts(d);
334
+ const tasks = parts.tasks;
335
+ const status = parts.legacyEntries ? entryStatusPy(tasks[0], "") : parts.status;
336
+ const title = parts.legacyEntries
337
+ ? String(firstPresent(tasks[0] ?? {}, ["title", "name"], ""))
338
+ : parts.title;
279
339
  const complete = tasks.filter((task) => DONE_STATUSES.has(entryStatusPy(task, ""))).length;
280
340
  const total = tasks.length;
281
341
  const completePlan = DONE_STATUSES.has(status.toLowerCase()) && complete === total;
282
- let firstPending = null;
283
- if (!completePlan) {
284
- for (const task of tasks) {
285
- const ts = entryStatusPy(task, "pending");
286
- if (DONE_STATUSES.has(ts) || BLOCKED_STATUSES.has(ts))
287
- continue;
288
- firstPending = task;
289
- break;
290
- }
291
- }
292
- return {
342
+ const firstPending = completePlan
343
+ ? null
344
+ : dependencyReadyTasks(tasks).find((task) => entryStatusPy(task, "pending") === "pending") ?? null;
345
+ const summary = {
293
346
  exists: true,
294
347
  status,
295
348
  title,
349
+ active_path: discovery.activePath,
296
350
  constraints: d.constraints ?? null,
297
351
  scope: d.scope ?? null,
298
352
  design: d.design ?? null,
299
353
  tasks,
300
354
  complete,
301
355
  total,
302
- active: !completePlan,
356
+ active: true,
303
357
  complete_plan: completePlan,
304
358
  first_pending: firstPending,
359
+ archived_plans: archivedPlans,
360
+ archive_count: archivedPlans.length,
361
+ invalid_archive_paths: discovery.invalidArchivePaths,
362
+ diagnostics: discovery.diagnostics,
363
+ };
364
+ summary.lifecycle_state = planLifecycleState(summary);
365
+ return summary;
366
+ }
367
+ /** Startup keeps plan routing metadata, not the full active plan body. */
368
+ export function startupPlanSummary(plan) {
369
+ const tasks = asList(plan.tasks).filter((task) => task && typeof task === "object" && !Array.isArray(task));
370
+ const boundedTasks = tasks.slice(0, 10).map((task) => {
371
+ const item = {};
372
+ for (const key of ["id", "artifact", "name", "title", "status", "depends_on", "acceptance_summary", "evidence_summary", "blocked_reasons", "evaluation_state"]) {
373
+ if (!(key in task))
374
+ continue;
375
+ if (key === "acceptance_summary" || key === "evidence_summary") {
376
+ const summary = task[key];
377
+ item[key] = summary && typeof summary === "object" && !Array.isArray(summary)
378
+ ? { count: summary.count ?? asList(summary.items).length }
379
+ : null;
380
+ }
381
+ else if (key === "evaluation_state") {
382
+ const evaluation = task[key];
383
+ item[key] = evaluation && typeof evaluation === "object" && !Array.isArray(evaluation)
384
+ ? Object.fromEntries(Object.entries(evaluation).filter(([name]) => ["attempt_count", "failure_count", "last_verdict"].includes(name)))
385
+ : null;
386
+ }
387
+ else if (key === "depends_on") {
388
+ item[key] = asList(task[key]).slice(0, 20);
389
+ }
390
+ else if (key === "blocked_reasons") {
391
+ item[key] = asList(task[key]).slice(0, 3).map((reason) => truncateCodePoints(String(reason), 160));
392
+ }
393
+ else {
394
+ item[key] = typeof task[key] === "string" ? truncateCodePoints(task[key], 256) : task[key];
395
+ }
396
+ }
397
+ return item;
398
+ });
399
+ const archived = asList(plan.archived_plans).slice(0, 10);
400
+ const diagnostics = asList(plan.diagnostics).slice(0, 10);
401
+ const totalTasks = Number(plan.total ?? tasks.length);
402
+ const taskOmission = plan.task_omission && typeof plan.task_omission === "object" && !Array.isArray(plan.task_omission) ? plan.task_omission : {};
403
+ const finalTaskOmission = {
404
+ ...taskOmission,
405
+ omitted: totalTasks > boundedTasks.length,
406
+ total: totalTasks,
407
+ returned_count: boundedTasks.length,
408
+ omitted_count: Math.max(0, totalTasks - boundedTasks.length),
409
+ omission_reason: totalTasks > boundedTasks.length ? taskOmission.omission_reason ?? "startup_detail_capacity" : "none",
410
+ retrieval: taskOmission.retrieval ?? { list: plan.id ? `agentera state plan tasks list ${String(plan.id)} --limit 100 --format json` : "agentera state plan tasks list --limit 100 --format json", restart: plan.id ? `agentera state plan tasks list ${String(plan.id)} --limit 100 --format json` : "agentera state plan tasks list --limit 100 --format json", get: "agentera state plan tasks get --id ID --format json" },
411
+ };
412
+ return {
413
+ id: plan.id ?? null,
414
+ artifact: plan.artifact ?? "plan",
415
+ exists: Boolean(plan.exists),
416
+ active: Boolean(plan.active),
417
+ status: plan.status,
418
+ title: plan.title ?? "",
419
+ complete: plan.complete ?? 0,
420
+ superseded: plan.superseded ?? 0,
421
+ total: totalTasks,
422
+ task_status_counts: plan.task_status_counts ?? {},
423
+ task_omission: finalTaskOmission,
424
+ complete_plan: Boolean(plan.complete_plan),
425
+ first_pending: plan.first_pending && typeof plan.first_pending === "object" && !Array.isArray(plan.first_pending)
426
+ ? { id: plan.first_pending.id ?? null, artifact: plan.first_pending.artifact ?? "plan", name: plan.first_pending.name ?? plan.first_pending.title ?? "", status: plan.first_pending.status ?? "pending" }
427
+ : null,
428
+ tasks: boundedTasks,
429
+ task_count: totalTasks,
430
+ omitted_task_count: Math.max(0, totalTasks - boundedTasks.length),
431
+ archived_plans: archived,
432
+ archive_count: plan.archive_count ?? archived.length,
433
+ omitted_archive_count: Math.max(0, Number(plan.archive_count ?? archived.length) - archived.length),
434
+ invalid_archive_paths: (plan.invalid_archive_paths ?? []).slice(0, 10),
435
+ diagnostics,
436
+ omitted_diagnostic_count: Math.max(0, (plan.diagnostics ?? []).length - diagnostics.length),
437
+ source_contract: {
438
+ detail_availability: totalTasks > boundedTasks.length ? "summary" : "full",
439
+ retrieval: "agentera state plan --format json",
440
+ raw_archive_records: false,
441
+ },
442
+ lifecycle_state: plan.lifecycle_state ?? null,
305
443
  };
306
444
  }
307
- export function docsSummary(schemas) {
308
- const data = loadNamedArtifact(schemas, "docs");
309
- if (!data || typeof data !== "object" || Array.isArray(data)) {
310
- return { exists: false, status: "absent", absence_reason: "No docs mapping artifact is available from agentera docs." };
445
+ export function docsSummary(schemas, startupInput = {}) {
446
+ const info = schemas.docs;
447
+ if (!info) {
448
+ return { exists: false, status: "absent", absence_reason: "No docs mapping artifact is available from agentera state docs." };
311
449
  }
312
- const d = data;
313
- const mapping = asList(d.mapping);
314
- const index = asList(d.index);
315
- const coverage = d.coverage && typeof d.coverage === "object" && !Array.isArray(d.coverage) ? d.coverage : {};
316
- const conventions = d.conventions && typeof d.conventions === "object" && !Array.isArray(d.conventions) ? d.conventions : {};
450
+ const docsPath = artifactPath(info, "docs");
451
+ const mapping = scanYamlCollection(docsPath, "mapping", "docs", "artifact");
452
+ const index = scanYamlCollection(docsPath, "index", "docs", "artifact");
453
+ const exists = fs.existsSync(docsPath);
454
+ const header = exists ? truncateCodePoints(fs.readFileSync(docsPath, "utf8"), 4096) : "";
455
+ const lastAudit = /^last_audit:\s*(.+)$/m.exec(header)?.[1]?.trim().replace(/^['"]|['"]$/g, "") ?? null;
317
456
  return {
318
- exists: true,
457
+ exists,
319
458
  status: "available",
320
- last_audit: d.last_audit ?? null,
321
- conventions,
322
- mapping,
323
- mapping_entries: mapping.length,
324
- coverage,
459
+ last_audit: lastAudit,
460
+ conventions: {},
461
+ mapping: mapping.entries.slice(0, 10).map((entry) => entry.fields),
462
+ mapping_entries: mapping.entries.length,
463
+ coverage: {},
325
464
  source_contract: {
326
- capability_startup_complete: STARTUP_COMPLETENESS_MISSING_STATE.length === 0,
465
+ capability_startup_complete: capabilityStartupComplete(startupInput),
327
466
  raw_artifact_reads_required: false,
328
467
  state_families: [
329
468
  "plan task details, dependencies, acceptance criteria, and evidence summaries",
330
469
  "docs artifact mapping and source-contract completeness metadata",
331
- "latest progress verification metadata needed for Orkestrera evaluation",
332
- "Dokumentera closeout context metadata for docs/TODO/changelog/progress synchronization",
470
+ "latest progress verification metadata needed for Orchestrate evaluation",
471
+ "Document closeout context metadata for docs/TODO/changelog/progress synchronization",
333
472
  ],
334
473
  },
335
- indexed_documents: index.length,
474
+ indexed_documents: index.entries.length,
336
475
  };
337
476
  }
338
477
  export function progressSummary(schemas) {
339
- const data = loadNamedArtifact(schemas, "progress");
340
- const entries = extractEntries(data);
478
+ const info = schemas.progress;
479
+ if (!info)
480
+ return { exists: false, status: "absent", absence_reason: "No progress cycles are available from agentera progress." };
481
+ const scan = scanSchemaArtifact(schemas, "progress").active;
482
+ const entries = scan.entries.map((entry) => entry.fields);
341
483
  if (entries.length === 0) {
342
484
  return { exists: false, status: "absent", absence_reason: "No progress cycles are available from agentera progress." };
343
485
  }
344
- const latest = recentCycles(entries, 1)[0];
486
+ const latest = recentCycles(entries, 1)[0] ?? {};
487
+ const latestCycle = {};
488
+ for (const key of ["number", "timestamp", "type", "phase", "what", "status"]) {
489
+ if (key in latest)
490
+ latestCycle[key] = latest[key];
491
+ }
345
492
  return {
346
493
  exists: true,
347
494
  status: "available",
348
- latest,
349
- latest_verification: latest.verified ?? null,
495
+ latest: latestCycle,
496
+ latest_verification: latest.verified_present ? { present: true } : null,
350
497
  cycle_count: entries.length,
351
498
  };
352
499
  }
353
500
  export function healthSummary(schemas, env = process.env) {
354
- const data = loadNamedArtifact(schemas, "health");
355
- const entries = extractEntries(data);
501
+ const info = schemas.health;
502
+ if (!info)
503
+ return { exists: false };
504
+ const scan = scanSchemaArtifact(schemas, "health").active;
505
+ const entries = scan.entries.map((entry) => entry.fields);
356
506
  if (entries.length === 0)
357
507
  return { exists: false };
358
- const latest = latestHealthAudit(entries);
508
+ const latest = [...entries].sort((left, right) => Number(right.number ?? 0) - Number(left.number ?? 0))[0] ?? null;
359
509
  if (!latest)
360
510
  return { exists: false };
361
511
  const grades = latest.grades && typeof latest.grades === "object" && !Array.isArray(latest.grades) ? latest.grades : {};
@@ -370,18 +520,20 @@ export function healthSummary(schemas, env = process.env) {
370
520
  const trajectory = String(latest.trajectory ?? "");
371
521
  const auditDate = healthAuditDate(latest);
372
522
  const dateStr = auditDate !== null ? isoFromUtc(auditDate) : null;
523
+ const latestTimestamp = typeof latest.timestamp === "string" ? latest.timestamp : null;
373
524
  const summary = {
374
525
  exists: true,
375
- number: latest.number ?? "?",
526
+ id: latest.id ?? null,
527
+ artifact: "health",
376
528
  date: dateStr,
377
- timestamp: dateStr ?? latest.timestamp ?? null,
529
+ timestamp: dateStr ?? latestTimestamp,
378
530
  trajectory,
379
531
  grade: worst ? worst[1] : "",
380
532
  worst,
381
533
  degrading: ["degrading", "declining", "worse"].includes(trajectory.toLowerCase()) ||
382
534
  (worst !== null && worst[2] >= gradeRank.D),
383
535
  };
384
- const staleness = checkInspekteraAuditStaleness(schemas, latest, auditDate, env);
536
+ const staleness = checkAuditStaleness(schemas, latest, auditDate, env);
385
537
  if (staleness !== null)
386
538
  Object.assign(summary, staleness);
387
539
  return summary;
@@ -399,7 +551,7 @@ function objectiveStatus(data) {
399
551
  return String(firstPresent(header, ["status"], data.status ?? objective.status ?? "") || "").toLowerCase();
400
552
  }
401
553
  export function activeObjectiveSummary() {
402
- const root = path.join(process.cwd(), ".agentera", "optimera");
554
+ const root = path.join(process.cwd(), ".agentera", "optimize");
403
555
  let isDir = false;
404
556
  try {
405
557
  isDir = fs.statSync(root).isDirectory();
@@ -462,7 +614,11 @@ export function statePresence(plan, docs, progress, health, objective) {
462
614
  objective: Boolean(objective.exists),
463
615
  };
464
616
  const absence = {};
465
- for (const [name, summary] of [["plan", plan], ["docs", docs], ["progress", progress]]) {
617
+ for (const [name, summary] of [
618
+ ["plan", plan],
619
+ ["docs", docs],
620
+ ["progress", progress],
621
+ ]) {
466
622
  if (!summary.exists && summary.absence_reason)
467
623
  absence[name] = summary.absence_reason;
468
624
  }
@@ -477,43 +633,49 @@ export function statePresence(plan, docs, progress, health, objective) {
477
633
  }
478
634
  // ── decisions follow-up + attention ─────────────────────────────────
479
635
  export function decisionFollowUp(schemas) {
480
- const data = loadNamedArtifact(schemas, "decisions");
481
- for (const rawEntry of extractEntries(data)) {
482
- const entry = decisionContextEntry(rawEntry);
636
+ for (const entry of startupDecisionEntries(schemas)) {
483
637
  const satisfaction = entry.satisfaction;
484
- if (!satisfaction || typeof satisfaction !== "object" || !satisfaction.review_needed)
638
+ if (!satisfaction || typeof satisfaction !== "object" || Array.isArray(satisfaction) || !satisfaction.review_needed)
485
639
  continue;
486
- const number = entry.number ?? "?";
640
+ const number = typeof entry.number === "string" || typeof entry.number === "number" ? entry.number : "?";
487
641
  const title = firstPresent(entry, ["question", "choice"], "decision follow-up");
488
- return { object: `DECISION ${number} follow-up`, title };
642
+ return { object: `DECISION ${number} follow-up`, title: String(title) };
489
643
  }
490
644
  return null;
491
645
  }
646
+ export function startupDecisionEntries(schemas) {
647
+ if (!schemas.decisions)
648
+ return [];
649
+ const scans = scanSchemaArtifact(schemas, "decisions");
650
+ return [...scans.active.entries, ...scans.archive.entries].map((candidate) => ({
651
+ ...candidate.fields,
652
+ ...(candidate.identity.number !== null && candidate.fields.number === undefined ? { number: candidate.identity.number } : {}),
653
+ }));
654
+ }
492
655
  function decisionAttentionState(satisfaction) {
493
656
  const state = satisfaction.state;
494
657
  if (state === null || state === undefined || state === "")
495
658
  return "missing";
496
659
  if (state === "user_confirmed_satisfied" && satisfaction.review_needed)
497
660
  return "unconfirmed_user_confirmed_satisfied";
498
- if (["open", "provisionally_satisfied", "review_needed"].includes(state))
661
+ if (["open", "provisionally_satisfied", "review_needed"].includes(String(state)))
499
662
  return String(state);
500
663
  if (state === "user_confirmed_satisfied")
501
664
  return "user_confirmed_satisfied";
502
665
  return "unrecognized";
503
666
  }
504
667
  export function decisionReviewAttention(schemas) {
505
- const data = loadNamedArtifact(schemas, "decisions");
506
668
  const reviewEntries = [];
507
669
  const stateCounts = {};
508
- for (const rawEntry of extractEntries(data)) {
509
- const entry = decisionContextEntry(rawEntry);
670
+ for (const entry of startupDecisionEntries(schemas)) {
510
671
  const satisfaction = entry.satisfaction;
511
- if (!satisfaction || typeof satisfaction !== "object" || !satisfaction.review_needed)
672
+ if (!satisfaction || typeof satisfaction !== "object" || Array.isArray(satisfaction) || !satisfaction.review_needed)
512
673
  continue;
513
674
  const state = decisionAttentionState(satisfaction);
514
675
  stateCounts[state] = (stateCounts[state] ?? 0) + 1;
515
676
  reviewEntries.push({
516
- number: entry.number ?? "?",
677
+ id: String(entry.stable_id ?? entry.number ?? "legacy-unaddressable"),
678
+ artifact: "decisions",
517
679
  title: truncate(firstPresent(entry, ["question", "choice", "summary"], "decision review"), 80),
518
680
  state,
519
681
  source: satisfaction.source ?? null,
@@ -526,7 +688,7 @@ export function decisionReviewAttention(schemas) {
526
688
  .sort()
527
689
  .map((name) => `${name}=${stateCounts[name]}`)
528
690
  .join(", ");
529
- const refs = boundedEntries.map((entry) => `Decision ${entry.number}: ${entry.title}`).join("; ");
691
+ const refs = boundedEntries.map((entry) => `Decision ${entry.id}: ${entry.title}`).join("; ");
530
692
  const more = reviewEntries.length - boundedEntries.length;
531
693
  const suffix = more > 0 ? `; +${more} more` : "";
532
694
  return {
@@ -541,55 +703,141 @@ export function decisionReviewAttention(schemas) {
541
703
  }
542
704
  export function formatNextAction(action) {
543
705
  if (!action)
544
- return "object=VISION refresh | capability=visionera | reason=no executable follow-up";
545
- return `object=${truncate(action.object)} | capability=${action.capability} | reason=${action.reason}`;
706
+ return "object=VISION refresh | capability=vision | reason=no executable follow-up | phase=envision";
707
+ const fields = [
708
+ `object=${truncate(action.object)}`,
709
+ `capability=${action.capability}`,
710
+ `reason=${action.reason}`,
711
+ ];
712
+ if ("phase" in action && action.phase)
713
+ fields.push(`phase=${action.phase}`);
714
+ if ("id" in action && action.id)
715
+ fields.push(`id=${action.id}`);
716
+ if ("artifact" in action && action.artifact)
717
+ fields.push(`artifact=${action.artifact}`);
718
+ if ("outcome" in action && action.outcome)
719
+ fields.push(`outcome=${action.outcome}`);
720
+ if ("eligible" in action && typeof action.eligible === "boolean")
721
+ fields.push(`eligible=${String(action.eligible)}`);
722
+ if ("retrieval" in action
723
+ && action.retrieval
724
+ && typeof action.retrieval === "object"
725
+ && "exact" in action.retrieval
726
+ && typeof action.retrieval.exact === "string")
727
+ fields.push(`retrieval=${action.retrieval.exact}`);
728
+ return fields.join(" | ");
546
729
  }
547
- export function selectHejNextAction(plan, health, objective, todoItems, decision, savedContext) {
730
+ /**
731
+ * Evolved state-readiness hint (Decision 76). Evaluates every cascade branch
732
+ * (no early-return); each candidate carries a protocol.yaml phase tag (PH1
733
+ * envision → PH5 audit). Position 1 (`recommended`) is the branch that would
734
+ * have won under the legacy early-return cascade.
735
+ */
736
+ export function selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness) {
737
+ const candidates = [];
548
738
  const pending = plan.first_pending;
549
739
  if (pending && typeof pending === "object" && !Array.isArray(pending)) {
550
740
  const number = pending.number ?? "?";
551
741
  const title = firstPresent(pending, ["name", "title"], "pending task");
552
- return { object: `PLAN Task ${number}: ${title}`, capability: "orkestrera", reason: "first pending plan task" };
742
+ candidates.push({
743
+ object: `PLAN Task ${number}: ${title}`,
744
+ capability: "orchestrate",
745
+ reason: "first pending plan task",
746
+ phase: "build",
747
+ });
553
748
  }
554
749
  if (health.degrading) {
555
750
  const worst = health.worst;
556
751
  const target = worst ? `${worst[0]}:${worst[1]}` : "degrading health";
557
- return { object: `HEALTH: ${target}`, capability: "inspektera", reason: "critical or degrading health" };
752
+ candidates.push({
753
+ object: `HEALTH: ${target}`,
754
+ capability: "audit",
755
+ reason: "critical or degrading health",
756
+ phase: "audit",
757
+ });
558
758
  }
559
759
  if (objective.active) {
560
- return {
760
+ candidates.push({
561
761
  object: `OBJECTIVE: ${objective.metric || objective.title}`,
562
- capability: "optimera",
762
+ capability: "optimize",
563
763
  reason: "active non-closed objective",
564
- };
764
+ phase: "build",
765
+ });
565
766
  }
566
- if (todoItems.length > 0) {
567
- const item = [...todoItems].sort((a, b) => (TODO_SEVERITY_ORDER[a.severity] ?? 2) - (TODO_SEVERITY_ORDER[b.severity] ?? 2))[0];
568
- if (todoNeedsPlanera(item)) {
569
- return { object: `TODO: ${item.text}`, capability: "planera", reason: "complex TODO needs planning" };
767
+ const todoReadiness = completeTodoReadiness ?? evaluateTodoReadinessQueue(todoItems.map((item) => ({
768
+ id: String(item.id ?? ""),
769
+ artifact: String(item.artifact ?? "todo"),
770
+ record: { ...item, description: item.text },
771
+ })));
772
+ if (todoReadiness.selected) {
773
+ const item = todoReadiness.selected;
774
+ candidates.push({
775
+ object: `TODO ${item.id}: ${truncate(item.description, 120)}`,
776
+ capability: item.capability,
777
+ reason: item.reason,
778
+ phase: item.phase,
779
+ id: item.id,
780
+ artifact: item.artifact,
781
+ outcome: item.result,
782
+ eligible: item.eligible,
783
+ retrieval: item.retrieval,
784
+ });
785
+ if (todoReadiness.triage.count > 0) {
786
+ candidates.push({
787
+ object: `TODO triage: ${todoReadiness.triage.count} item(s)`,
788
+ capability: "status",
789
+ reason: todoReadiness.triage.recovery,
790
+ phase: "audit",
791
+ outcome: "needs-triage",
792
+ eligible: false,
793
+ });
570
794
  }
571
- return { object: `TODO: ${item.text}`, capability: "realisera", reason: "highest-priority open TODO" };
795
+ }
796
+ else if (todoReadiness.abstainRecovery) {
797
+ candidates.push({
798
+ object: "TODO queue: no actionable item",
799
+ capability: "status",
800
+ reason: todoReadiness.abstainRecovery,
801
+ phase: "audit",
802
+ outcome: "needs-triage",
803
+ eligible: false,
804
+ });
572
805
  }
573
806
  if (health.stale && !health.degrading) {
574
- return {
575
- object: `HEALTH: Audit ${health.number ?? "?"} stale`,
576
- capability: "inspektera",
807
+ candidates.push({
808
+ object: `HEALTH: audit ${String(health.id ?? "unknown")} stale`,
809
+ capability: "audit",
577
810
  reason: "stale health audit",
578
- };
811
+ phase: "audit",
812
+ });
579
813
  }
580
814
  if (decision) {
581
- return { object: String(decision.object), capability: "resonera", reason: "unresolved decision follow-up" };
815
+ candidates.push({
816
+ object: String(decision.object),
817
+ capability: "discuss",
818
+ reason: "unresolved decision follow-up",
819
+ phase: "deliberate",
820
+ });
582
821
  }
583
822
  const visionExists = fs.existsSync(path.join(process.cwd(), ".agentera", "vision.yaml"));
584
- if (plan.exists && !plan.complete_plan) {
585
- return { object: "VISION refresh", capability: "planera", reason: "no executable follow-up" };
823
+ if ((plan.exists && !plan.complete_plan) || visionExists) {
824
+ candidates.push({ object: "VISION refresh", capability: "plan", reason: "no executable follow-up", phase: "envision" });
586
825
  }
587
- if (visionExists) {
588
- return { object: "VISION refresh", capability: "planera", reason: "no executable follow-up" };
826
+ if (savedContext && !visionExists) {
827
+ candidates.push({ object: "Direction clarification", capability: "discuss", reason: "saved context without vision", phase: "envision" });
589
828
  }
590
- if (savedContext) {
591
- return { object: "Direction clarification", capability: "resonera", reason: "saved context without vision" };
829
+ candidates.push({ object: "VISION refresh", capability: "vision", reason: "fresh project direction", phase: "envision" });
830
+ // Guarantee at least one alternative so the hint never collapses to a single entry.
831
+ if (candidates.length < 2) {
832
+ candidates.push({ object: "Direction clarification", capability: "discuss", reason: "clarify project direction", phase: "envision" });
592
833
  }
593
- return { object: "VISION refresh", capability: "visionera", reason: "fresh project direction" };
834
+ const [recommended, ...alternatives] = candidates;
835
+ return { recommended, alternatives };
836
+ }
837
+ /** Legacy single-entry projection of {@link selectStatusReadiness}: the
838
+ * top-priority candidate as `{object, capability, reason}` (no `phase`). */
839
+ export function selectStatusNextAction(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness) {
840
+ const { recommended } = selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness);
841
+ return { object: recommended.object, capability: recommended.capability, reason: recommended.reason };
594
842
  }
595
843
  //# sourceMappingURL=orientation.js.map