agentera 3.0.0-dev.4 → 3.0.0-dev.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +108 -22
- package/bundle/.agentera-npx-bundle.json +1 -1
- package/bundle/CHANGELOG.md +1351 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +143 -0
- package/bundle/UPGRADE.md +236 -0
- package/bundle/extract-corpus-parity.json +21 -0
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-publication.json +437 -0
- package/bundle/references/adapters/package-registry.yaml +434 -189
- package/bundle/references/adapters/package-surface-characterization.md +66 -35
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
- package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
- package/bundle/references/analysis/verification-policy.yaml +191 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
- package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
- package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
- package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
- package/bundle/references/cli/routing-model.md +155 -0
- package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
- package/bundle/references/cli/update-channels.yaml +35 -2
- package/bundle/references/cli/vocabulary-index.yaml +23 -20
- package/bundle/references/cli/vocabulary.md +337 -366
- package/bundle/references/meta/retained-reference-authority.yaml +151 -0
- package/bundle/registry.json +14 -14
- package/bundle/skills/agentera/SKILL.md +218 -408
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
- package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
- package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
- package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
- package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
- package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
- package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
- package/bundle/skills/agentera/protocol.yaml +31 -31
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
- package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
- package/dist/analytics/extractCorpus/cli.js +190 -0
- package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
- package/dist/analytics/extractCorpus/core.js +392 -0
- package/dist/analytics/extractCorpus/corpus.js +167 -0
- package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
- package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
- package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
- package/dist/analytics/extractCorpus/index.js +14 -0
- package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
- package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
- package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
- package/dist/analytics/extractCorpus/tierReader.js +108 -0
- package/dist/analytics/extractCorpus.js +2 -1791
- package/dist/analytics/glossaryAdviceResolution.js +166 -0
- package/dist/analytics/glossaryInputAcquisition.js +319 -0
- package/dist/analytics/personalGlossaryAdmission.js +133 -0
- package/dist/analytics/personalGlossaryProfile.js +219 -0
- package/dist/analytics/profileSignals.js +211 -0
- package/dist/analytics/usageStats.js +169 -42
- package/dist/audit/terminologyDrift.js +281 -0
- package/dist/bin/agentera.js +3 -2
- package/dist/capabilities/audit/instructions.js +16 -0
- package/dist/capabilities/build/instructions.js +56 -0
- package/dist/capabilities/design/instructions.js +4 -0
- package/dist/capabilities/discuss/instructions.js +29 -0
- package/dist/capabilities/document/instructions.js +11 -0
- package/dist/capabilities/index.js +40 -0
- package/dist/capabilities/optimize/instructions.js +14 -0
- package/dist/capabilities/orchestrate/instructions.js +40 -0
- package/dist/capabilities/plan/instructions.js +32 -0
- package/dist/capabilities/profile/instructions.js +70 -0
- package/dist/capabilities/research/instructions.js +5 -0
- package/dist/capabilities/status/instructions.js +11 -0
- package/dist/capabilities/status/startupInstructions.js +34 -0
- package/dist/capabilities/vision/instructions.js +4 -0
- package/dist/cli/appContext.js +30 -24
- package/dist/cli/argvalidate.js +0 -1
- package/dist/cli/capabilityContext/benchmark.js +565 -0
- package/dist/cli/capabilityContext/bespoke.js +44 -0
- package/dist/cli/capabilityContext/build.js +242 -0
- package/dist/cli/capabilityContext/closeout.js +233 -0
- package/dist/cli/capabilityContext/contract.js +179 -0
- package/dist/cli/capabilityContext/evidence.js +463 -0
- package/dist/cli/capabilityContext/index.js +3 -0
- package/dist/cli/capabilityContext/orchestration.js +131 -0
- package/dist/cli/capabilityContext/planState.js +260 -0
- package/dist/cli/capabilityContext/progress.js +142 -0
- package/dist/cli/capabilityContext/projectVerification.js +409 -0
- package/dist/cli/capabilityContext/shared.js +83 -0
- package/dist/cli/capabilityContext/slim.js +152 -0
- package/dist/cli/capabilityContext/startup.js +150 -0
- package/dist/cli/capabilityContext/startupAggregation.js +68 -0
- package/dist/cli/capabilityContext/types.js +56 -0
- package/dist/cli/capabilityContext.js +1 -2421
- package/dist/cli/commands/appHome.js +22 -0
- package/dist/cli/commands/capability.js +5 -12
- package/dist/cli/commands/compact.js +41 -13
- package/dist/cli/commands/doctor.js +127 -97
- package/dist/cli/commands/durability.js +81 -0
- package/dist/cli/commands/glossaryAdvice.js +138 -0
- package/dist/cli/commands/lint.js +26 -44
- package/dist/cli/commands/personalGlossary.js +176 -0
- package/dist/cli/commands/prime/briefOrientation.js +747 -0
- package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
- package/dist/cli/commands/prime/bundleStatus.js +190 -0
- package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
- package/dist/cli/commands/prime/collectOrientationState.js +212 -0
- package/dist/cli/commands/prime/orientationOutput.js +397 -0
- package/dist/cli/commands/prime/types.js +1 -0
- package/dist/cli/commands/prime/v1Migration.js +38 -0
- package/dist/cli/commands/prime.js +80 -558
- package/dist/cli/commands/profileGrounding.js +55 -0
- package/dist/cli/commands/query.js +78 -53
- package/dist/cli/commands/report.js +96 -25
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/schema.js +266 -143
- package/dist/cli/commands/state/decisions.js +387 -0
- package/dist/cli/commands/state/docs.js +70 -0
- package/dist/cli/commands/state/experimentRecords.js +151 -0
- package/dist/cli/commands/state/experiments.js +14 -0
- package/dist/cli/commands/state/get.js +129 -0
- package/dist/cli/commands/state/health.js +14 -0
- package/dist/cli/commands/state/index.js +16 -0
- package/dist/cli/commands/state/list.js +194 -0
- package/dist/cli/commands/state/objective.js +25 -0
- package/dist/cli/commands/state/plan.js +14 -0
- package/dist/cli/commands/state/planTasks.js +154 -0
- package/dist/cli/commands/state/plans.js +154 -0
- package/dist/cli/commands/state/progress.js +13 -0
- package/dist/cli/commands/state/shared.js +14 -0
- package/dist/cli/commands/state/todo.js +42 -0
- package/dist/cli/commands/state/write.js +434 -0
- package/dist/cli/commands/upgrade.js +146 -5
- package/dist/cli/commands/upgradeVerify.js +118 -0
- package/dist/cli/commands/validate.js +272 -213
- package/dist/cli/commands/verify.js +24 -9
- package/dist/cli/contracts/bundleStatus.js +1 -0
- package/dist/cli/contracts/orientationState.js +1 -0
- package/dist/cli/dispatch/argvParser.js +32 -0
- package/dist/cli/dispatch/check.js +372 -0
- package/dist/cli/dispatch/commands.js +27 -0
- package/dist/cli/dispatch/index.js +207 -0
- package/dist/cli/dispatch/lifecycle.js +652 -0
- package/dist/cli/dispatch/prime.js +139 -0
- package/dist/cli/dispatch/projections.js +17 -0
- package/dist/cli/dispatch/shared.js +63 -0
- package/dist/cli/dispatch/state.js +140 -0
- package/dist/cli/dispatch.js +1 -996
- package/dist/cli/errors.js +52 -0
- package/dist/cli/help.js +390 -43
- package/dist/cli/migrationRequired.js +87 -0
- package/dist/cli/orientation/attention.js +59 -0
- package/dist/cli/orientation/corpusCoverage.js +102 -0
- package/dist/cli/orientation.js +444 -173
- package/dist/cli/planArtifacts.js +350 -0
- package/dist/cli/planEvidence.js +157 -0
- package/dist/cli/planLifecycleState.js +36 -0
- package/dist/cli/planTaskIndex.js +11 -0
- package/dist/cli/preCutoverCommand.js +32 -0
- package/dist/cli/prime-blob.js +71 -3
- package/dist/cli/profileAcquisition.js +167 -0
- package/dist/cli/startupCompletenessContract.js +59 -0
- package/dist/cli/stateQuery.js +63 -14
- package/dist/cli/structured.js +0 -1
- package/dist/cli/todoMarkdown.js +46 -0
- package/dist/cli/todoReadinessSelection.js +192 -0
- package/dist/cli/todoSeverity.js +18 -0
- package/dist/core/atomicWriter.js +20 -0
- package/dist/core/developmentChannel.js +1 -0
- package/dist/core/developmentInvocation.js +374 -0
- package/dist/core/difflib.js +0 -1
- package/dist/core/envPaths.js +20 -0
- package/dist/core/jsonValue.js +5 -0
- package/dist/core/paths.js +0 -1
- package/dist/core/pyjson.js +67 -3
- package/dist/core/shell.js +4 -0
- package/dist/core/skillIdentity.js +23 -0
- package/dist/core/sourceRoot.js +9 -12
- package/dist/core/text.js +10 -0
- package/dist/core/toml.js +0 -1
- package/dist/core/yaml.js +8 -1
- package/dist/eval/evalSkills.js +30 -26
- package/dist/eval/hybridRouteEvaluation.js +155 -0
- package/dist/eval/semanticEval.js +43 -20
- package/dist/eval/semanticFixtures.js +16 -5
- package/dist/hooks/common.js +11 -81
- package/dist/hooks/compaction/apply.js +446 -0
- package/dist/hooks/compaction/dryRun.js +184 -0
- package/dist/hooks/compaction/index.js +22 -0
- package/dist/hooks/compaction/parse.js +325 -0
- package/dist/hooks/compaction/retention.js +202 -0
- package/dist/hooks/compaction/status.js +360 -0
- package/dist/hooks/compaction/types.js +5 -0
- package/dist/hooks/validateArtifact/agentFacing.js +9 -0
- package/dist/hooks/validateArtifact/index.js +92 -0
- package/dist/hooks/validateArtifact/markdown.js +145 -0
- package/dist/hooks/validateArtifact/schema.js +546 -0
- package/dist/hooks/validateArtifact/traversal.js +107 -0
- package/dist/hooks/validateArtifact/violations.js +107 -0
- package/dist/migrate/v2HandoffManifest.js +452 -0
- package/dist/registries/activationContract.js +2 -0
- package/dist/registries/activationTuples.js +106 -0
- package/dist/registries/artifactProtocolIds.js +78 -0
- package/dist/registries/artifactRegistry.js +224 -63
- package/dist/registries/artifactSchemaProjection.js +45 -0
- package/dist/registries/capabilityContract.js +141 -13
- package/dist/registries/evaluatorHandoffContract.js +170 -0
- package/dist/registries/evidenceTierContract.js +371 -0
- package/dist/registries/glossaryAdviceContract.js +79 -0
- package/dist/registries/glossaryCaveatContract.js +67 -0
- package/dist/registries/glossaryConsumerContractValidation.js +787 -0
- package/dist/registries/glossaryEntryContract.js +757 -0
- package/dist/registries/glossaryTermIdentity.js +17 -0
- package/dist/registries/glossaryTermOccurrence.js +20 -0
- package/dist/registries/hybridRoute.js +274 -0
- package/dist/registries/hybridRouteReceipt.js +221 -0
- package/dist/registries/packagePublication.js +229 -0
- package/dist/registries/packageRegistry.js +187 -211
- package/dist/registries/todoReadinessContract.js +448 -0
- package/dist/registries/triggerLoader.js +174 -0
- package/dist/registries/verbosityBudgetContract.js +205 -0
- package/dist/release/releaseMetadata.js +385 -0
- package/dist/runtime/lifecycleAdapterContract.js +457 -0
- package/dist/runtime/lifecycleAdapters.js +777 -0
- package/dist/runtime/lifecycleAuthority.js +453 -0
- package/dist/runtime/lifecycleOperationContract.js +123 -0
- package/dist/runtime/lifecycleOperations.js +634 -0
- package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
- package/dist/runtime/lifecyclePublication.js +415 -0
- package/dist/runtime/lifecycleSnapshot.js +438 -0
- package/dist/runtime/nativeResourceCleanup.js +502 -0
- package/dist/setup/opencode.js +20 -0
- package/dist/setup/opencodeConstants.js +1 -0
- package/dist/setup/sharedSkill.js +45 -0
- package/dist/setup/smokeChecks.js +21 -82
- package/dist/state/archiveDiscovery.js +580 -0
- package/dist/state/archivePublication.js +225 -0
- package/dist/state/archiveRecovery.js +237 -0
- package/dist/state/archiveReplay.js +53 -0
- package/dist/state/canonicalMigrationRecord.js +36 -0
- package/dist/state/changelog.js +221 -0
- package/dist/state/decisionEntities.js +367 -0
- package/dist/state/decisionLegacyValidation.js +215 -0
- package/dist/state/decisionMigrationProvenance.js +199 -0
- package/dist/state/decisionOverlay.js +254 -0
- package/dist/state/decisionRevision.js +256 -0
- package/dist/state/decisionRevisionMigration.js +89 -0
- package/dist/state/directRetrieval.js +323 -0
- package/dist/state/durability.js +324 -0
- package/dist/state/entityCutover.js +459 -0
- package/dist/state/entityCutoverGit.js +127 -0
- package/dist/state/entityGlossaryAuthority.js +13 -0
- package/dist/state/entityListProjection.js +187 -0
- package/dist/state/entityListRuntimeRegistry.js +85 -0
- package/dist/state/entityMigrationCausality.js +97 -0
- package/dist/state/entityMigrationIdentity.js +5 -0
- package/dist/state/entityMigrationPreview.js +846 -0
- package/dist/state/entityMigrationTodo.js +133 -0
- package/dist/state/entityPublicationContext.js +806 -0
- package/dist/state/entityRetrievalHelp.js +506 -0
- package/dist/state/entityStorage.js +896 -0
- package/dist/state/exactReplacementRecovery.js +18 -0
- package/dist/state/experimentArchive.js +63 -0
- package/dist/state/experimentIdentity.js +202 -0
- package/dist/state/healthEntities.js +262 -0
- package/dist/state/healthEntityValidation.js +18 -0
- package/dist/state/healthRepair.js +69 -0
- package/dist/state/installRoot.js +64 -25
- package/dist/state/legacyEntityCutoverEvidence.js +65 -0
- package/dist/state/legacyIdentity.js +47 -0
- package/dist/state/legacySummaryRecord.js +6 -0
- package/dist/state/listAccounting.js +54 -0
- package/dist/state/listClassification.js +17 -0
- package/dist/state/listCursor.js +42 -0
- package/dist/state/listRetrieval.js +781 -0
- package/dist/state/migrationSourceBinding.js +30 -0
- package/dist/state/objectiveExperimentEntities.js +322 -0
- package/dist/state/planEntities.js +530 -0
- package/dist/state/planIdentity.js +47 -0
- package/dist/state/planRetrieval.js +313 -0
- package/dist/state/planTaskRetrieval.js +294 -0
- package/dist/state/progressEntities.js +512 -0
- package/dist/state/progressGlossaryCaveat.js +168 -0
- package/dist/state/progressPublicationOrder.js +19 -0
- package/dist/state/projectRoot.js +62 -0
- package/dist/state/projectionPolicy.js +190 -0
- package/dist/state/retrievalAuthority.js +156 -0
- package/dist/state/safeProjectFile.js +155 -0
- package/dist/state/startupAnalysis/benchmark.js +432 -0
- package/dist/state/startupAnalysis/contract.js +160 -0
- package/dist/state/startupAnalysis/helpers.js +286 -0
- package/dist/state/startupAnalysis/index.js +6 -0
- package/dist/state/startupAnalysis/metrics.js +340 -0
- package/dist/state/startupAnalysis/records.js +198 -0
- package/dist/state/startupAnalysis/report.js +111 -0
- package/dist/state/startupAnalysis/threshold.js +512 -0
- package/dist/state/startupAnalysis.js +2 -1953
- package/dist/state/startupProjection.js +499 -0
- package/dist/state/stateMode.js +85 -0
- package/dist/state/stateStorageAuthority.js +47 -0
- package/dist/state/summaryEntityRead.js +25 -0
- package/dist/state/summaryMigrationProvenance.js +66 -0
- package/dist/state/summarySourceRowAuthority.js +36 -0
- package/dist/state/todoDocsEntities.js +1064 -0
- package/dist/state/todoDocsEntityValidation.js +158 -0
- package/dist/state/todoMarkdownProjection.js +51 -0
- package/dist/state/todoReconciliationActivation.js +132 -0
- package/dist/state/todoReconciliationInspection.js +173 -0
- package/dist/state/todoReconciliationRepair.js +170 -0
- package/dist/state/todoReconciliationTransaction.js +582 -0
- package/dist/state/write/assign.js +20 -0
- package/dist/state/write/candidateMutation.js +269 -0
- package/dist/state/write/errors.js +11 -0
- package/dist/state/write/experimentPublication.js +192 -0
- package/dist/state/write/explain.js +332 -0
- package/dist/state/write/fields.js +61 -0
- package/dist/state/write/glossaryPublication.js +263 -0
- package/dist/state/write/grammar.js +280 -0
- package/dist/state/write/helpers.js +29 -0
- package/dist/state/write/index.js +12 -0
- package/dist/state/write/input.js +367 -0
- package/dist/state/write/lock.js +837 -0
- package/dist/state/write/mutation.js +234 -0
- package/dist/state/write/operations.js +169 -0
- package/dist/state/write/planEvaluation.js +128 -0
- package/dist/state/write/planPublication.js +179 -0
- package/dist/state/write/runtimeOperations.js +142 -0
- package/dist/state/write/serialize.js +1 -0
- package/dist/state/write/transaction.js +52 -0
- package/dist/state/write/validate.js +7 -0
- package/dist/upgrade/appContentRefresh.js +383 -0
- package/dist/upgrade/appModel.js +8 -7
- package/dist/upgrade/atomicWriter.js +1 -0
- package/dist/upgrade/bundleEvidence.js +33 -0
- package/dist/upgrade/channels.js +12 -8
- package/dist/upgrade/compatibility.js +56 -21
- package/dist/upgrade/doctor.js +197 -192
- package/dist/upgrade/doctorClassifier.js +187 -0
- package/dist/upgrade/installedHooksRetirement.js +196 -0
- package/dist/upgrade/legacyAgentCleanup.js +282 -0
- package/dist/upgrade/lifecycleUpgrade.js +113 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
- package/dist/upgrade/migrationPublication.js +122 -0
- package/dist/upgrade/nextMajorDoctor.js +155 -0
- package/dist/upgrade/npxPlatformStatus.js +22 -0
- package/dist/upgrade/projectIntegration.js +145 -187
- package/dist/upgrade/projectIntegrationDecision.js +50 -0
- package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
- package/dist/upgrade/runtimeMigration.js +278 -352
- package/dist/upgrade/upgradeCommands.js +14 -1
- package/dist/upgrade/upgradeLock.js +85 -0
- package/dist/upgrade/upgradeOrchestrator.js +263 -59
- package/dist/upgrade/v3CapabilitySurface.js +14 -0
- package/dist/upgrade/versionResolution.js +12 -5
- package/dist/validate/activationArtifactEvidence.js +844 -0
- package/dist/validate/activationConjunction.js +816 -0
- package/dist/validate/activationEvidenceManifest.js +515 -0
- package/dist/validate/activationPackageSemantics.js +29 -0
- package/dist/validate/appHomeContract.js +5 -11
- package/dist/validate/bootstrapAuthority.js +44 -0
- package/dist/validate/capability.js +144 -15
- package/dist/validate/crossCapability.js +15 -10
- package/dist/validate/retainedReferenceAuthority.js +879 -0
- package/dist/validate/selfAudit.js +73 -37
- package/dist/validate/v1LegacyCruft.js +131 -0
- package/dist/validate/vocabularyAuthority.js +303 -0
- package/package.json +53 -27
- package/bundle/references/adapters/cursor.md +0 -213
- package/bundle/references/adapters/opencode.md +0 -530
- package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
- package/bundle/references/adapters/runtime-feature-parity.md +0 -189
- package/bundle/references/analysis/benchmark.md +0 -267
- package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
- package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
- package/bundle/references/cli/capability-tool-classification.yaml +0 -53
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
- package/bundle/references/meta/documentation-inventory.md +0 -43
- package/bundle/references/v1-section-mapping.md +0 -47
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
- package/bundle/skills/agentera/agents/hej.toml +0 -6
- package/bundle/skills/agentera/agents/inspektera.toml +0 -6
- package/bundle/skills/agentera/agents/inspirera.toml +0 -6
- package/bundle/skills/agentera/agents/optimera.toml +0 -6
- package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
- package/bundle/skills/agentera/agents/planera.toml +0 -6
- package/bundle/skills/agentera/agents/profilera.toml +0 -6
- package/bundle/skills/agentera/agents/realisera.toml +0 -6
- package/bundle/skills/agentera/agents/resonera.toml +0 -6
- package/bundle/skills/agentera/agents/visionera.toml +0 -6
- package/bundle/skills/agentera/agents/visualisera.toml +0 -6
- package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
- package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
- package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
- package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
- package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
- package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
- package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
- package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
- package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
- package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
- package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
- package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
- package/bundle/skills/agentera/references/contract.md +0 -1039
- package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
- package/bundle/skills/hej/SKILL.md +0 -69
- package/bundle/skills/hej/agents/hej.toml +0 -11
- package/bundle/skills/hej/agents/openai.yaml +0 -8
- package/dist/analytics/extractCorpus.js.map +0 -1
- package/dist/analytics/usageStats.js.map +0 -1
- package/dist/bin/agentera.js.map +0 -1
- package/dist/cli/appContext.js.map +0 -1
- package/dist/cli/argvalidate.js.map +0 -1
- package/dist/cli/capabilityContext.js.map +0 -1
- package/dist/cli/commands/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.js.map +0 -1
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/schema.js.map +0 -1
- package/dist/cli/commands/state.js +0 -1012
- package/dist/cli/commands/state.js.map +0 -1
- package/dist/cli/commands/upgrade.js.map +0 -1
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/commands/verify.js.map +0 -1
- package/dist/cli/dispatch.js.map +0 -1
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/orientation.js.map +0 -1
- package/dist/cli/prime-blob.js.map +0 -1
- package/dist/cli/stateQuery.js.map +0 -1
- package/dist/cli/structured.js.map +0 -1
- package/dist/core/difflib.js.map +0 -1
- package/dist/core/git.js +0 -43
- package/dist/core/git.js.map +0 -1
- package/dist/core/paths.js.map +0 -1
- package/dist/core/pyjson.js.map +0 -1
- package/dist/core/sourceRoot.js.map +0 -1
- package/dist/core/toml.js.map +0 -1
- package/dist/core/yaml.js.map +0 -1
- package/dist/eval/evalSkills.js.map +0 -1
- package/dist/eval/semanticEval.js.map +0 -1
- package/dist/eval/semanticFixtures.js.map +0 -1
- package/dist/hooks/common.js.map +0 -1
- package/dist/hooks/compaction.js +0 -935
- package/dist/hooks/compaction.js.map +0 -1
- package/dist/hooks/cursorPreToolUse.js +0 -19
- package/dist/hooks/cursorPreToolUse.js.map +0 -1
- package/dist/hooks/cursorSessionStart.js +0 -71
- package/dist/hooks/cursorSessionStart.js.map +0 -1
- package/dist/hooks/sessionStart.js +0 -209
- package/dist/hooks/sessionStart.js.map +0 -1
- package/dist/hooks/sessionStop.js +0 -212
- package/dist/hooks/sessionStop.js.map +0 -1
- package/dist/hooks/validateArtifact.js +0 -933
- package/dist/hooks/validateArtifact.js.map +0 -1
- package/dist/registries/artifactRegistry.js.map +0 -1
- package/dist/registries/capabilityContract.js.map +0 -1
- package/dist/registries/packageRegistry.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -315
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/setup/codex.js +0 -1056
- package/dist/setup/codex.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -127
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/doctor.js +0 -1297
- package/dist/setup/doctor.js.map +0 -1
- package/dist/setup/smokeChecks.js.map +0 -1
- package/dist/state/installRoot.js.map +0 -1
- package/dist/state/progressCommit.js +0 -289
- package/dist/state/progressCommit.js.map +0 -1
- package/dist/state/startupAnalysis.js.map +0 -1
- package/dist/upgrade/appModel.js.map +0 -1
- package/dist/upgrade/channels.js.map +0 -1
- package/dist/upgrade/compatibility.js.map +0 -1
- package/dist/upgrade/doctor.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
- package/dist/upgrade/projectIntegration.js.map +0 -1
- package/dist/upgrade/runtimeMigration.js.map +0 -1
- package/dist/upgrade/upgradeCommands.js.map +0 -1
- package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
- package/dist/upgrade/versionResolution.js.map +0 -1
- package/dist/validate/appHomeContract.js.map +0 -1
- package/dist/validate/capability.js.map +0 -1
- package/dist/validate/crossCapability.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -772
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- package/dist/validate/selfAudit.js.map +0 -1
- /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
3
4
|
import { loadYamlMapping } from "../core/yaml.js";
|
|
4
5
|
import { loadCapabilitySchemaContract, } from "../registries/capabilityContract.js";
|
|
6
|
+
/**
|
|
7
|
+
* Validate a capability directory against the capability schema contract.
|
|
8
|
+
* Faithful TS port of scripts/validate_capability.py.
|
|
9
|
+
*
|
|
10
|
+
* Note: YAML integer keys (`1:`) parse to JS string keys ("1"); numeric-key
|
|
11
|
+
* detection uses a digit regex, which matches Python's `isinstance(key, int)`
|
|
12
|
+
* for all real (bare-integer) schema keys.
|
|
13
|
+
*/
|
|
5
14
|
export const PROTOCOL_GROUPS = [
|
|
6
15
|
"CONFIDENCE_SCALE",
|
|
7
16
|
"SEVERITY_FINDING",
|
|
@@ -41,13 +50,13 @@ function pyListRepr(values) {
|
|
|
41
50
|
return "[" + values.map((v) => `'${v}'`).join(", ") + "]";
|
|
42
51
|
}
|
|
43
52
|
export function loadContract(contractPath) {
|
|
44
|
-
return loadYamlMapping(fs.readFileSync(contractPath, "utf8"));
|
|
53
|
+
return loadYamlMapping(fs.readFileSync(contractPath, "utf8")); // cast: YAML parse IO boundary
|
|
45
54
|
}
|
|
46
55
|
export function loadSchemaFile(p) {
|
|
47
|
-
return loadYamlMapping(fs.readFileSync(p, "utf8"));
|
|
56
|
+
return loadYamlMapping(fs.readFileSync(p, "utf8")); // cast: YAML parse IO boundary
|
|
48
57
|
}
|
|
49
58
|
export function loadProtocol(protocolPath) {
|
|
50
|
-
return loadYamlMapping(fs.readFileSync(protocolPath, "utf8"));
|
|
59
|
+
return loadYamlMapping(fs.readFileSync(protocolPath, "utf8")); // cast: YAML parse IO boundary
|
|
51
60
|
}
|
|
52
61
|
function listSchemaFiles(schemasDir, glob) {
|
|
53
62
|
// Agentera schema globs are always "*.yaml"; match on suffix.
|
|
@@ -71,7 +80,7 @@ export function collectSchemaGroups(schemasDir, requiredGroups, schemaGlob = "*.
|
|
|
71
80
|
combined[groupName] = {};
|
|
72
81
|
}
|
|
73
82
|
if (isMapping(groupData)) {
|
|
74
|
-
Object.assign(combined[groupName], groupData);
|
|
83
|
+
Object.assign(combined[groupName], groupData); // cast: parsed schema IO data
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
86
|
}
|
|
@@ -81,11 +90,18 @@ export function collectSchemaGroups(schemasDir, requiredGroups, schemaGlob = "*.
|
|
|
81
90
|
export function checkDirectoryStructure(capDir, contract) {
|
|
82
91
|
const errors = [];
|
|
83
92
|
const directoryRules = contract.directoryRules;
|
|
84
|
-
const prose = path.join(capDir, directoryRules.instructionPath);
|
|
85
93
|
const schemas = path.join(capDir, directoryRules.schemasPath);
|
|
86
|
-
|
|
94
|
+
// The instruction module path is a repo-relative path under
|
|
95
|
+
// packages/cli/src/capabilities/<name>/instructions.ts (D65). Resolve the
|
|
96
|
+
// capability name from the capDir (last path segment) and look up the
|
|
97
|
+
// module against the resolved Agentera source root, not the capDir.
|
|
98
|
+
const capabilityName = path.basename(capDir);
|
|
99
|
+
const instructionModulePath = (directoryRules.instructionModulePath ?? directoryRules.instructionPath).replace(/<name>/g, capabilityName);
|
|
100
|
+
const sourceRoot = resolveSourceRoot();
|
|
101
|
+
const instructionModuleAbs = path.join(sourceRoot, instructionModulePath);
|
|
102
|
+
const isFile = fs.existsSync(instructionModuleAbs) && fs.statSync(instructionModuleAbs).isFile();
|
|
87
103
|
if (!isFile) {
|
|
88
|
-
errors.push(`V1 [error]: ${
|
|
104
|
+
errors.push(`V1 [error]: ${instructionModulePath} not found in ${capDir}`);
|
|
89
105
|
}
|
|
90
106
|
const isDir = fs.existsSync(schemas) && fs.statSync(schemas).isDirectory();
|
|
91
107
|
if (!isDir) {
|
|
@@ -165,13 +181,125 @@ export function checkTriggerPriorities(groups, sourceLabel, contract) {
|
|
|
165
181
|
if (priority === null && priorityRules.required) {
|
|
166
182
|
errors.push(`V5b [error]: TRIGGERS entry ${key} in ${sourceLabel} missing 'priority'`);
|
|
167
183
|
}
|
|
168
|
-
else if (priority !== null && !priorityRules.allowedValues.includes(priority)) {
|
|
184
|
+
else if (priority !== null && !priorityRules.allowedValues.includes(priority)) { // cast: parsed schema IO data
|
|
169
185
|
errors.push(`V5b [error]: TRIGGERS entry ${key} in ${sourceLabel} has invalid priority=${valueRepr(priority)} ` +
|
|
170
186
|
`(must be one of: ${priorityRules.allowedValues.join(", ")})`);
|
|
171
187
|
}
|
|
172
188
|
}
|
|
173
189
|
return errors;
|
|
174
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* V7 trigger-entry enrichment validation. Enforces the four optional fields
|
|
193
|
+
* declared in TRIGGER_ENRICHMENT in capability_schema_contract.yaml. Every
|
|
194
|
+
* field is OPTIONAL; a triggers.yaml entry that omits all compatibility fields
|
|
195
|
+
* passes. The hybrid route contract limits these fields to the semantic phase
|
|
196
|
+
* after deterministic abstention while this validator preserves legacy
|
|
197
|
+
* enriched-file compatibility. Error messages include the
|
|
198
|
+
* valid range/value and the offending entry ID so authors can locate the
|
|
199
|
+
* violation without grepping the contract.
|
|
200
|
+
*/
|
|
201
|
+
export function checkTriggerEnrichment(groups, sourceLabel, contract) {
|
|
202
|
+
const errors = [];
|
|
203
|
+
const triggers = groups.TRIGGERS ?? {};
|
|
204
|
+
if (!isMapping(triggers)) {
|
|
205
|
+
return errors;
|
|
206
|
+
}
|
|
207
|
+
const enrichment = contract.triggerEnrichment;
|
|
208
|
+
const confidenceField = enrichment.fields.confidence_threshold;
|
|
209
|
+
const borderlineField = enrichment.fields.borderline_band;
|
|
210
|
+
const allowedIds = enrichment.allowedCapabilityIds;
|
|
211
|
+
for (const [key, entry] of Object.entries(triggers)) {
|
|
212
|
+
if (!isMapping(entry)) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const entryId = entry.id ?? key;
|
|
216
|
+
const location = `TRIGGERS entry ${key} (${entryId}) in ${sourceLabel}`;
|
|
217
|
+
if (entry.patterns !== undefined) {
|
|
218
|
+
const value = entry.patterns;
|
|
219
|
+
if (!Array.isArray(value) || !value.every((pattern) => typeof pattern === "string")) {
|
|
220
|
+
errors.push(`V7 [error]: ${location} has patterns=${valueRepr(value)} ` +
|
|
221
|
+
`(must be a list of strings)`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (entry.confidence_threshold !== undefined) {
|
|
225
|
+
const value = entry.confidence_threshold;
|
|
226
|
+
const min = confidenceField.min ?? 0;
|
|
227
|
+
const max = confidenceField.max ?? 100;
|
|
228
|
+
if (typeof value !== "number" ||
|
|
229
|
+
!Number.isInteger(value) ||
|
|
230
|
+
value < min ||
|
|
231
|
+
value > max) {
|
|
232
|
+
errors.push(`V7 [error]: ${location} has confidence_threshold=${valueRepr(value)} ` +
|
|
233
|
+
`(must be an integer in range ${min}..${max})`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (entry.borderline_band !== undefined) {
|
|
237
|
+
const value = entry.borderline_band;
|
|
238
|
+
const min = borderlineField.min ?? 0;
|
|
239
|
+
const max = borderlineField.max ?? 100;
|
|
240
|
+
if (typeof value !== "number" ||
|
|
241
|
+
!Number.isInteger(value) ||
|
|
242
|
+
value < min ||
|
|
243
|
+
value > max) {
|
|
244
|
+
errors.push(`V7 [error]: ${location} has borderline_band=${valueRepr(value)} ` +
|
|
245
|
+
`(must be an integer in range ${min}..${max})`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (entry.patterns_regex !== undefined) {
|
|
249
|
+
const value = entry.patterns_regex;
|
|
250
|
+
if (!Array.isArray(value)) {
|
|
251
|
+
errors.push(`V7 [error]: ${location} has patterns_regex=${valueRepr(value)} ` +
|
|
252
|
+
`(must be a list of regex strings)`);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
for (let i = 0; i < value.length; i++) {
|
|
256
|
+
const pattern = value[i];
|
|
257
|
+
if (typeof pattern !== "string") {
|
|
258
|
+
errors.push(`V7 [error]: ${location} patterns_regex[${i}] is not a string`);
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
try {
|
|
262
|
+
new RegExp(pattern);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
errors.push(`V7 [error]: ${location} patterns_regex[${i}]=${valueRepr(pattern)} ` +
|
|
266
|
+
`is not a valid regular expression`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (entry.disambiguates_against !== undefined) {
|
|
272
|
+
const value = entry.disambiguates_against;
|
|
273
|
+
if (!Array.isArray(value)) {
|
|
274
|
+
errors.push(`V7 [error]: ${location} has disambiguates_against=${valueRepr(value)} ` +
|
|
275
|
+
`(must be a list of mappings each with 'capability' and 'hint')`);
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
for (let i = 0; i < value.length; i++) {
|
|
279
|
+
const item = value[i];
|
|
280
|
+
if (!isMapping(item)) {
|
|
281
|
+
errors.push(`V7 [error]: ${location} disambiguates_against[${i}] must be a mapping with 'capability' and 'hint'`);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const capability = item.capability;
|
|
285
|
+
if (typeof capability !== "string" || !capability) {
|
|
286
|
+
errors.push(`V7 [error]: ${location} disambiguates_against[${i}] missing 'capability' ` +
|
|
287
|
+
`(must be one of: ${allowedIds.join(", ")})`);
|
|
288
|
+
}
|
|
289
|
+
else if (!allowedIds.includes(capability)) {
|
|
290
|
+
errors.push(`V7 [error]: ${location} disambiguates_against[${i}].capability=${valueRepr(capability)} ` +
|
|
291
|
+
`is not a canonical capability ID (must be one of: ${allowedIds.join(", ")})`);
|
|
292
|
+
}
|
|
293
|
+
const hint = item.hint;
|
|
294
|
+
if (typeof hint !== "string" || hint.trim() === "") {
|
|
295
|
+
errors.push(`V7 [error]: ${location} disambiguates_against[${i}] missing or empty 'hint' ` +
|
|
296
|
+
`(must be a non-empty string distinguishing this trigger from the named capability)`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return errors;
|
|
302
|
+
}
|
|
175
303
|
export function checkDeprecation(groups, sourceLabel, contract) {
|
|
176
304
|
const warnings = [];
|
|
177
305
|
const markerField = contract.deprecationRules.marker_field;
|
|
@@ -225,6 +353,7 @@ export function validateContractSelf(contractPath) {
|
|
|
225
353
|
errors.push(...checkNumberedEntries(groups, contractPath, contract));
|
|
226
354
|
errors.push(...checkStableIds(groups, contractPath, contract));
|
|
227
355
|
errors.push(...checkTriggerPriorities(groups, contractPath, contract));
|
|
356
|
+
errors.push(...checkTriggerEnrichment(groups, contractPath, contract));
|
|
228
357
|
for (const w of checkDeprecation(groups, contractPath, contract)) {
|
|
229
358
|
process.stderr.write(w + "\n");
|
|
230
359
|
}
|
|
@@ -241,6 +370,7 @@ export function validateCapability(capDir, contractPath) {
|
|
|
241
370
|
allErrors.push(...checkNumberedEntries(groups, capDir, contract));
|
|
242
371
|
allErrors.push(...checkStableIds(groups, capDir, contract));
|
|
243
372
|
allErrors.push(...checkTriggerPriorities(groups, capDir, contract));
|
|
373
|
+
allErrors.push(...checkTriggerEnrichment(groups, capDir, contract));
|
|
244
374
|
for (const w of checkDeprecation(groups, capDir, contract)) {
|
|
245
375
|
process.stderr.write(w + "\n");
|
|
246
376
|
}
|
|
@@ -260,7 +390,7 @@ export function buildProtocolValueLookup(protocolData) {
|
|
|
260
390
|
continue;
|
|
261
391
|
}
|
|
262
392
|
if ("value" in entry) {
|
|
263
|
-
values.add(entry.value);
|
|
393
|
+
values.add(entry.value); // cast: parsed protocol IO data
|
|
264
394
|
}
|
|
265
395
|
}
|
|
266
396
|
if (values.size > 0) {
|
|
@@ -282,7 +412,7 @@ export function checkProtocolStructure(protocolData, sourceLabel) {
|
|
|
282
412
|
errors.push(`[error]: group ${groupName} missing in ${sourceLabel}`);
|
|
283
413
|
continue;
|
|
284
414
|
}
|
|
285
|
-
const expectedPrefix = prefixes[groupName] ?? "";
|
|
415
|
+
const expectedPrefix = (prefixes[groupName] ?? ""); // cast: parsed protocol IO data
|
|
286
416
|
const validIds = new Set();
|
|
287
417
|
for (const [key, entry] of Object.entries(group)) {
|
|
288
418
|
if (!isNumericKey(key)) {
|
|
@@ -314,7 +444,7 @@ export function checkProtocolStructure(protocolData, sourceLabel) {
|
|
|
314
444
|
errors.push(`[warning]: entry ${key} (${entry.id ?? "?"}) ` +
|
|
315
445
|
`in ${groupName} is deprecated but has no replaced_by`);
|
|
316
446
|
}
|
|
317
|
-
else if (!validIds.has(replaced)) {
|
|
447
|
+
else if (!validIds.has(replaced)) { // cast: parsed protocol IO data
|
|
318
448
|
errors.push(`[warning]: entry ${key} (${entry.id ?? "?"}) ` +
|
|
319
449
|
`in ${groupName} has replaced_by=${valueRepr(replaced)} ` +
|
|
320
450
|
`which does not match any entry ID`);
|
|
@@ -334,14 +464,14 @@ export function checkPhaseTransitions(protocolData, sourceLabel) {
|
|
|
334
464
|
const phaseValues = new Set();
|
|
335
465
|
for (const [key, entry] of Object.entries(phasesGroup)) {
|
|
336
466
|
if (isNumericKey(key) && isMapping(entry) && "value" in entry) {
|
|
337
|
-
phaseValues.add(entry.value);
|
|
467
|
+
phaseValues.add(entry.value); // cast: parsed protocol IO data
|
|
338
468
|
}
|
|
339
469
|
}
|
|
340
470
|
for (const [key, entry] of Object.entries(phasesGroup)) {
|
|
341
471
|
if (!isNumericKey(key) || !isMapping(entry)) {
|
|
342
472
|
continue;
|
|
343
473
|
}
|
|
344
|
-
const successors = entry.valid_successors ?? [];
|
|
474
|
+
const successors = (entry.valid_successors ?? []); // cast: parsed protocol IO data
|
|
345
475
|
const entryId = entry.id ?? `entry ${key}`;
|
|
346
476
|
for (const s of successors) {
|
|
347
477
|
if (!phaseValues.has(s)) {
|
|
@@ -392,7 +522,7 @@ export function checkPrimitiveReferences(capDir, protocolPath, contractPath = "s
|
|
|
392
522
|
for (const v of valuesToCheck) {
|
|
393
523
|
let resolved = false;
|
|
394
524
|
for (const pg of protocolGroups) {
|
|
395
|
-
if (pg in lookup && lookup[pg].has(v)) {
|
|
525
|
+
if (pg in lookup && lookup[pg].has(v)) { // cast: parsed schema/protocol IO data
|
|
396
526
|
resolved = true;
|
|
397
527
|
break;
|
|
398
528
|
}
|
|
@@ -409,4 +539,3 @@ export function checkPrimitiveReferences(capDir, protocolPath, contractPath = "s
|
|
|
409
539
|
}
|
|
410
540
|
return errors;
|
|
411
541
|
}
|
|
412
|
-
//# sourceMappingURL=capability.js.map
|
|
@@ -2,21 +2,22 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { loadYamlMapping } from "../core/yaml.js";
|
|
4
4
|
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
5
|
-
import { artifactSchemasDir as defaultArtifactSchemasDir, loadArtifactRegistry, } from "../registries/artifactRegistry.js";
|
|
5
|
+
import { artifactSchemasDir as defaultArtifactSchemasDir, loadArtifactRegistry, registryModelPath as defaultRegistryModelPath, } from "../registries/artifactRegistry.js";
|
|
6
6
|
function capabilitiesDirDefault() {
|
|
7
7
|
return path.join(resolveSourceRoot(), "skills", "agentera", "capabilities");
|
|
8
8
|
}
|
|
9
9
|
function loadYaml(p) {
|
|
10
|
-
return loadYamlMapping(fs.readFileSync(p, "utf8"));
|
|
10
|
+
return loadYamlMapping(fs.readFileSync(p, "utf8")); // cast: YAML parse IO boundary
|
|
11
11
|
}
|
|
12
|
-
export function loadCanonicalArtifacts(artifactSchemasDir = defaultArtifactSchemasDir()) {
|
|
12
|
+
export function loadCanonicalArtifacts(artifactSchemasDir = defaultArtifactSchemasDir(), registryModelPathArg = defaultRegistryModelPath()) {
|
|
13
13
|
const out = new Map();
|
|
14
|
-
for (const [artifactId, record] of loadArtifactRegistry(artifactSchemasDir)) {
|
|
14
|
+
for (const [artifactId, record] of loadArtifactRegistry(artifactSchemasDir, registryModelPathArg)) {
|
|
15
15
|
out.set(artifactId, {
|
|
16
16
|
artifactId: record.artifactId,
|
|
17
17
|
displayName: record.displayName,
|
|
18
18
|
producers: record.producers,
|
|
19
19
|
consumers: record.consumers,
|
|
20
|
+
implementationStatus: record.implementationStatus,
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
return out;
|
|
@@ -47,7 +48,7 @@ export function loadCapabilityArtifacts(capabilitiesDir = capabilitiesDirDefault
|
|
|
47
48
|
continue;
|
|
48
49
|
}
|
|
49
50
|
const e = entry;
|
|
50
|
-
const artifactId = String(e.
|
|
51
|
+
const artifactId = String(e.artifact ?? "").trim();
|
|
51
52
|
const localRole = String(e.local_role ?? "").trim();
|
|
52
53
|
if (!artifactId) {
|
|
53
54
|
continue;
|
|
@@ -102,9 +103,12 @@ function sortedListRepr(s) {
|
|
|
102
103
|
const arr = [...s].sort();
|
|
103
104
|
return "[" + arr.map((v) => `'${v}'`).join(", ") + "]";
|
|
104
105
|
}
|
|
105
|
-
export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(), capabilitiesDir = capabilitiesDirDefault()) {
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(), capabilitiesDir = capabilitiesDirDefault(), registryModelPathArg = defaultRegistryModelPath()) {
|
|
107
|
+
// Thread the same model path into both registry loads so a synthetic
|
|
108
|
+
// test fixture (or a non-default install) resolves the same identity set in
|
|
109
|
+
// the canonical map and the dependency-graph walk below.
|
|
110
|
+
const registry = loadArtifactRegistry(artifactSchemasDir, registryModelPathArg);
|
|
111
|
+
const canonical = loadCanonicalArtifacts(artifactSchemasDir, registryModelPathArg);
|
|
108
112
|
const capabilityArtifacts = loadCapabilityArtifacts(capabilitiesDir);
|
|
109
113
|
const capabilityNames = new Set(listCapabilityDirs(capabilitiesDir));
|
|
110
114
|
const errors = [];
|
|
@@ -116,7 +120,7 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
|
|
|
116
120
|
byArtifactId.get(record.artifactId).push(record);
|
|
117
121
|
const name = displayName(record, registry);
|
|
118
122
|
if (!canonical.has(record.artifactId)) {
|
|
119
|
-
errors.push(`${record.capability}: unknown
|
|
123
|
+
errors.push(`${record.capability}: unknown artifact '${record.artifactId}'`);
|
|
120
124
|
continue;
|
|
121
125
|
}
|
|
122
126
|
if (record.producers.size === 0 && record.consumers.size === 0) {
|
|
@@ -124,6 +128,8 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
|
|
|
124
128
|
}
|
|
125
129
|
}
|
|
126
130
|
for (const [artifactId, artifact] of canonical) {
|
|
131
|
+
if (artifact.implementationStatus === "declared_deferred")
|
|
132
|
+
continue;
|
|
127
133
|
const records = byArtifactId.get(artifactId) ?? [];
|
|
128
134
|
const producedBy = records.length ? unionSets(records.map((r) => r.producers)) : new Set();
|
|
129
135
|
const consumedBy = records.length ? unionSets(records.map((r) => r.consumers)) : new Set();
|
|
@@ -142,4 +148,3 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
|
|
|
142
148
|
}
|
|
143
149
|
return errors;
|
|
144
150
|
}
|
|
145
|
-
//# sourceMappingURL=crossCapability.js.map
|