pdl-taskmaster 2.4.0__tar.gz → 2.5.1__tar.gz
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.
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/.gitignore +2 -0
- pdl_taskmaster-2.5.1/NOTICE.md +28 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/PKG-INFO +22 -7
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/README.md +18 -4
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/docs/adr/README.md +5 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/pyproject.toml +2 -3
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/__init__.py +1 -1
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/result_ir_repair.schema.json +21 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/host/app.py +2 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/host/cli.py +17 -1
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/host/repl.py +534 -51
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/api_worker.py +290 -44
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/__init__.py +20 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/client.py +102 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/gating.py +82 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/__init__.py +16 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/activation_route.py +71 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/base.py +54 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/confirmation_match.py +78 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/problem_class.py +95 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/recipes/review_facets.py +155 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys1/schema.py +66 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys2/__init__.py +5 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/providers/sys2/client.py +51 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/model_classification.py +38 -2
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/operation_bridge.py +133 -11
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/result_ir.py +260 -44
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/session_engine.py +385 -14
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/wire_payloads.py +118 -11
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/tools/repl_viewer.html +276 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/tools/viewer_server.py +272 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/tracking/log_live_session.py +16 -3
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/__init__.py +26 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/checkers/__init__.py +14 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/checkers/base.py +37 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/checkers/fallback.py +77 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/checkers/partition_sum_triples.py +227 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/output_verifier.py +73 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/plan_soundness.py +135 -0
- pdl_taskmaster-2.5.1/src/pdl_taskmaster/verification/sandbox.py +398 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/verify/verify_repl_baseline.py +23 -5
- pdl_taskmaster-2.5.1/tests/test_bump_version.py +45 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_codex_decoupling.py +2 -2
- pdl_taskmaster-2.5.1/tests/test_dev_mode.py +205 -0
- pdl_taskmaster-2.5.1/tests/test_output_verifier.py +238 -0
- pdl_taskmaster-2.5.1/tests/test_plan_soundness.py +130 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_pydantic_wire.py +68 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_repl_integration.py +14 -0
- pdl_taskmaster-2.5.1/tests/test_repl_paste.py +140 -0
- pdl_taskmaster-2.5.1/tests/test_sandbox.py +76 -0
- pdl_taskmaster-2.5.1/tests/test_sys1_foundation.py +170 -0
- pdl_taskmaster-2.5.1/tests/test_sys1_recipes.py +142 -0
- pdl_taskmaster-2.5.1/tests/test_sys1_worker_wiring.py +215 -0
- pdl_taskmaster-2.5.1/tests/test_viewer_command.py +51 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_wire_repairs.py +109 -0
- pdl_taskmaster-2.5.1/tests/test_witness_projection.py +147 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/LICENSE +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/AUTHORITY_MAP.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/CALIBRATION.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/CONTRACT_MANIFEST.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/EXECUTION_CONTRACT.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/IMPLEMENTATION_BOUNDARY.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/VERIFICATION_CONTRACT.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/ARTIFACT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/AUTHORITY_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/CONFORMANCE_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/CONTEXT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/EXECUTION_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/HANDOFF_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/INSTALLATION_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/PDL_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/PROMPT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/PROTOCOL_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/RESPONSE_PLAN_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/RESULT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/REVIEW_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/SEMANTIC_INPUT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/contracts/standards/TASK_SEMANTICS_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/AUTHORITY_MAP.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/CALIBRATION.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/CONTRACT_MANIFEST.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/EXECUTION_CONTRACT.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/IMPLEMENTATION_BOUNDARY.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/VERIFICATION_CONTRACT.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/ARTIFACT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/AUTHORITY_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/CONFORMANCE_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/CONTEXT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/EXECUTION_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/HANDOFF_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/INSTALLATION_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/PDL_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/PROMPT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/PROTOCOL_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/RESPONSE_PLAN_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/RESULT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/REVIEW_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/SEMANTIC_INPUT_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/contracts/standards/TASK_SEMANTICS_STANDARD.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/mechanical_controller.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/activation_decision.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/artifact_body.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/artifact_review_facts.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/bootstrap_analysis.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/execution_draft.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/execution_input_decision.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/execution_outcome.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/plan_artifact.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/prompt_artifact.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/controller/schemas/protocol_discussion.schema.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/build_adversarial_battery.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/compare_eval_runs.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/control_api_call.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/export_rlcd_dataset.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/fidelity_scan.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/gen_fidelity_battery.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/leak_scan.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/rerecord_fixtures.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/run_canary_shape_probe.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/run_dual_gate_probe.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/run_qualified_batch.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/eval/summarize_run.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/host/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/cli.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/observed_session.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/parsers.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/records.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/session.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/sink.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/observation/sinks.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/README.md +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/base.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/codex_worker.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/fixtures.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/live_stub.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/providers/recorded.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/py.typed +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/context_compiler.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/normative_store.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/presentation.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/quarantine.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/semantic_observer.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/standard_registry.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/worker-bootstrap.txt +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/runtime/workspace.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/tracking/__init__.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/src/pdl_taskmaster/tracking/mlflow_sink.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/FIXTURE_MANIFEST.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/BND-00/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-04/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-05/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-06/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-07/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-08/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-09/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/DRIP-10/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-04/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-05/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-06/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-07/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-08/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-09/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/ENC-10/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/F4-CONTRADICTION/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/MANIFEST.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/STACK-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/STACK-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/STACK-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/STACK-04/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/adversarial/STACK-05/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/ACTOR-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/ACTOR-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/ACTOR-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/DISAMB-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/DISAMB-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/DISAMB-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/DISAMB-04/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MANIFEST.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-01/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-02/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-03/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-04/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-05/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/fidelity/MC-06/turns.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/fixtures/recorded-cases.json +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_adversarial_battery.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_evidence_sink.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_fidelity_scan.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_harness_baseline.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_mlflow_logger.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_phase9_turns.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_quarantine.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_quarantine_generalized.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_rlcd_dataset.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_sem05_wiring.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_task_entities.py +0 -0
- {pdl_taskmaster-2.4.0 → pdl_taskmaster-2.5.1}/tests/test_v230_features.py +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Notices and attribution
|
|
2
|
+
|
|
3
|
+
## Project license
|
|
4
|
+
|
|
5
|
+
Original project code and documentation are released under the
|
|
6
|
+
[MIT License](LICENSE).
|
|
7
|
+
|
|
8
|
+
## Pseudocode-standard compatibility
|
|
9
|
+
|
|
10
|
+
The local PDL compatibility profile was informed by a supplied HTML snapshot
|
|
11
|
+
titled **Pseudocode Standard**, attributed in its source history to J. Dalbey
|
|
12
|
+
and published on the Cal Poly course site at:
|
|
13
|
+
|
|
14
|
+
<https://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html>
|
|
15
|
+
|
|
16
|
+
The public bundle does not include the supplied HTML snapshot or copy its prose
|
|
17
|
+
or examples. It contains a project-authored description of the functional
|
|
18
|
+
notation and an original set of examples needed for compatibility. That local
|
|
19
|
+
profile is released under MIT with the project's other original contributions.
|
|
20
|
+
The source title, author attribution, and site name are used only for provenance
|
|
21
|
+
and compatibility identification; their rights remain with their respective
|
|
22
|
+
owners.
|
|
23
|
+
|
|
24
|
+
## Evaluation models and product names
|
|
25
|
+
|
|
26
|
+
Model, product, and organization names in the evaluation documentation are
|
|
27
|
+
used for identification and do not imply endorsement. Their marks remain the
|
|
28
|
+
property of their respective owners.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: pdl-taskmaster
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.1
|
|
4
4
|
Summary: Deterministic protocol governance and bounded AI agent harness
|
|
5
5
|
Author: PDL-Standard Contributors
|
|
6
|
-
License
|
|
6
|
+
License: MIT
|
|
7
7
|
License-File: LICENSE
|
|
8
|
+
License-File: NOTICE.md
|
|
8
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
9
10
|
Classifier: Intended Audience :: Developers
|
|
10
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -52,6 +53,8 @@ docs/ documentation
|
|
|
52
53
|
architecture/ framing.md, whitepaper.md, protocol specs
|
|
53
54
|
operations/ eval-metrics.md, efficiency-report.md
|
|
54
55
|
governance/ roadmap.md, experiment-log.md (full decision history)
|
|
56
|
+
releases/ v2.5.0.md release notes
|
|
57
|
+
ABLATIONS.md substantive correctness and dual-plane empirical ablations
|
|
55
58
|
adr/ trd/ background architecture-decision records (history, not required reading)
|
|
56
59
|
```
|
|
57
60
|
|
|
@@ -93,7 +96,7 @@ pdlt # Launch interactive REPL (default)
|
|
|
93
96
|
|
|
94
97
|
```powershell
|
|
95
98
|
pdlt verify # Deterministic baseline verifier
|
|
96
|
-
pytest # Run complete test suite (offline,
|
|
99
|
+
pytest # Run complete test suite (offline, 174 passed, 2 skipped)
|
|
97
100
|
```
|
|
98
101
|
|
|
99
102
|
The verifier checks required runtime/instructional files, imports, the zero-template workspace invariant, fixture hashes, REPL subprocess-script presence, source-repository isolation, a fresh-workspace lifecycle test (prompt → plan → execute → result), and resuming that same workspace. All verifier workspaces are temporary.
|
|
@@ -107,22 +110,34 @@ pdlt --worker recorded --case-ids G06 --new-session
|
|
|
107
110
|
|
|
108
111
|
Recorded mode is **exact, deterministic replay**: it only responds to the exact interaction sequences captured in the fixture (`G06`: full lifecycle; `A02`: prompt revision). Use `--quit` to exit — there's no `/exit` command.
|
|
109
112
|
|
|
110
|
-
Commands: `/help`, `/status`, `/session`, `/new`, `/resume`, `/mlflow [on|off]`, `/tokens [on|off]`, `/timeout [seconds]`, `/model [name]`, `/worker [api|codex|recorded]`, `/config` (codex only), `/sandbox` (codex only), `/workdir [path]`, `/transcript [path]`, `/quit`.
|
|
113
|
+
Commands: `/help`, `/status`, `/session`, `/new`, `/resume`, `/dev [on|off]`, `/mlflow [on|off]`, `/tokens [on|off]`, `/timeout [seconds]`, `/model [name]`, `/worker [api|codex|recorded]`, `/config` (codex only), `/sandbox` (codex only), `/workdir [path]`, `/transcript [path]`, `/paste` (or `"""`), `/quit`.
|
|
111
114
|
|
|
112
115
|
Fast-path review commands: `/confirm`, `/revise <feedback>`, `/stop`.
|
|
113
116
|
|
|
114
117
|
## Live model worker (default)
|
|
115
118
|
|
|
116
119
|
```powershell
|
|
117
|
-
# Default worker is 'api' with model '
|
|
120
|
+
# Default worker is 'api' with model 'openai/gpt-oss-120b'
|
|
118
121
|
pdlt --new-session
|
|
119
122
|
# or: python -m pdl_taskmaster.host.repl --candidate-repo . --new-session
|
|
120
123
|
```
|
|
121
124
|
|
|
122
|
-
> **System 1 / System 2 Architecture Note**: Production default is `--worker api` (System 2
|
|
125
|
+
> **System 1 / System 2 Architecture Note**: Production default is `--worker api` (System 2: `openai/gpt-oss-120b` with reasoning effort `low`; benchmarks evaluated on `z-ai/glm-4.7`). Local fast System 1 classification models are undergoing contrastive RLCD fine-tuning (ADR-0012) and fail-closed to System 2 via the confidence ladder if threshold ($0.85$) or top-2 margin ($0.40$) are unmet.
|
|
123
126
|
|
|
124
127
|
`--worker api` sends the compiled interpretation/plan directly to an OpenAI-compatible `/responses` endpoint (instructions bundled in `src/pdl_taskmaster/runtime/worker-bootstrap.txt`), with no tool definitions, sandbox, or agentic system prompt attached — deliberately; see the "instruction-lightness" finding in the whitepaper (§3).
|
|
125
128
|
|
|
129
|
+
### REPL Dev Mode & Substantive Verification
|
|
130
|
+
|
|
131
|
+
```powershell
|
|
132
|
+
pdlt --dev # Launch with live telemetry inspector and stage controls
|
|
133
|
+
pdlt --dev --exit-on-close # Headless test run: exit when CLOSED_SUCCESS or error reached
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
- **Interactive Telemetry Inspector**: Displays real-time controller stage transitions, entity drops, and verification events.
|
|
137
|
+
- **Substantive Witness Verification & OS Sandbox**: For combinatorial and algorithmic tasks, execution occurs within an OS-confined sandbox (Job Objects on Windows, `rlimit` on POSIX) with deterministic witness verification ([ADR-0013](docs/adr/0013-substantive-correctness-verification.md), [ADR-0015](docs/adr/0015-model-synthesized-verification-and-confinement-boundaries.md)).
|
|
138
|
+
- **Deliverable Formatting**: Automatic ASCII-safe human/agent deliverable cards (`format_friendly_deliverable`) replacing raw Result IR wire blocks in user view.
|
|
139
|
+
- **Empirical Benchmarks & Ablations**: Full evaluation results comparing System 1, ungrounded System 2, and the dual-plane harness: [`docs/ABLATIONS.md`](docs/ABLATIONS.md).
|
|
140
|
+
|
|
126
141
|
### Efficiency flags (`--worker api`)
|
|
127
142
|
|
|
128
143
|
- `--api-reasoning-effort low|medium|high` — reasoning budget override, applied globally.
|
|
@@ -26,6 +26,8 @@ docs/ documentation
|
|
|
26
26
|
architecture/ framing.md, whitepaper.md, protocol specs
|
|
27
27
|
operations/ eval-metrics.md, efficiency-report.md
|
|
28
28
|
governance/ roadmap.md, experiment-log.md (full decision history)
|
|
29
|
+
releases/ v2.5.0.md release notes
|
|
30
|
+
ABLATIONS.md substantive correctness and dual-plane empirical ablations
|
|
29
31
|
adr/ trd/ background architecture-decision records (history, not required reading)
|
|
30
32
|
```
|
|
31
33
|
|
|
@@ -67,7 +69,7 @@ pdlt # Launch interactive REPL (default)
|
|
|
67
69
|
|
|
68
70
|
```powershell
|
|
69
71
|
pdlt verify # Deterministic baseline verifier
|
|
70
|
-
pytest # Run complete test suite (offline,
|
|
72
|
+
pytest # Run complete test suite (offline, 174 passed, 2 skipped)
|
|
71
73
|
```
|
|
72
74
|
|
|
73
75
|
The verifier checks required runtime/instructional files, imports, the zero-template workspace invariant, fixture hashes, REPL subprocess-script presence, source-repository isolation, a fresh-workspace lifecycle test (prompt → plan → execute → result), and resuming that same workspace. All verifier workspaces are temporary.
|
|
@@ -81,22 +83,34 @@ pdlt --worker recorded --case-ids G06 --new-session
|
|
|
81
83
|
|
|
82
84
|
Recorded mode is **exact, deterministic replay**: it only responds to the exact interaction sequences captured in the fixture (`G06`: full lifecycle; `A02`: prompt revision). Use `--quit` to exit — there's no `/exit` command.
|
|
83
85
|
|
|
84
|
-
Commands: `/help`, `/status`, `/session`, `/new`, `/resume`, `/mlflow [on|off]`, `/tokens [on|off]`, `/timeout [seconds]`, `/model [name]`, `/worker [api|codex|recorded]`, `/config` (codex only), `/sandbox` (codex only), `/workdir [path]`, `/transcript [path]`, `/quit`.
|
|
86
|
+
Commands: `/help`, `/status`, `/session`, `/new`, `/resume`, `/dev [on|off]`, `/mlflow [on|off]`, `/tokens [on|off]`, `/timeout [seconds]`, `/model [name]`, `/worker [api|codex|recorded]`, `/config` (codex only), `/sandbox` (codex only), `/workdir [path]`, `/transcript [path]`, `/paste` (or `"""`), `/quit`.
|
|
85
87
|
|
|
86
88
|
Fast-path review commands: `/confirm`, `/revise <feedback>`, `/stop`.
|
|
87
89
|
|
|
88
90
|
## Live model worker (default)
|
|
89
91
|
|
|
90
92
|
```powershell
|
|
91
|
-
# Default worker is 'api' with model '
|
|
93
|
+
# Default worker is 'api' with model 'openai/gpt-oss-120b'
|
|
92
94
|
pdlt --new-session
|
|
93
95
|
# or: python -m pdl_taskmaster.host.repl --candidate-repo . --new-session
|
|
94
96
|
```
|
|
95
97
|
|
|
96
|
-
> **System 1 / System 2 Architecture Note**: Production default is `--worker api` (System 2
|
|
98
|
+
> **System 1 / System 2 Architecture Note**: Production default is `--worker api` (System 2: `openai/gpt-oss-120b` with reasoning effort `low`; benchmarks evaluated on `z-ai/glm-4.7`). Local fast System 1 classification models are undergoing contrastive RLCD fine-tuning (ADR-0012) and fail-closed to System 2 via the confidence ladder if threshold ($0.85$) or top-2 margin ($0.40$) are unmet.
|
|
97
99
|
|
|
98
100
|
`--worker api` sends the compiled interpretation/plan directly to an OpenAI-compatible `/responses` endpoint (instructions bundled in `src/pdl_taskmaster/runtime/worker-bootstrap.txt`), with no tool definitions, sandbox, or agentic system prompt attached — deliberately; see the "instruction-lightness" finding in the whitepaper (§3).
|
|
99
101
|
|
|
102
|
+
### REPL Dev Mode & Substantive Verification
|
|
103
|
+
|
|
104
|
+
```powershell
|
|
105
|
+
pdlt --dev # Launch with live telemetry inspector and stage controls
|
|
106
|
+
pdlt --dev --exit-on-close # Headless test run: exit when CLOSED_SUCCESS or error reached
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- **Interactive Telemetry Inspector**: Displays real-time controller stage transitions, entity drops, and verification events.
|
|
110
|
+
- **Substantive Witness Verification & OS Sandbox**: For combinatorial and algorithmic tasks, execution occurs within an OS-confined sandbox (Job Objects on Windows, `rlimit` on POSIX) with deterministic witness verification ([ADR-0013](docs/adr/0013-substantive-correctness-verification.md), [ADR-0015](docs/adr/0015-model-synthesized-verification-and-confinement-boundaries.md)).
|
|
111
|
+
- **Deliverable Formatting**: Automatic ASCII-safe human/agent deliverable cards (`format_friendly_deliverable`) replacing raw Result IR wire blocks in user view.
|
|
112
|
+
- **Empirical Benchmarks & Ablations**: Full evaluation results comparing System 1, ungrounded System 2, and the dual-plane harness: [`docs/ABLATIONS.md`](docs/ABLATIONS.md).
|
|
113
|
+
|
|
100
114
|
### Efficiency flags (`--worker api`)
|
|
101
115
|
|
|
102
116
|
- `--api-reasoning-effort low|medium|high` — reasoning budget override, applied globally.
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
| [ADR-0010](0010-pydantic-wire-enforcement.md) | Accepted | Pydantic v2 schema enforcement and automated operator retry corrections for wire contracts. |
|
|
15
15
|
| [ADR-0011](0011-in-memory-vfs-and-microvm-sandboxing.md) | Accepted | Software-defined in-memory VFS context flow and ephemeral MicroVM agent sandboxing via MCP. |
|
|
16
16
|
| [ADR-0012](0012-system-1-decision-models-via-rlcd.md) | Accepted | Realign Track L to System 1 decision models (Laya/Jev) aligned via RLCD contrastive distillation. |
|
|
17
|
+
| [ADR-0013](0013-substantive-correctness-verification.md) | Proposed | Verified execution and bidirectional witness retention for substantive correctness. |
|
|
18
|
+
| [ADR-0014](0014-dual-plane-boundary-and-wire-conformance.md) | Accepted | Dual-plane boundary architecture: positive structural guidance, wire-level Pydantic contract enforcement, and tripartite clause governance. |
|
|
19
|
+
| [ADR-0015](0015-model-synthesized-verification-and-confinement-boundaries.md) | Proposed | Model-synthesized verification and confinement boundaries in ephemeral sandboxes. |
|
|
20
|
+
| [ADR-0016](0016-pydantic-ssot-wire-and-deliverable-boundary-enforcement.md) | Accepted | Pydantic Single Source of Truth (SSOT) for wire and deliverable boundary enforcement. |
|
|
21
|
+
| [ADR-0017](0017-dual-plane-runtime-realignment-and-mrv-solver-governance.md) | Accepted | Dual-Plane Runtime Realignment: System 1 (Jev) Baseline & Constraint-Ordered Solver Governance. |
|
|
17
22
|
|
|
18
23
|
The records are intentionally separated so UI, context construction, execution
|
|
19
24
|
isolation, output representation, and reasoning policy can evolve without
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["hatchling"]
|
|
2
|
+
requires = ["hatchling<1.26.0"]
|
|
3
3
|
build-backend = "hatchling.build"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
@@ -8,8 +8,7 @@ dynamic = ["version"]
|
|
|
8
8
|
description = "Deterministic protocol governance and bounded AI agent harness"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
|
-
license = "MIT"
|
|
12
|
-
license-files = ["LICENSE"]
|
|
11
|
+
license = { text = "MIT" }
|
|
13
12
|
authors = [
|
|
14
13
|
{ name = "PDL-Standard Contributors" },
|
|
15
14
|
]
|
|
@@ -16,6 +16,27 @@
|
|
|
16
16
|
"open_defects"
|
|
17
17
|
],
|
|
18
18
|
"properties": {
|
|
19
|
+
"witness": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"description": "Witness certifying substantive execution correctness (ADR-0013 / ADR-0015).",
|
|
22
|
+
"properties": {
|
|
23
|
+
"polarity": { "type": "string", "enum": ["positive", "negative"] },
|
|
24
|
+
"evidence": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {
|
|
27
|
+
"path": { "type": "string" },
|
|
28
|
+
"section": { "type": "string" },
|
|
29
|
+
"observed": { "type": "string" }
|
|
30
|
+
},
|
|
31
|
+
"required": ["path"]
|
|
32
|
+
},
|
|
33
|
+
"data": { "type": "object" },
|
|
34
|
+
"search_exhausted": { "type": "boolean" },
|
|
35
|
+
"nodes_explored": { "type": "integer" },
|
|
36
|
+
"method": { "type": "string" }
|
|
37
|
+
},
|
|
38
|
+
"required": ["polarity"]
|
|
39
|
+
},
|
|
19
40
|
"files": {
|
|
20
41
|
"type": "array",
|
|
21
42
|
"items": {
|
|
@@ -84,6 +84,7 @@ class PDLtHost:
|
|
|
84
84
|
higher_priority_constraints=self.higher_priority_constraints,
|
|
85
85
|
available_execution_tools=[],
|
|
86
86
|
render_compact=self.render_compact,
|
|
87
|
+
sys1_client=getattr(self.worker, "sys1_client", None),
|
|
87
88
|
)
|
|
88
89
|
except Exception as exc:
|
|
89
90
|
# Graceful degradation: a session with no committed protocol
|
|
@@ -99,6 +100,7 @@ class PDLtHost:
|
|
|
99
100
|
available_execution_tools=[],
|
|
100
101
|
workspace_root=self.workspace_root,
|
|
101
102
|
render_compact=self.render_compact,
|
|
103
|
+
sys1_client=getattr(self.worker, "sys1_client", None),
|
|
102
104
|
)
|
|
103
105
|
self.engine = engine
|
|
104
106
|
if self.observation_dir is not None:
|
|
@@ -73,7 +73,13 @@ def _cmd_verify(argv: list[str]) -> int:
|
|
|
73
73
|
return verify_main()
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
def
|
|
76
|
+
def _cmd_viewer(argv: list[str]) -> int:
|
|
77
|
+
from pdl_taskmaster.tools.viewer_server import main as viewer_main
|
|
78
|
+
|
|
79
|
+
return viewer_main(argv)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _main_impl(argv: list[str] | None = None) -> int:
|
|
77
83
|
if argv is None:
|
|
78
84
|
argv = sys.argv[1:]
|
|
79
85
|
|
|
@@ -89,6 +95,8 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
89
95
|
return _cmd_init(argv[1:])
|
|
90
96
|
if subcmd == "verify":
|
|
91
97
|
return _cmd_verify(argv[1:])
|
|
98
|
+
if subcmd in {"viewer", "ui", "dashboard"}:
|
|
99
|
+
return _cmd_viewer(argv[1:])
|
|
92
100
|
|
|
93
101
|
# Default: route all other invocations to REPL
|
|
94
102
|
from pdl_taskmaster.host.repl import main as repl_main
|
|
@@ -96,5 +104,13 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
96
104
|
return repl_main()
|
|
97
105
|
|
|
98
106
|
|
|
107
|
+
def main(argv: list[str] | None = None) -> int:
|
|
108
|
+
try:
|
|
109
|
+
return _main_impl(argv)
|
|
110
|
+
except KeyboardInterrupt:
|
|
111
|
+
print("\n[session terminated by user]", file=sys.stderr, flush=True)
|
|
112
|
+
return 130
|
|
113
|
+
|
|
114
|
+
|
|
99
115
|
if __name__ == "__main__":
|
|
100
116
|
raise SystemExit(main())
|