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
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
schema_version: agentera.hybrid_route_contract.v3
|
|
2
|
+
status: normative
|
|
3
|
+
purpose: >-
|
|
4
|
+
Define the portable, two-phase request-to-capability route contract. The CLI
|
|
5
|
+
implements deterministic resolution and receipt validation; the host supplies
|
|
6
|
+
open-ended semantic judgment only after deterministic abstention.
|
|
7
|
+
ownership:
|
|
8
|
+
cli: >-
|
|
9
|
+
The CLI owns request validation, deterministic terminal selections, receipt
|
|
10
|
+
validation, and all startup authorization.
|
|
11
|
+
host: >-
|
|
12
|
+
The portable shared skill is the only host integration. A host may make a
|
|
13
|
+
semantic judgment only after semantic_required and must submit a receipt.
|
|
14
|
+
prohibited: [runtime_specific_adapter, host_bypasses_receipt_validation]
|
|
15
|
+
phrase_registry: skills/agentera/route-phrases.yaml
|
|
16
|
+
semantic_intent: references/cli/trigger-schema-enrichment.md
|
|
17
|
+
evaluation_corpus: fixtures/routing/hybrid-corpus.yaml
|
|
18
|
+
|
|
19
|
+
protocol:
|
|
20
|
+
request:
|
|
21
|
+
version: agentera.route_request.v1
|
|
22
|
+
required_fields: [request]
|
|
23
|
+
request: >-
|
|
24
|
+
The transient, unmodified user message. It is accepted for routing and is
|
|
25
|
+
never persisted by this protocol.
|
|
26
|
+
cli_seam:
|
|
27
|
+
command: npx -y agentera@next route request --input PATH --format json
|
|
28
|
+
input: >-
|
|
29
|
+
A YAML or JSON mapping supplied by --input PATH or --input -. The request
|
|
30
|
+
field is never accepted in argv; --input - reads it from stdin.
|
|
31
|
+
output: >-
|
|
32
|
+
The versioned route response is emitted as JSON on stdout. Diagnostics do
|
|
33
|
+
not include request or topic text, and routing writes no state or report.
|
|
34
|
+
exit_codes: { ok: 0, invalid_input: 2, authority_conflict: 2 }
|
|
35
|
+
response:
|
|
36
|
+
version: agentera.route_response.v1
|
|
37
|
+
outcomes: [deterministic_selection, semantic_required]
|
|
38
|
+
deterministic_selection:
|
|
39
|
+
required_fields: [capability, tier, recognized_span, topic_span, provenance]
|
|
40
|
+
tiers: [bare, direct, phrase]
|
|
41
|
+
semantic_required:
|
|
42
|
+
required_fields: [request_sha256, semantic_capsule, semantic_capsule_sha256, receipt_contract, provenance]
|
|
43
|
+
semantic_capsule: >-
|
|
44
|
+
The active trigger intent documentation and contract version needed for
|
|
45
|
+
a host judgment. It contains no state-derived next_action and no raw
|
|
46
|
+
request text beyond the host's transient input.
|
|
47
|
+
semantic_capsule_sha256: >-
|
|
48
|
+
SHA-256 of the contract-owned canonical JSON representation of exactly
|
|
49
|
+
semantic_capsule. The host returns this value unchanged in its receipt.
|
|
50
|
+
semantic_capsule_canonicalization:
|
|
51
|
+
source: semantic_capsule
|
|
52
|
+
serialization: >-
|
|
53
|
+
UTF-8 JSON with recursively lexicographically sorted object keys and
|
|
54
|
+
no insignificant whitespace; array order is the order presented in
|
|
55
|
+
semantic_capsule.
|
|
56
|
+
included_inputs: [contract_version, capabilities, capability, triggers, id, description, priority, disambiguates_against, hint]
|
|
57
|
+
excluded_inputs: [request, request_sha256, provenance, diagnostics, next_action, phrase_registry, raw_trigger_matchers]
|
|
58
|
+
binding: >-
|
|
59
|
+
The digest binds the bounded classification inputs presented to the
|
|
60
|
+
host, not route diagnostics, state, private raw request duplication,
|
|
61
|
+
or any authority the host did not see.
|
|
62
|
+
receipt_contract:
|
|
63
|
+
schema_version: agentera.route_receipt_contract.v1
|
|
64
|
+
purpose: >-
|
|
65
|
+
A self-describing semantic-receipt guide returned only with deterministic
|
|
66
|
+
abstention. It contains the exact nullable receipt schema, legal outcomes,
|
|
67
|
+
nullability, compound and span rules, and one current stdin round trip.
|
|
68
|
+
stdin_command: npx -y agentera@next route receipt --input - --format json
|
|
69
|
+
input_schema:
|
|
70
|
+
type: object
|
|
71
|
+
additionalProperties: false
|
|
72
|
+
required: [request, receipt]
|
|
73
|
+
properties:
|
|
74
|
+
request: { type: string }
|
|
75
|
+
receipt: { $ref: '#/nullable_schema' }
|
|
76
|
+
stdin_example:
|
|
77
|
+
request: make implementation plan
|
|
78
|
+
receipt:
|
|
79
|
+
outcome: select
|
|
80
|
+
capability: plan
|
|
81
|
+
compound: none
|
|
82
|
+
question: null
|
|
83
|
+
remainder_span: null
|
|
84
|
+
receipt:
|
|
85
|
+
version: agentera.route_receipt.v1
|
|
86
|
+
required_fields: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
87
|
+
cli_seam:
|
|
88
|
+
command: npx -y agentera@next route receipt --input PATH --format json
|
|
89
|
+
input: >-
|
|
90
|
+
A YAML or JSON mapping supplied by --input PATH or --input -. It has the
|
|
91
|
+
transient original request in request and the complete nullable host output
|
|
92
|
+
in receipt. Neither field is accepted in argv or persisted.
|
|
93
|
+
output: >-
|
|
94
|
+
JSON startup authorization only: selected capability, one clarification,
|
|
95
|
+
or explicit status fallback. A preserved remainder includes its exact span
|
|
96
|
+
and transient text for the receiving host; diagnostics never echo input.
|
|
97
|
+
exit_codes: { ok: 0, invalid_input: 2, invalid_receipt: 64 }
|
|
98
|
+
outcomes: [select, clarify, no_match]
|
|
99
|
+
select:
|
|
100
|
+
required_fields: [capability, compound]
|
|
101
|
+
forbidden_fields: [question]
|
|
102
|
+
clarify:
|
|
103
|
+
required_fields: [question]
|
|
104
|
+
forbidden_fields: [capability, compound, remainder_span]
|
|
105
|
+
no_match:
|
|
106
|
+
forbidden_fields: [capability, question, compound, remainder_span]
|
|
107
|
+
validation_authority:
|
|
108
|
+
name: agentera.route_receipt_schema.v1
|
|
109
|
+
dialect: json_schema_draft_2020_12
|
|
110
|
+
canonical_capability_source: &canonical_capability_source skills/agentera/capability_schema_contract.yaml#route_aliases.primary_aliases
|
|
111
|
+
request_binding: sha256_of_original_utf8_request_bytes
|
|
112
|
+
semantic_capsule_binding: sha256_of_canonical_semantic_required.semantic_capsule
|
|
113
|
+
request_bound_fields:
|
|
114
|
+
remainder_span:
|
|
115
|
+
encoding: utf8_bytes
|
|
116
|
+
relation: 0 <= start < end = original_request_utf8_byte_length
|
|
117
|
+
exact_suffix: >-
|
|
118
|
+
start and end are UTF-8 code-point boundaries. The suffix bytes decode
|
|
119
|
+
with fatal UTF-8 handling and are returned unchanged, without
|
|
120
|
+
truncation or replacement characters.
|
|
121
|
+
schema: &agentera_route_receipt_schema
|
|
122
|
+
type: object
|
|
123
|
+
additionalProperties: false
|
|
124
|
+
required: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
125
|
+
properties:
|
|
126
|
+
version: { const: agentera.route_receipt.v1 }
|
|
127
|
+
request_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
128
|
+
semantic_capsule_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
129
|
+
outcome: { enum: [select, clarify, no_match] }
|
|
130
|
+
capability: { type: string }
|
|
131
|
+
compound: { enum: [none, preserve] }
|
|
132
|
+
question: { type: string, minLength: 1, maxLength: 280 }
|
|
133
|
+
remainder_span:
|
|
134
|
+
type: object
|
|
135
|
+
additionalProperties: false
|
|
136
|
+
required: [start, end]
|
|
137
|
+
properties:
|
|
138
|
+
start: { type: integer, minimum: 0 }
|
|
139
|
+
end: { type: integer, minimum: 0 }
|
|
140
|
+
allOf:
|
|
141
|
+
- if: { properties: { outcome: { const: select } }, required: [outcome] }
|
|
142
|
+
then:
|
|
143
|
+
required: [capability, compound]
|
|
144
|
+
not: { required: [question] }
|
|
145
|
+
- if: { properties: { outcome: { const: clarify } }, required: [outcome] }
|
|
146
|
+
then:
|
|
147
|
+
required: [question]
|
|
148
|
+
allOf:
|
|
149
|
+
- not: { required: [capability] }
|
|
150
|
+
- not: { required: [compound] }
|
|
151
|
+
- not: { required: [remainder_span] }
|
|
152
|
+
- if: { properties: { outcome: { const: no_match } }, required: [outcome] }
|
|
153
|
+
then:
|
|
154
|
+
allOf:
|
|
155
|
+
- not: { required: [capability] }
|
|
156
|
+
- not: { required: [question] }
|
|
157
|
+
- not: { required: [compound] }
|
|
158
|
+
- not: { required: [remainder_span] }
|
|
159
|
+
- if:
|
|
160
|
+
properties: { outcome: { const: select }, compound: { const: preserve } }
|
|
161
|
+
required: [outcome, compound]
|
|
162
|
+
then: { required: [remainder_span] }
|
|
163
|
+
- if:
|
|
164
|
+
properties: { outcome: { const: select }, compound: { const: none } }
|
|
165
|
+
required: [outcome, compound]
|
|
166
|
+
then: { not: { required: [remainder_span] } }
|
|
167
|
+
host_output_shape:
|
|
168
|
+
name: agentera_route_receipt
|
|
169
|
+
purpose: >-
|
|
170
|
+
The portable nullable host receipt shape. It validates the complete
|
|
171
|
+
receipt object only; the CLI receipt schema remains authoritative for
|
|
172
|
+
outcome relationships, request binding, and capability authorization.
|
|
173
|
+
canonical_capability_values_source: *canonical_capability_source
|
|
174
|
+
schema: &agentera_route_receipt_host_schema
|
|
175
|
+
type: object
|
|
176
|
+
additionalProperties: false
|
|
177
|
+
required: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound, question, remainder_span]
|
|
178
|
+
properties:
|
|
179
|
+
version: { type: string, enum: [agentera.route_receipt.v1] }
|
|
180
|
+
request_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
181
|
+
semantic_capsule_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
182
|
+
outcome: { type: string, enum: [select, clarify, no_match] }
|
|
183
|
+
capability:
|
|
184
|
+
type: [string, "null"]
|
|
185
|
+
enum: [status, vision, discuss, research, plan, build, optimize, audit, document, profile, design, orchestrate, null]
|
|
186
|
+
compound:
|
|
187
|
+
type: [string, "null"]
|
|
188
|
+
enum: [none, preserve, null]
|
|
189
|
+
question: { type: [string, "null"], maxLength: 280 }
|
|
190
|
+
remainder_span:
|
|
191
|
+
type: [object, "null"]
|
|
192
|
+
additionalProperties: false
|
|
193
|
+
required: [start, end]
|
|
194
|
+
properties:
|
|
195
|
+
start: { type: integer }
|
|
196
|
+
end: { type: integer }
|
|
197
|
+
host_to_cli_normalization:
|
|
198
|
+
name: agentera.route_receipt_host_to_cli.v1
|
|
199
|
+
purpose: >-
|
|
200
|
+
Project the host-required nullable shape into the authoritative CLI
|
|
201
|
+
receipt shape without changing any non-null value.
|
|
202
|
+
input:
|
|
203
|
+
first_step: >-
|
|
204
|
+
Validate the unmodified host receipt against host_output_shape.schema.
|
|
205
|
+
Reject it on any host-shape failure before projecting any field.
|
|
206
|
+
accepted_keys: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound, question, remainder_span]
|
|
207
|
+
projection:
|
|
208
|
+
operation: >-
|
|
209
|
+
Copy every non-null field unchanged, including its exact string bytes
|
|
210
|
+
and numeric values; remove only a null field listed as inapplicable by
|
|
211
|
+
the matching outcome rule.
|
|
212
|
+
outcome_rules:
|
|
213
|
+
select:
|
|
214
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound]
|
|
215
|
+
removable_nulls:
|
|
216
|
+
question: always
|
|
217
|
+
remainder_span: when_compound_none
|
|
218
|
+
clarify:
|
|
219
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome, question]
|
|
220
|
+
removable_nulls:
|
|
221
|
+
capability: always
|
|
222
|
+
compound: always
|
|
223
|
+
remainder_span: always
|
|
224
|
+
no_match:
|
|
225
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
226
|
+
removable_nulls:
|
|
227
|
+
capability: always
|
|
228
|
+
compound: always
|
|
229
|
+
question: always
|
|
230
|
+
remainder_span: always
|
|
231
|
+
rejection:
|
|
232
|
+
unsupported_key: reject
|
|
233
|
+
unexpected_null: reject
|
|
234
|
+
projection_bypass: reject
|
|
235
|
+
downstream_validation: >-
|
|
236
|
+
Pass only the projected receipt to agentera.route_receipt_schema.v1, then
|
|
237
|
+
rerun deterministic routing against the supplied request and source
|
|
238
|
+
authority, require semantic_required with the same request digest and
|
|
239
|
+
semantic_capsule_sha256, then apply canonical-capability, request-digest,
|
|
240
|
+
semantic-capsule, span, and startup-authorization checks. Normalization
|
|
241
|
+
does not authorize startup and does not weaken any CLI cross-field rule.
|
|
242
|
+
request_binding: >-
|
|
243
|
+
The host sends the original request transiently beside the receipt. The
|
|
244
|
+
CLI recomputes SHA-256 over its UTF-8 bytes and requires an exact match to
|
|
245
|
+
request_sha256. No session, nonce, or receipt is stored.
|
|
246
|
+
validation_result:
|
|
247
|
+
terminal_outcomes: [selected, clarification, status_fallback, invalid_receipt]
|
|
248
|
+
startup_authorization:
|
|
249
|
+
selected: selected capability only
|
|
250
|
+
clarification: none
|
|
251
|
+
status_fallback: status only
|
|
252
|
+
invalid_receipt: none
|
|
253
|
+
invalid_receipt_exit: 64
|
|
254
|
+
result_schema:
|
|
255
|
+
version: agentera.route_receipt_result.v1
|
|
256
|
+
selected: >-
|
|
257
|
+
Emits the selected canonical capability, bounded semantic-receipt
|
|
258
|
+
provenance, and npx -y agentera@next prime --context <capability> --format json as
|
|
259
|
+
the existing startup path. It authorizes that capability only.
|
|
260
|
+
clarification: >-
|
|
261
|
+
Emits exactly one validated question and semantic-receipt provenance; it
|
|
262
|
+
authorizes no startup.
|
|
263
|
+
status_fallback: >-
|
|
264
|
+
Emits status with status_reason no_match and the existing status startup
|
|
265
|
+
path. It is not a readiness classification.
|
|
266
|
+
|
|
267
|
+
precedence:
|
|
268
|
+
- order: 1
|
|
269
|
+
name: bare
|
|
270
|
+
condition: /agentera with no additional text
|
|
271
|
+
response: deterministic_selection
|
|
272
|
+
capability: status
|
|
273
|
+
tier: bare
|
|
274
|
+
- order: 2
|
|
275
|
+
name: direct
|
|
276
|
+
condition: >-
|
|
277
|
+
An explicit canonical capability name, or a primary alias, before any
|
|
278
|
+
topic under the existing direct-route grammar.
|
|
279
|
+
response: deterministic_selection
|
|
280
|
+
tier: direct
|
|
281
|
+
- order: 3
|
|
282
|
+
name: curated_phrase
|
|
283
|
+
condition: >-
|
|
284
|
+
A globally unique active phrase from the phrase registry exactly matches
|
|
285
|
+
the normalized leading token sequence.
|
|
286
|
+
response: deterministic_selection
|
|
287
|
+
tier: phrase
|
|
288
|
+
- order: 4
|
|
289
|
+
name: deterministic_abstention
|
|
290
|
+
condition: Any request not selected by orders 1 through 3.
|
|
291
|
+
response: semantic_required
|
|
292
|
+
rule: >-
|
|
293
|
+
The deterministic tier does not infer meaning, score candidates, match
|
|
294
|
+
substrings, or use regexes, thresholds, bands, state, or next_action.
|
|
295
|
+
- order: 5
|
|
296
|
+
name: semantic_receipt
|
|
297
|
+
condition: A valid receipt for a semantic_required response.
|
|
298
|
+
response: select, clarify, or no_match as validated below
|
|
299
|
+
|
|
300
|
+
receipt_semantics:
|
|
301
|
+
select:
|
|
302
|
+
result: selected
|
|
303
|
+
startup: The selected capability starts after validation.
|
|
304
|
+
clarify:
|
|
305
|
+
result: clarification
|
|
306
|
+
startup: No capability starts; the host asks exactly the supplied question.
|
|
307
|
+
no_match:
|
|
308
|
+
result: status_fallback
|
|
309
|
+
startup: Status starts for orientation only, after validation.
|
|
310
|
+
invalid_receipt:
|
|
311
|
+
result: invalid_receipt
|
|
312
|
+
startup: No capability starts; return a bounded correction naming the invalid field.
|
|
313
|
+
|
|
314
|
+
compound_intent:
|
|
315
|
+
principle: >-
|
|
316
|
+
A route selects at most one capability. Remainder is preserved and is never
|
|
317
|
+
silently chained, dispatched, or executed.
|
|
318
|
+
deterministic: >-
|
|
319
|
+
A direct or phrase route passes its exact topic_span to the selected
|
|
320
|
+
capability without classifying it as a follow-on request.
|
|
321
|
+
semantic:
|
|
322
|
+
dispositions: [none, preserve]
|
|
323
|
+
clarification: >-
|
|
324
|
+
clarify is a receipt outcome only, never a compound disposition. It is used
|
|
325
|
+
when one primary capability cannot safely be named.
|
|
326
|
+
preserve: >-
|
|
327
|
+
A select receipt with compound=preserve MUST include a non-empty
|
|
328
|
+
remainder_span inside the original request. The CLI carries that exact
|
|
329
|
+
original slice as deferred intent; it does not start another capability.
|
|
330
|
+
clarify: >-
|
|
331
|
+
Independent or consequential requests that cannot safely name one primary
|
|
332
|
+
capability require a clarify receipt, not a select receipt.
|
|
333
|
+
|
|
334
|
+
phrase_matching:
|
|
335
|
+
comparison_view: >-
|
|
336
|
+
Decode the request as valid UTF-8, then split it into source tokens at
|
|
337
|
+
Unicode whitespace. Apply Unicode NFKC and locale-independent Unicode case
|
|
338
|
+
folding to each source-token comparison segment; join phrase segments with
|
|
339
|
+
one ASCII space. The final source token may be partitioned at its first
|
|
340
|
+
permitted separator; only its prefix participates in phrase comparison.
|
|
341
|
+
leading_only: >-
|
|
342
|
+
The registry phrase must equal the first normalized comparison-token
|
|
343
|
+
sequence. For every source token except the final phrase token, the whole
|
|
344
|
+
normalized token must match. The final phrase token either matches whole or
|
|
345
|
+
ends immediately before its first permitted separator. A permitted separator
|
|
346
|
+
is a source code point whose NFKC form is exactly `:`, `-`, or `—`; it is
|
|
347
|
+
not consumed and need not be followed by whitespace. No other attached
|
|
348
|
+
punctuation terminates a token. Quotation, negation, a phrase later in a
|
|
349
|
+
sentence, and a partial token abstain.
|
|
350
|
+
recognized_span: >-
|
|
351
|
+
Return half-open UTF-8 byte offsets from the first matched source token
|
|
352
|
+
through the final matched-token prefix. The exact original bytes between
|
|
353
|
+
source tokens, including whitespace, belong to this span; leading whitespace
|
|
354
|
+
and a separator do not. Decoding that byte slice reproduces the recognized
|
|
355
|
+
text exactly.
|
|
356
|
+
topic_span: >-
|
|
357
|
+
The topic is the exact original UTF-8 byte slice from recognized_span.end to
|
|
358
|
+
request_byte_length. It begins at the permitted separator when one ended the
|
|
359
|
+
final phrase token, otherwise at the end of that token. It preserves every
|
|
360
|
+
separator, whitespace character, and remainder byte; it is not normalized,
|
|
361
|
+
trimmed, or interpreted.
|
|
362
|
+
example:
|
|
363
|
+
request: " HELP\tME decide: migrate the store"
|
|
364
|
+
normalized_leading_phrase: help me decide
|
|
365
|
+
recognized_span: { utf8_start: 2, utf8_end: 16, text: "HELP\tME decide" }
|
|
366
|
+
topic_span: { utf8_start: 16, utf8_end: 35, text: ": migrate the store" }
|
|
367
|
+
|
|
368
|
+
phrase_ownership:
|
|
369
|
+
active_phrase_source: skills/agentera/route-phrases.yaml
|
|
370
|
+
collision_rule: >-
|
|
371
|
+
Every normalized phrase is globally unique across every registry entry,
|
|
372
|
+
including deprecated entries. A collision fails validation; precedence must
|
|
373
|
+
never choose a phrase owner.
|
|
374
|
+
direct_route_rule: >-
|
|
375
|
+
A phrase must not duplicate a canonical capability name or primary alias and
|
|
376
|
+
must not begin with one under the direct-route grammar. Direct routes always
|
|
377
|
+
retain order-2 precedence.
|
|
378
|
+
trigger_rule: >-
|
|
379
|
+
Trigger descriptions are semantic documentation only. They neither create
|
|
380
|
+
phrase ownership nor alter phrase precedence.
|
|
381
|
+
|
|
382
|
+
privacy:
|
|
383
|
+
default_persistence: forbidden
|
|
384
|
+
transient_data: [request, topic, receipt, request_sha256, semantic_capsule_sha256]
|
|
385
|
+
retained_evaluation_evidence: >-
|
|
386
|
+
Retain only corpus version, case ID, partition, expected and observed
|
|
387
|
+
outcome, capability ID, tier, timing, model profile, and aggregate metrics.
|
|
388
|
+
Do not retain raw private request text, topic text, receipt question, or
|
|
389
|
+
semantic rationale by default.
|
|
390
|
+
permitted_corpus_text: >-
|
|
391
|
+
Frozen corpus text is synthetic or explicitly consented, and each corpus
|
|
392
|
+
declares its text provenance. Private production prompts are never imported.
|
|
393
|
+
|
|
394
|
+
evaluation:
|
|
395
|
+
conformance_owner: packages/cli/test/registries/hybridRouteContract.test.ts
|
|
396
|
+
visible_corpus_entrypoint: npx -y agentera@next route evaluate --format json
|
|
397
|
+
visible_corpus_exit_codes: { pass: 0, failed_evaluation: 1, authority_conflict: 2 }
|
|
398
|
+
visible_corpus_output: >-
|
|
399
|
+
agentera.hybrid_route_evaluation.v1 reports only case IDs, partitions,
|
|
400
|
+
expected/observed outcomes, routing tier, capability ID, timings, authority
|
|
401
|
+
hashes, and aggregate metrics. It never writes a report or emits request,
|
|
402
|
+
topic, receipt-question, or rationale text.
|
|
403
|
+
corpus_partitions: { development: frozen, adversarial: frozen }
|
|
404
|
+
corpus_scope: >-
|
|
405
|
+
The frozen synthetic development and adversarial corpus is the sole
|
|
406
|
+
implementation conformance corpus. It has no hidden, sealed, or vendor-host
|
|
407
|
+
companion corpus.
|
|
408
|
+
semantic_host: >-
|
|
409
|
+
A host may make the semantic judgment and submit the portable nullable host
|
|
410
|
+
receipt shape. Host selection, model quality, and latency are host-dependent
|
|
411
|
+
and unmeasured by this offline evaluator; no host invocation is required.
|
|
412
|
+
local_latency_caveat: >-
|
|
413
|
+
Deterministic and receipt-validation p95 values are run-specific local
|
|
414
|
+
conformance measurements, not semantic-host or end-to-end latency claims.
|
|
415
|
+
target_gates:
|
|
416
|
+
deterministic_phase1_p95: 25_ms
|
|
417
|
+
receipt_validation_p95: 25_ms
|
|
418
|
+
harmful_misroutes: 0
|
|
419
|
+
deterministic_fixture_accuracy: 100_percent
|
|
420
|
+
harmful_misroute_taxonomy:
|
|
421
|
+
- wrong_capability_starts_a_state_changing_or_destructive_flow
|
|
422
|
+
- a_compound_remainder_is_executed_or_chained_without_user_consent
|
|
423
|
+
- a_no_match_or_clarify_request_starts_non_status_work
|
|
424
|
+
- private_request_text_is_persisted_or_exported
|
|
425
|
+
execution_status: >-
|
|
426
|
+
Offline implementation acceptance requires frozen deterministic and
|
|
427
|
+
receipt-validation conformance only. The visible corpus proves protocol
|
|
428
|
+
conformance, not semantic generalization. Semantic host quality and latency
|
|
429
|
+
are explicitly unmeasured and do not block implementation acceptance.
|
|
430
|
+
|
|
431
|
+
deprecations:
|
|
432
|
+
decision_76: >-
|
|
433
|
+
Superseded by Decision mpulyomlyl only for the order-3 curated literal fast
|
|
434
|
+
path. Decision 76 continues to assign open-ended language and ambiguity
|
|
435
|
+
judgment to the LLM host; legacy trigger patterns, regexes, scores,
|
|
436
|
+
thresholds, and bands stay retired.
|
|
437
|
+
legacy_matchers: prohibited_from_active_routing
|
|
438
|
+
route_contract_changes: Require a new schema_version and a new frozen corpus version.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Hybrid routing model
|
|
2
|
+
|
|
3
|
+
The portable shared skill and CLI use one hybrid cascade. Explicit routes and
|
|
4
|
+
curated, globally unique literal phrases provide deterministic tiers; open-ended
|
|
5
|
+
language remains host-owned. The normative protocol is
|
|
6
|
+
[`hybrid-route-contract.yaml`](./hybrid-route-contract.yaml); this page is a
|
|
7
|
+
reader-oriented model, not a second contract.
|
|
8
|
+
|
|
9
|
+
Decision 76 remains in force for natural-language judgment. Decision mpulyomlyl supersedes it only for the curated literal fast path: there is still no scoring engine, no confidence threshold, and no borderline band. Legacy trigger patterns, regexes, thresholds, and bands do not route requests.
|
|
10
|
+
|
|
11
|
+
## Cascade and precedence
|
|
12
|
+
|
|
13
|
+
1. **Bare `/agentera`.** With no added text, select status deterministically.
|
|
14
|
+
2. **Explicit direct route.** A canonical capability name or primary alias uses
|
|
15
|
+
the established direct-route grammar and passes its remaining text as topic.
|
|
16
|
+
3. **Curated leading phrase.** Match one active phrase from
|
|
17
|
+
[`skills/agentera/route-phrases.yaml`](../../skills/agentera/route-phrases.yaml)
|
|
18
|
+
only when it is the exact normalized leading phrase. It selects that phrase's
|
|
19
|
+
sole owner and preserves the original remainder as topic.
|
|
20
|
+
4. **Deterministic abstention.** Every other request returns
|
|
21
|
+
`semantic_required`. This tier never guesses from trigger prose, substrings,
|
|
22
|
+
regexes, scores, thresholds, bands, state, or `next_action`.
|
|
23
|
+
5. **Validated semantic receipt.** The host makes an LLM-native semantic
|
|
24
|
+
judgment and submits `select`, `clarify`, or `no_match`; the CLI validates it
|
|
25
|
+
before capability startup. `select` starts one selected capability, `clarify` starts none, and `no_match` must route to status for orientation only after no capability matches.
|
|
26
|
+
|
|
27
|
+
The direct grammar has precedence over phrase matching. A phrase collision is a
|
|
28
|
+
registry validation error, not a tie to resolve at runtime.
|
|
29
|
+
|
|
30
|
+
## Phase one: route request
|
|
31
|
+
|
|
32
|
+
`agentera.route_request.v1` takes the transient original request. Its response
|
|
33
|
+
is exactly one of:
|
|
34
|
+
|
|
35
|
+
- `deterministic_selection`: a `bare`, `direct`, or `phrase` selection with
|
|
36
|
+
capability, provenance, recognized span, and topic span.
|
|
37
|
+
- `semantic_required`: a request digest, semantic intent capsule, and canonical
|
|
38
|
+
capsule digest. It does not start a capability.
|
|
39
|
+
|
|
40
|
+
The request itself is not persisted. The semantic capsule contains active
|
|
41
|
+
trigger `description`, `priority`, and `disambiguates_against` documentation,
|
|
42
|
+
not executable matcher inputs. Its digest is SHA-256 over contract-owned
|
|
43
|
+
canonical JSON (recursively sorted object keys, no insignificant whitespace,
|
|
44
|
+
and the presented array order) for exactly that capsule. It excludes private
|
|
45
|
+
request text, request digests, diagnostics, state, and matcher authorities the
|
|
46
|
+
host did not see.
|
|
47
|
+
|
|
48
|
+
## Phase two: semantic receipt
|
|
49
|
+
|
|
50
|
+
For `semantic_required`, the host sends the same transient original request and
|
|
51
|
+
the complete nullable host receipt to
|
|
52
|
+
`npx -y agentera@next route receipt --input - --format json`. The receipt binds
|
|
53
|
+
to the SHA-256 of the request's UTF-8 bytes and the
|
|
54
|
+
`semantic_capsule_sha256` returned in phase one. The CLI first validates the
|
|
55
|
+
unmodified host shape, removes only contract-listed nulls, then reruns
|
|
56
|
+
deterministic routing and accepts the receipt only when the same request still
|
|
57
|
+
produces `semantic_required` with both bound digests. It then validates the
|
|
58
|
+
projected CLI receipt with canonical-capability binding and request-bound span
|
|
59
|
+
rules:
|
|
60
|
+
|
|
61
|
+
Every `semantic_required` response includes a `receipt_contract` with the exact
|
|
62
|
+
`agentera.route_receipt.v1` nullable schema, legal outcomes, outcome nullability,
|
|
63
|
+
compound and `remainder_span` rules, and a current runnable stdin example. The
|
|
64
|
+
same guide appears in `npx -y agentera@next route receipt --help`; a host does not need to
|
|
65
|
+
inspect implementation or contract files to construct its receipt. The example
|
|
66
|
+
uses a fixed public request, never the transient request being classified.
|
|
67
|
+
|
|
68
|
+
| Receipt | Required result | Startup |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| `select` | one canonical capability and `none` or `preserve` compound disposition | selected capability only |
|
|
71
|
+
| `clarify` | one non-empty question | none |
|
|
72
|
+
| `no_match` | no capability or question | status only |
|
|
73
|
+
| invalid | bounded field-level correction, exit 64 | none |
|
|
74
|
+
|
|
75
|
+
The resulting `selected` or `status_fallback` authorization contains bounded
|
|
76
|
+
route provenance and the existing
|
|
77
|
+
`npx -y agentera@next prime --context <capability> --format json` startup path.
|
|
78
|
+
A `clarification` contains exactly one bounded
|
|
79
|
+
question and no startup. This is intentionally a shared CLI contract, not a
|
|
80
|
+
runtime-specific adapter. The portable shared skill is the sole host integration
|
|
81
|
+
surface.
|
|
82
|
+
|
|
83
|
+
## Phrase, span, and topic behavior
|
|
84
|
+
|
|
85
|
+
The phrase registry owns stable IDs, capability ownership, literal phrases,
|
|
86
|
+
global collision detection, and deprecation. Per-capability trigger schemas
|
|
87
|
+
never create phrase ownership. Matching uses the contract's normalized token
|
|
88
|
+
view (Unicode NFKC, case folding, whitespace normalization) while returning
|
|
89
|
+
source UTF-8 byte offsets and exact slices from the original request. A `:`,
|
|
90
|
+
`-`, or `—` that terminates the final phrase token is recognized in the
|
|
91
|
+
comparison view but starts the preserved topic slice; other attached
|
|
92
|
+
punctuation abstains.
|
|
93
|
+
|
|
94
|
+
For example, `HELP\tME decide: migrate the store` recognizes only
|
|
95
|
+
`HELP\tME decide`; its topic is the exact original `: migrate the store`.
|
|
96
|
+
The separator is deliberately preserved. Quoted, negated, later-in-sentence,
|
|
97
|
+
partial, and unregistered wording abstains; it belongs to the semantic phase.
|
|
98
|
+
|
|
99
|
+
## Selection, ambiguity, and compounds
|
|
100
|
+
|
|
101
|
+
The LLM host owns semantic selection and genuine consequential ambiguity. It
|
|
102
|
+
consults trigger intent documentation, then chooses one of `select`, `clarify`,
|
|
103
|
+
or `no_match`. A compound request never authorizes implicit chaining:
|
|
104
|
+
|
|
105
|
+
- A direct or phrase selection preserves its entire original remainder as one
|
|
106
|
+
topic without interpreting it as follow-on work.
|
|
107
|
+
- A semantic `select` may mark one original, UTF-8 code-point-aligned trailing
|
|
108
|
+
remainder span `preserve`; it is deferred intent, not a second startup.
|
|
109
|
+
`clarify` is an outcome, never a compound disposition.
|
|
110
|
+
- Independent or consequential compound intent uses the `clarify` outcome when
|
|
111
|
+
one primary capability cannot be named safely.
|
|
112
|
+
|
|
113
|
+
`next_action` informs readiness only after classification and cannot override the message intent. It never classifies a request.
|
|
114
|
+
|
|
115
|
+
## Evaluation and privacy
|
|
116
|
+
|
|
117
|
+
The visible frozen development and adversarial regression data live in
|
|
118
|
+
[`fixtures/routing/hybrid-corpus.yaml`](../../fixtures/routing/hybrid-corpus.yaml).
|
|
119
|
+
They use synthetic or explicitly consented text only and are the sole frozen
|
|
120
|
+
implementation conformance corpus; no sealed holdout, credential, privacy
|
|
121
|
+
approval, or provider-host benchmark is required.
|
|
122
|
+
Retained evaluation evidence contains IDs, partition, outcome, tier,
|
|
123
|
+
capability, timing, and aggregate metrics; private raw request
|
|
124
|
+
text, topic text, receipt questions, and semantic rationale are absent by
|
|
125
|
+
default.
|
|
126
|
+
|
|
127
|
+
The portable host receipt shape has all fields required, using nullable fields
|
|
128
|
+
for outcome-inapplicable values; the bounded host-to-CLI normalization seam first
|
|
129
|
+
validates that unmodified shape, removes only contract-listed nulls, and preserves
|
|
130
|
+
every non-null value unchanged. The CLI schema then separately validates outcome
|
|
131
|
+
relationships, request binding, spans, canonical capabilities, and startup authorization.
|
|
132
|
+
Normalization never authorizes startup or weakens a cross-field rule.
|
|
133
|
+
The evaluator reports separate, run-specific local deterministic and
|
|
134
|
+
receipt-validation p95 values. They prove protocol conformance for this visible
|
|
135
|
+
corpus, not semantic generalization or an end-to-end latency commitment. Semantic
|
|
136
|
+
model quality and latency remain host-dependent and unmeasured; it makes no live
|
|
137
|
+
model calls.
|
|
138
|
+
|
|
139
|
+
## Ownership boundaries
|
|
140
|
+
|
|
141
|
+
- `references/cli/hybrid-route-contract.yaml` owns protocol, outcome vocabulary,
|
|
142
|
+
precedence, span rules, privacy, evaluation gates, and deprecations.
|
|
143
|
+
- `skills/agentera/route-phrases.yaml` owns the deterministic phrase inventory.
|
|
144
|
+
- `references/cli/trigger-schema-enrichment.md` owns semantic trigger intent
|
|
145
|
+
documentation only.
|
|
146
|
+
- `packages/cli/src/eval/hybridRouteEvaluation.ts` evaluates the frozen offline
|
|
147
|
+
conformance corpus; its tests verify the evaluator and protocol structure.
|
|
148
|
+
- `skills/agentera/SKILL.md` remains the thin portable host integration surface.
|
|
149
|
+
|
|
150
|
+
## Maintenance
|
|
151
|
+
|
|
152
|
+
- Maintainer: Agentera CLI maintainers
|
|
153
|
+
- Source checkout root: `.`
|
|
154
|
+
- Working directory: `.`
|
|
155
|
+
- Command: `node packages/cli/dist/bin/agentera.js route evaluate --format json`
|