agentera 3.0.0-dev.4 → 3.0.0-dev.46

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 (585) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +108 -22
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1351 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +236 -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-publication.json +437 -0
  12. package/bundle/references/adapters/package-registry.yaml +434 -189
  13. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  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 +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  19. package/bundle/references/analysis/verification-policy.yaml +191 -0
  20. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  21. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  22. package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
  23. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  24. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  25. package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
  26. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  27. package/bundle/references/cli/routing-model.md +155 -0
  28. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  29. package/bundle/references/cli/update-channels.yaml +35 -2
  30. package/bundle/references/cli/vocabulary-index.yaml +23 -20
  31. package/bundle/references/cli/vocabulary.md +337 -366
  32. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  33. package/bundle/registry.json +14 -14
  34. package/bundle/skills/agentera/SKILL.md +218 -408
  35. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  36. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  37. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  38. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  39. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  40. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  41. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  42. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  44. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  45. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  46. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  48. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  52. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  53. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  55. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  57. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  59. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  62. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  63. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  64. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  65. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  66. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  67. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  68. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  69. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  71. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  72. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  75. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  77. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  79. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  81. package/bundle/skills/agentera/protocol.yaml +31 -31
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  95. package/dist/analytics/extractCorpus/cli.js +190 -0
  96. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  97. package/dist/analytics/extractCorpus/core.js +392 -0
  98. package/dist/analytics/extractCorpus/corpus.js +167 -0
  99. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  100. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  101. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  102. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  103. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  104. package/dist/analytics/extractCorpus/index.js +14 -0
  105. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  106. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  107. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  108. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  109. package/dist/analytics/extractCorpus.js +2 -1791
  110. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  111. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  112. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  113. package/dist/analytics/personalGlossaryProfile.js +219 -0
  114. package/dist/analytics/profileSignals.js +211 -0
  115. package/dist/analytics/usageStats.js +169 -42
  116. package/dist/audit/terminologyDrift.js +281 -0
  117. package/dist/bin/agentera.js +3 -2
  118. package/dist/capabilities/audit/instructions.js +16 -0
  119. package/dist/capabilities/build/instructions.js +56 -0
  120. package/dist/capabilities/design/instructions.js +4 -0
  121. package/dist/capabilities/discuss/instructions.js +29 -0
  122. package/dist/capabilities/document/instructions.js +11 -0
  123. package/dist/capabilities/index.js +40 -0
  124. package/dist/capabilities/optimize/instructions.js +14 -0
  125. package/dist/capabilities/orchestrate/instructions.js +40 -0
  126. package/dist/capabilities/plan/instructions.js +32 -0
  127. package/dist/capabilities/profile/instructions.js +70 -0
  128. package/dist/capabilities/research/instructions.js +5 -0
  129. package/dist/capabilities/status/instructions.js +11 -0
  130. package/dist/capabilities/status/startupInstructions.js +34 -0
  131. package/dist/capabilities/vision/instructions.js +4 -0
  132. package/dist/cli/appContext.js +30 -24
  133. package/dist/cli/argvalidate.js +0 -1
  134. package/dist/cli/capabilityContext/benchmark.js +565 -0
  135. package/dist/cli/capabilityContext/bespoke.js +44 -0
  136. package/dist/cli/capabilityContext/build.js +242 -0
  137. package/dist/cli/capabilityContext/closeout.js +233 -0
  138. package/dist/cli/capabilityContext/contract.js +179 -0
  139. package/dist/cli/capabilityContext/evidence.js +463 -0
  140. package/dist/cli/capabilityContext/index.js +3 -0
  141. package/dist/cli/capabilityContext/orchestration.js +131 -0
  142. package/dist/cli/capabilityContext/planState.js +260 -0
  143. package/dist/cli/capabilityContext/progress.js +142 -0
  144. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  145. package/dist/cli/capabilityContext/shared.js +83 -0
  146. package/dist/cli/capabilityContext/slim.js +152 -0
  147. package/dist/cli/capabilityContext/startup.js +150 -0
  148. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  149. package/dist/cli/capabilityContext/types.js +56 -0
  150. package/dist/cli/capabilityContext.js +1 -2421
  151. package/dist/cli/commands/appHome.js +22 -0
  152. package/dist/cli/commands/capability.js +5 -12
  153. package/dist/cli/commands/compact.js +41 -13
  154. package/dist/cli/commands/doctor.js +127 -97
  155. package/dist/cli/commands/durability.js +81 -0
  156. package/dist/cli/commands/glossaryAdvice.js +138 -0
  157. package/dist/cli/commands/lint.js +26 -44
  158. package/dist/cli/commands/personalGlossary.js +176 -0
  159. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  160. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  161. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  162. package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
  163. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  164. package/dist/cli/commands/prime/orientationOutput.js +397 -0
  165. package/dist/cli/commands/prime/types.js +1 -0
  166. package/dist/cli/commands/prime/v1Migration.js +38 -0
  167. package/dist/cli/commands/prime.js +80 -558
  168. package/dist/cli/commands/profileGrounding.js +55 -0
  169. package/dist/cli/commands/query.js +78 -53
  170. package/dist/cli/commands/report.js +96 -25
  171. package/dist/cli/commands/route.js +142 -0
  172. package/dist/cli/commands/schema.js +266 -143
  173. package/dist/cli/commands/state/decisions.js +387 -0
  174. package/dist/cli/commands/state/docs.js +70 -0
  175. package/dist/cli/commands/state/experimentRecords.js +151 -0
  176. package/dist/cli/commands/state/experiments.js +14 -0
  177. package/dist/cli/commands/state/get.js +129 -0
  178. package/dist/cli/commands/state/health.js +14 -0
  179. package/dist/cli/commands/state/index.js +16 -0
  180. package/dist/cli/commands/state/list.js +194 -0
  181. package/dist/cli/commands/state/objective.js +25 -0
  182. package/dist/cli/commands/state/plan.js +14 -0
  183. package/dist/cli/commands/state/planTasks.js +154 -0
  184. package/dist/cli/commands/state/plans.js +154 -0
  185. package/dist/cli/commands/state/progress.js +13 -0
  186. package/dist/cli/commands/state/shared.js +14 -0
  187. package/dist/cli/commands/state/todo.js +42 -0
  188. package/dist/cli/commands/state/write.js +434 -0
  189. package/dist/cli/commands/upgrade.js +146 -5
  190. package/dist/cli/commands/upgradeVerify.js +118 -0
  191. package/dist/cli/commands/validate.js +272 -213
  192. package/dist/cli/commands/verify.js +24 -9
  193. package/dist/cli/contracts/bundleStatus.js +1 -0
  194. package/dist/cli/contracts/orientationState.js +1 -0
  195. package/dist/cli/dispatch/argvParser.js +32 -0
  196. package/dist/cli/dispatch/check.js +372 -0
  197. package/dist/cli/dispatch/commands.js +27 -0
  198. package/dist/cli/dispatch/index.js +207 -0
  199. package/dist/cli/dispatch/lifecycle.js +652 -0
  200. package/dist/cli/dispatch/prime.js +139 -0
  201. package/dist/cli/dispatch/projections.js +17 -0
  202. package/dist/cli/dispatch/shared.js +63 -0
  203. package/dist/cli/dispatch/state.js +140 -0
  204. package/dist/cli/dispatch.js +1 -996
  205. package/dist/cli/errors.js +52 -0
  206. package/dist/cli/help.js +390 -43
  207. package/dist/cli/migrationRequired.js +87 -0
  208. package/dist/cli/orientation/attention.js +59 -0
  209. package/dist/cli/orientation/corpusCoverage.js +102 -0
  210. package/dist/cli/orientation.js +444 -173
  211. package/dist/cli/planArtifacts.js +350 -0
  212. package/dist/cli/planEvidence.js +157 -0
  213. package/dist/cli/planLifecycleState.js +36 -0
  214. package/dist/cli/planTaskIndex.js +11 -0
  215. package/dist/cli/preCutoverCommand.js +32 -0
  216. package/dist/cli/prime-blob.js +71 -3
  217. package/dist/cli/profileAcquisition.js +167 -0
  218. package/dist/cli/startupCompletenessContract.js +59 -0
  219. package/dist/cli/stateQuery.js +63 -14
  220. package/dist/cli/structured.js +0 -1
  221. package/dist/cli/todoMarkdown.js +46 -0
  222. package/dist/cli/todoReadinessSelection.js +192 -0
  223. package/dist/cli/todoSeverity.js +18 -0
  224. package/dist/core/atomicWriter.js +20 -0
  225. package/dist/core/developmentChannel.js +1 -0
  226. package/dist/core/developmentInvocation.js +374 -0
  227. package/dist/core/difflib.js +0 -1
  228. package/dist/core/envPaths.js +20 -0
  229. package/dist/core/jsonValue.js +5 -0
  230. package/dist/core/paths.js +0 -1
  231. package/dist/core/pyjson.js +67 -3
  232. package/dist/core/shell.js +4 -0
  233. package/dist/core/skillIdentity.js +23 -0
  234. package/dist/core/sourceRoot.js +9 -12
  235. package/dist/core/text.js +10 -0
  236. package/dist/core/toml.js +0 -1
  237. package/dist/core/yaml.js +8 -1
  238. package/dist/eval/evalSkills.js +30 -26
  239. package/dist/eval/hybridRouteEvaluation.js +155 -0
  240. package/dist/eval/semanticEval.js +43 -20
  241. package/dist/eval/semanticFixtures.js +16 -5
  242. package/dist/hooks/common.js +11 -81
  243. package/dist/hooks/compaction/apply.js +446 -0
  244. package/dist/hooks/compaction/dryRun.js +184 -0
  245. package/dist/hooks/compaction/index.js +22 -0
  246. package/dist/hooks/compaction/parse.js +325 -0
  247. package/dist/hooks/compaction/retention.js +202 -0
  248. package/dist/hooks/compaction/status.js +360 -0
  249. package/dist/hooks/compaction/types.js +5 -0
  250. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  251. package/dist/hooks/validateArtifact/index.js +92 -0
  252. package/dist/hooks/validateArtifact/markdown.js +145 -0
  253. package/dist/hooks/validateArtifact/schema.js +546 -0
  254. package/dist/hooks/validateArtifact/traversal.js +107 -0
  255. package/dist/hooks/validateArtifact/violations.js +107 -0
  256. package/dist/migrate/v2HandoffManifest.js +452 -0
  257. package/dist/registries/activationContract.js +2 -0
  258. package/dist/registries/activationTuples.js +106 -0
  259. package/dist/registries/artifactProtocolIds.js +78 -0
  260. package/dist/registries/artifactRegistry.js +224 -63
  261. package/dist/registries/artifactSchemaProjection.js +45 -0
  262. package/dist/registries/capabilityContract.js +141 -13
  263. package/dist/registries/evaluatorHandoffContract.js +170 -0
  264. package/dist/registries/evidenceTierContract.js +371 -0
  265. package/dist/registries/glossaryAdviceContract.js +79 -0
  266. package/dist/registries/glossaryCaveatContract.js +67 -0
  267. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  268. package/dist/registries/glossaryEntryContract.js +757 -0
  269. package/dist/registries/glossaryTermIdentity.js +17 -0
  270. package/dist/registries/glossaryTermOccurrence.js +20 -0
  271. package/dist/registries/hybridRoute.js +274 -0
  272. package/dist/registries/hybridRouteReceipt.js +221 -0
  273. package/dist/registries/packagePublication.js +229 -0
  274. package/dist/registries/packageRegistry.js +187 -211
  275. package/dist/registries/todoReadinessContract.js +448 -0
  276. package/dist/registries/triggerLoader.js +174 -0
  277. package/dist/registries/verbosityBudgetContract.js +205 -0
  278. package/dist/release/releaseMetadata.js +385 -0
  279. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  280. package/dist/runtime/lifecycleAdapters.js +777 -0
  281. package/dist/runtime/lifecycleAuthority.js +453 -0
  282. package/dist/runtime/lifecycleOperationContract.js +123 -0
  283. package/dist/runtime/lifecycleOperations.js +634 -0
  284. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  285. package/dist/runtime/lifecyclePublication.js +415 -0
  286. package/dist/runtime/lifecycleSnapshot.js +438 -0
  287. package/dist/runtime/nativeResourceCleanup.js +502 -0
  288. package/dist/setup/opencode.js +20 -0
  289. package/dist/setup/opencodeConstants.js +1 -0
  290. package/dist/setup/sharedSkill.js +45 -0
  291. package/dist/setup/smokeChecks.js +21 -82
  292. package/dist/state/archiveDiscovery.js +580 -0
  293. package/dist/state/archivePublication.js +225 -0
  294. package/dist/state/archiveRecovery.js +237 -0
  295. package/dist/state/archiveReplay.js +53 -0
  296. package/dist/state/canonicalMigrationRecord.js +36 -0
  297. package/dist/state/changelog.js +221 -0
  298. package/dist/state/decisionEntities.js +367 -0
  299. package/dist/state/decisionLegacyValidation.js +215 -0
  300. package/dist/state/decisionMigrationProvenance.js +199 -0
  301. package/dist/state/decisionOverlay.js +254 -0
  302. package/dist/state/decisionRevision.js +256 -0
  303. package/dist/state/decisionRevisionMigration.js +89 -0
  304. package/dist/state/directRetrieval.js +323 -0
  305. package/dist/state/durability.js +324 -0
  306. package/dist/state/entityCutover.js +459 -0
  307. package/dist/state/entityCutoverGit.js +127 -0
  308. package/dist/state/entityGlossaryAuthority.js +13 -0
  309. package/dist/state/entityListProjection.js +187 -0
  310. package/dist/state/entityListRuntimeRegistry.js +85 -0
  311. package/dist/state/entityMigrationCausality.js +97 -0
  312. package/dist/state/entityMigrationIdentity.js +5 -0
  313. package/dist/state/entityMigrationPreview.js +846 -0
  314. package/dist/state/entityMigrationTodo.js +133 -0
  315. package/dist/state/entityPublicationContext.js +806 -0
  316. package/dist/state/entityRetrievalHelp.js +506 -0
  317. package/dist/state/entityStorage.js +896 -0
  318. package/dist/state/exactReplacementRecovery.js +18 -0
  319. package/dist/state/experimentArchive.js +63 -0
  320. package/dist/state/experimentIdentity.js +202 -0
  321. package/dist/state/healthEntities.js +262 -0
  322. package/dist/state/healthEntityValidation.js +18 -0
  323. package/dist/state/healthRepair.js +69 -0
  324. package/dist/state/installRoot.js +64 -25
  325. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  326. package/dist/state/legacyIdentity.js +47 -0
  327. package/dist/state/legacySummaryRecord.js +6 -0
  328. package/dist/state/listAccounting.js +54 -0
  329. package/dist/state/listClassification.js +17 -0
  330. package/dist/state/listCursor.js +42 -0
  331. package/dist/state/listRetrieval.js +781 -0
  332. package/dist/state/migrationSourceBinding.js +30 -0
  333. package/dist/state/objectiveExperimentEntities.js +322 -0
  334. package/dist/state/planEntities.js +530 -0
  335. package/dist/state/planIdentity.js +47 -0
  336. package/dist/state/planRetrieval.js +313 -0
  337. package/dist/state/planTaskRetrieval.js +294 -0
  338. package/dist/state/progressEntities.js +512 -0
  339. package/dist/state/progressGlossaryCaveat.js +168 -0
  340. package/dist/state/progressPublicationOrder.js +19 -0
  341. package/dist/state/projectRoot.js +62 -0
  342. package/dist/state/projectionPolicy.js +190 -0
  343. package/dist/state/retrievalAuthority.js +156 -0
  344. package/dist/state/safeProjectFile.js +155 -0
  345. package/dist/state/startupAnalysis/benchmark.js +432 -0
  346. package/dist/state/startupAnalysis/contract.js +160 -0
  347. package/dist/state/startupAnalysis/helpers.js +286 -0
  348. package/dist/state/startupAnalysis/index.js +6 -0
  349. package/dist/state/startupAnalysis/metrics.js +340 -0
  350. package/dist/state/startupAnalysis/records.js +198 -0
  351. package/dist/state/startupAnalysis/report.js +111 -0
  352. package/dist/state/startupAnalysis/threshold.js +512 -0
  353. package/dist/state/startupAnalysis.js +2 -1953
  354. package/dist/state/startupProjection.js +499 -0
  355. package/dist/state/stateMode.js +85 -0
  356. package/dist/state/stateStorageAuthority.js +47 -0
  357. package/dist/state/summaryEntityRead.js +25 -0
  358. package/dist/state/summaryMigrationProvenance.js +66 -0
  359. package/dist/state/summarySourceRowAuthority.js +36 -0
  360. package/dist/state/todoDocsEntities.js +1064 -0
  361. package/dist/state/todoDocsEntityValidation.js +158 -0
  362. package/dist/state/todoMarkdownProjection.js +51 -0
  363. package/dist/state/todoReconciliationActivation.js +132 -0
  364. package/dist/state/todoReconciliationInspection.js +173 -0
  365. package/dist/state/todoReconciliationRepair.js +170 -0
  366. package/dist/state/todoReconciliationTransaction.js +582 -0
  367. package/dist/state/write/assign.js +20 -0
  368. package/dist/state/write/candidateMutation.js +269 -0
  369. package/dist/state/write/errors.js +11 -0
  370. package/dist/state/write/experimentPublication.js +192 -0
  371. package/dist/state/write/explain.js +332 -0
  372. package/dist/state/write/fields.js +61 -0
  373. package/dist/state/write/glossaryPublication.js +263 -0
  374. package/dist/state/write/grammar.js +280 -0
  375. package/dist/state/write/helpers.js +29 -0
  376. package/dist/state/write/index.js +12 -0
  377. package/dist/state/write/input.js +367 -0
  378. package/dist/state/write/lock.js +837 -0
  379. package/dist/state/write/mutation.js +234 -0
  380. package/dist/state/write/operations.js +169 -0
  381. package/dist/state/write/planEvaluation.js +128 -0
  382. package/dist/state/write/planPublication.js +179 -0
  383. package/dist/state/write/runtimeOperations.js +142 -0
  384. package/dist/state/write/serialize.js +1 -0
  385. package/dist/state/write/transaction.js +52 -0
  386. package/dist/state/write/validate.js +7 -0
  387. package/dist/upgrade/appContentRefresh.js +383 -0
  388. package/dist/upgrade/appModel.js +8 -7
  389. package/dist/upgrade/atomicWriter.js +1 -0
  390. package/dist/upgrade/bundleEvidence.js +33 -0
  391. package/dist/upgrade/channels.js +12 -8
  392. package/dist/upgrade/compatibility.js +56 -21
  393. package/dist/upgrade/doctor.js +197 -192
  394. package/dist/upgrade/doctorClassifier.js +187 -0
  395. package/dist/upgrade/installedHooksRetirement.js +196 -0
  396. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  397. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  398. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  399. package/dist/upgrade/migrationPublication.js +122 -0
  400. package/dist/upgrade/nextMajorDoctor.js +155 -0
  401. package/dist/upgrade/npxPlatformStatus.js +22 -0
  402. package/dist/upgrade/projectIntegration.js +145 -187
  403. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  404. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  405. package/dist/upgrade/runtimeMigration.js +278 -352
  406. package/dist/upgrade/upgradeCommands.js +14 -1
  407. package/dist/upgrade/upgradeLock.js +85 -0
  408. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  409. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  410. package/dist/upgrade/versionResolution.js +12 -5
  411. package/dist/validate/activationArtifactEvidence.js +844 -0
  412. package/dist/validate/activationConjunction.js +816 -0
  413. package/dist/validate/activationEvidenceManifest.js +515 -0
  414. package/dist/validate/activationPackageSemantics.js +29 -0
  415. package/dist/validate/appHomeContract.js +5 -11
  416. package/dist/validate/bootstrapAuthority.js +44 -0
  417. package/dist/validate/capability.js +144 -15
  418. package/dist/validate/crossCapability.js +15 -10
  419. package/dist/validate/retainedReferenceAuthority.js +879 -0
  420. package/dist/validate/selfAudit.js +73 -37
  421. package/dist/validate/v1LegacyCruft.js +131 -0
  422. package/dist/validate/vocabularyAuthority.js +303 -0
  423. package/package.json +53 -27
  424. package/bundle/references/adapters/cursor.md +0 -213
  425. package/bundle/references/adapters/opencode.md +0 -530
  426. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  427. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  428. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  429. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  430. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  431. package/bundle/references/analysis/benchmark.md +0 -267
  432. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  433. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  434. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  435. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  436. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  437. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  438. package/bundle/references/meta/documentation-inventory.md +0 -43
  439. package/bundle/references/v1-section-mapping.md +0 -47
  440. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  441. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  442. package/bundle/skills/agentera/agents/hej.toml +0 -6
  443. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  444. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  445. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  446. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  447. package/bundle/skills/agentera/agents/planera.toml +0 -6
  448. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  449. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  450. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  451. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  452. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  453. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  454. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  456. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  461. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  462. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  463. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  464. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  465. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  466. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  467. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  468. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  471. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  478. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  479. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  481. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  482. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  483. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  484. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  485. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  486. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  487. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  488. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  489. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  490. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  491. package/bundle/skills/agentera/references/contract.md +0 -1039
  492. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  493. package/bundle/skills/hej/SKILL.md +0 -69
  494. package/bundle/skills/hej/agents/hej.toml +0 -11
  495. package/bundle/skills/hej/agents/openai.yaml +0 -8
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/cli/appContext.js.map +0 -1
  500. package/dist/cli/argvalidate.js.map +0 -1
  501. package/dist/cli/capabilityContext.js.map +0 -1
  502. package/dist/cli/commands/backfill.js +0 -84
  503. package/dist/cli/commands/backfill.js.map +0 -1
  504. package/dist/cli/commands/capability.js.map +0 -1
  505. package/dist/cli/commands/compact.js.map +0 -1
  506. package/dist/cli/commands/doctor.js.map +0 -1
  507. package/dist/cli/commands/lint.js.map +0 -1
  508. package/dist/cli/commands/prime.js.map +0 -1
  509. package/dist/cli/commands/query.js.map +0 -1
  510. package/dist/cli/commands/report.js.map +0 -1
  511. package/dist/cli/commands/schema.js.map +0 -1
  512. package/dist/cli/commands/state.js +0 -1012
  513. package/dist/cli/commands/state.js.map +0 -1
  514. package/dist/cli/commands/upgrade.js.map +0 -1
  515. package/dist/cli/commands/validate.js.map +0 -1
  516. package/dist/cli/commands/verify.js.map +0 -1
  517. package/dist/cli/dispatch.js.map +0 -1
  518. package/dist/cli/help.js.map +0 -1
  519. package/dist/cli/orientation.js.map +0 -1
  520. package/dist/cli/prime-blob.js.map +0 -1
  521. package/dist/cli/stateQuery.js.map +0 -1
  522. package/dist/cli/structured.js.map +0 -1
  523. package/dist/core/difflib.js.map +0 -1
  524. package/dist/core/git.js +0 -43
  525. package/dist/core/git.js.map +0 -1
  526. package/dist/core/paths.js.map +0 -1
  527. package/dist/core/pyjson.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/toml.js.map +0 -1
  530. package/dist/core/yaml.js.map +0 -1
  531. package/dist/eval/evalSkills.js.map +0 -1
  532. package/dist/eval/semanticEval.js.map +0 -1
  533. package/dist/eval/semanticFixtures.js.map +0 -1
  534. package/dist/hooks/common.js.map +0 -1
  535. package/dist/hooks/compaction.js +0 -935
  536. package/dist/hooks/compaction.js.map +0 -1
  537. package/dist/hooks/cursorPreToolUse.js +0 -19
  538. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  539. package/dist/hooks/cursorSessionStart.js +0 -71
  540. package/dist/hooks/cursorSessionStart.js.map +0 -1
  541. package/dist/hooks/sessionStart.js +0 -209
  542. package/dist/hooks/sessionStart.js.map +0 -1
  543. package/dist/hooks/sessionStop.js +0 -212
  544. package/dist/hooks/sessionStop.js.map +0 -1
  545. package/dist/hooks/validateArtifact.js +0 -933
  546. package/dist/hooks/validateArtifact.js.map +0 -1
  547. package/dist/registries/artifactRegistry.js.map +0 -1
  548. package/dist/registries/capabilityContract.js.map +0 -1
  549. package/dist/registries/packageRegistry.js.map +0 -1
  550. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  551. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  552. package/dist/setup/codex.js +0 -1056
  553. package/dist/setup/codex.js.map +0 -1
  554. package/dist/setup/copilot.js +0 -227
  555. package/dist/setup/copilot.js.map +0 -1
  556. package/dist/setup/cursor.js +0 -127
  557. package/dist/setup/cursor.js.map +0 -1
  558. package/dist/setup/doctor.js +0 -1297
  559. package/dist/setup/doctor.js.map +0 -1
  560. package/dist/setup/smokeChecks.js.map +0 -1
  561. package/dist/state/installRoot.js.map +0 -1
  562. package/dist/state/progressCommit.js +0 -289
  563. package/dist/state/progressCommit.js.map +0 -1
  564. package/dist/state/startupAnalysis.js.map +0 -1
  565. package/dist/upgrade/appModel.js.map +0 -1
  566. package/dist/upgrade/channels.js.map +0 -1
  567. package/dist/upgrade/compatibility.js.map +0 -1
  568. package/dist/upgrade/doctor.js.map +0 -1
  569. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  570. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  571. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  572. package/dist/upgrade/projectIntegration.js.map +0 -1
  573. package/dist/upgrade/runtimeMigration.js.map +0 -1
  574. package/dist/upgrade/upgradeCommands.js.map +0 -1
  575. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  576. package/dist/upgrade/versionResolution.js.map +0 -1
  577. package/dist/validate/appHomeContract.js.map +0 -1
  578. package/dist/validate/capability.js.map +0 -1
  579. package/dist/validate/crossCapability.js.map +0 -1
  580. package/dist/validate/lifecycleAdapters.js +0 -772
  581. package/dist/validate/lifecycleAdapters.js.map +0 -1
  582. package/dist/validate/selfAudit.js.map +0 -1
  583. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  584. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  585. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,22 @@
1
+ import os from "node:os";
2
+ import { formatResolvedAppHome } from "../../state/installRoot.js";
3
+ import { expanduser } from "../../core/paths.js";
4
+ export function cmdAppHome(args, io = {}) {
5
+ const out = io.out ?? ((t) => process.stdout.write(t));
6
+ const resolvedHome = args.home ? expanduser(args.home) : os.homedir();
7
+ let env = process.env;
8
+ if (args.home) {
9
+ env = { ...process.env, HOME: resolvedHome };
10
+ delete env.XDG_DATA_HOME;
11
+ delete env.APPDATA;
12
+ delete env.AGENTERA_HOME;
13
+ delete env.AGENTERA_DEFAULT_INSTALL_ROOT;
14
+ }
15
+ const output = formatResolvedAppHome(args.installRoot, {
16
+ env,
17
+ home: resolvedHome,
18
+ format: args.format,
19
+ });
20
+ out(output + "\n");
21
+ return 0;
22
+ }
@@ -1,19 +1,13 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { resolveSourceRoot } from "../../core/sourceRoot.js";
4
1
  import { emitStructured } from "../structured.js";
2
+ import { preCutoverCommand } from "../preCutoverCommand.js";
5
3
  export const CAPABILITY_ROUTING_NAMES = [
6
- "visionera", "resonera", "inspirera", "planera", "realisera",
7
- "optimera", "inspektera", "dokumentera", "profilera", "visualisera", "orkestrera",
4
+ "vision", "discuss", "research", "plan", "build",
5
+ "optimize", "audit", "document", "profile", "design", "orchestrate",
8
6
  ];
9
- const PRIME_CAPABILITY_CONTEXT_COMMAND = "agentera prime --context {capability} --format json";
7
+ const PRIME_CAPABILITY_CONTEXT_COMMAND = preCutoverCommand("prime --context {capability} --format json");
10
8
  export function cmdCapability(capability, args, io) {
11
9
  const out = io.out ?? ((t) => process.stdout.write(t));
12
- const sourceRoot = resolveSourceRoot();
13
- const instructions = path.join(sourceRoot, "skills", "agentera", "capabilities", capability, "instructions.md");
14
- const instructionsPath = fs.existsSync(instructions)
15
- ? path.relative(sourceRoot, instructions)
16
- : `skills/agentera/capabilities/${capability}/instructions.md`;
10
+ const instructionsPath = `packages/cli/src/capabilities/${capability}/instructions.ts`;
17
11
  const startupContext = PRIME_CAPABILITY_CONTEXT_COMMAND.replace("{capability}", capability);
18
12
  const payload = {
19
13
  command: capability,
@@ -41,4 +35,3 @@ export function cmdCapability(capability, args, io) {
41
35
  }
42
36
  return 0;
43
37
  }
44
- //# sourceMappingURL=capability.js.map
@@ -1,6 +1,7 @@
1
1
  import { resolvePath } from "../../core/paths.js";
2
- import { runCompaction } from "../../hooks/compaction.js";
2
+ import { runCompaction } from "../../hooks/compaction/index.js";
3
3
  import { emitStructured } from "../structured.js";
4
+ import { boundStructuredProjection } from "../../state/projectionPolicy.js";
4
5
  function pyStr(value) {
5
6
  if (value === null || value === undefined)
6
7
  return "None";
@@ -21,34 +22,49 @@ function compactionOperationPayload(op) {
21
22
  archive_count: status.archive_count,
22
23
  total_count: status.total_count,
23
24
  over_limit_count: status.over_limit_count,
25
+ ...(status.pending_summarization_count !== undefined
26
+ ? { pending_summarization_count: status.pending_summarization_count }
27
+ : {}),
28
+ ...(status.projection_state ? { projection_state: status.projection_state } : {}),
24
29
  protected_overflow_count: status.protected_overflow_count ?? 0,
25
30
  mode: op.mode,
26
31
  action: op.action,
27
32
  changed: op.changed,
28
33
  message: op.message,
29
34
  reason: status.reason,
35
+ ...(status.projection_recovery ? { recovery: status.projection_recovery } : {}),
30
36
  };
31
37
  if (op.result !== null) {
38
+ const recovery = op.result.recovery;
32
39
  payload.result = {
33
40
  active_before: op.result.full_before,
34
41
  archive_before: op.result.oneline_before,
35
42
  active_after: op.result.full_after,
36
43
  archive_after: op.result.oneline_after,
37
44
  dropped: op.result.dropped,
45
+ omitted_count: op.result.omitted_count ?? 0,
46
+ ...(op.result.omission_reason ? { omission_reason: op.result.omission_reason } : {}),
38
47
  changed: op.result.changed,
48
+ ...(recovery ? { recovery } : {}),
39
49
  };
40
50
  }
41
51
  return payload;
42
52
  }
43
53
  function compactionGuidance(mode, operations) {
44
54
  const over = operations.filter((op) => op.action === "over_limit" || op.action === "pending_fix");
55
+ const projections = operations.filter((op) => op.action === "projection" || op.action === "pending_projection");
56
+ const formatting = operations.filter((op) => op.action === "formatting" || op.action === "pending_formatting");
45
57
  const protectedOps = operations.filter((op) => op.action === "protected_overflow");
46
58
  const errors = operations.filter((op) => op.action === "error");
47
- const checkCommand = "npx -y agentera compact --mode check --format json";
48
- const fixCommand = "npx -y agentera compact --mode fix --format json";
59
+ const refused = operations.filter((op) => op.action === "refused");
60
+ const checkCommand = "npx -y agentera check compact --mode check --format json";
61
+ const fixCommand = "npx -y agentera check compact --mode fix --format json";
49
62
  if (errors.length > 0) {
50
63
  return `Inspect the reported errors, repair invalid artifacts, then rerun \`${checkCommand}\`.`;
51
64
  }
65
+ if (refused.length > 0) {
66
+ return "Projection changes were safely refused until each full entry has a verified numbered archive; inspect recovery metadata and retry after recovery.";
67
+ }
52
68
  if (protectedOps.length > 0) {
53
69
  const artifacts = protectedOps.map((op) => op.status.artifact).join(", ");
54
70
  return (`Protected-overflow review pressure blocks compaction for: ${artifacts}. ` +
@@ -61,23 +77,36 @@ function compactionGuidance(mode, operations) {
61
77
  if (mode === "fix" && over.length > 0) {
62
78
  return "Some artifacts remain over limit; inspect skipped or unsupported artifacts before manual remediation.";
63
79
  }
64
- return "No repair needed. Compactable artifacts are within uniform_10_40_50 limits.";
80
+ if (formatting.length > 0) {
81
+ const artifacts = formatting.map((op) => op.status.artifact).join(", ");
82
+ return mode === "check"
83
+ ? `Summary formatting is pending for: ${artifacts}. Safe fix: \`${fixCommand}\`.`
84
+ : `Summary formatting remains pending for: ${artifacts}; inspect the artifact diagnostics.`;
85
+ }
86
+ if (projections.length > 0) {
87
+ return "Projection defaults are bounded; numbered archive records remain complete and authoritative.";
88
+ }
89
+ return "No repair needed. Compactable artifacts are within the configured projection defaults.";
65
90
  }
66
91
  function compactionSummary(mode, operations) {
67
92
  const counts = {};
68
93
  for (const op of operations)
69
94
  counts[op.action] = (counts[op.action] ?? 0) + 1;
70
95
  const overLimit = operations.filter((op) => op.action === "over_limit" || op.action === "pending_fix").length;
96
+ const projections = operations.filter((op) => op.action === "projection" || op.action === "pending_projection").length;
97
+ const formatting = operations.filter((op) => op.action === "formatting" || op.action === "pending_formatting").length;
71
98
  const protectedOverflow = operations.filter((op) => op.action === "protected_overflow").length;
72
99
  const errors = operations.filter((op) => op.action === "error").length;
73
100
  const changed = operations.filter((op) => op.changed).length;
74
- const status = errors || protectedOverflow || (mode === "check" && overLimit) ? "fail" : "pass";
101
+ const status = errors || (mode === "check" && (overLimit || formatting)) ? "fail" : "pass";
75
102
  return {
76
103
  status,
77
104
  mode,
78
105
  artifact_count: operations.length,
79
106
  over_limit_count: overLimit,
107
+ formatting_count: formatting,
80
108
  protected_overflow_count: protectedOverflow,
109
+ projection_count: projections,
81
110
  error_count: errors,
82
111
  changed_count: changed,
83
112
  action_counts: counts,
@@ -87,9 +116,8 @@ function compactionSummary(mode, operations) {
87
116
  function compactionExitCode(mode, operations) {
88
117
  if (operations.some((op) => op.action === "error"))
89
118
  return 2;
90
- if (operations.some((op) => op.action === "protected_overflow"))
91
- return 1;
92
- if (mode === "check" && operations.some((op) => op.action === "over_limit"))
119
+ if (mode === "check" &&
120
+ operations.some((op) => op.action === "over_limit" || op.action === "formatting"))
93
121
  return 1;
94
122
  return 0;
95
123
  }
@@ -107,13 +135,14 @@ function emitCompactionPayload(payload, mode, format, out) {
107
135
  const summary = payload.summary;
108
136
  const project = payload.project;
109
137
  if (format === "json") {
110
- emitStructured(payload, "json", out);
138
+ emitStructured(boundStructuredProjection(payload, "compact", "json"), "json", out);
111
139
  return;
112
140
  }
113
141
  out(`status=${summary.status} | mode=${mode} | project=${project}\n`);
114
142
  out("counts=" +
115
143
  `artifacts:${summary.artifact_count} ` +
116
144
  `over_limit:${summary.over_limit_count} ` +
145
+ `formatting:${summary.formatting_count} ` +
117
146
  `protected_overflow:${summary.protected_overflow_count} ` +
118
147
  `errors:${summary.error_count} ` +
119
148
  `changed:${summary.changed_count}\n`);
@@ -122,6 +151,7 @@ function emitCompactionPayload(payload, mode, format, out) {
122
151
  `classification=${item.classification} | path=${item.path} | ` +
123
152
  `active=${pyStr(item.active_count)} | archive=${pyStr(item.archive_count)} | ` +
124
153
  `total=${pyStr(item.total_count)} | over=${pyStr(item.over_limit_count)} | ` +
154
+ `pending_summarization=${pyStr(item.pending_summarization_count)} | ` +
125
155
  `protected_overflow=${item.protected_overflow_count} | ` +
126
156
  `message=${item.message}\n`);
127
157
  }
@@ -132,7 +162,7 @@ export function cmdCompact(args, io = {}) {
132
162
  const mode = args.mode ?? "check";
133
163
  const project = resolvePath(args.project ?? process.cwd());
134
164
  const operations = runCompaction(project, mode);
135
- const payload = compactionPayload("compact", project, mode, operations);
165
+ const payload = compactionPayload("check compact", project, mode, operations);
136
166
  emitCompactionPayload(payload, mode, args.format ?? "text", out);
137
167
  return compactionExitCode(mode, operations);
138
168
  }
@@ -140,9 +170,7 @@ export function cmdGate(args, io = {}) {
140
170
  const out = io.out ?? ((t) => process.stdout.write(t));
141
171
  const project = resolvePath(args.project ?? process.cwd());
142
172
  const operations = runCompaction(project, "check");
143
- const payload = compactionPayload("gate", project, "check", operations);
144
- payload.gate = "compaction";
173
+ const payload = compactionPayload("check compact", project, "check", operations);
145
174
  emitCompactionPayload(payload, "check", args.format ?? "text", out);
146
175
  return compactionExitCode("check", operations);
147
176
  }
148
- //# sourceMappingURL=compact.js.map
@@ -1,8 +1,15 @@
1
1
  import os from "node:os";
2
2
  import { expanduser, resolvePath } from "../../core/paths.js";
3
+ import { pyJsonIndentSorted } from "../../core/pyjson.js";
3
4
  import { resolveDoctorInstallRoot, resolveSourceRootStrict, } from "../../upgrade/appModel.js";
4
5
  import { runNpmSmokeChecks } from "../../setup/smokeChecks.js";
5
- import { APP_MANUAL_REVIEW_NEEDED, APP_MIGRATION_NEEDED, APP_OUTDATED, APP_REPAIR_NEEDED, APP_UP_TO_DATE, buildDoctorStatus, EXPECTED_STATE_COMMANDS, publicDoctorStatus, } from "../../upgrade/doctor.js";
6
+ import { APP_MANUAL_REVIEW_NEEDED, APP_MIGRATION_NEEDED, APP_OUTDATED, APP_REPAIR_NEEDED, APP_UP_TO_DATE, appLifecycleActionNoun, buildDoctorStatus, EXPECTED_STATE_COMMANDS, doctorParityJsonEnvelope, } from "../../upgrade/doctor.js";
7
+ import { classifyInstall } from "../../upgrade/compatibility.js";
8
+ import { prependNextMajorDoctorSection, resolveNextMajorDoctorLines, } from "../../upgrade/nextMajorDoctor.js";
9
+ import { diagnoseCanonicalSkill } from "../../setup/sharedSkill.js";
10
+ import { diagnoseRetiredResources } from "../../upgrade/retiredResourceDiagnostics.js";
11
+ import { commandText } from "../../upgrade/upgradeCommands.js";
12
+ import { inspectTodoReconciliationState } from "../../state/todoReconciliationInspection.js";
6
13
  const PLAIN_STATUS = {
7
14
  pending: "ready to fix",
8
15
  applied: "fixed",
@@ -16,40 +23,40 @@ const PLAIN_STATUS = {
16
23
  [APP_MIGRATION_NEEDED]: "needs migration",
17
24
  [APP_MANUAL_REVIEW_NEEDED]: "needs manual review",
18
25
  };
19
- /** Commands the TS dispatcher exposes (used by the in-process CLI probe). */
20
- const DISPATCHER_COMMANDS = new Set([
21
- "prime", "hej", "schema", "describe", "state", "query", "check", "lint", "backfill",
22
- "compact", "gate", "validate", "decisions", "health", "todo", "plan", "progress",
23
- "docs", "objective", "experiments",
24
- ]);
25
26
  function plainStatus(value) {
26
27
  return PLAIN_STATUS[value] ?? value.replace(/_/g, " ").replace(/-/g, " ");
27
28
  }
28
- function doctorActionNoun(status) {
29
- if (status.status === APP_OUTDATED)
30
- return "update";
31
- if (status.status === APP_MIGRATION_NEEDED)
32
- return "migration";
33
- return "repair";
29
+ function previewCommand(resource, context) {
30
+ return commandText([
31
+ "npx",
32
+ "-y",
33
+ "agentera@next",
34
+ "doctor",
35
+ "--home",
36
+ context.home,
37
+ "--project",
38
+ context.project,
39
+ "--install-root",
40
+ context.installRoot,
41
+ "--retired-resource",
42
+ resource.id,
43
+ "--format",
44
+ "json",
45
+ ]);
34
46
  }
35
- /** In-process probe: confirm the TS CLI exposes the expected state commands. */
36
- function inProcessProbe(args) {
37
- const missing = args.expectedCommands.filter((name) => !DISPATCHER_COMMANDS.has(name));
38
- const command = ["npx", "-y", "agentera", "--help"];
47
+ function doctorRetiredResources(diagnosis, context) {
39
48
  return {
40
- ok: missing.length === 0,
41
- command,
42
- returnCode: 0,
43
- stdoutTail: [],
44
- stderrTail: [],
45
- missingCommands: missing,
46
- message: missing.length === 0
47
- ? "CLI exposes expected state commands"
48
- : "CLI is missing expected state commands",
49
+ ...diagnosis,
50
+ resources: diagnosis.resources.map((resource) => ({
51
+ id: resource.id,
52
+ status: resource.status,
53
+ evidence: resource.evidence,
54
+ preview_command: previewCommand(resource, context),
55
+ })),
49
56
  };
50
57
  }
51
- export function renderDoctorStatus(status) {
52
- const actionNoun = doctorActionNoun(status);
58
+ export function renderDoctorStatus(status, retiredResources) {
59
+ const actionNoun = appLifecycleActionNoun(String(status.status));
53
60
  const lines = [
54
61
  "Agentera doctor",
55
62
  `status: ${plainStatus(status.status)}`,
@@ -66,6 +73,31 @@ export function renderDoctorStatus(status) {
66
73
  if (signal.missingCommands && signal.missingCommands.length > 0) {
67
74
  lines.push(` Missing command: ${signal.missingCommands.join(", ")}`);
68
75
  }
76
+ if (signal.kind === "todo_reconciliation") {
77
+ if (signal.reconciliationState)
78
+ lines.push(` Reconciliation state: ${signal.reconciliationState}`);
79
+ if (signal.reconciliationCounts) {
80
+ const counts = ["matched", "converted", "retained", "duplicate", "stale", "conflicting"]
81
+ .filter((name) => name in signal.reconciliationCounts)
82
+ .map((name) => `${name}=${signal.reconciliationCounts[name]}`)
83
+ .join(" | ");
84
+ lines.push(` Counts: ${counts} | omitted=${String(signal.reconciliationOmittedCount ?? 0)}`);
85
+ }
86
+ if (signal.previewCommand)
87
+ lines.push(` Preview: ${signal.previewCommand}`);
88
+ if (signal.applyCommand)
89
+ lines.push(` Apply: ${signal.applyCommand}`);
90
+ }
91
+ }
92
+ }
93
+ const resources = Array.isArray(retiredResources?.resources) ? retiredResources.resources : [];
94
+ const todoReconciliation = status.signals?.some((signal) => signal.kind === "todo_reconciliation") ?? false;
95
+ if (resources.length > 0) {
96
+ lines.push("");
97
+ lines.push("Retired native resources:");
98
+ for (const resource of resources) {
99
+ lines.push(` - action required: ${String(resource.id)}`);
100
+ lines.push(` Preview: ${String(resource.preview_command)}`);
69
101
  }
70
102
  }
71
103
  if (status.status === APP_UP_TO_DATE) {
@@ -77,7 +109,20 @@ export function renderDoctorStatus(status) {
77
109
  lines.push("Next:");
78
110
  lines.push(` 1. Preview the ${actionNoun}: ${status.dryRunCommand}`);
79
111
  lines.push(` 2. If the preview looks right, apply the ${actionNoun}: ${status.applyCommand}`);
80
- lines.push(` 3. Then retry Agentera: ${status.retryCommand}`);
112
+ if (status.retryCommand) {
113
+ lines.push(` 3. Then retry Agentera: ${status.retryCommand}`);
114
+ }
115
+ else {
116
+ lines.push(" 3. Then retry Agentera once a retry command is available.");
117
+ }
118
+ }
119
+ else if (todoReconciliation) {
120
+ lines.push("");
121
+ lines.push("Next: run the reported TODO reconciliation preview, review its bounded effect, then use its exact apply_command.");
122
+ }
123
+ else if (resources.length > 0) {
124
+ lines.push("");
125
+ lines.push("Next: review each read-only retirement preview before any explicit cleanup.");
81
126
  }
82
127
  else {
83
128
  lines.push("");
@@ -97,67 +142,6 @@ function renderDoctorSmoke(smoke) {
97
142
  }
98
143
  return lines.join("\n");
99
144
  }
100
- export function pyJsonIndentSorted(value) {
101
- return jsonIndent(value, 0);
102
- }
103
- function jsonAscii(str) {
104
- let out = '"';
105
- for (const ch of str) {
106
- const cp = ch.codePointAt(0);
107
- if (ch === '"')
108
- out += '\\"';
109
- else if (ch === "\\")
110
- out += "\\\\";
111
- else if (cp === 0x08)
112
- out += "\\b";
113
- else if (cp === 0x09)
114
- out += "\\t";
115
- else if (cp === 0x0a)
116
- out += "\\n";
117
- else if (cp === 0x0c)
118
- out += "\\f";
119
- else if (cp === 0x0d)
120
- out += "\\r";
121
- else if (cp < 0x20)
122
- out += "\\u" + cp.toString(16).padStart(4, "0");
123
- else if (cp < 0x80)
124
- out += ch;
125
- else if (cp > 0xffff) {
126
- const v = cp - 0x10000;
127
- out += "\\u" + (0xd800 + (v >> 10)).toString(16).padStart(4, "0");
128
- out += "\\u" + (0xdc00 + (v & 0x3ff)).toString(16).padStart(4, "0");
129
- }
130
- else
131
- out += "\\u" + cp.toString(16).padStart(4, "0");
132
- }
133
- return out + '"';
134
- }
135
- function jsonIndent(value, level) {
136
- const pad = " ".repeat(level);
137
- const padIn = " ".repeat(level + 1);
138
- if (value === null || value === undefined)
139
- return "null";
140
- if (value === true)
141
- return "true";
142
- if (value === false)
143
- return "false";
144
- if (typeof value === "number")
145
- return String(value);
146
- if (typeof value === "string")
147
- return jsonAscii(value);
148
- if (Array.isArray(value)) {
149
- if (value.length === 0)
150
- return "[]";
151
- return "[\n" + value.map((v) => padIn + jsonIndent(v, level + 1)).join(",\n") + "\n" + pad + "]";
152
- }
153
- if (typeof value === "object") {
154
- const keys = Object.keys(value).sort();
155
- if (keys.length === 0)
156
- return "{}";
157
- return "{\n" + keys.map((k) => padIn + jsonAscii(k) + ": " + jsonIndent(value[k], level + 1)).join(",\n") + "\n" + pad + "}";
158
- }
159
- return "null";
160
- }
161
145
  export function cmdDoctor(args, io = {}) {
162
146
  const out = io.out ?? ((t) => process.stdout.write(t));
163
147
  const err = io.err ?? ((t) => process.stderr.write(t));
@@ -170,18 +154,52 @@ export function cmdDoctor(args, io = {}) {
170
154
  return 2;
171
155
  }
172
156
  const home = resolvePath(expanduser(args.home ?? os.homedir()));
157
+ const project = resolvePath(expanduser(args.project ?? process.cwd()));
173
158
  const [installRoot, rootSource] = resolveDoctorInstallRoot(args.installRoot ?? null, { home, sourceRoot });
174
159
  const expectedCommands = args.expectCommand && args.expectCommand.length > 0 ? args.expectCommand : [...EXPECTED_STATE_COMMANDS];
175
160
  const status = buildDoctorStatus(installRoot, {
176
161
  rootSource,
177
162
  sourceRoot,
178
163
  home,
179
- project: resolvePath(expanduser(args.project ?? process.cwd())),
164
+ project,
180
165
  expectedVersion: args.expectedVersion ?? null,
181
166
  expectedCommands,
182
- probeCli: true,
183
- probeRunner: inProcessProbe,
184
167
  });
168
+ const todoReconciliation = inspectTodoReconciliationState(project, sourceRoot);
169
+ if (todoReconciliation?.status === "action_required") {
170
+ status.signals.push({
171
+ status: APP_MANUAL_REVIEW_NEEDED,
172
+ kind: "todo_reconciliation",
173
+ message: `action-required: TODO reconciliation is ${todoReconciliation.state === "inactive" ? "inactive" : todoReconciliation.state === "unsafe_active" ? "unsafe active" : "in an invalid lifecycle state"}`,
174
+ reconciliationState: todoReconciliation.state,
175
+ reconciliationCounts: todoReconciliation.counts,
176
+ reconciliationOmittedCount: todoReconciliation.omitted_count,
177
+ previewCommand: todoReconciliation.preview_command,
178
+ applyCommand: todoReconciliation.apply_command,
179
+ recoveryCommand: todoReconciliation.recovery_command,
180
+ });
181
+ if (status.status === APP_UP_TO_DATE)
182
+ status.status = APP_MANUAL_REVIEW_NEEDED;
183
+ }
184
+ const retiredDiagnosis = diagnoseRetiredResources({
185
+ home,
186
+ project,
187
+ installRoot,
188
+ resourceId: args.retiredResource ?? null,
189
+ });
190
+ const retiredResources = doctorRetiredResources(retiredDiagnosis, { home, project, installRoot });
191
+ if (retiredDiagnosis.status === "action_required") {
192
+ status.signals.push({
193
+ status: APP_MANUAL_REVIEW_NEEDED,
194
+ kind: "retired_native_resources",
195
+ message: "retired native resource candidates need ownership review before cleanup",
196
+ resourceIds: retiredDiagnosis.resources.map((resource) => resource.id),
197
+ omittedResourceCount: retiredDiagnosis.omittedResourceCount,
198
+ });
199
+ if (status.status === APP_UP_TO_DATE)
200
+ status.status = APP_MANUAL_REVIEW_NEEDED;
201
+ }
202
+ const sharedSkill = diagnoseCanonicalSkill(home);
185
203
  let smokeReport = null;
186
204
  if (args.smoke) {
187
205
  smokeReport = runNpmSmokeChecks(sourceRoot, process.env, {
@@ -189,19 +207,31 @@ export function cmdDoctor(args, io = {}) {
189
207
  });
190
208
  }
191
209
  if ((args.format ?? "text") === "json") {
192
- const payload = publicDoctorStatus(status);
210
+ const payload = doctorParityJsonEnvelope(status);
211
+ payload.shared_skill = sharedSkill;
212
+ payload.retired_resources = retiredResources;
193
213
  if (smokeReport)
194
214
  payload.smoke = smokeReport;
195
215
  out(pyJsonIndentSorted(payload) + "\n");
196
216
  }
197
217
  else {
198
- out(renderDoctorStatus(status) + (smokeReport ? renderDoctorSmoke(smokeReport) : "") + "\n");
218
+ const install = classifyInstall({ appHome: installRoot, sourceRoot });
219
+ const nextMajorLines = resolveNextMajorDoctorLines({
220
+ sourceRoot,
221
+ home,
222
+ channel: status.updateChannel ?? null,
223
+ install,
224
+ env: process.env,
225
+ });
226
+ const body = prependNextMajorDoctorSection(renderDoctorStatus(status, retiredResources), nextMajorLines) +
227
+ `\nShared skill\n ${String(sharedSkill.status)}: ${String(sharedSkill.message)}\n path: ${String(sharedSkill.path)}\n` +
228
+ (smokeReport ? renderDoctorSmoke(smokeReport) : "");
229
+ out(body + "\n");
199
230
  }
200
231
  if (args.smoke) {
201
232
  const failCount = Number(smokeReport?.summary?.fail ?? 0);
202
233
  if (failCount > 0)
203
234
  return 1;
204
235
  }
205
- return status.status === APP_UP_TO_DATE ? 0 : 1;
236
+ return status.status === APP_UP_TO_DATE && sharedSkill.status === "pass" ? 0 : 1;
206
237
  }
207
- //# sourceMappingURL=doctor.js.map
@@ -0,0 +1,81 @@
1
+ import { resolvePath } from "../../core/paths.js";
2
+ import { resolveSourceRoot } from "../../core/sourceRoot.js";
3
+ import { emitStructured } from "../structured.js";
4
+ import { stateDurabilityContract } from "../../state/archiveDiscovery.js";
5
+ import { StateRetrievalFailure } from "../../state/directRetrieval.js";
6
+ import { inspectDurability, renderDurabilityText, } from "../../state/durability.js";
7
+ import { entityArtifactValues } from "../../state/entityStorage.js";
8
+ export function requestedDurabilityFormat(argv) {
9
+ for (let index = 0; index < argv.length; index += 1) {
10
+ if (argv[index] === "--format") {
11
+ const value = argv[index + 1];
12
+ if (value === "json" || value === "yaml")
13
+ return value;
14
+ }
15
+ if (argv[index].startsWith("--format=")) {
16
+ const value = argv[index].slice("--format=".length);
17
+ if (value === "json" || value === "yaml")
18
+ return value;
19
+ }
20
+ }
21
+ return "text";
22
+ }
23
+ export function validateDurabilityArgs(args, sourceRoot) {
24
+ const contract = stateDurabilityContract(sourceRoot);
25
+ const validArtifacts = entityArtifactValues(sourceRoot);
26
+ if (args.number !== undefined)
27
+ throw entityDurabilityFailure("entity mode rejects --number; use --artifact ARTIFACT --id ID", args.artifact, args.id ?? undefined, validArtifacts);
28
+ if (!args.artifact || !args.id)
29
+ throw entityDurabilityFailure("entity-mode durability requires --artifact ARTIFACT --id ID", args.artifact, args.id ?? undefined, validArtifacts);
30
+ if (!/^[a-z]{10}$/.test(args.id))
31
+ throw entityDurabilityFailure(`entity ID '${args.id}' must be ten lowercase letters`, args.artifact, args.id, validArtifacts);
32
+ if (args.artifact && !validArtifacts.includes(args.artifact)) {
33
+ throw entityDurabilityFailure(`unsupported durability artifact '${args.artifact}'`, args.artifact, args.id ?? undefined, validArtifacts);
34
+ }
35
+ if (args.limit !== undefined && (args.limit < 1 || args.limit > contract.maximumLimit)) {
36
+ throw entityDurabilityFailure(`argument --limit must be between 1 and ${contract.maximumLimit}`, args.artifact, args.id ?? undefined, validArtifacts);
37
+ }
38
+ }
39
+ export function entityDurabilityFailure(message, artifact, id, validValues) {
40
+ return new StateRetrievalFailure({
41
+ schemaVersion: "agentera.stateFailure.v1",
42
+ status: "fail",
43
+ error: {
44
+ class: "invalid_request",
45
+ message,
46
+ syntax: "agentera check durability --artifact ARTIFACT --id ID --format json",
47
+ example: "agentera check durability --artifact progress --id qjtrmnpvka --format json",
48
+ recovery: "Use one bare entity ID returned by the artifact list; no state was changed.",
49
+ ...(artifact ? { artifact } : {}),
50
+ ...(id ? { id } : {}),
51
+ ...(validValues ? { valid_values: validValues } : {}),
52
+ },
53
+ }, 2);
54
+ }
55
+ export function emitDurabilityFailure(failure, format, io) {
56
+ const out = io.out ?? ((text) => process.stdout.write(text));
57
+ if (format === "json" || format === "yaml")
58
+ emitStructured(failure.body, format, out);
59
+ else {
60
+ const details = failure.body.error;
61
+ out([
62
+ `Error: ${details.message}`,
63
+ `Class: ${details.class}`,
64
+ `Syntax: ${details.syntax}`,
65
+ `Example: ${details.example}`,
66
+ `Recovery: ${details.recovery}`,
67
+ ].join("\n") + "\n");
68
+ }
69
+ return failure.exitCode;
70
+ }
71
+ export function cmdDurability(args, io = {}) {
72
+ const output = io.out ?? ((text) => process.stdout.write(text));
73
+ const response = inspectDurability(resolvePath(args.project ?? process.cwd()), args, { sourceRoot: resolveSourceRoot() });
74
+ if (args.format === "json" || args.format === "yaml") {
75
+ emitStructured(response, args.format, output);
76
+ }
77
+ else {
78
+ renderDurabilityText(response, output);
79
+ }
80
+ return 0;
81
+ }