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
@@ -1,91 +1,38 @@
1
- import { expanduser, isFile, resolvePath } from "../core/paths.js";
1
+ import { resolvePath } from "../core/paths.js";
2
2
  import { isNpxBundleRoot } from "../core/sourceRoot.js";
3
- import { APP_MANUAL_REVIEW_NEEDED, APP_MIGRATION_NEEDED, APP_OUTDATED, APP_REPAIR_NEEDED, APP_UP_TO_DATE, buildDoctorStatus, } from "./doctor.js";
3
+ import { APP_MIGRATION_NEEDED, APP_MANUAL_REVIEW_NEEDED, APP_OUTDATED, APP_REPAIR_NEEDED, APP_UP_TO_DATE, } from "./doctor.js";
4
+ import { resolveNpxPlatformStatus } from "./npxPlatformStatus.js";
4
5
  import { classifyInstall, crossMajorBoundaryApplies } from "./compatibility.js";
5
6
  import { resolveInvokedUpdateChannel } from "./channels.js";
6
- import fs from "node:fs";
7
- import { detectV1ArtifactPairs, planRuntimeRewirePhase, } from "./migrateArtifactsV2ToV3.js";
8
- import { projectHasProjectLevelRuntimeHooks, textUsesPythonManagedEntrypoint, } from "./runtimeMigration.js";
9
- import { resolvePlatformAppHome } from "./appModel.js";
7
+ import { detectV1ArtifactPairs, planRuntimeRetirementPhase, } from "./migrateArtifactsV2ToV3.js";
8
+ import { projectHasProjectLevelRuntimeHooks, } from "./runtimeMigration.js";
9
+ import { isStableSuccessorAnnounced } from "./nextMajorDoctor.js";
10
10
  import { buildUpgradeCommands } from "./upgradeCommands.js";
11
- import { classifyUpgradeOutcome, shouldIncludeCrossMajorPlanItems, } from "./versionResolution.js";
12
- function migrationContext(args, channel) {
13
- const home = resolvePath(expanduser(args.home));
14
- const env = { ...(args.env ?? process.env), HOME: home };
15
- return {
16
- appHome: args.installRoot,
17
- project: resolvePath(args.project),
18
- home,
19
- sourceRoot: args.sourceRoot,
20
- channel: args.channel ?? channel.channel,
21
- env,
22
- };
11
+ import { classifyIntegrationScenario, integrationScenarioMessage, integrationExit, integrationPhase, } from "./projectIntegrationDecision.js";
12
+ import { classifyUpgradeOutcome, parseSemverMajor, resolveRunningVersion, shouldIncludeCrossMajorPlanItems, } from "./versionResolution.js";
13
+ const MAJOR_BOUNDARY_BLOCK_MESSAGE_PREFIX = "v3 successor line is not announced yet; v2 managed app files remain current on the";
14
+ function majorBoundaryBlockMessage(channelName) {
15
+ const label = channelName.trim() || "current";
16
+ return `${MAJOR_BOUNDARY_BLOCK_MESSAGE_PREFIX} ${label} channel`;
23
17
  }
24
- const RUNTIME_MIGRATION_ACTIONS = new Set([
25
- "rewire-runtime",
26
- "retire-hooks",
27
- "copy-plugin",
28
- "copy-agent",
29
- "copy-command",
30
- "link-skill",
31
- ]);
32
18
  function isPendingRuntimeMigrationItem(item) {
33
19
  if (item.status !== "pending" || item.action === "configure") {
34
20
  return false;
35
21
  }
36
- if (item.action === "retire-hooks") {
37
- return true;
38
- }
39
- if (item.action === "rewire-runtime") {
40
- if (!item.source) {
41
- return false;
42
- }
43
- try {
44
- return textUsesPythonManagedEntrypoint(fs.readFileSync(item.source, "utf8"));
45
- }
46
- catch {
47
- return false;
48
- }
49
- }
50
- return RUNTIME_MIGRATION_ACTIONS.has(item.action);
51
- }
52
- function isPythonManagedRewireItem(item) {
53
- if (item.action === "retire-hooks") {
54
- return item.status === "pending";
55
- }
56
- if (item.action !== "rewire-runtime" || item.status !== "pending" || !item.source) {
57
- return false;
58
- }
59
- try {
60
- return textUsesPythonManagedEntrypoint(fs.readFileSync(item.source, "utf8"));
61
- }
62
- catch {
63
- return false;
64
- }
22
+ return true;
65
23
  }
66
24
  function isGlobalStaleRuntimeItem(item, ctx) {
67
25
  const homeRoot = resolvePath(ctx.home);
68
26
  if (!item.source?.startsWith(homeRoot)) {
69
27
  return false;
70
28
  }
71
- if (item.action === "rewire-runtime" || item.action === "retire-hooks") {
29
+ if (item.action === "retire-hooks") {
72
30
  return true;
73
31
  }
74
- if (item.action === "copy-plugin" && item.target) {
75
- try {
76
- if (isFile(item.target)) {
77
- return textUsesPythonManagedEntrypoint(fs.readFileSync(item.target, "utf8"));
78
- }
79
- return item.source ? textUsesPythonManagedEntrypoint(fs.readFileSync(item.source, "utf8")) : false;
80
- }
81
- catch {
82
- return false;
83
- }
84
- }
85
32
  return false;
86
33
  }
87
- export function pendingRuntimeMigrationItems(ctx) {
88
- const phase = planRuntimeRewirePhase(ctx);
34
+ export function pendingRuntimeMigrationItems(ctx, resolvedChannel) {
35
+ const phase = planRuntimeRetirementPhase(ctx, resolvedChannel);
89
36
  const projectRoot = resolvePath(ctx.project);
90
37
  const hasProjectHooks = projectHasProjectLevelRuntimeHooks(ctx.project);
91
38
  return phase.items.filter((item) => {
@@ -98,11 +45,6 @@ export function pendingRuntimeMigrationItems(ctx) {
98
45
  return isGlobalStaleRuntimeItem(item, ctx);
99
46
  });
100
47
  }
101
- /** True when runtime hooks/config still need npm self-contained rewiring. */
102
- export function projectHasPendingRuntimeRewire(ctx) {
103
- const phase = planRuntimeRewirePhase(ctx);
104
- return phase.items.some((item) => isPythonManagedRewireItem(item));
105
- }
106
48
  function appNeedsUpgrade(bundleStatus) {
107
49
  return (bundleStatus === APP_OUTDATED ||
108
50
  bundleStatus === APP_REPAIR_NEEDED ||
@@ -114,27 +56,25 @@ function resolveIntegrationTargets(args) {
114
56
  installRoot: args.installRoot,
115
57
  bundleStatus: args.bundleStatus,
116
58
  crossMajorBoundary: args.crossMajorBoundary ?? false,
59
+ crossMajorBoundaryDetected: args.crossMajorBoundaryDetected ?? false,
117
60
  };
118
61
  }
119
- const platformRoot = resolvePlatformAppHome(args.home, args.env);
120
- const platformStatus = buildDoctorStatus(platformRoot, {
121
- rootSource: "default",
122
- sourceRoot: args.sourceRoot,
62
+ const { platformRoot, platformStatus } = resolveNpxPlatformStatus({
123
63
  home: args.home,
64
+ sourceRoot: args.sourceRoot,
124
65
  project: args.project,
125
- expectedCommands: ["prime"],
126
- probeCli: false,
127
- skipNpxBundleShortCircuit: true,
128
66
  env: args.env,
129
67
  });
130
68
  return {
131
69
  installRoot: platformRoot,
132
70
  bundleStatus: args.bundleStatus,
71
+ platformBundleStatus: platformStatus.status,
133
72
  crossMajorBoundary: Boolean(platformStatus.crossMajorBoundary),
73
+ crossMajorBoundaryDetected: Boolean(platformStatus.crossMajorBoundaryDetected),
134
74
  };
135
75
  }
136
76
  function commandChannel(args, channel, crossMajor, upgradeOutcome) {
137
- if (crossMajor && !shouldIncludeCrossMajorPlanItems(channel, upgradeOutcome)) {
77
+ if (crossMajor && upgradeOutcome && !shouldIncludeCrossMajorPlanItems(channel, upgradeOutcome)) {
138
78
  return resolveInvokedUpdateChannel({
139
79
  channel: "development",
140
80
  env: args.env,
@@ -144,131 +84,149 @@ function commandChannel(args, channel, crossMajor, upgradeOutcome) {
144
84
  }
145
85
  return channel;
146
86
  }
87
+ function appPhaseBlockers(bundleStatus, majorBoundaryBlock) {
88
+ const blockers = [];
89
+ if (bundleStatus === APP_MANUAL_REVIEW_NEEDED) {
90
+ blockers.push("app: manual review is required before choosing an app write path");
91
+ }
92
+ if (majorBoundaryBlock)
93
+ blockers.push(`app: ${majorBoundaryBlock}`);
94
+ return blockers;
95
+ }
96
+ function retryGuidance(exit) {
97
+ switch (exit.meaning) {
98
+ case "no_changes_needed":
99
+ return "No retry is needed; project integration is converged.";
100
+ case "preview_required":
101
+ return "Apply the approved preview, then retry Agentera to re-observe project integration.";
102
+ case "preview_and_blockers":
103
+ return "Resolve the reported blockers, apply the approved preview, then retry Agentera.";
104
+ case "manual_review_required":
105
+ return "Complete the manual review, then retry Agentera to re-observe project integration.";
106
+ }
107
+ }
147
108
  export function summarizeProjectIntegration(args) {
148
- const channel = resolveInvokedUpdateChannel({
109
+ const channel = args.resolvedChannel ?? resolveInvokedUpdateChannel({
149
110
  channel: args.channel ?? null,
150
111
  env: args.env,
151
112
  home: args.home,
152
113
  sourceRoot: args.sourceRoot,
153
114
  });
154
115
  const integrationTargets = resolveIntegrationTargets(args);
155
- const install = classifyInstall({ appHome: integrationTargets.installRoot, sourceRoot: args.sourceRoot });
156
- const crossMajor = args.crossMajorBoundary ??
157
- integrationTargets.crossMajorBoundary ??
116
+ const install = args.installClassification ?? classifyInstall({ appHome: integrationTargets.installRoot, sourceRoot: args.sourceRoot });
117
+ const crossMajorDetected = args.crossMajorBoundaryDetected ??
158
118
  crossMajorBoundaryApplies(install, args.sourceRoot);
159
- const upgradeOutcome = classifyUpgradeOutcome({
119
+ const successorAnnounced = args.successorAnnounced ?? isStableSuccessorAnnounced(args.sourceRoot, "stable");
120
+ const crossMajor = crossMajorDetected && successorAnnounced;
121
+ const runningMajor = crossMajorDetected
122
+ ? parseSemverMajor(resolveRunningVersion({
123
+ appHome: integrationTargets.installRoot,
124
+ sourceRoot: args.sourceRoot,
125
+ install,
126
+ })) ?? 0
127
+ : 0;
128
+ const majorBoundaryBlock = crossMajorDetected && !successorAnnounced && runningMajor > 0 && runningMajor < 3
129
+ ? majorBoundaryBlockMessage(channel.channel)
130
+ : null;
131
+ const upgradeOutcome = crossMajor
132
+ ? classifyUpgradeOutcome({
133
+ appHome: integrationTargets.installRoot,
134
+ sourceRoot: args.sourceRoot,
135
+ install,
136
+ channel,
137
+ })
138
+ : null;
139
+ const v1Artifacts = args.precomputedV1Artifacts ?? detectV1ArtifactPairs(args.project);
140
+ const pendingProjectMigration = pendingRuntimeMigrationItems({
160
141
  appHome: integrationTargets.installRoot,
142
+ project: args.project,
143
+ home: args.home,
144
+ force: false,
161
145
  sourceRoot: args.sourceRoot,
162
- install,
163
- channel,
146
+ channel: args.channel ?? null,
147
+ env: args.env,
148
+ }, channel);
149
+ const crossMajorMigration = crossMajor && upgradeOutcome !== null && shouldIncludeCrossMajorPlanItems(channel, upgradeOutcome);
150
+ const isNpx = isNpxBundleRoot(args.sourceRoot);
151
+ const classificationBundleStatus = isNpx && integrationTargets.platformBundleStatus !== undefined
152
+ ? integrationTargets.platformBundleStatus
153
+ : integrationTargets.bundleStatus;
154
+ const needsAppUpgrade = isNpx && integrationTargets.bundleStatus === APP_UP_TO_DATE
155
+ ? appNeedsUpgrade(integrationTargets.platformBundleStatus ?? APP_UP_TO_DATE)
156
+ : appNeedsUpgrade(classificationBundleStatus);
157
+ const appPending = v1Artifacts.length +
158
+ pendingProjectMigration.length +
159
+ (needsAppUpgrade ? 1 : 0) +
160
+ (crossMajorMigration ? 1 : 0);
161
+ const appBlockers = appPhaseBlockers(classificationBundleStatus, majorBoundaryBlock);
162
+ const appPhase = integrationPhase({
163
+ total: appPending + appBlockers.length,
164
+ pending: appPending,
165
+ blocked: appBlockers.length,
166
+ blockers: appBlockers,
164
167
  });
165
- const ctx = migrationContext({ ...args, installRoot: integrationTargets.installRoot }, channel);
166
- const v1Artifacts = detectV1ArtifactPairs(args.project);
167
- const pending = pendingRuntimeMigrationItems(ctx);
168
- const pendingRuntimes = [
169
- ...new Set(pending.map((item) => item.runtime).filter((runtime) => Boolean(runtime))),
170
- ];
171
- const crossMajorMigration = crossMajor && shouldIncludeCrossMajorPlanItems(channel, upgradeOutcome);
172
- const crossMajorNeedsPreview = crossMajor && !crossMajorMigration;
173
- const needsAppUpgrade = isNpxBundleRoot(args.sourceRoot) && args.bundleStatus === APP_UP_TO_DATE
174
- ? false
175
- : appNeedsUpgrade(integrationTargets.bundleStatus);
176
- const artifactsOnly = v1Artifacts.length > 0 && !crossMajorMigration && !crossMajorNeedsPreview && !needsAppUpgrade;
177
- const runtimeOnly = pending.length > 0 &&
178
- !artifactsOnly &&
179
- !crossMajorMigration &&
180
- !crossMajorNeedsPreview &&
181
- !needsAppUpgrade;
182
- if (integrationTargets.bundleStatus === APP_MANUAL_REVIEW_NEEDED &&
183
- pending.length === 0 &&
184
- v1Artifacts.length === 0 &&
185
- !crossMajor) {
186
- return {
187
- recommendation: "stay",
188
- message: "Agentera needs manual review for your app directory before this project can be upgraded safely.",
189
- pending_runtime: 0,
190
- pending_runtimes: [],
191
- pending_artifacts: 0,
192
- dry_run_command: null,
193
- apply_command: null,
194
- update_channel: channel.channel,
195
- };
196
- }
197
- if (!artifactsOnly &&
198
- !runtimeOnly &&
199
- !crossMajorMigration &&
200
- !crossMajorNeedsPreview &&
201
- !needsAppUpgrade &&
202
- integrationTargets.bundleStatus === APP_UP_TO_DATE &&
203
- pending.length === 0 &&
204
- v1Artifacts.length === 0) {
205
- return {
206
- recommendation: "stay",
207
- message: "This project matches your current Agentera install; no upgrade is needed.",
208
- pending_runtime: 0,
209
- pending_runtimes: [],
210
- pending_artifacts: 0,
211
- dry_run_command: null,
212
- apply_command: null,
213
- update_channel: channel.channel,
214
- };
215
- }
168
+ const hasUpgradeWork = appPending > 0;
169
+ const hasBlockers = appBlockers.length > 0;
170
+ const aggregateStatus = hasUpgradeWork
171
+ ? "upgrade"
172
+ : hasBlockers
173
+ ? "blocked"
174
+ : "stay";
175
+ const scenarioFacts = {
176
+ bundleStatus: classificationBundleStatus,
177
+ pendingArtifactCount: v1Artifacts.length + pendingProjectMigration.length,
178
+ crossMajor,
179
+ crossMajorMigration,
180
+ crossMajorNeedsPreview: Boolean(majorBoundaryBlock) || (crossMajor && !crossMajorMigration),
181
+ needsAppUpgrade,
182
+ };
183
+ const scenario = classifyIntegrationScenario(scenarioFacts);
184
+ const guidanceMessage = appBlockers.length > 0
185
+ ? appBlockers.join("; ")
186
+ : hasUpgradeWork
187
+ ? "Preview the app or project-state upgrade, then apply the approved command."
188
+ : "No app or project-state upgrade is required.";
189
+ const exit = integrationExit(hasUpgradeWork, appBlockers.length > 0);
216
190
  const cmdsChannel = commandChannel(args, channel, crossMajor, upgradeOutcome);
217
- const onlyPhases = artifactsOnly
218
- ? ["artifacts"]
219
- : runtimeOnly
220
- ? ["runtime"]
221
- : undefined;
222
- const installRootForCommands = crossMajorMigration || crossMajorNeedsPreview || needsAppUpgrade ? integrationTargets.installRoot : null;
223
- const cmds = buildUpgradeCommands({
224
- project: args.project,
225
- installRoot: installRootForCommands,
226
- channel: cmdsChannel,
227
- only: onlyPhases,
228
- cwdDefault: true,
229
- });
230
- let message;
231
- if (artifactsOnly) {
232
- message =
233
- "This project still uses v1 Markdown artifacts; preview migrating them to v2 YAML before continuing.";
234
- }
235
- else if (crossMajorMigration || crossMajorNeedsPreview) {
236
- message =
237
- "Your Agentera app copy is still on v2 while the CLI is on v3; preview the one-way v2→v3 migration before applying.";
238
- }
239
- else if (needsAppUpgrade) {
240
- message = "Your Agentera app copy is out of date; preview the repair or upgrade before applying.";
241
- }
242
- else if (pending.length > 0) {
243
- const runtimes = pendingRuntimes.length > 0 ? pendingRuntimes.join(", ") : "runtime configs";
244
- message = projectHasProjectLevelRuntimeHooks(args.project)
245
- ? `This project still uses older Agentera runtime wiring (${runtimes}); preview rewiring hooks to the current npm entrypoint.`
246
- : `Your user-level Agentera runtime wiring (${runtimes}) is stale; preview rewiring hooks to the current npm entrypoint.`;
247
- }
248
- else {
249
- message = "Preview Agentera upgrade changes for this project before applying.";
250
- }
191
+ const cmds = hasUpgradeWork
192
+ ? buildUpgradeCommands({
193
+ project: args.project,
194
+ installRoot: null,
195
+ channel: cmdsChannel,
196
+ only: null,
197
+ cwdDefault: true,
198
+ })
199
+ : null;
200
+ const message = hasUpgradeWork
201
+ ? `${integrationScenarioMessage(scenario, scenarioFacts)} ${guidanceMessage}`
202
+ : guidanceMessage;
251
203
  return {
252
- recommendation: "upgrade",
204
+ recommendation: aggregateStatus === "upgrade" ? "upgrade" : "stay",
253
205
  message,
254
- pending_runtime: pending.length,
255
- pending_runtimes: pendingRuntimes,
256
- pending_artifacts: v1Artifacts.length,
257
- dry_run_command: cmds.dryRunCommand,
258
- apply_command: cmds.applyCommand,
259
- update_channel: cmdsChannel.channel,
260
- upgrade_only: onlyPhases,
206
+ pending_artifacts: v1Artifacts.length + pendingProjectMigration.length,
207
+ dry_run_command: cmds?.dryRunCommand ?? null,
208
+ apply_command: cmds?.applyCommand ?? null,
209
+ update_channel: hasUpgradeWork ? cmdsChannel.channel : channel.channel,
210
+ major_boundary_block: majorBoundaryBlock,
211
+ phases: {
212
+ app: appPhase,
213
+ },
214
+ aggregate_status: aggregateStatus,
215
+ exit,
216
+ retry: {
217
+ command: args.retryCommand ?? null,
218
+ guidance: retryGuidance(exit),
219
+ },
261
220
  };
262
221
  }
263
222
  export function projectIntegrationAttention(summary) {
264
- if (summary.recommendation === "stay") {
223
+ if (summary.recommendation === "stay" && summary.aggregate_status === "stay") {
265
224
  return null;
266
225
  }
267
226
  const preview = summary.dry_run_command ? `\`${summary.dry_run_command}\`` : "the preview command";
268
- const prefix = summary.pending_artifacts > 0 ||
269
- (summary.pending_runtime > 0 && summary.upgrade_only?.includes("runtime"))
227
+ const prefix = summary.pending_artifacts > 0
270
228
  ? "normal"
271
229
  : "degraded";
272
- return `${prefix}: ${summary.message} Preview ${preview}.`;
230
+ const previewText = summary.dry_run_command ? ` Preview ${preview}.` : "";
231
+ return `${prefix}: ${summary.message}${previewText}`;
273
232
  }
274
- //# sourceMappingURL=projectIntegration.js.map
@@ -0,0 +1,50 @@
1
+ import { APP_MANUAL_REVIEW_NEEDED, APP_UP_TO_DATE } from "./doctor.js";
2
+ export function classifyIntegrationScenario(facts) {
3
+ if (facts.pendingArtifactCount === 0 &&
4
+ !facts.crossMajor &&
5
+ !facts.crossMajorMigration &&
6
+ !facts.crossMajorNeedsPreview &&
7
+ (facts.bundleStatus === APP_UP_TO_DATE || facts.bundleStatus === APP_MANUAL_REVIEW_NEEDED)) {
8
+ return "stay";
9
+ }
10
+ if (facts.crossMajorNeedsPreview) {
11
+ return "blocked";
12
+ }
13
+ return "upgrade";
14
+ }
15
+ export function integrationScenarioMessage(scenario, facts) {
16
+ if (scenario === "stay")
17
+ return "Your Agentera install is up to date.";
18
+ if (scenario === "blocked") {
19
+ return "Cross-major version boundary detected; v3 successor not yet announced. Stay on the current channel.";
20
+ }
21
+ const reasons = [];
22
+ if (facts.pendingArtifactCount > 0)
23
+ reasons.push("project state needs migration");
24
+ if (facts.needsAppUpgrade)
25
+ reasons.push("app bundle needs update");
26
+ if (facts.crossMajorMigration)
27
+ reasons.push("cross-major version migration needed");
28
+ if (reasons.length === 0)
29
+ reasons.push("project changes pending");
30
+ return `This project needs an Agentera upgrade (${reasons.join(", ")}). Preview the upgrade command.`;
31
+ }
32
+ export function integrationPhase(facts, statusOverride) {
33
+ const status = statusOverride ?? (facts.blocked > 0 ? "blocked" : facts.pending > 0 ? "pending" : "stay");
34
+ return {
35
+ status,
36
+ counts: { total: facts.total, pending: facts.pending, blocked: facts.blocked },
37
+ blockers: facts.blockers,
38
+ };
39
+ }
40
+ export function integrationExit(hasPendingWork, appBlocked) {
41
+ if (!hasPendingWork && !appBlocked) {
42
+ return { code: 0, meaning: "no_changes_needed" };
43
+ }
44
+ if (hasPendingWork && appBlocked) {
45
+ return { code: 1, meaning: "preview_and_blockers" };
46
+ }
47
+ if (hasPendingWork)
48
+ return { code: 1, meaning: "preview_required" };
49
+ return { code: 1, meaning: "manual_review_required" };
50
+ }
@@ -0,0 +1,117 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { loadNativeResourceCleanupContract, retiredResourceDiagnosticIds, } from "../runtime/nativeResourceCleanup.js";
4
+ function templateRoot(template, roots) {
5
+ const match = /^\{(home|project|install_root)\}\//.exec(template);
6
+ if (!match)
7
+ throw new Error(`unsafe retired-resource diagnostic path template: ${template}`);
8
+ return roots[match[1]];
9
+ }
10
+ function expandTemplate(template, roots, name) {
11
+ const root = templateRoot(template, roots);
12
+ const expanded = template
13
+ .replace("{home}", roots.home)
14
+ .replace("{project}", roots.project)
15
+ .replace("{install_root}", roots.install_root)
16
+ .replace("{name}", name ?? "");
17
+ if (expanded.includes("{") || expanded.includes("..")) {
18
+ throw new Error(`unsafe retired-resource diagnostic path template: ${template}`);
19
+ }
20
+ const resolved = path.resolve(expanded);
21
+ const relative = path.relative(root, resolved);
22
+ if (relative === "" || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
23
+ throw new Error(`retired-resource diagnostic path escapes its root: ${template}`);
24
+ }
25
+ return resolved;
26
+ }
27
+ function fileContains(pathname, marker, maximumFileBytes) {
28
+ let stat;
29
+ try {
30
+ stat = fs.lstatSync(pathname);
31
+ }
32
+ catch (error) {
33
+ if (error.code === "ENOENT")
34
+ return null;
35
+ return "uninspectable";
36
+ }
37
+ if (!stat.isFile() || stat.size > maximumFileBytes)
38
+ return "uninspectable";
39
+ const fd = fs.openSync(pathname, "r");
40
+ try {
41
+ const content = Buffer.alloc(stat.size);
42
+ fs.readSync(fd, content, 0, content.length, 0);
43
+ return content.toString("utf8").includes(marker) ? "path_present" : null;
44
+ }
45
+ catch {
46
+ return "uninspectable";
47
+ }
48
+ finally {
49
+ fs.closeSync(fd);
50
+ }
51
+ }
52
+ function observeDestination(pathname, definition, maximumFileBytes) {
53
+ if (definition.contains) {
54
+ const observation = fileContains(pathname, definition.contains, maximumFileBytes);
55
+ return observation ? { path: pathname, observation } : null;
56
+ }
57
+ try {
58
+ fs.lstatSync(pathname);
59
+ return { path: pathname, observation: "path_present" };
60
+ }
61
+ catch (error) {
62
+ return error.code === "ENOENT"
63
+ ? null
64
+ : { path: pathname, observation: "uninspectable" };
65
+ }
66
+ }
67
+ function namesFor(definition) {
68
+ return definition.id.includes("{name}") || definition.destinations.some((item) => item.includes("{name}"))
69
+ ? definition.names
70
+ : [""];
71
+ }
72
+ export function diagnoseRetiredResources(opts) {
73
+ const contract = opts.contract ?? loadNativeResourceCleanupContract();
74
+ if (opts.resourceId && !retiredResourceDiagnosticIds(contract).includes(opts.resourceId)) {
75
+ throw new Error(`unknown retired Agentera resource ID: ${opts.resourceId}`);
76
+ }
77
+ const roots = {
78
+ home: path.resolve(opts.home),
79
+ project: path.resolve(opts.project),
80
+ install_root: path.resolve(opts.installRoot),
81
+ };
82
+ const observed = new Map();
83
+ for (const definition of contract.diagnosticResources) {
84
+ for (const name of namesFor(definition)) {
85
+ const id = definition.id.replace("{name}", name);
86
+ if (opts.resourceId && id !== opts.resourceId)
87
+ continue;
88
+ for (const destination of definition.destinations) {
89
+ const pathname = expandTemplate(destination, roots, name || null);
90
+ const observation = observeDestination(pathname, definition, contract.diagnosticMaximumFileBytes);
91
+ if (!observation)
92
+ continue;
93
+ const current = observed.get(id) ?? [];
94
+ current.push(observation);
95
+ observed.set(id, current);
96
+ }
97
+ }
98
+ }
99
+ const entries = [...observed.entries()].sort(([left], [right]) => left.localeCompare(right));
100
+ const retained = entries.slice(0, contract.diagnosticMaximumResources).map(([id, observations]) => ({
101
+ id,
102
+ status: "action_required",
103
+ evidence: {
104
+ paths: [...new Set(observations.map((observation) => observation.path))].sort(),
105
+ observation: observations.some((observation) => observation.observation === "uninspectable")
106
+ ? "uninspectable"
107
+ : "path_present",
108
+ },
109
+ }));
110
+ return {
111
+ schemaVersion: "agentera.retiredResourceDiagnosis.v1",
112
+ status: retained.length > 0 || entries.length > contract.diagnosticMaximumResources ? "action_required" : "clean",
113
+ selectedResourceId: opts.resourceId ?? null,
114
+ resources: retained,
115
+ omittedResourceCount: Math.max(0, entries.length - retained.length),
116
+ };
117
+ }