agentera 3.0.0-dev.8 → 3.0.0-dev.80
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 +252 -22
- package/bundle/.agentera-build-source.json +8 -0
- package/bundle/CHANGELOG.md +1387 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +143 -0
- package/bundle/UPGRADE.md +271 -0
- package/bundle/extract-corpus-parity.json +2 -4
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-publication.json +484 -0
- package/bundle/references/adapters/package-registry.yaml +443 -188
- package/bundle/references/adapters/package-surface-characterization.md +68 -34
- package/bundle/references/adapters/product-v1-reset.yaml +101 -0
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
- package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
- package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
- package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
- package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
- package/bundle/references/analysis/verification-policy.yaml +261 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
- package/bundle/references/artifacts/glossary-entry-contract.yaml +2906 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +3065 -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 +7 -5
- package/bundle/references/cli/vocabulary-index.yaml +7 -9
- package/bundle/references/cli/vocabulary.md +54 -97
- package/bundle/references/meta/retained-reference-authority.yaml +171 -0
- package/bundle/skills/agentera/SKILL.md +183 -63
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
- package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
- package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
- package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
- package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
- package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
- package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
- package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
- package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
- package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
- package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
- package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
- package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
- package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
- package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
- package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
- package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
- package/bundle/skills/agentera/protocol.yaml +4 -4
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +29 -30
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -43
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -34
- package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +53 -51
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -35
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +453 -55
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -39
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +305 -7
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
- package/dist/.agentera-build-source.json +8 -0
- package/dist/analytics/extractCorpus/cli.js +52 -11
- package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
- package/dist/analytics/extractCorpus/core.js +262 -14
- package/dist/analytics/extractCorpus/corpus.js +57 -18
- package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
- package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
- package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
- package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
- package/dist/analytics/extractCorpus/index.js +4 -2
- package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
- package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
- package/dist/analytics/extractCorpus/tierReader.js +108 -0
- package/dist/analytics/extractCorpus.js +0 -1
- package/dist/analytics/glossaryAdviceResolution.js +166 -0
- package/dist/analytics/glossaryInputAcquisition.js +319 -0
- package/dist/analytics/personalGlossaryAdmission.js +113 -0
- package/dist/analytics/personalGlossaryCandidateProjection.js +788 -0
- package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
- package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
- package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
- package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
- package/dist/analytics/personalGlossaryDecision.js +203 -0
- package/dist/analytics/personalGlossaryExplicit.js +788 -0
- package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
- package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
- package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
- package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
- package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
- package/dist/analytics/personalGlossaryProfile.js +229 -0
- package/dist/analytics/personalGlossaryRecurrence.js +618 -0
- package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
- package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
- package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
- package/dist/analytics/profileSignals.js +211 -0
- package/dist/analytics/usageStats.js +150 -23
- package/dist/audit/terminologyDrift.js +281 -0
- package/dist/bin/agentera.js +3 -2
- package/dist/capabilities/audit/instructions.js +16 -6
- package/dist/capabilities/build/instructions.js +59 -6
- package/dist/capabilities/design/instructions.js +3 -4
- package/dist/capabilities/discuss/instructions.js +29 -6
- package/dist/capabilities/document/instructions.js +11 -6
- package/dist/capabilities/index.js +20 -14
- package/dist/capabilities/optimize/instructions.js +14 -6
- package/dist/capabilities/orchestrate/instructions.js +42 -6
- package/dist/capabilities/plan/instructions.js +30 -3
- package/dist/capabilities/profile/instructions.js +104 -5
- package/dist/capabilities/research/instructions.js +4 -5
- package/dist/capabilities/status/instructions.js +15 -6
- package/dist/capabilities/status/startupInstructions.js +34 -0
- package/dist/capabilities/vision/instructions.js +3 -5
- package/dist/cli/appContext.js +14 -7
- package/dist/cli/argvalidate.js +0 -1
- package/dist/cli/capabilityContext/benchmark.js +5 -4
- package/dist/cli/capabilityContext/bespoke.js +14 -6
- package/dist/cli/capabilityContext/build.js +116 -42
- package/dist/cli/capabilityContext/closeout.js +30 -27
- package/dist/cli/capabilityContext/contract.js +18 -27
- package/dist/cli/capabilityContext/evidence.js +84 -77
- package/dist/cli/capabilityContext/index.js +0 -1
- package/dist/cli/capabilityContext/orchestration.js +42 -18
- package/dist/cli/capabilityContext/planState.js +89 -96
- package/dist/cli/capabilityContext/progress.js +52 -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 +118 -11
- package/dist/cli/commands/durability.js +81 -0
- package/dist/cli/commands/glossaryAdvice.js +138 -0
- package/dist/cli/commands/lint.js +22 -8
- package/dist/cli/commands/personalGlossaryCandidateReads.js +755 -0
- package/dist/cli/commands/personalGlossaryDecision.js +349 -0
- package/dist/cli/commands/personalGlossaryPublish.js +484 -0
- package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
- package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
- package/dist/cli/commands/prime/briefOrientation.js +845 -0
- package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
- package/dist/cli/commands/prime/bundleStatus.js +54 -4
- package/dist/cli/commands/prime/collectEntityOrientation.js +338 -0
- package/dist/cli/commands/prime/collectOrientationState.js +124 -68
- package/dist/cli/commands/prime/orientationOutput.js +271 -59
- package/dist/cli/commands/prime/types.js +0 -1
- package/dist/cli/commands/prime.js +89 -11
- package/dist/cli/commands/profileGrounding.js +55 -0
- package/dist/cli/commands/query.js +74 -52
- package/dist/cli/commands/report.js +187 -27
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/schema.js +436 -138
- package/dist/cli/commands/state/decisions.js +40 -56
- package/dist/cli/commands/state/docs.js +58 -85
- package/dist/cli/commands/state/experimentRecords.js +151 -0
- package/dist/cli/commands/state/experiments.js +11 -65
- package/dist/cli/commands/state/get.js +129 -0
- package/dist/cli/commands/state/health.js +11 -113
- package/dist/cli/commands/state/index.js +6 -41
- package/dist/cli/commands/state/list.js +194 -0
- package/dist/cli/commands/state/objective.js +21 -65
- package/dist/cli/commands/state/plan.js +11 -170
- package/dist/cli/commands/state/planTasks.js +154 -0
- package/dist/cli/commands/state/plans.js +154 -0
- package/dist/cli/commands/state/progress.js +11 -45
- package/dist/cli/commands/state/shared.js +0 -1
- package/dist/cli/commands/state/todo.js +28 -107
- package/dist/cli/commands/state/write.js +459 -0
- package/dist/cli/commands/upgrade.js +176 -5
- package/dist/cli/commands/upgradeVerify.js +118 -0
- package/dist/cli/commands/validate.js +235 -136
- package/dist/cli/commands/verify.js +73 -16
- package/dist/cli/contracts/bundleStatus.js +0 -1
- package/dist/cli/contracts/orientationState.js +0 -1
- package/dist/cli/dispatch/argvParser.js +0 -1
- package/dist/cli/dispatch/check.js +84 -40
- package/dist/cli/dispatch/commands.js +3 -3
- package/dist/cli/dispatch/index.js +84 -52
- package/dist/cli/dispatch/lifecycle.js +182 -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 +419 -41
- package/dist/cli/migrationRequired.js +125 -0
- package/dist/cli/orientation/attention.js +19 -22
- 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/productV1Eol.js +55 -0
- package/dist/cli/profileAcquisition.js +167 -0
- package/dist/cli/startupCompletenessContract.js +11 -9
- package/dist/cli/stateQuery.js +47 -12
- package/dist/cli/structured.js +0 -1
- package/dist/cli/todoMarkdown.js +25 -12
- package/dist/cli/todoReadinessSelection.js +192 -0
- package/dist/cli/todoSeverity.js +0 -1
- package/dist/core/atomicWriter.js +23 -0
- package/dist/core/developmentChannel.js +1 -0
- package/dist/core/developmentInvocation.js +377 -0
- package/dist/core/difflib.js +0 -1
- package/dist/core/envPaths.js +0 -1
- package/dist/core/jsonValue.js +0 -1
- package/dist/core/paths.js +0 -1
- package/dist/core/pyjson.js +0 -1
- package/dist/core/shell.js +4 -0
- package/dist/core/skillIdentity.js +23 -0
- package/dist/core/sourceRoot.js +9 -12
- package/dist/core/text.js +10 -0
- package/dist/core/toml.js +0 -1
- package/dist/core/yaml.js +61 -2
- package/dist/eval/evalSkills.js +13 -14
- package/dist/eval/glossaryEvaluation.js +751 -0
- package/dist/eval/glossaryEvaluationProcess.js +29 -0
- package/dist/eval/glossaryEvaluationRunner.js +571 -0
- package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
- package/dist/eval/hybridRouteEvaluation.js +155 -0
- package/dist/eval/semanticEval.js +0 -1
- package/dist/eval/semanticFixtures.js +0 -1
- package/dist/hooks/common.js +3 -56
- package/dist/hooks/compaction/apply.js +224 -47
- package/dist/hooks/compaction/dryRun.js +2 -1
- package/dist/hooks/compaction/index.js +5 -6
- package/dist/hooks/compaction/parse.js +73 -6
- package/dist/hooks/compaction/retention.js +28 -25
- package/dist/hooks/compaction/status.js +145 -26
- package/dist/hooks/compaction/types.js +0 -1
- package/dist/hooks/validateArtifact/agentFacing.js +0 -1
- package/dist/hooks/validateArtifact/index.js +6 -65
- package/dist/hooks/validateArtifact/markdown.js +9 -10
- package/dist/hooks/validateArtifact/schema.js +96 -9
- package/dist/hooks/validateArtifact/traversal.js +12 -11
- package/dist/hooks/validateArtifact/violations.js +5 -3
- package/dist/migrate/v2HandoffManifest.js +8 -3
- package/dist/registries/activationContract.js +2 -0
- package/dist/registries/activationTuples.js +145 -0
- package/dist/registries/artifactProtocolIds.js +2 -1
- package/dist/registries/artifactRegistry.js +207 -60
- package/dist/registries/artifactSchemaProjection.js +45 -0
- package/dist/registries/capabilityContract.js +5 -21
- package/dist/registries/evaluatorHandoffContract.js +0 -1
- package/dist/registries/evidenceTierContract.js +375 -0
- package/dist/registries/explicitSegmentGrammarContract.js +619 -0
- package/dist/registries/glossaryAdviceContract.js +79 -0
- package/dist/registries/glossaryCandidateContractPaths.js +6 -0
- package/dist/registries/glossaryCandidateContracts.js +820 -0
- package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
- package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
- package/dist/registries/glossaryCandidateProjectionAuthority.js +345 -0
- package/dist/registries/glossaryCandidateProjectionContract.js +108 -0
- package/dist/registries/glossaryCaveatContract.js +67 -0
- package/dist/registries/glossaryConsumerContractValidation.js +787 -0
- package/dist/registries/glossaryEntryContract.js +759 -0
- package/dist/registries/glossaryEntryTemporal.js +12 -0
- package/dist/registries/glossaryMiningAuthority.js +764 -0
- package/dist/registries/glossaryProfileFullContract.js +24 -0
- package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
- package/dist/registries/glossaryReviewRecordsContract.js +129 -0
- package/dist/registries/glossaryTermIdentity.js +139 -0
- package/dist/registries/glossaryTermOccurrence.js +20 -0
- package/dist/registries/hybridRoute.js +274 -0
- package/dist/registries/hybridRouteReceipt.js +221 -0
- package/dist/registries/packagePublication.js +273 -0
- package/dist/registries/packageRegistry.js +184 -209
- package/dist/registries/personalGlossaryContracts.js +1 -0
- package/dist/registries/todoReadinessContract.js +448 -0
- package/dist/registries/triggerLoader.js +7 -44
- package/dist/registries/verbosityBudgetContract.js +205 -0
- package/dist/release/releaseMetadata.js +168 -11
- 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 +503 -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/todoCreateBatch.js +69 -0
- package/dist/state/todoDocsEntities.js +1339 -0
- package/dist/state/todoDocsEntityValidation.js +158 -0
- package/dist/state/todoMarkdownProjection.js +63 -0
- package/dist/state/todoReconciliationActivation.js +182 -0
- package/dist/state/todoReconciliationInspection.js +184 -0
- package/dist/state/todoReconciliationRepair.js +320 -0
- package/dist/state/todoReconciliationTransaction.js +628 -0
- package/dist/state/todoSeverityHeadings.js +71 -0
- package/dist/state/todoTransitionBatch.js +65 -0
- package/dist/state/todoUpdateBatch.js +50 -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 +380 -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 +133 -34
- package/dist/upgrade/lifecycleUpgrade.js +113 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +325 -82
- package/dist/upgrade/migrationPublication.js +122 -0
- package/dist/upgrade/nextMajorDoctor.js +0 -22
- package/dist/upgrade/npxPlatformStatus.js +2 -2
- package/dist/upgrade/productV1Reset.js +515 -0
- package/dist/upgrade/productV1ResetAuthority.js +139 -0
- package/dist/upgrade/projectIntegration.js +126 -134
- package/dist/upgrade/projectIntegrationDecision.js +21 -13
- package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
- package/dist/upgrade/runtimeMigration.js +210 -430
- package/dist/upgrade/upgradeCommands.js +14 -1
- package/dist/upgrade/upgradeLock.js +85 -0
- package/dist/upgrade/upgradeOrchestrator.js +253 -48
- package/dist/upgrade/v3CapabilitySurface.js +2 -3
- package/dist/upgrade/versionResolution.js +0 -1
- package/dist/validate/activationArtifactEvidence.js +866 -0
- package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
- package/dist/validate/activationConjunction.js +816 -0
- package/dist/validate/activationEvidenceManifest.js +610 -0
- package/dist/validate/activationPackageSemantics.js +29 -0
- package/dist/validate/appHomeContract.js +1 -7
- package/dist/validate/bootstrapAuthority.js +44 -0
- package/dist/validate/capability.js +11 -3
- package/dist/validate/crossCapability.js +14 -9
- package/dist/validate/glossaryVariantGuard.js +96 -0
- package/dist/validate/retainedReferenceAuthority.js +879 -0
- package/dist/validate/selfAudit.js +39 -45
- package/dist/validate/vocabularyAuthority.js +8 -8
- package/package.json +39 -13
- package/bundle/references/adapters/cursor.md +0 -214
- package/bundle/references/adapters/opencode.md +0 -530
- package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
- package/bundle/references/adapters/runtime-feature-parity.md +0 -189
- package/bundle/references/analysis/benchmark.md +0 -267
- package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
- package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
- package/bundle/references/cli/capability-tool-classification.yaml +0 -53
- package/bundle/references/cli/coexistence-probe.yaml +0 -13
- package/bundle/references/cli/parity-expected-actual-template.md +0 -30
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
- package/bundle/references/cli/single-name-protocol.yaml +0 -42
- package/bundle/references/cli/upgrade-repair-wording.md +0 -45
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
- package/bundle/references/meta/documentation-inventory.md +0 -49
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/audit.toml +0 -6
- package/bundle/skills/agentera/agents/build.toml +0 -6
- package/bundle/skills/agentera/agents/design.toml +0 -6
- package/bundle/skills/agentera/agents/discuss.toml +0 -6
- package/bundle/skills/agentera/agents/document.toml +0 -6
- package/bundle/skills/agentera/agents/optimize.toml +0 -6
- package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
- package/bundle/skills/agentera/agents/plan.toml +0 -6
- package/bundle/skills/agentera/agents/profile.toml +0 -6
- package/bundle/skills/agentera/agents/research.toml +0 -6
- package/bundle/skills/agentera/agents/status.toml +0 -6
- package/bundle/skills/agentera/agents/vision.toml +0 -6
- package/bundle/skills/agentera/references/contract.md +0 -1048
- package/dist/analytics/extractCorpus/cli.js.map +0 -1
- package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/core.js.map +0 -1
- package/dist/analytics/extractCorpus/corpus.js.map +0 -1
- package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
- package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
- package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
- package/dist/analytics/extractCorpus/index.js.map +0 -1
- package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
- package/dist/analytics/extractCorpus.js.map +0 -1
- package/dist/analytics/usageStats.js.map +0 -1
- package/dist/bin/agentera.js.map +0 -1
- package/dist/capabilities/audit/instructions.js.map +0 -1
- package/dist/capabilities/build/instructions.js.map +0 -1
- package/dist/capabilities/design/instructions.js.map +0 -1
- package/dist/capabilities/discuss/instructions.js.map +0 -1
- package/dist/capabilities/document/instructions.js.map +0 -1
- package/dist/capabilities/index.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/plan/instructions.js.map +0 -1
- package/dist/capabilities/profile/instructions.js.map +0 -1
- package/dist/capabilities/research/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/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/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/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/types.js.map +0 -1
- package/dist/cli/commands/prime/v1Migration.js +0 -39
- 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/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/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/types.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/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/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/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/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/coexistenceProbe.js +0 -107
- package/dist/upgrade/coexistenceProbe.js.map +0 -1
- package/dist/upgrade/compatibility.js.map +0 -1
- package/dist/upgrade/doctor.js.map +0 -1
- package/dist/upgrade/doctorClassifier.js.map +0 -1
- package/dist/upgrade/installedHooksRetirement.js.map +0 -1
- package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
- package/dist/upgrade/nextMajorDoctor.js.map +0 -1
- package/dist/upgrade/npxPlatformStatus.js.map +0 -1
- package/dist/upgrade/projectIntegration.js.map +0 -1
- package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
- package/dist/upgrade/runtimeMigration.js.map +0 -1
- package/dist/upgrade/upgradeCommands.js.map +0 -1
- package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
- package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
- package/dist/upgrade/versionResolution.js.map +0 -1
- package/dist/validate/appHomeContract.js.map +0 -1
- package/dist/validate/capability.js.map +0 -1
- package/dist/validate/crossCapability.js.map +0 -1
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
- package/dist/validate/lifecycleAdapters/shared.js +0 -198
- package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -62
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- package/dist/validate/selfAudit.js.map +0 -1
- package/dist/validate/vocabularyAuthority.js.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { personalProfileGroundingContract } from "../../registries/glossaryEntryContract.js";
|
|
2
|
+
import { emitInvalidInput } from "../errors.js";
|
|
3
|
+
import { acquireProfile } from "../profileAcquisition.js";
|
|
4
|
+
import { emitStructured } from "../structured.js";
|
|
5
|
+
const COMMAND = "agentera report profile-grounding --format json";
|
|
6
|
+
const REQUEST_RECOVERY = `Run ${COMMAND}; no profile bytes were changed.`;
|
|
7
|
+
const INVALID_PROFILE_MESSAGE = "PROFILE.md is unavailable for bounded profile grounding.";
|
|
8
|
+
function invalid(io, body, recovery) {
|
|
9
|
+
return emitInvalidInput(io, { format: "json", body: { ...body, recovery } });
|
|
10
|
+
}
|
|
11
|
+
export function runProfileGroundingCommand(argv, io) {
|
|
12
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
13
|
+
const argument = argv[index];
|
|
14
|
+
const [name, inline] = argument.split("=", 2);
|
|
15
|
+
if (name !== "--format") {
|
|
16
|
+
return invalid(io, { class: "unrecognized_argument", message: "profile-grounding accepts only --format json", syntax: COMMAND }, REQUEST_RECOVERY);
|
|
17
|
+
}
|
|
18
|
+
const value = inline ?? argv[++index];
|
|
19
|
+
if (value !== "json") {
|
|
20
|
+
return invalid(io, { class: "invalid_choice", message: "profile-grounding requires --format json", valid_values: ["json"] }, REQUEST_RECOVERY);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const contract = personalProfileGroundingContract();
|
|
24
|
+
const acquired = acquireProfile();
|
|
25
|
+
const output = io.out ?? ((text) => process.stdout.write(text));
|
|
26
|
+
if (acquired.validity.status !== "valid" || acquired.groundingContent === null) {
|
|
27
|
+
emitStructured({
|
|
28
|
+
schemaVersion: contract.schemaVersion,
|
|
29
|
+
command: "report profile-grounding",
|
|
30
|
+
status: acquired.validity.status,
|
|
31
|
+
validity: acquired.validity,
|
|
32
|
+
freshness: acquired.freshness,
|
|
33
|
+
content: null,
|
|
34
|
+
recovery: acquired.validity.recovery,
|
|
35
|
+
error: {
|
|
36
|
+
class: "profile_unavailable",
|
|
37
|
+
message: INVALID_PROFILE_MESSAGE,
|
|
38
|
+
recovery: acquired.validity.recovery,
|
|
39
|
+
},
|
|
40
|
+
}, "json", output);
|
|
41
|
+
return 2;
|
|
42
|
+
}
|
|
43
|
+
emitStructured({
|
|
44
|
+
schemaVersion: contract.schemaVersion,
|
|
45
|
+
command: "report profile-grounding",
|
|
46
|
+
status: "ok",
|
|
47
|
+
validity: acquired.validity,
|
|
48
|
+
freshness: acquired.freshness,
|
|
49
|
+
content: acquired.groundingContent,
|
|
50
|
+
content_utf8_bytes: Buffer.byteLength(acquired.groundingContent),
|
|
51
|
+
excluded: "owned_personal_glossary_section",
|
|
52
|
+
recovery: null,
|
|
53
|
+
}, "json", output);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
@@ -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,23 @@ 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 { acquirePersonalGlossaryRefreshCommitLock, PersonalGlossaryRefreshCommitLockError, produceCurrentPersonalGlossaryProjection, releasePersonalGlossaryRefreshCommitLock, } from "../../analytics/personalGlossaryRefreshProjection.js";
|
|
9
|
+
import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, readCurrentGeneration, } from "../../analytics/extractCorpus/index.js";
|
|
8
10
|
function buildExtractArgv(args, corpusPath) {
|
|
9
|
-
|
|
11
|
+
// Refresh publishes bounded evidence tiers to the directory co-located with
|
|
12
|
+
// the canonical corpus path (`<dir>/tiers`); the extract engine no longer
|
|
13
|
+
// accepts the monolithic `--output corpusPath` write target (tiers are the
|
|
14
|
+
// only canonical output). Passing `--tier-output` makes the displayed
|
|
15
|
+
// `corpus_path`/`tier_path` truthful: tiers land at `dirname(corpusPath)/tiers`.
|
|
16
|
+
const argv = ["--tier-output", tiersDirForCorpusPath(corpusPath)];
|
|
10
17
|
for (const root of args.projectRoot ?? [])
|
|
11
18
|
argv.push("--project-root", root);
|
|
12
19
|
if (args.codexSessionsDir)
|
|
13
20
|
argv.push("--codex-sessions-dir", args.codexSessionsDir);
|
|
14
21
|
if (args.claudeProjectsDir)
|
|
15
22
|
argv.push("--claude-projects-dir", args.claudeProjectsDir);
|
|
23
|
+
for (const source of args.importSources ?? [])
|
|
24
|
+
argv.push("--import-source", source);
|
|
16
25
|
if (args.opencodeConversationsDir)
|
|
17
26
|
argv.push("--opencode-conversations-dir", args.opencodeConversationsDir);
|
|
18
27
|
if (args.copilotConversationsDir)
|
|
@@ -23,8 +32,6 @@ function buildExtractArgv(args, corpusPath) {
|
|
|
23
32
|
argv.push("--cursor-chats-dir", args.cursorChatsDir);
|
|
24
33
|
if (args.noCodex)
|
|
25
34
|
argv.push("--no-codex");
|
|
26
|
-
if (args.noClaude)
|
|
27
|
-
argv.push("--no-claude");
|
|
28
35
|
if (args.noOpencode)
|
|
29
36
|
argv.push("--no-opencode");
|
|
30
37
|
if (args.noCopilot)
|
|
@@ -38,7 +45,7 @@ function buildExtractArgv(args, corpusPath) {
|
|
|
38
45
|
return argv;
|
|
39
46
|
}
|
|
40
47
|
function usageSyntax() {
|
|
41
|
-
return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE]";
|
|
48
|
+
return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE] [--sources active|all]";
|
|
42
49
|
}
|
|
43
50
|
function usageExample() {
|
|
44
51
|
return "agentera usage --format json --project agentera";
|
|
@@ -73,30 +80,62 @@ export function statsCorpusPath(env = process.env, platform = process.platform)
|
|
|
73
80
|
}
|
|
74
81
|
/** Faithful port of `_stats_existing_corpus_status`. */
|
|
75
82
|
export function statsExistingCorpusStatus(corpusPath) {
|
|
83
|
+
// Bounded tier path: when tiers are published, report readiness from the
|
|
84
|
+
// manifest + retained corpus metadata without reading full evidence. The
|
|
85
|
+
// documented `tier_state`/`tier_path` fields extend the legacy shape;
|
|
86
|
+
// existing `status`/`reason`/`extracted_at`/`total_records` are preserved.
|
|
87
|
+
const tiersDir = tiersDirForCorpusPath(corpusPath);
|
|
88
|
+
const assessment = assessTiers(tiersDir, corpusPath);
|
|
89
|
+
if (assessment.analyzable) {
|
|
90
|
+
const meta = readBoundedMetadata(tiersDir);
|
|
91
|
+
const manifest = meta.manifest;
|
|
92
|
+
const extractedAt = meta.corpusMetadata?.extracted_at ?? null;
|
|
93
|
+
return {
|
|
94
|
+
status: "ready",
|
|
95
|
+
path: corpusPath,
|
|
96
|
+
tier_path: tiersDir,
|
|
97
|
+
tier_state: assessment.state,
|
|
98
|
+
reason: "bounded evidence tier published",
|
|
99
|
+
extracted_at: extractedAt ?? (manifest?.published_at ?? null),
|
|
100
|
+
total_records: manifest?.total_records ?? 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (assessment.state === "oversized" || assessment.state === "corrupt") {
|
|
104
|
+
return {
|
|
105
|
+
status: "stale",
|
|
106
|
+
path: corpusPath,
|
|
107
|
+
tier_path: tiersDir,
|
|
108
|
+
tier_state: assessment.state,
|
|
109
|
+
reason: assessment.recovery ?? `${assessment.state} evidence tier`,
|
|
110
|
+
...(assessment.artifact ? { artifact: assessment.artifact } : {}),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// Legacy or missing: preserve the corpus-envelope status behavior.
|
|
76
114
|
if (!fs.existsSync(corpusPath)) {
|
|
77
115
|
return { status: "missing", path: corpusPath, reason: "corpus file does not exist" };
|
|
78
116
|
}
|
|
79
117
|
const tooLarge = corpusTooLargeReason(corpusPath);
|
|
80
118
|
if (tooLarge) {
|
|
81
|
-
return { status: "stale", path: corpusPath, reason: tooLarge };
|
|
119
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: tooLarge };
|
|
82
120
|
}
|
|
83
121
|
let data;
|
|
84
122
|
try {
|
|
85
123
|
data = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
|
|
86
124
|
}
|
|
87
125
|
catch (exc) {
|
|
88
|
-
return { status: "stale", path: corpusPath, reason: `corpus is not readable JSON: ${exc.message}` };
|
|
126
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: `corpus is not readable JSON: ${exc.message}` };
|
|
89
127
|
}
|
|
90
128
|
const records = data && typeof data === "object" && !Array.isArray(data) ? data.records ?? [] : [];
|
|
91
129
|
const hasTurn = Array.isArray(records) &&
|
|
92
130
|
records.some((r) => r && typeof r === "object" && r.source_kind === "conversation_turn");
|
|
93
131
|
if (!hasTurn) {
|
|
94
|
-
return { status: "stale", path: corpusPath, reason: "corpus has no conversation_turn records" };
|
|
132
|
+
return { status: "stale", path: corpusPath, tier_state: "legacy", reason: "corpus has no conversation_turn records" };
|
|
95
133
|
}
|
|
96
134
|
const metadata = data.metadata && typeof data.metadata === "object" ? data.metadata : {};
|
|
97
135
|
return {
|
|
98
136
|
status: "ready",
|
|
99
137
|
path: corpusPath,
|
|
138
|
+
tier_state: "legacy",
|
|
100
139
|
reason: "existing corpus has conversation_turn records",
|
|
101
140
|
extracted_at: metadata.extracted_at ?? null,
|
|
102
141
|
total_records: records.length,
|
|
@@ -105,9 +144,9 @@ export function statsExistingCorpusStatus(corpusPath) {
|
|
|
105
144
|
/**
|
|
106
145
|
* Faithful port of scripts/agentera `cmd_stats` (canonical command is `report`;
|
|
107
146
|
* `stats` is the deprecated alias and shares this logic). The plain read path
|
|
108
|
-
* reuses the ported usage engine
|
|
109
|
-
*
|
|
110
|
-
*
|
|
147
|
+
* reuses the ported usage engine over bounded tiers (with a legacy
|
|
148
|
+
* corpus.json fallback when no tiers are published). `stats refresh` publishes
|
|
149
|
+
* bounded tiers from local runtime history under explicit consent.
|
|
111
150
|
*/
|
|
112
151
|
export function cmdReport(args, io = {}) {
|
|
113
152
|
const out = io.out ?? ((t) => process.stdout.write(t));
|
|
@@ -129,8 +168,24 @@ export function cmdReport(args, io = {}) {
|
|
|
129
168
|
return 2;
|
|
130
169
|
}
|
|
131
170
|
if (!dryRun && consent !== "local-history") {
|
|
132
|
-
|
|
133
|
-
|
|
171
|
+
const recovery = "agentera report refresh --consent local-history";
|
|
172
|
+
const message = "Error: agentera stats refresh requires explicit --consent local-history to read local runtime history. " +
|
|
173
|
+
"Preview first with agentera stats refresh --dry-run";
|
|
174
|
+
if (outputFormat === "json") {
|
|
175
|
+
out(JSON.stringify({
|
|
176
|
+
command: "stats refresh",
|
|
177
|
+
status: "degraded_consent_required",
|
|
178
|
+
recovery,
|
|
179
|
+
privacy: {
|
|
180
|
+
local_history_read: false,
|
|
181
|
+
local_history_write: false,
|
|
182
|
+
tier_write: false,
|
|
183
|
+
required_consent: "local-history",
|
|
184
|
+
provided_consent: consent,
|
|
185
|
+
},
|
|
186
|
+
}, null, 2) + "\n");
|
|
187
|
+
}
|
|
188
|
+
err(`${message}\nRecovery: ${recovery}\n`);
|
|
134
189
|
return 2;
|
|
135
190
|
}
|
|
136
191
|
const corpusPath = args.output || statsCorpusPath();
|
|
@@ -143,53 +198,157 @@ export function cmdReport(args, io = {}) {
|
|
|
143
198
|
privacy: {
|
|
144
199
|
local_history_read: false,
|
|
145
200
|
local_history_write: false,
|
|
146
|
-
|
|
201
|
+
tier_write: false,
|
|
147
202
|
required_consent: "local-history",
|
|
148
203
|
provided_consent: null,
|
|
149
204
|
},
|
|
150
205
|
corpus_path: corpusPath,
|
|
206
|
+
tier_path: tiersDirForCorpusPath(corpusPath),
|
|
151
207
|
engine: { command: engineCommand },
|
|
152
208
|
diagnostics: [
|
|
153
|
-
"dry-run does not read runtime history or write
|
|
154
|
-
"
|
|
209
|
+
"dry-run does not read runtime history or write tier files",
|
|
210
|
+
"published tiers are internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/tiers",
|
|
211
|
+
...(args.importSources?.includes("claude")
|
|
212
|
+
? ["Claude historical import can contain secrets, file contents, and command output; apply stays local and read-only"]
|
|
213
|
+
: []),
|
|
155
214
|
],
|
|
156
215
|
};
|
|
157
216
|
if (outputFormat === "json") {
|
|
158
217
|
out(JSON.stringify(payload, null, 2) + "\n");
|
|
159
218
|
}
|
|
160
219
|
else {
|
|
161
|
-
out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\nengine=${engineCommand.join(" ")}\n`);
|
|
162
|
-
out("privacy=local_history_read=false,
|
|
220
|
+
out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\nengine=${engineCommand.join(" ")}\n`);
|
|
221
|
+
out("privacy=local_history_read=false, tier_write=false, required_consent=local-history\n");
|
|
163
222
|
}
|
|
164
223
|
return 0;
|
|
165
224
|
}
|
|
166
|
-
// consent === "local-history":
|
|
225
|
+
// consent === "local-history": extract local history into bounded tiers.
|
|
226
|
+
const tiersDir = tiersDirForCorpusPath(corpusPath);
|
|
227
|
+
let refreshLock;
|
|
228
|
+
try {
|
|
229
|
+
refreshLock = acquirePersonalGlossaryRefreshCommitLock();
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (!(error instanceof PersonalGlossaryRefreshCommitLockError))
|
|
233
|
+
throw error;
|
|
234
|
+
const recovery = error.recovery;
|
|
235
|
+
const currentGeneration = readCurrentGeneration(tiersDir);
|
|
236
|
+
const projection = {
|
|
237
|
+
status: "failed",
|
|
238
|
+
reason: error.message,
|
|
239
|
+
recovery,
|
|
240
|
+
};
|
|
241
|
+
const payload = {
|
|
242
|
+
command: "stats refresh",
|
|
243
|
+
status: "fail",
|
|
244
|
+
exit_signal: null,
|
|
245
|
+
privacy: {
|
|
246
|
+
local_history_read: false,
|
|
247
|
+
local_history_write: false,
|
|
248
|
+
tier_write: false,
|
|
249
|
+
projection_write: false,
|
|
250
|
+
required_consent: "local-history",
|
|
251
|
+
provided_consent: "local-history",
|
|
252
|
+
historical_imports: args.importSources ?? [],
|
|
253
|
+
historical_import_warning: args.importSources?.includes("claude")
|
|
254
|
+
? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
|
|
255
|
+
: null,
|
|
256
|
+
},
|
|
257
|
+
corpus_path: corpusPath,
|
|
258
|
+
tier_path: tiersDir,
|
|
259
|
+
evidence: {
|
|
260
|
+
status: currentGeneration ? "readable" : "unavailable",
|
|
261
|
+
...(currentGeneration ? {
|
|
262
|
+
generation: currentGeneration.manifest.generation,
|
|
263
|
+
published_at: currentGeneration.manifest.published_at,
|
|
264
|
+
} : {}),
|
|
265
|
+
},
|
|
266
|
+
projection,
|
|
267
|
+
engine: { command: engineCommand, exit_code: null, stdout: [], stderr: [] },
|
|
268
|
+
};
|
|
269
|
+
if (outputFormat === "json") {
|
|
270
|
+
out(JSON.stringify(payload, null, 2) + "\n");
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
out(`agentera stats refresh: fail\ncorpus=${corpusPath}\ntiers=${tiersDir}\n`);
|
|
274
|
+
err(`candidate projection failed: ${projection.reason}\nRecovery: ${recovery}\n`);
|
|
275
|
+
}
|
|
276
|
+
return 1;
|
|
277
|
+
}
|
|
167
278
|
let engineOut = "";
|
|
168
279
|
let engineErr = "";
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
280
|
+
let rc;
|
|
281
|
+
let projection = { status: "not_attempted" };
|
|
282
|
+
let finalRc;
|
|
283
|
+
let currentGeneration;
|
|
284
|
+
try {
|
|
285
|
+
rc = extractCorpusMain(engineArgv, {
|
|
286
|
+
out: (t) => (engineOut += t + "\n"),
|
|
287
|
+
err: (t) => (engineErr += t + "\n"),
|
|
288
|
+
});
|
|
289
|
+
finalRc = rc;
|
|
290
|
+
currentGeneration = rc === 0 ? readCurrentGeneration(tiersDir) : null;
|
|
291
|
+
if (rc === 0) {
|
|
292
|
+
try {
|
|
293
|
+
const produced = produceCurrentPersonalGlossaryProjection({ tiersDir });
|
|
294
|
+
projection = { ...produced, write_status: produced.status, status: "published" };
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
finalRc = 1;
|
|
298
|
+
projection = {
|
|
299
|
+
status: "failed",
|
|
300
|
+
reason: error.message,
|
|
301
|
+
recovery: "npx -y agentera@next report refresh --consent local-history",
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
releasePersonalGlossaryRefreshCommitLock(refreshLock);
|
|
308
|
+
}
|
|
309
|
+
const refreshStatus = finalRc === 0 ? "pass" : rc === 4 ? "flagged" : "fail";
|
|
174
310
|
const payload = {
|
|
175
311
|
command: "stats refresh",
|
|
176
312
|
status: refreshStatus,
|
|
177
313
|
exit_signal: rc === 4 ? "EX2" : null,
|
|
178
|
-
privacy: {
|
|
314
|
+
privacy: {
|
|
315
|
+
local_history_read: true,
|
|
316
|
+
local_history_write: false,
|
|
317
|
+
tier_write: rc === 0,
|
|
318
|
+
projection_write: projection.status === "published",
|
|
319
|
+
required_consent: "local-history",
|
|
320
|
+
provided_consent: "local-history",
|
|
321
|
+
historical_imports: args.importSources ?? [],
|
|
322
|
+
historical_import_warning: args.importSources?.includes("claude")
|
|
323
|
+
? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
|
|
324
|
+
: null,
|
|
325
|
+
},
|
|
179
326
|
corpus_path: corpusPath,
|
|
327
|
+
tier_path: tiersDir,
|
|
328
|
+
evidence: {
|
|
329
|
+
status: rc === 0 ? "published" : "failed",
|
|
330
|
+
...(currentGeneration ? {
|
|
331
|
+
generation: currentGeneration.manifest.generation,
|
|
332
|
+
published_at: currentGeneration.manifest.published_at,
|
|
333
|
+
} : {}),
|
|
334
|
+
},
|
|
335
|
+
projection,
|
|
180
336
|
engine: { command: engineCommand, exit_code: rc, stdout: engineOut.split("\n").filter((l) => l), stderr: engineErr.split("\n").filter((l) => l) },
|
|
181
337
|
};
|
|
182
338
|
if (outputFormat === "json") {
|
|
183
339
|
out(JSON.stringify(payload, null, 2) + "\n");
|
|
184
340
|
}
|
|
185
341
|
else {
|
|
186
|
-
out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\n`);
|
|
342
|
+
out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\n`);
|
|
187
343
|
if (engineOut)
|
|
188
344
|
out(engineOut);
|
|
189
345
|
if (engineErr)
|
|
190
346
|
err(engineErr);
|
|
347
|
+
if (projection.status === "failed") {
|
|
348
|
+
err(`candidate projection failed: ${String(projection.reason)}\nRecovery: ${String(projection.recovery)}\n`);
|
|
349
|
+
}
|
|
191
350
|
}
|
|
192
|
-
return
|
|
351
|
+
return finalRc;
|
|
193
352
|
}
|
|
194
353
|
if (action !== null) {
|
|
195
354
|
err(`Error: unsupported stats action '${action}'. ` +
|
|
@@ -221,6 +380,8 @@ export function cmdReport(args, io = {}) {
|
|
|
221
380
|
const engineArgs = ["--corpus", corpusPath];
|
|
222
381
|
if (args.project)
|
|
223
382
|
engineArgs.push("--project", args.project);
|
|
383
|
+
if (args.sources)
|
|
384
|
+
engineArgs.push("--sources", args.sources);
|
|
224
385
|
if (outputFormat === "json")
|
|
225
386
|
engineArgs.push("--json");
|
|
226
387
|
return usageMain(engineArgs, {
|
|
@@ -228,4 +389,3 @@ export function cmdReport(args, io = {}) {
|
|
|
228
389
|
err: (t) => err(t + "\n"),
|
|
229
390
|
});
|
|
230
391
|
}
|
|
231
|
-
//# sourceMappingURL=report.js.map
|