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
|
@@ -1,25 +1,52 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { readdirSync as fsReaddirSync,
|
|
2
|
+
import { readdirSync as fsReaddirSync, statSync as fsStatSync } from "node:fs";
|
|
3
3
|
import { resolvePath } from "../../core/paths.js";
|
|
4
4
|
import { resolveSourceRoot } from "../../core/sourceRoot.js";
|
|
5
5
|
import { validateAgentString, validatePathValue } from "../argvalidate.js";
|
|
6
|
-
import {
|
|
6
|
+
import { ArtifactValidationAdapter } from "../../hooks/validateArtifact/index.js";
|
|
7
7
|
import { validateCapability, validateContractSelf, validateProtocolSelf } from "../../validate/capability.js";
|
|
8
8
|
import { loadYamlMapping } from "../../core/yaml.js";
|
|
9
|
-
import { parseToml as parseTomlValidate } from "../../core/toml.js";
|
|
10
9
|
import { validateGraph } from "../../validate/crossCapability.js";
|
|
11
|
-
import { lifecycleMain } from "../../validate/lifecycleAdapters.js";
|
|
12
10
|
import { validate as validateAppHome } from "../../validate/appHomeContract.js";
|
|
13
11
|
import { selfAuditMain } from "../../validate/selfAudit.js";
|
|
14
12
|
import { vocabularyAuthorityMain } from "../../validate/vocabularyAuthority.js";
|
|
13
|
+
import { activationConjunctionMain } from "../../validate/activationConjunction.js";
|
|
14
|
+
import { isRetainedReferenceSourceCheckout, retainedReferenceAuthorityMain, } from "../../validate/retainedReferenceAuthority.js";
|
|
15
15
|
import { releaseMetadataMain } from "../../release/releaseMetadata.js";
|
|
16
16
|
import { VALIDATE_ARTIFACT_PROTOCOL_IDS, normalizeArtifactProtocolId, } from "../../registries/artifactProtocolIds.js";
|
|
17
17
|
import { emitStructured } from "../structured.js";
|
|
18
|
+
import { validateEntityState } from "../../state/entityStorage.js";
|
|
19
|
+
import { inspectTodoReconciliationDrift } from "../../state/todoDocsEntities.js";
|
|
20
|
+
import { inspectTodoReconciliationState } from "../../state/todoReconciliationInspection.js";
|
|
21
|
+
import { detectStateModeBinding } from "../../state/stateMode.js";
|
|
22
|
+
import { loadEntityCutoverTargetsForMarker } from "../../state/entityCutover.js";
|
|
23
|
+
import { validateRealProjectRoot } from "../../state/projectRoot.js";
|
|
24
|
+
import { readProjectFileSnapshot } from "../../state/safeProjectFile.js";
|
|
25
|
+
import { loadTodoReadinessContract, TodoReadinessContractError, } from "../../registries/todoReadinessContract.js";
|
|
26
|
+
export const VALIDATE_FAMILY_NAMES = [
|
|
27
|
+
"cross-capability",
|
|
28
|
+
"app-home-contract",
|
|
29
|
+
"vocabularyAuthority",
|
|
30
|
+
"retained-references",
|
|
31
|
+
"activation-conjunction",
|
|
32
|
+
"selfAudit",
|
|
33
|
+
"release-metadata",
|
|
34
|
+
"capability",
|
|
35
|
+
"capability-contract",
|
|
36
|
+
"artifact",
|
|
37
|
+
"state",
|
|
38
|
+
];
|
|
39
|
+
/** Source-only validation must not appear as a packaged CLI capability. */
|
|
40
|
+
export function advertisedValidateFamilyNames() {
|
|
41
|
+
return isRetainedReferenceSourceCheckout()
|
|
42
|
+
? VALIDATE_FAMILY_NAMES
|
|
43
|
+
: VALIDATE_FAMILY_NAMES.filter((family) => !["retained-references", "activation-conjunction"].includes(family));
|
|
44
|
+
}
|
|
18
45
|
const VALIDATE_DELEGATED_SCRIPTS = {
|
|
19
46
|
"cross-capability": "validate_cross_capability.py",
|
|
20
|
-
"lifecycle-adapters": "validate_lifecycle_adapters.py",
|
|
21
47
|
"app-home-contract": "validate_app_home_contract.py",
|
|
22
48
|
vocabularyAuthority: "validate_vocabulary_authority.py",
|
|
49
|
+
"retained-references": "packages/cli/src/validate/retainedReferenceAuthority.ts",
|
|
23
50
|
selfAudit: "self_audit.py",
|
|
24
51
|
"release-metadata": "validate_release_metadata.py",
|
|
25
52
|
};
|
|
@@ -38,11 +65,6 @@ function runCrossCapability() {
|
|
|
38
65
|
}
|
|
39
66
|
return { stdout: "cross-capability artifact graph ok\n", stderr: "", returncode: 0 };
|
|
40
67
|
}
|
|
41
|
-
function runLifecycleAdapters(legacyPythonParity = false) {
|
|
42
|
-
const lines = [];
|
|
43
|
-
const rc = lifecycleMain({ legacyPythonParity, out: (line) => lines.push(line) });
|
|
44
|
-
return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
|
|
45
|
-
}
|
|
46
68
|
function runAppHomeContract() {
|
|
47
69
|
const errors = validateAppHome(resolvePath(repoRoot()));
|
|
48
70
|
if (errors.length > 0) {
|
|
@@ -59,6 +81,29 @@ function runVocabularyAuthority() {
|
|
|
59
81
|
const rc = vocabularyAuthorityMain({ out: (line) => lines.push(line) });
|
|
60
82
|
return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
|
|
61
83
|
}
|
|
84
|
+
function runRetainedReferenceAuthority() {
|
|
85
|
+
const lines = [];
|
|
86
|
+
const rc = retainedReferenceAuthorityMain({ out: (line) => lines.push(line) });
|
|
87
|
+
return {
|
|
88
|
+
stdout: lines.map((line) => line + "\n").join(""),
|
|
89
|
+
stderr: "",
|
|
90
|
+
returncode: rc,
|
|
91
|
+
violations: rc === 0
|
|
92
|
+
? []
|
|
93
|
+
: lines.filter((line) => line.startsWith("- ")).map((line) => line.slice(2)),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function unsupportedRetainedReferenceValidation() {
|
|
97
|
+
const recovery = "Run this source-checkout-only target from the repository root after pnpm -C packages/cli build.";
|
|
98
|
+
return {
|
|
99
|
+
stdout: "",
|
|
100
|
+
stderr: `retained-reference validation is unavailable outside a source checkout. ${recovery}\n`,
|
|
101
|
+
returncode: 1,
|
|
102
|
+
violations: ["retained-reference validation is unavailable outside a source checkout"],
|
|
103
|
+
failureClass: "unsupported_source_checkout",
|
|
104
|
+
recovery,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
62
107
|
function runSelfAudit() {
|
|
63
108
|
const lines = [];
|
|
64
109
|
const rc = selfAuditMain({ out: (line) => lines.push(line) });
|
|
@@ -66,7 +111,11 @@ function runSelfAudit() {
|
|
|
66
111
|
}
|
|
67
112
|
function runReleaseMetadata() {
|
|
68
113
|
const lines = [];
|
|
69
|
-
const
|
|
114
|
+
const adapter = process.env.AGENTERA_RELEASE_ADAPTER;
|
|
115
|
+
const rc = releaseMetadataMain({
|
|
116
|
+
...(adapter === "stable" || adapter === "development" ? { adapter } : {}),
|
|
117
|
+
out: (line) => lines.push(line),
|
|
118
|
+
});
|
|
70
119
|
return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
|
|
71
120
|
}
|
|
72
121
|
function repoRoot() {
|
|
@@ -75,15 +124,15 @@ function repoRoot() {
|
|
|
75
124
|
}
|
|
76
125
|
const DELEGATED_RUNNERS = {
|
|
77
126
|
"cross-capability": () => runCrossCapability(),
|
|
78
|
-
"lifecycle-adapters": (args) => runLifecycleAdapters(Boolean(args.legacyPythonParity)),
|
|
79
127
|
"app-home-contract": () => runAppHomeContract(),
|
|
80
128
|
vocabularyAuthority: () => runVocabularyAuthority(),
|
|
129
|
+
"retained-references": () => runRetainedReferenceAuthority(),
|
|
81
130
|
selfAudit: () => runSelfAudit(),
|
|
82
131
|
"release-metadata": () => runReleaseMetadata(),
|
|
83
132
|
};
|
|
84
133
|
function validationProcessPayload(targetFamily, target, p, result) {
|
|
85
134
|
const lines = pySplitlines(result.stderr).map((l) => l.trim());
|
|
86
|
-
const violations = lines.filter((l) => l.trim()).map((l) => (l.startsWith(" ") ? l.slice(2) : l));
|
|
135
|
+
const violations = result.violations ?? lines.filter((l) => l.trim()).map((l) => (l.startsWith(" ") ? l.slice(2) : l));
|
|
87
136
|
const payload = {
|
|
88
137
|
command: "validate",
|
|
89
138
|
status: result.returncode === 0 ? "pass" : "fail",
|
|
@@ -96,6 +145,10 @@ function validationProcessPayload(targetFamily, target, p, result) {
|
|
|
96
145
|
stderr: pySplitlines(result.stderr),
|
|
97
146
|
},
|
|
98
147
|
};
|
|
148
|
+
if (result.failureClass)
|
|
149
|
+
payload.failure_class = result.failureClass;
|
|
150
|
+
if (result.recovery)
|
|
151
|
+
payload.recovery = result.recovery;
|
|
99
152
|
if (p !== null)
|
|
100
153
|
payload.path = resolvePath(p);
|
|
101
154
|
return payload;
|
|
@@ -110,10 +163,11 @@ export function cmdValidate(family, args, io) {
|
|
|
110
163
|
const out = io.out ?? ((t) => process.stdout.write(t));
|
|
111
164
|
const err = io.err ?? ((t) => process.stderr.write(t));
|
|
112
165
|
if (!(family in DELEGATED_RUNNERS)) {
|
|
113
|
-
throw new Error(
|
|
114
|
-
"cross-capability, lifecycle-adapters, app-home-contract, vocabularyAuthority, selfAudit, release-metadata, capability-contract.");
|
|
166
|
+
throw new Error(`unsupported validate target family; valid families: ${VALIDATE_FAMILY_NAMES.join(", ")}.`);
|
|
115
167
|
}
|
|
116
|
-
const result =
|
|
168
|
+
const result = family === "retained-references" && !isRetainedReferenceSourceCheckout()
|
|
169
|
+
? unsupportedRetainedReferenceValidation()
|
|
170
|
+
: DELEGATED_RUNNERS[family](args);
|
|
117
171
|
if ((args.format ?? "text") === "json") {
|
|
118
172
|
emitStructured(delegatedValidationPayload(family, result, VALIDATE_DELEGATED_SCRIPTS[family]), "json", out);
|
|
119
173
|
}
|
|
@@ -128,6 +182,9 @@ export function cmdValidate(family, args, io) {
|
|
|
128
182
|
export function isDelegatedValidateFamily(family) {
|
|
129
183
|
return family in DELEGATED_RUNNERS;
|
|
130
184
|
}
|
|
185
|
+
export function cmdValidateActivationConjunction(io) {
|
|
186
|
+
return activationConjunctionMain({ out: io.out });
|
|
187
|
+
}
|
|
131
188
|
// ── capability + capability-contract families ───────────────────────
|
|
132
189
|
const CAPABILITY_NAMES = [
|
|
133
190
|
"status", "vision", "discuss", "research", "plan", "build",
|
|
@@ -135,6 +192,7 @@ const CAPABILITY_NAMES = [
|
|
|
135
192
|
];
|
|
136
193
|
const CONTRACT_PATH = "skills/agentera/capability_schema_contract.yaml";
|
|
137
194
|
const PROTOCOL_PATH = "skills/agentera/protocol.yaml";
|
|
195
|
+
const TODO_READINESS_PATH = "skills/agentera/schemas/artifacts/todo.yaml";
|
|
138
196
|
function pyRepr(value) {
|
|
139
197
|
return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
|
|
140
198
|
}
|
|
@@ -287,12 +345,33 @@ function protocolSelfResult() {
|
|
|
287
345
|
}
|
|
288
346
|
return { stdout, stderr, returncode };
|
|
289
347
|
}
|
|
348
|
+
function todoReadinessResult() {
|
|
349
|
+
let stdout = `Validating TODO readiness: ${TODO_READINESS_PATH}\n`;
|
|
350
|
+
let errors = [];
|
|
351
|
+
try {
|
|
352
|
+
loadTodoReadinessContract(path.join(resolveSourceRoot(), TODO_READINESS_PATH), path.join(resolveSourceRoot(), PROTOCOL_PATH), path.join(resolveSourceRoot(), CONTRACT_PATH));
|
|
353
|
+
}
|
|
354
|
+
catch (exc) {
|
|
355
|
+
errors = exc instanceof TodoReadinessContractError ? exc.errors : [exc.message];
|
|
356
|
+
}
|
|
357
|
+
let stderr = "";
|
|
358
|
+
let returncode = 0;
|
|
359
|
+
if (errors.length > 0) {
|
|
360
|
+
stderr = "FAILED:\n" + errors.map((error) => ` ${error}\n`).join("");
|
|
361
|
+
returncode = 1;
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
stdout += "PASS: TODO readiness contract is internally consistent\n";
|
|
365
|
+
}
|
|
366
|
+
return { stdout, stderr, returncode };
|
|
367
|
+
}
|
|
290
368
|
export function cmdValidateCapabilityContract(args, io) {
|
|
291
369
|
const out = io.out ?? ((t) => process.stdout.write(t));
|
|
292
370
|
const err = io.err ?? ((t) => process.stderr.write(t));
|
|
293
371
|
const results = [
|
|
294
372
|
["capability-contract-self", contractSelfResult()],
|
|
295
373
|
["capability-protocol", protocolSelfResult()],
|
|
374
|
+
["todo-readiness", todoReadinessResult()],
|
|
296
375
|
];
|
|
297
376
|
if ((args.format ?? "text") === "json") {
|
|
298
377
|
const checks = results.map(([name, result]) => delegatedValidationPayload(name, result, "validate_capability.py"));
|
|
@@ -300,7 +379,7 @@ export function cmdValidateCapabilityContract(args, io) {
|
|
|
300
379
|
command: "validate",
|
|
301
380
|
status: results.every(([, r]) => r.returncode === 0) ? "pass" : "fail",
|
|
302
381
|
target_family: "capability-contract",
|
|
303
|
-
target: "capability-schema-contract-and-
|
|
382
|
+
target: "capability-schema-contract-protocol-and-todo-readiness",
|
|
304
383
|
checks,
|
|
305
384
|
// cast: c.violations are captured validation-engine lines (subprocess IO boundary)
|
|
306
385
|
violations: checks.flatMap((c) => c.violations),
|
|
@@ -320,122 +399,6 @@ export function cmdValidateCapabilityContract(args, io) {
|
|
|
320
399
|
}
|
|
321
400
|
return results.every(([, r]) => r.returncode === 0) ? 0 : 1;
|
|
322
401
|
}
|
|
323
|
-
// ── descriptors family ──────────────────────────────────────────────
|
|
324
|
-
function pySplitlinesText(s) {
|
|
325
|
-
return s.split(/\r\n|\r|\n/);
|
|
326
|
-
}
|
|
327
|
-
function descriptorValidationPayload() {
|
|
328
|
-
const sourceRoot = resolveSourceRoot();
|
|
329
|
-
const codexDir = path.join(sourceRoot, "skills", "agentera", "agents");
|
|
330
|
-
const classificationPath = path.join(sourceRoot, "references", "cli", "capability-tool-classification.yaml");
|
|
331
|
-
const checks = [];
|
|
332
|
-
const violations = [];
|
|
333
|
-
let capPermissions = {};
|
|
334
|
-
try {
|
|
335
|
-
// cast: classificationData is a parsed YAML mapping (YAML IO boundary); subsequent
|
|
336
|
-
// categoryData/capData casts traverse that parsed classification structure.
|
|
337
|
-
const classificationData = loadYamlMapping(fsReadFileSync(classificationPath, "utf8"));
|
|
338
|
-
capPermissions = {};
|
|
339
|
-
for (const categoryData of Object.values(classificationData.classification)) {
|
|
340
|
-
for (const [capability, capData] of Object.entries(categoryData.capabilities)) {
|
|
341
|
-
capPermissions[capability] = capData.permission;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
catch (exc) {
|
|
346
|
-
violations.push(`classification authority: failed to load classification: ${exc.message}`);
|
|
347
|
-
capPermissions = {};
|
|
348
|
-
}
|
|
349
|
-
for (const name of CAPABILITY_NAMES) {
|
|
350
|
-
const codexPath = path.join(codexDir, `${name}.toml`);
|
|
351
|
-
let check = { runtime: "codex", capability: name, path: codexPath, status: "pass" };
|
|
352
|
-
let text;
|
|
353
|
-
let parsed;
|
|
354
|
-
try {
|
|
355
|
-
text = fsReadFileSync(codexPath, "utf8");
|
|
356
|
-
// cast: parseTomlValidate result of a managed codex descriptor (TOML IO boundary)
|
|
357
|
-
parsed = parseTomlValidate(text);
|
|
358
|
-
}
|
|
359
|
-
catch (exc) {
|
|
360
|
-
check = { ...check, status: "fail", message: exc.message };
|
|
361
|
-
violations.push(`codex ${name}: ${exc.message}`);
|
|
362
|
-
checks.push(check);
|
|
363
|
-
continue;
|
|
364
|
-
}
|
|
365
|
-
const expectedRef = `agentera prime --context ${name} --format json`;
|
|
366
|
-
const legacyRef = `capabilities/${name}/instructions.md`;
|
|
367
|
-
if (parsed.name !== name) {
|
|
368
|
-
check = { ...check, status: "fail", message: "name field does not match capability" };
|
|
369
|
-
violations.push(`codex ${name}: name field must be ${name}`);
|
|
370
|
-
}
|
|
371
|
-
else if (typeof parsed.description !== "string" || !parsed.description.trim()) {
|
|
372
|
-
check = { ...check, status: "fail", message: "description is required" };
|
|
373
|
-
violations.push(`codex ${name}: description is required`);
|
|
374
|
-
}
|
|
375
|
-
else if (typeof parsed.developer_instructions !== "string" || !parsed.developer_instructions.includes(expectedRef)) {
|
|
376
|
-
check = { ...check, status: "fail", message: "developer_instructions must reference capability instructions" };
|
|
377
|
-
violations.push(`codex ${name}: developer_instructions must reference ${expectedRef}`);
|
|
378
|
-
}
|
|
379
|
-
else if (typeof parsed.developer_instructions === "string" && parsed.developer_instructions.includes(legacyRef)) {
|
|
380
|
-
check = { ...check, status: "fail", message: "developer_instructions must not reference the retired on-disk instructions.md" };
|
|
381
|
-
violations.push(`codex ${name}: developer_instructions must not reference ${legacyRef} (use the prime --context command)`);
|
|
382
|
-
}
|
|
383
|
-
else if (!pySplitlinesText(text).slice(0, 5).includes("# agentera_managed: true")) {
|
|
384
|
-
check = { ...check, status: "fail", message: "managed marker is required" };
|
|
385
|
-
violations.push(`codex ${name}: managed marker is required`);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
const devInst = parsed.developer_instructions;
|
|
389
|
-
// cast: capPermissions entry is read from the parsed classification YAML (IO boundary)
|
|
390
|
-
const expectedPermission = (capPermissions[name] ?? {});
|
|
391
|
-
if (expectedPermission && Object.keys(expectedPermission).length > 0) {
|
|
392
|
-
let expectedGuidance;
|
|
393
|
-
if (expectedPermission.write === "allow" && expectedPermission.bash === "allow") {
|
|
394
|
-
expectedGuidance = "You have full file write, file edit, and shell execution tools available";
|
|
395
|
-
}
|
|
396
|
-
else if (expectedPermission.write === "allow" && expectedPermission.bash === "deny") {
|
|
397
|
-
expectedGuidance =
|
|
398
|
-
"You have file write and file edit tools available to create or update files, but shell execution is disabled";
|
|
399
|
-
}
|
|
400
|
-
else {
|
|
401
|
-
expectedGuidance = "You are a read-only agent \u2014 do not write files or execute shell commands";
|
|
402
|
-
}
|
|
403
|
-
if (!devInst.includes(expectedGuidance)) {
|
|
404
|
-
check = { ...check, status: "fail", message: `developer_instructions must contain guidance '${expectedGuidance}'` };
|
|
405
|
-
violations.push(`codex ${name}: developer_instructions must contain guidance '${expectedGuidance}'`);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
checks.push(check);
|
|
410
|
-
}
|
|
411
|
-
return {
|
|
412
|
-
command: "validate",
|
|
413
|
-
status: violations.length > 0 ? "fail" : "pass",
|
|
414
|
-
target_family: "descriptors",
|
|
415
|
-
target: "agent-descriptors",
|
|
416
|
-
checks,
|
|
417
|
-
violations,
|
|
418
|
-
summary: {
|
|
419
|
-
passed: checks.filter((c) => c.status === "pass").length,
|
|
420
|
-
failed: checks.filter((c) => c.status === "fail").length,
|
|
421
|
-
},
|
|
422
|
-
};
|
|
423
|
-
}
|
|
424
|
-
export function cmdValidateDescriptors(args, io) {
|
|
425
|
-
const out = io.out ?? ((t) => process.stdout.write(t));
|
|
426
|
-
const err = io.err ?? ((t) => process.stderr.write(t));
|
|
427
|
-
const payload = descriptorValidationPayload();
|
|
428
|
-
if ((args.format ?? "text") === "json") {
|
|
429
|
-
emitStructured(payload, "json", out);
|
|
430
|
-
}
|
|
431
|
-
else {
|
|
432
|
-
// cast: payload.summary/violations derive from parsed codex TOML + classification YAML (IO boundary)
|
|
433
|
-
out(`descriptor validation ${payload.status}: ${payload.summary.passed} passed, ${payload.summary.failed} failed\n`);
|
|
434
|
-
for (const violation of payload.violations)
|
|
435
|
-
err(`- ${violation}\n`);
|
|
436
|
-
}
|
|
437
|
-
return payload.status === "pass" ? 0 : 1;
|
|
438
|
-
}
|
|
439
402
|
// ── artifact family ─────────────────────────────────────────────────
|
|
440
403
|
function validateArtifactLabel(artifact) {
|
|
441
404
|
validateAgentString(artifact, "artifact");
|
|
@@ -452,7 +415,7 @@ export function cmdValidateArtifact(args, io) {
|
|
|
452
415
|
const artifact = String(args.artifact);
|
|
453
416
|
validateArtifactLabel(artifact);
|
|
454
417
|
const cwd = resolvePath(args.cwd ?? process.cwd());
|
|
455
|
-
const adapter = new
|
|
418
|
+
const adapter = new ArtifactValidationAdapter();
|
|
456
419
|
const [rc, payload] = adapter.runExplicit(artifact, args.file ?? null, cwd);
|
|
457
420
|
if ((args.format ?? "text") === "json") {
|
|
458
421
|
const wrapped = {
|
|
@@ -471,9 +434,145 @@ export function cmdValidateArtifact(args, io) {
|
|
|
471
434
|
out(`status=${payload.status} | artifact=${payload.artifact} | ` +
|
|
472
435
|
`file=${payload.file} | docs_mapped_default=${payload.docs_mapped_default} | ` +
|
|
473
436
|
`path_source=${payload.path_source}\n`);
|
|
474
|
-
// cast: payload.violations come from the artifact-validation
|
|
437
|
+
// cast: payload.violations come from the artifact-validation engine IO boundary
|
|
475
438
|
for (const violation of payload.violations)
|
|
476
439
|
err(`${violation}\n`);
|
|
477
440
|
return rc;
|
|
478
441
|
}
|
|
479
|
-
|
|
442
|
+
export function cmdValidateState(args, io) {
|
|
443
|
+
const out = io.out ?? ((text) => process.stdout.write(text));
|
|
444
|
+
const err = io.err ?? ((text) => process.stderr.write(text));
|
|
445
|
+
const projectRoot = resolvePath(args.cwd ?? process.cwd());
|
|
446
|
+
const payload = validateStatePayload(projectRoot);
|
|
447
|
+
const issues = payload.issues;
|
|
448
|
+
if ((args.format ?? "text") === "json")
|
|
449
|
+
emitStructured(payload, "json", out);
|
|
450
|
+
else {
|
|
451
|
+
out(`status=${payload.status} | entities=${payload.entity_count} | issues=${payload.issue_count} | project_root=${projectRoot}\n`);
|
|
452
|
+
for (const issue of issues)
|
|
453
|
+
err(`${issue.code}: ${issue.message}\nrecovery: ${issue.recovery}\n`);
|
|
454
|
+
if (payload.omitted_issue_count > 0)
|
|
455
|
+
err(`omitted ${payload.omitted_issue_count} additional issues; repair listed issues and rerun agentera check validate state --cwd ${JSON.stringify(projectRoot)}\n`);
|
|
456
|
+
}
|
|
457
|
+
return payload.valid ? 0 : 1;
|
|
458
|
+
}
|
|
459
|
+
function todoReconciliationValidationIssue(diagnosis) {
|
|
460
|
+
const label = diagnosis.state === "inactive" ? "inactive" : diagnosis.state === "unsafe_inactive" ? "unsafe inactive" : diagnosis.state === "unsafe_active" ? "unsafe active" : "invalid lifecycle";
|
|
461
|
+
return {
|
|
462
|
+
code: `todo_reconciliation_${diagnosis.state}`,
|
|
463
|
+
path: "TODO.md",
|
|
464
|
+
artifact: "todo",
|
|
465
|
+
message: `TODO reconciliation is ${label}; the project is not operable through the reconciled TODO surface`,
|
|
466
|
+
recovery: diagnosis.recovery_command,
|
|
467
|
+
diagnosis: diagnosis,
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
/** The executable whole-state contract shared by the public command and upgrade verification. */
|
|
471
|
+
export function validateStatePayload(projectRootInput) {
|
|
472
|
+
const projectRoot = resolvePath(projectRootInput);
|
|
473
|
+
const result = validateEntityState(projectRoot);
|
|
474
|
+
const issues = [...result.issues];
|
|
475
|
+
let additionalOmittedIssues = 0;
|
|
476
|
+
let entityMode = false;
|
|
477
|
+
try {
|
|
478
|
+
const binding = detectStateModeBinding(projectRoot);
|
|
479
|
+
if (binding.mode === "entities") {
|
|
480
|
+
entityMode = true;
|
|
481
|
+
binding.publicationContext.close();
|
|
482
|
+
const markerSnapshot = readProjectFileSnapshot(validateRealProjectRoot(projectRoot), ".agentera/state-mode.yaml");
|
|
483
|
+
if (markerSnapshot.kind !== "file")
|
|
484
|
+
throw new Error("entity-mode marker became unavailable during maintenance validation");
|
|
485
|
+
const marker = loadYamlMapping(markerSnapshot.bytes.toString("utf8"));
|
|
486
|
+
if (typeof marker.migration_id === "string" || marker.cutover === "one_way_git") {
|
|
487
|
+
const targets = loadEntityCutoverTargetsForMarker(projectRoot, markerSnapshot.bytes);
|
|
488
|
+
const byPath = new Map(result.entities.map((entity) => [entity.relativePath, entity]));
|
|
489
|
+
for (const target of targets) {
|
|
490
|
+
const actual = byPath.get(target.path);
|
|
491
|
+
if (!actual || actual.classification !== "valid" || (target.id && actual.id !== target.id) || (target.artifact && actual.artifact !== target.artifact)) {
|
|
492
|
+
issues.push({ code: "missing_migrated_entity", path: target.path, id: target.id ?? null, artifact: target.artifact ?? null, message: `cutover target '${target.path}' is missing or no longer has its declared identity`, recovery: "Restore a valid canonical entity at the manifest-declared path; no state was changed." });
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
catch (error) {
|
|
499
|
+
const message = error.message;
|
|
500
|
+
if (issues.length < 100)
|
|
501
|
+
issues.push({
|
|
502
|
+
code: message.includes("state mode marker") ? "invalid_lifecycle_state" : "invalid_state_marker_or_manifest",
|
|
503
|
+
path: ".agentera/state-mode.yaml",
|
|
504
|
+
message: message.includes("state mode marker") ? "entity-state lifecycle marker is invalid" : message,
|
|
505
|
+
recovery: "Restore the durable marker and immutable migration evidence, then rerun this read-only check.",
|
|
506
|
+
});
|
|
507
|
+
else
|
|
508
|
+
additionalOmittedIssues += 1;
|
|
509
|
+
}
|
|
510
|
+
if (entityMode) {
|
|
511
|
+
let reconciliation = null;
|
|
512
|
+
try {
|
|
513
|
+
reconciliation = inspectTodoReconciliationState(projectRoot);
|
|
514
|
+
if (reconciliation?.status === "action_required") {
|
|
515
|
+
if (issues.length < 100)
|
|
516
|
+
issues.push(todoReconciliationValidationIssue(reconciliation));
|
|
517
|
+
else
|
|
518
|
+
additionalOmittedIssues += 1;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
catch (error) {
|
|
522
|
+
if (issues.length < 100)
|
|
523
|
+
issues.push({ code: "invalid_todo_reconciliation", path: "TODO.md", artifact: "todo", message: "TODO reconciliation could not be inspected without state changes", recovery: "Restore valid bounded TODO reconciliation state, then rerun this read-only check." });
|
|
524
|
+
else
|
|
525
|
+
additionalOmittedIssues += 1;
|
|
526
|
+
}
|
|
527
|
+
if (reconciliation?.state === "invalid_lifecycle")
|
|
528
|
+
return finishStateValidation(projectRoot, result, issues, additionalOmittedIssues);
|
|
529
|
+
try {
|
|
530
|
+
const reconciliation = inspectTodoReconciliationDrift(projectRoot);
|
|
531
|
+
const driftItems = Array.isArray(reconciliation.items) ? reconciliation.items.filter((item) => item !== null && typeof item === "object" && !Array.isArray(item)) : [];
|
|
532
|
+
const reconciliationOmitted = Number(reconciliation.omitted_count ?? 0);
|
|
533
|
+
const available = Math.max(0, 100 - issues.length);
|
|
534
|
+
for (const item of driftItems.slice(0, available)) {
|
|
535
|
+
const id = String(item.id ?? "unknown");
|
|
536
|
+
const state = String(item.state ?? "drift");
|
|
537
|
+
const fields = [...new Set([
|
|
538
|
+
...(Array.isArray(item.markdown_changed_fields) ? item.markdown_changed_fields : []),
|
|
539
|
+
...(Array.isArray(item.entity_changed_fields) ? item.entity_changed_fields : []),
|
|
540
|
+
...(Array.isArray(item.conflicting_fields) ? item.conflicting_fields : []),
|
|
541
|
+
].filter((field) => typeof field === "string"))].sort();
|
|
542
|
+
issues.push({
|
|
543
|
+
code: "todo_reconciliation_drift",
|
|
544
|
+
path: "TODO.md",
|
|
545
|
+
id,
|
|
546
|
+
artifact: "todo",
|
|
547
|
+
message: `managed TODO '${id}' has ${state} reconciliation drift${fields.length ? ` in ${fields.join(", ")}` : ""}`,
|
|
548
|
+
recovery: "Review the reported authority and run the intended typed TODO mutation once; the writer reconciles one-sided changes atomically and rejects conflicts before effects.",
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
additionalOmittedIssues += Math.max(0, driftItems.length - available) + (Number.isSafeInteger(reconciliationOmitted) && reconciliationOmitted > 0 ? reconciliationOmitted : 0);
|
|
552
|
+
}
|
|
553
|
+
catch (error) {
|
|
554
|
+
if (issues.length < 100)
|
|
555
|
+
issues.push({ code: "invalid_todo_reconciliation", path: "TODO.md", artifact: "todo", message: error.message, recovery: "Restore valid bounded managed TODO Markdown, activation metadata, and public baselines, then rerun this read-only check." });
|
|
556
|
+
else
|
|
557
|
+
additionalOmittedIssues += 1;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return finishStateValidation(projectRoot, result, issues, additionalOmittedIssues);
|
|
561
|
+
}
|
|
562
|
+
function finishStateValidation(projectRoot, result, issues, additionalOmittedIssues) {
|
|
563
|
+
const omittedIssueCount = result.omittedIssueCount + additionalOmittedIssues;
|
|
564
|
+
const valid = result.valid && issues.length === 0 && omittedIssueCount === 0;
|
|
565
|
+
const payload = {
|
|
566
|
+
command: "check validate state",
|
|
567
|
+
target_family: "state",
|
|
568
|
+
status: valid ? "pass" : "fail",
|
|
569
|
+
valid,
|
|
570
|
+
project_root: projectRoot,
|
|
571
|
+
entity_count: result.entityCount,
|
|
572
|
+
issue_count: issues.length + omittedIssueCount,
|
|
573
|
+
omitted_issue_count: omittedIssueCount,
|
|
574
|
+
valid_artifact_values: result.validArtifactValues,
|
|
575
|
+
issues: issues,
|
|
576
|
+
};
|
|
577
|
+
return payload;
|
|
578
|
+
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { main as evalSkillsMain } from "../../eval/evalSkills.js";
|
|
2
2
|
import { main as semanticEvalMain } from "../../eval/semanticEval.js";
|
|
3
|
+
import { runGlossaryEvaluationProcess } from "../../eval/glossaryEvaluationProcess.js";
|
|
4
|
+
import { validateGlossaryEvaluationSuccessReport, } from "../../eval/glossaryEvaluationSuccessReport.js";
|
|
5
|
+
import { evaluateHybridRoute } from "../../eval/hybridRouteEvaluation.js";
|
|
6
|
+
import { routeEvaluationExitCode } from "./route.js";
|
|
3
7
|
export const VERIFY_FAMILIES = ["eval"];
|
|
4
8
|
export const RETIRED_VERIFY_FAMILIES = ["smoke"];
|
|
5
9
|
export const VERIFY_TARGETS = {
|
|
6
|
-
eval: ["skills", "semantic"],
|
|
10
|
+
eval: ["skills", "semantic", "routing", "glossary"],
|
|
7
11
|
};
|
|
8
12
|
export const VERIFY_FORMATS = ["text", "json"];
|
|
9
13
|
export const VERIFY_DIAGNOSTIC_LINE_LIMIT = 20;
|
|
@@ -43,14 +47,14 @@ export function validateVerifyRequest(args) {
|
|
|
43
47
|
if (family === "eval" && target === "skills" && args.run && args.dryRun) {
|
|
44
48
|
throw new Error("unsupported eval skills request combines --run and --dry-run; choose one mode. " +
|
|
45
49
|
"Safe default: omit --run to list the bounded dry-run plan without invoking a runtime. " +
|
|
46
|
-
"Syntax: agentera verify eval skills [--run] [--skill NAME] [--timeout SECONDS] [--parallel N] [--runtime auto|
|
|
50
|
+
"Syntax: agentera verify eval skills [--run] [--skill NAME] [--timeout SECONDS] [--parallel N] [--runtime auto|opencode|cursor] [--format text|json]. " +
|
|
47
51
|
"Example: agentera verify eval skills --dry-run --format json");
|
|
48
52
|
}
|
|
49
53
|
if (family === "eval" && target === "skills") {
|
|
50
54
|
const runtime = String(args.runtime ?? "auto");
|
|
51
|
-
if (!["auto", "
|
|
52
|
-
throw new Error(`unsupported eval skills runtime '${runtime}'; valid runtimes: auto,
|
|
53
|
-
"Syntax: agentera verify eval skills [--run] [--runtime auto|
|
|
55
|
+
if (!["auto", "opencode", "cursor"].includes(runtime)) {
|
|
56
|
+
throw new Error(`unsupported eval skills runtime '${runtime}'; valid runtimes: auto, opencode, cursor. ` +
|
|
57
|
+
"Syntax: agentera verify eval skills [--run] [--runtime auto|opencode|cursor] [--format text|json]. " +
|
|
54
58
|
"Example: agentera verify eval skills --format json");
|
|
55
59
|
}
|
|
56
60
|
if ((args.parallel ?? 1) < 1 || (args.timeout ?? 120) < 1) {
|
|
@@ -61,15 +65,20 @@ export function validateVerifyRequest(args) {
|
|
|
61
65
|
}
|
|
62
66
|
if (family === "eval" && target === "semantic" && (args.fixtures ?? []).length === 0) {
|
|
63
67
|
throw new Error("semantic verify requires explicit fixture path(s); broad fixture discovery is not a safe default. " +
|
|
64
|
-
"Valid targets for eval: skills, semantic. " +
|
|
68
|
+
"Valid targets for eval: skills, semantic, routing, glossary. " +
|
|
65
69
|
"Syntax: agentera verify eval semantic <fixture> [<fixture>...] [--format text|json]. " +
|
|
66
70
|
"Example: agentera verify eval semantic fixtures/semantic/bare-agentera-message.md --format json");
|
|
67
71
|
}
|
|
72
|
+
if (family === "eval" && target === "glossary" && (args.fixtures ?? []).length > 0) {
|
|
73
|
+
throw new Error("glossary verify uses the contract-owned frozen holdout and accepts no fixture path. " +
|
|
74
|
+
"It always runs current product behavior. Syntax: agentera check verify eval glossary --format text|json.");
|
|
75
|
+
}
|
|
68
76
|
return [family, target, outputFormat];
|
|
69
77
|
}
|
|
70
78
|
/**
|
|
71
|
-
* Resolve the engine command + safety metadata for a verify target.
|
|
72
|
-
*
|
|
79
|
+
* Resolve the engine command + safety metadata for a verify target. The frozen
|
|
80
|
+
* glossary evaluator runs in its isolated process so unrelated CLI starts do
|
|
81
|
+
* not load its mining graph. Only the eval family is supported; the smoke
|
|
73
82
|
* family (maintainer/CI harnesses) was retired in the self-contained package.
|
|
74
83
|
*/
|
|
75
84
|
function runVerifyEngine(family, target, args) {
|
|
@@ -92,11 +101,11 @@ function runVerifyEngine(family, target, args) {
|
|
|
92
101
|
}
|
|
93
102
|
else {
|
|
94
103
|
// Pin a concrete runtime for safe discovery unless explicitly chosen.
|
|
95
|
-
const dryRunRuntime = runtime !== "auto" ? runtime : "
|
|
104
|
+
const dryRunRuntime = runtime !== "auto" ? runtime : "opencode";
|
|
96
105
|
engineArgs.push("--parallel", parallel, "--timeout", timeout, "--runtime", dryRunRuntime, "--dry-run");
|
|
97
106
|
safety = {
|
|
98
107
|
mode: "dry-run",
|
|
99
|
-
summary: "default lists skill prompts without invoking
|
|
108
|
+
summary: "default lists skill prompts without invoking OpenCode, Cursor, or long-running evals",
|
|
100
109
|
live: false,
|
|
101
110
|
long_running_default: false,
|
|
102
111
|
};
|
|
@@ -115,6 +124,36 @@ function runVerifyEngine(family, target, args) {
|
|
|
115
124
|
const result = runInProcess(["eval", "semantic", ...fixtures], (out) => semanticEvalMain(fixtures, (l) => out(l)));
|
|
116
125
|
return { result, safety };
|
|
117
126
|
}
|
|
127
|
+
if (family === "eval" && target === "glossary") {
|
|
128
|
+
const safety = {
|
|
129
|
+
mode: "offline-frozen-holdout",
|
|
130
|
+
summary: "runs frozen synthetic inputs through current glossary discovery, classification, and V2 decision seams without a semantic host or user-local effects",
|
|
131
|
+
live: false,
|
|
132
|
+
long_running_default: false,
|
|
133
|
+
};
|
|
134
|
+
const evaluation = runGlossaryEvaluationProcess();
|
|
135
|
+
const result = {
|
|
136
|
+
command: ["node", "agentera", "verify", "eval", "glossary"],
|
|
137
|
+
returncode: evaluation.returncode,
|
|
138
|
+
stdout: evaluation.stdout,
|
|
139
|
+
stderr: evaluation.stderr,
|
|
140
|
+
};
|
|
141
|
+
return { result, safety };
|
|
142
|
+
}
|
|
143
|
+
if (family === "eval" && target === "routing") {
|
|
144
|
+
const safety = {
|
|
145
|
+
mode: "offline-frozen-corpus",
|
|
146
|
+
summary: "runs the contract-owned frozen synthetic corpus only; it never sends requests or invokes a semantic host",
|
|
147
|
+
live: false,
|
|
148
|
+
long_running_default: false,
|
|
149
|
+
};
|
|
150
|
+
const result = runInProcess(["eval", "routing"], (out) => {
|
|
151
|
+
const report = evaluateHybridRoute();
|
|
152
|
+
out(JSON.stringify(report, null, 2) + "\n");
|
|
153
|
+
return routeEvaluationExitCode(report);
|
|
154
|
+
});
|
|
155
|
+
return { result, safety };
|
|
156
|
+
}
|
|
118
157
|
throw new Error(`unhandled verify target ${family}/${target}`);
|
|
119
158
|
}
|
|
120
159
|
function runInProcess(command, invoke) {
|
|
@@ -146,23 +185,42 @@ function boundedLines(text, limit = VERIFY_DIAGNOSTIC_LINE_LIMIT) {
|
|
|
146
185
|
return lines;
|
|
147
186
|
return [...lines.slice(0, limit), `... truncated ${lines.length - limit} line(s)`];
|
|
148
187
|
}
|
|
188
|
+
function publicVerifyResult(family, target, result) {
|
|
189
|
+
if (family !== "eval" || target !== "glossary" || result.returncode !== 0)
|
|
190
|
+
return { result };
|
|
191
|
+
const glossaryEvaluation = validateGlossaryEvaluationSuccessReport(result);
|
|
192
|
+
if (glossaryEvaluation !== null)
|
|
193
|
+
return { result, glossaryEvaluation };
|
|
194
|
+
const separator = result.stderr === "" || result.stderr.endsWith("\n") ? "" : "\n";
|
|
195
|
+
return {
|
|
196
|
+
result: {
|
|
197
|
+
...result,
|
|
198
|
+
returncode: 1,
|
|
199
|
+
stderr: `${result.stderr}${separator}invalid glossary evaluation success report\n`,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
}
|
|
149
203
|
function verifyStatus(result) {
|
|
150
204
|
return result.returncode === 0 ? "pass" : "fail";
|
|
151
205
|
}
|
|
152
206
|
export function buildVerifyPayload(family, target, outputFormat, result, safety) {
|
|
207
|
+
const publicResult = publicVerifyResult(family, target, result);
|
|
153
208
|
return {
|
|
154
209
|
command: "verify",
|
|
155
|
-
status: verifyStatus(result),
|
|
210
|
+
status: verifyStatus(publicResult.result),
|
|
156
211
|
family,
|
|
157
212
|
target,
|
|
158
213
|
format: outputFormat,
|
|
159
|
-
engine: { command: result.command, exit_code: result.returncode },
|
|
214
|
+
engine: { command: publicResult.result.command, exit_code: publicResult.result.returncode },
|
|
160
215
|
diagnostics: {
|
|
161
|
-
stdout: boundedLines(result.stdout),
|
|
162
|
-
stderr: boundedLines(result.stderr),
|
|
216
|
+
stdout: boundedLines(publicResult.result.stdout),
|
|
217
|
+
stderr: boundedLines(publicResult.result.stderr),
|
|
163
218
|
line_limit: VERIFY_DIAGNOSTIC_LINE_LIMIT,
|
|
164
219
|
},
|
|
165
220
|
safety,
|
|
221
|
+
...(publicResult.glossaryEvaluation === undefined
|
|
222
|
+
? {}
|
|
223
|
+
: { glossary_evaluation: publicResult.glossaryEvaluation }),
|
|
166
224
|
};
|
|
167
225
|
}
|
|
168
226
|
function emitVerifyText(payload, out) {
|
|
@@ -205,6 +263,5 @@ export function cmdVerify(args, io = {}) {
|
|
|
205
263
|
else {
|
|
206
264
|
emitVerifyText(payload, out);
|
|
207
265
|
}
|
|
208
|
-
return
|
|
266
|
+
return payload.engine.exit_code;
|
|
209
267
|
}
|
|
210
|
-
//# sourceMappingURL=verify.js.map
|