agentera 3.0.0-dev.7 → 3.0.0-dev.72
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 +118 -22
- package/bundle/CHANGELOG.md +1361 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +143 -0
- package/bundle/UPGRADE.md +252 -0
- package/bundle/extract-corpus-parity.json +2 -4
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-publication.json +488 -0
- package/bundle/references/adapters/package-registry.yaml +435 -188
- package/bundle/references/adapters/package-surface-characterization.md +66 -34
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
- package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
- package/bundle/references/analysis/verification-policy.yaml +266 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
- package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
- package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
- package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
- package/bundle/references/cli/routing-model.md +152 -93
- package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
- package/bundle/references/cli/update-channels.yaml +4 -2
- package/bundle/references/cli/vocabulary-index.yaml +5 -7
- package/bundle/references/cli/vocabulary.md +51 -93
- package/bundle/references/meta/retained-reference-authority.yaml +151 -0
- package/bundle/skills/agentera/SKILL.md +183 -63
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
- package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
- package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
- package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
- package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
- package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
- package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
- package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
- package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
- package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
- package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
- package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +9 -4
- package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +4 -4
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +61 -3
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
- package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
- package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
- package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
- package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
- package/bundle/skills/agentera/protocol.yaml +4 -4
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
- package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +457 -32
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
- package/dist/analytics/extractCorpus/cli.js +52 -11
- package/dist/analytics/extractCorpus/copilotSessions.js +6 -4
- package/dist/analytics/extractCorpus/core.js +40 -12
- package/dist/analytics/extractCorpus/corpus.js +39 -17
- package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
- package/dist/analytics/extractCorpus/cursorSessions.js +6 -4
- package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
- package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
- package/dist/analytics/extractCorpus/index.js +3 -1
- package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
- package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js +0 -1
- package/dist/analytics/extractCorpus/tierReader.js +108 -0
- package/dist/analytics/extractCorpus.js +0 -1
- package/dist/analytics/glossaryAdviceResolution.js +166 -0
- package/dist/analytics/glossaryInputAcquisition.js +319 -0
- package/dist/analytics/personalGlossaryAdmission.js +133 -0
- package/dist/analytics/personalGlossaryProfile.js +219 -0
- package/dist/analytics/profileSignals.js +211 -0
- package/dist/analytics/usageStats.js +150 -23
- package/dist/audit/terminologyDrift.js +281 -0
- package/dist/bin/agentera.js +3 -2
- package/dist/capabilities/audit/instructions.js +16 -6
- package/dist/capabilities/build/instructions.js +59 -6
- package/dist/capabilities/design/instructions.js +3 -4
- package/dist/capabilities/discuss/instructions.js +29 -6
- package/dist/capabilities/document/instructions.js +11 -6
- package/dist/capabilities/index.js +16 -14
- package/dist/capabilities/optimize/instructions.js +14 -6
- package/dist/capabilities/orchestrate/instructions.js +42 -6
- package/dist/capabilities/plan/instructions.js +30 -3
- package/dist/capabilities/profile/instructions.js +70 -6
- package/dist/capabilities/research/instructions.js +4 -5
- package/dist/capabilities/status/instructions.js +15 -6
- package/dist/capabilities/status/startupInstructions.js +34 -0
- package/dist/capabilities/vision/instructions.js +3 -5
- package/dist/cli/appContext.js +14 -7
- package/dist/cli/argvalidate.js +0 -1
- package/dist/cli/capabilityContext/benchmark.js +5 -4
- package/dist/cli/capabilityContext/bespoke.js +14 -6
- package/dist/cli/capabilityContext/build.js +116 -42
- package/dist/cli/capabilityContext/closeout.js +30 -27
- package/dist/cli/capabilityContext/contract.js +18 -27
- package/dist/cli/capabilityContext/evidence.js +84 -77
- package/dist/cli/capabilityContext/index.js +0 -1
- package/dist/cli/capabilityContext/orchestration.js +42 -18
- package/dist/cli/capabilityContext/planState.js +89 -96
- package/dist/cli/capabilityContext/progress.js +51 -12
- package/dist/cli/capabilityContext/projectVerification.js +409 -0
- package/dist/cli/capabilityContext/shared.js +9 -20
- package/dist/cli/capabilityContext/slim.js +52 -8
- package/dist/cli/capabilityContext/startup.js +51 -114
- package/dist/cli/capabilityContext/startupAggregation.js +68 -0
- package/dist/cli/capabilityContext/types.js +26 -10
- package/dist/cli/capabilityContext.js +0 -1
- package/dist/cli/commands/appHome.js +0 -1
- package/dist/cli/commands/capability.js +2 -2
- package/dist/cli/commands/compact.js +163 -13
- package/dist/cli/commands/doctor.js +117 -11
- package/dist/cli/commands/durability.js +81 -0
- package/dist/cli/commands/glossaryAdvice.js +138 -0
- package/dist/cli/commands/lint.js +22 -8
- package/dist/cli/commands/personalGlossary.js +176 -0
- package/dist/cli/commands/prime/briefOrientation.js +746 -0
- package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
- package/dist/cli/commands/prime/bundleStatus.js +54 -4
- package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
- package/dist/cli/commands/prime/collectOrientationState.js +126 -63
- package/dist/cli/commands/prime/orientationOutput.js +267 -56
- package/dist/cli/commands/prime/types.js +0 -1
- package/dist/cli/commands/prime/v1Migration.js +0 -1
- package/dist/cli/commands/prime.js +76 -11
- package/dist/cli/commands/profileGrounding.js +55 -0
- package/dist/cli/commands/query.js +74 -52
- package/dist/cli/commands/report.js +73 -19
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/schema.js +257 -138
- package/dist/cli/commands/state/decisions.js +40 -56
- package/dist/cli/commands/state/docs.js +58 -85
- package/dist/cli/commands/state/experimentRecords.js +151 -0
- package/dist/cli/commands/state/experiments.js +11 -65
- package/dist/cli/commands/state/get.js +129 -0
- package/dist/cli/commands/state/health.js +11 -113
- package/dist/cli/commands/state/index.js +6 -41
- package/dist/cli/commands/state/list.js +194 -0
- package/dist/cli/commands/state/objective.js +21 -65
- package/dist/cli/commands/state/plan.js +11 -170
- package/dist/cli/commands/state/planTasks.js +154 -0
- package/dist/cli/commands/state/plans.js +154 -0
- package/dist/cli/commands/state/progress.js +11 -45
- package/dist/cli/commands/state/shared.js +0 -1
- package/dist/cli/commands/state/todo.js +28 -107
- package/dist/cli/commands/state/write.js +433 -0
- package/dist/cli/commands/upgrade.js +146 -5
- package/dist/cli/commands/upgradeVerify.js +118 -0
- package/dist/cli/commands/validate.js +235 -136
- package/dist/cli/commands/verify.js +23 -8
- package/dist/cli/contracts/bundleStatus.js +0 -1
- package/dist/cli/contracts/orientationState.js +0 -1
- package/dist/cli/dispatch/argvParser.js +0 -1
- package/dist/cli/dispatch/check.js +84 -40
- package/dist/cli/dispatch/commands.js +3 -3
- package/dist/cli/dispatch/index.js +77 -52
- package/dist/cli/dispatch/lifecycle.js +117 -62
- package/dist/cli/dispatch/prime.js +37 -2
- package/dist/cli/dispatch/projections.js +17 -0
- package/dist/cli/dispatch/shared.js +1 -2
- package/dist/cli/dispatch/state.js +62 -66
- package/dist/cli/dispatch.js +0 -1
- package/dist/cli/errors.js +16 -17
- package/dist/cli/help.js +358 -39
- package/dist/cli/migrationRequired.js +122 -0
- package/dist/cli/orientation/attention.js +19 -19
- package/dist/cli/orientation/corpusCoverage.js +32 -1
- package/dist/cli/orientation.js +346 -129
- package/dist/cli/planArtifacts.js +350 -0
- package/dist/cli/planEvidence.js +157 -0
- package/dist/cli/planLifecycleState.js +36 -0
- package/dist/cli/planTaskIndex.js +11 -0
- package/dist/cli/preCutoverCommand.js +32 -0
- package/dist/cli/prime-blob.js +71 -3
- package/dist/cli/profileAcquisition.js +167 -0
- package/dist/cli/startupCompletenessContract.js +11 -8
- package/dist/cli/stateQuery.js +47 -12
- package/dist/cli/structured.js +0 -1
- package/dist/cli/todoMarkdown.js +25 -12
- package/dist/cli/todoReadinessSelection.js +192 -0
- package/dist/cli/todoSeverity.js +0 -1
- package/dist/core/atomicWriter.js +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 +0 -1
- package/dist/core/jsonValue.js +0 -1
- package/dist/core/paths.js +0 -1
- package/dist/core/pyjson.js +0 -1
- package/dist/core/shell.js +4 -0
- package/dist/core/skillIdentity.js +23 -0
- package/dist/core/sourceRoot.js +9 -12
- package/dist/core/text.js +10 -0
- package/dist/core/toml.js +0 -1
- package/dist/core/yaml.js +8 -1
- package/dist/eval/evalSkills.js +13 -14
- package/dist/eval/hybridRouteEvaluation.js +155 -0
- package/dist/eval/semanticEval.js +0 -1
- package/dist/eval/semanticFixtures.js +0 -1
- package/dist/hooks/common.js +3 -56
- package/dist/hooks/compaction/apply.js +224 -47
- package/dist/hooks/compaction/dryRun.js +2 -1
- package/dist/hooks/compaction/index.js +5 -6
- package/dist/hooks/compaction/parse.js +73 -6
- package/dist/hooks/compaction/retention.js +28 -25
- package/dist/hooks/compaction/status.js +145 -26
- package/dist/hooks/compaction/types.js +0 -1
- package/dist/hooks/validateArtifact/agentFacing.js +0 -1
- package/dist/hooks/validateArtifact/index.js +6 -65
- package/dist/hooks/validateArtifact/markdown.js +9 -10
- package/dist/hooks/validateArtifact/schema.js +96 -9
- package/dist/hooks/validateArtifact/traversal.js +12 -11
- package/dist/hooks/validateArtifact/violations.js +5 -3
- package/dist/migrate/v2HandoffManifest.js +8 -3
- package/dist/registries/activationContract.js +2 -0
- package/dist/registries/activationTuples.js +108 -0
- package/dist/registries/artifactProtocolIds.js +2 -1
- package/dist/registries/artifactRegistry.js +207 -60
- package/dist/registries/artifactSchemaProjection.js +45 -0
- package/dist/registries/capabilityContract.js +5 -21
- package/dist/registries/evaluatorHandoffContract.js +0 -1
- package/dist/registries/evidenceTierContract.js +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 +273 -0
- package/dist/registries/packageRegistry.js +184 -209
- package/dist/registries/todoReadinessContract.js +448 -0
- package/dist/registries/triggerLoader.js +7 -44
- package/dist/registries/verbosityBudgetContract.js +205 -0
- package/dist/release/releaseMetadata.js +155 -5
- package/dist/runtime/lifecycleAdapterContract.js +457 -0
- package/dist/runtime/lifecycleAdapters.js +777 -0
- package/dist/runtime/lifecycleAuthority.js +453 -0
- package/dist/runtime/lifecycleOperationContract.js +123 -0
- package/dist/runtime/lifecycleOperations.js +634 -0
- package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
- package/dist/runtime/lifecyclePublication.js +415 -0
- package/dist/runtime/lifecycleSnapshot.js +438 -0
- package/dist/runtime/nativeResourceCleanup.js +502 -0
- package/dist/setup/opencode.js +20 -13
- package/dist/setup/opencodeConstants.js +1 -0
- package/dist/setup/sharedSkill.js +45 -0
- package/dist/setup/smokeChecks.js +14 -75
- package/dist/state/archiveDiscovery.js +580 -0
- package/dist/state/archivePublication.js +225 -0
- package/dist/state/archiveRecovery.js +237 -0
- package/dist/state/archiveReplay.js +53 -0
- package/dist/state/canonicalMigrationRecord.js +36 -0
- package/dist/state/changelog.js +221 -0
- package/dist/state/decisionEntities.js +367 -0
- package/dist/state/decisionLegacyValidation.js +215 -0
- package/dist/state/decisionMigrationProvenance.js +199 -0
- package/dist/state/decisionOverlay.js +254 -0
- package/dist/state/decisionRevision.js +256 -0
- package/dist/state/decisionRevisionMigration.js +89 -0
- package/dist/state/directRetrieval.js +323 -0
- package/dist/state/durability.js +324 -0
- package/dist/state/entityCutover.js +459 -0
- package/dist/state/entityCutoverGit.js +127 -0
- package/dist/state/entityGlossaryAuthority.js +13 -0
- package/dist/state/entityListProjection.js +187 -0
- package/dist/state/entityListRuntimeRegistry.js +85 -0
- package/dist/state/entityMigrationCausality.js +97 -0
- package/dist/state/entityMigrationIdentity.js +5 -0
- package/dist/state/entityMigrationPreview.js +840 -0
- package/dist/state/entityMigrationTodo.js +133 -0
- package/dist/state/entityPublicationContext.js +859 -0
- package/dist/state/entityRetrievalHelp.js +506 -0
- package/dist/state/entityStorage.js +899 -0
- package/dist/state/exactReplacementRecovery.js +18 -0
- package/dist/state/experimentArchive.js +63 -0
- package/dist/state/experimentIdentity.js +202 -0
- package/dist/state/healthEntities.js +262 -0
- package/dist/state/healthEntityValidation.js +18 -0
- package/dist/state/healthRepair.js +69 -0
- package/dist/state/installRoot.js +15 -7
- package/dist/state/legacyEntityCutoverEvidence.js +65 -0
- package/dist/state/legacyIdentity.js +47 -0
- package/dist/state/legacySummaryRecord.js +6 -0
- package/dist/state/listAccounting.js +54 -0
- package/dist/state/listClassification.js +17 -0
- package/dist/state/listCursor.js +42 -0
- package/dist/state/listRetrieval.js +781 -0
- package/dist/state/migrationSourceBinding.js +30 -0
- package/dist/state/objectiveExperimentEntities.js +322 -0
- package/dist/state/planEntities.js +1027 -0
- package/dist/state/planIdentity.js +47 -0
- package/dist/state/planLineageValidation.js +52 -0
- package/dist/state/planReplacementTransaction.js +475 -0
- package/dist/state/planRetrieval.js +313 -0
- package/dist/state/planTaskRetrieval.js +294 -0
- package/dist/state/progressEntities.js +512 -0
- package/dist/state/progressGlossaryCaveat.js +168 -0
- package/dist/state/progressPublicationOrder.js +19 -0
- package/dist/state/progressWritePolicy.js +33 -0
- package/dist/state/projectRoot.js +62 -0
- package/dist/state/projectionPolicy.js +190 -0
- package/dist/state/retrievalAuthority.js +156 -0
- package/dist/state/safeProjectFile.js +155 -0
- package/dist/state/startupAnalysis/benchmark.js +70 -9
- package/dist/state/startupAnalysis/contract.js +44 -10
- package/dist/state/startupAnalysis/helpers.js +1 -2
- package/dist/state/startupAnalysis/index.js +0 -1
- package/dist/state/startupAnalysis/metrics.js +0 -1
- package/dist/state/startupAnalysis/records.js +0 -1
- package/dist/state/startupAnalysis/report.js +0 -1
- package/dist/state/startupAnalysis/threshold.js +13 -1
- package/dist/state/startupAnalysis.js +0 -1
- package/dist/state/startupProjection.js +499 -0
- package/dist/state/stateMode.js +222 -0
- package/dist/state/stateStorageAuthority.js +47 -0
- package/dist/state/summaryEntityRead.js +25 -0
- package/dist/state/summaryMigrationProvenance.js +66 -0
- package/dist/state/summarySourceRowAuthority.js +36 -0
- package/dist/state/todoActivationSafety.js +58 -0
- package/dist/state/todoDocsEntities.js +1124 -0
- package/dist/state/todoDocsEntityValidation.js +158 -0
- package/dist/state/todoMarkdownProjection.js +51 -0
- package/dist/state/todoReconciliationActivation.js +182 -0
- package/dist/state/todoReconciliationInspection.js +171 -0
- package/dist/state/todoReconciliationRepair.js +318 -0
- package/dist/state/todoReconciliationTransaction.js +595 -0
- package/dist/state/write/assign.js +20 -0
- package/dist/state/write/candidateMutation.js +269 -0
- package/dist/state/write/errors.js +11 -0
- package/dist/state/write/experimentPublication.js +192 -0
- package/dist/state/write/explain.js +377 -0
- package/dist/state/write/fields.js +61 -0
- package/dist/state/write/glossaryPublication.js +263 -0
- package/dist/state/write/grammar.js +285 -0
- package/dist/state/write/helpers.js +29 -0
- package/dist/state/write/index.js +12 -0
- package/dist/state/write/input.js +391 -0
- package/dist/state/write/lock.js +837 -0
- package/dist/state/write/mutation.js +234 -0
- package/dist/state/write/operations.js +170 -0
- package/dist/state/write/planEvaluation.js +128 -0
- package/dist/state/write/planPublication.js +179 -0
- package/dist/state/write/runtimeOperations.js +146 -0
- package/dist/state/write/serialize.js +1 -0
- package/dist/state/write/transaction.js +57 -0
- package/dist/state/write/validate.js +7 -0
- package/dist/upgrade/appContentRefresh.js +77 -36
- package/dist/upgrade/appModel.js +0 -1
- package/dist/upgrade/atomicWriter.js +1 -0
- package/dist/upgrade/bundleEvidence.js +0 -1
- package/dist/upgrade/channels.js +6 -9
- package/dist/upgrade/compatibility.js +43 -17
- package/dist/upgrade/doctor.js +55 -32
- package/dist/upgrade/doctorClassifier.js +11 -1
- package/dist/upgrade/installedHooksRetirement.js +46 -40
- package/dist/upgrade/legacyAgentCleanup.js +187 -21
- package/dist/upgrade/lifecycleUpgrade.js +113 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
- package/dist/upgrade/migrationPublication.js +122 -0
- package/dist/upgrade/nextMajorDoctor.js +0 -1
- package/dist/upgrade/npxPlatformStatus.js +0 -1
- package/dist/upgrade/projectIntegration.js +121 -159
- package/dist/upgrade/projectIntegrationDecision.js +42 -85
- package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
- package/dist/upgrade/runtimeMigration.js +262 -453
- package/dist/upgrade/upgradeCommands.js +14 -1
- package/dist/upgrade/upgradeLock.js +85 -0
- package/dist/upgrade/upgradeOrchestrator.js +263 -59
- package/dist/upgrade/v3CapabilitySurface.js +2 -3
- package/dist/upgrade/versionResolution.js +0 -1
- package/dist/validate/activationArtifactEvidence.js +852 -0
- package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
- package/dist/validate/activationConjunction.js +816 -0
- package/dist/validate/activationEvidenceManifest.js +531 -0
- package/dist/validate/activationPackageSemantics.js +29 -0
- package/dist/validate/appHomeContract.js +1 -7
- package/dist/validate/bootstrapAuthority.js +44 -0
- package/dist/validate/capability.js +11 -3
- package/dist/validate/crossCapability.js +14 -9
- package/dist/validate/retainedReferenceAuthority.js +879 -0
- package/dist/validate/selfAudit.js +39 -45
- package/dist/validate/v1LegacyCruft.js +131 -0
- package/dist/validate/vocabularyAuthority.js +8 -8
- package/package.json +41 -13
- package/bundle/references/adapters/cursor.md +0 -214
- package/bundle/references/adapters/opencode.md +0 -530
- package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
- package/bundle/references/adapters/runtime-feature-parity.md +0 -189
- package/bundle/references/analysis/benchmark.md +0 -267
- package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
- package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
- package/bundle/references/cli/capability-tool-classification.yaml +0 -53
- package/bundle/references/cli/coexistence-probe.yaml +0 -13
- package/bundle/references/cli/parity-expected-actual-template.md +0 -30
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
- package/bundle/references/cli/single-name-protocol.yaml +0 -42
- package/bundle/references/cli/upgrade-repair-wording.md +0 -45
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
- package/bundle/references/meta/documentation-inventory.md +0 -49
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/audit.toml +0 -6
- package/bundle/skills/agentera/agents/build.toml +0 -6
- package/bundle/skills/agentera/agents/design.toml +0 -6
- package/bundle/skills/agentera/agents/discuss.toml +0 -6
- package/bundle/skills/agentera/agents/document.toml +0 -6
- package/bundle/skills/agentera/agents/optimize.toml +0 -6
- package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
- package/bundle/skills/agentera/agents/plan.toml +0 -6
- package/bundle/skills/agentera/agents/profile.toml +0 -6
- package/bundle/skills/agentera/agents/research.toml +0 -6
- package/bundle/skills/agentera/agents/status.toml +0 -6
- package/bundle/skills/agentera/agents/vision.toml +0 -6
- package/bundle/skills/agentera/references/contract.md +0 -1048
- package/dist/analytics/extractCorpus/cli.js.map +0 -1
- package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/core.js.map +0 -1
- package/dist/analytics/extractCorpus/corpus.js.map +0 -1
- package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
- package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
- package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
- package/dist/analytics/extractCorpus/index.js.map +0 -1
- package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
- package/dist/analytics/extractCorpus.js.map +0 -1
- package/dist/analytics/usageStats.js.map +0 -1
- package/dist/bin/agentera.js.map +0 -1
- package/dist/capabilities/audit/instructions.js.map +0 -1
- package/dist/capabilities/build/instructions.js.map +0 -1
- package/dist/capabilities/design/instructions.js.map +0 -1
- package/dist/capabilities/discuss/instructions.js.map +0 -1
- package/dist/capabilities/document/instructions.js.map +0 -1
- package/dist/capabilities/dokumentera/instructions.js +0 -6
- package/dist/capabilities/dokumentera/instructions.js.map +0 -1
- package/dist/capabilities/hej/instructions.js +0 -6
- package/dist/capabilities/hej/instructions.js.map +0 -1
- package/dist/capabilities/index.js.map +0 -1
- package/dist/capabilities/inspektera/instructions.js +0 -6
- package/dist/capabilities/inspektera/instructions.js.map +0 -1
- package/dist/capabilities/inspirera/instructions.js +0 -6
- package/dist/capabilities/inspirera/instructions.js.map +0 -1
- package/dist/capabilities/optimera/instructions.js +0 -6
- package/dist/capabilities/optimera/instructions.js.map +0 -1
- package/dist/capabilities/optimize/instructions.js.map +0 -1
- package/dist/capabilities/orchestrate/instructions.js.map +0 -1
- package/dist/capabilities/orkestrera/instructions.js +0 -6
- package/dist/capabilities/orkestrera/instructions.js.map +0 -1
- package/dist/capabilities/plan/instructions.js.map +0 -1
- package/dist/capabilities/planera/instructions.js +0 -6
- package/dist/capabilities/planera/instructions.js.map +0 -1
- package/dist/capabilities/profile/instructions.js.map +0 -1
- package/dist/capabilities/profilera/instructions.js +0 -6
- package/dist/capabilities/profilera/instructions.js.map +0 -1
- package/dist/capabilities/realisera/instructions.js +0 -6
- package/dist/capabilities/realisera/instructions.js.map +0 -1
- package/dist/capabilities/research/instructions.js.map +0 -1
- package/dist/capabilities/resonera/instructions.js +0 -6
- package/dist/capabilities/resonera/instructions.js.map +0 -1
- package/dist/capabilities/status/instructions.js.map +0 -1
- package/dist/capabilities/vision/instructions.js.map +0 -1
- package/dist/capabilities/visionera/instructions.js +0 -6
- package/dist/capabilities/visionera/instructions.js.map +0 -1
- package/dist/capabilities/visualisera/instructions.js +0 -5
- package/dist/capabilities/visualisera/instructions.js.map +0 -1
- package/dist/cli/appContext.js.map +0 -1
- package/dist/cli/argvalidate.js.map +0 -1
- package/dist/cli/capabilityContext/benchmark.js.map +0 -1
- package/dist/cli/capabilityContext/bespoke.js.map +0 -1
- package/dist/cli/capabilityContext/build.js.map +0 -1
- package/dist/cli/capabilityContext/closeout.js.map +0 -1
- package/dist/cli/capabilityContext/contract.js.map +0 -1
- package/dist/cli/capabilityContext/evidence.js.map +0 -1
- package/dist/cli/capabilityContext/index.js.map +0 -1
- package/dist/cli/capabilityContext/orchestration.js.map +0 -1
- package/dist/cli/capabilityContext/planState.js.map +0 -1
- package/dist/cli/capabilityContext/progress.js.map +0 -1
- package/dist/cli/capabilityContext/realisera.js +0 -174
- package/dist/cli/capabilityContext/realisera.js.map +0 -1
- package/dist/cli/capabilityContext/shared.js.map +0 -1
- package/dist/cli/capabilityContext/slim.js.map +0 -1
- package/dist/cli/capabilityContext/startup.js.map +0 -1
- package/dist/cli/capabilityContext/types.js.map +0 -1
- package/dist/cli/capabilityContext.js.map +0 -1
- package/dist/cli/commands/appHome.js.map +0 -1
- package/dist/cli/commands/backfill.js +0 -84
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/capability.js.map +0 -1
- package/dist/cli/commands/compact.js.map +0 -1
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/lint.js.map +0 -1
- package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
- package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
- package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
- package/dist/cli/commands/prime/routeOutput.js +0 -50
- package/dist/cli/commands/prime/routeOutput.js.map +0 -1
- package/dist/cli/commands/prime/types.js.map +0 -1
- package/dist/cli/commands/prime/v1Migration.js.map +0 -1
- package/dist/cli/commands/prime.js.map +0 -1
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/schema.js.map +0 -1
- package/dist/cli/commands/state/decisions.js.map +0 -1
- package/dist/cli/commands/state/docs.js.map +0 -1
- package/dist/cli/commands/state/experiments.js.map +0 -1
- package/dist/cli/commands/state/health.js.map +0 -1
- package/dist/cli/commands/state/index.js.map +0 -1
- package/dist/cli/commands/state/objective.js.map +0 -1
- package/dist/cli/commands/state/plan.js.map +0 -1
- package/dist/cli/commands/state/progress.js.map +0 -1
- package/dist/cli/commands/state/shared.js.map +0 -1
- package/dist/cli/commands/state/todo.js.map +0 -1
- package/dist/cli/commands/state.js +0 -1023
- package/dist/cli/commands/state.js.map +0 -1
- package/dist/cli/commands/upgrade.js.map +0 -1
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/commands/verify.js.map +0 -1
- package/dist/cli/contracts/bundleStatus.js.map +0 -1
- package/dist/cli/contracts/orientationState.js.map +0 -1
- package/dist/cli/dispatch/argvParser.js.map +0 -1
- package/dist/cli/dispatch/check.js.map +0 -1
- package/dist/cli/dispatch/commands.js.map +0 -1
- package/dist/cli/dispatch/index.js.map +0 -1
- package/dist/cli/dispatch/lifecycle.js.map +0 -1
- package/dist/cli/dispatch/prime.js.map +0 -1
- package/dist/cli/dispatch/shared.js.map +0 -1
- package/dist/cli/dispatch/state.js.map +0 -1
- package/dist/cli/dispatch.js.map +0 -1
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/orientation/attention.js.map +0 -1
- package/dist/cli/orientation/corpusCoverage.js.map +0 -1
- package/dist/cli/orientation.js.map +0 -1
- package/dist/cli/prime-blob.js.map +0 -1
- package/dist/cli/startupCompletenessContract.js.map +0 -1
- package/dist/cli/stateQuery.js.map +0 -1
- package/dist/cli/structured.js.map +0 -1
- package/dist/cli/todoMarkdown.js.map +0 -1
- package/dist/cli/todoSeverity.js.map +0 -1
- package/dist/core/difflib.js.map +0 -1
- package/dist/core/envPaths.js.map +0 -1
- package/dist/core/git.js +0 -43
- package/dist/core/git.js.map +0 -1
- package/dist/core/jsonValue.js.map +0 -1
- package/dist/core/paths.js.map +0 -1
- package/dist/core/pyjson.js.map +0 -1
- package/dist/core/sourceRoot.js.map +0 -1
- package/dist/core/toml.js.map +0 -1
- package/dist/core/yaml.js.map +0 -1
- package/dist/eval/evalSkills.js.map +0 -1
- package/dist/eval/semanticEval.js.map +0 -1
- package/dist/eval/semanticFixtures.js.map +0 -1
- package/dist/hooks/common.js.map +0 -1
- package/dist/hooks/compaction/apply.js.map +0 -1
- package/dist/hooks/compaction/dryRun.js.map +0 -1
- package/dist/hooks/compaction/index.js.map +0 -1
- package/dist/hooks/compaction/parse.js.map +0 -1
- package/dist/hooks/compaction/retention.js.map +0 -1
- package/dist/hooks/compaction/status.js.map +0 -1
- package/dist/hooks/compaction/todoResolved.js +0 -137
- package/dist/hooks/compaction/todoResolved.js.map +0 -1
- package/dist/hooks/compaction/types.js.map +0 -1
- package/dist/hooks/compaction.js +0 -935
- package/dist/hooks/compaction.js.map +0 -1
- package/dist/hooks/cursorPreToolUse.js +0 -19
- package/dist/hooks/cursorPreToolUse.js.map +0 -1
- package/dist/hooks/cursorSessionStart.js +0 -79
- package/dist/hooks/cursorSessionStart.js.map +0 -1
- package/dist/hooks/sessionStart.js +0 -216
- package/dist/hooks/sessionStart.js.map +0 -1
- package/dist/hooks/sessionStop.js +0 -206
- package/dist/hooks/sessionStop.js.map +0 -1
- package/dist/hooks/todoLayout.js +0 -177
- package/dist/hooks/todoLayout.js.map +0 -1
- package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
- package/dist/hooks/validateArtifact/index.js.map +0 -1
- package/dist/hooks/validateArtifact/markdown.js.map +0 -1
- package/dist/hooks/validateArtifact/runtime.js +0 -86
- package/dist/hooks/validateArtifact/runtime.js.map +0 -1
- package/dist/hooks/validateArtifact/schema.js.map +0 -1
- package/dist/hooks/validateArtifact/traversal.js.map +0 -1
- package/dist/hooks/validateArtifact/violations.js.map +0 -1
- package/dist/hooks/validateArtifact.js +0 -924
- package/dist/hooks/validateArtifact.js.map +0 -1
- package/dist/migrate/v2HandoffManifest.js.map +0 -1
- package/dist/registries/artifactProtocolIds.js.map +0 -1
- package/dist/registries/artifactRegistry.js.map +0 -1
- package/dist/registries/capabilityContract.js.map +0 -1
- package/dist/registries/evaluatorHandoffContract.js.map +0 -1
- package/dist/registries/packageRegistry.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -316
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/registries/triggerLoader.js.map +0 -1
- package/dist/release/releaseMetadata.js.map +0 -1
- package/dist/routing/index.js +0 -2
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/routeEngine.js +0 -189
- package/dist/routing/routeEngine.js.map +0 -1
- package/dist/setup/codex/agents.js +0 -96
- package/dist/setup/codex/agents.js.map +0 -1
- package/dist/setup/codex/cli.js +0 -161
- package/dist/setup/codex/cli.js.map +0 -1
- package/dist/setup/codex/configToml.js +0 -639
- package/dist/setup/codex/configToml.js.map +0 -1
- package/dist/setup/codex/constants.js +0 -29
- package/dist/setup/codex/constants.js.map +0 -1
- package/dist/setup/codex/installRoot.js +0 -64
- package/dist/setup/codex/installRoot.js.map +0 -1
- package/dist/setup/codex/state.js +0 -270
- package/dist/setup/codex/state.js.map +0 -1
- package/dist/setup/codex.js +0 -12
- package/dist/setup/codex.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -129
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/cursorSurfaces.js +0 -67
- package/dist/setup/cursorSurfaces.js.map +0 -1
- package/dist/setup/doctor/core.js +0 -300
- package/dist/setup/doctor/core.js.map +0 -1
- package/dist/setup/doctor/diagnostics.js +0 -240
- package/dist/setup/doctor/diagnostics.js.map +0 -1
- package/dist/setup/doctor/opencode.js +0 -313
- package/dist/setup/doctor/opencode.js.map +0 -1
- package/dist/setup/doctor/report.js +0 -425
- package/dist/setup/doctor/report.js.map +0 -1
- package/dist/setup/doctor.js +0 -10
- package/dist/setup/doctor.js.map +0 -1
- package/dist/setup/opencode.js.map +0 -1
- package/dist/setup/smokeChecks.js.map +0 -1
- package/dist/state/installRoot.js.map +0 -1
- package/dist/state/progressCommit.js +0 -289
- package/dist/state/progressCommit.js.map +0 -1
- package/dist/state/startupAnalysis/benchmark.js.map +0 -1
- package/dist/state/startupAnalysis/contract.js.map +0 -1
- package/dist/state/startupAnalysis/helpers.js.map +0 -1
- package/dist/state/startupAnalysis/index.js.map +0 -1
- package/dist/state/startupAnalysis/metrics.js.map +0 -1
- package/dist/state/startupAnalysis/records.js.map +0 -1
- package/dist/state/startupAnalysis/report.js.map +0 -1
- package/dist/state/startupAnalysis/threshold.js.map +0 -1
- package/dist/state/startupAnalysis.js.map +0 -1
- package/dist/upgrade/appContentRefresh.js.map +0 -1
- package/dist/upgrade/appModel.js.map +0 -1
- package/dist/upgrade/bundleEvidence.js.map +0 -1
- package/dist/upgrade/channels.js.map +0 -1
- package/dist/upgrade/cliProbe.js +0 -22
- package/dist/upgrade/cliProbe.js.map +0 -1
- package/dist/upgrade/coexistenceProbe.js +0 -107
- package/dist/upgrade/coexistenceProbe.js.map +0 -1
- package/dist/upgrade/compatibility.js.map +0 -1
- package/dist/upgrade/doctor.js.map +0 -1
- package/dist/upgrade/doctorClassifier.js.map +0 -1
- package/dist/upgrade/installedHooksRetirement.js.map +0 -1
- package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
- package/dist/upgrade/nextMajorDoctor.js.map +0 -1
- package/dist/upgrade/npxPlatformStatus.js.map +0 -1
- package/dist/upgrade/projectIntegration.js.map +0 -1
- package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
- package/dist/upgrade/runtimeMigration.js.map +0 -1
- package/dist/upgrade/upgradeCommands.js.map +0 -1
- package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
- package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
- package/dist/upgrade/versionResolution.js.map +0 -1
- package/dist/validate/appHomeContract.js.map +0 -1
- package/dist/validate/capability.js.map +0 -1
- package/dist/validate/crossCapability.js.map +0 -1
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
- package/dist/validate/lifecycleAdapters/shared.js +0 -198
- package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -62
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- package/dist/validate/selfAudit.js.map +0 -1
- package/dist/validate/vocabularyAuthority.js.map +0 -1
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { preCutoverCommand } from "../preCutoverCommand.js";
|
|
4
|
+
import { loadDocsPathOverrides, resolveArtifactPath, } from "../../registries/artifactRegistry.js";
|
|
4
5
|
import { activeObjectiveName, artifactPath, discoverSchemasDir, loadSchemas, resolveArtifactPathLocal, } from "../appContext.js";
|
|
5
6
|
import { validateAgentString } from "../argvalidate.js";
|
|
6
|
-
import { loadDocsPathOverrides } from "../../registries/artifactRegistry.js";
|
|
7
7
|
import { emitStructured } from "../structured.js";
|
|
8
|
-
import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError,
|
|
8
|
+
import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, sourceMetadata, structuredState, validateFilterValues, } from "../stateQuery.js";
|
|
9
9
|
import { displayFields, queryTodo } from "./state/index.js";
|
|
10
|
+
import { STATE_FAMILY_GET_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "../capabilityContext/types.js";
|
|
11
|
+
import { entityPublicRetrieval } from "../../state/retrievalAuthority.js";
|
|
12
|
+
import { listProgressEntities } from "../../state/progressEntities.js";
|
|
13
|
+
import { readChangelog } from "../../state/changelog.js";
|
|
10
14
|
const ENCODED_TRAVERSAL_RE = /%(?:2e|2f|5c)/i;
|
|
11
15
|
const ALLOWED_RAW_ARTIFACT_USES = [
|
|
12
16
|
"artifact writes",
|
|
@@ -17,7 +21,7 @@ const ALLOWED_RAW_ARTIFACT_USES = [
|
|
|
17
21
|
"unavailable or incomplete CLI state after CLI fallbacks",
|
|
18
22
|
"benchmark analysis",
|
|
19
23
|
];
|
|
20
|
-
const BENCHMARK_CONTEXT_COMMAND = "
|
|
24
|
+
const BENCHMARK_CONTEXT_COMMAND = preCutoverCommand("prime --context optimize --format json");
|
|
21
25
|
const STATE_COMMAND_NAMES = new Set([
|
|
22
26
|
"decisions",
|
|
23
27
|
"docs",
|
|
@@ -43,7 +47,16 @@ function projectRelativeOrAbsolute(p) {
|
|
|
43
47
|
}
|
|
44
48
|
function artifactReadInterfaces(name, record) {
|
|
45
49
|
const artifactId = record !== null ? record.artifactId : name;
|
|
46
|
-
const
|
|
50
|
+
const retrieval = (entityPublicRetrieval().commands ?? {});
|
|
51
|
+
const experimentList = retrieval.experiments.list
|
|
52
|
+
.replace(" [--limit N] [--cursor TOKEN]", " --limit 20");
|
|
53
|
+
const routineCommand = artifactId === "experiments"
|
|
54
|
+
? experimentList
|
|
55
|
+
: STATE_FAMILY_LIST_COMMANDS[artifactId] ?? (STATE_COMMAND_NAMES.has(artifactId) ? `agentera state ${artifactId} --format json` : null);
|
|
56
|
+
const requiredSelectors = artifactId === "experiments" ? ["--objective OBJECTIVE_ID"] : [];
|
|
57
|
+
const detailCommand = artifactId === "experiments"
|
|
58
|
+
? retrieval.experiments.get
|
|
59
|
+
: STATE_FAMILY_GET_COMMANDS[artifactId] ?? null;
|
|
47
60
|
let advancedCommand;
|
|
48
61
|
if (artifactId === "benchmark_context")
|
|
49
62
|
advancedCommand = BENCHMARK_CONTEXT_COMMAND;
|
|
@@ -52,7 +65,11 @@ function artifactReadInterfaces(name, record) {
|
|
|
52
65
|
else
|
|
53
66
|
advancedCommand = `agentera query ${artifactId} --format json`;
|
|
54
67
|
let policy;
|
|
55
|
-
if (
|
|
68
|
+
if (artifactId === "experiments")
|
|
69
|
+
policy = "Replace OBJECTIVE_ID with one stable objective identity, use the objective-scoped bounded list for discovery, and use exact get for detail; no selector-free normal read exists.";
|
|
70
|
+
else if (STATE_FAMILY_LIST_COMMANDS[artifactId])
|
|
71
|
+
policy = "Use bounded state list for discovery and exact state get for detail before any raw artifact access.";
|
|
72
|
+
else if (routineCommand)
|
|
56
73
|
policy = "Use the routine state command for normal content reads before any raw artifact access.";
|
|
57
74
|
else if (advancedCommand)
|
|
58
75
|
policy = "Use the listed CLI discovery/query surface before any last-resort raw artifact access.";
|
|
@@ -60,6 +77,9 @@ function artifactReadInterfaces(name, record) {
|
|
|
60
77
|
policy = "No normal content-read command is registered; raw access is limited to allowed boundary cases.";
|
|
61
78
|
return {
|
|
62
79
|
normal_read_command: routineCommand,
|
|
80
|
+
normal_read_required_selectors: requiredSelectors,
|
|
81
|
+
normal_detail_command: detailCommand,
|
|
82
|
+
normal_read_guidance: policy,
|
|
63
83
|
advanced_query_command: advancedCommand,
|
|
64
84
|
raw_access_boundary: {
|
|
65
85
|
normal_policy: policy,
|
|
@@ -67,7 +87,7 @@ function artifactReadInterfaces(name, record) {
|
|
|
67
87
|
},
|
|
68
88
|
};
|
|
69
89
|
}
|
|
70
|
-
function artifactLocationRecord(name, info, schemasDir
|
|
90
|
+
function artifactLocationRecord(name, info, schemasDir) {
|
|
71
91
|
const record = info.record ?? null;
|
|
72
92
|
const schema = info.schema && typeof info.schema === "object" ? info.schema : {};
|
|
73
93
|
// cast: schema.meta is read from a parsed artifact schema (YAML IO boundary)
|
|
@@ -76,13 +96,14 @@ function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
|
|
|
76
96
|
const artifactId = record !== null ? record.artifactId : name;
|
|
77
97
|
const displayName = record !== null ? record.displayName : String(meta.name ?? name);
|
|
78
98
|
const defaultPath = record !== null ? record.defaultPath : String(info.path ?? "");
|
|
79
|
-
|
|
80
|
-
|
|
99
|
+
const docsOverrides = record !== null ? loadDocsPathOverrides(process.cwd()) : {};
|
|
100
|
+
const mappedPath = record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides
|
|
101
|
+
? docsOverrides[record.displayName]
|
|
102
|
+
: defaultPath;
|
|
103
|
+
const resolutionSource = record !== null
|
|
104
|
+
? mappedPath === defaultPath ? "registry default" : "docs mapping for registry identity"
|
|
105
|
+
: "schema metadata";
|
|
81
106
|
const caveats = [];
|
|
82
|
-
if (record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides) {
|
|
83
|
-
mappedPath = docsOverrides[record.displayName];
|
|
84
|
-
resolutionSource = ".agentera/docs.yaml mapping";
|
|
85
|
-
}
|
|
86
107
|
const objectiveName = activeObjectiveName();
|
|
87
108
|
let resolvedPath = null;
|
|
88
109
|
if (record !== null && record.pathTemplate && mappedPath.includes("<name>") && !objectiveName) {
|
|
@@ -104,14 +125,15 @@ function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
|
|
|
104
125
|
display_path: resolvedPath !== null ? projectRelativeOrAbsolute(resolvedPath) : mappedPath,
|
|
105
126
|
resolution_source: resolutionSource,
|
|
106
127
|
exists: resolvedPath !== null ? fs.existsSync(resolvedPath) : false,
|
|
107
|
-
docs_yaml_can_override_path: record
|
|
128
|
+
docs_yaml_can_override_path: record?.docsYamlCanOverridePath ?? false,
|
|
108
129
|
project_boundary_check: resolvedPath !== null ? "enforced" : "not_resolved",
|
|
109
130
|
};
|
|
110
131
|
return {
|
|
111
|
-
|
|
132
|
+
artifact: artifactId,
|
|
112
133
|
name: artifactId,
|
|
113
134
|
display_name: displayName,
|
|
114
135
|
artifact_type: record !== null ? record.artifactType : meta.artifact_type ?? "unknown",
|
|
136
|
+
implementation_status: record !== null ? record.implementationStatus : meta.implementation_status ?? "implemented",
|
|
115
137
|
format: typeof meta === "object" ? meta.format ?? "unknown" : "unknown",
|
|
116
138
|
producer: record !== null ? [...record.producers].sort() : meta.producer ?? "unknown",
|
|
117
139
|
consumers: record !== null ? [...record.consumers].sort() : meta.consumers ?? "unknown",
|
|
@@ -130,9 +152,8 @@ function fileExists(p) {
|
|
|
130
152
|
}
|
|
131
153
|
}
|
|
132
154
|
export function artifactLocationContract(schemasDir, schemas) {
|
|
133
|
-
const docsOverrides = loadDocsPathOverrides(process.cwd());
|
|
134
155
|
const names = Object.keys(schemas).sort();
|
|
135
|
-
const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir
|
|
156
|
+
const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir));
|
|
136
157
|
// cast: record.caveats is built from schema/registry path resolution (IO boundary)
|
|
137
158
|
const caveats = records.flatMap((record) => record.caveats);
|
|
138
159
|
return {
|
|
@@ -140,8 +161,7 @@ export function artifactLocationContract(schemasDir, schemas) {
|
|
|
140
161
|
status: dirExists(schemasDir) ? "complete" : "missing_schemas",
|
|
141
162
|
source: {
|
|
142
163
|
schemas_dir: schemasDir,
|
|
143
|
-
|
|
144
|
-
docs_yaml_overrides_loaded: Object.keys(docsOverrides).length > 0,
|
|
164
|
+
path_overrides: "disabled_for_entity_authority",
|
|
145
165
|
},
|
|
146
166
|
source_contract: {
|
|
147
167
|
raw_artifact_reads_required_for_discovery: false,
|
|
@@ -213,30 +233,35 @@ function queryGeneric(args, schemas, name, io) {
|
|
|
213
233
|
}
|
|
214
234
|
return 0;
|
|
215
235
|
}
|
|
216
|
-
function
|
|
217
|
-
|
|
218
|
-
|
|
236
|
+
function matchedSchemaName(schemas, query) {
|
|
237
|
+
if (query in schemas)
|
|
238
|
+
return query;
|
|
239
|
+
return Object.keys(schemas).find((name) => query === name.replace(/s$/, "") || query === `${name}s`) ?? null;
|
|
240
|
+
}
|
|
241
|
+
function rejectEntityAggregateQuery(args, name, query, io) {
|
|
219
242
|
const format = args.format ?? "text";
|
|
220
|
-
const
|
|
221
|
-
if (
|
|
222
|
-
|
|
223
|
-
return 1;
|
|
243
|
+
const command = `agentera state ${name} --format ${format}`;
|
|
244
|
+
if (format !== "text") {
|
|
245
|
+
emitStructured({ schemaVersion: "agentera.stateFailure.v1", status: "fail", error: { class: "unsupported_target", message: `routine artifact alias '${query}' is not available through state query`, syntax: command, example: command, recovery: `Use the canonical entity-aware command: ${command}` } }, format, out(io));
|
|
224
246
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if (entries.length === 0) {
|
|
228
|
-
if (format !== "text")
|
|
229
|
-
emitStructured(null, format, o);
|
|
230
|
-
return 0;
|
|
247
|
+
else {
|
|
248
|
+
err(io)(`Unsupported routine query: ${query}. Use \`${command}\` instead.\n`);
|
|
231
249
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
250
|
+
return 1;
|
|
251
|
+
}
|
|
252
|
+
function queryLastPhase(args, schemas, io) {
|
|
253
|
+
const o = out(io);
|
|
254
|
+
const format = args.format ?? "text";
|
|
255
|
+
const response = listProgressEntities(process.cwd(), 1, {}, undefined, { format: format });
|
|
256
|
+
const entry = Array.isArray(response.entries) ? response.entries[0] : undefined;
|
|
257
|
+
const record = entry?.record;
|
|
258
|
+
const phase = String(record?.phase ?? "");
|
|
259
|
+
if (format === "text") {
|
|
260
|
+
if (phase)
|
|
261
|
+
o(`${phase}\n`);
|
|
237
262
|
}
|
|
238
|
-
|
|
239
|
-
|
|
263
|
+
else
|
|
264
|
+
emitStructured(entry ? { phase, id: entry.id, artifact: entry.artifact, provenance: entry.provenance, snapshot: response.snapshot, retrieval: { get: `agentera state progress get --id ${entry.id} --format json` } } : null, format, o);
|
|
240
265
|
return 0;
|
|
241
266
|
}
|
|
242
267
|
function queryDesign(args, schemas, io) {
|
|
@@ -317,10 +342,6 @@ export function cmdQuery(args, io) {
|
|
|
317
342
|
if (query.includes("/") || query.includes("\\") || query === "." || query === ".." || ENCODED_TRAVERSAL_RE.test(query)) {
|
|
318
343
|
throw new Error(`unsupported artifact/query name ${pyRepr(query)}; path-like values are not artifact names`);
|
|
319
344
|
}
|
|
320
|
-
if (STATE_COMMAND_NAMES.has(query)) {
|
|
321
|
-
e(`Unsupported routine query: ${query}. Use \`agentera ${query}\` instead.\n`);
|
|
322
|
-
return 1;
|
|
323
|
-
}
|
|
324
345
|
const schemas = loadSchemas(discoverSchemasDir());
|
|
325
346
|
const stateArgs = args;
|
|
326
347
|
const handlers = {
|
|
@@ -329,16 +350,18 @@ export function cmdQuery(args, io) {
|
|
|
329
350
|
"open-todos": (a, s, ioo) => queryTodo({ ...a, command: "todo" }, s, ioo, true),
|
|
330
351
|
};
|
|
331
352
|
if (query in handlers) {
|
|
332
|
-
if (format
|
|
333
|
-
return
|
|
334
|
-
return handlers[query](args, schemas, io);
|
|
353
|
+
if (format === "text" || !(query in schemas))
|
|
354
|
+
return handlers[query](args, schemas, io);
|
|
335
355
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
356
|
+
const name = matchedSchemaName(schemas, query);
|
|
357
|
+
if (name !== null) {
|
|
358
|
+
if (STATE_COMMAND_NAMES.has(name)) {
|
|
359
|
+
return rejectEntityAggregateQuery(args, name, query, io);
|
|
360
|
+
}
|
|
361
|
+
if (name === "changelog" && format !== "text") {
|
|
362
|
+
return emitStateStructured(name, readChangelog(process.cwd()).projection, format, args.fields, o, e);
|
|
341
363
|
}
|
|
364
|
+
return queryGeneric(args, schemas, name, io);
|
|
342
365
|
}
|
|
343
366
|
e(`Unknown query: ${query}\n`);
|
|
344
367
|
return 1;
|
|
@@ -346,4 +369,3 @@ export function cmdQuery(args, io) {
|
|
|
346
369
|
function pyRepr(value) {
|
|
347
370
|
return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
|
|
348
371
|
}
|
|
349
|
-
//# sourceMappingURL=query.js.map
|
|
@@ -5,14 +5,22 @@ import { resolveProfileDirOverride, resolveXdgDataHome } from "../../core/envPat
|
|
|
5
5
|
import { expanduser } from "../../core/paths.js";
|
|
6
6
|
import { usageMain, corpusTooLargeReason } from "../../analytics/usageStats.js";
|
|
7
7
|
import { extractCorpusMain } from "../../analytics/extractCorpus.js";
|
|
8
|
+
import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, } from "../../analytics/extractCorpus/index.js";
|
|
8
9
|
function buildExtractArgv(args, corpusPath) {
|
|
9
|
-
|
|
10
|
+
// Refresh publishes bounded evidence tiers to the directory co-located with
|
|
11
|
+
// the canonical corpus path (`<dir>/tiers`); the extract engine no longer
|
|
12
|
+
// accepts the monolithic `--output corpusPath` write target (tiers are the
|
|
13
|
+
// only canonical output). Passing `--tier-output` makes the displayed
|
|
14
|
+
// `corpus_path`/`tier_path` truthful: tiers land at `dirname(corpusPath)/tiers`.
|
|
15
|
+
const argv = ["--tier-output", tiersDirForCorpusPath(corpusPath)];
|
|
10
16
|
for (const root of args.projectRoot ?? [])
|
|
11
17
|
argv.push("--project-root", root);
|
|
12
18
|
if (args.codexSessionsDir)
|
|
13
19
|
argv.push("--codex-sessions-dir", args.codexSessionsDir);
|
|
14
20
|
if (args.claudeProjectsDir)
|
|
15
21
|
argv.push("--claude-projects-dir", args.claudeProjectsDir);
|
|
22
|
+
for (const source of args.importSources ?? [])
|
|
23
|
+
argv.push("--import-source", source);
|
|
16
24
|
if (args.opencodeConversationsDir)
|
|
17
25
|
argv.push("--opencode-conversations-dir", args.opencodeConversationsDir);
|
|
18
26
|
if (args.copilotConversationsDir)
|
|
@@ -23,8 +31,6 @@ function buildExtractArgv(args, corpusPath) {
|
|
|
23
31
|
argv.push("--cursor-chats-dir", args.cursorChatsDir);
|
|
24
32
|
if (args.noCodex)
|
|
25
33
|
argv.push("--no-codex");
|
|
26
|
-
if (args.noClaude)
|
|
27
|
-
argv.push("--no-claude");
|
|
28
34
|
if (args.noOpencode)
|
|
29
35
|
argv.push("--no-opencode");
|
|
30
36
|
if (args.noCopilot)
|
|
@@ -38,7 +44,7 @@ function buildExtractArgv(args, corpusPath) {
|
|
|
38
44
|
return argv;
|
|
39
45
|
}
|
|
40
46
|
function usageSyntax() {
|
|
41
|
-
return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE]";
|
|
47
|
+
return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE] [--sources active|all]";
|
|
42
48
|
}
|
|
43
49
|
function usageExample() {
|
|
44
50
|
return "agentera usage --format json --project agentera";
|
|
@@ -73,30 +79,62 @@ export function statsCorpusPath(env = process.env, platform = process.platform)
|
|
|
73
79
|
}
|
|
74
80
|
/** Faithful port of `_stats_existing_corpus_status`. */
|
|
75
81
|
export function statsExistingCorpusStatus(corpusPath) {
|
|
82
|
+
// Bounded tier path: when tiers are published, report readiness from the
|
|
83
|
+
// manifest + retained corpus metadata without reading full evidence. The
|
|
84
|
+
// documented `tier_state`/`tier_path` fields extend the legacy shape;
|
|
85
|
+
// existing `status`/`reason`/`extracted_at`/`total_records` are preserved.
|
|
86
|
+
const tiersDir = tiersDirForCorpusPath(corpusPath);
|
|
87
|
+
const assessment = assessTiers(tiersDir, corpusPath);
|
|
88
|
+
if (assessment.analyzable) {
|
|
89
|
+
const meta = readBoundedMetadata(tiersDir);
|
|
90
|
+
const manifest = meta.manifest;
|
|
91
|
+
const extractedAt = meta.corpusMetadata?.extracted_at ?? null;
|
|
92
|
+
return {
|
|
93
|
+
status: "ready",
|
|
94
|
+
path: corpusPath,
|
|
95
|
+
tier_path: tiersDir,
|
|
96
|
+
tier_state: assessment.state,
|
|
97
|
+
reason: "bounded evidence tier published",
|
|
98
|
+
extracted_at: extractedAt ?? (manifest?.published_at ?? null),
|
|
99
|
+
total_records: manifest?.total_records ?? 0,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (assessment.state === "oversized" || assessment.state === "corrupt") {
|
|
103
|
+
return {
|
|
104
|
+
status: "stale",
|
|
105
|
+
path: corpusPath,
|
|
106
|
+
tier_path: tiersDir,
|
|
107
|
+
tier_state: assessment.state,
|
|
108
|
+
reason: assessment.recovery ?? `${assessment.state} evidence tier`,
|
|
109
|
+
...(assessment.artifact ? { artifact: assessment.artifact } : {}),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Legacy or missing: preserve the corpus-envelope status behavior.
|
|
76
113
|
if (!fs.existsSync(corpusPath)) {
|
|
77
114
|
return { status: "missing", path: corpusPath, reason: "corpus file does not exist" };
|
|
78
115
|
}
|
|
79
116
|
const tooLarge = corpusTooLargeReason(corpusPath);
|
|
80
117
|
if (tooLarge) {
|
|
81
|
-
return { status: "stale", path: corpusPath, reason: tooLarge };
|
|
118
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: tooLarge };
|
|
82
119
|
}
|
|
83
120
|
let data;
|
|
84
121
|
try {
|
|
85
122
|
data = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
|
|
86
123
|
}
|
|
87
124
|
catch (exc) {
|
|
88
|
-
return { status: "stale", path: corpusPath, reason: `corpus is not readable JSON: ${exc.message}` };
|
|
125
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: `corpus is not readable JSON: ${exc.message}` };
|
|
89
126
|
}
|
|
90
127
|
const records = data && typeof data === "object" && !Array.isArray(data) ? data.records ?? [] : [];
|
|
91
128
|
const hasTurn = Array.isArray(records) &&
|
|
92
129
|
records.some((r) => r && typeof r === "object" && r.source_kind === "conversation_turn");
|
|
93
130
|
if (!hasTurn) {
|
|
94
|
-
return { status: "stale", path: corpusPath, reason: "corpus has no conversation_turn records" };
|
|
131
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: "corpus has no conversation_turn records" };
|
|
95
132
|
}
|
|
96
133
|
const metadata = data.metadata && typeof data.metadata === "object" ? data.metadata : {};
|
|
97
134
|
return {
|
|
98
135
|
status: "ready",
|
|
99
136
|
path: corpusPath,
|
|
137
|
+
tier_state: "legacy",
|
|
100
138
|
reason: "existing corpus has conversation_turn records",
|
|
101
139
|
extracted_at: metadata.extracted_at ?? null,
|
|
102
140
|
total_records: records.length,
|
|
@@ -105,9 +143,9 @@ export function statsExistingCorpusStatus(corpusPath) {
|
|
|
105
143
|
/**
|
|
106
144
|
* Faithful port of scripts/agentera `cmd_stats` (canonical command is `report`;
|
|
107
145
|
* `stats` is the deprecated alias and shares this logic). The plain read path
|
|
108
|
-
* reuses the ported usage engine
|
|
109
|
-
*
|
|
110
|
-
*
|
|
146
|
+
* reuses the ported usage engine over bounded tiers (with a legacy
|
|
147
|
+
* corpus.json fallback when no tiers are published). `stats refresh` publishes
|
|
148
|
+
* bounded tiers from local runtime history under explicit consent.
|
|
111
149
|
*/
|
|
112
150
|
export function cmdReport(args, io = {}) {
|
|
113
151
|
const out = io.out ?? ((t) => process.stdout.write(t));
|
|
@@ -143,27 +181,31 @@ export function cmdReport(args, io = {}) {
|
|
|
143
181
|
privacy: {
|
|
144
182
|
local_history_read: false,
|
|
145
183
|
local_history_write: false,
|
|
146
|
-
|
|
184
|
+
tier_write: false,
|
|
147
185
|
required_consent: "local-history",
|
|
148
186
|
provided_consent: null,
|
|
149
187
|
},
|
|
150
188
|
corpus_path: corpusPath,
|
|
189
|
+
tier_path: tiersDirForCorpusPath(corpusPath),
|
|
151
190
|
engine: { command: engineCommand },
|
|
152
191
|
diagnostics: [
|
|
153
|
-
"dry-run does not read runtime history or write
|
|
154
|
-
"
|
|
192
|
+
"dry-run does not read runtime history or write tier files",
|
|
193
|
+
"published tiers are internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/tiers",
|
|
194
|
+
...(args.importSources?.includes("claude")
|
|
195
|
+
? ["Claude historical import can contain secrets, file contents, and command output; apply stays local and read-only"]
|
|
196
|
+
: []),
|
|
155
197
|
],
|
|
156
198
|
};
|
|
157
199
|
if (outputFormat === "json") {
|
|
158
200
|
out(JSON.stringify(payload, null, 2) + "\n");
|
|
159
201
|
}
|
|
160
202
|
else {
|
|
161
|
-
out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\nengine=${engineCommand.join(" ")}\n`);
|
|
162
|
-
out("privacy=local_history_read=false,
|
|
203
|
+
out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\nengine=${engineCommand.join(" ")}\n`);
|
|
204
|
+
out("privacy=local_history_read=false, tier_write=false, required_consent=local-history\n");
|
|
163
205
|
}
|
|
164
206
|
return 0;
|
|
165
207
|
}
|
|
166
|
-
// consent === "local-history":
|
|
208
|
+
// consent === "local-history": extract local history into bounded tiers.
|
|
167
209
|
let engineOut = "";
|
|
168
210
|
let engineErr = "";
|
|
169
211
|
const rc = extractCorpusMain(engineArgv, {
|
|
@@ -175,15 +217,26 @@ export function cmdReport(args, io = {}) {
|
|
|
175
217
|
command: "stats refresh",
|
|
176
218
|
status: refreshStatus,
|
|
177
219
|
exit_signal: rc === 4 ? "EX2" : null,
|
|
178
|
-
privacy: {
|
|
220
|
+
privacy: {
|
|
221
|
+
local_history_read: true,
|
|
222
|
+
local_history_write: false,
|
|
223
|
+
tier_write: rc === 0,
|
|
224
|
+
required_consent: "local-history",
|
|
225
|
+
provided_consent: "local-history",
|
|
226
|
+
historical_imports: args.importSources ?? [],
|
|
227
|
+
historical_import_warning: args.importSources?.includes("claude")
|
|
228
|
+
? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
|
|
229
|
+
: null,
|
|
230
|
+
},
|
|
179
231
|
corpus_path: corpusPath,
|
|
232
|
+
tier_path: tiersDirForCorpusPath(corpusPath),
|
|
180
233
|
engine: { command: engineCommand, exit_code: rc, stdout: engineOut.split("\n").filter((l) => l), stderr: engineErr.split("\n").filter((l) => l) },
|
|
181
234
|
};
|
|
182
235
|
if (outputFormat === "json") {
|
|
183
236
|
out(JSON.stringify(payload, null, 2) + "\n");
|
|
184
237
|
}
|
|
185
238
|
else {
|
|
186
|
-
out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\n`);
|
|
239
|
+
out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\n`);
|
|
187
240
|
if (engineOut)
|
|
188
241
|
out(engineOut);
|
|
189
242
|
if (engineErr)
|
|
@@ -221,6 +274,8 @@ export function cmdReport(args, io = {}) {
|
|
|
221
274
|
const engineArgs = ["--corpus", corpusPath];
|
|
222
275
|
if (args.project)
|
|
223
276
|
engineArgs.push("--project", args.project);
|
|
277
|
+
if (args.sources)
|
|
278
|
+
engineArgs.push("--sources", args.sources);
|
|
224
279
|
if (outputFormat === "json")
|
|
225
280
|
engineArgs.push("--json");
|
|
226
281
|
return usageMain(engineArgs, {
|
|
@@ -228,4 +283,3 @@ export function cmdReport(args, io = {}) {
|
|
|
228
283
|
err: (t) => err(t + "\n"),
|
|
229
284
|
});
|
|
230
285
|
}
|
|
231
|
-
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { loadYamlMapping } from "../../core/yaml.js";
|
|
3
|
+
import { HybridRouteRegistryError, resolveRouteRequest } from "../../registries/hybridRoute.js";
|
|
4
|
+
import { RouteReceiptValidationError, validateRouteReceiptSubmission } from "../../registries/hybridRouteReceipt.js";
|
|
5
|
+
import { evaluateHybridRoute } from "../../eval/hybridRouteEvaluation.js";
|
|
6
|
+
import { emitStructured } from "../structured.js";
|
|
7
|
+
import { emitInvalidInput } from "../errors.js";
|
|
8
|
+
import { preCutoverCommand } from "../preCutoverCommand.js";
|
|
9
|
+
/** A conformance report that fails is a failed CLI gate, not a successful invocation. */
|
|
10
|
+
export const ROUTE_EVALUATION_FAILED_EXIT_CODE = 1;
|
|
11
|
+
export function routeEvaluationExitCode(report) {
|
|
12
|
+
return report.status === "fail" ? ROUTE_EVALUATION_FAILED_EXIT_CODE : 0;
|
|
13
|
+
}
|
|
14
|
+
function decodeRouteInput(bytes) {
|
|
15
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
16
|
+
}
|
|
17
|
+
function loadRouteInput(source, readStdin) {
|
|
18
|
+
let bytes;
|
|
19
|
+
try {
|
|
20
|
+
if (source === "-") {
|
|
21
|
+
const stdin = readStdin();
|
|
22
|
+
bytes = typeof stdin === "string" ? Buffer.from(stdin, "utf8") : stdin;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
bytes = fs.readFileSync(source);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new Error("route request input is not readable");
|
|
30
|
+
}
|
|
31
|
+
return loadYamlMapping(decodeRouteInput(bytes));
|
|
32
|
+
}
|
|
33
|
+
function invalidRouteInput(io, body) {
|
|
34
|
+
return emitInvalidInput({ out: io.out, err: io.err }, { format: "json", body });
|
|
35
|
+
}
|
|
36
|
+
function parse(argv) {
|
|
37
|
+
let input;
|
|
38
|
+
let format = "json";
|
|
39
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
40
|
+
const argument = argv[index];
|
|
41
|
+
const [name, inline] = argument.split("=", 2);
|
|
42
|
+
if (name === "--input" || name === "--format") {
|
|
43
|
+
const value = inline ?? argv[++index];
|
|
44
|
+
if (!value || value.startsWith("--"))
|
|
45
|
+
return { class: "missing_argument", message: `${name} requires a value`, syntax: `${name} VALUE` };
|
|
46
|
+
if (name === "--input") {
|
|
47
|
+
if (input)
|
|
48
|
+
return { class: "mutually_exclusive", message: "--input may only be supplied once" };
|
|
49
|
+
input = value;
|
|
50
|
+
}
|
|
51
|
+
else if (value !== "json") {
|
|
52
|
+
return { class: "invalid_choice", message: `argument --format: invalid choice: '${value}' (choose from 'json')`, valid_values: ["json"] };
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
return { class: "unrecognized_argument", message: "unrecognized route argument; request text must be supplied through --input" };
|
|
57
|
+
}
|
|
58
|
+
if (!input)
|
|
59
|
+
return { class: "missing_argument", message: "--input is required so request text is not placed in argv", syntax: "--input PATH", example: preCutoverCommand("route request --input - --format json") };
|
|
60
|
+
return { input, format };
|
|
61
|
+
}
|
|
62
|
+
export function runRouteRequest(argv, io) {
|
|
63
|
+
const parsed = parse(argv);
|
|
64
|
+
if ("class" in parsed)
|
|
65
|
+
return invalidRouteInput(io, parsed);
|
|
66
|
+
let input;
|
|
67
|
+
try {
|
|
68
|
+
input = loadRouteInput(parsed.input, io.stdin ?? readStdin);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return invalidRouteInput(io, { class: "invalid_format", message: "route request input must be a readable YAML or JSON mapping", syntax: "--input PATH" });
|
|
72
|
+
}
|
|
73
|
+
if (Object.keys(input).some((key) => key !== "version" && key !== "request")) {
|
|
74
|
+
return invalidRouteInput(io, { class: "schema_violation", message: "route request input contains unsupported fields" });
|
|
75
|
+
}
|
|
76
|
+
if (input.version !== undefined && input.version !== "agentera.route_request.v1") {
|
|
77
|
+
return invalidRouteInput(io, { class: "schema_violation", message: "route request version must be agentera.route_request.v1" });
|
|
78
|
+
}
|
|
79
|
+
if (typeof input.request !== "string") {
|
|
80
|
+
return invalidRouteInput(io, { class: "invalid_request", message: "route request input requires a string request field" });
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
emitStructured(resolveRouteRequest(input.request), parsed.format, io.out ?? ((text) => process.stdout.write(text)));
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (error instanceof HybridRouteRegistryError) {
|
|
88
|
+
return invalidRouteInput(io, { class: "conflict", message: "routing authority validation failed before routing" });
|
|
89
|
+
}
|
|
90
|
+
return invalidRouteInput(io, { class: "invalid_request", message: "route request could not be resolved" });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function runRouteReceipt(argv, io) {
|
|
94
|
+
const parsed = parse(argv);
|
|
95
|
+
if ("class" in parsed)
|
|
96
|
+
return invalidRouteInput(io, parsed);
|
|
97
|
+
let input;
|
|
98
|
+
try {
|
|
99
|
+
input = loadRouteInput(parsed.input, io.stdin ?? readStdin);
|
|
100
|
+
emitStructured(validateRouteReceiptSubmission(input), parsed.format, io.out ?? ((text) => process.stdout.write(text)));
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const message = error instanceof RouteReceiptValidationError
|
|
105
|
+
? `invalid route receipt at ${error.field}: ${error.message}`
|
|
106
|
+
: "route receipt input must be a readable UTF-8 YAML or JSON mapping";
|
|
107
|
+
return emitInvalidInput({ out: io.out, err: io.err }, {
|
|
108
|
+
format: "json",
|
|
109
|
+
body: {
|
|
110
|
+
class: "invalid_receipt",
|
|
111
|
+
message,
|
|
112
|
+
recovery: "Submit the original request and a complete nullable host receipt through --input; no capability was started.",
|
|
113
|
+
},
|
|
114
|
+
exitCode: 64,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Run the contract-owned frozen synthetic corpus without invoking a semantic host. */
|
|
119
|
+
export function runRouteEvaluation(argv, io) {
|
|
120
|
+
if (argv.length !== 2 || argv[0] !== "--format" || argv[1] !== "json") {
|
|
121
|
+
return invalidRouteInput(io, {
|
|
122
|
+
class: "unrecognized_argument",
|
|
123
|
+
message: "route evaluation accepts only --format json and never accepts request text or corpus overrides",
|
|
124
|
+
syntax: preCutoverCommand("route evaluate --format json"),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const report = evaluateHybridRoute();
|
|
129
|
+
emitStructured(report, "json", io.out ?? ((text) => process.stdout.write(text)));
|
|
130
|
+
return routeEvaluationExitCode(report);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return invalidRouteInput(io, {
|
|
134
|
+
class: "conflict",
|
|
135
|
+
message: "routing evaluation authority validation failed before evaluation",
|
|
136
|
+
recovery: "Restore the contract-owned corpus and authorities, then retry; no request was sent or persisted.",
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function readStdin() {
|
|
141
|
+
return process.stdin.isTTY ? Buffer.alloc(0) : fs.readFileSync(0);
|
|
142
|
+
}
|