agentera 3.0.0-dev.7 → 3.0.0-dev.74
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 +229 -22
- package/bundle/.agentera-build-source.json +8 -0
- package/bundle/CHANGELOG.md +1361 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +143 -0
- package/bundle/UPGRADE.md +252 -0
- package/bundle/extract-corpus-parity.json +2 -4
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-publication.json +484 -0
- package/bundle/references/adapters/package-registry.yaml +439 -188
- package/bundle/references/adapters/package-surface-characterization.md +68 -34
- 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 +559 -0
- package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
- package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
- package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
- package/bundle/references/analysis/verification-policy.yaml +266 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
- package/bundle/references/artifacts/glossary-entry-contract.yaml +2752 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
- 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 +152 -93
- package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
- package/bundle/references/cli/update-channels.yaml +6 -4
- package/bundle/references/cli/vocabulary-index.yaml +5 -7
- package/bundle/references/cli/vocabulary.md +52 -94
- package/bundle/references/meta/retained-reference-authority.yaml +166 -0
- package/bundle/skills/agentera/SKILL.md +183 -63
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
- package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
- package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
- package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
- package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
- package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
- package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
- package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
- package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
- package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
- package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
- package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
- package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
- package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
- package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
- package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
- package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
- package/bundle/skills/agentera/protocol.yaml +4 -4
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
- package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +464 -32
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
- package/dist/.agentera-build-source.json +8 -0
- package/dist/analytics/extractCorpus/cli.js +52 -11
- package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
- package/dist/analytics/extractCorpus/core.js +262 -14
- package/dist/analytics/extractCorpus/corpus.js +57 -18
- package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
- package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
- package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
- package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
- package/dist/analytics/extractCorpus/index.js +4 -2
- package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
- package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
- package/dist/analytics/extractCorpus/tierReader.js +108 -0
- package/dist/analytics/extractCorpus.js +0 -1
- package/dist/analytics/glossaryAdviceResolution.js +166 -0
- package/dist/analytics/glossaryInputAcquisition.js +319 -0
- package/dist/analytics/personalGlossaryAdmission.js +113 -0
- package/dist/analytics/personalGlossaryCandidateProjection.js +692 -0
- package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
- package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
- package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
- package/dist/analytics/personalGlossaryDecision.js +203 -0
- package/dist/analytics/personalGlossaryExplicit.js +788 -0
- package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
- package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
- package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
- package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
- package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
- package/dist/analytics/personalGlossaryProfile.js +229 -0
- package/dist/analytics/personalGlossaryRecurrence.js +618 -0
- package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
- package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
- package/dist/analytics/profileSignals.js +211 -0
- package/dist/analytics/usageStats.js +150 -23
- package/dist/audit/terminologyDrift.js +281 -0
- package/dist/bin/agentera.js +3 -2
- package/dist/capabilities/audit/instructions.js +16 -6
- package/dist/capabilities/build/instructions.js +59 -6
- package/dist/capabilities/design/instructions.js +3 -4
- package/dist/capabilities/discuss/instructions.js +29 -6
- package/dist/capabilities/document/instructions.js +11 -6
- package/dist/capabilities/index.js +20 -14
- package/dist/capabilities/optimize/instructions.js +14 -6
- package/dist/capabilities/orchestrate/instructions.js +42 -6
- package/dist/capabilities/plan/instructions.js +30 -3
- package/dist/capabilities/profile/instructions.js +104 -5
- package/dist/capabilities/research/instructions.js +4 -5
- package/dist/capabilities/status/instructions.js +15 -6
- package/dist/capabilities/status/startupInstructions.js +34 -0
- package/dist/capabilities/vision/instructions.js +3 -5
- package/dist/cli/appContext.js +14 -7
- package/dist/cli/argvalidate.js +0 -1
- package/dist/cli/capabilityContext/benchmark.js +5 -4
- package/dist/cli/capabilityContext/bespoke.js +14 -6
- package/dist/cli/capabilityContext/build.js +116 -42
- package/dist/cli/capabilityContext/closeout.js +30 -27
- package/dist/cli/capabilityContext/contract.js +18 -27
- package/dist/cli/capabilityContext/evidence.js +84 -77
- package/dist/cli/capabilityContext/index.js +0 -1
- package/dist/cli/capabilityContext/orchestration.js +42 -18
- package/dist/cli/capabilityContext/planState.js +89 -96
- package/dist/cli/capabilityContext/progress.js +51 -12
- package/dist/cli/capabilityContext/projectVerification.js +409 -0
- package/dist/cli/capabilityContext/shared.js +9 -20
- package/dist/cli/capabilityContext/slim.js +52 -8
- package/dist/cli/capabilityContext/startup.js +51 -114
- package/dist/cli/capabilityContext/startupAggregation.js +68 -0
- package/dist/cli/capabilityContext/types.js +26 -10
- package/dist/cli/capabilityContext.js +0 -1
- package/dist/cli/commands/appHome.js +0 -1
- package/dist/cli/commands/capability.js +2 -2
- package/dist/cli/commands/compact.js +163 -13
- package/dist/cli/commands/doctor.js +117 -11
- package/dist/cli/commands/durability.js +81 -0
- package/dist/cli/commands/glossaryAdvice.js +138 -0
- package/dist/cli/commands/lint.js +22 -8
- package/dist/cli/commands/personalGlossaryCandidateReads.js +744 -0
- package/dist/cli/commands/personalGlossaryDecision.js +349 -0
- package/dist/cli/commands/personalGlossaryPublish.js +484 -0
- package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
- package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
- package/dist/cli/commands/prime/briefOrientation.js +845 -0
- package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
- package/dist/cli/commands/prime/bundleStatus.js +54 -4
- package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
- package/dist/cli/commands/prime/collectOrientationState.js +126 -63
- package/dist/cli/commands/prime/orientationOutput.js +267 -56
- package/dist/cli/commands/prime/types.js +0 -1
- package/dist/cli/commands/prime/v1Migration.js +0 -1
- package/dist/cli/commands/prime.js +76 -11
- package/dist/cli/commands/profileGrounding.js +55 -0
- package/dist/cli/commands/query.js +74 -52
- package/dist/cli/commands/report.js +91 -21
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/schema.js +436 -138
- package/dist/cli/commands/state/decisions.js +40 -56
- package/dist/cli/commands/state/docs.js +58 -85
- package/dist/cli/commands/state/experimentRecords.js +151 -0
- package/dist/cli/commands/state/experiments.js +11 -65
- package/dist/cli/commands/state/get.js +129 -0
- package/dist/cli/commands/state/health.js +11 -113
- package/dist/cli/commands/state/index.js +6 -41
- package/dist/cli/commands/state/list.js +194 -0
- package/dist/cli/commands/state/objective.js +21 -65
- package/dist/cli/commands/state/plan.js +11 -170
- 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 +11 -45
- package/dist/cli/commands/state/shared.js +0 -1
- package/dist/cli/commands/state/todo.js +28 -107
- package/dist/cli/commands/state/write.js +433 -0
- package/dist/cli/commands/upgrade.js +146 -5
- package/dist/cli/commands/upgradeVerify.js +118 -0
- package/dist/cli/commands/validate.js +235 -136
- package/dist/cli/commands/verify.js +73 -16
- package/dist/cli/contracts/bundleStatus.js +0 -1
- package/dist/cli/contracts/orientationState.js +0 -1
- package/dist/cli/dispatch/argvParser.js +0 -1
- package/dist/cli/dispatch/check.js +84 -40
- package/dist/cli/dispatch/commands.js +3 -3
- package/dist/cli/dispatch/index.js +77 -52
- package/dist/cli/dispatch/lifecycle.js +162 -62
- package/dist/cli/dispatch/prime.js +37 -2
- package/dist/cli/dispatch/projections.js +17 -0
- package/dist/cli/dispatch/shared.js +1 -2
- package/dist/cli/dispatch/state.js +62 -66
- package/dist/cli/dispatch.js +0 -1
- package/dist/cli/errors.js +16 -17
- package/dist/cli/help.js +404 -39
- package/dist/cli/migrationRequired.js +125 -0
- package/dist/cli/orientation/attention.js +19 -19
- package/dist/cli/orientation/corpusCoverage.js +32 -1
- package/dist/cli/orientation.js +346 -129
- 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 +11 -8
- package/dist/cli/stateQuery.js +47 -12
- 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 +0 -1
- package/dist/core/atomicWriter.js +23 -0
- package/dist/core/developmentChannel.js +1 -0
- package/dist/core/developmentInvocation.js +377 -0
- package/dist/core/difflib.js +0 -1
- package/dist/core/envPaths.js +0 -1
- package/dist/core/jsonValue.js +0 -1
- package/dist/core/paths.js +0 -1
- package/dist/core/pyjson.js +0 -1
- 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 +61 -2
- package/dist/eval/evalSkills.js +13 -14
- package/dist/eval/glossaryEvaluation.js +751 -0
- package/dist/eval/glossaryEvaluationProcess.js +29 -0
- package/dist/eval/glossaryEvaluationRunner.js +571 -0
- package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
- package/dist/eval/hybridRouteEvaluation.js +155 -0
- package/dist/eval/semanticEval.js +0 -1
- package/dist/eval/semanticFixtures.js +0 -1
- package/dist/hooks/common.js +3 -56
- package/dist/hooks/compaction/apply.js +224 -47
- package/dist/hooks/compaction/dryRun.js +2 -1
- package/dist/hooks/compaction/index.js +5 -6
- package/dist/hooks/compaction/parse.js +73 -6
- package/dist/hooks/compaction/retention.js +28 -25
- package/dist/hooks/compaction/status.js +145 -26
- package/dist/hooks/compaction/types.js +0 -1
- package/dist/hooks/validateArtifact/agentFacing.js +0 -1
- package/dist/hooks/validateArtifact/index.js +6 -65
- package/dist/hooks/validateArtifact/markdown.js +9 -10
- package/dist/hooks/validateArtifact/schema.js +96 -9
- package/dist/hooks/validateArtifact/traversal.js +12 -11
- package/dist/hooks/validateArtifact/violations.js +5 -3
- package/dist/migrate/v2HandoffManifest.js +8 -3
- package/dist/registries/activationContract.js +2 -0
- package/dist/registries/activationTuples.js +136 -0
- package/dist/registries/artifactProtocolIds.js +2 -1
- package/dist/registries/artifactRegistry.js +207 -60
- package/dist/registries/artifactSchemaProjection.js +45 -0
- package/dist/registries/capabilityContract.js +5 -21
- package/dist/registries/evaluatorHandoffContract.js +0 -1
- package/dist/registries/evidenceTierContract.js +375 -0
- package/dist/registries/explicitSegmentGrammarContract.js +619 -0
- package/dist/registries/glossaryAdviceContract.js +79 -0
- package/dist/registries/glossaryCandidateContractPaths.js +6 -0
- package/dist/registries/glossaryCandidateContracts.js +820 -0
- package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
- package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
- package/dist/registries/glossaryCandidateProjectionAuthority.js +197 -0
- package/dist/registries/glossaryCandidateProjectionContract.js +104 -0
- package/dist/registries/glossaryCaveatContract.js +67 -0
- package/dist/registries/glossaryConsumerContractValidation.js +787 -0
- package/dist/registries/glossaryEntryContract.js +759 -0
- package/dist/registries/glossaryEntryTemporal.js +12 -0
- package/dist/registries/glossaryMiningAuthority.js +764 -0
- package/dist/registries/glossaryProfileFullContract.js +24 -0
- package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
- package/dist/registries/glossaryReviewRecordsContract.js +129 -0
- package/dist/registries/glossaryTermIdentity.js +139 -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 +273 -0
- package/dist/registries/packageRegistry.js +184 -209
- package/dist/registries/personalGlossaryContracts.js +1 -0
- package/dist/registries/todoReadinessContract.js +448 -0
- package/dist/registries/triggerLoader.js +7 -44
- package/dist/registries/verbosityBudgetContract.js +205 -0
- package/dist/release/releaseMetadata.js +167 -10
- 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 -13
- package/dist/setup/opencodeConstants.js +1 -0
- package/dist/setup/sharedSkill.js +45 -0
- package/dist/setup/smokeChecks.js +14 -75
- 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 +840 -0
- package/dist/state/entityMigrationTodo.js +133 -0
- package/dist/state/entityPublicationContext.js +859 -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 +15 -7
- 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 +1027 -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/progressWritePolicy.js +33 -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 +70 -9
- package/dist/state/startupAnalysis/contract.js +44 -10
- package/dist/state/startupAnalysis/helpers.js +1 -2
- package/dist/state/startupAnalysis/index.js +0 -1
- package/dist/state/startupAnalysis/metrics.js +0 -1
- package/dist/state/startupAnalysis/records.js +0 -1
- package/dist/state/startupAnalysis/report.js +0 -1
- package/dist/state/startupAnalysis/threshold.js +13 -1
- package/dist/state/startupAnalysis.js +0 -1
- package/dist/state/startupProjection.js +499 -0
- package/dist/state/stateMode.js +222 -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 +1124 -0
- package/dist/state/todoDocsEntityValidation.js +158 -0
- package/dist/state/todoMarkdownProjection.js +51 -0
- package/dist/state/todoReconciliationActivation.js +182 -0
- package/dist/state/todoReconciliationInspection.js +171 -0
- package/dist/state/todoReconciliationRepair.js +318 -0
- package/dist/state/todoReconciliationTransaction.js +595 -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 +377 -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 +391 -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 +146 -0
- package/dist/state/write/serialize.js +1 -0
- package/dist/state/write/transaction.js +57 -0
- package/dist/state/write/validate.js +7 -0
- package/dist/upgrade/appContentRefresh.js +77 -36
- package/dist/upgrade/appModel.js +0 -1
- package/dist/upgrade/atomicWriter.js +1 -0
- package/dist/upgrade/bundleEvidence.js +0 -1
- package/dist/upgrade/channels.js +6 -9
- package/dist/upgrade/compatibility.js +43 -17
- package/dist/upgrade/doctor.js +55 -32
- package/dist/upgrade/doctorClassifier.js +11 -1
- package/dist/upgrade/installedHooksRetirement.js +46 -40
- package/dist/upgrade/legacyAgentCleanup.js +187 -21
- package/dist/upgrade/lifecycleUpgrade.js +113 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
- package/dist/upgrade/migrationPublication.js +122 -0
- package/dist/upgrade/nextMajorDoctor.js +0 -1
- package/dist/upgrade/npxPlatformStatus.js +2 -2
- package/dist/upgrade/projectIntegration.js +128 -160
- package/dist/upgrade/projectIntegrationDecision.js +42 -85
- package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
- package/dist/upgrade/runtimeMigration.js +262 -453
- 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 +2 -3
- package/dist/upgrade/versionResolution.js +0 -1
- package/dist/validate/activationArtifactEvidence.js +866 -0
- package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
- package/dist/validate/activationConjunction.js +816 -0
- package/dist/validate/activationEvidenceManifest.js +610 -0
- package/dist/validate/activationPackageSemantics.js +29 -0
- package/dist/validate/appHomeContract.js +1 -7
- package/dist/validate/bootstrapAuthority.js +44 -0
- package/dist/validate/capability.js +11 -3
- package/dist/validate/crossCapability.js +14 -9
- package/dist/validate/retainedReferenceAuthority.js +879 -0
- package/dist/validate/selfAudit.js +39 -45
- package/dist/validate/v1LegacyCruft.js +131 -0
- package/dist/validate/vocabularyAuthority.js +8 -8
- package/package.json +39 -13
- package/bundle/references/adapters/cursor.md +0 -214
- 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 -554
- 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 -369
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
- package/bundle/references/cli/capability-tool-classification.yaml +0 -53
- package/bundle/references/cli/coexistence-probe.yaml +0 -13
- package/bundle/references/cli/parity-expected-actual-template.md +0 -30
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
- package/bundle/references/cli/single-name-protocol.yaml +0 -42
- package/bundle/references/cli/upgrade-repair-wording.md +0 -45
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
- package/bundle/references/meta/documentation-inventory.md +0 -49
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/audit.toml +0 -6
- package/bundle/skills/agentera/agents/build.toml +0 -6
- package/bundle/skills/agentera/agents/design.toml +0 -6
- package/bundle/skills/agentera/agents/discuss.toml +0 -6
- package/bundle/skills/agentera/agents/document.toml +0 -6
- package/bundle/skills/agentera/agents/optimize.toml +0 -6
- package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
- package/bundle/skills/agentera/agents/plan.toml +0 -6
- package/bundle/skills/agentera/agents/profile.toml +0 -6
- package/bundle/skills/agentera/agents/research.toml +0 -6
- package/bundle/skills/agentera/agents/status.toml +0 -6
- package/bundle/skills/agentera/agents/vision.toml +0 -6
- package/bundle/skills/agentera/references/contract.md +0 -1048
- package/dist/analytics/extractCorpus/cli.js.map +0 -1
- package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/core.js.map +0 -1
- package/dist/analytics/extractCorpus/corpus.js.map +0 -1
- package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
- package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
- package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
- package/dist/analytics/extractCorpus/index.js.map +0 -1
- package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
- 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/audit/instructions.js.map +0 -1
- package/dist/capabilities/build/instructions.js.map +0 -1
- package/dist/capabilities/design/instructions.js.map +0 -1
- package/dist/capabilities/discuss/instructions.js.map +0 -1
- package/dist/capabilities/document/instructions.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/optimize/instructions.js.map +0 -1
- package/dist/capabilities/orchestrate/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/plan/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/profile/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/research/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/status/instructions.js.map +0 -1
- package/dist/capabilities/vision/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 -5
- 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/benchmark.js.map +0 -1
- package/dist/cli/capabilityContext/bespoke.js.map +0 -1
- package/dist/cli/capabilityContext/build.js.map +0 -1
- package/dist/cli/capabilityContext/closeout.js.map +0 -1
- package/dist/cli/capabilityContext/contract.js.map +0 -1
- package/dist/cli/capabilityContext/evidence.js.map +0 -1
- package/dist/cli/capabilityContext/index.js.map +0 -1
- package/dist/cli/capabilityContext/orchestration.js.map +0 -1
- package/dist/cli/capabilityContext/planState.js.map +0 -1
- package/dist/cli/capabilityContext/progress.js.map +0 -1
- package/dist/cli/capabilityContext/realisera.js +0 -174
- package/dist/cli/capabilityContext/realisera.js.map +0 -1
- package/dist/cli/capabilityContext/shared.js.map +0 -1
- package/dist/cli/capabilityContext/slim.js.map +0 -1
- package/dist/cli/capabilityContext/startup.js.map +0 -1
- package/dist/cli/capabilityContext/types.js.map +0 -1
- package/dist/cli/capabilityContext.js.map +0 -1
- package/dist/cli/commands/appHome.js.map +0 -1
- package/dist/cli/commands/backfill.js +0 -84
- package/dist/cli/commands/backfill.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/bundleStatus.js.map +0 -1
- package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
- package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
- package/dist/cli/commands/prime/routeOutput.js +0 -50
- package/dist/cli/commands/prime/routeOutput.js.map +0 -1
- package/dist/cli/commands/prime/types.js.map +0 -1
- package/dist/cli/commands/prime/v1Migration.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/decisions.js.map +0 -1
- package/dist/cli/commands/state/docs.js.map +0 -1
- package/dist/cli/commands/state/experiments.js.map +0 -1
- package/dist/cli/commands/state/health.js.map +0 -1
- package/dist/cli/commands/state/index.js.map +0 -1
- package/dist/cli/commands/state/objective.js.map +0 -1
- package/dist/cli/commands/state/plan.js.map +0 -1
- package/dist/cli/commands/state/progress.js.map +0 -1
- package/dist/cli/commands/state/shared.js.map +0 -1
- package/dist/cli/commands/state/todo.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/contracts/bundleStatus.js.map +0 -1
- package/dist/cli/contracts/orientationState.js.map +0 -1
- package/dist/cli/dispatch/argvParser.js.map +0 -1
- package/dist/cli/dispatch/check.js.map +0 -1
- package/dist/cli/dispatch/commands.js.map +0 -1
- package/dist/cli/dispatch/index.js.map +0 -1
- package/dist/cli/dispatch/lifecycle.js.map +0 -1
- package/dist/cli/dispatch/prime.js.map +0 -1
- package/dist/cli/dispatch/shared.js.map +0 -1
- package/dist/cli/dispatch/state.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/attention.js.map +0 -1
- package/dist/cli/orientation/corpusCoverage.js.map +0 -1
- package/dist/cli/orientation.js.map +0 -1
- package/dist/cli/prime-blob.js.map +0 -1
- package/dist/cli/startupCompletenessContract.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/cli/todoSeverity.js.map +0 -1
- package/dist/core/difflib.js.map +0 -1
- package/dist/core/envPaths.js.map +0 -1
- package/dist/core/git.js +0 -43
- package/dist/core/git.js.map +0 -1
- package/dist/core/jsonValue.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/apply.js.map +0 -1
- package/dist/hooks/compaction/dryRun.js.map +0 -1
- package/dist/hooks/compaction/index.js.map +0 -1
- package/dist/hooks/compaction/parse.js.map +0 -1
- package/dist/hooks/compaction/retention.js.map +0 -1
- package/dist/hooks/compaction/status.js.map +0 -1
- package/dist/hooks/compaction/todoResolved.js +0 -137
- package/dist/hooks/compaction/todoResolved.js.map +0 -1
- package/dist/hooks/compaction/types.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 -79
- package/dist/hooks/cursorSessionStart.js.map +0 -1
- package/dist/hooks/sessionStart.js +0 -216
- package/dist/hooks/sessionStart.js.map +0 -1
- package/dist/hooks/sessionStop.js +0 -206
- package/dist/hooks/sessionStop.js.map +0 -1
- package/dist/hooks/todoLayout.js +0 -177
- package/dist/hooks/todoLayout.js.map +0 -1
- package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
- package/dist/hooks/validateArtifact/index.js.map +0 -1
- package/dist/hooks/validateArtifact/markdown.js.map +0 -1
- package/dist/hooks/validateArtifact/runtime.js +0 -86
- package/dist/hooks/validateArtifact/runtime.js.map +0 -1
- package/dist/hooks/validateArtifact/schema.js.map +0 -1
- package/dist/hooks/validateArtifact/traversal.js.map +0 -1
- package/dist/hooks/validateArtifact/violations.js.map +0 -1
- package/dist/hooks/validateArtifact.js +0 -924
- package/dist/hooks/validateArtifact.js.map +0 -1
- package/dist/migrate/v2HandoffManifest.js.map +0 -1
- package/dist/registries/artifactProtocolIds.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 -316
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/registries/triggerLoader.js.map +0 -1
- package/dist/release/releaseMetadata.js.map +0 -1
- package/dist/routing/index.js +0 -2
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/routeEngine.js +0 -189
- package/dist/routing/routeEngine.js.map +0 -1
- package/dist/setup/codex/agents.js +0 -96
- package/dist/setup/codex/agents.js.map +0 -1
- package/dist/setup/codex/cli.js +0 -161
- package/dist/setup/codex/cli.js.map +0 -1
- package/dist/setup/codex/configToml.js +0 -639
- package/dist/setup/codex/configToml.js.map +0 -1
- package/dist/setup/codex/constants.js +0 -29
- package/dist/setup/codex/constants.js.map +0 -1
- package/dist/setup/codex/installRoot.js +0 -64
- package/dist/setup/codex/installRoot.js.map +0 -1
- package/dist/setup/codex/state.js +0 -270
- package/dist/setup/codex/state.js.map +0 -1
- package/dist/setup/codex.js +0 -12
- 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 -129
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/cursorSurfaces.js +0 -67
- package/dist/setup/cursorSurfaces.js.map +0 -1
- package/dist/setup/doctor/core.js +0 -300
- package/dist/setup/doctor/core.js.map +0 -1
- package/dist/setup/doctor/diagnostics.js +0 -240
- package/dist/setup/doctor/diagnostics.js.map +0 -1
- package/dist/setup/doctor/opencode.js +0 -313
- package/dist/setup/doctor/opencode.js.map +0 -1
- package/dist/setup/doctor/report.js +0 -425
- package/dist/setup/doctor/report.js.map +0 -1
- package/dist/setup/doctor.js +0 -10
- package/dist/setup/doctor.js.map +0 -1
- package/dist/setup/opencode.js.map +0 -1
- package/dist/setup/smokeChecks.js.map +0 -1
- package/dist/state/installRoot.js.map +0 -1
- package/dist/state/progressCommit.js +0 -289
- package/dist/state/progressCommit.js.map +0 -1
- package/dist/state/startupAnalysis/benchmark.js.map +0 -1
- package/dist/state/startupAnalysis/contract.js.map +0 -1
- package/dist/state/startupAnalysis/helpers.js.map +0 -1
- package/dist/state/startupAnalysis/index.js.map +0 -1
- package/dist/state/startupAnalysis/metrics.js.map +0 -1
- package/dist/state/startupAnalysis/records.js.map +0 -1
- package/dist/state/startupAnalysis/report.js.map +0 -1
- package/dist/state/startupAnalysis/threshold.js.map +0 -1
- package/dist/state/startupAnalysis.js.map +0 -1
- package/dist/upgrade/appContentRefresh.js.map +0 -1
- package/dist/upgrade/appModel.js.map +0 -1
- package/dist/upgrade/bundleEvidence.js.map +0 -1
- package/dist/upgrade/channels.js.map +0 -1
- package/dist/upgrade/cliProbe.js +0 -22
- package/dist/upgrade/cliProbe.js.map +0 -1
- package/dist/upgrade/coexistenceProbe.js +0 -107
- package/dist/upgrade/coexistenceProbe.js.map +0 -1
- package/dist/upgrade/compatibility.js.map +0 -1
- package/dist/upgrade/doctor.js.map +0 -1
- package/dist/upgrade/doctorClassifier.js.map +0 -1
- package/dist/upgrade/installedHooksRetirement.js.map +0 -1
- package/dist/upgrade/legacyAgentCleanup.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/npxPlatformStatus.js.map +0 -1
- package/dist/upgrade/projectIntegration.js.map +0 -1
- package/dist/upgrade/projectIntegrationDecision.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/v3CapabilitySurface.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/legacyPythonParity.js +0 -93
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
- package/dist/validate/lifecycleAdapters/shared.js +0 -198
- package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -62
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- package/dist/validate/selfAudit.js.map +0 -1
- package/dist/validate/vocabularyAuthority.js.map +0 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { loadYamlMappingFile } from "../core/yaml.js";
|
|
3
|
+
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
4
|
+
import { ARTIFACT_PROTOCOL_PATHS, normalizeArtifactProtocolId, } from "./artifactProtocolIds.js";
|
|
5
|
+
export class VerbosityBudgetContractError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "VerbosityBudgetContractError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function verbosityBudgetAuthorityPath() {
|
|
12
|
+
return path.join(resolveSourceRoot(), "references", "artifacts", "verbosity-budget-authority.yaml");
|
|
13
|
+
}
|
|
14
|
+
function mapping(value) {
|
|
15
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
16
|
+
? value
|
|
17
|
+
: null;
|
|
18
|
+
}
|
|
19
|
+
function positiveNumber(value) {
|
|
20
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
21
|
+
}
|
|
22
|
+
function readMapping(filePath, label) {
|
|
23
|
+
try {
|
|
24
|
+
return loadYamlMappingFile(filePath);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw new VerbosityBudgetContractError(`${label} ${filePath} is unreadable or malformed: ${error.message}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function loadContract(contractPath) {
|
|
31
|
+
const contract = readMapping(contractPath, "verbosity budget authority");
|
|
32
|
+
if (contract.schema_version !== "agentera.verbosityBudgetAuthority.v1") {
|
|
33
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} has unsupported schema_version`);
|
|
34
|
+
}
|
|
35
|
+
const authority = mapping(contract.authority);
|
|
36
|
+
const scope = mapping(contract.scope);
|
|
37
|
+
const supported = scope?.supported_artifacts;
|
|
38
|
+
if (!authority || typeof authority.schema_directory !== "string" || !Array.isArray(supported)) {
|
|
39
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} must declare authority.schema_directory and scope.supported_artifacts`);
|
|
40
|
+
}
|
|
41
|
+
const schemaDirectory = path.resolve(path.dirname(contractPath), authority.schema_directory);
|
|
42
|
+
const owners = new Map();
|
|
43
|
+
for (const raw of supported) {
|
|
44
|
+
const entry = mapping(raw);
|
|
45
|
+
const artifactId = entry?.artifact_id;
|
|
46
|
+
const schema = entry?.schema;
|
|
47
|
+
if (typeof artifactId !== "string" || normalizeArtifactProtocolId(artifactId) !== artifactId) {
|
|
48
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} contains an invalid artifact_id`);
|
|
49
|
+
}
|
|
50
|
+
if (typeof schema !== "string" || !schema.endsWith(".yaml") || path.basename(schema) !== schema) {
|
|
51
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} contains an invalid schema owner for ${artifactId}`);
|
|
52
|
+
}
|
|
53
|
+
if (owners.has(artifactId)) {
|
|
54
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} declares ambiguous owners for ${artifactId}`);
|
|
55
|
+
}
|
|
56
|
+
owners.set(artifactId, {
|
|
57
|
+
artifactId,
|
|
58
|
+
authorityPath: contractPath,
|
|
59
|
+
schemaPath: path.join(schemaDirectory, schema),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (owners.size === 0) {
|
|
63
|
+
throw new VerbosityBudgetContractError(`verbosity budget authority ${contractPath} declares no supported artifacts`);
|
|
64
|
+
}
|
|
65
|
+
return { contractPath, owners };
|
|
66
|
+
}
|
|
67
|
+
function protocolIdForOwner(input) {
|
|
68
|
+
const normalized = normalizeArtifactProtocolId(input);
|
|
69
|
+
if (normalized)
|
|
70
|
+
return normalized;
|
|
71
|
+
const comparable = input.trim().replaceAll("\\", "/").toLowerCase();
|
|
72
|
+
for (const [artifactId, artifactPath] of Object.entries(ARTIFACT_PROTOCOL_PATHS)) {
|
|
73
|
+
const canonicalPath = artifactPath.toLowerCase();
|
|
74
|
+
if (comparable === canonicalPath || comparable === path.posix.basename(canonicalPath)) {
|
|
75
|
+
return artifactId;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
export function resolveVerbosityBudgetOwner(artifact, contractPath = verbosityBudgetAuthorityPath()) {
|
|
81
|
+
const contract = loadContract(contractPath);
|
|
82
|
+
const artifactId = protocolIdForOwner(artifact);
|
|
83
|
+
const owner = artifactId ? contract.owners.get(artifactId) : undefined;
|
|
84
|
+
if (!owner) {
|
|
85
|
+
throw new VerbosityBudgetContractError(`unsupported artifact ${JSON.stringify(artifact)} in verbosity budget authority; ` +
|
|
86
|
+
`valid artifact_id values: ${[...contract.owners.keys()].sort().join(", ")}`);
|
|
87
|
+
}
|
|
88
|
+
return owner;
|
|
89
|
+
}
|
|
90
|
+
function invalidDimension(scope, declarationId, error) {
|
|
91
|
+
return {
|
|
92
|
+
scope,
|
|
93
|
+
classification: "invalid_declaration",
|
|
94
|
+
unit: null,
|
|
95
|
+
limit: null,
|
|
96
|
+
declarationId,
|
|
97
|
+
error,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function classifyDeclaration(raw, index) {
|
|
101
|
+
const declaration = mapping(raw);
|
|
102
|
+
if (!declaration)
|
|
103
|
+
return invalidDimension(`<entry:${index}>`, null, "budget declaration must be a mapping");
|
|
104
|
+
const scope = typeof declaration.scope === "string" && declaration.scope.trim()
|
|
105
|
+
? declaration.scope.trim()
|
|
106
|
+
: `<entry:${index}>`;
|
|
107
|
+
const declarationId = typeof declaration.id === "string" ? declaration.id : null;
|
|
108
|
+
if (scope.startsWith("<entry:")) {
|
|
109
|
+
return invalidDimension(scope, declarationId, "budget declaration must define a non-empty scope");
|
|
110
|
+
}
|
|
111
|
+
const hasWords = Object.hasOwn(declaration, "max_words");
|
|
112
|
+
const hasTokens = Object.hasOwn(declaration, "token_budget");
|
|
113
|
+
if (Number(hasWords) + Number(hasTokens) !== 1) {
|
|
114
|
+
return invalidDimension(scope, declarationId, "budget declaration must define exactly one of max_words or token_budget");
|
|
115
|
+
}
|
|
116
|
+
if (hasWords) {
|
|
117
|
+
if (declaration.max_words === null) {
|
|
118
|
+
return { scope, classification: "explicit_no_limit", unit: "words", limit: null, declarationId };
|
|
119
|
+
}
|
|
120
|
+
if (positiveNumber(declaration.max_words)) {
|
|
121
|
+
return {
|
|
122
|
+
scope,
|
|
123
|
+
classification: "numeric_limit",
|
|
124
|
+
unit: "words",
|
|
125
|
+
limit: declaration.max_words,
|
|
126
|
+
declarationId,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return invalidDimension(scope, declarationId, "max_words must be a positive number or null");
|
|
130
|
+
}
|
|
131
|
+
if (positiveNumber(declaration.token_budget)) {
|
|
132
|
+
return {
|
|
133
|
+
scope,
|
|
134
|
+
classification: "non_word_unit",
|
|
135
|
+
unit: "tokens",
|
|
136
|
+
limit: declaration.token_budget,
|
|
137
|
+
declarationId,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return invalidDimension(scope, declarationId, "token_budget must be a positive number");
|
|
141
|
+
}
|
|
142
|
+
function isNonVerbosityBudgetEntry(raw) {
|
|
143
|
+
const declaration = mapping(raw);
|
|
144
|
+
return Boolean(declaration &&
|
|
145
|
+
typeof declaration.rule === "string" &&
|
|
146
|
+
!Object.hasOwn(declaration, "max_words") &&
|
|
147
|
+
!Object.hasOwn(declaration, "token_budget"));
|
|
148
|
+
}
|
|
149
|
+
export function inspectArtifactVerbosityBudget(artifact, contractPath = verbosityBudgetAuthorityPath()) {
|
|
150
|
+
const owner = resolveVerbosityBudgetOwner(artifact, contractPath);
|
|
151
|
+
let schema;
|
|
152
|
+
try {
|
|
153
|
+
schema = readMapping(owner.schemaPath, `verbosity budget owner for ${owner.artifactId}`);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return {
|
|
157
|
+
...owner,
|
|
158
|
+
dimensions: [invalidDimension("<authority>", null, error.message)],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const budget = mapping(schema.BUDGET);
|
|
162
|
+
if (!budget || Object.keys(budget).length === 0) {
|
|
163
|
+
return {
|
|
164
|
+
...owner,
|
|
165
|
+
dimensions: [invalidDimension("<authority>", null, "owning schema must define a non-empty BUDGET mapping")],
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const dimensions = Object.entries(budget)
|
|
169
|
+
.filter(([, declaration]) => !isNonVerbosityBudgetEntry(declaration))
|
|
170
|
+
.map(([index, declaration]) => classifyDeclaration(declaration, index));
|
|
171
|
+
if (dimensions.length === 0) {
|
|
172
|
+
return {
|
|
173
|
+
...owner,
|
|
174
|
+
dimensions: [invalidDimension("<authority>", null, "owning schema defines no verbosity budget declarations")],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const counts = new Map();
|
|
178
|
+
for (const dimension of dimensions)
|
|
179
|
+
counts.set(dimension.scope, (counts.get(dimension.scope) ?? 0) + 1);
|
|
180
|
+
return {
|
|
181
|
+
...owner,
|
|
182
|
+
dimensions: dimensions.map((dimension) => (counts.get(dimension.scope) ?? 0) > 1
|
|
183
|
+
? invalidDimension(dimension.scope, dimension.declarationId, `duplicate budget scope ${dimension.scope}`)
|
|
184
|
+
: dimension),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
export function validateVerbosityBudgetContract(contractPath = verbosityBudgetAuthorityPath()) {
|
|
188
|
+
let contract;
|
|
189
|
+
try {
|
|
190
|
+
contract = loadContract(contractPath);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
return [error.message];
|
|
194
|
+
}
|
|
195
|
+
const errors = [];
|
|
196
|
+
for (const artifactId of contract.owners.keys()) {
|
|
197
|
+
const inspected = inspectArtifactVerbosityBudget(artifactId, contractPath);
|
|
198
|
+
for (const dimension of inspected.dimensions) {
|
|
199
|
+
if (dimension.classification === "invalid_declaration") {
|
|
200
|
+
errors.push(`${artifactId}:${dimension.scope}: ${dimension.error}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return errors;
|
|
205
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { isDeepStrictEqual } from "node:util";
|
|
3
5
|
import { resolvePath } from "../core/paths.js";
|
|
4
6
|
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
5
7
|
import { loadYamlMappingFile } from "../core/yaml.js";
|
|
@@ -11,6 +13,31 @@ export const RELEASE_METADATA_AUTHORITY_FILES = [
|
|
|
11
13
|
export const RELEASE_METADATA_ADVISORY_FILES = [
|
|
12
14
|
"packages/cli/bundle/.agentera-npx-bundle.json",
|
|
13
15
|
];
|
|
16
|
+
export const RELEASE_PROVENANCE_PATHS = [
|
|
17
|
+
"packages/cli/src",
|
|
18
|
+
"packages/cli/scripts",
|
|
19
|
+
"packages/cli/README.md",
|
|
20
|
+
"packages/cli/tsconfig.json",
|
|
21
|
+
"skills",
|
|
22
|
+
"references",
|
|
23
|
+
"README.md",
|
|
24
|
+
"UPGRADE.md",
|
|
25
|
+
"CHANGELOG.md",
|
|
26
|
+
"DESIGN.md",
|
|
27
|
+
"LICENSE",
|
|
28
|
+
"registry.json",
|
|
29
|
+
"fixtures/routing/hybrid-corpus.yaml",
|
|
30
|
+
];
|
|
31
|
+
export const RELEASE_PROVENANCE_EXCLUSIONS = [
|
|
32
|
+
"packages/cli/src/release/releaseMetadata.ts",
|
|
33
|
+
"references/adapters/package-surface-characterization.md",
|
|
34
|
+
];
|
|
35
|
+
export const STABLE_SHIM_PROVENANCE_PATHS = [
|
|
36
|
+
"packages/cli/shim/bin",
|
|
37
|
+
"packages/cli/shim/lib",
|
|
38
|
+
"packages/cli/shim/README.md",
|
|
39
|
+
"packages/cli/shim/LICENSE",
|
|
40
|
+
];
|
|
14
41
|
const SEMVER_CORE_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
15
42
|
const SEMVER_STRICT_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
16
43
|
const PRE_RELEASE_RE = /-(.+)$/;
|
|
@@ -26,6 +53,113 @@ function readJson(pathname) {
|
|
|
26
53
|
return null;
|
|
27
54
|
}
|
|
28
55
|
}
|
|
56
|
+
function runGit(root, args) {
|
|
57
|
+
return spawnSync("git", ["-C", root, ...args], {
|
|
58
|
+
encoding: "utf8",
|
|
59
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function normalizedPackageMetadata(value) {
|
|
63
|
+
const normalized = structuredClone(value);
|
|
64
|
+
delete normalized.version;
|
|
65
|
+
if (normalized.agentera && typeof normalized.agentera === "object" && !Array.isArray(normalized.agentera)) {
|
|
66
|
+
delete normalized.agentera.gitRef;
|
|
67
|
+
}
|
|
68
|
+
return normalized;
|
|
69
|
+
}
|
|
70
|
+
function validateGitRefProvenance(root, gitRef) {
|
|
71
|
+
const inside = runGit(root, ["rev-parse", "--is-inside-work-tree"]);
|
|
72
|
+
if (inside.status !== 0 || String(inside.stdout).trim() !== "true")
|
|
73
|
+
return [];
|
|
74
|
+
const commit = runGit(root, ["cat-file", "-e", `${gitRef}^{commit}`]);
|
|
75
|
+
if (commit.status !== 0) {
|
|
76
|
+
return [`packages/cli/package.json: agentera.gitRef ${JSON.stringify(gitRef)} is not a commit in the local repository`];
|
|
77
|
+
}
|
|
78
|
+
const pathspec = [
|
|
79
|
+
...RELEASE_PROVENANCE_PATHS,
|
|
80
|
+
...RELEASE_PROVENANCE_EXCLUSIONS.map((entry) => `:(exclude)${entry}`),
|
|
81
|
+
];
|
|
82
|
+
const diff = runGit(root, ["diff", "--quiet", gitRef, "--", ...pathspec]);
|
|
83
|
+
if (diff.status !== 0) {
|
|
84
|
+
if (diff.status === 1) {
|
|
85
|
+
return [
|
|
86
|
+
`packages/cli/package.json: agentera.gitRef ${JSON.stringify(gitRef)} does not match the governed package source tree; ` +
|
|
87
|
+
"select the last substantive package-source commit, excluding approved release metadata",
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
return [`packages/cli/package.json: unable to compare agentera.gitRef ${JSON.stringify(gitRef)} with the governed package source tree`];
|
|
91
|
+
}
|
|
92
|
+
const status = runGit(root, ["status", "--porcelain=v1", "--untracked-files=all", "--", ...pathspec]);
|
|
93
|
+
if (status.status !== 0 || String(status.stdout).trim() !== "") {
|
|
94
|
+
return [
|
|
95
|
+
"packages/cli/package.json: governed package source has uncommitted or untracked changes outside approved release metadata",
|
|
96
|
+
];
|
|
97
|
+
}
|
|
98
|
+
const selectedPackage = runGit(root, ["show", `${gitRef}:packages/cli/package.json`]);
|
|
99
|
+
const currentPackage = readPackageJson(root);
|
|
100
|
+
try {
|
|
101
|
+
const selected = JSON.parse(String(selectedPackage.stdout));
|
|
102
|
+
if (selectedPackage.status !== 0 ||
|
|
103
|
+
currentPackage === null ||
|
|
104
|
+
!isDeepStrictEqual(normalizedPackageMetadata(selected), normalizedPackageMetadata(currentPackage))) {
|
|
105
|
+
return [
|
|
106
|
+
`packages/cli/package.json: package contract differs from agentera.gitRef ${JSON.stringify(gitRef)} ` +
|
|
107
|
+
"outside the permitted version and gitRef fields",
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return [`packages/cli/package.json: unable to read package contract from agentera.gitRef ${JSON.stringify(gitRef)}`];
|
|
113
|
+
}
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
export function validateStableShimGitRefProvenance(root, gitRef) {
|
|
117
|
+
const manifestPath = "packages/cli/shim/package.json";
|
|
118
|
+
const inside = runGit(root, ["rev-parse", "--is-inside-work-tree"]);
|
|
119
|
+
if (inside.status !== 0 || String(inside.stdout).trim() !== "true")
|
|
120
|
+
return [];
|
|
121
|
+
const commit = runGit(root, ["cat-file", "-e", `${gitRef}^{commit}`]);
|
|
122
|
+
if (commit.status !== 0) {
|
|
123
|
+
return [`${manifestPath}: agentera.gitRef ${JSON.stringify(gitRef)} is not a commit in the local repository`];
|
|
124
|
+
}
|
|
125
|
+
const diff = runGit(root, ["diff", "--quiet", gitRef, "--", ...STABLE_SHIM_PROVENANCE_PATHS]);
|
|
126
|
+
if (diff.status !== 0) {
|
|
127
|
+
return [
|
|
128
|
+
`${manifestPath}: agentera.gitRef ${JSON.stringify(gitRef)} does not match the stable shim packaged inputs; ` +
|
|
129
|
+
"select the last substantive shim-source commit",
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
const status = runGit(root, [
|
|
133
|
+
"status",
|
|
134
|
+
"--porcelain=v1",
|
|
135
|
+
"--untracked-files=all",
|
|
136
|
+
"--",
|
|
137
|
+
manifestPath,
|
|
138
|
+
...STABLE_SHIM_PROVENANCE_PATHS,
|
|
139
|
+
]);
|
|
140
|
+
if (status.status !== 0 || String(status.stdout).trim() !== "") {
|
|
141
|
+
return [
|
|
142
|
+
`${manifestPath}: stable shim packaged inputs have uncommitted or untracked changes outside approved release metadata`,
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
const selected = runGit(root, ["show", `${gitRef}:${manifestPath}`]);
|
|
146
|
+
const current = readJson(path.join(root, manifestPath));
|
|
147
|
+
try {
|
|
148
|
+
const selectedManifest = JSON.parse(String(selected.stdout));
|
|
149
|
+
if (selected.status !== 0 ||
|
|
150
|
+
current === null ||
|
|
151
|
+
!isDeepStrictEqual(normalizedPackageMetadata(selectedManifest), normalizedPackageMetadata(current))) {
|
|
152
|
+
return [
|
|
153
|
+
`${manifestPath}: package contract differs from agentera.gitRef ${JSON.stringify(gitRef)} ` +
|
|
154
|
+
"outside the permitted version and gitRef fields",
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return [`${manifestPath}: unable to read package contract from agentera.gitRef ${JSON.stringify(gitRef)}`];
|
|
160
|
+
}
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
29
163
|
function readRegistryVersion(root) {
|
|
30
164
|
const source = "registry.json";
|
|
31
165
|
const data = readJson(path.join(root, source));
|
|
@@ -76,7 +210,7 @@ function readBundleSentinel(root) {
|
|
|
76
210
|
return { version: typeof version === "string" ? version : null, source };
|
|
77
211
|
}
|
|
78
212
|
/** Parse `X.Y.Z` core (ignore pre-release and build metadata). */
|
|
79
|
-
function parseSemverCore(version) {
|
|
213
|
+
export function parseSemverCore(version) {
|
|
80
214
|
const match = SEMVER_CORE_RE.exec(version);
|
|
81
215
|
if (!match) {
|
|
82
216
|
return null;
|
|
@@ -97,22 +231,22 @@ function pickChannelDefaults(authority) {
|
|
|
97
231
|
stable: typeof defaults.stable === "string" ? defaults.stable : null,
|
|
98
232
|
};
|
|
99
233
|
}
|
|
100
|
-
export function readReleaseMetadata(root = rootDefault()) {
|
|
234
|
+
export function readReleaseMetadata(root = rootDefault(), packageOverride) {
|
|
101
235
|
const resolved = resolvePath(root);
|
|
102
236
|
const registry = readRegistryVersion(resolved);
|
|
103
237
|
const pkg = readPackageJson(resolved);
|
|
104
238
|
const channels = readUpdateChannels(resolved);
|
|
105
239
|
const bundle = readBundleSentinel(resolved);
|
|
106
|
-
const topVersion = pkg && typeof pkg.version === "string" ? pkg.version : null;
|
|
240
|
+
const topVersion = packageOverride?.version ?? (pkg && typeof pkg.version === "string" ? pkg.version : null);
|
|
107
241
|
const agenteraBlock = pkg && typeof pkg.agentera === "object" && pkg.agentera !== null
|
|
108
242
|
? pkg.agentera
|
|
109
243
|
: null;
|
|
110
244
|
const suiteVersion = agenteraBlock && typeof agenteraBlock.suiteVersion === "string"
|
|
111
245
|
? agenteraBlock.suiteVersion
|
|
112
246
|
: null;
|
|
113
|
-
const gitRef = agenteraBlock && typeof agenteraBlock.gitRef === "string"
|
|
247
|
+
const gitRef = packageOverride?.gitRef ?? (agenteraBlock && typeof agenteraBlock.gitRef === "string"
|
|
114
248
|
? agenteraBlock.gitRef
|
|
115
|
-
: null;
|
|
249
|
+
: null);
|
|
116
250
|
const { development, stable } = pickChannelDefaults(channels);
|
|
117
251
|
return {
|
|
118
252
|
authoritativeVersion: registry.version,
|
|
@@ -129,9 +263,23 @@ export function readReleaseMetadata(root = rootDefault()) {
|
|
|
129
263
|
* Validate release-metadata coherence. Returns an empty array when the
|
|
130
264
|
* source-tree version surfaces agree on a single release train.
|
|
131
265
|
*/
|
|
132
|
-
export function validateReleaseMetadata(root = rootDefault()) {
|
|
266
|
+
export function validateReleaseMetadata(root = rootDefault(), adapter = "development", packageOverride) {
|
|
267
|
+
if (adapter === "stable") {
|
|
268
|
+
const manifestPath = "packages/cli/shim/package.json";
|
|
269
|
+
const shim = readJson(path.join(resolvePath(root), manifestPath));
|
|
270
|
+
if (shim === null)
|
|
271
|
+
return [`${manifestPath}: missing or unreadable; cannot validate release-metadata`];
|
|
272
|
+
const agentera = shim.agentera;
|
|
273
|
+
const gitRef = agentera && typeof agentera === "object" && !Array.isArray(agentera)
|
|
274
|
+
? agentera.gitRef
|
|
275
|
+
: null;
|
|
276
|
+
if (typeof gitRef !== "string" || !GIT_REF_HEX_RE.test(gitRef)) {
|
|
277
|
+
return [`${manifestPath}: agentera.gitRef must be a 40-character hex SHA for stable shim provenance`];
|
|
278
|
+
}
|
|
279
|
+
return validateStableShimGitRefProvenance(resolvePath(root), gitRef);
|
|
280
|
+
}
|
|
133
281
|
const errors = [];
|
|
134
|
-
const snap = readReleaseMetadata(root);
|
|
282
|
+
const snap = readReleaseMetadata(root, packageOverride);
|
|
135
283
|
const rootLabel = path.basename(resolvePath(root)) || "repo root";
|
|
136
284
|
// 1. registry.json must publish a valid semver `skills[0].version`.
|
|
137
285
|
if (snap.authoritativeVersion === null) {
|
|
@@ -182,7 +330,7 @@ export function validateReleaseMetadata(root = rootDefault()) {
|
|
|
182
330
|
else if (!SEMVER_STRICT_RE.test(snap.packageSuiteVersion)) {
|
|
183
331
|
errors.push(`packages/cli/package.json: agentera.suiteVersion ${JSON.stringify(snap.packageSuiteVersion)} is not a released core semver`);
|
|
184
332
|
}
|
|
185
|
-
// 2c. `agentera.gitRef` must
|
|
333
|
+
// 2c. `agentera.gitRef` must identify the governed package source tree.
|
|
186
334
|
if (snap.packageGitRef === null || snap.packageGitRef === "") {
|
|
187
335
|
errors.push("packages/cli/package.json: `agentera.gitRef` is required for release-metadata validation");
|
|
188
336
|
}
|
|
@@ -190,6 +338,9 @@ export function validateReleaseMetadata(root = rootDefault()) {
|
|
|
190
338
|
errors.push(`packages/cli/package.json: agentera.gitRef ${JSON.stringify(snap.packageGitRef)} must be a 40-character hex SHA; ` +
|
|
191
339
|
`short SHAs and branch names are not reproducible release references`);
|
|
192
340
|
}
|
|
341
|
+
else {
|
|
342
|
+
errors.push(...validateGitRefProvenance(resolvePath(root), snap.packageGitRef));
|
|
343
|
+
}
|
|
193
344
|
}
|
|
194
345
|
// 3. update-channels.yaml development default must equal the registry version.
|
|
195
346
|
if (snap.developmentChannelDefault === null) {
|
|
@@ -222,7 +373,14 @@ export function releaseMetadataMain(opts = {}) {
|
|
|
222
373
|
const root = resolvePath(opts.root ?? rootDefault());
|
|
223
374
|
const out = opts.out ?? ((line) => process.stdout.write(line + "\n"));
|
|
224
375
|
const err = opts.err ?? ((line) => process.stderr.write(line + "\n"));
|
|
225
|
-
const
|
|
376
|
+
const overrideVersion = process.env.AGENTERA_RELEASE_PACKAGE_VERSION;
|
|
377
|
+
const overrideGitRef = process.env.AGENTERA_RELEASE_GIT_REF;
|
|
378
|
+
if ((overrideVersion === undefined) !== (overrideGitRef === undefined)) {
|
|
379
|
+
out("release-metadata validation failed:");
|
|
380
|
+
out("- AGENTERA_RELEASE_PACKAGE_VERSION and AGENTERA_RELEASE_GIT_REF must be supplied together");
|
|
381
|
+
return 1;
|
|
382
|
+
}
|
|
383
|
+
const errors = validateReleaseMetadata(root, opts.adapter, overrideVersion === undefined ? undefined : { version: overrideVersion, gitRef: overrideGitRef });
|
|
226
384
|
if (errors.length > 0) {
|
|
227
385
|
out("release-metadata validation failed:");
|
|
228
386
|
for (const message of errors)
|
|
@@ -232,4 +390,3 @@ export function releaseMetadataMain(opts = {}) {
|
|
|
232
390
|
out("release-metadata ok");
|
|
233
391
|
return 0;
|
|
234
392
|
}
|
|
235
|
-
//# sourceMappingURL=releaseMetadata.js.map
|