@pennyfarthing/core 10.2.0 → 10.3.0
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 +11 -8
- package/package.json +1 -1
- package/packages/core/dist/cli/commands/e2e-fresh-install.test.js +1 -1
- package/packages/core/dist/cli/commands/e2e-fresh-install.test.js.map +1 -1
- package/packages/core/dist/cli/commands/e2e-upgrade.test.js +1 -1
- package/packages/core/dist/cli/commands/e2e-upgrade.test.js.map +1 -1
- package/packages/core/dist/cli/commands/theme.js +1 -1
- package/packages/core/dist/cli/commands/theme.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/themes.js +3 -2
- package/packages/core/dist/cli/utils/themes.js.map +1 -1
- package/packages/core/dist/scripts/add-ocean-profiles.js +1 -1
- package/packages/core/dist/scripts/add-ocean-profiles.js.map +1 -1
- package/packages/core/dist/scripts/generate-all-spiders.js +2 -0
- package/packages/core/dist/scripts/generate-all-spiders.js.map +1 -1
- package/packages/core/dist/scripts/generate-report.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-report.js +2 -0
- package/packages/core/dist/scripts/generate-report.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-spider.js +2 -0
- package/packages/core/dist/scripts/generate-spider.js.map +1 -1
- package/packages/core/dist/scripts/validate-ocean-profiles.js +1 -1
- package/packages/core/dist/scripts/validate-ocean-profiles.js.map +1 -1
- package/packages/core/dist/workflow/file-watch.test.js.map +1 -1
- package/packages/core/dist/workflow/output-path-normalizer.d.ts +47 -0
- package/packages/core/dist/workflow/output-path-normalizer.d.ts.map +1 -0
- package/packages/core/dist/workflow/output-path-normalizer.js +79 -0
- package/packages/core/dist/workflow/output-path-normalizer.js.map +1 -0
- package/packages/core/dist/workflow/output-path-normalizer.test.d.ts +16 -0
- package/packages/core/dist/workflow/output-path-normalizer.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/output-path-normalizer.test.js +157 -0
- package/packages/core/dist/workflow/output-path-normalizer.test.js.map +1 -0
- package/packages/core/dist/workflow/tool-watch.test.js +1 -2
- package/packages/core/dist/workflow/tool-watch.test.js.map +1 -1
- package/packages/core/dist/workflow/variable-resolver.js +1 -1
- package/packages/core/dist/workflow/variable-resolver.js.map +1 -1
- package/pennyfarthing-dist/agents/README.md +3 -1
- package/pennyfarthing-dist/agents/ba.md +165 -0
- package/pennyfarthing-dist/commands/ba.md +17 -0
- package/pennyfarthing-dist/guides/workflow-schema.md +1 -1
- package/pennyfarthing-dist/personas/themes/a-team.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/control.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +31 -0
- package/pennyfarthing-dist/personas/themes/discworld.yaml +31 -0
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +31 -0
- package/pennyfarthing-dist/personas/themes/dune.yaml +32 -0
- package/pennyfarthing-dist/personas/themes/fifth-element.yaml +32 -0
- package/pennyfarthing-dist/personas/themes/firefly.yaml +31 -0
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/mash.yaml +33 -0
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +34 -0
- package/pennyfarthing-dist/personas/themes/sandman.yaml +33 -0
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +34 -0
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +33 -0
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/watchmen.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +30 -0
- package/pennyfarthing-dist/personas/themes/x-files.yaml +30 -0
- package/pennyfarthing-dist/scripts/core/agent-session.sh +1 -1
- package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +2 -2
- package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +1 -0
- package/pennyfarthing-dist/skills/theme/skill.md +1 -1
- package/pennyfarthing-dist/workflows/architecture/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/architecture.yaml +2 -2
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/prd/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/project-context/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/research/workflow.yaml +2 -2
- package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +1 -1
- package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +3 -3
- package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +2 -2
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bellmode_hook.py +1 -1
- package/pennyfarthing_scripts/bikerack/__init__.py +36 -0
- package/pennyfarthing_scripts/bikerack/__main__.py +5 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/cli.py +148 -0
- package/pennyfarthing_scripts/bikerack/launcher.py +181 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/cli.py +5 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/analyze.py +2 -1
- package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__init__.py +2 -0
- package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/cli.py +13 -0
- package/pennyfarthing_scripts/prime/loader.py +70 -0
- package/pennyfarthing_scripts/prime/persona.py +2 -1
- package/pennyfarthing_scripts/prime/tiers.py +13 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_bikerack.py +785 -0
- package/pennyfarthing_scripts/tests/test_topology_loader.py +620 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/skill_command.py +0 -1
- package/packages/core/dist/workflow/context-watch.d.ts +0 -80
- package/packages/core/dist/workflow/context-watch.d.ts.map +0 -1
- package/packages/core/dist/workflow/context-watch.js +0 -235
- package/packages/core/dist/workflow/context-watch.js.map +0 -1
- package/packages/core/dist/workflow/context-watch.test.d.ts +0 -1
- package/packages/core/dist/workflow/context-watch.test.d.ts.map +0 -1
- package/packages/core/dist/workflow/context-watch.test.js +0 -746
- package/packages/core/dist/workflow/context-watch.test.js.map +0 -1
- package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context-watch Observation Scope for Story 95-6
|
|
3
|
-
*
|
|
4
|
-
* Delivers periodic conversation summaries from primary agent to backseat
|
|
5
|
-
* observer at configurable turn intervals. Summary generation is non-blocking.
|
|
6
|
-
* Token overhead stays under 25% per phase when combined with other scopes.
|
|
7
|
-
*
|
|
8
|
-
* Hook side: incrementTurnCounter() tracks tool calls (synchronous, fast).
|
|
9
|
-
* Backseat side: startContextWatcher() polls counter and writes context observations.
|
|
10
|
-
*/
|
|
11
|
-
export interface ContextWatchConfig {
|
|
12
|
-
sessionDir: string;
|
|
13
|
-
storyId: string;
|
|
14
|
-
agent: string;
|
|
15
|
-
persona: string;
|
|
16
|
-
phase: string;
|
|
17
|
-
pollIntervalMs?: number;
|
|
18
|
-
turnInterval?: number;
|
|
19
|
-
observationFilePath?: string;
|
|
20
|
-
sessionFilePath?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface ContextWatchHandle {
|
|
23
|
-
running: boolean;
|
|
24
|
-
pollIntervalMs: number;
|
|
25
|
-
}
|
|
26
|
-
export interface ContextWatchResult<T = unknown> {
|
|
27
|
-
success: boolean;
|
|
28
|
-
data?: T;
|
|
29
|
-
error?: string;
|
|
30
|
-
}
|
|
31
|
-
export interface ContextSnapshotParams {
|
|
32
|
-
sessionDir: string;
|
|
33
|
-
storyId: string;
|
|
34
|
-
sessionFilePath: string;
|
|
35
|
-
turnCount: number;
|
|
36
|
-
}
|
|
37
|
-
export interface ContextSnapshotData {
|
|
38
|
-
content: string;
|
|
39
|
-
estimatedTokens: number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Increment the turn counter for context-watch polling.
|
|
43
|
-
* Called from the PostToolUse hook — must be synchronous and fast.
|
|
44
|
-
*/
|
|
45
|
-
export declare function incrementTurnCounter(sessionDir: string): ContextWatchResult<number>;
|
|
46
|
-
/**
|
|
47
|
-
* Read the current turn counter value.
|
|
48
|
-
*/
|
|
49
|
-
export declare function readTurnCounter(sessionDir: string): ContextWatchResult<number>;
|
|
50
|
-
/**
|
|
51
|
-
* Reset the turn counter to 0.
|
|
52
|
-
*/
|
|
53
|
-
export declare function resetTurnCounter(sessionDir: string): ContextWatchResult;
|
|
54
|
-
/**
|
|
55
|
-
* Pure function: determine whether the current turn count should trigger
|
|
56
|
-
* a context summary based on the configured interval.
|
|
57
|
-
*/
|
|
58
|
-
export declare function shouldTriggerSummary(turnCount: number, interval: number): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Write a context snapshot from the current session file state.
|
|
61
|
-
* Reads the session file, extracts tail content, writes bounded snapshot.
|
|
62
|
-
* Returns snapshot data with estimated token count.
|
|
63
|
-
*/
|
|
64
|
-
export declare function writeContextSnapshot(params: ContextSnapshotParams): ContextWatchResult<ContextSnapshotData>;
|
|
65
|
-
/**
|
|
66
|
-
* Read the most recent context snapshot for a story.
|
|
67
|
-
* Returns empty content if no prior snapshot exists.
|
|
68
|
-
*/
|
|
69
|
-
export declare function readContextSnapshot(sessionDir: string, storyId: string): ContextWatchResult<{
|
|
70
|
-
content: string;
|
|
71
|
-
}>;
|
|
72
|
-
/**
|
|
73
|
-
* Start a polling context watcher that monitors the turn counter and
|
|
74
|
-
* writes context observations at configured intervals.
|
|
75
|
-
*/
|
|
76
|
-
export declare function startContextWatcher(config: ContextWatchConfig): Promise<ContextWatchResult<ContextWatchHandle>>;
|
|
77
|
-
/**
|
|
78
|
-
* Stop a running context watcher. Idempotent — safe to call multiple times.
|
|
79
|
-
*/
|
|
80
|
-
export declare function stopContextWatcher(handle: ContextWatchHandle): Promise<ContextWatchResult>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-watch.d.ts","sourceRoot":"","sources":["../../src/workflow/context-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAEpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAE/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAExE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAE5G;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAElH;AAMD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAEtH;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAEjG"}
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context-watch Observation Scope for Story 95-6
|
|
3
|
-
*
|
|
4
|
-
* Delivers periodic conversation summaries from primary agent to backseat
|
|
5
|
-
* observer at configurable turn intervals. Summary generation is non-blocking.
|
|
6
|
-
* Token overhead stays under 25% per phase when combined with other scopes.
|
|
7
|
-
*
|
|
8
|
-
* Hook side: incrementTurnCounter() tracks tool calls (synchronous, fast).
|
|
9
|
-
* Backseat side: startContextWatcher() polls counter and writes context observations.
|
|
10
|
-
*/
|
|
11
|
-
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
12
|
-
import { join } from 'node:path';
|
|
13
|
-
import { appendObservation } from './observation-writer.js';
|
|
14
|
-
// =============================================================================
|
|
15
|
-
// Internal state
|
|
16
|
-
// =============================================================================
|
|
17
|
-
const DEFAULT_TURN_INTERVAL = 5;
|
|
18
|
-
const DEFAULT_POLL_MS = 1000;
|
|
19
|
-
const MAX_SNAPSHOT_CHARS = 2000;
|
|
20
|
-
const COUNTER_FILENAME = '.tandem-turn-counter';
|
|
21
|
-
const timers = new WeakMap();
|
|
22
|
-
const lastProcessedTurn = new WeakMap();
|
|
23
|
-
// =============================================================================
|
|
24
|
-
// Turn Counter
|
|
25
|
-
// =============================================================================
|
|
26
|
-
/**
|
|
27
|
-
* Increment the turn counter for context-watch polling.
|
|
28
|
-
* Called from the PostToolUse hook — must be synchronous and fast.
|
|
29
|
-
*/
|
|
30
|
-
export function incrementTurnCounter(sessionDir) {
|
|
31
|
-
try {
|
|
32
|
-
if (!existsSync(sessionDir)) {
|
|
33
|
-
return { success: false, error: `Session directory does not exist: ${sessionDir}` };
|
|
34
|
-
}
|
|
35
|
-
const counterFile = join(sessionDir, COUNTER_FILENAME);
|
|
36
|
-
let count = 0;
|
|
37
|
-
if (existsSync(counterFile)) {
|
|
38
|
-
const raw = readFileSync(counterFile, 'utf-8').trim();
|
|
39
|
-
const parsed = parseInt(raw, 10);
|
|
40
|
-
if (!isNaN(parsed)) {
|
|
41
|
-
count = parsed;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
count += 1;
|
|
45
|
-
writeFileSync(counterFile, String(count), 'utf-8');
|
|
46
|
-
return { success: true, data: count };
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Read the current turn counter value.
|
|
54
|
-
*/
|
|
55
|
-
export function readTurnCounter(sessionDir) {
|
|
56
|
-
try {
|
|
57
|
-
const counterFile = join(sessionDir, COUNTER_FILENAME);
|
|
58
|
-
if (!existsSync(counterFile)) {
|
|
59
|
-
return { success: true, data: 0 };
|
|
60
|
-
}
|
|
61
|
-
const raw = readFileSync(counterFile, 'utf-8').trim();
|
|
62
|
-
const parsed = parseInt(raw, 10);
|
|
63
|
-
if (isNaN(parsed)) {
|
|
64
|
-
return { success: true, data: 0 };
|
|
65
|
-
}
|
|
66
|
-
return { success: true, data: parsed };
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Reset the turn counter to 0.
|
|
74
|
-
*/
|
|
75
|
-
export function resetTurnCounter(sessionDir) {
|
|
76
|
-
try {
|
|
77
|
-
const counterFile = join(sessionDir, COUNTER_FILENAME);
|
|
78
|
-
writeFileSync(counterFile, '0', 'utf-8');
|
|
79
|
-
return { success: true };
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Pure function: determine whether the current turn count should trigger
|
|
87
|
-
* a context summary based on the configured interval.
|
|
88
|
-
*/
|
|
89
|
-
export function shouldTriggerSummary(turnCount, interval) {
|
|
90
|
-
if (turnCount <= 0)
|
|
91
|
-
return false;
|
|
92
|
-
return turnCount % interval === 0;
|
|
93
|
-
}
|
|
94
|
-
// =============================================================================
|
|
95
|
-
// Context Snapshots
|
|
96
|
-
// =============================================================================
|
|
97
|
-
/**
|
|
98
|
-
* Write a context snapshot from the current session file state.
|
|
99
|
-
* Reads the session file, extracts tail content, writes bounded snapshot.
|
|
100
|
-
* Returns snapshot data with estimated token count.
|
|
101
|
-
*/
|
|
102
|
-
export function writeContextSnapshot(params) {
|
|
103
|
-
try {
|
|
104
|
-
const { sessionDir, storyId, sessionFilePath, turnCount } = params;
|
|
105
|
-
if (!existsSync(sessionFilePath)) {
|
|
106
|
-
return { success: false, error: `Session file not found: ${sessionFilePath}` };
|
|
107
|
-
}
|
|
108
|
-
const sessionContent = readFileSync(sessionFilePath, 'utf-8');
|
|
109
|
-
// Extract the tail of the session file, bounded to MAX_SNAPSHOT_CHARS
|
|
110
|
-
// This captures the most recent context
|
|
111
|
-
const tailContent = sessionContent.length > MAX_SNAPSHOT_CHARS
|
|
112
|
-
? sessionContent.slice(-MAX_SNAPSHOT_CHARS)
|
|
113
|
-
: sessionContent;
|
|
114
|
-
// Build snapshot with turn context
|
|
115
|
-
const content = `Context summary at turn ${turnCount}:\n${tailContent}`.slice(0, MAX_SNAPSHOT_CHARS);
|
|
116
|
-
const estimatedTokens = Math.ceil(content.length / 4);
|
|
117
|
-
// Write snapshot to disk for accumulation
|
|
118
|
-
const snapshotFile = join(sessionDir, `${storyId}-tandem-context.md`);
|
|
119
|
-
writeFileSync(snapshotFile, content, 'utf-8');
|
|
120
|
-
return { success: true, data: { content, estimatedTokens } };
|
|
121
|
-
}
|
|
122
|
-
catch (err) {
|
|
123
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Read the most recent context snapshot for a story.
|
|
128
|
-
* Returns empty content if no prior snapshot exists.
|
|
129
|
-
*/
|
|
130
|
-
export function readContextSnapshot(sessionDir, storyId) {
|
|
131
|
-
try {
|
|
132
|
-
const snapshotFile = join(sessionDir, `${storyId}-tandem-context.md`);
|
|
133
|
-
if (!existsSync(snapshotFile)) {
|
|
134
|
-
return { success: true, data: { content: '' } };
|
|
135
|
-
}
|
|
136
|
-
const content = readFileSync(snapshotFile, 'utf-8');
|
|
137
|
-
return { success: true, data: { content } };
|
|
138
|
-
}
|
|
139
|
-
catch (err) {
|
|
140
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
// =============================================================================
|
|
144
|
-
// Watcher
|
|
145
|
-
// =============================================================================
|
|
146
|
-
/**
|
|
147
|
-
* Start a polling context watcher that monitors the turn counter and
|
|
148
|
-
* writes context observations at configured intervals.
|
|
149
|
-
*/
|
|
150
|
-
export async function startContextWatcher(config) {
|
|
151
|
-
try {
|
|
152
|
-
const pollIntervalMs = config.pollIntervalMs ?? DEFAULT_POLL_MS;
|
|
153
|
-
const turnInterval = config.turnInterval ?? DEFAULT_TURN_INTERVAL;
|
|
154
|
-
const handle = {
|
|
155
|
-
running: true,
|
|
156
|
-
pollIntervalMs,
|
|
157
|
-
};
|
|
158
|
-
lastProcessedTurn.set(handle, 0);
|
|
159
|
-
const timer = setInterval(() => {
|
|
160
|
-
if (!handle.running)
|
|
161
|
-
return;
|
|
162
|
-
try {
|
|
163
|
-
// Read current turn counter
|
|
164
|
-
const counterResult = readTurnCounter(config.sessionDir);
|
|
165
|
-
if (!counterResult.success || counterResult.data === undefined)
|
|
166
|
-
return;
|
|
167
|
-
const currentTurn = counterResult.data;
|
|
168
|
-
const prevTurn = lastProcessedTurn.get(handle) ?? 0;
|
|
169
|
-
// Check if we've crossed a new interval boundary since last poll
|
|
170
|
-
if (currentTurn <= prevTurn)
|
|
171
|
-
return;
|
|
172
|
-
// Find interval boundaries between prevTurn and currentTurn
|
|
173
|
-
let triggered = false;
|
|
174
|
-
for (let t = prevTurn + 1; t <= currentTurn; t++) {
|
|
175
|
-
if (shouldTriggerSummary(t, turnInterval)) {
|
|
176
|
-
triggered = true;
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
lastProcessedTurn.set(handle, currentTurn);
|
|
181
|
-
if (!triggered)
|
|
182
|
-
return;
|
|
183
|
-
if (!config.sessionFilePath)
|
|
184
|
-
return;
|
|
185
|
-
// Generate context snapshot
|
|
186
|
-
const snapshotResult = writeContextSnapshot({
|
|
187
|
-
sessionDir: config.sessionDir,
|
|
188
|
-
storyId: config.storyId,
|
|
189
|
-
sessionFilePath: config.sessionFilePath,
|
|
190
|
-
turnCount: currentTurn,
|
|
191
|
-
});
|
|
192
|
-
if (!snapshotResult.success || !snapshotResult.data)
|
|
193
|
-
return;
|
|
194
|
-
if (!config.observationFilePath)
|
|
195
|
-
return;
|
|
196
|
-
// Write observation
|
|
197
|
-
try {
|
|
198
|
-
appendObservation(config.observationFilePath, {
|
|
199
|
-
triggerType: 'context-watch',
|
|
200
|
-
triggerDetail: `summary at turn ${currentTurn}`,
|
|
201
|
-
observation: snapshotResult.data.content,
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
catch {
|
|
205
|
-
// Error resilience — continue polling
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
catch {
|
|
209
|
-
// Error resilience — continue polling
|
|
210
|
-
}
|
|
211
|
-
}, pollIntervalMs);
|
|
212
|
-
timers.set(handle, timer);
|
|
213
|
-
return { success: true, data: handle };
|
|
214
|
-
}
|
|
215
|
-
catch (err) {
|
|
216
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Stop a running context watcher. Idempotent — safe to call multiple times.
|
|
221
|
-
*/
|
|
222
|
-
export async function stopContextWatcher(handle) {
|
|
223
|
-
try {
|
|
224
|
-
handle.running = false;
|
|
225
|
-
const timer = timers.get(handle);
|
|
226
|
-
if (timer) {
|
|
227
|
-
clearInterval(timer);
|
|
228
|
-
timers.delete(handle);
|
|
229
|
-
}
|
|
230
|
-
return { success: true };
|
|
231
|
-
}
|
|
232
|
-
catch (err) {
|
|
233
|
-
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
234
|
-
}
|
|
235
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-watch.js","sourceRoot":"","sources":["../../src/workflow/context-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyCH,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,SAAiB;IACxE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAAgB;IACvE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAA2B;IACnE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-watch.test.d.ts","sourceRoot":"","sources":["../../src/workflow/context-watch.test.ts"],"names":[],"mappings":""}
|