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
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { observeLifecyclePath, publishLifecycleResource, removeLifecycleResource, verifyLifecycleResourceAtPublication, withPinnedLifecycleDirectory, } from "../runtime/lifecyclePublication.js";
|
|
4
|
+
const evidenceByItem = new WeakMap();
|
|
5
|
+
const MIGRATION_EVIDENCE = Symbol.for("agentera.migrationMutationEvidence");
|
|
6
|
+
function evidenceFor(item) {
|
|
7
|
+
const existing = evidenceByItem.get(item) ?? item[MIGRATION_EVIDENCE];
|
|
8
|
+
if (existing)
|
|
9
|
+
return existing;
|
|
10
|
+
const created = { resources: {} };
|
|
11
|
+
evidenceByItem.set(item, created);
|
|
12
|
+
item[MIGRATION_EVIDENCE] = created;
|
|
13
|
+
return created;
|
|
14
|
+
}
|
|
15
|
+
function readEvidence(item) {
|
|
16
|
+
return evidenceByItem.get(item) ?? item[MIGRATION_EVIDENCE];
|
|
17
|
+
}
|
|
18
|
+
export function cloneMigrationItem(item) {
|
|
19
|
+
const clone = { ...item };
|
|
20
|
+
const evidence = readEvidence(item);
|
|
21
|
+
if (evidence) {
|
|
22
|
+
evidenceByItem.set(clone, evidence);
|
|
23
|
+
clone[MIGRATION_EVIDENCE] = evidence;
|
|
24
|
+
}
|
|
25
|
+
return clone;
|
|
26
|
+
}
|
|
27
|
+
function observationError(destination, observation, expectedKind) {
|
|
28
|
+
if (observation.unsafeReason)
|
|
29
|
+
return observation.unsafeReason;
|
|
30
|
+
if (!observation.parentComplete)
|
|
31
|
+
return `parent chain is incomplete for ${destination}`;
|
|
32
|
+
if (observation.kind !== expectedKind || !observation.identity || !observation.fingerprint) {
|
|
33
|
+
return `${destination} is not an observable ${expectedKind}`;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
export function bindMigrationResource(item, role, destination, allowedRoots, kind) {
|
|
38
|
+
const observation = observeLifecyclePath(destination, allowedRoots);
|
|
39
|
+
const error = observationError(destination, observation, kind);
|
|
40
|
+
if (error)
|
|
41
|
+
return error;
|
|
42
|
+
evidenceFor(item).resources[role] = { destination, kind, observation };
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
function boundResource(item, role) {
|
|
46
|
+
const resource = readEvidence(item)?.resources[role];
|
|
47
|
+
if (!resource)
|
|
48
|
+
throw new Error(`migration ${role} publication evidence is missing`);
|
|
49
|
+
return resource;
|
|
50
|
+
}
|
|
51
|
+
export function verifyBoundMigrationResource(item, role) {
|
|
52
|
+
const resource = boundResource(item, role);
|
|
53
|
+
verifyLifecycleResourceAtPublication({ id: `${item.action}.${role}`, destination: resource.destination, kind: resource.kind }, resource.observation);
|
|
54
|
+
}
|
|
55
|
+
export function withBoundMigrationDirectory(item, role, callback, hook) {
|
|
56
|
+
const resource = boundResource(item, role);
|
|
57
|
+
if (resource.kind !== "directory")
|
|
58
|
+
throw new Error(`migration ${role} is not a directory`);
|
|
59
|
+
return withPinnedLifecycleDirectory({ id: `${item.action}.${role}`, destination: resource.destination, kind: "directory" }, resource.observation, callback, hook);
|
|
60
|
+
}
|
|
61
|
+
export function updateBoundMigrationFile(item, role, content) {
|
|
62
|
+
const resource = boundResource(item, role);
|
|
63
|
+
if (resource.kind !== "file")
|
|
64
|
+
throw new Error(`migration ${role} is not a file`);
|
|
65
|
+
publishLifecycleResource({ id: `${item.action}.${role}`, destination: resource.destination, kind: "file", content }, "update", resource.observation);
|
|
66
|
+
}
|
|
67
|
+
export function removeBoundMigrationResource(item, role) {
|
|
68
|
+
const resource = boundResource(item, role);
|
|
69
|
+
removeLifecycleResource({ id: `${item.action}.${role}`, destination: resource.destination, kind: resource.kind }, resource.observation);
|
|
70
|
+
}
|
|
71
|
+
function walkTree(root) {
|
|
72
|
+
const entries = [];
|
|
73
|
+
const walk = (destination) => {
|
|
74
|
+
const stat = fs.lstatSync(destination);
|
|
75
|
+
const kind = stat.isSymbolicLink()
|
|
76
|
+
? "symlink"
|
|
77
|
+
: stat.isFile()
|
|
78
|
+
? "file"
|
|
79
|
+
: stat.isDirectory()
|
|
80
|
+
? "directory"
|
|
81
|
+
: (() => { throw new Error(`unsupported bundle entry type at ${destination}`); })();
|
|
82
|
+
entries.push({ destination, kind });
|
|
83
|
+
if (kind === "directory") {
|
|
84
|
+
for (const name of fs.readdirSync(destination).sort())
|
|
85
|
+
walk(path.join(destination, name));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
walk(root);
|
|
89
|
+
return entries;
|
|
90
|
+
}
|
|
91
|
+
export function bindMigrationTree(item, root, allowedRoots) {
|
|
92
|
+
try {
|
|
93
|
+
const tree = walkTree(root).map(({ destination, kind }) => {
|
|
94
|
+
const observation = observeLifecyclePath(destination, allowedRoots);
|
|
95
|
+
const error = observationError(destination, observation, kind);
|
|
96
|
+
if (error)
|
|
97
|
+
throw new Error(error);
|
|
98
|
+
return { destination, kind, observation };
|
|
99
|
+
});
|
|
100
|
+
evidenceFor(item).tree = tree;
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
return error.message;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export function removeBoundMigrationTree(item) {
|
|
108
|
+
const tree = readEvidence(item)?.tree;
|
|
109
|
+
if (!tree)
|
|
110
|
+
throw new Error("migration cleanup tree evidence is missing");
|
|
111
|
+
const current = walkTree(tree[0].destination);
|
|
112
|
+
if (current.length !== tree.length
|
|
113
|
+
|| current.some((entry, index) => entry.destination !== tree[index]?.destination || entry.kind !== tree[index]?.kind)) {
|
|
114
|
+
throw new Error("managed app cleanup set changed after preview");
|
|
115
|
+
}
|
|
116
|
+
for (const entry of tree) {
|
|
117
|
+
verifyLifecycleResourceAtPublication({ id: `${item.action}.verify`, destination: entry.destination, kind: entry.kind }, entry.observation);
|
|
118
|
+
}
|
|
119
|
+
for (const entry of [...tree].reverse()) {
|
|
120
|
+
removeLifecycleResource({ id: `${item.action}.remove`, destination: entry.destination, kind: entry.kind }, entry.observation);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -14,6 +14,7 @@ export const V1_NEXT_MAJOR_FALLBACK = {
|
|
|
14
14
|
currentChannel: "stable",
|
|
15
15
|
channel: "stable",
|
|
16
16
|
version: "2.x",
|
|
17
|
+
announced: true,
|
|
17
18
|
npmOnlyAdvisory: "",
|
|
18
19
|
guideUrl: "https://github.com/jgabor/agentera/blob/main/UPGRADE.md#recommended-upgrade-v1--v2-stable-channel",
|
|
19
20
|
previewCommand: "npx -y agentera@latest upgrade --dry-run",
|
|
@@ -45,12 +46,30 @@ function parseNextMajorBlock(raw) {
|
|
|
45
46
|
concept: String(block.concept ?? "forward_successor_line").trim(),
|
|
46
47
|
channel: channel,
|
|
47
48
|
version,
|
|
49
|
+
announced: block.announced !== false,
|
|
48
50
|
npmOnlyAdvisory: String(block.npm_only_advisory ?? "").trim(),
|
|
49
51
|
guideUrl,
|
|
50
52
|
previewCommand,
|
|
51
53
|
irreversibleAdvisory,
|
|
52
54
|
};
|
|
53
55
|
}
|
|
56
|
+
let testSuccessorAnnouncedOverride = null;
|
|
57
|
+
/** Reset injectable successor announcement gate (tests). */
|
|
58
|
+
export function setSuccessorAnnouncedOverrideForTests(value) {
|
|
59
|
+
testSuccessorAnnouncedOverride = value;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* True when the resolved channel's successor metadata exists and is announced
|
|
63
|
+
* for doctor/prime. Defaults to the stable channel so legacy callers that
|
|
64
|
+
* omit the argument behave identically to pre-fix behavior.
|
|
65
|
+
*/
|
|
66
|
+
export function isStableSuccessorAnnounced(sourceRoot, channel = "stable") {
|
|
67
|
+
if (testSuccessorAnnouncedOverride !== null) {
|
|
68
|
+
return testSuccessorAnnouncedOverride;
|
|
69
|
+
}
|
|
70
|
+
const block = loadChannelNextMajor(sourceRoot, channel);
|
|
71
|
+
return block?.announced === true;
|
|
72
|
+
}
|
|
54
73
|
export function loadChannelNextMajor(sourceRoot, channel) {
|
|
55
74
|
const authority = loadUpdateChannelsAuthority(sourceRoot);
|
|
56
75
|
const channels = authority.channels;
|
|
@@ -73,10 +92,23 @@ export function formatNextMajorDoctorLines(args) {
|
|
|
73
92
|
args.block.irreversibleAdvisory,
|
|
74
93
|
];
|
|
75
94
|
}
|
|
95
|
+
function installTrackSkipsSuccessorBlock(install, sourceRoot) {
|
|
96
|
+
if (install?.kind === "v3_self_contained_npm") {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
if (install?.kind === "source_checkout" && cliDistributionMajor(sourceRoot) >= 3) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
76
104
|
export function resolveNextMajorDoctorLines(ctx) {
|
|
77
105
|
const env = ctx.env ?? process.env;
|
|
78
106
|
const home = ctx.home;
|
|
79
107
|
const sourceRoot = ctx.sourceRoot;
|
|
108
|
+
const install = ctx.install ?? null;
|
|
109
|
+
if (installTrackSkipsSuccessorBlock(install, sourceRoot)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
80
112
|
const selected = resolveSelectedChannel({
|
|
81
113
|
channel: ctx.channel ?? null,
|
|
82
114
|
env,
|
|
@@ -84,7 +116,10 @@ export function resolveNextMajorDoctorLines(ctx) {
|
|
|
84
116
|
sourceRoot,
|
|
85
117
|
});
|
|
86
118
|
const currentChannel = selected.channel;
|
|
87
|
-
const
|
|
119
|
+
const successorChannel = install?.kind === "v2_managed_app_home" ? "stable" : currentChannel;
|
|
120
|
+
const displayChannel = install?.kind === "v2_managed_app_home" ? "stable" : currentChannel;
|
|
121
|
+
const runningDistributionMajor = ctx.runningDistributionMajor ??
|
|
122
|
+
(install?.kind === "v2_managed_app_home" ? 2 : cliDistributionMajor(sourceRoot));
|
|
88
123
|
if (runningDistributionMajor === 1) {
|
|
89
124
|
const block = V1_NEXT_MAJOR_FALLBACK;
|
|
90
125
|
return formatNextMajorDoctorLines({
|
|
@@ -93,22 +128,22 @@ export function resolveNextMajorDoctorLines(ctx) {
|
|
|
93
128
|
block,
|
|
94
129
|
});
|
|
95
130
|
}
|
|
96
|
-
const authorityBlock = loadChannelNextMajor(sourceRoot,
|
|
97
|
-
if (!authorityBlock) {
|
|
131
|
+
const authorityBlock = loadChannelNextMajor(sourceRoot, successorChannel);
|
|
132
|
+
if (!authorityBlock || !authorityBlock.announced) {
|
|
98
133
|
return null;
|
|
99
134
|
}
|
|
100
135
|
const runningVersion = ctx.runningVersion ??
|
|
101
|
-
(
|
|
136
|
+
(install
|
|
102
137
|
? resolveRunningVersion({
|
|
103
|
-
appHome:
|
|
138
|
+
appHome: install.appHome,
|
|
104
139
|
sourceRoot,
|
|
105
|
-
install
|
|
140
|
+
install,
|
|
106
141
|
})
|
|
107
142
|
: null) ??
|
|
108
143
|
`${runningDistributionMajor}.x`;
|
|
109
144
|
return formatNextMajorDoctorLines({
|
|
110
145
|
currentVersion: runningVersion,
|
|
111
|
-
currentChannel,
|
|
146
|
+
currentChannel: displayChannel,
|
|
112
147
|
block: authorityBlock,
|
|
113
148
|
});
|
|
114
149
|
}
|
|
@@ -118,4 +153,3 @@ export function prependNextMajorDoctorSection(text, sectionLines) {
|
|
|
118
153
|
}
|
|
119
154
|
return `${sectionLines.join("\n")}\n\n${text}`;
|
|
120
155
|
}
|
|
121
|
-
//# sourceMappingURL=nextMajorDoctor.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { expanduser } from "../core/paths.js";
|
|
2
|
+
import { resolvePlatformAppHome } from "./appModel.js";
|
|
3
|
+
import { buildDoctorStatus } from "./doctor.js";
|
|
4
|
+
/** Shared npx platform app-home resolution for prime and projectIntegration. */
|
|
5
|
+
export function resolveNpxPlatformStatus(opts) {
|
|
6
|
+
const env = { ...process.env, ...(opts.env ?? {}), HOME: expanduser(opts.home) };
|
|
7
|
+
const platformRoot = resolvePlatformAppHome(opts.home, env);
|
|
8
|
+
const doctorOpts = {
|
|
9
|
+
rootSource: "default",
|
|
10
|
+
sourceRoot: opts.sourceRoot,
|
|
11
|
+
home: opts.home,
|
|
12
|
+
project: opts.project,
|
|
13
|
+
expectedCommands: opts.expectedCommands ?? ["prime"],
|
|
14
|
+
skipNpxBundleShortCircuit: true,
|
|
15
|
+
env,
|
|
16
|
+
};
|
|
17
|
+
if (opts.expectedVersion !== undefined) {
|
|
18
|
+
doctorOpts.expectedVersion = opts.expectedVersion;
|
|
19
|
+
}
|
|
20
|
+
const platformStatus = buildDoctorStatus(platformRoot, doctorOpts);
|
|
21
|
+
return { platformRoot, platformStatus };
|
|
22
|
+
}
|
|
@@ -1,91 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolvePath } from "../core/paths.js";
|
|
2
2
|
import { isNpxBundleRoot } from "../core/sourceRoot.js";
|
|
3
|
-
import {
|
|
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
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
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 {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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 === "
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
-
|
|
163
|
-
|
|
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
|
|
166
|
-
const
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
|
218
|
-
?
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
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
|
-
|
|
230
|
+
const previewText = summary.dry_run_command ? ` Preview ${preview}.` : "";
|
|
231
|
+
return `${prefix}: ${summary.message}${previewText}`;
|
|
273
232
|
}
|
|
274
|
-
//# sourceMappingURL=projectIntegration.js.map
|