agentera 3.0.0-dev.23 → 3.0.0-dev.26
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/README.md +18 -22
- package/bundle/CHANGELOG.md +25 -27
- package/bundle/README.md +22 -42
- package/bundle/UPGRADE.md +71 -179
- package/bundle/references/adapters/package-manifest-interface-model.yaml +41 -240
- package/bundle/references/adapters/package-registry.yaml +9 -145
- package/bundle/references/adapters/package-surface-characterization.md +13 -38
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
- package/bundle/references/artifacts/state-storage-authority.yaml +729 -412
- package/bundle/references/cli/agent-ready-state-contract.yaml +12 -12
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
- package/bundle/references/cli/capability-tool-classification.yaml +2 -2
- package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
- package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
- package/bundle/references/cli/update-channels.yaml +4 -2
- package/bundle/references/cli/upgrade-repair-wording.md +8 -28
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
- package/bundle/references/cli/vocabulary.md +22 -27
- package/bundle/references/meta/documentation-inventory.md +1 -1
- package/bundle/skills/agentera/SKILL.md +28 -14
- package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +2 -2
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +8 -8
- package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
- package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +7 -7
- package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +12 -12
- package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +9 -9
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +11 -11
- package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +9 -9
- package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +2 -2
- package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +3 -3
- package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +11 -11
- package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +15 -2
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +21 -21
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +15 -2
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +36 -15
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +15 -2
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +4 -4
- package/dist/capabilities/audit/instructions.js +13 -1
- package/dist/capabilities/audit/instructions.js.map +1 -1
- package/dist/capabilities/build/instructions.js +14 -1
- package/dist/capabilities/build/instructions.js.map +1 -1
- package/dist/capabilities/discuss/instructions.js +11 -1
- package/dist/capabilities/discuss/instructions.js.map +1 -1
- package/dist/capabilities/document/instructions.js +9 -1
- package/dist/capabilities/document/instructions.js.map +1 -1
- package/dist/capabilities/index.js +7 -7
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/optimize/instructions.js +10 -1
- package/dist/capabilities/optimize/instructions.js.map +1 -1
- package/dist/capabilities/orchestrate/instructions.js +13 -2
- package/dist/capabilities/orchestrate/instructions.js.map +1 -1
- package/dist/capabilities/plan/instructions.js +10 -1
- package/dist/capabilities/plan/instructions.js.map +1 -1
- package/dist/cli/capabilityContext/bespoke.js +8 -2
- package/dist/cli/capabilityContext/bespoke.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js +3 -3
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/contract.js +10 -15
- package/dist/cli/capabilityContext/contract.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +55 -43
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/planState.js +5 -5
- package/dist/cli/capabilityContext/planState.js.map +1 -1
- package/dist/cli/capabilityContext/progress.js +1 -1
- package/dist/cli/capabilityContext/progress.js.map +1 -1
- package/dist/cli/capabilityContext/shared.js +8 -2
- package/dist/cli/capabilityContext/shared.js.map +1 -1
- package/dist/cli/capabilityContext/slim.js +2 -1
- package/dist/cli/capabilityContext/slim.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +19 -8
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/capabilityContext/types.js +4 -4
- package/dist/cli/capabilityContext/types.js.map +1 -1
- package/dist/cli/commands/doctor.js +6 -64
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/durability.js +27 -30
- package/dist/cli/commands/durability.js.map +1 -1
- package/dist/cli/commands/entityMigrate.js +128 -0
- package/dist/cli/commands/entityMigrate.js.map +1 -0
- package/dist/cli/commands/prime/briefOrientation.js +7 -22
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
- package/dist/cli/commands/prime/bundleStatus.js +8 -2
- package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
- package/dist/cli/commands/prime/collectEntityOrientation.js +161 -0
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -0
- package/dist/cli/commands/prime/collectOrientationState.js +32 -59
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +4 -12
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +2 -5
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/query.js +43 -49
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/schema.js +26 -83
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/decisions.js +14 -47
- package/dist/cli/commands/state/decisions.js.map +1 -1
- package/dist/cli/commands/state/docs.js +58 -84
- package/dist/cli/commands/state/docs.js.map +1 -1
- package/dist/cli/commands/state/experimentRecords.js +27 -44
- package/dist/cli/commands/state/experimentRecords.js.map +1 -1
- package/dist/cli/commands/state/experiments.js +11 -64
- package/dist/cli/commands/state/experiments.js.map +1 -1
- package/dist/cli/commands/state/get.js +74 -88
- package/dist/cli/commands/state/get.js.map +1 -1
- package/dist/cli/commands/state/health.js +11 -112
- package/dist/cli/commands/state/health.js.map +1 -1
- package/dist/cli/commands/state/index.js +11 -2
- package/dist/cli/commands/state/index.js.map +1 -1
- package/dist/cli/commands/state/list.js +30 -13
- package/dist/cli/commands/state/list.js.map +1 -1
- package/dist/cli/commands/state/objective.js +21 -64
- package/dist/cli/commands/state/objective.js.map +1 -1
- package/dist/cli/commands/state/plan.js +11 -376
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/commands/state/planTasks.js +58 -80
- package/dist/cli/commands/state/planTasks.js.map +1 -1
- package/dist/cli/commands/state/plans.js +27 -38
- package/dist/cli/commands/state/plans.js.map +1 -1
- package/dist/cli/commands/state/progress.js +11 -44
- package/dist/cli/commands/state/progress.js.map +1 -1
- package/dist/cli/commands/state/shared.js.map +1 -1
- package/dist/cli/commands/state/todo.js +27 -106
- package/dist/cli/commands/state/todo.js.map +1 -1
- package/dist/cli/commands/state/write.js +57 -4
- package/dist/cli/commands/state/write.js.map +1 -1
- package/dist/cli/commands/upgrade.js +99 -35
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgradeVerify.js +52 -14
- package/dist/cli/commands/upgradeVerify.js.map +1 -1
- package/dist/cli/commands/validate.js +66 -9
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/dispatch/check.js +13 -13
- package/dist/cli/dispatch/check.js.map +1 -1
- package/dist/cli/dispatch/index.js +35 -28
- package/dist/cli/dispatch/index.js.map +1 -1
- package/dist/cli/dispatch/lifecycle.js +23 -43
- package/dist/cli/dispatch/lifecycle.js.map +1 -1
- package/dist/cli/dispatch/prime.js +15 -0
- package/dist/cli/dispatch/prime.js.map +1 -1
- package/dist/cli/dispatch/state.js +7 -1
- package/dist/cli/dispatch/state.js.map +1 -1
- package/dist/cli/help.js +90 -112
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/migrationRequired.js +87 -0
- package/dist/cli/migrationRequired.js.map +1 -0
- package/dist/cli/orientation/attention.js +3 -99
- package/dist/cli/orientation/attention.js.map +1 -1
- package/dist/cli/orientation.js +10 -7
- package/dist/cli/orientation.js.map +1 -1
- package/dist/cli/planArtifacts.js +192 -42
- package/dist/cli/planArtifacts.js.map +1 -1
- package/dist/cli/prime-blob.js +5 -5
- package/dist/cli/prime-blob.js.map +1 -1
- package/dist/cli/stateQuery.js +6 -7
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/core/skillIdentity.js +24 -0
- package/dist/core/skillIdentity.js.map +1 -0
- package/dist/hooks/common.js +1 -1
- package/dist/hooks/common.js.map +1 -1
- package/dist/hooks/compaction/status.js +27 -2
- package/dist/hooks/compaction/status.js.map +1 -1
- package/dist/hooks/cursorSessionStart.js +4 -19
- 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 +58 -212
- package/dist/hooks/sessionStart.js.map +1 -1
- package/dist/hooks/sessionStop.js +4 -12
- package/dist/hooks/sessionStop.js.map +1 -1
- package/dist/hooks/validateArtifact/traversal.js +1 -1
- package/dist/hooks/validateArtifact/traversal.js.map +1 -1
- package/dist/registries/artifactRegistry.js +24 -14
- package/dist/registries/artifactRegistry.js.map +1 -1
- package/dist/registries/packageRegistry.js +58 -232
- package/dist/registries/packageRegistry.js.map +1 -1
- package/dist/release/releaseMetadata.js +1 -13
- package/dist/release/releaseMetadata.js.map +1 -1
- package/dist/runtime/lifecycleAdapterContract.js +4 -4
- package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
- package/dist/runtime/lifecycleAdapters.js +14 -2
- package/dist/runtime/lifecycleAdapters.js.map +1 -1
- package/dist/runtime/lifecycleAuthority.js +5 -43
- package/dist/runtime/lifecycleAuthority.js.map +1 -1
- package/dist/runtime/lifecycleOperationContract.js +3 -2
- package/dist/runtime/lifecycleOperationContract.js.map +1 -1
- package/dist/runtime/lifecyclePublication.js +21 -0
- package/dist/runtime/lifecyclePublication.js.map +1 -1
- package/dist/setup/opencode.js +20 -12
- package/dist/setup/opencode.js.map +1 -1
- package/dist/setup/sharedSkill.js +46 -0
- package/dist/setup/sharedSkill.js.map +1 -0
- package/dist/setup/smokeChecks.js +16 -43
- package/dist/setup/smokeChecks.js.map +1 -1
- package/dist/state/archivePublication.js +3 -2
- package/dist/state/archivePublication.js.map +1 -1
- package/dist/state/decisionEntities.js +282 -0
- package/dist/state/decisionEntities.js.map +1 -0
- package/dist/state/decisionOverlay.js +2 -2
- package/dist/state/decisionOverlay.js.map +1 -1
- package/dist/state/decisionRevision.js +44 -34
- package/dist/state/decisionRevision.js.map +1 -1
- package/dist/state/directRetrieval.js.map +1 -1
- package/dist/state/durability.js +81 -226
- package/dist/state/durability.js.map +1 -1
- 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/entityMigrationPreview.js +803 -0
- package/dist/state/entityMigrationPreview.js.map +1 -0
- package/dist/state/entityPublicationContext.js +612 -0
- package/dist/state/entityPublicationContext.js.map +1 -0
- package/dist/state/entityStorage.js +826 -0
- package/dist/state/entityStorage.js.map +1 -0
- package/dist/state/experimentIdentity.js +23 -11
- package/dist/state/experimentIdentity.js.map +1 -1
- package/dist/state/healthEntities.js +230 -0
- package/dist/state/healthEntities.js.map +1 -0
- package/dist/state/healthEntityValidation.js +6 -0
- package/dist/state/healthEntityValidation.js.map +1 -0
- package/dist/state/legacyEntityCutoverEvidence.js +66 -0
- package/dist/state/legacyEntityCutoverEvidence.js.map +1 -0
- package/dist/state/listRetrieval.js.map +1 -1
- package/dist/state/objectiveExperimentEntities.js +323 -0
- package/dist/state/objectiveExperimentEntities.js.map +1 -0
- package/dist/state/planEntities.js +362 -0
- package/dist/state/planEntities.js.map +1 -0
- package/dist/state/progressEntities.js +384 -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/retrievalAuthority.js +13 -6
- package/dist/state/retrievalAuthority.js.map +1 -1
- package/dist/state/safeProjectFile.js +153 -0
- package/dist/state/safeProjectFile.js.map +1 -0
- package/dist/state/startupProjection.js +3 -2
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/stateMode.js +83 -0
- package/dist/state/stateMode.js.map +1 -0
- package/dist/state/todoDocsEntities.js +225 -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/candidateMutation.js +5 -55
- package/dist/state/write/candidateMutation.js.map +1 -1
- package/dist/state/write/explain.js +119 -28
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/lock.js +794 -87
- package/dist/state/write/lock.js.map +1 -1
- package/dist/state/write/mutation.js +5 -2
- package/dist/state/write/mutation.js.map +1 -1
- package/dist/state/write/operations.js +52 -7
- package/dist/state/write/operations.js.map +1 -1
- package/dist/state/write/planEvaluation.js +107 -0
- package/dist/state/write/planEvaluation.js.map +1 -0
- package/dist/state/write/planPublication.js +11 -55
- package/dist/state/write/planPublication.js.map +1 -1
- package/dist/state/write/transaction.js +32 -455
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/upgrade/appContentRefresh.js +43 -28
- package/dist/upgrade/appContentRefresh.js.map +1 -1
- package/dist/upgrade/compatibility.js +4 -4
- package/dist/upgrade/compatibility.js.map +1 -1
- package/dist/upgrade/doctor.js +5 -1
- package/dist/upgrade/doctor.js.map +1 -1
- package/dist/upgrade/installedHooksRetirement.js +46 -39
- package/dist/upgrade/installedHooksRetirement.js.map +1 -1
- package/dist/upgrade/legacyAgentCleanup.js +132 -32
- package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
- package/dist/upgrade/lifecycleUpgrade.js +65 -378
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js +164 -66
- 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/projectIntegration.js +46 -113
- package/dist/upgrade/projectIntegration.js.map +1 -1
- package/dist/upgrade/projectIntegrationDecision.js +6 -96
- package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
- package/dist/upgrade/runtimeMigration.js +222 -402
- package/dist/upgrade/runtimeMigration.js.map +1 -1
- package/dist/upgrade/upgradeCommands.js +5 -4
- package/dist/upgrade/upgradeCommands.js.map +1 -1
- package/dist/upgrade/upgradeLock.js +73 -41
- package/dist/upgrade/upgradeLock.js.map +1 -1
- package/dist/upgrade/upgradeOrchestrator.js +181 -145
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/dist/upgrade/v3CapabilitySurface.js +2 -2
- package/dist/validate/appHomeContract.js +0 -4
- package/dist/validate/appHomeContract.js.map +1 -1
- package/dist/validate/crossCapability.js +2 -2
- package/dist/validate/crossCapability.js.map +1 -1
- package/package.json +8 -6
- package/bundle/.codex-plugin/plugin.json +0 -92
- package/bundle/.cursor/agents/agentera.md +0 -7
- package/bundle/.cursor/hooks.json +0 -32
- package/bundle/.cursor-plugin/plugin.json +0 -34
- package/bundle/.github/hooks/postToolUse.json +0 -9
- package/bundle/.github/hooks/preToolUse.json +0 -8
- package/bundle/.github/hooks/sessionEnd.json +0 -8
- package/bundle/.github/hooks/sessionStart.json +0 -8
- package/bundle/.github/plugin/plugin.json +0 -7
- package/bundle/.opencode/agents/agentera.md +0 -12
- package/bundle/.opencode/commands/agentera.md +0 -5
- package/bundle/.opencode/package.json +0 -31
- package/bundle/.opencode/plugins/agentera.js +0 -820
- package/bundle/agents/openai.yaml +0 -87
- package/bundle/hooks/codex-hooks.json +0 -31
- package/bundle/hooks/codex-plugin-hooks.json +0 -31
- package/bundle/plugin.json +0 -13
- package/bundle/references/adapters/cursor.md +0 -224
- package/bundle/references/adapters/opencode.md +0 -529
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
- package/bundle/references/adapters/runtime-feature-parity.md +0 -129
- package/dist/cli/commands/backfill.js +0 -194
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/migrate.js +0 -677
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -324
- 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 -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 -296
- package/dist/setup/doctor/core.js.map +0 -1
- package/dist/setup/doctor/diagnostics.js +0 -201
- package/dist/setup/doctor/diagnostics.js.map +0 -1
- package/dist/setup/doctor/opencode.js +0 -301
- 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/state/gitBackfill.js +0 -561
- package/dist/state/gitBackfill.js.map +0 -1
- package/dist/state/gitBackfillAuthority.js +0 -141
- package/dist/state/gitBackfillAuthority.js.map +0 -1
- package/dist/state/gitBackfillHistory.js +0 -278
- package/dist/state/gitBackfillHistory.js.map +0 -1
- package/dist/state/gitBackfillOutput.js +0 -209
- package/dist/state/gitBackfillOutput.js.map +0 -1
- package/dist/state/legacyMigration.js +0 -516
- package/dist/state/legacyMigration.js.map +0 -1
- package/dist/state/legacyMigrationParser.js +0 -489
- package/dist/state/legacyMigrationParser.js.map +0 -1
- package/dist/state/migrationAuthority.js +0 -413
- package/dist/state/migrationAuthority.js.map +0 -1
- package/dist/state/migrationEnrichment.js +0 -35
- package/dist/state/migrationEnrichment.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/upgrade/upgradeSnapshot.js +0 -93
- package/dist/upgrade/upgradeSnapshot.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/lifecycleMain.js +0 -154
- package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
- 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 -10
- package/dist/validate/lifecycleAdapters.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import YAML from "yaml";
|
|
2
|
-
import { artifactPath, discoverSchemasDir, loadSchemas } from "../../appContext.js";
|
|
3
|
-
import { emitStructured } from "../../structured.js";
|
|
4
2
|
import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
|
|
5
|
-
import {
|
|
3
|
+
import { getPlanTaskEntity, listPlanTaskEntities } from "../../../state/planEntities.js";
|
|
4
|
+
import { emitStructured } from "../../structured.js";
|
|
6
5
|
function requestedFormat(argv) {
|
|
7
6
|
for (let index = 0; index < argv.length; index += 1) {
|
|
8
7
|
const token = argv[index];
|
|
@@ -21,75 +20,76 @@ function readValue(argv, index, name) {
|
|
|
21
20
|
throw new Error(`${name} requires a value`);
|
|
22
21
|
return { value, next: index + 2 };
|
|
23
22
|
}
|
|
23
|
+
function failure(message, verb) {
|
|
24
|
+
const list = verb === "list";
|
|
25
|
+
return new StateRetrievalFailure({
|
|
26
|
+
schemaVersion: "agentera.stateFailure.v1",
|
|
27
|
+
status: "fail",
|
|
28
|
+
error: {
|
|
29
|
+
class: "invalid_request",
|
|
30
|
+
message,
|
|
31
|
+
syntax: list
|
|
32
|
+
? "agentera state plan tasks list [PLAN_ID] [--limit N] [--cursor TOKEN] --format json"
|
|
33
|
+
: "agentera state plan tasks get --id ID --format json",
|
|
34
|
+
example: list
|
|
35
|
+
? "agentera state plan tasks list abcdefghij --limit 20 --format json"
|
|
36
|
+
: "agentera state plan tasks get --id qjtrmnpvka --format json",
|
|
37
|
+
recovery: "Correct the command using one of the valid forms and retry; no state was changed.",
|
|
38
|
+
valid_values: list
|
|
39
|
+
? ["list", "PLAN_ID", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
|
|
40
|
+
: ["get", "--id ID", "--format text|json|yaml"],
|
|
41
|
+
},
|
|
42
|
+
}, 2);
|
|
43
|
+
}
|
|
24
44
|
function parse(argv, verb) {
|
|
25
45
|
let format = "text";
|
|
26
46
|
let plan;
|
|
27
47
|
let limit = 20;
|
|
28
48
|
let cursor;
|
|
29
|
-
let
|
|
49
|
+
let id;
|
|
30
50
|
const seen = new Set();
|
|
31
51
|
for (let index = 0; index < argv.length;) {
|
|
32
52
|
const token = argv[index];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
53
|
+
if (verb === "list" && !token.startsWith("--")) {
|
|
54
|
+
if (plan)
|
|
55
|
+
throw failure(`unrecognized argument '${token}'`, verb);
|
|
56
|
+
plan = token;
|
|
57
|
+
index += 1;
|
|
58
|
+
continue;
|
|
36
59
|
}
|
|
60
|
+
const allowed = verb === "list" ? ["--format", "--limit", "--cursor"] : ["--format", "--id"];
|
|
61
|
+
const name = allowed.find((flag) => token === flag || token.startsWith(`${flag}=`));
|
|
62
|
+
if (!name)
|
|
63
|
+
throw failure(`unrecognized argument '${token}'`, verb);
|
|
37
64
|
if (seen.has(name))
|
|
38
|
-
throw
|
|
65
|
+
throw failure(`${name} may only be supplied once`, verb);
|
|
39
66
|
seen.add(name);
|
|
40
|
-
let
|
|
67
|
+
let parsed;
|
|
41
68
|
try {
|
|
42
|
-
|
|
43
|
-
value = parsed.value;
|
|
44
|
-
index = parsed.next;
|
|
69
|
+
parsed = readValue(argv, index, name);
|
|
45
70
|
}
|
|
46
71
|
catch (error) {
|
|
47
|
-
throw
|
|
72
|
+
throw failure(error.message, verb);
|
|
48
73
|
}
|
|
74
|
+
index = parsed.next;
|
|
49
75
|
if (name === "--format") {
|
|
50
|
-
if (!["text", "json", "yaml"].includes(value))
|
|
51
|
-
throw
|
|
52
|
-
format = value;
|
|
76
|
+
if (!["text", "json", "yaml"].includes(parsed.value))
|
|
77
|
+
throw failure(`invalid --format '${parsed.value}'`, verb);
|
|
78
|
+
format = parsed.value;
|
|
53
79
|
}
|
|
54
|
-
else if (name === "--plan")
|
|
55
|
-
plan = value;
|
|
56
|
-
else if (name === "--cursor")
|
|
57
|
-
cursor = value;
|
|
58
80
|
else if (name === "--limit") {
|
|
59
|
-
if (!/^[1-9][0-9]*$/.test(value))
|
|
60
|
-
throw
|
|
61
|
-
limit = Number(value);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
if (!/^[1-9][0-9]*$/.test(value))
|
|
65
|
-
throw requestFailure("--task must be a positive integer without leading zeros", verb);
|
|
66
|
-
task = Number(value);
|
|
81
|
+
if (!/^[1-9][0-9]*$/.test(parsed.value))
|
|
82
|
+
throw failure("--limit must be an integer from 1 through 100", verb);
|
|
83
|
+
limit = Number(parsed.value);
|
|
67
84
|
}
|
|
85
|
+
else if (name === "--cursor")
|
|
86
|
+
cursor = parsed.value;
|
|
87
|
+
else
|
|
88
|
+
id = parsed.value;
|
|
68
89
|
}
|
|
69
|
-
if (verb === "get" &&
|
|
70
|
-
throw
|
|
71
|
-
return { format,
|
|
72
|
-
}
|
|
73
|
-
function requestFailure(message, verb) {
|
|
74
|
-
const list = verb === "list";
|
|
75
|
-
return new StateRetrievalFailure({
|
|
76
|
-
schemaVersion: "agentera.stateFailure.v1",
|
|
77
|
-
status: "fail",
|
|
78
|
-
error: {
|
|
79
|
-
class: "invalid_request",
|
|
80
|
-
message,
|
|
81
|
-
syntax: list
|
|
82
|
-
? "agentera state plan tasks list [--plan PLAN_ID] [--limit N] [--cursor TOKEN] --format json"
|
|
83
|
-
: "agentera state plan tasks get [--plan PLAN_ID] --task N --format json",
|
|
84
|
-
example: list
|
|
85
|
-
? "agentera state plan tasks list --limit 20 --format json"
|
|
86
|
-
: "agentera state plan tasks get --task 1 --format json",
|
|
87
|
-
recovery: "Correct the command using one of the valid forms and retry; no state was changed.",
|
|
88
|
-
valid_values: list
|
|
89
|
-
? ["list", "--plan PLAN_ID", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
|
|
90
|
-
: ["get", "--task N", "--plan PLAN_ID", "--format text|json|yaml"],
|
|
91
|
-
},
|
|
92
|
-
}, 2);
|
|
90
|
+
if (verb === "get" && !id)
|
|
91
|
+
throw failure("entity mode requires --id ID and rejects numeric --task selectors", verb);
|
|
92
|
+
return { format, limit, ...(plan ? { plan } : {}), ...(cursor ? { cursor } : {}), ...(id ? { id } : {}) };
|
|
93
93
|
}
|
|
94
94
|
function emitFailure(error, format, io) {
|
|
95
95
|
if (format === "json" || format === "yaml")
|
|
@@ -100,49 +100,27 @@ function emitFailure(error, format, io) {
|
|
|
100
100
|
`Error: ${detail.message}`,
|
|
101
101
|
`Class: ${detail.class}`,
|
|
102
102
|
`Valid forms: ${(detail.valid_values ?? [detail.syntax]).join("; ")}`,
|
|
103
|
-
`Syntax: ${detail.syntax}`,
|
|
104
103
|
`Example: ${detail.example}`,
|
|
105
104
|
`Recovery: ${detail.recovery}`,
|
|
106
105
|
].join("\n") + "\n");
|
|
107
106
|
}
|
|
108
107
|
return error.exitCode;
|
|
109
108
|
}
|
|
110
|
-
function renderList(response) {
|
|
111
|
-
const lines = [
|
|
112
|
-
`Plan tasks: plan=${response.filters.plan} | order=${response.order} | returned=${response.counts.returned}/${response.counts.total}`,
|
|
113
|
-
];
|
|
114
|
-
for (const value of response.entries) {
|
|
115
|
-
const entry = value;
|
|
116
|
-
lines.push(`Task: number=${entry.task_number} | stable_id=${entry.stable_id} | get=${entry.retrieval.get}`);
|
|
117
|
-
}
|
|
118
|
-
if (response.omitted === true) {
|
|
119
|
-
lines.push(`Omitted: ${response.omitted_count} task(s) | reason=${response.omission_reason}`);
|
|
120
|
-
lines.push(`Continue: ${response.retrieval.continue}`);
|
|
121
|
-
lines.push(`Get one: ${response.retrieval.get}`);
|
|
122
|
-
}
|
|
123
|
-
return lines.join("\n") + "\n";
|
|
124
|
-
}
|
|
125
109
|
export function runPlanTasks(argv, io) {
|
|
126
110
|
const format = requestedFormat(argv);
|
|
127
111
|
const verb = argv[0];
|
|
128
112
|
if (verb !== "list" && verb !== "get")
|
|
129
|
-
return emitFailure(
|
|
113
|
+
return emitFailure(failure(`expected 'list' or 'get', received '${verb ?? "nothing"}'`, "list"), format, io);
|
|
130
114
|
try {
|
|
131
115
|
const args = parse(argv.slice(1), verb);
|
|
132
|
-
const schema = loadSchemas(discoverSchemasDir()).plan;
|
|
133
|
-
if (!schema)
|
|
134
|
-
throw new Error("plan schema is unavailable");
|
|
135
|
-
const activePath = artifactPath(schema, "plan");
|
|
136
116
|
const response = verb === "list"
|
|
137
|
-
?
|
|
138
|
-
:
|
|
139
|
-
const
|
|
117
|
+
? listPlanTaskEntities(process.cwd(), args.plan, args.limit, args.cursor, { format: args.format })
|
|
118
|
+
: getPlanTaskEntity(process.cwd(), args.id);
|
|
119
|
+
const output = io.out ?? ((text) => process.stdout.write(text));
|
|
140
120
|
if (args.format === "json" || args.format === "yaml")
|
|
141
|
-
emitStructured(response, args.format,
|
|
142
|
-
else if (verb === "list")
|
|
143
|
-
out(renderList(response));
|
|
121
|
+
emitStructured(response, args.format, output);
|
|
144
122
|
else
|
|
145
|
-
|
|
123
|
+
output(YAML.stringify(response));
|
|
146
124
|
return 0;
|
|
147
125
|
}
|
|
148
126
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planTasks.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/planTasks.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"planTasks.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/planTasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import YAML from "yaml";
|
|
2
|
-
import { artifactPath, discoverSchemasDir, loadSchemas } from "../../appContext.js";
|
|
3
|
-
import { emitStructured } from "../../structured.js";
|
|
4
2
|
import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
|
|
5
|
-
import {
|
|
3
|
+
import { getPlanEntity, listPlanEntities } from "../../../state/planEntities.js";
|
|
4
|
+
import { emitStructured } from "../../structured.js";
|
|
6
5
|
function requestedFormat(argv) {
|
|
7
6
|
for (let index = 0; index < argv.length; index += 1) {
|
|
8
7
|
const token = argv[index];
|
|
@@ -21,15 +20,15 @@ function failure(message, verb) {
|
|
|
21
20
|
class: "invalid_request",
|
|
22
21
|
message,
|
|
23
22
|
syntax: list
|
|
24
|
-
? "agentera state plan list [--limit N] [--cursor TOKEN] --format json"
|
|
25
|
-
: "agentera state plan get --
|
|
23
|
+
? "agentera state plan list [--status open|complete|archived] [--limit N] [--cursor TOKEN] --format json"
|
|
24
|
+
: "agentera state plan get --id ID --format json",
|
|
26
25
|
example: list
|
|
27
26
|
? "agentera state plan list --limit 20 --format json"
|
|
28
|
-
: "agentera state plan get --
|
|
27
|
+
: "agentera state plan get --id qjtrmnpvka --format json",
|
|
29
28
|
recovery: "Correct the command using one of the valid forms and retry; no state was changed.",
|
|
30
29
|
valid_values: list
|
|
31
|
-
? ["list", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
|
|
32
|
-
: ["get", "--
|
|
30
|
+
? ["list", "--status open|complete|archived", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
|
|
31
|
+
: ["get", "--id ID", "--format text|json|yaml"],
|
|
33
32
|
},
|
|
34
33
|
}, 2);
|
|
35
34
|
}
|
|
@@ -47,11 +46,13 @@ function parse(argv, verb) {
|
|
|
47
46
|
let limit = 20;
|
|
48
47
|
let cursor;
|
|
49
48
|
let plan;
|
|
49
|
+
let id;
|
|
50
|
+
let status;
|
|
50
51
|
const seen = new Set();
|
|
51
52
|
for (let index = 0; index < argv.length;) {
|
|
52
53
|
const token = argv[index];
|
|
53
|
-
const name = ["--format", "--limit", "--cursor", "--plan"].find((flag) => token === flag || token.startsWith(`${flag}=`));
|
|
54
|
-
if (!name || (verb === "list" && name === "--plan") || (verb === "get" && (name === "--limit" || name === "--cursor"))) {
|
|
54
|
+
const name = ["--format", "--limit", "--cursor", "--plan", "--id", "--status"].find((flag) => token === flag || token.startsWith(`${flag}=`));
|
|
55
|
+
if (!name || (verb === "list" && (name === "--plan" || name === "--id")) || (verb === "get" && (name === "--limit" || name === "--cursor" || name === "--status"))) {
|
|
55
56
|
throw failure(`unrecognized argument '${token}'`, verb);
|
|
56
57
|
}
|
|
57
58
|
if (seen.has(name))
|
|
@@ -77,12 +78,17 @@ function parse(argv, verb) {
|
|
|
77
78
|
}
|
|
78
79
|
else if (name === "--cursor")
|
|
79
80
|
cursor = parsed.value;
|
|
80
|
-
else
|
|
81
|
+
else if (name === "--status") {
|
|
82
|
+
if (!["open", "complete", "archived"].includes(parsed.value))
|
|
83
|
+
throw failure(`invalid --status '${parsed.value}'`, verb);
|
|
84
|
+
status = parsed.value;
|
|
85
|
+
}
|
|
86
|
+
else if (name === "--plan")
|
|
81
87
|
plan = parsed.value;
|
|
88
|
+
else
|
|
89
|
+
id = parsed.value;
|
|
82
90
|
}
|
|
83
|
-
|
|
84
|
-
throw failure("--plan is required", verb);
|
|
85
|
-
return { format, limit, ...(cursor ? { cursor } : {}), ...(plan ? { plan } : {}) };
|
|
91
|
+
return { format, limit, ...(cursor ? { cursor } : {}), ...(plan ? { plan } : {}), ...(id ? { id } : {}), ...(status ? { status } : {}) };
|
|
86
92
|
}
|
|
87
93
|
function emitFailure(error, format, io) {
|
|
88
94
|
if (format === "json" || format === "yaml")
|
|
@@ -99,19 +105,6 @@ function emitFailure(error, format, io) {
|
|
|
99
105
|
}
|
|
100
106
|
return error.exitCode;
|
|
101
107
|
}
|
|
102
|
-
function renderList(response) {
|
|
103
|
-
const lines = [`Plans: order=${response.order} | returned=${response.counts.returned}/${response.counts.total} | status=${response.status}`];
|
|
104
|
-
for (const value of response.entries) {
|
|
105
|
-
const entry = value;
|
|
106
|
-
lines.push(`Plan: created=${entry.created} | stable_id=${entry.stable_id} | status=${entry.status} | active=${entry.active} | archived=${entry.archived}`);
|
|
107
|
-
}
|
|
108
|
-
if (response.omitted) {
|
|
109
|
-
lines.push(`Omitted: ${response.omitted_count} plan(s) | reason=${response.omission_reason}`);
|
|
110
|
-
lines.push(`Continue: ${response.retrieval.continue}`);
|
|
111
|
-
}
|
|
112
|
-
lines.push("Get one: agentera state plan get --plan PLAN_ID --format json");
|
|
113
|
-
return lines.join("\n") + "\n";
|
|
114
|
-
}
|
|
115
108
|
export function runPlans(argv, io) {
|
|
116
109
|
const format = requestedFormat(argv);
|
|
117
110
|
const verb = argv[0];
|
|
@@ -119,20 +112,16 @@ export function runPlans(argv, io) {
|
|
|
119
112
|
return emitFailure(failure(`expected 'list' or 'get', received '${verb ?? "nothing"}'`, "list"), format, io);
|
|
120
113
|
try {
|
|
121
114
|
const args = parse(argv.slice(1), verb);
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
throw new Error("plan schema is unavailable");
|
|
125
|
-
const activePath = artifactPath(schema, "plan");
|
|
115
|
+
if (verb === "get" && (!args.id || args.plan))
|
|
116
|
+
throw failure("entity mode requires --id ID and does not accept --plan", verb);
|
|
126
117
|
const response = verb === "list"
|
|
127
|
-
?
|
|
128
|
-
:
|
|
129
|
-
const
|
|
118
|
+
? listPlanEntities(process.cwd(), args.limit, args.cursor, { format: args.format, ...(args.status ? { statuses: [args.status] } : {}) })
|
|
119
|
+
: getPlanEntity(process.cwd(), args.id);
|
|
120
|
+
const output = io.out ?? ((text) => process.stdout.write(text));
|
|
130
121
|
if (args.format === "json" || args.format === "yaml")
|
|
131
|
-
emitStructured(response, args.format,
|
|
132
|
-
else if (verb === "list")
|
|
133
|
-
out(renderList(response));
|
|
122
|
+
emitStructured(response, args.format, output);
|
|
134
123
|
else
|
|
135
|
-
|
|
124
|
+
output(YAML.stringify(response));
|
|
136
125
|
return 0;
|
|
137
126
|
}
|
|
138
127
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/plans.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/plans.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,SAAS,eAAe,CAAC,IAAc;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,IAAoB;IACpD,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC;IAC7B,OAAO,IAAI,qBAAqB,CAAC;QAC/B,aAAa,EAAE,0BAA0B;QACzC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,KAAK,EAAE,iBAAiB;YACxB,OAAO;YACP,MAAM,EAAE,IAAI;gBACV,CAAC,CAAC,uGAAuG;gBACzG,CAAC,CAAC,+CAA+C;YACnD,OAAO,EAAE,IAAI;gBACX,CAAC,CAAC,mDAAmD;gBACrD,CAAC,CAAC,uDAAuD;YAC3D,QAAQ,EAAE,mFAAmF;YAC7F,YAAY,EAAE,IAAI;gBAChB,CAAC,CAAC,CAAC,MAAM,EAAE,iCAAiC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,CAAC;gBAC5G,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,yBAAyB,CAAC;SAClD;KACF,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAa,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IAClF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,KAAK,CAAC,IAAc,EAAE,IAAoB;IACjD,IAAI,MAAM,GAAW,MAAM,CAAC;IAC5B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,MAA0B,CAAC;IAC/B,IAAI,IAAwB,CAAC;IAC7B,IAAI,EAAsB,CAAC;IAC3B,IAAI,MAA0B,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;QAC9I,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC;YACnK,MAAM,OAAO,CAAC,0BAA0B,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,OAAO,CAAC,GAAG,IAAI,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,MAAuC,CAAC;QAC5C,IAAI,CAAC;YAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QAC9C,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,OAAO,CAAE,KAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QAChE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,qBAAqB,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/H,MAAM,GAAG,MAAM,CAAC,KAAe,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;YAC9G,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;aACjD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,qBAAqB,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;YACxH,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ;YAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;;YAC7C,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3I,CAAC;AAED,SAAS,WAAW,CAAC,KAA4B,EAAE,MAAc,EAAE,EAAM;IACvE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;QAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5H,CAAC;QACJ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,UAAU,MAAM,CAAC,OAAO,EAAE;YAC1B,UAAU,MAAM,CAAC,KAAK,EAAE;YACxB,gBAAgB,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrE,YAAY,MAAM,CAAC,OAAO,EAAE;YAC5B,aAAa,MAAM,CAAC,QAAQ,EAAE;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,EAAM;IAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC,OAAO,CAAC,uCAAuC,IAAI,IAAI,SAAS,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACpJ,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,OAAO,CAAC,yDAAyD,EAAE,IAAI,CAAC,CAAC;QAC9H,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM;YAC9B,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACxI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAG,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;YAC/F,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB;YAAE,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,WAAW,CAAC,IAAI,qBAAqB,CAAC;YAC3C,aAAa,EAAE,0BAA0B;YACzC,MAAM,EAAE,MAAM;YACd,KAAK,EAAE;gBACL,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAG,KAAe,CAAC,OAAO;gBACjC,MAAM,EAAE,0CAA0C;gBAClD,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,2DAA2D;aACtE;SACF,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,47 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const o = out(io);
|
|
13
|
-
const e = err(io);
|
|
14
|
-
const info = schemas.progress;
|
|
15
|
-
if (!info) {
|
|
16
|
-
e(missingSchemaError("progress") + "\n");
|
|
17
|
-
return 1;
|
|
18
|
-
}
|
|
19
|
-
const p = artifactPath(info, "progress");
|
|
20
|
-
const data = loadArtifact(p);
|
|
21
|
-
let entries = extractEntries(data);
|
|
22
|
-
const topic = args.topic ?? null;
|
|
23
|
-
if (topic)
|
|
24
|
-
entries = filterByTopic(entries, topic, info.fields);
|
|
25
|
-
const statusFilter = args.status ?? null;
|
|
26
|
-
if (statusFilter)
|
|
27
|
-
entries = filterByFieldValue(entries, "type", statusFilter);
|
|
28
|
-
const effectiveLimit = (args.limit ?? 5) || 5;
|
|
29
|
-
entries = recentCycles(entries, effectiveLimit);
|
|
30
|
-
if ((args.format ?? "text") !== "text") {
|
|
31
|
-
return emitStateStructured("progress", structuredState("progress", progressEntriesForOutput(entries), sourceMetadata("progress", p), {
|
|
32
|
-
filters: { topic, status: statusFilter, limit: effectiveLimit },
|
|
33
|
-
}), args.format ?? "text", args.fields, o, e);
|
|
34
|
-
}
|
|
35
|
-
if (entries.length === 0)
|
|
36
|
-
return 0;
|
|
37
|
-
for (const entry of entries) {
|
|
38
|
-
o(formatEntry(entry, ["number", "timestamp", "type", "phase"]) + "\n");
|
|
39
|
-
for (const key of ["what", "verified", "next"]) {
|
|
40
|
-
const value = entry[key];
|
|
41
|
-
if (value)
|
|
42
|
-
o(` ${key}: ${truncate(value)}\n`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
1
|
+
import { emitStructured } from "../../structured.js";
|
|
2
|
+
import { listProgressEntities, renderProgressEntityListText } from "../../../state/progressEntities.js";
|
|
3
|
+
import { out } from "./shared.js";
|
|
4
|
+
export function queryProgress(args, _schemas, io) {
|
|
5
|
+
const format = (args.format ?? "text");
|
|
6
|
+
const response = listProgressEntities(process.cwd(), args.limit ?? undefined, { topic: args.topic, status: args.status }, args.cursor ?? undefined, { format });
|
|
7
|
+
const output = out(io);
|
|
8
|
+
if (format === "text")
|
|
9
|
+
output(renderProgressEntityListText(response));
|
|
10
|
+
else
|
|
11
|
+
emitStructured(response, format, output);
|
|
45
12
|
return 0;
|
|
46
13
|
}
|
|
47
14
|
//# sourceMappingURL=progress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/progress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/progress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAAE,GAAG,EAA2B,MAAM,aAAa,CAAC;AAE3D,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,QAAoC,EAAE,EAAM;IACzF,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAA6B,CAAC;IACnE,MAAM,QAAQ,GAAG,oBAAoB,CACnC,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,KAAK,IAAI,SAAS,EACvB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAC1C,IAAI,CAAC,MAAM,IAAI,SAAS,EACxB,EAAE,MAAM,EAAE,CACX,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;;QACjE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,MAAM,UAAU,GAAG,CAAC,EAAM;IACxB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAM;IACxB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
* `state todo` query (TODO.md).
|
|
3
|
-
*
|
|
4
|
-
* Reads TODO.md, partitions entries by severity band (using the
|
|
5
|
-
* protocol glyphs as the section heading), and reports each entry
|
|
6
|
-
* with its severity, status, and description. Supports both the
|
|
7
|
-
* legacy structured YAML shape and the current markdown layout.
|
|
8
|
-
*/
|
|
9
|
-
import fs from "node:fs";
|
|
10
|
-
import { emitStateStructured, extractEntries, filterByFieldValue, formatEntry, loadArtifact, printStatusCounts, sourceMetadata, statusCounts, structuredState, } from "../../stateQuery.js";
|
|
11
|
-
import { artifactPath } from "../../appContext.js";
|
|
12
|
-
import { isResolvedTodoMarkdownStatus, parseTodoMarkdownListItem } from "../../todoMarkdown.js";
|
|
1
|
+
import { emitStructured } from "../../structured.js";
|
|
13
2
|
import { TODO_SEVERITY_ORDER_KEYS } from "../../todoSeverity.js";
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
warning: "⇉",
|
|
19
|
-
normal: "→",
|
|
20
|
-
info: "⇢",
|
|
21
|
-
annoying: "⇢",
|
|
22
|
-
};
|
|
3
|
+
import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
|
|
4
|
+
import { listTodoDocsEntities } from "../../../state/todoDocsEntities.js";
|
|
5
|
+
import YAML from "yaml";
|
|
6
|
+
import { err, out } from "./shared.js";
|
|
23
7
|
export function normalizeSeverity(value, deflt = "normal") {
|
|
24
8
|
const text = String(value || deflt).toLowerCase();
|
|
25
9
|
for (const key of TODO_SEVERITY_ORDER_KEYS) {
|
|
@@ -28,94 +12,31 @@ export function normalizeSeverity(value, deflt = "normal") {
|
|
|
28
12
|
}
|
|
29
13
|
return deflt;
|
|
30
14
|
}
|
|
31
|
-
export function queryTodo(args,
|
|
32
|
-
const
|
|
33
|
-
const info = schemas.todo ?? { path: "TODO.md", record: undefined, schema: {}, fields: {} };
|
|
34
|
-
const todoPath = artifactPath(info, "todo");
|
|
35
|
-
const severity = args.severity ?? null;
|
|
36
|
-
const status = args.status ?? null;
|
|
15
|
+
export function queryTodo(args, _schemas, io, openOnly = false) {
|
|
16
|
+
const output = out(io);
|
|
37
17
|
const format = args.format ?? "text";
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (severity)
|
|
50
|
-
entries = filterByFieldValue(entries, "severity", severity);
|
|
51
|
-
if (status)
|
|
52
|
-
entries = filterByFieldValue(entries, "status", status);
|
|
53
|
-
if (openOnly) {
|
|
54
|
-
entries = entries.filter((entry) => !["done", "closed", "resolved"].includes(String(entry.status ?? "open").toLowerCase()));
|
|
55
|
-
}
|
|
56
|
-
if (format !== "text") {
|
|
57
|
-
return emitStateStructured("todo", structuredState("todo", entries, sourceMetadata("todo", todoPath), {
|
|
58
|
-
filters: { severity, status, open_only: openOnly || null },
|
|
59
|
-
}), format, args.fields, o, err(io));
|
|
60
|
-
}
|
|
61
|
-
printStatusCounts("TODO status", statusCounts(entries), o);
|
|
62
|
-
for (const entry of entries) {
|
|
63
|
-
const line = formatEntry(entry, ["severity", "status", "description", "title"]);
|
|
64
|
-
if (line)
|
|
65
|
-
o(line + "\n");
|
|
66
|
-
}
|
|
67
|
-
return 0;
|
|
68
|
-
}
|
|
69
|
-
const text = fs.readFileSync(todoPath, "utf8");
|
|
70
|
-
const marker = severity ? TODO_SEV_GLYPHS[severity.toLowerCase()] ?? severity : null;
|
|
71
|
-
let currentSection = null;
|
|
72
|
-
const markdownEntries = [];
|
|
73
|
-
for (const rawLine of text.split(/\r\n|\r|\n/)) {
|
|
74
|
-
const sline = rawLine.trim();
|
|
75
|
-
if (sline.startsWith("## ")) {
|
|
76
|
-
const section = sline.slice(3).trim();
|
|
77
|
-
if (section.toLowerCase().includes("resolved")) {
|
|
78
|
-
currentSection = null;
|
|
79
|
-
continue;
|
|
18
|
+
try {
|
|
19
|
+
const response = listTodoDocsEntities(process.cwd(), "todo", args.limit ?? undefined, undefined, {
|
|
20
|
+
...(args.severity ? { severity: args.severity } : {}),
|
|
21
|
+
...(args.status ? { status: args.status } : {}),
|
|
22
|
+
...(openOnly ? { status: "open" } : {}),
|
|
23
|
+
}, { format });
|
|
24
|
+
if (format === "json" || format === "yaml")
|
|
25
|
+
emitStructured(response, format, output);
|
|
26
|
+
else
|
|
27
|
+
for (const entry of response.entries) {
|
|
28
|
+
output(`[${entry.record.severity}] ${entry.id} ${entry.record.status}: ${entry.record.description}\n`);
|
|
80
29
|
}
|
|
81
|
-
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (currentSection === null)
|
|
85
|
-
continue;
|
|
86
|
-
const parsed = parseTodoMarkdownListItem(sline);
|
|
87
|
-
if (!parsed)
|
|
88
|
-
continue;
|
|
89
|
-
if (marker && !currentSection.includes(marker))
|
|
90
|
-
continue;
|
|
91
|
-
const itemStatus = parsed.status;
|
|
92
|
-
if (openOnly && isResolvedTodoMarkdownStatus(itemStatus))
|
|
93
|
-
continue;
|
|
94
|
-
if (status) {
|
|
95
|
-
const want = status.toLowerCase();
|
|
96
|
-
const have = itemStatus.toLowerCase();
|
|
97
|
-
if (want === "open" || want === "todo") {
|
|
98
|
-
if (isResolvedTodoMarkdownStatus(have))
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
else if (have !== want) {
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
markdownEntries.push({
|
|
106
|
-
severity: normalizeSeverity(currentSection),
|
|
107
|
-
status: itemStatus,
|
|
108
|
-
description: parsed.description,
|
|
109
|
-
section: currentSection,
|
|
110
|
-
});
|
|
111
|
-
if (format === "text")
|
|
112
|
-
o(`[${currentSection}] ${parsed.description}\n`);
|
|
30
|
+
return 0;
|
|
113
31
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (!(error instanceof StateRetrievalFailure))
|
|
34
|
+
throw error;
|
|
35
|
+
if (format === "json" || format === "yaml")
|
|
36
|
+
emitStructured(error.body, format, output);
|
|
37
|
+
else
|
|
38
|
+
err(io)(YAML.stringify(error.body));
|
|
39
|
+
return error.exitCode;
|
|
118
40
|
}
|
|
119
|
-
return 0;
|
|
120
41
|
}
|
|
121
42
|
//# sourceMappingURL=todo.js.map
|