agentera 3.0.0-dev.5 → 3.0.0-dev.51
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.
- package/LICENSE +201 -0
- package/README.md +119 -22
- package/bundle/CHANGELOG.md +1351 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +143 -0
- package/bundle/UPGRADE.md +236 -0
- package/bundle/extract-corpus-parity.json +21 -0
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-publication.json +437 -0
- package/bundle/references/adapters/package-registry.yaml +435 -189
- package/bundle/references/adapters/package-surface-characterization.md +66 -35
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
- package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
- package/bundle/references/analysis/verification-policy.yaml +191 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
- package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +3022 -0
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
- package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
- package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
- package/bundle/references/cli/routing-model.md +155 -0
- package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
- package/bundle/references/cli/update-channels.yaml +19 -1
- package/bundle/references/cli/vocabulary-index.yaml +20 -17
- package/bundle/references/cli/vocabulary.md +326 -361
- package/bundle/references/meta/retained-reference-authority.yaml +151 -0
- package/bundle/registry.json +13 -13
- package/bundle/skills/agentera/SKILL.md +224 -422
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
- package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
- package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
- package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
- package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
- package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
- package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
- package/bundle/skills/agentera/protocol.yaml +31 -31
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
- package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +458 -36
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -17
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
- package/dist/analytics/extractCorpus/cli.js +190 -0
- package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
- package/dist/analytics/extractCorpus/core.js +392 -0
- package/dist/analytics/extractCorpus/corpus.js +167 -0
- package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
- package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
- package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
- package/dist/analytics/extractCorpus/index.js +14 -0
- package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
- package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
- package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
- package/dist/analytics/extractCorpus/tierReader.js +108 -0
- package/dist/analytics/extractCorpus.js +2 -1791
- package/dist/analytics/glossaryAdviceResolution.js +166 -0
- package/dist/analytics/glossaryInputAcquisition.js +319 -0
- package/dist/analytics/personalGlossaryAdmission.js +133 -0
- package/dist/analytics/personalGlossaryProfile.js +219 -0
- package/dist/analytics/profileSignals.js +211 -0
- package/dist/analytics/usageStats.js +169 -42
- package/dist/audit/terminologyDrift.js +281 -0
- package/dist/bin/agentera.js +3 -2
- package/dist/capabilities/audit/instructions.js +16 -0
- package/dist/capabilities/build/instructions.js +56 -0
- package/dist/capabilities/design/instructions.js +4 -0
- package/dist/capabilities/discuss/instructions.js +29 -0
- package/dist/capabilities/document/instructions.js +11 -0
- package/dist/capabilities/index.js +29 -27
- package/dist/capabilities/optimize/instructions.js +14 -0
- package/dist/capabilities/orchestrate/instructions.js +42 -0
- package/dist/capabilities/plan/instructions.js +33 -0
- package/dist/capabilities/profile/instructions.js +70 -0
- package/dist/capabilities/research/instructions.js +5 -0
- package/dist/capabilities/status/instructions.js +15 -0
- package/dist/capabilities/status/startupInstructions.js +34 -0
- package/dist/capabilities/vision/instructions.js +4 -0
- package/dist/cli/appContext.js +30 -24
- package/dist/cli/argvalidate.js +0 -1
- package/dist/cli/capabilityContext/benchmark.js +565 -0
- package/dist/cli/capabilityContext/bespoke.js +44 -0
- package/dist/cli/capabilityContext/build.js +242 -0
- package/dist/cli/capabilityContext/closeout.js +233 -0
- package/dist/cli/capabilityContext/contract.js +179 -0
- package/dist/cli/capabilityContext/evidence.js +463 -0
- package/dist/cli/capabilityContext/index.js +3 -0
- package/dist/cli/capabilityContext/orchestration.js +131 -0
- package/dist/cli/capabilityContext/planState.js +260 -0
- package/dist/cli/capabilityContext/progress.js +142 -0
- package/dist/cli/capabilityContext/projectVerification.js +409 -0
- package/dist/cli/capabilityContext/shared.js +83 -0
- package/dist/cli/capabilityContext/slim.js +152 -0
- package/dist/cli/capabilityContext/startup.js +150 -0
- package/dist/cli/capabilityContext/startupAggregation.js +68 -0
- package/dist/cli/capabilityContext/types.js +56 -0
- package/dist/cli/capabilityContext.js +1 -2487
- package/dist/cli/commands/appHome.js +22 -0
- package/dist/cli/commands/capability.js +4 -4
- package/dist/cli/commands/compact.js +164 -14
- package/dist/cli/commands/doctor.js +122 -97
- package/dist/cli/commands/durability.js +81 -0
- package/dist/cli/commands/glossaryAdvice.js +138 -0
- package/dist/cli/commands/lint.js +26 -44
- package/dist/cli/commands/personalGlossary.js +176 -0
- package/dist/cli/commands/prime/briefOrientation.js +747 -0
- package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
- package/dist/cli/commands/prime/bundleStatus.js +190 -0
- package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
- package/dist/cli/commands/prime/collectOrientationState.js +212 -0
- package/dist/cli/commands/prime/orientationOutput.js +399 -0
- package/dist/cli/commands/prime/types.js +1 -0
- package/dist/cli/commands/prime/v1Migration.js +38 -0
- package/dist/cli/commands/prime.js +80 -558
- package/dist/cli/commands/profileGrounding.js +55 -0
- package/dist/cli/commands/query.js +78 -53
- package/dist/cli/commands/report.js +96 -25
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/schema.js +266 -143
- package/dist/cli/commands/state/decisions.js +387 -0
- package/dist/cli/commands/state/docs.js +70 -0
- package/dist/cli/commands/state/experimentRecords.js +151 -0
- package/dist/cli/commands/state/experiments.js +14 -0
- package/dist/cli/commands/state/get.js +129 -0
- package/dist/cli/commands/state/health.js +14 -0
- package/dist/cli/commands/state/index.js +16 -0
- package/dist/cli/commands/state/list.js +194 -0
- package/dist/cli/commands/state/objective.js +25 -0
- package/dist/cli/commands/state/plan.js +14 -0
- package/dist/cli/commands/state/planTasks.js +154 -0
- package/dist/cli/commands/state/plans.js +154 -0
- package/dist/cli/commands/state/progress.js +13 -0
- package/dist/cli/commands/state/shared.js +14 -0
- package/dist/cli/commands/state/todo.js +42 -0
- package/dist/cli/commands/state/write.js +430 -0
- package/dist/cli/commands/upgrade.js +146 -5
- package/dist/cli/commands/upgradeVerify.js +118 -0
- package/dist/cli/commands/validate.js +272 -223
- package/dist/cli/commands/verify.js +24 -9
- package/dist/cli/contracts/bundleStatus.js +1 -0
- package/dist/cli/contracts/orientationState.js +1 -0
- package/dist/cli/dispatch/argvParser.js +32 -0
- package/dist/cli/dispatch/check.js +372 -0
- package/dist/cli/dispatch/commands.js +27 -0
- package/dist/cli/dispatch/index.js +207 -0
- package/dist/cli/dispatch/lifecycle.js +652 -0
- package/dist/cli/dispatch/prime.js +139 -0
- package/dist/cli/dispatch/projections.js +17 -0
- package/dist/cli/dispatch/shared.js +63 -0
- package/dist/cli/dispatch/state.js +140 -0
- package/dist/cli/dispatch.js +1 -1294
- package/dist/cli/errors.js +16 -17
- package/dist/cli/help.js +394 -43
- package/dist/cli/migrationRequired.js +87 -0
- package/dist/cli/orientation/attention.js +61 -0
- package/dist/cli/orientation/corpusCoverage.js +102 -0
- package/dist/cli/orientation.js +438 -170
- package/dist/cli/planArtifacts.js +350 -0
- package/dist/cli/planEvidence.js +157 -0
- package/dist/cli/planLifecycleState.js +36 -0
- package/dist/cli/planTaskIndex.js +11 -0
- package/dist/cli/preCutoverCommand.js +32 -0
- package/dist/cli/prime-blob.js +71 -3
- package/dist/cli/profileAcquisition.js +167 -0
- package/dist/cli/startupCompletenessContract.js +59 -0
- package/dist/cli/stateQuery.js +56 -14
- package/dist/cli/structured.js +0 -1
- package/dist/cli/todoMarkdown.js +25 -12
- package/dist/cli/todoReadinessSelection.js +192 -0
- package/dist/cli/todoSeverity.js +18 -0
- package/dist/core/atomicWriter.js +20 -0
- package/dist/core/developmentChannel.js +1 -0
- package/dist/core/developmentInvocation.js +374 -0
- package/dist/core/difflib.js +0 -1
- package/dist/core/envPaths.js +20 -0
- package/dist/core/jsonValue.js +5 -0
- package/dist/core/paths.js +0 -1
- package/dist/core/pyjson.js +67 -3
- package/dist/core/shell.js +4 -0
- package/dist/core/skillIdentity.js +23 -0
- package/dist/core/sourceRoot.js +9 -12
- package/dist/core/text.js +10 -0
- package/dist/core/toml.js +0 -1
- package/dist/core/yaml.js +8 -1
- package/dist/eval/evalSkills.js +30 -26
- package/dist/eval/hybridRouteEvaluation.js +155 -0
- package/dist/eval/semanticEval.js +43 -20
- package/dist/eval/semanticFixtures.js +16 -5
- package/dist/hooks/common.js +11 -79
- package/dist/hooks/compaction/apply.js +446 -0
- package/dist/hooks/compaction/dryRun.js +184 -0
- package/dist/hooks/compaction/index.js +22 -0
- package/dist/hooks/compaction/parse.js +325 -0
- package/dist/hooks/compaction/retention.js +202 -0
- package/dist/hooks/compaction/status.js +360 -0
- package/dist/hooks/compaction/types.js +5 -0
- package/dist/hooks/validateArtifact/agentFacing.js +9 -0
- package/dist/hooks/validateArtifact/index.js +92 -0
- package/dist/hooks/validateArtifact/markdown.js +145 -0
- package/dist/hooks/validateArtifact/schema.js +546 -0
- package/dist/hooks/validateArtifact/traversal.js +107 -0
- package/dist/hooks/validateArtifact/violations.js +107 -0
- package/dist/migrate/v2HandoffManifest.js +452 -0
- package/dist/registries/activationContract.js +2 -0
- package/dist/registries/activationTuples.js +107 -0
- package/dist/registries/artifactProtocolIds.js +78 -0
- package/dist/registries/artifactRegistry.js +224 -63
- package/dist/registries/artifactSchemaProjection.js +45 -0
- package/dist/registries/capabilityContract.js +129 -2
- package/dist/registries/evaluatorHandoffContract.js +2 -3
- package/dist/registries/evidenceTierContract.js +371 -0
- package/dist/registries/glossaryAdviceContract.js +79 -0
- package/dist/registries/glossaryCaveatContract.js +67 -0
- package/dist/registries/glossaryConsumerContractValidation.js +787 -0
- package/dist/registries/glossaryEntryContract.js +757 -0
- package/dist/registries/glossaryTermIdentity.js +17 -0
- package/dist/registries/glossaryTermOccurrence.js +20 -0
- package/dist/registries/hybridRoute.js +274 -0
- package/dist/registries/hybridRouteReceipt.js +221 -0
- package/dist/registries/packagePublication.js +229 -0
- package/dist/registries/packageRegistry.js +187 -211
- package/dist/registries/todoReadinessContract.js +448 -0
- package/dist/registries/triggerLoader.js +174 -0
- package/dist/registries/verbosityBudgetContract.js +205 -0
- package/dist/release/releaseMetadata.js +385 -0
- package/dist/runtime/lifecycleAdapterContract.js +457 -0
- package/dist/runtime/lifecycleAdapters.js +777 -0
- package/dist/runtime/lifecycleAuthority.js +453 -0
- package/dist/runtime/lifecycleOperationContract.js +123 -0
- package/dist/runtime/lifecycleOperations.js +634 -0
- package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
- package/dist/runtime/lifecyclePublication.js +415 -0
- package/dist/runtime/lifecycleSnapshot.js +438 -0
- package/dist/runtime/nativeResourceCleanup.js +502 -0
- package/dist/setup/opencode.js +20 -0
- package/dist/setup/opencodeConstants.js +1 -0
- package/dist/setup/sharedSkill.js +45 -0
- package/dist/setup/smokeChecks.js +21 -82
- package/dist/state/archiveDiscovery.js +580 -0
- package/dist/state/archivePublication.js +225 -0
- package/dist/state/archiveRecovery.js +237 -0
- package/dist/state/archiveReplay.js +53 -0
- package/dist/state/canonicalMigrationRecord.js +36 -0
- package/dist/state/changelog.js +221 -0
- package/dist/state/decisionEntities.js +367 -0
- package/dist/state/decisionLegacyValidation.js +215 -0
- package/dist/state/decisionMigrationProvenance.js +199 -0
- package/dist/state/decisionOverlay.js +254 -0
- package/dist/state/decisionRevision.js +256 -0
- package/dist/state/decisionRevisionMigration.js +89 -0
- package/dist/state/directRetrieval.js +323 -0
- package/dist/state/durability.js +324 -0
- package/dist/state/entityCutover.js +459 -0
- package/dist/state/entityCutoverGit.js +127 -0
- package/dist/state/entityGlossaryAuthority.js +13 -0
- package/dist/state/entityListProjection.js +187 -0
- package/dist/state/entityListRuntimeRegistry.js +85 -0
- package/dist/state/entityMigrationCausality.js +97 -0
- package/dist/state/entityMigrationIdentity.js +5 -0
- package/dist/state/entityMigrationPreview.js +846 -0
- package/dist/state/entityMigrationTodo.js +133 -0
- package/dist/state/entityPublicationContext.js +806 -0
- package/dist/state/entityRetrievalHelp.js +506 -0
- package/dist/state/entityStorage.js +899 -0
- package/dist/state/exactReplacementRecovery.js +18 -0
- package/dist/state/experimentArchive.js +63 -0
- package/dist/state/experimentIdentity.js +202 -0
- package/dist/state/healthEntities.js +262 -0
- package/dist/state/healthEntityValidation.js +18 -0
- package/dist/state/healthRepair.js +69 -0
- package/dist/state/installRoot.js +64 -25
- package/dist/state/legacyEntityCutoverEvidence.js +65 -0
- package/dist/state/legacyIdentity.js +47 -0
- package/dist/state/legacySummaryRecord.js +6 -0
- package/dist/state/listAccounting.js +54 -0
- package/dist/state/listClassification.js +17 -0
- package/dist/state/listCursor.js +42 -0
- package/dist/state/listRetrieval.js +781 -0
- package/dist/state/migrationSourceBinding.js +30 -0
- package/dist/state/objectiveExperimentEntities.js +322 -0
- package/dist/state/planEntities.js +982 -0
- package/dist/state/planIdentity.js +47 -0
- package/dist/state/planLineageValidation.js +52 -0
- package/dist/state/planReplacementTransaction.js +475 -0
- package/dist/state/planRetrieval.js +313 -0
- package/dist/state/planTaskRetrieval.js +294 -0
- package/dist/state/progressEntities.js +512 -0
- package/dist/state/progressGlossaryCaveat.js +168 -0
- package/dist/state/progressPublicationOrder.js +19 -0
- package/dist/state/projectRoot.js +62 -0
- package/dist/state/projectionPolicy.js +190 -0
- package/dist/state/retrievalAuthority.js +156 -0
- package/dist/state/safeProjectFile.js +155 -0
- package/dist/state/startupAnalysis/benchmark.js +432 -0
- package/dist/state/startupAnalysis/contract.js +160 -0
- package/dist/state/startupAnalysis/helpers.js +286 -0
- package/dist/state/startupAnalysis/index.js +6 -0
- package/dist/state/startupAnalysis/metrics.js +340 -0
- package/dist/state/startupAnalysis/records.js +198 -0
- package/dist/state/startupAnalysis/report.js +111 -0
- package/dist/state/startupAnalysis/threshold.js +512 -0
- package/dist/state/startupAnalysis.js +2 -1953
- package/dist/state/startupProjection.js +499 -0
- package/dist/state/stateMode.js +85 -0
- package/dist/state/stateStorageAuthority.js +47 -0
- package/dist/state/summaryEntityRead.js +25 -0
- package/dist/state/summaryMigrationProvenance.js +66 -0
- package/dist/state/summarySourceRowAuthority.js +36 -0
- package/dist/state/todoActivationSafety.js +58 -0
- package/dist/state/todoDocsEntities.js +1069 -0
- package/dist/state/todoDocsEntityValidation.js +158 -0
- package/dist/state/todoMarkdownProjection.js +51 -0
- package/dist/state/todoReconciliationActivation.js +140 -0
- package/dist/state/todoReconciliationInspection.js +169 -0
- package/dist/state/todoReconciliationRepair.js +170 -0
- package/dist/state/todoReconciliationTransaction.js +582 -0
- package/dist/state/write/assign.js +20 -0
- package/dist/state/write/candidateMutation.js +269 -0
- package/dist/state/write/errors.js +11 -0
- package/dist/state/write/experimentPublication.js +192 -0
- package/dist/state/write/explain.js +363 -0
- package/dist/state/write/fields.js +61 -0
- package/dist/state/write/glossaryPublication.js +263 -0
- package/dist/state/write/grammar.js +285 -0
- package/dist/state/write/helpers.js +29 -0
- package/dist/state/write/index.js +12 -0
- package/dist/state/write/input.js +367 -0
- package/dist/state/write/lock.js +837 -0
- package/dist/state/write/mutation.js +234 -0
- package/dist/state/write/operations.js +170 -0
- package/dist/state/write/planEvaluation.js +128 -0
- package/dist/state/write/planPublication.js +179 -0
- package/dist/state/write/runtimeOperations.js +144 -0
- package/dist/state/write/serialize.js +1 -0
- package/dist/state/write/transaction.js +52 -0
- package/dist/state/write/validate.js +7 -0
- package/dist/upgrade/appContentRefresh.js +383 -0
- package/dist/upgrade/appModel.js +8 -7
- package/dist/upgrade/atomicWriter.js +1 -0
- package/dist/upgrade/bundleEvidence.js +33 -0
- package/dist/upgrade/channels.js +12 -8
- package/dist/upgrade/compatibility.js +56 -21
- package/dist/upgrade/doctor.js +197 -192
- package/dist/upgrade/doctorClassifier.js +187 -0
- package/dist/upgrade/installedHooksRetirement.js +196 -0
- package/dist/upgrade/legacyAgentCleanup.js +282 -0
- package/dist/upgrade/lifecycleUpgrade.js +113 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
- package/dist/upgrade/migrationPublication.js +122 -0
- package/dist/upgrade/nextMajorDoctor.js +42 -8
- package/dist/upgrade/npxPlatformStatus.js +22 -0
- package/dist/upgrade/projectIntegration.js +145 -187
- package/dist/upgrade/projectIntegrationDecision.js +50 -0
- package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
- package/dist/upgrade/runtimeMigration.js +273 -363
- package/dist/upgrade/upgradeCommands.js +14 -1
- package/dist/upgrade/upgradeLock.js +85 -0
- package/dist/upgrade/upgradeOrchestrator.js +263 -59
- package/dist/upgrade/v3CapabilitySurface.js +14 -0
- package/dist/upgrade/versionResolution.js +8 -1
- package/dist/validate/activationArtifactEvidence.js +844 -0
- package/dist/validate/activationConjunction.js +816 -0
- package/dist/validate/activationEvidenceManifest.js +515 -0
- package/dist/validate/activationPackageSemantics.js +29 -0
- package/dist/validate/appHomeContract.js +5 -11
- package/dist/validate/bootstrapAuthority.js +44 -0
- package/dist/validate/capability.js +133 -12
- package/dist/validate/crossCapability.js +15 -10
- package/dist/validate/retainedReferenceAuthority.js +879 -0
- package/dist/validate/selfAudit.js +73 -37
- package/dist/validate/v1LegacyCruft.js +131 -0
- package/dist/validate/vocabularyAuthority.js +303 -0
- package/package.json +53 -27
- package/bundle/references/adapters/cursor.md +0 -213
- package/bundle/references/adapters/opencode.md +0 -530
- package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
- package/bundle/references/adapters/runtime-feature-parity.md +0 -189
- package/bundle/references/analysis/benchmark.md +0 -267
- package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
- package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
- package/bundle/references/cli/capability-tool-classification.yaml +0 -53
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
- package/bundle/references/meta/documentation-inventory.md +0 -43
- package/bundle/references/v1-section-mapping.md +0 -47
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
- package/bundle/skills/agentera/agents/hej.toml +0 -6
- package/bundle/skills/agentera/agents/inspektera.toml +0 -6
- package/bundle/skills/agentera/agents/inspirera.toml +0 -6
- package/bundle/skills/agentera/agents/optimera.toml +0 -6
- package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
- package/bundle/skills/agentera/agents/planera.toml +0 -6
- package/bundle/skills/agentera/agents/profilera.toml +0 -6
- package/bundle/skills/agentera/agents/realisera.toml +0 -6
- package/bundle/skills/agentera/agents/resonera.toml +0 -6
- package/bundle/skills/agentera/agents/visionera.toml +0 -6
- package/bundle/skills/agentera/agents/visualisera.toml +0 -6
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
- package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
- package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
- package/bundle/skills/agentera/references/contract.md +0 -1039
- package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
- package/bundle/skills/hej/SKILL.md +0 -69
- package/bundle/skills/hej/agents/hej.toml +0 -11
- package/bundle/skills/hej/agents/openai.yaml +0 -8
- package/dist/analytics/extractCorpus.js.map +0 -1
- package/dist/analytics/usageStats.js.map +0 -1
- package/dist/bin/agentera.js.map +0 -1
- package/dist/capabilities/dokumentera/instructions.js +0 -6
- package/dist/capabilities/dokumentera/instructions.js.map +0 -1
- package/dist/capabilities/hej/instructions.js +0 -6
- package/dist/capabilities/hej/instructions.js.map +0 -1
- package/dist/capabilities/index.js.map +0 -1
- package/dist/capabilities/inspektera/instructions.js +0 -6
- package/dist/capabilities/inspektera/instructions.js.map +0 -1
- package/dist/capabilities/inspirera/instructions.js +0 -6
- package/dist/capabilities/inspirera/instructions.js.map +0 -1
- package/dist/capabilities/optimera/instructions.js +0 -6
- package/dist/capabilities/optimera/instructions.js.map +0 -1
- package/dist/capabilities/orkestrera/instructions.js +0 -6
- package/dist/capabilities/orkestrera/instructions.js.map +0 -1
- package/dist/capabilities/planera/instructions.js +0 -6
- package/dist/capabilities/planera/instructions.js.map +0 -1
- package/dist/capabilities/profilera/instructions.js +0 -6
- package/dist/capabilities/profilera/instructions.js.map +0 -1
- package/dist/capabilities/realisera/instructions.js +0 -6
- package/dist/capabilities/realisera/instructions.js.map +0 -1
- package/dist/capabilities/resonera/instructions.js +0 -6
- package/dist/capabilities/resonera/instructions.js.map +0 -1
- package/dist/capabilities/visionera/instructions.js +0 -6
- package/dist/capabilities/visionera/instructions.js.map +0 -1
- package/dist/capabilities/visualisera/instructions.js +0 -6
- package/dist/capabilities/visualisera/instructions.js.map +0 -1
- package/dist/cli/appContext.js.map +0 -1
- package/dist/cli/argvalidate.js.map +0 -1
- package/dist/cli/capabilityContext.js.map +0 -1
- package/dist/cli/commands/capability.js.map +0 -1
- package/dist/cli/commands/compact.js.map +0 -1
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/lint.js.map +0 -1
- package/dist/cli/commands/prime.js.map +0 -1
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/schema.js.map +0 -1
- package/dist/cli/commands/state.js +0 -1023
- package/dist/cli/commands/state.js.map +0 -1
- package/dist/cli/commands/upgrade.js.map +0 -1
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/commands/verify.js.map +0 -1
- package/dist/cli/dispatch.js.map +0 -1
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/orientation.js.map +0 -1
- package/dist/cli/prime-blob.js.map +0 -1
- package/dist/cli/stateQuery.js.map +0 -1
- package/dist/cli/structured.js.map +0 -1
- package/dist/cli/todoMarkdown.js.map +0 -1
- package/dist/core/difflib.js.map +0 -1
- package/dist/core/paths.js.map +0 -1
- package/dist/core/pyjson.js.map +0 -1
- package/dist/core/sourceRoot.js.map +0 -1
- package/dist/core/toml.js.map +0 -1
- package/dist/core/yaml.js.map +0 -1
- package/dist/eval/evalSkills.js.map +0 -1
- package/dist/eval/semanticEval.js.map +0 -1
- package/dist/eval/semanticFixtures.js.map +0 -1
- package/dist/hooks/common.js.map +0 -1
- package/dist/hooks/compaction.js +0 -935
- package/dist/hooks/compaction.js.map +0 -1
- package/dist/hooks/cursorPreToolUse.js +0 -19
- package/dist/hooks/cursorPreToolUse.js.map +0 -1
- package/dist/hooks/cursorSessionStart.js +0 -71
- package/dist/hooks/cursorSessionStart.js.map +0 -1
- package/dist/hooks/sessionStart.js +0 -209
- package/dist/hooks/sessionStart.js.map +0 -1
- package/dist/hooks/sessionStop.js +0 -212
- package/dist/hooks/sessionStop.js.map +0 -1
- package/dist/hooks/validateArtifact.js +0 -935
- package/dist/hooks/validateArtifact.js.map +0 -1
- package/dist/registries/artifactRegistry.js.map +0 -1
- package/dist/registries/capabilityContract.js.map +0 -1
- package/dist/registries/evaluatorHandoffContract.js.map +0 -1
- package/dist/registries/packageRegistry.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -315
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/setup/codex.js +0 -1197
- package/dist/setup/codex.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -127
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/doctor.js +0 -1297
- package/dist/setup/doctor.js.map +0 -1
- package/dist/setup/smokeChecks.js.map +0 -1
- package/dist/state/installRoot.js.map +0 -1
- package/dist/state/startupAnalysis.js.map +0 -1
- package/dist/upgrade/appModel.js.map +0 -1
- package/dist/upgrade/channels.js.map +0 -1
- package/dist/upgrade/compatibility.js.map +0 -1
- package/dist/upgrade/doctor.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
- package/dist/upgrade/nextMajorDoctor.js.map +0 -1
- package/dist/upgrade/projectIntegration.js.map +0 -1
- package/dist/upgrade/runtimeMigration.js.map +0 -1
- package/dist/upgrade/upgradeCommands.js.map +0 -1
- package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
- package/dist/upgrade/versionResolution.js.map +0 -1
- package/dist/validate/appHomeContract.js.map +0 -1
- package/dist/validate/capability.js.map +0 -1
- package/dist/validate/crossCapability.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -772
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- package/dist/validate/selfAudit.js.map +0 -1
- /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
|
@@ -7,6 +7,16 @@ function shellQuote(value) {
|
|
|
7
7
|
export function commandText(parts) {
|
|
8
8
|
return parts.map(shellQuote).join(" ");
|
|
9
9
|
}
|
|
10
|
+
export function fullEntityUpgradeCommand(project) {
|
|
11
|
+
return commandText([
|
|
12
|
+
"npx", "-y", "agentera@next", "upgrade", "--channel", "development", "--project", project, "--yes",
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
export function fullEntityUpgradePreviewCommand(project) {
|
|
16
|
+
return commandText([
|
|
17
|
+
"npx", "-y", "agentera@next", "upgrade", "--channel", "development", "--project", project, "--dry-run",
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
10
20
|
/** Channel-aware upgrade preview/apply commands (doctor, prime, orchestrator). */
|
|
11
21
|
export function buildUpgradeCommands(args) {
|
|
12
22
|
const base = args.channel.updateCommand.split(/\s+/).slice(0, 3);
|
|
@@ -32,9 +42,12 @@ export function buildUpgradeCommands(args) {
|
|
|
32
42
|
applyParts.push("--only", phase);
|
|
33
43
|
}
|
|
34
44
|
}
|
|
45
|
+
if (args.legacyCleanup) {
|
|
46
|
+
previewParts.push("--legacy-cleanup", args.legacyCleanup);
|
|
47
|
+
applyParts.push("--legacy-cleanup", args.legacyCleanup);
|
|
48
|
+
}
|
|
35
49
|
return {
|
|
36
50
|
dryRunCommand: commandText(previewParts),
|
|
37
51
|
applyCommand: commandText(applyParts),
|
|
38
52
|
};
|
|
39
53
|
}
|
|
40
|
-
//# sourceMappingURL=upgradeCommands.js.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const MAX_LOCK_BYTES = 4 * 1024;
|
|
5
|
+
export class UpgradeLockError extends Error {
|
|
6
|
+
constructor(lockPath) {
|
|
7
|
+
super(`upgrade mutation is locked; inspect ${lockPath}, remove that file only if no upgrade owns it, then rerun`);
|
|
8
|
+
this.name = "UpgradeLockError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function upgradeLockPath(root, domain) {
|
|
12
|
+
return path.join(root, ".agentera", `upgrade-${domain}.lock`);
|
|
13
|
+
}
|
|
14
|
+
function manualRecovery(lockPath) {
|
|
15
|
+
return new UpgradeLockError(lockPath);
|
|
16
|
+
}
|
|
17
|
+
function removeCreatedParent(parent, created) {
|
|
18
|
+
if (!created)
|
|
19
|
+
return;
|
|
20
|
+
try {
|
|
21
|
+
fs.rmdirSync(parent);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const code = error.code;
|
|
25
|
+
if (code !== "ENOENT" && code !== "ENOTEMPTY" && code !== "EEXIST")
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function lockRecord(lockPath) {
|
|
30
|
+
try {
|
|
31
|
+
const stat = fs.lstatSync(lockPath);
|
|
32
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MAX_LOCK_BYTES)
|
|
33
|
+
return null;
|
|
34
|
+
const value = JSON.parse(fs.readFileSync(lockPath, "utf8"));
|
|
35
|
+
if (value === null
|
|
36
|
+
|| typeof value !== "object"
|
|
37
|
+
|| Object.keys(value).length !== 1
|
|
38
|
+
|| typeof value.token !== "string"
|
|
39
|
+
|| value.token.length === 0)
|
|
40
|
+
return null;
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function acquireUpgradeLock(root, domain) {
|
|
48
|
+
const lockPath = upgradeLockPath(root, domain);
|
|
49
|
+
const parent = path.dirname(lockPath);
|
|
50
|
+
let createdParent = false;
|
|
51
|
+
try {
|
|
52
|
+
fs.mkdirSync(parent);
|
|
53
|
+
createdParent = true;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error.code !== "EEXIST")
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
const token = randomUUID();
|
|
60
|
+
let fd;
|
|
61
|
+
try {
|
|
62
|
+
fd = fs.openSync(lockPath, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL, 0o600);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
removeCreatedParent(parent, createdParent);
|
|
66
|
+
if (error.code === "EEXIST")
|
|
67
|
+
throw manualRecovery(lockPath);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
fs.writeFileSync(fd, `${JSON.stringify({ token })}\n`);
|
|
72
|
+
fs.fsyncSync(fd);
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
fs.closeSync(fd);
|
|
76
|
+
}
|
|
77
|
+
return { domain, path: lockPath, token, createdParent };
|
|
78
|
+
}
|
|
79
|
+
export function releaseUpgradeLock(lock) {
|
|
80
|
+
const record = lockRecord(lock.path);
|
|
81
|
+
if (!record || record.token !== lock.token)
|
|
82
|
+
throw manualRecovery(lock.path);
|
|
83
|
+
fs.unlinkSync(lock.path);
|
|
84
|
+
removeCreatedParent(path.dirname(lock.path), lock.createdParent);
|
|
85
|
+
}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
2
3
|
import { expanduser, resolvePath } from "../core/paths.js";
|
|
3
4
|
import { resolveDoctorInstallRoot, resolveSourceRootStrict } from "./appModel.js";
|
|
4
|
-
import { MAJOR_BOUNDARY_ITEM_TAG, STATUS_APPLIED, STATUS_MANUAL_REVIEW_NEEDED, STATUS_NO_CHANGES_NEEDED, STATUS_READY_TO_APPLY, UPGRADE_PREVIEW_SCHEMA, classifyInstall, crossMajorBoundaryApplies,
|
|
5
|
+
import { MAJOR_BOUNDARY_ITEM_TAG, STATUS_APPLIED, STATUS_MANUAL_REVIEW_NEEDED, STATUS_NO_CHANGES_NEEDED, STATUS_READY_TO_APPLY, UPGRADE_PREVIEW_SCHEMA, classifyInstall, crossMajorBoundaryApplies, } from "./compatibility.js";
|
|
5
6
|
import { classifyUpgradeOutcome, isBlockedUpgradeOutcome, shouldIncludeCrossMajorPlanItems, } from "./versionResolution.js";
|
|
6
|
-
import {
|
|
7
|
+
import { resolveInvokedUpdateChannel } from "./channels.js";
|
|
7
8
|
import { buildUpgradeCommands } from "./upgradeCommands.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
9
|
+
import { pendingRuntimeMigrationItems } from "./projectIntegration.js";
|
|
10
|
+
import { REMOVE_LEGACY_AGENT_ACTION, planLegacyAgentCleanupItems, planLegacyCapabilityAgentCleanupItems, } from "./legacyAgentCleanup.js";
|
|
11
|
+
import { MIGRATION_STATUSES, applyMigrationPhases, delegatePlanLifecycleToEntityCutover, detectV1ArtifactPairs, dryRunMigration, hasPendingPlanLifecycleMigration, } from "./migrateArtifactsV2ToV3.js";
|
|
12
|
+
import { runLifecycleUpgrade, } from "./lifecycleUpgrade.js";
|
|
13
|
+
import { acquireUpgradeLock, releaseUpgradeLock } from "./upgradeLock.js";
|
|
14
|
+
import { applyPreparedEntityCutover, inspectEntityCutoverForUpgrade, prepareEntityCutoverForUpgrade, } from "../state/entityCutover.js";
|
|
15
|
+
import { detectStateMode } from "../state/stateMode.js";
|
|
10
16
|
const DEFAULT_PHASES = ["detect", "artifacts", "runtime", "cleanup"];
|
|
11
17
|
const MIGRATION_ONLY_PHASES = ["artifacts", "runtime", "cleanup"];
|
|
12
18
|
function emptySummary() {
|
|
13
|
-
return { pending: 0, applied: 0, noop: 0, blocked: 0, failed: 0
|
|
19
|
+
return { pending: 0, applied: 0, noop: 0, blocked: 0, failed: 0 };
|
|
14
20
|
}
|
|
15
21
|
function aggregateSummary(phases) {
|
|
16
22
|
const summary = emptySummary();
|
|
@@ -30,8 +36,6 @@ function workflowStatus(summary) {
|
|
|
30
36
|
return "pending";
|
|
31
37
|
if (summary.applied > 0)
|
|
32
38
|
return "applied";
|
|
33
|
-
if (summary.skipped > 0 && summary.noop === 0 && summary.applied === 0)
|
|
34
|
-
return "skipped";
|
|
35
39
|
return "noop";
|
|
36
40
|
}
|
|
37
41
|
function lifecycleStatusFromWorkflow(workflow, mode) {
|
|
@@ -41,7 +45,6 @@ function lifecycleStatusFromWorkflow(workflow, mode) {
|
|
|
41
45
|
case "applied":
|
|
42
46
|
return STATUS_APPLIED;
|
|
43
47
|
case "noop":
|
|
44
|
-
case "skipped":
|
|
45
48
|
return STATUS_NO_CHANGES_NEEDED;
|
|
46
49
|
case "blocked":
|
|
47
50
|
case "failed":
|
|
@@ -76,8 +79,6 @@ function summarizeOrchestratorPhase(name, items, message = "") {
|
|
|
76
79
|
status = "pending";
|
|
77
80
|
else if (summary.applied > 0)
|
|
78
81
|
status = "applied";
|
|
79
|
-
else if (summary.skipped > 0 && summary.noop === 0 && summary.applied === 0)
|
|
80
|
-
status = "skipped";
|
|
81
82
|
else
|
|
82
83
|
status = "noop";
|
|
83
84
|
return { name, status, summary, items, message };
|
|
@@ -123,13 +124,127 @@ function migrationPhaseToOrchestrator(phase) {
|
|
|
123
124
|
message: phase.message,
|
|
124
125
|
};
|
|
125
126
|
}
|
|
127
|
+
function entityReadinessPhase(project, sourceRoot, pendingV1Artifacts, selected, apply, activeUpgradeLockPaths) {
|
|
128
|
+
try {
|
|
129
|
+
const cutover = inspectEntityCutoverForUpgrade(project, sourceRoot, apply && selected, activeUpgradeLockPaths);
|
|
130
|
+
if (cutover.phase === "active") {
|
|
131
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
132
|
+
status: "noop",
|
|
133
|
+
action: "entity-state-active",
|
|
134
|
+
message: "validated entity authority is already active",
|
|
135
|
+
}]);
|
|
136
|
+
}
|
|
137
|
+
if (cutover.phase !== "ready") {
|
|
138
|
+
if (!selected) {
|
|
139
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
140
|
+
status: "blocked",
|
|
141
|
+
action: "entity-cutover-required",
|
|
142
|
+
message: "a forward entity cutover must complete inside one full upgrade before any filtered effects",
|
|
143
|
+
}]);
|
|
144
|
+
}
|
|
145
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
146
|
+
status: "pending",
|
|
147
|
+
action: "entity-cutover",
|
|
148
|
+
message: "validated forward entity publication is ready to complete without deleting canonical entities",
|
|
149
|
+
}]);
|
|
150
|
+
}
|
|
151
|
+
if (!selected) {
|
|
152
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
153
|
+
status: "blocked",
|
|
154
|
+
action: "entity-cutover-required",
|
|
155
|
+
message: "marker-absent projects require one full cross-major upgrade; filtered apply is unavailable",
|
|
156
|
+
}]);
|
|
157
|
+
}
|
|
158
|
+
if (pendingV1Artifacts) {
|
|
159
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
160
|
+
status: "blocked",
|
|
161
|
+
action: "resolve-v1-state",
|
|
162
|
+
message: "pending v1 Markdown state is not a supported automatic source; preserve it and follow the manual v1 recovery instructions in UPGRADE.md",
|
|
163
|
+
}]);
|
|
164
|
+
}
|
|
165
|
+
const empty = cutover.entityCount === 0;
|
|
166
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
167
|
+
status: empty ? "blocked" : "pending",
|
|
168
|
+
action: empty ? "unsupported-state-source" : "entity-cutover",
|
|
169
|
+
message: empty
|
|
170
|
+
? "marker-absent state has no recognized v2 entity input; preserve it and follow the manual source recovery instructions in UPGRADE.md"
|
|
171
|
+
: `${cutover.entityCount} entity record(s) are ready for marker-last Git cutover${cutover.todoReconciliation ? "; apply also journals TODO visible IDs, Markdown-owned public baselines, activation, canonical Markdown, and the authority marker" : ""}`,
|
|
172
|
+
}]);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
return summarizeOrchestratorPhase("entities", [{
|
|
176
|
+
status: "blocked",
|
|
177
|
+
action: "validate-entity-state",
|
|
178
|
+
message: error.message,
|
|
179
|
+
}]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function lifecyclePhase(result) {
|
|
183
|
+
const cleanup = result.cleanupSummary;
|
|
184
|
+
const summary = {
|
|
185
|
+
pending: cleanup.pending,
|
|
186
|
+
applied: cleanup.applied,
|
|
187
|
+
noop: cleanup.noop,
|
|
188
|
+
failed: cleanup.failed,
|
|
189
|
+
blocked: cleanup.blocked_unowned + cleanup.skipped_dependency + cleanup.action_required,
|
|
190
|
+
};
|
|
191
|
+
return {
|
|
192
|
+
name: "lifecycle",
|
|
193
|
+
status: workflowStatus(summary),
|
|
194
|
+
summary,
|
|
195
|
+
items: [],
|
|
196
|
+
message: "summary only; selected native Agentera resource cleanup outcomes are reported under lifecycle.nativeResourceCleanup",
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function isIndependentLegacyAgentCollision(phase, item) {
|
|
200
|
+
return phase.name === "cleanup" && item.action === REMOVE_LEGACY_AGENT_ACTION && item.status === "blocked";
|
|
201
|
+
}
|
|
126
202
|
export function buildUpgradePlan(args) {
|
|
127
|
-
|
|
203
|
+
if (args.runtime) {
|
|
204
|
+
throw new Error(`--runtime ${args.runtime} is retired; use the shared skill at ~/.agents/skills/agentera plus the CLI and remove --runtime`);
|
|
205
|
+
}
|
|
128
206
|
const home = resolvePath(expanduser(args.home ?? os.homedir()));
|
|
129
|
-
const env = { ...process.env, HOME: home };
|
|
130
207
|
const project = resolvePath(expanduser(args.project ?? process.cwd()));
|
|
208
|
+
if (!args.yes)
|
|
209
|
+
return buildUpgradePlanUnlocked(args, home, project, []);
|
|
210
|
+
const projectLock = acquireUpgradeLock(project, "project");
|
|
211
|
+
try {
|
|
212
|
+
const runtimeLock = acquireUpgradeLock(home, "runtime");
|
|
213
|
+
try {
|
|
214
|
+
return buildUpgradePlanUnlocked(args, home, project, [projectLock.path, runtimeLock.path]);
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
releaseUpgradeLock(runtimeLock);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
finally {
|
|
221
|
+
releaseUpgradeLock(projectLock);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function buildUpgradePlanUnlocked(args, home, project, activeUpgradeLockPaths) {
|
|
225
|
+
const sourceRoot = resolveSourceRootStrict();
|
|
226
|
+
const homeScopedPath = (value) => {
|
|
227
|
+
if (!value)
|
|
228
|
+
return null;
|
|
229
|
+
// Relative overrides retain their normal process-cwd meaning before the
|
|
230
|
+
// resolved path is checked. The home itself and its descendants are valid.
|
|
231
|
+
const resolved = resolvePath(value);
|
|
232
|
+
const relative = path.relative(home, resolved);
|
|
233
|
+
const withinHome = relative === ""
|
|
234
|
+
|| (relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));
|
|
235
|
+
return withinHome ? resolved : null;
|
|
236
|
+
};
|
|
237
|
+
const xdgConfigHome = homeScopedPath(process.env.XDG_CONFIG_HOME) ?? path.join(home, ".config");
|
|
238
|
+
const env = {
|
|
239
|
+
...process.env,
|
|
240
|
+
HOME: home,
|
|
241
|
+
XDG_CONFIG_HOME: xdgConfigHome,
|
|
242
|
+
};
|
|
243
|
+
if (!homeScopedPath(process.env.OPENCODE_CONFIG_DIR)) {
|
|
244
|
+
delete env.OPENCODE_CONFIG_DIR;
|
|
245
|
+
}
|
|
131
246
|
const [installRoot] = resolveDoctorInstallRoot(args.installRoot ?? null, { home, sourceRoot });
|
|
132
|
-
const channel =
|
|
247
|
+
const channel = resolveInvokedUpdateChannel({
|
|
133
248
|
channel: args.channel ?? null,
|
|
134
249
|
env,
|
|
135
250
|
home,
|
|
@@ -143,6 +258,42 @@ export function buildUpgradePlan(args) {
|
|
|
143
258
|
channel,
|
|
144
259
|
});
|
|
145
260
|
const crossMajorBoundary = crossMajorBoundaryApplies(install, sourceRoot);
|
|
261
|
+
if (args.legacyCleanup) {
|
|
262
|
+
const lifecycle = runLifecycleUpgrade({
|
|
263
|
+
home,
|
|
264
|
+
appHome: installRoot,
|
|
265
|
+
apply: Boolean(args.yes),
|
|
266
|
+
resourceCleanup: args.legacyCleanup,
|
|
267
|
+
});
|
|
268
|
+
const phases = [lifecyclePhase(lifecycle)];
|
|
269
|
+
const summary = aggregateSummary(phases);
|
|
270
|
+
const status = workflowStatus(summary);
|
|
271
|
+
const commands = buildUpgradeCommands({
|
|
272
|
+
project,
|
|
273
|
+
installRoot: crossMajorBoundary ? installRoot : null,
|
|
274
|
+
channel,
|
|
275
|
+
legacyCleanup: args.legacyCleanup,
|
|
276
|
+
cwdDefault: true,
|
|
277
|
+
});
|
|
278
|
+
return {
|
|
279
|
+
schemaVersion: UPGRADE_PREVIEW_SCHEMA,
|
|
280
|
+
mode: args.yes ? "apply" : "plan",
|
|
281
|
+
status,
|
|
282
|
+
lifecycleStatus: lifecycleStatusFromWorkflow(status, args.yes ? "apply" : "plan"),
|
|
283
|
+
channel,
|
|
284
|
+
install,
|
|
285
|
+
upgradeOutcome,
|
|
286
|
+
crossMajorBoundary,
|
|
287
|
+
project,
|
|
288
|
+
appHome: installRoot,
|
|
289
|
+
home,
|
|
290
|
+
phases,
|
|
291
|
+
lifecycle,
|
|
292
|
+
summary,
|
|
293
|
+
dryRunCommand: summary.pending > 0 ? commands.dryRunCommand : null,
|
|
294
|
+
applyCommand: summary.pending > 0 ? commands.applyCommand : null,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
146
297
|
const phaseFilter = selectedPhases(args.only);
|
|
147
298
|
const migrationCtx = {
|
|
148
299
|
appHome: installRoot,
|
|
@@ -152,32 +303,77 @@ export function buildUpgradePlan(args) {
|
|
|
152
303
|
sourceRoot,
|
|
153
304
|
channel: args.channel ?? null,
|
|
154
305
|
env,
|
|
306
|
+
installAppContentIfMissing: false,
|
|
155
307
|
};
|
|
156
|
-
const
|
|
308
|
+
const pendingRuntimeSync = pendingRuntimeMigrationItems(migrationCtx).length > 0;
|
|
157
309
|
const pendingV1Artifacts = detectV1ArtifactPairs(project).length > 0;
|
|
310
|
+
const pendingPlanLifecycleMigration = hasPendingPlanLifecycleMigration(project);
|
|
158
311
|
const crossMajorMigration = crossMajorBoundary && shouldIncludeCrossMajorPlanItems(channel, upgradeOutcome);
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
312
|
+
const entityAuthorityActive = detectStateMode(project, sourceRoot) === "entities";
|
|
313
|
+
const projectEntityCutover = !entityAuthorityActive
|
|
314
|
+
&& channel.distributionMajor >= 3
|
|
315
|
+
&& !args.only
|
|
316
|
+
&& !args.legacyCleanup;
|
|
317
|
+
const pendingCleanup = [
|
|
318
|
+
...planLegacyAgentCleanupItems(migrationCtx),
|
|
319
|
+
...planLegacyCapabilityAgentCleanupItems(migrationCtx),
|
|
320
|
+
].some((item) => item.status !== "noop");
|
|
321
|
+
const runMigration = crossMajorMigration || projectEntityCutover || pendingRuntimeSync || pendingV1Artifacts || pendingPlanLifecycleMigration || pendingCleanup;
|
|
169
322
|
const phases = [];
|
|
170
323
|
if (phaseFilter.has("detect")) {
|
|
171
324
|
phases.push(buildDetectPhase(install, crossMajorBoundary, upgradeOutcome, channel));
|
|
172
325
|
}
|
|
173
326
|
let migrationPreview = runMigration ? dryRunMigration(migrationCtx) : null;
|
|
174
|
-
|
|
175
|
-
|
|
327
|
+
const entityBoundary = projectEntityCutover || crossMajorMigration;
|
|
328
|
+
const filteredEntityBoundary = entityBoundary && Boolean(args.only && args.only.length > 0);
|
|
329
|
+
const entitySelected = entityBoundary && (!filteredEntityBoundary || (!args.yes && Boolean(args.only?.includes("artifacts"))));
|
|
330
|
+
const partialStateApply = filteredEntityBoundary && !entitySelected;
|
|
331
|
+
let entityPhase = entitySelected || partialStateApply || (entityAuthorityActive && crossMajorMigration)
|
|
332
|
+
? entityReadinessPhase(project, sourceRoot, pendingV1Artifacts, entitySelected, Boolean(args.yes), activeUpgradeLockPaths)
|
|
333
|
+
: null;
|
|
334
|
+
const entityCutoverPending = entityPhase?.items.some(({ action }) => action === "entity-cutover") ?? false;
|
|
335
|
+
if (migrationPreview && (entityAuthorityActive || (args.yes && entityCutoverPending))) {
|
|
336
|
+
delegatePlanLifecycleToEntityCutover(migrationPreview.artifacts);
|
|
337
|
+
}
|
|
338
|
+
const lifecycleArgs = args.legacyCleanup ? {
|
|
339
|
+
home,
|
|
340
|
+
appHome: installRoot,
|
|
341
|
+
apply: false,
|
|
342
|
+
resourceCleanup: args.legacyCleanup,
|
|
343
|
+
} : null;
|
|
344
|
+
let lifecycle = lifecycleArgs ? runLifecycleUpgrade(lifecycleArgs) : null;
|
|
345
|
+
const plannedPhases = [
|
|
346
|
+
...phases,
|
|
347
|
+
...(migrationPreview && phaseFilter.has("artifacts") ? [migrationPhaseToOrchestrator(migrationPreview.artifacts)] : []),
|
|
348
|
+
...(entityPhase ? [entityPhase] : []),
|
|
349
|
+
...(migrationPreview && phaseFilter.has("runtime") ? [migrationPhaseToOrchestrator(migrationPreview.runtime)] : []),
|
|
350
|
+
...(migrationPreview && phaseFilter.has("cleanup") ? [migrationPhaseToOrchestrator(migrationPreview.cleanup)] : []),
|
|
351
|
+
...(lifecycle ? [lifecyclePhase(lifecycle)] : []),
|
|
352
|
+
];
|
|
353
|
+
const entityPreflight = aggregateSummary(plannedPhases.filter((phase) => ["detect", "artifacts", "entities"].includes(phase.name)));
|
|
354
|
+
const entityPreflightBlocked = entityPreflight.blocked > 0 || entityPreflight.failed > 0;
|
|
355
|
+
let preparedEntityMigration = null;
|
|
356
|
+
if (args.yes && entitySelected && entityPhase?.status === "pending" && !entityPreflightBlocked) {
|
|
357
|
+
preparedEntityMigration = prepareEntityCutoverForUpgrade(project, sourceRoot, activeUpgradeLockPaths);
|
|
358
|
+
}
|
|
359
|
+
if (preparedEntityMigration) {
|
|
360
|
+
const result = applyPreparedEntityCutover(preparedEntityMigration, activeUpgradeLockPaths);
|
|
361
|
+
entityPhase = summarizeOrchestratorPhase("entities", [{
|
|
362
|
+
status: "applied",
|
|
363
|
+
action: "entity-cutover",
|
|
364
|
+
message: `${result.entity_count} entity record(s) published and validated; authority marker written last`,
|
|
365
|
+
}]);
|
|
366
|
+
}
|
|
367
|
+
if (args.yes && migrationPreview && !entityPreflightBlocked) {
|
|
368
|
+
const applyPhases = args.only ?? MIGRATION_ONLY_PHASES;
|
|
369
|
+
migrationPreview = applyMigrationPhases(migrationCtx, migrationPreview, applyPhases);
|
|
176
370
|
}
|
|
177
371
|
if (migrationPreview) {
|
|
178
372
|
if (phaseFilter.has("artifacts")) {
|
|
179
373
|
phases.push(migrationPhaseToOrchestrator(migrationPreview.artifacts));
|
|
180
374
|
}
|
|
375
|
+
if (entityPhase)
|
|
376
|
+
phases.push(entityPhase);
|
|
181
377
|
if (phaseFilter.has("runtime")) {
|
|
182
378
|
phases.push(migrationPhaseToOrchestrator(migrationPreview.runtime));
|
|
183
379
|
}
|
|
@@ -185,43 +381,27 @@ export function buildUpgradePlan(args) {
|
|
|
185
381
|
phases.push(migrationPhaseToOrchestrator(migrationPreview.cleanup));
|
|
186
382
|
}
|
|
187
383
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
catalog: null,
|
|
196
|
-
});
|
|
197
|
-
for (const guardPhase of guard.phases) {
|
|
198
|
-
if (guardPhase.name === "detect" || !phaseFilter.has(guardPhase.name)) {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
const items = guardPhase.items.map((item) => ({
|
|
202
|
-
status: "blocked",
|
|
203
|
-
action: item.verb,
|
|
204
|
-
message: `${item.name} requires semver forward-major confirmation on the selected channel`,
|
|
205
|
-
}));
|
|
206
|
-
phases.push({
|
|
207
|
-
name: guardPhase.name,
|
|
208
|
-
status: items.length > 0 ? "blocked" : "noop",
|
|
209
|
-
summary: { ...emptySummary(), blocked: items.length },
|
|
210
|
-
items,
|
|
211
|
-
message: "",
|
|
212
|
-
});
|
|
213
|
-
}
|
|
384
|
+
if (!migrationPreview && entityPhase)
|
|
385
|
+
phases.push(entityPhase);
|
|
386
|
+
if (lifecycleArgs && args.yes && !entityPreflightBlocked) {
|
|
387
|
+
lifecycle = runLifecycleUpgrade({ ...lifecycleArgs, apply: true });
|
|
388
|
+
}
|
|
389
|
+
if (lifecycle) {
|
|
390
|
+
phases.push(lifecyclePhase(lifecycle));
|
|
214
391
|
}
|
|
215
392
|
const summary = aggregateSummary(phases);
|
|
216
393
|
const status = workflowStatus(summary);
|
|
394
|
+
const appSummary = aggregateSummary(phases.filter((phase) => phase.name !== "lifecycle"));
|
|
395
|
+
const appApplyBlocked = appSummary.blocked > 0 || appSummary.failed > 0;
|
|
217
396
|
const mode = args.yes ? "apply" : "plan";
|
|
218
397
|
const lifecycleStatus = lifecycleStatusFromWorkflow(status, mode);
|
|
219
|
-
const
|
|
398
|
+
const hasPending = summary.pending > 0;
|
|
220
399
|
const commands = buildUpgradeCommands({
|
|
221
400
|
project,
|
|
222
401
|
installRoot: crossMajorMigration || crossMajorBoundary ? installRoot : null,
|
|
223
402
|
channel,
|
|
224
|
-
only: args.only
|
|
403
|
+
only: args.only,
|
|
404
|
+
legacyCleanup: args.legacyCleanup,
|
|
225
405
|
cwdDefault: true,
|
|
226
406
|
});
|
|
227
407
|
return {
|
|
@@ -237,9 +417,10 @@ export function buildUpgradePlan(args) {
|
|
|
237
417
|
appHome: installRoot,
|
|
238
418
|
home,
|
|
239
419
|
phases,
|
|
420
|
+
lifecycle,
|
|
240
421
|
summary,
|
|
241
|
-
dryRunCommand:
|
|
242
|
-
applyCommand:
|
|
422
|
+
dryRunCommand: appApplyBlocked || !hasPending ? null : commands.dryRunCommand,
|
|
423
|
+
applyCommand: appApplyBlocked || !hasPending ? null : commands.applyCommand,
|
|
243
424
|
};
|
|
244
425
|
}
|
|
245
426
|
export function validateUpgradeApply(args, plan) {
|
|
@@ -249,10 +430,25 @@ export function validateUpgradeApply(args, plan) {
|
|
|
249
430
|
if (!args.yes) {
|
|
250
431
|
return null;
|
|
251
432
|
}
|
|
252
|
-
if (
|
|
433
|
+
if (plan.crossMajorBoundary && args.only && args.only.length > 0) {
|
|
434
|
+
return "cross-major v2→v3 apply must run as one full upgrade --yes; --only is preview-only at this boundary";
|
|
435
|
+
}
|
|
436
|
+
if (!args.legacyCleanup && isBlockedUpgradeOutcome(plan.upgradeOutcome)) {
|
|
253
437
|
return plan.upgradeOutcome.message ?? "upgrade blocked";
|
|
254
438
|
}
|
|
255
|
-
|
|
439
|
+
const appPhases = plan.phases.filter((phase) => phase.name !== "lifecycle");
|
|
440
|
+
const entityImportPending = appPhases.some((phase) => phase.name === "entities" && phase.items.some((item) => item.action === "entity-cutover" && item.status === "pending"));
|
|
441
|
+
const applyBlockingPhases = entityImportPending
|
|
442
|
+
? appPhases.filter((phase) => ["detect", "artifacts", "entities"].includes(phase.name))
|
|
443
|
+
: appPhases;
|
|
444
|
+
const blockingItems = applyBlockingPhases.flatMap((phase) => phase.items.filter((item) => (item.status === "blocked" || item.status === "failed") && !isIndependentLegacyAgentCollision(phase, item)));
|
|
445
|
+
if (blockingItems.length > 0) {
|
|
446
|
+
return blockingItems[0]?.message
|
|
447
|
+
?? "upgrade preflight is blocked; no changes were applied";
|
|
448
|
+
}
|
|
449
|
+
if (!args.legacyCleanup
|
|
450
|
+
&&
|
|
451
|
+
plan.crossMajorBoundary &&
|
|
256
452
|
!shouldIncludeCrossMajorPlanItems(plan.channel, plan.upgradeOutcome)) {
|
|
257
453
|
return ("cross-major v2→v3 migration requires the development channel while stable tracks 2.x; " +
|
|
258
454
|
"run the same command with --dry-run on --channel development, then apply with --yes");
|
|
@@ -288,6 +484,15 @@ export function renderUpgradePlan(plan) {
|
|
|
288
484
|
}
|
|
289
485
|
}
|
|
290
486
|
}
|
|
487
|
+
if (plan.lifecycle) {
|
|
488
|
+
lines.push("");
|
|
489
|
+
lines.push("native Agentera resource cleanup:");
|
|
490
|
+
lines.push(` ownership journal: ${plan.lifecycle.ownershipJournal.state} at ${plan.lifecycle.ownershipJournal.path}`);
|
|
491
|
+
lines.push(` secure publication: ${plan.lifecycle.platform.securePublication ? "available" : "unavailable"} (${plan.lifecycle.platform.requirement})`);
|
|
492
|
+
lines.push(` scope: ownership-proven native Agentera resource ${plan.lifecycle.nativeResourceCleanup.resourceId}; unrelated user-owned data excluded`);
|
|
493
|
+
const cleanup = plan.lifecycle.cleanupSummary;
|
|
494
|
+
lines.push(` counts: pending=${cleanup.pending}, applied=${cleanup.applied}, noop=${cleanup.noop}, blocked=${cleanup.blocked_unowned + cleanup.action_required}`);
|
|
495
|
+
}
|
|
291
496
|
if (plan.mode === "plan" && plan.summary.pending > 0 && plan.applyCommand) {
|
|
292
497
|
lines.push("");
|
|
293
498
|
lines.push(`Next: if this preview looks right, apply with: ${plan.applyCommand}`);
|
|
@@ -317,4 +522,3 @@ export function sortKeysDeep(value) {
|
|
|
317
522
|
return value;
|
|
318
523
|
}
|
|
319
524
|
export { MAJOR_BOUNDARY_ITEM_TAG };
|
|
320
|
-
//# sourceMappingURL=upgradeOrchestrator.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { CAPABILITY_INSTRUCTIONS } from "../capabilities/index.js";
|
|
3
|
+
import { isFile } from "../core/paths.js";
|
|
4
|
+
const INSTRUCTION_MODULE_ROOT = path.join("packages", "cli", "src", "capabilities");
|
|
5
|
+
/**
|
|
6
|
+
* v3 repo signal (D65): all twelve capability instruction modules live under
|
|
7
|
+
* packages/cli/src/capabilities/<name>/instructions.ts. When present, in-tree
|
|
8
|
+
* .cursor/agents/ uses prime --context and must not be overwritten from a v2
|
|
9
|
+
* app-home bundle during runtime rewiring.
|
|
10
|
+
*/
|
|
11
|
+
export function projectUsesV3CapabilityInstructionModules(projectRoot) {
|
|
12
|
+
const root = path.resolve(projectRoot);
|
|
13
|
+
return Object.keys(CAPABILITY_INSTRUCTIONS).every((name) => isFile(path.join(root, INSTRUCTION_MODULE_ROOT, name, "instructions.ts")));
|
|
14
|
+
}
|
|
@@ -4,6 +4,7 @@ import { isNpxBundleRoot } from "../core/sourceRoot.js";
|
|
|
4
4
|
import { classifyResolvedRoot } from "../state/installRoot.js";
|
|
5
5
|
import { doctorRoots, loadSuiteVersion } from "./appModel.js";
|
|
6
6
|
import { loadUpdateChannelsAuthority } from "./channels.js";
|
|
7
|
+
import { isStableSuccessorAnnounced } from "./nextMajorDoctor.js";
|
|
7
8
|
export const IRREVERSIBLE_V2_RETURN = "return to the v2 Python line is permanently unsupported after migrating to v3+";
|
|
8
9
|
let testVersionCatalog = null;
|
|
9
10
|
/** Reset injectable catalog (tests). */
|
|
@@ -132,6 +133,13 @@ export function classifyUpgradeOutcome(args) {
|
|
|
132
133
|
message: "stable channel tracks the 2.x support line; switch to the development channel to preview v2→v3 migration",
|
|
133
134
|
};
|
|
134
135
|
}
|
|
136
|
+
if (!isStableSuccessorAnnounced(args.sourceRoot, "stable")) {
|
|
137
|
+
return {
|
|
138
|
+
...base,
|
|
139
|
+
kind: "up_to_date",
|
|
140
|
+
message: `v3 successor line is not announced yet; v2 managed app files remain current on the ${args.channel.channel} channel`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
135
143
|
return {
|
|
136
144
|
...base,
|
|
137
145
|
kind: "migration_to_latest_on_channel",
|
|
@@ -176,4 +184,3 @@ export function isBlockedUpgradeOutcome(outcome) {
|
|
|
176
184
|
return (outcome.kind === "blocked_downgrade_to_v2" ||
|
|
177
185
|
outcome.kind === "blocked_downgrade_not_implemented");
|
|
178
186
|
}
|
|
179
|
-
//# sourceMappingURL=versionResolution.js.map
|