agentera 3.0.0-dev.3 → 3.0.0-dev.30
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 +96 -6
- package/bundle/.agentera-npx-bundle.json +1 -1
- package/bundle/CHANGELOG.md +1133 -0
- package/bundle/DESIGN.md +229 -0
- package/bundle/LICENSE +201 -0
- package/bundle/README.md +136 -0
- package/bundle/UPGRADE.md +201 -0
- package/bundle/extract-corpus-parity.json +21 -0
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-manifest-interface-model.yaml +42 -252
- package/bundle/references/adapters/package-registry.yaml +20 -188
- package/bundle/references/adapters/package-surface-characterization.md +36 -37
- 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 +97 -0
- package/bundle/references/analysis/benchmark.md +10 -6
- package/bundle/references/analysis/evidence-tier-authority.yaml +516 -0
- package/bundle/references/analysis/startup-measurement-contract.yaml +37 -26
- package/bundle/references/analysis/verification-policy.yaml +142 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +9 -8
- package/bundle/references/artifacts/state-storage-authority.yaml +2167 -0
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +64 -81
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +58 -29
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +12 -49
- package/bundle/references/cli/capability-instruction-contract.yaml +96 -58
- package/bundle/references/cli/capability-instruction-structure.md +144 -0
- package/bundle/references/cli/capability-tool-classification.yaml +14 -14
- package/bundle/references/cli/coexistence-probe.yaml +13 -0
- package/bundle/references/cli/hybrid-route-contract.yaml +416 -0
- package/bundle/references/cli/parity-expected-actual-template.md +30 -0
- package/bundle/references/cli/prime-consumer-compatibility.yaml +651 -0
- package/bundle/references/cli/routing-execution-vocabulary.yaml +16 -38
- package/bundle/references/cli/routing-model.md +139 -0
- package/bundle/references/cli/single-name-protocol.yaml +42 -0
- package/bundle/references/cli/trigger-schema-enrichment.md +140 -0
- package/bundle/references/cli/update-channels.yaml +45 -7
- package/bundle/references/cli/upgrade-repair-wording.md +25 -0
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +97 -0
- package/bundle/references/cli/vocabulary-index.yaml +23 -18
- package/bundle/references/cli/vocabulary.md +346 -331
- package/bundle/references/meta/documentation-inventory.md +10 -3
- package/bundle/registry.json +14 -14
- package/bundle/skills/agentera/SKILL.md +182 -407
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
- package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +20 -19
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +85 -0
- package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +3 -3
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
- package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/validation.yaml +16 -16
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +49 -0
- package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/validation.yaml +9 -8
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +17 -17
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +63 -0
- package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +89 -0
- package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/artifacts.yaml +4 -4
- package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +3 -3
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +85 -0
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
- package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +72 -0
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
- package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
- package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
- package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
- package/bundle/skills/agentera/protocol.yaml +29 -29
- package/bundle/skills/agentera/references/contract.md +387 -329
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +327 -15
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +51 -53
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +82 -28
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
- package/dist/analytics/extractCorpus/cli.js +191 -0
- package/dist/analytics/extractCorpus/cli.js.map +1 -0
- package/dist/analytics/extractCorpus/copilotSessions.js +276 -0
- package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -0
- package/dist/analytics/extractCorpus/core.js +393 -0
- package/dist/analytics/extractCorpus/core.js.map +1 -0
- package/dist/analytics/extractCorpus/corpus.js +168 -0
- package/dist/analytics/extractCorpus/corpus.js.map +1 -0
- package/dist/analytics/extractCorpus/coverageAudit.js +261 -0
- package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -0
- package/dist/analytics/extractCorpus/cursorSessions.js +426 -0
- package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js +561 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +106 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -0
- package/dist/analytics/extractCorpus/filesystemSources.js +119 -0
- package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -0
- package/dist/analytics/extractCorpus/index.js +15 -0
- package/dist/analytics/extractCorpus/index.js.map +1 -0
- package/dist/analytics/extractCorpus/jsonlSessions.js +205 -0
- package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -0
- package/dist/analytics/extractCorpus/sqliteCaps.js +44 -0
- package/dist/analytics/extractCorpus/sqliteCaps.js.map +1 -0
- package/dist/analytics/extractCorpus/sqliteSessions.js +368 -0
- package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -0
- package/dist/analytics/extractCorpus/tierReader.js +109 -0
- package/dist/analytics/extractCorpus/tierReader.js.map +1 -0
- package/dist/analytics/extractCorpus.js +2 -1790
- package/dist/analytics/extractCorpus.js.map +1 -1
- package/dist/analytics/profileSignals.js +212 -0
- package/dist/analytics/profileSignals.js.map +1 -0
- package/dist/analytics/usageStats.js +191 -41
- package/dist/analytics/usageStats.js.map +1 -1
- package/dist/bin/agentera.js +3 -1
- package/dist/bin/agentera.js.map +1 -1
- package/dist/capabilities/audit/instructions.js +16 -0
- package/dist/capabilities/audit/instructions.js.map +1 -0
- package/dist/capabilities/build/instructions.js +18 -0
- package/dist/capabilities/build/instructions.js.map +1 -0
- package/dist/capabilities/design/instructions.js +5 -0
- package/dist/capabilities/design/instructions.js.map +1 -0
- package/dist/capabilities/discuss/instructions.js +16 -0
- package/dist/capabilities/discuss/instructions.js.map +1 -0
- package/dist/capabilities/document/instructions.js +12 -0
- package/dist/capabilities/document/instructions.js.map +1 -0
- package/dist/capabilities/index.js +39 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/optimize/instructions.js +14 -0
- package/dist/capabilities/optimize/instructions.js.map +1 -0
- package/dist/capabilities/orchestrate/instructions.js +41 -0
- package/dist/capabilities/orchestrate/instructions.js.map +1 -0
- package/dist/capabilities/plan/instructions.js +15 -0
- package/dist/capabilities/plan/instructions.js.map +1 -0
- package/dist/capabilities/profile/instructions.js +5 -0
- package/dist/capabilities/profile/instructions.js.map +1 -0
- package/dist/capabilities/research/instructions.js +6 -0
- package/dist/capabilities/research/instructions.js.map +1 -0
- package/dist/capabilities/status/instructions.js +5 -0
- package/dist/capabilities/status/instructions.js.map +1 -0
- package/dist/capabilities/status/startupInstructions.js +35 -0
- package/dist/capabilities/status/startupInstructions.js.map +1 -0
- package/dist/capabilities/vision/instructions.js +5 -0
- package/dist/capabilities/vision/instructions.js.map +1 -0
- package/dist/cli/appContext.js +30 -23
- package/dist/cli/appContext.js.map +1 -1
- package/dist/cli/argvalidate.js.map +1 -1
- package/dist/cli/capabilityContext/benchmark.js +564 -0
- package/dist/cli/capabilityContext/benchmark.js.map +1 -0
- package/dist/cli/capabilityContext/bespoke.js +44 -0
- package/dist/cli/capabilityContext/bespoke.js.map +1 -0
- package/dist/cli/capabilityContext/build.js +191 -0
- package/dist/cli/capabilityContext/build.js.map +1 -0
- package/dist/cli/capabilityContext/closeout.js +231 -0
- package/dist/cli/capabilityContext/closeout.js.map +1 -0
- package/dist/cli/capabilityContext/contract.js +214 -0
- package/dist/cli/capabilityContext/contract.js.map +1 -0
- package/dist/cli/capabilityContext/evidence.js +469 -0
- package/dist/cli/capabilityContext/evidence.js.map +1 -0
- package/dist/cli/capabilityContext/index.js +4 -0
- package/dist/cli/capabilityContext/index.js.map +1 -0
- package/dist/cli/capabilityContext/orchestration.js +128 -0
- package/dist/cli/capabilityContext/orchestration.js.map +1 -0
- package/dist/cli/capabilityContext/planState.js +280 -0
- package/dist/cli/capabilityContext/planState.js.map +1 -0
- package/dist/cli/capabilityContext/progress.js +143 -0
- package/dist/cli/capabilityContext/progress.js.map +1 -0
- package/dist/cli/capabilityContext/shared.js +100 -0
- package/dist/cli/capabilityContext/shared.js.map +1 -0
- package/dist/cli/capabilityContext/slim.js +153 -0
- package/dist/cli/capabilityContext/slim.js.map +1 -0
- package/dist/cli/capabilityContext/startup.js +257 -0
- package/dist/cli/capabilityContext/startup.js.map +1 -0
- package/dist/cli/capabilityContext/types.js +51 -0
- package/dist/cli/capabilityContext/types.js.map +1 -0
- package/dist/cli/capabilityContext.js +1 -2420
- package/dist/cli/capabilityContext.js.map +1 -1
- package/dist/cli/commands/appHome.js +23 -0
- package/dist/cli/commands/appHome.js.map +1 -0
- package/dist/cli/commands/capability.js +3 -10
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/compact.js +41 -12
- package/dist/cli/commands/compact.js.map +1 -1
- package/dist/cli/commands/doctor.js +59 -97
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/durability.js +82 -0
- package/dist/cli/commands/durability.js.map +1 -0
- package/dist/cli/commands/entityMigrate.js +132 -0
- package/dist/cli/commands/entityMigrate.js.map +1 -0
- package/dist/cli/commands/lint.js +26 -43
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +592 -0
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -0
- package/dist/cli/commands/prime/bundleStatus.js +191 -0
- package/dist/cli/commands/prime/bundleStatus.js.map +1 -0
- package/dist/cli/commands/prime/collectEntityOrientation.js +260 -0
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -0
- package/dist/cli/commands/prime/collectOrientationState.js +180 -0
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -0
- package/dist/cli/commands/prime/orientationOutput.js +350 -0
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -0
- package/dist/cli/commands/prime/types.js +2 -0
- package/dist/cli/commands/prime/types.js.map +1 -0
- package/dist/cli/commands/prime/v1Migration.js +39 -0
- package/dist/cli/commands/prime/v1Migration.js.map +1 -0
- package/dist/cli/commands/prime.js +61 -556
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/query.js +66 -51
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/report.js +100 -24
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/route.js.map +1 -0
- package/dist/cli/commands/schema.js +260 -78
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/decisions.js +388 -0
- package/dist/cli/commands/state/decisions.js.map +1 -0
- package/dist/cli/commands/state/docs.js +71 -0
- package/dist/cli/commands/state/docs.js.map +1 -0
- package/dist/cli/commands/state/experimentRecords.js +139 -0
- package/dist/cli/commands/state/experimentRecords.js.map +1 -0
- package/dist/cli/commands/state/experiments.js +15 -0
- package/dist/cli/commands/state/experiments.js.map +1 -0
- package/dist/cli/commands/state/get.js +127 -0
- package/dist/cli/commands/state/get.js.map +1 -0
- package/dist/cli/commands/state/health.js +15 -0
- package/dist/cli/commands/state/health.js.map +1 -0
- package/dist/cli/commands/state/index.js +60 -0
- package/dist/cli/commands/state/index.js.map +1 -0
- package/dist/cli/commands/state/list.js +176 -0
- package/dist/cli/commands/state/list.js.map +1 -0
- package/dist/cli/commands/state/objective.js +26 -0
- package/dist/cli/commands/state/objective.js.map +1 -0
- package/dist/cli/commands/state/plan.js +15 -0
- package/dist/cli/commands/state/plan.js.map +1 -0
- package/dist/cli/commands/state/planTasks.js +142 -0
- package/dist/cli/commands/state/planTasks.js.map +1 -0
- package/dist/cli/commands/state/plans.js +143 -0
- package/dist/cli/commands/state/plans.js.map +1 -0
- package/dist/cli/commands/state/progress.js +14 -0
- package/dist/cli/commands/state/progress.js.map +1 -0
- package/dist/cli/commands/state/shared.js +15 -0
- package/dist/cli/commands/state/shared.js.map +1 -0
- package/dist/cli/commands/state/todo.js +42 -0
- package/dist/cli/commands/state/todo.js.map +1 -0
- package/dist/cli/commands/state/write.js +418 -0
- package/dist/cli/commands/state/write.js.map +1 -0
- package/dist/cli/commands/upgrade.js +146 -4
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgradeVerify.js +119 -0
- package/dist/cli/commands/upgradeVerify.js.map +1 -0
- package/dist/cli/commands/validate.js +109 -209
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/commands/verify.js +30 -8
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/contracts/bundleStatus.js +2 -0
- package/dist/cli/contracts/bundleStatus.js.map +1 -0
- package/dist/cli/contracts/orientationState.js +2 -0
- package/dist/cli/contracts/orientationState.js.map +1 -0
- package/dist/cli/dispatch/argvParser.js +33 -0
- package/dist/cli/dispatch/argvParser.js.map +1 -0
- package/dist/cli/dispatch/check.js +390 -0
- package/dist/cli/dispatch/check.js.map +1 -0
- package/dist/cli/dispatch/commands.js +27 -0
- package/dist/cli/dispatch/commands.js.map +1 -0
- package/dist/cli/dispatch/index.js +226 -0
- package/dist/cli/dispatch/index.js.map +1 -0
- package/dist/cli/dispatch/lifecycle.js +653 -0
- package/dist/cli/dispatch/lifecycle.js.map +1 -0
- package/dist/cli/dispatch/prime.js +119 -0
- package/dist/cli/dispatch/prime.js.map +1 -0
- package/dist/cli/dispatch/shared.js +64 -0
- package/dist/cli/dispatch/shared.js.map +1 -0
- package/dist/cli/dispatch/state.js +174 -0
- package/dist/cli/dispatch/state.js.map +1 -0
- package/dist/cli/dispatch.js +1 -957
- package/dist/cli/dispatch.js.map +1 -1
- package/dist/cli/errors.js +53 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/help.js +418 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/migrationRequired.js +87 -0
- package/dist/cli/migrationRequired.js.map +1 -0
- package/dist/cli/orientation/attention.js +67 -0
- package/dist/cli/orientation/attention.js.map +1 -0
- package/dist/cli/orientation/corpusCoverage.js +103 -0
- package/dist/cli/orientation/corpusCoverage.js.map +1 -0
- package/dist/cli/orientation.js +357 -148
- package/dist/cli/orientation.js.map +1 -1
- package/dist/cli/planArtifacts.js +351 -0
- package/dist/cli/planArtifacts.js.map +1 -0
- package/dist/cli/planEvidence.js +158 -0
- package/dist/cli/planEvidence.js.map +1 -0
- package/dist/cli/planLifecycleState.js +34 -0
- package/dist/cli/planLifecycleState.js.map +1 -0
- package/dist/cli/planTaskIndex.js +12 -0
- package/dist/cli/planTaskIndex.js.map +1 -0
- package/dist/cli/prime-blob.js +69 -2
- package/dist/cli/prime-blob.js.map +1 -1
- package/dist/cli/startupCompletenessContract.js +57 -0
- package/dist/cli/startupCompletenessContract.js.map +1 -0
- package/dist/cli/stateQuery.js +63 -10
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/cli/structured.js.map +1 -1
- package/dist/cli/todoMarkdown.js +33 -0
- package/dist/cli/todoMarkdown.js.map +1 -0
- package/dist/cli/todoSeverity.js +19 -0
- package/dist/cli/todoSeverity.js.map +1 -0
- package/dist/core/atomicWriter.js +21 -0
- package/dist/core/atomicWriter.js.map +1 -0
- package/dist/core/difflib.js.map +1 -1
- package/dist/core/envPaths.js +21 -0
- package/dist/core/envPaths.js.map +1 -0
- package/dist/core/jsonValue.js +6 -0
- package/dist/core/jsonValue.js.map +1 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/pyjson.js +67 -2
- package/dist/core/pyjson.js.map +1 -1
- package/dist/core/skillIdentity.js +24 -0
- package/dist/core/skillIdentity.js.map +1 -0
- package/dist/core/sourceRoot.js.map +1 -1
- package/dist/core/text.js +11 -0
- package/dist/core/text.js.map +1 -0
- package/dist/core/toml.js.map +1 -1
- package/dist/core/yaml.js +8 -0
- package/dist/core/yaml.js.map +1 -1
- package/dist/eval/evalSkills.js +30 -25
- package/dist/eval/evalSkills.js.map +1 -1
- package/dist/eval/hybridRouteEvaluation.js +156 -0
- package/dist/eval/hybridRouteEvaluation.js.map +1 -0
- package/dist/eval/semanticEval.js +43 -19
- package/dist/eval/semanticEval.js.map +1 -1
- package/dist/eval/semanticFixtures.js +16 -4
- package/dist/eval/semanticFixtures.js.map +1 -1
- package/dist/hooks/common.js +10 -27
- package/dist/hooks/common.js.map +1 -1
- package/dist/hooks/compaction/apply.js +447 -0
- package/dist/hooks/compaction/apply.js.map +1 -0
- package/dist/hooks/compaction/dryRun.js +185 -0
- package/dist/hooks/compaction/dryRun.js.map +1 -0
- package/dist/hooks/compaction/index.js +23 -0
- package/dist/hooks/compaction/index.js.map +1 -0
- package/dist/hooks/compaction/parse.js +326 -0
- package/dist/hooks/compaction/parse.js.map +1 -0
- package/dist/hooks/compaction/retention.js +203 -0
- package/dist/hooks/compaction/retention.js.map +1 -0
- package/dist/hooks/compaction/status.js +361 -0
- package/dist/hooks/compaction/status.js.map +1 -0
- package/dist/hooks/compaction/types.js +6 -0
- package/dist/hooks/compaction/types.js.map +1 -0
- package/dist/hooks/cursorPreToolUse.js +1 -1
- package/dist/hooks/cursorPreToolUse.js.map +1 -1
- package/dist/hooks/cursorSessionStart.js +14 -21
- package/dist/hooks/cursorSessionStart.js.map +1 -1
- package/dist/hooks/projectHookInput.js +26 -0
- package/dist/hooks/projectHookInput.js.map +1 -0
- package/dist/hooks/sessionStart.js +55 -170
- package/dist/hooks/sessionStart.js.map +1 -1
- package/dist/hooks/sessionStop.js +12 -26
- package/dist/hooks/sessionStop.js.map +1 -1
- package/dist/hooks/validateArtifact/agentFacing.js +10 -0
- package/dist/hooks/validateArtifact/agentFacing.js.map +1 -0
- package/dist/hooks/validateArtifact/index.js +151 -0
- package/dist/hooks/validateArtifact/index.js.map +1 -0
- package/dist/hooks/validateArtifact/markdown.js +146 -0
- package/dist/hooks/validateArtifact/markdown.js.map +1 -0
- package/dist/hooks/validateArtifact/runtime.js +86 -0
- package/dist/hooks/validateArtifact/runtime.js.map +1 -0
- package/dist/hooks/validateArtifact/schema.js +541 -0
- package/dist/hooks/validateArtifact/schema.js.map +1 -0
- package/dist/hooks/validateArtifact/traversal.js +108 -0
- package/dist/hooks/validateArtifact/traversal.js.map +1 -0
- package/dist/hooks/validateArtifact/violations.js +108 -0
- package/dist/hooks/validateArtifact/violations.js.map +1 -0
- package/dist/migrate/v2HandoffManifest.js +455 -0
- package/dist/migrate/v2HandoffManifest.js.map +1 -0
- package/dist/registries/artifactProtocolIds.js +77 -0
- package/dist/registries/artifactProtocolIds.js.map +1 -0
- package/dist/registries/artifactRegistry.js +222 -62
- package/dist/registries/artifactRegistry.js.map +1 -1
- package/dist/registries/capabilityContract.js +141 -12
- package/dist/registries/capabilityContract.js.map +1 -1
- package/dist/registries/evaluatorHandoffContract.js +171 -0
- package/dist/registries/evaluatorHandoffContract.js.map +1 -0
- package/dist/registries/evidenceTierContract.js +362 -0
- package/dist/registries/evidenceTierContract.js.map +1 -0
- package/dist/registries/hybridRoute.js +203 -0
- package/dist/registries/hybridRoute.js.map +1 -0
- package/dist/registries/hybridRouteReceipt.js +221 -0
- package/dist/registries/hybridRouteReceipt.js.map +1 -0
- package/dist/registries/packageRegistry.js +90 -230
- package/dist/registries/packageRegistry.js.map +1 -1
- package/dist/registries/triggerLoader.js +175 -0
- package/dist/registries/triggerLoader.js.map +1 -0
- package/dist/registries/verbosityBudgetContract.js +206 -0
- package/dist/registries/verbosityBudgetContract.js.map +1 -0
- package/dist/release/releaseMetadata.js +319 -0
- package/dist/release/releaseMetadata.js.map +1 -0
- package/dist/runtime/lifecycleAdapterContract.js +458 -0
- package/dist/runtime/lifecycleAdapterContract.js.map +1 -0
- package/dist/runtime/lifecycleAdapters.js +778 -0
- package/dist/runtime/lifecycleAdapters.js.map +1 -0
- package/dist/runtime/lifecycleAuthority.js +454 -0
- package/dist/runtime/lifecycleAuthority.js.map +1 -0
- package/dist/runtime/lifecycleOperationContract.js +114 -0
- package/dist/runtime/lifecycleOperationContract.js.map +1 -0
- package/dist/runtime/lifecycleOperations.js +635 -0
- package/dist/runtime/lifecycleOperations.js.map +1 -0
- package/dist/runtime/lifecycleOwnershipJournal.js +623 -0
- package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -0
- package/dist/runtime/lifecyclePublication.js +416 -0
- package/dist/runtime/lifecyclePublication.js.map +1 -0
- package/dist/runtime/lifecycleSnapshot.js +439 -0
- package/dist/runtime/lifecycleSnapshot.js.map +1 -0
- package/dist/runtime/nativeResourceCleanup.js +317 -0
- package/dist/runtime/nativeResourceCleanup.js.map +1 -0
- package/dist/setup/codex/cli.js +130 -0
- package/dist/setup/codex/cli.js.map +1 -0
- package/dist/setup/codex/configToml.js +558 -0
- package/dist/setup/codex/configToml.js.map +1 -0
- package/dist/setup/codex/constants.js +14 -0
- package/dist/setup/codex/constants.js.map +1 -0
- package/dist/setup/codex/installRoot.js +64 -0
- package/dist/setup/codex/installRoot.js.map +1 -0
- package/dist/setup/codex/state.js +252 -0
- package/dist/setup/codex/state.js.map +1 -0
- package/dist/setup/codex.js +9 -1055
- package/dist/setup/codex.js.map +1 -1
- package/dist/setup/opencode.js +21 -0
- package/dist/setup/opencode.js.map +1 -0
- package/dist/setup/opencodeConstants.js +2 -0
- package/dist/setup/opencodeConstants.js.map +1 -0
- package/dist/setup/sharedSkill.js +46 -0
- package/dist/setup/sharedSkill.js.map +1 -0
- package/dist/setup/smokeChecks.js +82 -0
- package/dist/setup/smokeChecks.js.map +1 -0
- package/dist/state/archiveDiscovery.js +578 -0
- package/dist/state/archiveDiscovery.js.map +1 -0
- package/dist/state/archivePublication.js +226 -0
- package/dist/state/archivePublication.js.map +1 -0
- package/dist/state/archiveRecovery.js +238 -0
- package/dist/state/archiveRecovery.js.map +1 -0
- package/dist/state/archiveReplay.js +54 -0
- package/dist/state/archiveReplay.js.map +1 -0
- package/dist/state/canonicalMigrationRecord.js +37 -0
- package/dist/state/canonicalMigrationRecord.js.map +1 -0
- package/dist/state/decisionEntities.js +322 -0
- package/dist/state/decisionEntities.js.map +1 -0
- package/dist/state/decisionLegacyValidation.js +216 -0
- package/dist/state/decisionLegacyValidation.js.map +1 -0
- package/dist/state/decisionMigrationProvenance.js +117 -0
- package/dist/state/decisionMigrationProvenance.js.map +1 -0
- package/dist/state/decisionOverlay.js +278 -0
- package/dist/state/decisionOverlay.js.map +1 -0
- package/dist/state/decisionRevision.js +632 -0
- package/dist/state/decisionRevision.js.map +1 -0
- package/dist/state/decisionRevisionPublication.js +532 -0
- package/dist/state/decisionRevisionPublication.js.map +1 -0
- package/dist/state/directRetrieval.js +373 -0
- package/dist/state/directRetrieval.js.map +1 -0
- package/dist/state/durability.js +325 -0
- package/dist/state/durability.js.map +1 -0
- package/dist/state/entityCutover.js +294 -0
- package/dist/state/entityCutover.js.map +1 -0
- package/dist/state/entityCutoverGit.js +128 -0
- package/dist/state/entityCutoverGit.js.map +1 -0
- package/dist/state/entityMigrationCausality.js +99 -0
- package/dist/state/entityMigrationCausality.js.map +1 -0
- package/dist/state/entityMigrationPreview.js +864 -0
- package/dist/state/entityMigrationPreview.js.map +1 -0
- package/dist/state/entityPublicationContext.js +662 -0
- package/dist/state/entityPublicationContext.js.map +1 -0
- package/dist/state/entityStorage.js +881 -0
- package/dist/state/entityStorage.js.map +1 -0
- package/dist/state/experimentArchive.js +64 -0
- package/dist/state/experimentArchive.js.map +1 -0
- package/dist/state/experimentIdentity.js +203 -0
- package/dist/state/experimentIdentity.js.map +1 -0
- package/dist/state/experimentRetrieval.js +447 -0
- package/dist/state/experimentRetrieval.js.map +1 -0
- package/dist/state/healthEntities.js +266 -0
- package/dist/state/healthEntities.js.map +1 -0
- package/dist/state/healthEntityValidation.js +19 -0
- package/dist/state/healthEntityValidation.js.map +1 -0
- package/dist/state/healthRepair.js +70 -0
- package/dist/state/healthRepair.js.map +1 -0
- package/dist/state/installRoot.js +64 -24
- package/dist/state/installRoot.js.map +1 -1
- package/dist/state/legacyEntityCutoverEvidence.js +66 -0
- package/dist/state/legacyEntityCutoverEvidence.js.map +1 -0
- package/dist/state/legacyIdentity.js +48 -0
- package/dist/state/legacyIdentity.js.map +1 -0
- package/dist/state/legacySummaryRecord.js +7 -0
- package/dist/state/legacySummaryRecord.js.map +1 -0
- package/dist/state/listAccounting.js +55 -0
- package/dist/state/listAccounting.js.map +1 -0
- package/dist/state/listClassification.js +18 -0
- package/dist/state/listClassification.js.map +1 -0
- package/dist/state/listCursor.js +43 -0
- package/dist/state/listCursor.js.map +1 -0
- package/dist/state/listRetrieval.js +813 -0
- package/dist/state/listRetrieval.js.map +1 -0
- package/dist/state/migrationSourceBinding.js +31 -0
- package/dist/state/migrationSourceBinding.js.map +1 -0
- package/dist/state/objectiveExperimentEntities.js +323 -0
- package/dist/state/objectiveExperimentEntities.js.map +1 -0
- package/dist/state/planEntities.js +444 -0
- package/dist/state/planEntities.js.map +1 -0
- package/dist/state/planIdentity.js +45 -0
- package/dist/state/planIdentity.js.map +1 -0
- package/dist/state/planRetrieval.js +314 -0
- package/dist/state/planRetrieval.js.map +1 -0
- package/dist/state/planTaskRetrieval.js +285 -0
- package/dist/state/planTaskRetrieval.js.map +1 -0
- package/dist/state/progressEntities.js +360 -0
- package/dist/state/progressEntities.js.map +1 -0
- package/dist/state/projectRoot.js +63 -0
- package/dist/state/projectRoot.js.map +1 -0
- package/dist/state/projectionPolicy.js +184 -0
- package/dist/state/projectionPolicy.js.map +1 -0
- package/dist/state/retrievalAuthority.js +343 -0
- package/dist/state/retrievalAuthority.js.map +1 -0
- package/dist/state/safeProjectFile.js +153 -0
- package/dist/state/safeProjectFile.js.map +1 -0
- package/dist/state/startupAnalysis/benchmark.js +433 -0
- package/dist/state/startupAnalysis/benchmark.js.map +1 -0
- package/dist/state/startupAnalysis/contract.js +126 -0
- package/dist/state/startupAnalysis/contract.js.map +1 -0
- package/dist/state/startupAnalysis/helpers.js +287 -0
- package/dist/state/startupAnalysis/helpers.js.map +1 -0
- package/dist/state/startupAnalysis/index.js +7 -0
- package/dist/state/startupAnalysis/index.js.map +1 -0
- package/dist/state/startupAnalysis/metrics.js +341 -0
- package/dist/state/startupAnalysis/metrics.js.map +1 -0
- package/dist/state/startupAnalysis/records.js +199 -0
- package/dist/state/startupAnalysis/records.js.map +1 -0
- package/dist/state/startupAnalysis/report.js +112 -0
- package/dist/state/startupAnalysis/report.js.map +1 -0
- package/dist/state/startupAnalysis/threshold.js +513 -0
- package/dist/state/startupAnalysis/threshold.js.map +1 -0
- package/dist/state/startupAnalysis.js +2 -1952
- package/dist/state/startupAnalysis.js.map +1 -1
- package/dist/state/startupProjection.js +567 -0
- package/dist/state/startupProjection.js.map +1 -0
- package/dist/state/stateMode.js +83 -0
- package/dist/state/stateMode.js.map +1 -0
- package/dist/state/summaryEntityRead.js +26 -0
- package/dist/state/summaryEntityRead.js.map +1 -0
- package/dist/state/summaryMigrationProvenance.js +67 -0
- package/dist/state/summaryMigrationProvenance.js.map +1 -0
- package/dist/state/summarySourceRowAuthority.js +37 -0
- package/dist/state/summarySourceRowAuthority.js.map +1 -0
- package/dist/state/todoDocsEntities.js +230 -0
- package/dist/state/todoDocsEntities.js.map +1 -0
- package/dist/state/todoDocsEntityValidation.js +26 -0
- package/dist/state/todoDocsEntityValidation.js.map +1 -0
- package/dist/state/write/assign.js +21 -0
- package/dist/state/write/assign.js.map +1 -0
- package/dist/state/write/candidateMutation.js +281 -0
- package/dist/state/write/candidateMutation.js.map +1 -0
- package/dist/state/write/errors.js +12 -0
- package/dist/state/write/errors.js.map +1 -0
- package/dist/state/write/experimentPublication.js +193 -0
- package/dist/state/write/experimentPublication.js.map +1 -0
- package/dist/state/write/explain.js +291 -0
- package/dist/state/write/explain.js.map +1 -0
- package/dist/state/write/fields.js +62 -0
- package/dist/state/write/fields.js.map +1 -0
- package/dist/state/write/helpers.js +30 -0
- package/dist/state/write/helpers.js.map +1 -0
- package/dist/state/write/index.js +12 -0
- package/dist/state/write/index.js.map +1 -0
- package/dist/state/write/input.js +22 -0
- package/dist/state/write/input.js.map +1 -0
- package/dist/state/write/lock.js +838 -0
- package/dist/state/write/lock.js.map +1 -0
- package/dist/state/write/mutation.js +235 -0
- package/dist/state/write/mutation.js.map +1 -0
- package/dist/state/write/operations.js +353 -0
- package/dist/state/write/operations.js.map +1 -0
- package/dist/state/write/planEvaluation.js +121 -0
- package/dist/state/write/planEvaluation.js.map +1 -0
- package/dist/state/write/planPublication.js +135 -0
- package/dist/state/write/planPublication.js.map +1 -0
- package/dist/state/write/serialize.js +2 -0
- package/dist/state/write/serialize.js.map +1 -0
- package/dist/state/write/transaction.js +44 -0
- package/dist/state/write/transaction.js.map +1 -0
- package/dist/state/write/validate.js +8 -0
- package/dist/state/write/validate.js.map +1 -0
- package/dist/upgrade/appContentRefresh.js +384 -0
- package/dist/upgrade/appContentRefresh.js.map +1 -0
- package/dist/upgrade/appModel.js +8 -6
- package/dist/upgrade/appModel.js.map +1 -1
- package/dist/upgrade/atomicWriter.js +2 -0
- package/dist/upgrade/atomicWriter.js.map +1 -0
- package/dist/upgrade/bundleEvidence.js +34 -0
- package/dist/upgrade/bundleEvidence.js.map +1 -0
- package/dist/upgrade/channels.js +21 -10
- package/dist/upgrade/channels.js.map +1 -1
- package/dist/upgrade/coexistenceProbe.js +105 -0
- package/dist/upgrade/coexistenceProbe.js.map +1 -0
- package/dist/upgrade/compatibility.js +56 -20
- package/dist/upgrade/compatibility.js.map +1 -1
- package/dist/upgrade/doctor.js +197 -191
- package/dist/upgrade/doctor.js.map +1 -1
- package/dist/upgrade/doctorClassifier.js +188 -0
- package/dist/upgrade/doctorClassifier.js.map +1 -0
- package/dist/upgrade/installedHooksRetirement.js +197 -0
- package/dist/upgrade/installedHooksRetirement.js.map +1 -0
- package/dist/upgrade/legacyAgentCleanup.js +283 -0
- package/dist/upgrade/legacyAgentCleanup.js.map +1 -0
- package/dist/upgrade/lifecycleUpgrade.js +114 -0
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +363 -137
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
- package/dist/upgrade/migrationPublication.js +123 -0
- package/dist/upgrade/migrationPublication.js.map +1 -0
- package/dist/upgrade/nextMajorDoctor.js +156 -0
- package/dist/upgrade/nextMajorDoctor.js.map +1 -0
- package/dist/upgrade/npxPlatformStatus.js +23 -0
- package/dist/upgrade/npxPlatformStatus.js.map +1 -0
- package/dist/upgrade/projectIntegration.js +142 -171
- package/dist/upgrade/projectIntegration.js.map +1 -1
- package/dist/upgrade/projectIntegrationDecision.js +51 -0
- package/dist/upgrade/projectIntegrationDecision.js.map +1 -0
- package/dist/upgrade/runtimeMigration.js +336 -281
- package/dist/upgrade/runtimeMigration.js.map +1 -1
- package/dist/upgrade/upgradeCommands.js +9 -0
- package/dist/upgrade/upgradeCommands.js.map +1 -1
- package/dist/upgrade/upgradeLock.js +86 -0
- package/dist/upgrade/upgradeLock.js.map +1 -0
- package/dist/upgrade/upgradeOrchestrator.js +212 -56
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/dist/upgrade/v3CapabilitySurface.js +15 -0
- package/dist/upgrade/v3CapabilitySurface.js.map +1 -0
- package/dist/upgrade/versionResolution.js +12 -4
- package/dist/upgrade/versionResolution.js.map +1 -1
- package/dist/validate/appHomeContract.js +5 -9
- package/dist/validate/appHomeContract.js.map +1 -1
- package/dist/validate/capability.js +144 -14
- package/dist/validate/capability.js.map +1 -1
- package/dist/validate/crossCapability.js +12 -9
- package/dist/validate/crossCapability.js.map +1 -1
- package/dist/validate/selfAudit.js +73 -36
- package/dist/validate/selfAudit.js.map +1 -1
- package/dist/validate/vocabularyAuthority.js +303 -0
- package/dist/validate/vocabularyAuthority.js.map +1 -0
- package/package.json +45 -27
- package/bundle/references/adapters/cursor.md +0 -213
- package/bundle/references/adapters/opencode.md +0 -530
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
- package/bundle/references/adapters/runtime-feature-parity.md +0 -189
- package/bundle/references/v1-section-mapping.md +0 -47
- package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
- package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
- package/bundle/skills/agentera/agents/hej.toml +0 -6
- package/bundle/skills/agentera/agents/inspektera.toml +0 -6
- package/bundle/skills/agentera/agents/inspirera.toml +0 -6
- package/bundle/skills/agentera/agents/optimera.toml +0 -6
- package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
- package/bundle/skills/agentera/agents/planera.toml +0 -6
- package/bundle/skills/agentera/agents/profilera.toml +0 -6
- package/bundle/skills/agentera/agents/realisera.toml +0 -6
- package/bundle/skills/agentera/agents/resonera.toml +0 -6
- package/bundle/skills/agentera/agents/visionera.toml +0 -6
- package/bundle/skills/agentera/agents/visualisera.toml +0 -6
- package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
- package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
- package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
- package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
- package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
- package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
- package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
- package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
- package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
- package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
- package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
- package/bundle/skills/hej/SKILL.md +0 -69
- package/bundle/skills/hej/agents/hej.toml +0 -11
- package/bundle/skills/hej/agents/openai.yaml +0 -8
- package/dist/cli/commands/backfill.js +0 -84
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/state.js +0 -1012
- package/dist/cli/commands/state.js.map +0 -1
- package/dist/core/git.js +0 -43
- package/dist/core/git.js.map +0 -1
- package/dist/hooks/compaction.js +0 -935
- package/dist/hooks/compaction.js.map +0 -1
- package/dist/hooks/validateArtifact.js +0 -933
- package/dist/hooks/validateArtifact.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -315
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -127
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/doctor.js +0 -1276
- package/dist/setup/doctor.js.map +0 -1
- package/dist/state/progressCommit.js +0 -289
- package/dist/state/progressCommit.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -772
- package/dist/validate/lifecycleAdapters.js.map +0 -1
- /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
- /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
5
|
+
import { loadYamlMapping } from "../core/yaml.js";
|
|
6
|
+
import { canonicalRecordJson, decisionOverlayContract } from "./archiveDiscovery.js";
|
|
7
|
+
import { serializedProjectionBytes } from "./projectionPolicy.js";
|
|
8
|
+
import { requestedSatisfaction, validateTransition } from "./decisionOverlay.js";
|
|
9
|
+
import { decisionRevisionContract } from "./decisionRevision.js";
|
|
10
|
+
import { decisionLegacyCoexistence, knownLegacyConfidenceCaveat } from "./decisionLegacyValidation.js";
|
|
11
|
+
import { StateRetrievalFailure } from "./directRetrieval.js";
|
|
12
|
+
import { allocateAndPublishEntity, allocateEntityId, assertEntityDiscoveryOrigin, discoverEntities, publishEntity, replaceEntity } from "./entityStorage.js";
|
|
13
|
+
import { localDate } from "./write/assign.js";
|
|
14
|
+
import { detailMetadata, detailProvenance, isSummaryEntity } from "./summaryEntityRead.js";
|
|
15
|
+
import { decodeListCursor, encodeListCursor, projectedListSnapshot } from "./listCursor.js";
|
|
16
|
+
const ARTIFACT = "decisions";
|
|
17
|
+
const BASE = "decision";
|
|
18
|
+
const SUMMARY = "decision_summary";
|
|
19
|
+
const SATISFACTION = "decision_satisfaction";
|
|
20
|
+
const REVISION = "decision_revision";
|
|
21
|
+
const ORDER = "date_desc_then_id_asc";
|
|
22
|
+
const ID_PATTERN = /^[a-z]{10}$/;
|
|
23
|
+
function mapping(value) { return value !== null && typeof value === "object" && !Array.isArray(value); }
|
|
24
|
+
function requiredText(value, field) {
|
|
25
|
+
if (typeof value !== "string" || value.length === 0)
|
|
26
|
+
throw new Error(`decision entity requires ${field}`);
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function contract(sourceRoot = resolveSourceRoot()) {
|
|
30
|
+
const authorityPath = path.join(sourceRoot, "references/artifacts/state-storage-authority.yaml");
|
|
31
|
+
const authority = loadYamlMapping(fs.readFileSync(authorityPath, "utf8"));
|
|
32
|
+
const target = mapping(authority.entity_target) ? authority.entity_target : {};
|
|
33
|
+
const storage = mapping(target.storage_boundary) && mapping(target.storage_boundary.shared_primitives) ? target.storage_boundary.shared_primitives : {};
|
|
34
|
+
const entities = Array.isArray(target.entities) ? target.entities : [];
|
|
35
|
+
const base = entities.find((value) => mapping(value) && value.boundary === BASE);
|
|
36
|
+
const retrieval = mapping(base) && mapping(base.retrieval) ? base.retrieval : {};
|
|
37
|
+
const number = (value, field) => {
|
|
38
|
+
const result = Number(value);
|
|
39
|
+
if (!Number.isSafeInteger(result) || result < 1)
|
|
40
|
+
throw new Error(`invalid decisions entity ${field} authority`);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
return { authorityPath, entityRoot: requiredText(storage.canonical_root, "canonical_root"), defaultLimit: number(retrieval.default_limit, "default_limit"), maximumLimit: number(retrieval.maximum_limit, "maximum_limit"), maxUtf8Bytes: number(retrieval.max_utf8_bytes, "max_utf8_bytes") };
|
|
44
|
+
}
|
|
45
|
+
function failure(kind, message, recovery, id) {
|
|
46
|
+
return new StateRetrievalFailure({ schemaVersion: "agentera.stateFailure.v1", status: "fail", error: { class: kind, message, syntax: "agentera state decisions get --id ID --format json", example: `agentera state decisions get --id ${id ?? "qjtrmnpvka"} --format json`, recovery, artifact: ARTIFACT, ...(id ? { id } : {}) } }, kind === "invalid_request" ? 2 : 1);
|
|
47
|
+
}
|
|
48
|
+
function summaryMutationFailure(id, verb) {
|
|
49
|
+
const syntax = verb === "amend"
|
|
50
|
+
? "agentera state decisions amend --id ID --base-sha256 SHA256 --choice TEXT --format json"
|
|
51
|
+
: "agentera state decisions update --id ID --satisfaction-state STATE --format json";
|
|
52
|
+
return new StateRetrievalFailure({
|
|
53
|
+
schemaVersion: "agentera.stateFailure.v1",
|
|
54
|
+
status: "fail",
|
|
55
|
+
error: {
|
|
56
|
+
class: "unsupported_state",
|
|
57
|
+
message: `decision '${id}' is an immutable migrated summary: incomplete historical evidence is read-only`,
|
|
58
|
+
syntax,
|
|
59
|
+
example: `agentera state decisions get --id ${id} --format json`,
|
|
60
|
+
recovery: `Run agentera state decisions get --id ${id} --format json to inspect retained evidence and caveats. For new deliberation, run agentera state decisions append --question "..." --context "..." --alternative-chosen "..." --choice "..." --reasoning "..." --confidence firm --format json.`,
|
|
61
|
+
artifact: ARTIFACT,
|
|
62
|
+
id,
|
|
63
|
+
},
|
|
64
|
+
}, 1);
|
|
65
|
+
}
|
|
66
|
+
function relative(root, file) { return path.relative(path.resolve(root), file).split(path.sep).join("/"); }
|
|
67
|
+
function entityRecord(values) {
|
|
68
|
+
const alternatives = mapping(values.alternatives) ? values.alternatives : {};
|
|
69
|
+
const chosen = requiredText(alternatives.chosen, "alternatives.chosen");
|
|
70
|
+
const rejected = Array.isArray(alternatives.rejected) ? alternatives.rejected.map(String) : [];
|
|
71
|
+
const record = {
|
|
72
|
+
date: typeof values.date === "string" ? values.date : localDate(),
|
|
73
|
+
question: requiredText(values.question, "question"),
|
|
74
|
+
context: requiredText(values.context, "context"),
|
|
75
|
+
alternatives: [{ name: chosen, status: "chosen" }, ...rejected.map((name) => ({ name, status: "rejected" }))],
|
|
76
|
+
choice: requiredText(values.choice, "choice"), reasoning: requiredText(values.reasoning, "reasoning"), confidence: requiredText(values.confidence, "confidence"),
|
|
77
|
+
};
|
|
78
|
+
if (typeof values.feeds_into === "string")
|
|
79
|
+
record.feeds_into = values.feeds_into;
|
|
80
|
+
return record;
|
|
81
|
+
}
|
|
82
|
+
function envelope(command, published, record, dryRun = false) {
|
|
83
|
+
return { schemaVersion: "agentera.stateWrite.v1", command, status: "pass", path: published.path, id: published.id, artifact: published.artifact, record, operation: { verb: command.split(" ").at(-1), dry_run: dryRun, idempotent_replay: published.replay }, validation: { status: "pass", violations: [] } };
|
|
84
|
+
}
|
|
85
|
+
function publish(req, boundary, record, options) {
|
|
86
|
+
const sourceRoot = options.sourceRoot ?? resolveSourceRoot();
|
|
87
|
+
if (req.dryRun) {
|
|
88
|
+
const id = options.id ?? allocateEntityId(options.publicationContext?.pinnedPath() ?? req.projectRoot, options.candidate, sourceRoot);
|
|
89
|
+
return envelope(`state decisions ${req.spec.verb}`, { id, artifact: ARTIFACT, path: path.join(req.projectRoot, contract(sourceRoot).entityRoot, ARTIFACT, boundary, `${id}.yaml`), replay: false }, record, true);
|
|
90
|
+
}
|
|
91
|
+
const result = options.id
|
|
92
|
+
? publishEntity({ projectRoot: req.projectRoot, sourceRoot, publicationContext: options.publicationContext, artifact: ARTIFACT, boundary, id: options.id, record })
|
|
93
|
+
: allocateAndPublishEntity({ projectRoot: req.projectRoot, sourceRoot, publicationContext: options.publicationContext, artifact: ARTIFACT, boundary, record }, options.candidate);
|
|
94
|
+
return envelope(`state decisions ${req.spec.verb}`, result, record);
|
|
95
|
+
}
|
|
96
|
+
export function appendDecisionEntity(req, options = {}) { return publish(req, BASE, entityRecord(req.values), options); }
|
|
97
|
+
function decisionEntities(root, sourceRoot, supplied) {
|
|
98
|
+
if (supplied)
|
|
99
|
+
assertEntityDiscoveryOrigin(root, sourceRoot, supplied);
|
|
100
|
+
const discovery = supplied ?? discoverEntities(root, sourceRoot);
|
|
101
|
+
const relevant = discovery.entities.filter((entity) => entity.artifact === ARTIFACT || [BASE, SUMMARY, SATISFACTION, REVISION].includes(entity.boundary ?? ""));
|
|
102
|
+
const bad = relevant.find((entity) => entity.classification !== "valid" || !entity.id || !entity.record);
|
|
103
|
+
if (bad)
|
|
104
|
+
throw failure(bad.classification === "duplicate" ? "ambiguous" : "corrupt", `decision entity '${bad.relativePath}' is not canonical`, "Run agentera check validate state, preserve conflicting values, and repair the entity files.", bad.id ?? undefined);
|
|
105
|
+
return relevant;
|
|
106
|
+
}
|
|
107
|
+
function baseFor(root, id, sourceRoot, mutation) {
|
|
108
|
+
if (!ID_PATTERN.test(id))
|
|
109
|
+
throw failure("invalid_request", `decision ID '${id}' must be ten lowercase letters`, "Use an ID returned by decisions append or list.", id);
|
|
110
|
+
const all = decisionEntities(root, sourceRoot);
|
|
111
|
+
const summary = all.find((entity) => entity.id === id && entity.boundary === SUMMARY);
|
|
112
|
+
if (summary)
|
|
113
|
+
throw mutation ? summaryMutationFailure(id, mutation) : failure("unsupported_state", `decision '${id}' is an immutable migrated summary: incomplete historical evidence is read-only`, "Use agentera state decisions get --id " + id + " --format json to inspect its retained caveat and provenance.", id);
|
|
114
|
+
const matches = all.filter((entity) => entity.id === id && entity.boundary === BASE);
|
|
115
|
+
if (matches.length !== 1)
|
|
116
|
+
throw failure(matches.length ? "ambiguous" : "not_found", matches.length ? `decision ID '${id}' has multiple base entities` : `decision ID '${id}' was not found`, "Run agentera check validate state and resolve duplicate ownership, or use an ID returned by list.", id);
|
|
117
|
+
return { base: matches[0], all };
|
|
118
|
+
}
|
|
119
|
+
function applyChanges(record, changes) {
|
|
120
|
+
const result = structuredClone(record);
|
|
121
|
+
for (const [field, value] of Object.entries(changes)) {
|
|
122
|
+
if (field === "alternatives.chosen" || field === "alternatives.rejected") {
|
|
123
|
+
const alternatives = Array.isArray(result.alternatives) ? structuredClone(result.alternatives).filter(mapping) : [];
|
|
124
|
+
if (field.endsWith("chosen")) {
|
|
125
|
+
const chosen = alternatives.find((entry) => entry.status === "chosen");
|
|
126
|
+
if (chosen)
|
|
127
|
+
chosen.name = structuredClone(value);
|
|
128
|
+
else
|
|
129
|
+
alternatives.unshift({ name: structuredClone(value), status: "chosen" });
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const names = Array.isArray(value) ? value.map(String) : [String(value)];
|
|
133
|
+
for (const name of names)
|
|
134
|
+
if (!alternatives.some((entry) => entry.status === "rejected" && entry.name === name))
|
|
135
|
+
alternatives.push({ name, status: "rejected" });
|
|
136
|
+
}
|
|
137
|
+
result.alternatives = alternatives;
|
|
138
|
+
}
|
|
139
|
+
else
|
|
140
|
+
result[field] = structuredClone(value);
|
|
141
|
+
}
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
function compose(root, base, all, sourceRoot) {
|
|
145
|
+
let effective = structuredClone(base.record);
|
|
146
|
+
let hash = createHash("sha256").update(canonicalRecordJson(effective)).digest("hex");
|
|
147
|
+
const revisions = [];
|
|
148
|
+
const candidates = all.filter((entity) => entity.boundary === REVISION && entity.record?.decision === base.id);
|
|
149
|
+
const unused = new Set(candidates);
|
|
150
|
+
while (true) {
|
|
151
|
+
const next = [...unused].filter((entity) => entity.record?.base_sha256 === hash);
|
|
152
|
+
if (next.length > 1)
|
|
153
|
+
throw failure("ambiguous", `decision '${base.id}' has competing revisions for base ${hash}`, "Preserve both revision entities and resolve their ownership explicitly.", base.id);
|
|
154
|
+
if (next.length === 0)
|
|
155
|
+
break;
|
|
156
|
+
const revision = next[0];
|
|
157
|
+
unused.delete(revision);
|
|
158
|
+
if (!mapping(revision.record.changes))
|
|
159
|
+
throw failure("corrupt", `decision revision '${revision.id}' has invalid changes`, "Repair the canonical revision entity.", base.id);
|
|
160
|
+
effective = applyChanges(effective, revision.record.changes);
|
|
161
|
+
hash = createHash("sha256").update(canonicalRecordJson(effective)).digest("hex");
|
|
162
|
+
revisions.push({ id: revision.id, artifact: ARTIFACT, base_sha256: revision.record.base_sha256, effective_sha256: hash, fields: Object.keys(revision.record.changes), path: relative(root, revision.path) });
|
|
163
|
+
}
|
|
164
|
+
if (unused.size)
|
|
165
|
+
throw failure("ambiguous", `decision '${base.id}' has stale or disconnected revision ownership`, "Preserve every revision and repair the revision chain explicitly.", base.id);
|
|
166
|
+
const satisfactions = all.filter((entity) => entity.boundary === SATISFACTION && entity.record?.decision === base.id);
|
|
167
|
+
if (satisfactions.length > 1)
|
|
168
|
+
throw failure("ambiguous", `decision '${base.id}' has competing satisfaction owners`, "Preserve both satisfaction entities and resolve ownership explicitly.", base.id);
|
|
169
|
+
let satisfactionProvenance = null;
|
|
170
|
+
if (satisfactions[0]) {
|
|
171
|
+
const { decision: _decision, ...satisfaction } = satisfactions[0].record;
|
|
172
|
+
effective.satisfaction = satisfaction;
|
|
173
|
+
satisfactionProvenance = { id: satisfactions[0].id, artifact: ARTIFACT, path: relative(root, satisfactions[0].path) };
|
|
174
|
+
}
|
|
175
|
+
const inherited = base.migrationProvenance;
|
|
176
|
+
const caveatSource = inherited?.source === "verified_archive" ? "archive" : "active";
|
|
177
|
+
const legacyCaveat = inherited?.kind === "inherited_decision_confidence" && inherited.confidence === effective.confidence
|
|
178
|
+
? knownLegacyConfidenceCaveat(effective, decisionLegacyCoexistence(sourceRoot), caveatSource)
|
|
179
|
+
: null;
|
|
180
|
+
return { id: base.id, artifact: ARTIFACT, ...detailMetadata(base), record: effective, effective_sha256: hash, provenance: { ...detailProvenance(relative(root, base.path), base), base: { id: base.id, artifact: ARTIFACT, path: relative(root, base.path), ...(inherited ? { migration_provenance: inherited } : {}) }, revisions, satisfaction: satisfactionProvenance }, ...(legacyCaveat ? { caveats: [legacyCaveat.caveat] } : {}), retrieval: { get: `agentera state decisions get --id ${base.id} --format json` } };
|
|
181
|
+
}
|
|
182
|
+
export function getDecisionEntity(root, id, sourceRoot = resolveSourceRoot()) {
|
|
183
|
+
if (!ID_PATTERN.test(id))
|
|
184
|
+
throw failure("invalid_request", `decision ID '${id}' must be ten lowercase letters`, "Use an ID returned by decisions append or list.", id);
|
|
185
|
+
const all = decisionEntities(root, sourceRoot);
|
|
186
|
+
const summary = all.filter((entity) => entity.id === id && entity.boundary === SUMMARY);
|
|
187
|
+
const bases = all.filter((entity) => entity.id === id && entity.boundary === BASE);
|
|
188
|
+
if (summary.length || bases.length > 1) {
|
|
189
|
+
if (summary.length !== 1 || bases.length)
|
|
190
|
+
throw failure("ambiguous", `decision ID '${id}' has multiple base entities`, "Run agentera check validate state and resolve duplicate ownership.", id);
|
|
191
|
+
const entity = summary[0];
|
|
192
|
+
return { schemaVersion: "agentera.stateRetrieval.v1", command: "state decisions get", status: "degraded", entry: { id, artifact: ARTIFACT, ...detailMetadata(entity), record: entity.record, provenance: detailProvenance(relative(root, entity.path), entity), retrieval: { get: `agentera state decisions get --id ${id} --format json` } }, source: { artifact: ARTIFACT, authority: "canonical_entity_files" }, source_contract: { authority: "references/artifacts/state-storage-authority.yaml", detail: "summary" } };
|
|
193
|
+
}
|
|
194
|
+
if (bases.length !== 1)
|
|
195
|
+
throw failure("not_found", `decision ID '${id}' was not found`, "Run agentera state decisions list --format json and retry with a returned ID.", id);
|
|
196
|
+
return { schemaVersion: "agentera.stateRetrieval.v1", command: "state decisions get", status: "ok", entry: compose(root, bases[0], all, sourceRoot), source: { artifact: ARTIFACT, authority: "canonical_entity_files" }, source_contract: { authority: "references/artifacts/state-storage-authority.yaml", detail: "full" } };
|
|
197
|
+
}
|
|
198
|
+
export function updateDecisionSatisfactionEntity(req, options = {}) {
|
|
199
|
+
const sourceRoot = options.sourceRoot ?? resolveSourceRoot();
|
|
200
|
+
const id = requiredText(req.values.id, "id");
|
|
201
|
+
const { all } = baseFor(req.projectRoot, id, sourceRoot, "update");
|
|
202
|
+
const owners = all.filter((entity) => entity.boundary === SATISFACTION && entity.record?.decision === id);
|
|
203
|
+
if (owners.length > 1)
|
|
204
|
+
throw failure("ambiguous", `decision '${id}' has competing satisfaction owners`, "Preserve both entities and resolve ownership explicitly.", id);
|
|
205
|
+
const requested = requestedSatisfaction(mapping(req.values.satisfaction) ? req.values.satisfaction : {}, decisionOverlayContract(sourceRoot));
|
|
206
|
+
const current = owners[0];
|
|
207
|
+
const historical = current ? { ...current.record } : undefined;
|
|
208
|
+
if (mapping(historical))
|
|
209
|
+
delete historical.decision;
|
|
210
|
+
validateTransition(requested, historical ? { satisfaction: historical } : undefined, undefined, decisionOverlayContract(sourceRoot));
|
|
211
|
+
const record = { decision: id, ...requested };
|
|
212
|
+
if (!current)
|
|
213
|
+
return publish(req, SATISFACTION, record, options);
|
|
214
|
+
if (req.dryRun)
|
|
215
|
+
return envelope("state decisions update", { id: current.id, artifact: ARTIFACT, path: current.path, replay: canonicalRecordJson(current.record) === canonicalRecordJson(record) }, record, true);
|
|
216
|
+
const result = replaceEntity({ projectRoot: req.projectRoot, sourceRoot, publicationContext: options.publicationContext, artifact: ARTIFACT, boundary: SATISFACTION, id: current.id, expectedRecord: current.record, record });
|
|
217
|
+
return envelope("state decisions update", result, record);
|
|
218
|
+
}
|
|
219
|
+
export function amendDecisionEntity(req, options = {}) {
|
|
220
|
+
const sourceRoot = options.sourceRoot ?? resolveSourceRoot();
|
|
221
|
+
const id = requiredText(req.values.id, "id");
|
|
222
|
+
const expected = requiredText(req.values.base_sha256, "base_sha256");
|
|
223
|
+
const allowed = new Set(decisionRevisionContract(sourceRoot).amendablePaths);
|
|
224
|
+
const changes = {};
|
|
225
|
+
for (const [field, value] of Object.entries(req.values))
|
|
226
|
+
if (!["id", "base_sha256"].includes(field)) {
|
|
227
|
+
if (field === "alternatives" && mapping(value)) {
|
|
228
|
+
for (const [name, alternative] of Object.entries(value)) {
|
|
229
|
+
const target = `alternatives.${name}`;
|
|
230
|
+
if (!allowed.has(target))
|
|
231
|
+
throw failure("invalid_request", `'${target}' is not amendable decision content`, "Use only authority-declared content fields.", id);
|
|
232
|
+
changes[target] = structuredClone(alternative);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
if (!allowed.has(field) || field === "satisfaction")
|
|
237
|
+
throw failure("invalid_request", `'${field}' is not amendable decision content`, "Use only authority-declared content fields; update satisfaction separately.", id);
|
|
238
|
+
changes[field] = structuredClone(value);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (!Object.keys(changes).length)
|
|
242
|
+
throw failure("invalid_request", "decision amendment requires at least one content field", "Supply one amendable content field.", id);
|
|
243
|
+
const { all } = baseFor(req.projectRoot, id, sourceRoot, "amend");
|
|
244
|
+
const existingClaims = all.filter((entity) => entity.boundary === REVISION && entity.record?.decision === id && entity.record?.base_sha256 === expected);
|
|
245
|
+
const replay = existingClaims.find((entity) => canonicalRecordJson(entity.record?.changes) === canonicalRecordJson(changes));
|
|
246
|
+
if (replay)
|
|
247
|
+
return envelope("state decisions amend", { id: replay.id, artifact: ARTIFACT, path: replay.path, replay: true }, replay.record, req.dryRun);
|
|
248
|
+
if (existingClaims.length)
|
|
249
|
+
throw failure("immutable_conflict", `decision '${id}' already has a divergent revision for requested base ${expected}`, "Preserve both requested values and resolve the same-base amendment explicitly.", id);
|
|
250
|
+
const current = getDecisionEntity(req.projectRoot, id, sourceRoot).entry;
|
|
251
|
+
if (current.effective_sha256 !== expected)
|
|
252
|
+
throw failure("immutable_conflict", `decision '${id}' changed from requested base ${expected}`, "Get the decision again, review the effective provenance, and retry with its current effective_sha256.", id);
|
|
253
|
+
const effective = current.record;
|
|
254
|
+
const projected = applyChanges(effective, changes);
|
|
255
|
+
if (canonicalRecordJson(projected) === canonicalRecordJson(effective))
|
|
256
|
+
return { schemaVersion: "agentera.stateWrite.v1", command: "state decisions amend", status: "pass", path: String(current.provenance.base.path), id, artifact: ARTIFACT, record: changes, operation: { verb: "amend", dry_run: req.dryRun, idempotent_replay: true }, validation: { status: "pass", violations: [] } };
|
|
257
|
+
return publish(req, REVISION, { decision: id, date: localDate(), provenance: "historical_revision", base_sha256: expected, changes }, options);
|
|
258
|
+
}
|
|
259
|
+
function key(entity) { return `${String(entity.record.date ?? "")}\0${entity.id}`; }
|
|
260
|
+
function listEntry(root, entity, all, sourceRoot) {
|
|
261
|
+
return entity.boundary === SUMMARY
|
|
262
|
+
? { id: entity.id, artifact: ARTIFACT, ...detailMetadata(entity), record: entity.record, provenance: detailProvenance(relative(root, entity.path), entity), retrieval: { get: `agentera state decisions get --id ${entity.id} --format json` } }
|
|
263
|
+
: compose(root, entity, all, sourceRoot);
|
|
264
|
+
}
|
|
265
|
+
function snapshot(root, bases, all, sourceRoot, topic, entityRoot) {
|
|
266
|
+
return projectedListSnapshot({
|
|
267
|
+
schemaVersion: "agentera.stateList.v1",
|
|
268
|
+
command: "state decisions list",
|
|
269
|
+
order: ORDER,
|
|
270
|
+
filters: { topic: topic ?? null },
|
|
271
|
+
source: { artifact: ARTIFACT, authority: "canonical_entity_files", root: entityRoot },
|
|
272
|
+
source_contract: { authority: "references/artifacts/state-storage-authority.yaml", detail: bases.some(isSummaryEntity) ? "mixed" : "full", cursor: "opaque_snapshot_cursor" },
|
|
273
|
+
entries: bases.map((entity) => listEntry(root, entity, all, sourceRoot)),
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
function encode(payload, root, authorityPath) { return encodeListCursor(payload, root, authorityPath); }
|
|
277
|
+
function decode(token, root, authorityPath) {
|
|
278
|
+
try {
|
|
279
|
+
return decodeListCursor(token, root, authorityPath);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
throw failure("cursor_invalid", "decisions cursor is malformed or belongs to another project", "Copy next_cursor exactly, or omit --cursor to restart.");
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
export function listDecisionEntities(root, limit, topic, cursor, options = {}) {
|
|
286
|
+
const sourceRoot = options.sourceRoot ?? resolveSourceRoot();
|
|
287
|
+
const declared = contract(sourceRoot);
|
|
288
|
+
const effectiveLimit = limit ?? declared.defaultLimit;
|
|
289
|
+
if (!Number.isSafeInteger(effectiveLimit) || effectiveLimit < 1 || effectiveLimit > declared.maximumLimit)
|
|
290
|
+
throw failure("invalid_request", `decisions list limit must be 1..${declared.maximumLimit}`, "Use a limit in the declared range.");
|
|
291
|
+
const all = decisionEntities(root, sourceRoot, options.discovery);
|
|
292
|
+
let bases = all.filter((entity) => [BASE, SUMMARY].includes(entity.boundary ?? "")).sort((a, b) => String(b.record.date ?? "").localeCompare(String(a.record.date ?? "")) || a.id.localeCompare(b.id));
|
|
293
|
+
if (topic) {
|
|
294
|
+
const needle = topic.toLowerCase();
|
|
295
|
+
bases = bases.filter((entity) => canonicalRecordJson(entity.record).toLowerCase().includes(needle));
|
|
296
|
+
}
|
|
297
|
+
const snap = snapshot(root, bases, all, sourceRoot, topic, declared.entityRoot);
|
|
298
|
+
let start = 0;
|
|
299
|
+
if (cursor) {
|
|
300
|
+
const value = decode(cursor, root, declared.authorityPath);
|
|
301
|
+
if (value.version !== 1 || value.artifact !== ARTIFACT || value.order !== ORDER || value.snapshot_id !== snap || value.topic !== (topic ?? null))
|
|
302
|
+
throw failure("cursor_snapshot_unavailable", "decisions changed after this cursor snapshot", "Omit --cursor to restart from the current snapshot.");
|
|
303
|
+
const found = bases.findIndex((entity) => key(entity) === value.after_key);
|
|
304
|
+
if (found < 0)
|
|
305
|
+
throw failure("cursor_snapshot_unavailable", "decisions cursor continuation is unavailable", "Omit --cursor to restart.");
|
|
306
|
+
start = found + 1;
|
|
307
|
+
}
|
|
308
|
+
let selected = bases.slice(start, start + effectiveLimit);
|
|
309
|
+
let trimmed = false;
|
|
310
|
+
const response = () => { const remaining = bases.length - start - selected.length; const next = remaining && selected.length ? encode({ version: 1, artifact: ARTIFACT, order: ORDER, snapshot_id: snap, topic: topic ?? null, after_key: key(selected.at(-1)) }, root, declared.authorityPath) : undefined; return { schemaVersion: "agentera.stateList.v1", command: "state decisions list", status: remaining || bases.some(isSummaryEntity) ? "degraded" : "ok", entries: selected.map((entity) => listEntry(root, entity, all, sourceRoot)), counts: { total: bases.length, returned: selected.length, remaining }, filters: { topic: topic ?? null }, snapshot: { id: snap, first_page: !cursor, order: ORDER, has_more: Boolean(remaining), candidate_count: bases.length }, source: { artifact: ARTIFACT, authority: "canonical_entity_files", root: declared.entityRoot }, source_contract: { authority: "references/artifacts/state-storage-authority.yaml", detail: bases.some(isSummaryEntity) ? "mixed" : "full", cursor: "opaque_snapshot_cursor" }, ...(remaining ? { omitted: true, omitted_count: remaining, omission_reason: trimmed ? "serialized_byte_budget" : "page_limit", next_cursor: next, retrieval: { continue: `agentera state decisions list --limit ${effectiveLimit} --cursor ${next} --format json`, get: "agentera state decisions get --id ID --format json" } } : {}) }; };
|
|
311
|
+
let result = response();
|
|
312
|
+
const bytes = () => serializedProjectionBytes(result, options.format === "text" ? "yaml" : options.format ?? "json");
|
|
313
|
+
while (bytes() > declared.maxUtf8Bytes && selected.length) {
|
|
314
|
+
selected = selected.slice(0, -1);
|
|
315
|
+
trimmed = true;
|
|
316
|
+
result = response();
|
|
317
|
+
}
|
|
318
|
+
if (!selected.length && bases.length > start)
|
|
319
|
+
throw failure("unsupported_state", `one full decision cannot fit the ${declared.maxUtf8Bytes}-byte list budget`, "Use exact get by ID.");
|
|
320
|
+
return result;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=decisionEntities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionEntities.js","sourceRoot":"","sources":["../../../../../home/jgabor/git/agentera/packages/cli/src/state/decisionEntities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task 4: enforce legacy coexistence across decision mutations.
|
|
3
|
+
*
|
|
4
|
+
* The whole-artifact validation gate validates the entire decisions artifact
|
|
5
|
+
* bytes. An untouched inherited record carrying a legacy confidence label
|
|
6
|
+
* (e.g. `high`) is unsupported by the decisions schema, so the strict gate
|
|
7
|
+
* blocked append, satisfaction update, and amend even when the operation never
|
|
8
|
+
* touched the legacy record.
|
|
9
|
+
*
|
|
10
|
+
* The authority's `compatibility.legacy_label_coexistence` rule (read through
|
|
11
|
+
* `legacyLabelCoexistence`) classifies an unsupported inherited label on a
|
|
12
|
+
* record the caller did not touch as explicit legacy state: it is preserved
|
|
13
|
+
* byte- and value-semantically, reported as a caveat, never coerced to the
|
|
14
|
+
* current vocabulary, and never blocks an operation on a different target. A
|
|
15
|
+
* confidence label supplied by append or amend is new/amended content and
|
|
16
|
+
* remains strict — it must be current vocabulary or the operation rejects
|
|
17
|
+
* before side effects.
|
|
18
|
+
*
|
|
19
|
+
* This module partitions schema violations into `blocking` (which still fail
|
|
20
|
+
* the operation) and `legacy_caveats` (untouched inherited legacy confidence
|
|
21
|
+
* labels that are preserved and reported). It never coerces a value and never
|
|
22
|
+
* broadens tolerance beyond the authority-declared confidence dimension: a
|
|
23
|
+
* missing required field, a type error, an invalid satisfaction state, or any
|
|
24
|
+
* other non-confidence violation stays blocking. (Touched confidence violations
|
|
25
|
+
* — a new/amended record whose confidence is unsupported — also stay blocking:
|
|
26
|
+
* the target/new content path remains strict.)
|
|
27
|
+
*/
|
|
28
|
+
import { classifyConfidenceLabel, legacyLabelCoexistence, } from "./decisionRevision.js";
|
|
29
|
+
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
30
|
+
function isMapping(value) {
|
|
31
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
32
|
+
}
|
|
33
|
+
// Matches: `decisions: invalid value 'high' for 'decisions[0].confidence' (expected one of: ...)`.
|
|
34
|
+
const CONFIDENCE_VIOLATION = /^decisions: invalid value '(?<value>[^']*)' for '(?<list>decisions|archive)\[(?<idx>\d+)\]\.confidence' \(expected one of:/;
|
|
35
|
+
function recordAt(doc, list, idx) {
|
|
36
|
+
const arr = doc[list];
|
|
37
|
+
if (!Array.isArray(arr))
|
|
38
|
+
return {};
|
|
39
|
+
const entry = arr[idx];
|
|
40
|
+
return isMapping(entry) ? entry : {};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Partition decisions schema violations. Each confidence-label violation maps
|
|
44
|
+
* to the record it names; when that record was not touched by the current
|
|
45
|
+
* operation, the unsupported label is explicit legacy state (tolerated,
|
|
46
|
+
* caveated). When the record WAS touched (new or amended content), the
|
|
47
|
+
* unsupported label is rejected — target/new content must be current
|
|
48
|
+
* vocabulary. Every other violation stays blocking, so tolerance never extends
|
|
49
|
+
* beyond the authority-declared confidence dimension.
|
|
50
|
+
*
|
|
51
|
+
* `touchedNumbers` carries the decision numbers the caller touched (new or
|
|
52
|
+
* amended targets). For whole-artifact prevalidation of the existing artifact
|
|
53
|
+
* nothing is touched yet, so callers pass an empty set.
|
|
54
|
+
*/
|
|
55
|
+
export function partitionDecisionViolations(violations, doc, coexistence, touchedNumbers = new Set()) {
|
|
56
|
+
const blocking = [];
|
|
57
|
+
const legacy_caveats = [];
|
|
58
|
+
for (const violation of violations) {
|
|
59
|
+
const match = CONFIDENCE_VIOLATION.exec(violation);
|
|
60
|
+
if (!match || !match.groups) {
|
|
61
|
+
blocking.push(violation);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const { value, list, idx } = match.groups;
|
|
65
|
+
const source = list === "archive" ? "archive" : "active";
|
|
66
|
+
const record = recordAt(doc, list, Number(idx));
|
|
67
|
+
const number = Number(record.number);
|
|
68
|
+
const classification = classifyConfidenceLabel(coexistence, value, touchedNumbers.has(number));
|
|
69
|
+
if (classification.classification === "explicit_legacy") {
|
|
70
|
+
legacy_caveats.push({ number, label: value, source, caveat: classification.caveat });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Touched unsupported (rejected) or current-but-flagged: keep strict.
|
|
74
|
+
blocking.push(violation);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { blocking, legacy_caveats };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Classify one record's confidence for amendment/read composition. An
|
|
81
|
+
* untouched inherited unsupported label is explicit legacy state and surfaces
|
|
82
|
+
* as a single caveat (never coerced, never promoted). `touched=true` marks
|
|
83
|
+
* the confidence as new or amended content; such a value can only be current
|
|
84
|
+
* vocabulary (enforced elsewhere), so no caveat is produced. Returns `null`
|
|
85
|
+
* when the confidence is current vocabulary or absent.
|
|
86
|
+
*/
|
|
87
|
+
export function legacyConfidenceCaveat(record, coexistence, touched, source = "active") {
|
|
88
|
+
const confidence = record.confidence;
|
|
89
|
+
if (typeof confidence !== "string")
|
|
90
|
+
return null;
|
|
91
|
+
const classification = classifyConfidenceLabel(coexistence, confidence, touched);
|
|
92
|
+
if (classification.classification !== "explicit_legacy")
|
|
93
|
+
return null;
|
|
94
|
+
return {
|
|
95
|
+
number: Number(record.number),
|
|
96
|
+
label: confidence,
|
|
97
|
+
source,
|
|
98
|
+
caveat: classification.caveat,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Return a caveat only for a label declared as known v2 legacy state. Migration
|
|
103
|
+
* uses this narrower classifier so an arbitrary unsupported confidence value
|
|
104
|
+
* cannot become publishable merely because it occupies the confidence field.
|
|
105
|
+
*/
|
|
106
|
+
export function knownLegacyConfidenceCaveat(record, coexistence, source = "active") {
|
|
107
|
+
if (typeof record.confidence !== "string" || !coexistence.knownLegacyExamples.includes(record.confidence))
|
|
108
|
+
return null;
|
|
109
|
+
return legacyConfidenceCaveat(record, coexistence, false, source);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Classify a complete migration source record without interpreting validator
|
|
113
|
+
* error text. A known legacy confidence is inherited only when replacing that
|
|
114
|
+
* one field with an authority-declared current value makes the whole record
|
|
115
|
+
* valid. Projection and verified-archive migration both use this classifier.
|
|
116
|
+
*/
|
|
117
|
+
export function classifyCompleteDecisionConfidence(record, coexistence, validate, source) {
|
|
118
|
+
if (coexistence.dimensions.length !== 1 || coexistence.dimensions[0] !== "confidence") {
|
|
119
|
+
throw new Error("decision legacy coexistence must declare confidence as its sole compatibility dimension");
|
|
120
|
+
}
|
|
121
|
+
const violations = validate(record);
|
|
122
|
+
if (violations.length === 0)
|
|
123
|
+
return { status: "current", violations, caveat: null };
|
|
124
|
+
const caveat = knownLegacyConfidenceCaveat(record, coexistence, source);
|
|
125
|
+
if (!caveat || coexistence.currentVocabulary.length === 0)
|
|
126
|
+
return { status: "invalid", violations, caveat: null };
|
|
127
|
+
const strictCandidate = { ...record, confidence: coexistence.currentVocabulary[0] };
|
|
128
|
+
return validate(strictCandidate).length === 0
|
|
129
|
+
? { status: "inherited", violations, caveat }
|
|
130
|
+
: { status: "invalid", violations, caveat: null };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Scan a parsed decisions artifact mapping for untouched inherited legacy
|
|
134
|
+
* confidence labels. Records whose number is in `touchedNumbers` are new or
|
|
135
|
+
* amended content and are excluded — they remain strict. Used to report
|
|
136
|
+
* truthful compatibility caveats that reflect the published bytes.
|
|
137
|
+
*/
|
|
138
|
+
export function collectDecisionLegacyCaveats(doc, coexistence, touchedNumbers = new Set()) {
|
|
139
|
+
const caveats = [];
|
|
140
|
+
for (const [list, source] of [
|
|
141
|
+
["decisions", "active"],
|
|
142
|
+
["archive", "archive"],
|
|
143
|
+
]) {
|
|
144
|
+
const arr = doc[list];
|
|
145
|
+
if (!Array.isArray(arr))
|
|
146
|
+
continue;
|
|
147
|
+
for (const entry of arr) {
|
|
148
|
+
if (!isMapping(entry))
|
|
149
|
+
continue;
|
|
150
|
+
const caveat = legacyConfidenceCaveat(entry, coexistence, touchedNumbers.has(Number(entry.number)), source);
|
|
151
|
+
if (caveat)
|
|
152
|
+
caveats.push(caveat);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return caveats;
|
|
156
|
+
}
|
|
157
|
+
/** Load the legacy label coexistence authority section for a project. */
|
|
158
|
+
export function decisionLegacyCoexistence(sourceRoot = resolveSourceRoot()) {
|
|
159
|
+
return legacyLabelCoexistence(sourceRoot);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Gate 1 — prevalidation of the existing artifact. When coexistence is null
|
|
163
|
+
* (non-decisions artifact), throws the standard schema-invalid error. When
|
|
164
|
+
* coexistence is active, partitions: tolerates untouched inherited legacy
|
|
165
|
+
* confidence labels only; every other violation stays blocking. Returns
|
|
166
|
+
* legacy caveats from the violations.
|
|
167
|
+
*/
|
|
168
|
+
export function gateExistingDecisions(violations, doc, coexistence, target) {
|
|
169
|
+
if (!coexistence)
|
|
170
|
+
throw new Error(`existing artifact '${target}' is schema-invalid: ${violations.join("; ")}; repair it before retrying`);
|
|
171
|
+
const partition = partitionDecisionViolations(violations, doc, coexistence, new Set());
|
|
172
|
+
if (partition.blocking.length)
|
|
173
|
+
throw new Error(`existing artifact '${target}' is schema-invalid: ${partition.blocking.join("; ")}; repair it before retrying`);
|
|
174
|
+
return partition.legacy_caveats;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Gate 2 — candidate validation. When coexistence is null (non-decisions),
|
|
178
|
+
* calls `reject` with the raw violations if any exist. When active, the
|
|
179
|
+
* new/amended record's number is touched, so unsupported confidence on it
|
|
180
|
+
* stays blocking (calls `reject`). Then re-derives caveats from the candidate
|
|
181
|
+
* doc so the envelope reflects the about-to-be-published bytes.
|
|
182
|
+
*/
|
|
183
|
+
export function gateCandidateDecisions(violations, candidate, coexistence, writtenNumber, reject) {
|
|
184
|
+
if (!coexistence) {
|
|
185
|
+
if (violations.length)
|
|
186
|
+
reject(violations);
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
const touched = new Set([writtenNumber]);
|
|
190
|
+
const partition = partitionDecisionViolations(violations, candidate, coexistence, touched);
|
|
191
|
+
if (partition.blocking.length)
|
|
192
|
+
reject(partition.blocking);
|
|
193
|
+
return collectDecisionLegacyCaveats(candidate, coexistence, touched);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Gate 3 — post-compaction invariant. When coexistence is null, throws the
|
|
197
|
+
* standard writer/compactor error if violations exist. When active, proves
|
|
198
|
+
* untouched inherited legacy labels survived compaction unchanged:
|
|
199
|
+
* partitions final violations (throws if blocking), then re-derives caveats
|
|
200
|
+
* from the published bytes.
|
|
201
|
+
*/
|
|
202
|
+
export function gateCompactedDecisions(violations, doc, coexistence, writtenNumber) {
|
|
203
|
+
if (!coexistence) {
|
|
204
|
+
if (violations.length)
|
|
205
|
+
throw new Error(`writer/compactor invariant failure: ${violations.join("; ")}`);
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
const touched = new Set([writtenNumber]);
|
|
209
|
+
if (violations.length) {
|
|
210
|
+
const partition = partitionDecisionViolations(violations, doc, coexistence, touched);
|
|
211
|
+
if (partition.blocking.length)
|
|
212
|
+
throw new Error(`writer/compactor invariant failure: ${partition.blocking.join("; ")}`);
|
|
213
|
+
}
|
|
214
|
+
return collectDecisionLegacyCaveats(doc, coexistence, touched);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=decisionLegacyValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionLegacyValidation.js","sourceRoot":"","sources":["../../../../../home/jgabor/git/agentera/packages/cli/src/state/decisionLegacyValidation.ts"],"names":[],"mappings":"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"}
|