contraagent 0.1.0__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.
- contraagent-0.1.0/.dockerignore +13 -0
- contraagent-0.1.0/.github/workflows/ci.yml +130 -0
- contraagent-0.1.0/.github/workflows/pages.yml +57 -0
- contraagent-0.1.0/.github/workflows/release.yml +254 -0
- contraagent-0.1.0/.gitignore +23 -0
- contraagent-0.1.0/.pre-commit-config.yaml +23 -0
- contraagent-0.1.0/.python-version +1 -0
- contraagent-0.1.0/AGENTS.md +137 -0
- contraagent-0.1.0/CHANGELOG.md +96 -0
- contraagent-0.1.0/CLAUDE.md +1 -0
- contraagent-0.1.0/Dockerfile +43 -0
- contraagent-0.1.0/LICENSE +21 -0
- contraagent-0.1.0/PKG-INFO +189 -0
- contraagent-0.1.0/README.md +375 -0
- contraagent-0.1.0/changelog.d/README.md +18 -0
- contraagent-0.1.0/changelog.d/template.md +11 -0
- contraagent-0.1.0/docs/releasing.md +72 -0
- contraagent-0.1.0/pyproject.toml +336 -0
- contraagent-0.1.0/src/contraagent/__init__.py +99 -0
- contraagent-0.1.0/src/contraagent/__main__.py +3 -0
- contraagent-0.1.0/src/contraagent/_internal/__init__.py +43 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/__init__.py +119 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/base.py +566 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/claude/__init__.py +5 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/claude/backend.py +310 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/claude/login.py +20 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/claude/wire.py +398 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/codex/__init__.py +5 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/codex/backend.py +397 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/codex/hooks.py +188 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/codex/wire.py +395 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/credentials.py +459 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/launch.py +490 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/live_processes.py +268 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/__init__.py +6 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/backend.py +455 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/catalogue.py +29 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/config.py +136 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/isolation/config.yml +27 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/rpc.py +358 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/omp/wire.py +413 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/opencode/__init__.py +5 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/opencode/backend.py +442 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/opencode/catalogue.py +37 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/opencode/wire.py +223 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/opencode_key.py +198 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/__init__.py +5 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/agent_dir.py +116 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/backend.py +345 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/catalogue.py +22 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/login.py +15 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/mcp.ts +16 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/pi/wire.py +88 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/plugin_files.py +32 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/process.py +314 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/refusal.py +162 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/streams.py +146 -0
- contraagent-0.1.0/src/contraagent/_internal/backends/wire.py +243 -0
- contraagent-0.1.0/src/contraagent/_internal/cli.py +478 -0
- contraagent-0.1.0/src/contraagent/_internal/commandline.py +212 -0
- contraagent-0.1.0/src/contraagent/_internal/contracts/__init__.py +8 -0
- contraagent-0.1.0/src/contraagent/_internal/contracts/calls.py +239 -0
- contraagent-0.1.0/src/contraagent/_internal/contracts/contract.py +707 -0
- contraagent-0.1.0/src/contraagent/_internal/contracts/pointers.py +180 -0
- contraagent-0.1.0/src/contraagent/_internal/contracts/validators.py +178 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/__init__.py +96 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/flow.py +519 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/interceptors.py +61 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/python_task.py +90 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/queue.py +713 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/records.py +374 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/task.py +291 -0
- contraagent-0.1.0/src/contraagent/_internal/dispatch/templates.py +37 -0
- contraagent-0.1.0/src/contraagent/_internal/docs.py +133 -0
- contraagent-0.1.0/src/contraagent/_internal/errors.py +27 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/__init__.py +39 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/adapter.py +105 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/changes.py +143 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/cursor.py +236 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/estimates.py +263 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/file_schemas.py +88 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/journal.py +99 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/pipeline_files.py +172 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/python_tasks.py +272 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/recording.py +802 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/run.py +737 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/runner.py +678 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/schemas.py +383 -0
- contraagent-0.1.0/src/contraagent/_internal/execution/teardown.py +96 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/__init__.py +23 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/client.py +121 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/core.py +227 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/openapi.json +590 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/postgres.py +345 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/protocol.py +132 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/relay.py +631 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/retention.py +159 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/s3.py +126 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/segment_format.py +204 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/segment_objects.py +179 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/segments.py +1092 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/server.py +803 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/source.py +225 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/store.py +385 -0
- contraagent-0.1.0/src/contraagent/_internal/hub/streams.py +193 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/__init__.py +14 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/aggregate.py +109 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/api.py +1203 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/core.py +1102 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/export.py +348 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/openapi.json +6659 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/server.py +554 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/app.js +985 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/apple-touch-icon.png +0 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/favicon-32.png +0 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/favicon.svg +1 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/index.html +31 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/static/ja.js +1 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/trends.py +755 -0
- contraagent-0.1.0/src/contraagent/_internal/monitor/views.py +81 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/__init__.py +29 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/adapter.py +174 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/check.py +447 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/graph.py +763 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/loops.py +374 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/origin.py +108 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/pipeline.py +557 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/reach.py +150 -0
- contraagent-0.1.0/src/contraagent/_internal/pipeline/spec.py +1091 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/__init__.py +3 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/commands.py +127 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/envvars.py +27 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/groups.py +243 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/links.py +73 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/locks.py +87 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/processes.py +147 -0
- contraagent-0.1.0/src/contraagent/_internal/platform/telemetry.py +41 -0
- contraagent-0.1.0/src/contraagent/_internal/plugins/__init__.py +13 -0
- contraagent-0.1.0/src/contraagent/_internal/plugins/hooks.py +668 -0
- contraagent-0.1.0/src/contraagent/_internal/plugins/lint.py +78 -0
- contraagent-0.1.0/src/contraagent/_internal/plugins/plugin.py +202 -0
- contraagent-0.1.0/src/contraagent/_internal/plugins/scaffold.py +143 -0
- contraagent-0.1.0/src/contraagent/_internal/public.py +122 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/__init__.py +37 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/capacity.py +98 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/config.py +331 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/config_schema.py +125 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/kind_config.py +160 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/plan.py +440 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/pool.py +76 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/preflight.py +438 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/quota.py +294 -0
- contraagent-0.1.0/src/contraagent/_internal/routing/router.py +341 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/__init__.py +17 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/files.py +245 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/layout.py +179 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/liveness.py +84 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/names.py +94 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/procs.py +178 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/source.py +536 -0
- contraagent-0.1.0/src/contraagent/_internal/runs/times.py +41 -0
- contraagent-0.1.0/src/contraagent/_internal/testing.py +498 -0
- contraagent-0.1.0/src/contraagent/backends.py +56 -0
- contraagent-0.1.0/src/contraagent/config.py +47 -0
- contraagent-0.1.0/src/contraagent/docs/README.md +147 -0
- contraagent-0.1.0/src/contraagent/docs/agents.md +91 -0
- contraagent-0.1.0/src/contraagent/docs/compatibility.md +141 -0
- contraagent-0.1.0/src/contraagent/docs/concepts.md +203 -0
- contraagent-0.1.0/src/contraagent/docs/contracts.md +201 -0
- contraagent-0.1.0/src/contraagent/docs/examples/analysis/flow.py +151 -0
- contraagent-0.1.0/src/contraagent/docs/examples/before/flow.py +53 -0
- contraagent-0.1.0/src/contraagent/docs/examples/changes/flow.py +52 -0
- contraagent-0.1.0/src/contraagent/docs/examples/claims/flow.py +77 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/checks.py +25 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/pipeline.toml +15 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/.claude-plugin/plugin.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/README.md +15 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/reviewer.md +10 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/reviser.md +11 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/summarizer.md +11 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/writer.md +11 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/codex/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/hooks/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/hooks.toml +18 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/package.json +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/settings.json +6 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/skills/write-output/SKILL.md +15 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/run.py +256 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/tasks.py +167 -0
- contraagent-0.1.0/src/contraagent/docs/examples/demo/test_demo.py +89 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/.dockerignore +3 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/.env.example +23 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/Dockerfile +46 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/compose.yaml +119 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/contraagent-relay.service +33 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/make-tokens +74 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/secrets/ingest-tokens.example +6 -0
- contraagent-0.1.0/src/contraagent/docs/examples/hub/secrets/read-token.example +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/flow.py +40 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/.claude-plugin/plugin.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/.mcp.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/agents/reviewer.md +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/codex/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/hooks/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/hooks.toml +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/package.json +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/settings.json +6 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/skills/go-checks/SKILL.md +7 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/.claude-plugin/plugin.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/.mcp.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/agents/reviewer.md +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/codex/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/hooks/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/hooks.toml +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/package.json +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/settings.json +6 -0
- contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/skills/python-checks/SKILL.md +7 -0
- contraagent-0.1.0/src/contraagent/docs/examples/light/flow.py +38 -0
- contraagent-0.1.0/src/contraagent/docs/examples/panels/cycles.py +80 -0
- contraagent-0.1.0/src/contraagent/docs/examples/panels/records.py +56 -0
- contraagent-0.1.0/src/contraagent/docs/examples/panels/views.py +102 -0
- contraagent-0.1.0/src/contraagent/docs/examples/partial/flow.py +62 -0
- contraagent-0.1.0/src/contraagent/docs/examples/preserve/flow.py +47 -0
- contraagent-0.1.0/src/contraagent/docs/examples/reference/pipeline.toml +184 -0
- contraagent-0.1.0/src/contraagent/docs/examples/retries/flow.py +65 -0
- contraagent-0.1.0/src/contraagent/docs/examples/review/flow.py +52 -0
- contraagent-0.1.0/src/contraagent/docs/examples/runner/flow.py +32 -0
- contraagent-0.1.0/src/contraagent/docs/examples/runner/run.py +82 -0
- contraagent-0.1.0/src/contraagent/docs/examples/scopes/flow.py +93 -0
- contraagent-0.1.0/src/contraagent/docs/examples/security/flow.py +37 -0
- contraagent-0.1.0/src/contraagent/docs/examples/security/pipeline.toml +40 -0
- contraagent-0.1.0/src/contraagent/docs/examples/skills/plugins/house-style/.claude-plugin/plugin.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/skills/plugins/house-style/skills/house-style/SKILL.md +11 -0
- contraagent-0.1.0/src/contraagent/docs/examples/skills/tasks.py +36 -0
- contraagent-0.1.0/src/contraagent/docs/examples/time_box/flow.py +52 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/csv-export.md +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/dark-mode.md +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/login-timeout.md +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/pipeline.toml +11 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/.claude-plugin/plugin.json +5 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/README.md +15 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/agents/planner.md +17 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/agents/triager.md +20 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/codex/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/hooks/hooks.json +14 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/hooks.toml +18 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/package.json +4 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/settings.json +6 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/skills/write-output/SKILL.md +17 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/tasks.py +77 -0
- contraagent-0.1.0/src/contraagent/docs/examples/tutorial/test_tutorial.py +63 -0
- contraagent-0.1.0/src/contraagent/docs/guide.md +151 -0
- contraagent-0.1.0/src/contraagent/docs/hub-operations.md +140 -0
- contraagent-0.1.0/src/contraagent/docs/hub.md +88 -0
- contraagent-0.1.0/src/contraagent/docs/monitor.md +335 -0
- contraagent-0.1.0/src/contraagent/docs/plugins.md +231 -0
- contraagent-0.1.0/src/contraagent/docs/routing.md +275 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/cursor.schema.json +204 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/deferred.schema.json +213 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/flow_calls.schema.json +206 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/journal.schema.json +754 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/launches.schema.json +605 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/pipeline.schema.json +871 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/plan.schema.json +166 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/rests.schema.json +93 -0
- contraagent-0.1.0/src/contraagent/docs/schemas/run.schema.json +339 -0
- contraagent-0.1.0/src/contraagent/docs/security.md +160 -0
- contraagent-0.1.0/src/contraagent/docs/tasks.md +516 -0
- contraagent-0.1.0/src/contraagent/docs/testing.md +258 -0
- contraagent-0.1.0/src/contraagent/docs/tutorial.md +406 -0
- contraagent-0.1.0/src/contraagent/engine.py +63 -0
- contraagent-0.1.0/src/contraagent/monitor/__init__.py +94 -0
- contraagent-0.1.0/src/contraagent/monitor/api.py +168 -0
- contraagent-0.1.0/src/contraagent/plugins.py +9 -0
- contraagent-0.1.0/src/contraagent/py.typed +0 -0
- contraagent-0.1.0/src/contraagent/testing.py +85 -0
- contraagent-0.1.0/tests/api/contraagent.api.txt +3383 -0
- contraagent-0.1.0/tests/api/snapshot.py +172 -0
- contraagent-0.1.0/tests/cli/help.py +59 -0
- contraagent-0.1.0/tests/cli/help.txt +355 -0
- contraagent-0.1.0/tests/conftest.py +51 -0
- contraagent-0.1.0/tests/fake_cli.py +24 -0
- contraagent-0.1.0/tests/fixtures/claude/rate_limit_events.jsonl +2 -0
- contraagent-0.1.0/tests/fixtures/omp/18.9.1/json.jsonl +69 -0
- contraagent-0.1.0/tests/fixtures/omp/18.9.1/models.json +1 -0
- contraagent-0.1.0/tests/fixtures/omp/18.9.1/rpc.jsonl +70 -0
- contraagent-0.1.0/tests/fixtures/omp/record.py +77 -0
- contraagent-0.1.0/tests/fixtures/opencode/1.19.0/json.jsonl +11 -0
- contraagent-0.1.0/tests/fixtures/opencode/1.19.0/models-verbose.txt +216 -0
- contraagent-0.1.0/tests/fixtures/opencode/go-usage.json +7 -0
- contraagent-0.1.0/tests/fixtures/opencode/record.py +67 -0
- contraagent-0.1.0/tests/fixtures/pi/1.2.0/json.jsonl +66 -0
- contraagent-0.1.0/tests/fixtures/pi/1.2.0/models-store.json +132 -0
- contraagent-0.1.0/tests/fixtures/pi/record.py +65 -0
- contraagent-0.1.0/tests/fixtures/runs/make_v1.py +84 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-alpha.json +64 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-beta.json +64 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-gamma.json +64 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-alpha.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-beta.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-gamma.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_summary.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-alpha.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-beta.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-gamma.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/fetch.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/review.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/summary.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/flow_calls.jsonl +2 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/journal.jsonl +7 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/launches.jsonl +3 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/alpha.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/beta.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/gamma.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/review/alpha.json +3 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/review/beta.json +3 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/out/summary/summary.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/plan.jsonl +7 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/run.json +1 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-alpha.stream.jsonl +6 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-beta.stream.jsonl +6 -0
- contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-gamma.stream.jsonl +4 -0
- contraagent-0.1.0/tests/hub_services.py +316 -0
- contraagent-0.1.0/tests/live/test_live_agents.py +663 -0
- contraagent-0.1.0/tests/live/test_live_features.py +700 -0
- contraagent-0.1.0/tests/live/test_live_hooks.py +175 -0
- contraagent-0.1.0/tests/live/test_live_pi.py +193 -0
- contraagent-0.1.0/tests/test_analysis_flow.py +100 -0
- contraagent-0.1.0/tests/test_backend_run.py +216 -0
- contraagent-0.1.0/tests/test_backends_offline.py +314 -0
- contraagent-0.1.0/tests/test_changelog.py +58 -0
- contraagent-0.1.0/tests/test_changes.py +171 -0
- contraagent-0.1.0/tests/test_check.py +510 -0
- contraagent-0.1.0/tests/test_claim_capacity_host.py +189 -0
- contraagent-0.1.0/tests/test_claims.py +278 -0
- contraagent-0.1.0/tests/test_cli.py +109 -0
- contraagent-0.1.0/tests/test_codex_backend.py +320 -0
- contraagent-0.1.0/tests/test_codex_hooks.py +323 -0
- contraagent-0.1.0/tests/test_cost_and_unwrap.py +151 -0
- contraagent-0.1.0/tests/test_credentials.py +218 -0
- contraagent-0.1.0/tests/test_disallowed_tools.py +101 -0
- contraagent-0.1.0/tests/test_docs.py +594 -0
- contraagent-0.1.0/tests/test_estimates.py +177 -0
- contraagent-0.1.0/tests/test_export.py +243 -0
- contraagent-0.1.0/tests/test_failover.py +322 -0
- contraagent-0.1.0/tests/test_file_schemas.py +101 -0
- contraagent-0.1.0/tests/test_flow.py +455 -0
- contraagent-0.1.0/tests/test_flow_driver.py +382 -0
- contraagent-0.1.0/tests/test_generator_flows.py +576 -0
- contraagent-0.1.0/tests/test_hosts_api.py +80 -0
- contraagent-0.1.0/tests/test_hub_cli.py +68 -0
- contraagent-0.1.0/tests/test_hub_contract.py +308 -0
- contraagent-0.1.0/tests/test_hub_deploy.py +330 -0
- contraagent-0.1.0/tests/test_hub_e2e.py +549 -0
- contraagent-0.1.0/tests/test_hub_postgres.py +81 -0
- contraagent-0.1.0/tests/test_hub_prune.py +353 -0
- contraagent-0.1.0/tests/test_hub_retention_cli.py +290 -0
- contraagent-0.1.0/tests/test_hub_segments.py +528 -0
- contraagent-0.1.0/tests/test_hub_server.py +469 -0
- contraagent-0.1.0/tests/test_hub_streams.py +150 -0
- contraagent-0.1.0/tests/test_implementations.py +181 -0
- contraagent-0.1.0/tests/test_layers.py +14 -0
- contraagent-0.1.0/tests/test_light_launch.py +178 -0
- contraagent-0.1.0/tests/test_live_stream.py +421 -0
- contraagent-0.1.0/tests/test_message_output.py +109 -0
- contraagent-0.1.0/tests/test_model_usage.py +190 -0
- contraagent-0.1.0/tests/test_monitor_api.py +530 -0
- contraagent-0.1.0/tests/test_omp_wire.py +141 -0
- contraagent-0.1.0/tests/test_opencode_backend.py +166 -0
- contraagent-0.1.0/tests/test_opencode_login.py +180 -0
- contraagent-0.1.0/tests/test_opencode_wire.py +115 -0
- contraagent-0.1.0/tests/test_origin.py +42 -0
- contraagent-0.1.0/tests/test_output_name.py +154 -0
- contraagent-0.1.0/tests/test_panel_bodies.py +198 -0
- contraagent-0.1.0/tests/test_panel_service.py +206 -0
- contraagent-0.1.0/tests/test_partial.py +149 -0
- contraagent-0.1.0/tests/test_passes.py +545 -0
- contraagent-0.1.0/tests/test_peak_context.py +231 -0
- contraagent-0.1.0/tests/test_pi_backend.py +208 -0
- contraagent-0.1.0/tests/test_pi_wire.py +119 -0
- contraagent-0.1.0/tests/test_pipeline.py +338 -0
- contraagent-0.1.0/tests/test_pipeline_files.py +182 -0
- contraagent-0.1.0/tests/test_platform.py +439 -0
- contraagent-0.1.0/tests/test_plugins.py +381 -0
- contraagent-0.1.0/tests/test_pools_and_gateways.py +133 -0
- contraagent-0.1.0/tests/test_preflight.py +188 -0
- contraagent-0.1.0/tests/test_preserve.py +246 -0
- contraagent-0.1.0/tests/test_priority.py +78 -0
- contraagent-0.1.0/tests/test_public_api.py +655 -0
- contraagent-0.1.0/tests/test_python_task_inputs.py +146 -0
- contraagent-0.1.0/tests/test_python_task_retries.py +169 -0
- contraagent-0.1.0/tests/test_python_task_scopes.py +241 -0
- contraagent-0.1.0/tests/test_queue.py +368 -0
- contraagent-0.1.0/tests/test_quota_readings.py +251 -0
- contraagent-0.1.0/tests/test_quota_rests.py +507 -0
- contraagent-0.1.0/tests/test_recording.py +496 -0
- contraagent-0.1.0/tests/test_relay.py +416 -0
- contraagent-0.1.0/tests/test_run_files.py +256 -0
- contraagent-0.1.0/tests/test_run_format.py +99 -0
- contraagent-0.1.0/tests/test_run_source.py +183 -0
- contraagent-0.1.0/tests/test_runtime.py +372 -0
- contraagent-0.1.0/tests/test_smoke.py +54 -0
- contraagent-0.1.0/tests/test_stub_quota.py +47 -0
- contraagent-0.1.0/tests/test_stub_run.py +298 -0
- contraagent-0.1.0/tests/test_temp_root.py +70 -0
- contraagent-0.1.0/tests/test_testing.py +102 -0
- contraagent-0.1.0/tests/test_text_io.py +70 -0
- contraagent-0.1.0/tests/test_time_box.py +376 -0
- contraagent-0.1.0/tests/test_tracked_files.py +51 -0
- contraagent-0.1.0/tests/test_trends.py +520 -0
- contraagent-0.1.0/tests/test_validator_before.py +132 -0
- contraagent-0.1.0/tests/trends_reference.py +426 -0
- contraagent-0.1.0/uv.lock +1215 -0
- contraagent-0.1.0/web/.gitignore +10 -0
- contraagent-0.1.0/web/AGENTS.md +119 -0
- contraagent-0.1.0/web/CLAUDE.md +1 -0
- contraagent-0.1.0/web/apps/docs/.gitignore +26 -0
- contraagent-0.1.0/web/apps/docs/.vscode/extensions.json +4 -0
- contraagent-0.1.0/web/apps/docs/.vscode/launch.json +11 -0
- contraagent-0.1.0/web/apps/docs/astro.config.mjs +70 -0
- contraagent-0.1.0/web/apps/docs/package.json +24 -0
- contraagent-0.1.0/web/apps/docs/public/apple-touch-icon.png +0 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/info.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/cursor.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/definitions.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/journal.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/outputs.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/plan.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-east-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-east-1.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-south-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-west-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-east-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-south-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-west-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_json-east-1.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-1-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-1-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-south-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-south-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-west-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-west-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/refine-east-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-east-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-east-1.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-south-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-west-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-east-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-south-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-west-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_json-east-1.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-1-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-1-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-south-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-south-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-west-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-west-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-east-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-east-1.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-south-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-west-0.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-east.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-south.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-west.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_summary.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-east.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-south.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-west.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-id_2.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-1-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-1-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-south-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-south-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-west-0-amount.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-west-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/refine-east-0-id.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/cursor.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/definitions.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/journal.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/outputs.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/plan.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-gamma_2.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/revise-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_report.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-gamma_2.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-gamma_2.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/revise-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-alpha.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-beta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-delta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-eta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-gamma.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-iota.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-kappa.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-theta.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/runs.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/demo/data/trends.json +1 -0
- contraagent-0.1.0/web/apps/docs/public/favicon-32.png +0 -0
- contraagent-0.1.0/web/apps/docs/public/favicon.svg +1 -0
- contraagent-0.1.0/web/apps/docs/scripts/collect.py +381 -0
- contraagent-0.1.0/web/apps/docs/scripts/fixture.py +105 -0
- contraagent-0.1.0/web/apps/docs/scripts/how_css.py +170 -0
- contraagent-0.1.0/web/apps/docs/scripts/landing.py +144 -0
- contraagent-0.1.0/web/apps/docs/site.ts +5 -0
- contraagent-0.1.0/web/apps/docs/src/components/ApiReference.astro +60 -0
- contraagent-0.1.0/web/apps/docs/src/components/Demo.astro +128 -0
- contraagent-0.1.0/web/apps/docs/src/components/ElementLinks.astro +30 -0
- contraagent-0.1.0/web/apps/docs/src/components/ElementReference.astro +131 -0
- contraagent-0.1.0/web/apps/docs/src/components/Example.astro +53 -0
- contraagent-0.1.0/web/apps/docs/src/components/LiveFigure.astro +40 -0
- contraagent-0.1.0/web/apps/docs/src/components/PageTitle.astro +19 -0
- contraagent-0.1.0/web/apps/docs/src/components/TokenTable.astro +44 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/Hero.astro +83 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/HowItWorks.astro +192 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/Reveal.astro +8 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/RunReplay.astro +614 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/hero.ts +92 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/how-carousel.ts +143 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/how-scene.ts +99 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/how-stages.css +193 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/how.css +411 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/how.ts +67 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/python.ts +48 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/replay.ts +514 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/reveal.css +114 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/reveal.ts +27 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/scene.css +448 -0
- contraagent-0.1.0/web/apps/docs/src/components/home/timeline.ts +149 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/elements.mdx +125 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/index.mdx +78 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/reference/elements.mdx +9 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/reference/http-api.mdx +11 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/reference/theme.mdx +11 -0
- contraagent-0.1.0/web/apps/docs/src/content/docs/reference/ui.mdx +9 -0
- contraagent-0.1.0/web/apps/docs/src/content.config.ts +28 -0
- contraagent-0.1.0/web/apps/docs/src/fixtures/demo-run.json +8958 -0
- contraagent-0.1.0/web/apps/docs/src/fixtures/landing-outputs.json +34 -0
- contraagent-0.1.0/web/apps/docs/src/lib/base.ts +7 -0
- contraagent-0.1.0/web/apps/docs/src/lib/elements.ts +43 -0
- contraagent-0.1.0/web/apps/docs/src/lib/repo.ts +41 -0
- contraagent-0.1.0/web/apps/docs/src/lib/table-cards.mjs +31 -0
- contraagent-0.1.0/web/apps/docs/src/pages/demo/monitor.astro +27 -0
- contraagent-0.1.0/web/apps/docs/src/styles/pages.css +149 -0
- contraagent-0.1.0/web/apps/docs/src/styles/site.css +91 -0
- contraagent-0.1.0/web/apps/docs/tsconfig.json +7 -0
- contraagent-0.1.0/web/apps/monitor/index.html +25 -0
- contraagent-0.1.0/web/apps/monitor/package.json +19 -0
- contraagent-0.1.0/web/apps/monitor/public/apple-touch-icon.png +0 -0
- contraagent-0.1.0/web/apps/monitor/public/favicon-32.png +0 -0
- contraagent-0.1.0/web/apps/monitor/public/favicon.svg +1 -0
- contraagent-0.1.0/web/apps/monitor/src/main.ts +14 -0
- contraagent-0.1.0/web/apps/monitor/tsconfig.dist.json +7 -0
- contraagent-0.1.0/web/apps/monitor/tsconfig.json +5 -0
- contraagent-0.1.0/web/apps/monitor/vite.config.ts +43 -0
- contraagent-0.1.0/web/consumer/consumer.test.mjs +76 -0
- contraagent-0.1.0/web/consumer/package.json +14 -0
- contraagent-0.1.0/web/consumer/src/main.ts +39 -0
- contraagent-0.1.0/web/consumer/tsconfig.dist.json +7 -0
- contraagent-0.1.0/web/consumer/tsconfig.json +7 -0
- contraagent-0.1.0/web/consumer/vite.config.ts +16 -0
- contraagent-0.1.0/web/e2e/a11y.spec.ts +138 -0
- contraagent-0.1.0/web/e2e/connection.spec.ts +54 -0
- contraagent-0.1.0/web/e2e/docs-links.spec.ts +156 -0
- contraagent-0.1.0/web/e2e/docs-site.ts +10 -0
- contraagent-0.1.0/web/e2e/embed.html +30 -0
- contraagent-0.1.0/web/e2e/embed.spec.ts +99 -0
- contraagent-0.1.0/web/e2e/export.spec.ts +60 -0
- contraagent-0.1.0/web/e2e/fit.spec.ts +174 -0
- contraagent-0.1.0/web/e2e/fit.ts +73 -0
- contraagent-0.1.0/web/e2e/global-setup.ts +17 -0
- contraagent-0.1.0/web/e2e/history.spec.ts +125 -0
- contraagent-0.1.0/web/e2e/hub.py +168 -0
- contraagent-0.1.0/web/e2e/hub.spec.ts +157 -0
- contraagent-0.1.0/web/e2e/landing.spec.ts +342 -0
- contraagent-0.1.0/web/e2e/mobile.spec.ts +151 -0
- contraagent-0.1.0/web/e2e/overview.spec.ts +505 -0
- contraagent-0.1.0/web/e2e/tasks.spec.ts +92 -0
- contraagent-0.1.0/web/e2e/theme.spec.ts +82 -0
- contraagent-0.1.0/web/eslint.config.js +101 -0
- contraagent-0.1.0/web/package.json +36 -0
- contraagent-0.1.0/web/packages/api/README.md +103 -0
- contraagent-0.1.0/web/packages/api/package.json +46 -0
- contraagent-0.1.0/web/packages/api/scripts/gen.mjs +25 -0
- contraagent-0.1.0/web/packages/api/src/client.test.ts +82 -0
- contraagent-0.1.0/web/packages/api/src/client.ts +119 -0
- contraagent-0.1.0/web/packages/api/src/derive.test.ts +161 -0
- contraagent-0.1.0/web/packages/api/src/derive.ts +155 -0
- contraagent-0.1.0/web/packages/api/src/export.test.ts +147 -0
- contraagent-0.1.0/web/packages/api/src/export.ts +158 -0
- contraagent-0.1.0/web/packages/api/src/feed.ts +81 -0
- contraagent-0.1.0/web/packages/api/src/index.ts +12 -0
- contraagent-0.1.0/web/packages/api/src/outcomes.test.ts +185 -0
- contraagent-0.1.0/web/packages/api/src/outcomes.ts +267 -0
- contraagent-0.1.0/web/packages/api/src/panels.ts +51 -0
- contraagent-0.1.0/web/packages/api/src/quota.test.ts +59 -0
- contraagent-0.1.0/web/packages/api/src/quota.ts +78 -0
- contraagent-0.1.0/web/packages/api/src/reasons.test.ts +26 -0
- contraagent-0.1.0/web/packages/api/src/reasons.ts +57 -0
- contraagent-0.1.0/web/packages/api/src/run-state.test.ts +79 -0
- contraagent-0.1.0/web/packages/api/src/run-state.ts +166 -0
- contraagent-0.1.0/web/packages/api/src/schema.ts +3719 -0
- contraagent-0.1.0/web/packages/api/src/spend.test.ts +32 -0
- contraagent-0.1.0/web/packages/api/src/spend.ts +108 -0
- contraagent-0.1.0/web/packages/api/src/store.test.ts +225 -0
- contraagent-0.1.0/web/packages/api/src/store.ts +338 -0
- contraagent-0.1.0/web/packages/api/src/types.ts +165 -0
- contraagent-0.1.0/web/packages/api/tsconfig.build.json +4 -0
- contraagent-0.1.0/web/packages/api/tsconfig.json +5 -0
- contraagent-0.1.0/web/packages/elements/README.md +73 -0
- contraagent-0.1.0/web/packages/elements/docs/charts.md +58 -0
- contraagent-0.1.0/web/packages/elements/docs/check-table.md +40 -0
- contraagent-0.1.0/web/packages/elements/docs/data-table.md +57 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/charts.ts +61 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/check-table.ts +19 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/ci-pipeline.ts +271 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/data-table.ts +39 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/graph.ts +57 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/lanes.ts +40 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/matrix.ts +56 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/page.css +34 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/segmented.ts +18 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/status.ts +30 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/theme.css +54 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/tiles.ts +27 -0
- contraagent-0.1.0/web/packages/elements/docs/examples/transcript.ts +59 -0
- contraagent-0.1.0/web/packages/elements/docs/graph.md +112 -0
- contraagent-0.1.0/web/packages/elements/docs/images/charts.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/check-table.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/data-table.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/graph.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/lanes.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/matrix.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/page.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/primitives.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/theming-dark.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/tiles.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/images/transcript.webp +0 -0
- contraagent-0.1.0/web/packages/elements/docs/lanes.md +48 -0
- contraagent-0.1.0/web/packages/elements/docs/matrix.md +34 -0
- contraagent-0.1.0/web/packages/elements/docs/page.md +87 -0
- contraagent-0.1.0/web/packages/elements/docs/primitives.md +57 -0
- contraagent-0.1.0/web/packages/elements/docs/strings.md +16 -0
- contraagent-0.1.0/web/packages/elements/docs/theming.md +147 -0
- contraagent-0.1.0/web/packages/elements/docs/tiles.md +40 -0
- contraagent-0.1.0/web/packages/elements/docs/transcript.md +73 -0
- contraagent-0.1.0/web/packages/elements/docs/tsconfig.json +20 -0
- contraagent-0.1.0/web/packages/elements/package.json +192 -0
- contraagent-0.1.0/web/packages/elements/src/charts/bar-chart.ts +74 -0
- contraagent-0.1.0/web/packages/elements/src/charts/base.ts +188 -0
- contraagent-0.1.0/web/packages/elements/src/charts/charts.test.ts +233 -0
- contraagent-0.1.0/web/packages/elements/src/charts/column-chart.ts +153 -0
- contraagent-0.1.0/web/packages/elements/src/charts/heatmap.ts +129 -0
- contraagent-0.1.0/web/packages/elements/src/charts/index.ts +10 -0
- contraagent-0.1.0/web/packages/elements/src/charts/line-chart.ts +128 -0
- contraagent-0.1.0/web/packages/elements/src/charts/scale.ts +61 -0
- contraagent-0.1.0/web/packages/elements/src/charts/state-grid.ts +245 -0
- contraagent-0.1.0/web/packages/elements/src/charts/types.ts +48 -0
- contraagent-0.1.0/web/packages/elements/src/checks/check-table.test.ts +54 -0
- contraagent-0.1.0/web/packages/elements/src/checks/check-table.ts +85 -0
- contraagent-0.1.0/web/packages/elements/src/checks/index.ts +5 -0
- contraagent-0.1.0/web/packages/elements/src/checks/styles.ts +31 -0
- contraagent-0.1.0/web/packages/elements/src/checks/types.ts +48 -0
- contraagent-0.1.0/web/packages/elements/src/core/clock.ts +46 -0
- contraagent-0.1.0/web/packages/elements/src/core/define.ts +7 -0
- contraagent-0.1.0/web/packages/elements/src/core/events.ts +89 -0
- contraagent-0.1.0/web/packages/elements/src/core/format.ts +25 -0
- contraagent-0.1.0/web/packages/elements/src/core/frame.ts +5 -0
- contraagent-0.1.0/web/packages/elements/src/core/strings.ts +11 -0
- contraagent-0.1.0/web/packages/elements/src/core/tone.ts +14 -0
- contraagent-0.1.0/web/packages/elements/src/count/count.ts +54 -0
- contraagent-0.1.0/web/packages/elements/src/count/elapsed.ts +33 -0
- contraagent-0.1.0/web/packages/elements/src/count/index.ts +4 -0
- contraagent-0.1.0/web/packages/elements/src/define/all.ts +13 -0
- contraagent-0.1.0/web/packages/elements/src/define/charts.ts +17 -0
- contraagent-0.1.0/web/packages/elements/src/define/check-table.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/count.ts +11 -0
- contraagent-0.1.0/web/packages/elements/src/define/data-table.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/graph.ts +11 -0
- contraagent-0.1.0/web/packages/elements/src/define/json-tree.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/lanes.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/markdown.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/matrix.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/segmented.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/define/tiles.ts +11 -0
- contraagent-0.1.0/web/packages/elements/src/define/transcript.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/examples.test.ts +50 -0
- contraagent-0.1.0/web/packages/elements/src/graph/arrange.ts +399 -0
- contraagent-0.1.0/web/packages/elements/src/graph/card.ts +209 -0
- contraagent-0.1.0/web/packages/elements/src/graph/host.ts +100 -0
- contraagent-0.1.0/web/packages/elements/src/graph/icons.ts +23 -0
- contraagent-0.1.0/web/packages/elements/src/graph/index.ts +16 -0
- contraagent-0.1.0/web/packages/elements/src/graph/layered-graph.test.ts +184 -0
- contraagent-0.1.0/web/packages/elements/src/graph/layered-graph.ts +417 -0
- contraagent-0.1.0/web/packages/elements/src/graph/layout.ts +331 -0
- contraagent-0.1.0/web/packages/elements/src/graph/marks.test.ts +29 -0
- contraagent-0.1.0/web/packages/elements/src/graph/marks.ts +42 -0
- contraagent-0.1.0/web/packages/elements/src/graph/nav.test.ts +18 -0
- contraagent-0.1.0/web/packages/elements/src/graph/nav.ts +19 -0
- contraagent-0.1.0/web/packages/elements/src/graph/pan-zoom.test.ts +106 -0
- contraagent-0.1.0/web/packages/elements/src/graph/pan-zoom.ts +219 -0
- contraagent-0.1.0/web/packages/elements/src/graph/paths.test.ts +11 -0
- contraagent-0.1.0/web/packages/elements/src/graph/paths.ts +41 -0
- contraagent-0.1.0/web/packages/elements/src/graph/place-card.test.ts +68 -0
- contraagent-0.1.0/web/packages/elements/src/graph/place-card.ts +93 -0
- contraagent-0.1.0/web/packages/elements/src/graph/strings.ts +86 -0
- contraagent-0.1.0/web/packages/elements/src/graph/styles.ts +204 -0
- contraagent-0.1.0/web/packages/elements/src/graph/types.ts +202 -0
- contraagent-0.1.0/web/packages/elements/src/graph/view.test.ts +27 -0
- contraagent-0.1.0/web/packages/elements/src/graph/view.ts +28 -0
- contraagent-0.1.0/web/packages/elements/src/graph/views/dag.ts +294 -0
- contraagent-0.1.0/web/packages/elements/src/graph/views/foot.ts +109 -0
- contraagent-0.1.0/web/packages/elements/src/graph/views/node-table.ts +90 -0
- contraagent-0.1.0/web/packages/elements/src/import.test.ts +25 -0
- contraagent-0.1.0/web/packages/elements/src/index.ts +25 -0
- contraagent-0.1.0/web/packages/elements/src/json/index.ts +2 -0
- contraagent-0.1.0/web/packages/elements/src/json/json-tree.ts +49 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/index.ts +6 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/lanes.test.ts +65 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/lanes.ts +143 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/stack.test.ts +52 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/stack.ts +51 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/styles.ts +30 -0
- contraagent-0.1.0/web/packages/elements/src/lanes/types.ts +51 -0
- contraagent-0.1.0/web/packages/elements/src/markdown/cae-markdown.test.ts +35 -0
- contraagent-0.1.0/web/packages/elements/src/markdown/cae-markdown.ts +64 -0
- contraagent-0.1.0/web/packages/elements/src/markdown/highlight.ts +94 -0
- contraagent-0.1.0/web/packages/elements/src/markdown/index.ts +5 -0
- contraagent-0.1.0/web/packages/elements/src/markdown/markdown.ts +110 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/grid-step.test.ts +23 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/grid-step.ts +58 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/index.ts +6 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/mark-matrix.test.ts +66 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/mark-matrix.ts +285 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/styles.ts +48 -0
- contraagent-0.1.0/web/packages/elements/src/matrix/types.ts +83 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/fact-line.test.ts +20 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/fact-line.ts +26 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/icon.ts +26 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/index.ts +12 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/legend.ts +56 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/pill.test.ts +66 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/pill.ts +58 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/roving-focus.test.ts +49 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/roving-focus.ts +138 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/segmented.test.ts +65 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/segmented.ts +92 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/share-bar.test.ts +55 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/share-bar.ts +94 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/states.ts +28 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/window.test.ts +59 -0
- contraagent-0.1.0/web/packages/elements/src/primitives/window.ts +65 -0
- contraagent-0.1.0/web/packages/elements/src/styles/chips.ts +18 -0
- contraagent-0.1.0/web/packages/elements/src/styles/facts.ts +7 -0
- contraagent-0.1.0/web/packages/elements/src/styles/index.ts +19 -0
- contraagent-0.1.0/web/packages/elements/src/styles/layout.ts +33 -0
- contraagent-0.1.0/web/packages/elements/src/styles/marks.ts +30 -0
- contraagent-0.1.0/web/packages/elements/src/styles/meter.ts +9 -0
- contraagent-0.1.0/web/packages/elements/src/styles/motion.ts +27 -0
- contraagent-0.1.0/web/packages/elements/src/styles/prose.ts +59 -0
- contraagent-0.1.0/web/packages/elements/src/styles/reset.ts +13 -0
- contraagent-0.1.0/web/packages/elements/src/styles/scale.test.ts +39 -0
- contraagent-0.1.0/web/packages/elements/src/styles/status.test.ts +47 -0
- contraagent-0.1.0/web/packages/elements/src/styles/status.ts +52 -0
- contraagent-0.1.0/web/packages/elements/src/styles/text.ts +21 -0
- contraagent-0.1.0/web/packages/elements/src/styles/tokens.ts +35 -0
- contraagent-0.1.0/web/packages/elements/src/table/data-table.test.ts +153 -0
- contraagent-0.1.0/web/packages/elements/src/table/data-table.ts +367 -0
- contraagent-0.1.0/web/packages/elements/src/table/index.ts +5 -0
- contraagent-0.1.0/web/packages/elements/src/table/styles.ts +32 -0
- contraagent-0.1.0/web/packages/elements/src/table/types.ts +73 -0
- contraagent-0.1.0/web/packages/elements/src/themes/boot.ts +14 -0
- contraagent-0.1.0/web/packages/elements/src/themes/choice.ts +47 -0
- contraagent-0.1.0/web/packages/elements/src/themes/data.ts +433 -0
- contraagent-0.1.0/web/packages/elements/src/themes/index.ts +10 -0
- contraagent-0.1.0/web/packages/elements/src/themes/sheet.ts +29 -0
- contraagent-0.1.0/web/packages/elements/src/themes/themes.test.ts +165 -0
- contraagent-0.1.0/web/packages/elements/src/themes/token-meanings.ts +67 -0
- contraagent-0.1.0/web/packages/elements/src/themes/tokens-list.ts +82 -0
- contraagent-0.1.0/web/packages/elements/src/tiles/index.ts +5 -0
- contraagent-0.1.0/web/packages/elements/src/tiles/stat-tiles.test.ts +60 -0
- contraagent-0.1.0/web/packages/elements/src/tiles/stat-tiles.ts +92 -0
- contraagent-0.1.0/web/packages/elements/src/tiles/styles.ts +23 -0
- contraagent-0.1.0/web/packages/elements/src/tiles/types.ts +20 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/follow-scroll.test.ts +48 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/follow-scroll.ts +72 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/index.ts +6 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/styles.ts +114 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/tags.ts +18 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/tool-card.ts +103 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/transcript.test.ts +166 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/transcript.ts +358 -0
- contraagent-0.1.0/web/packages/elements/src/transcript/types.ts +167 -0
- contraagent-0.1.0/web/packages/elements/tsconfig.build.json +4 -0
- contraagent-0.1.0/web/packages/elements/tsconfig.json +5 -0
- contraagent-0.1.0/web/packages/ui/README.md +131 -0
- contraagent-0.1.0/web/packages/ui/WORDS.md +106 -0
- contraagent-0.1.0/web/packages/ui/docs/embed.md +118 -0
- contraagent-0.1.0/web/packages/ui/docs/events.md +38 -0
- contraagent-0.1.0/web/packages/ui/docs/examples/embed.html +31 -0
- contraagent-0.1.0/web/packages/ui/docs/examples/journal.ts +32 -0
- contraagent-0.1.0/web/packages/ui/docs/examples/live-transcript.ts +22 -0
- contraagent-0.1.0/web/packages/ui/docs/examples/vite/index.html +30 -0
- contraagent-0.1.0/web/packages/ui/docs/examples/vite/main.ts +23 -0
- contraagent-0.1.0/web/packages/ui/docs/images/contracts.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/definitions.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/journal-table.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/kpis.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/monitor.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/pipeline-graph.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/task-table.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/task-view.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/images/timeline.webp +0 -0
- contraagent-0.1.0/web/packages/ui/docs/languages.md +48 -0
- contraagent-0.1.0/web/packages/ui/docs/live-data.md +17 -0
- contraagent-0.1.0/web/packages/ui/docs/theming.md +21 -0
- contraagent-0.1.0/web/packages/ui/docs/tsconfig.json +14 -0
- contraagent-0.1.0/web/packages/ui/lit-localize.json +15 -0
- contraagent-0.1.0/web/packages/ui/package.json +153 -0
- contraagent-0.1.0/web/packages/ui/scripts/i18n-check.mjs +51 -0
- contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.d.mts +6 -0
- contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.mjs +44 -0
- contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.test.ts +23 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/check-rows.test.ts +68 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/check-rows.ts +78 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/filters.test.ts +94 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/filters.ts +76 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/__snapshots__/order.test.ts.snap +7633 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/compound.test.ts +127 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/compound.ts +359 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/flow-index.ts +154 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/highlight.ts +40 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/input.ts +236 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/layer.test.ts +38 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/layer.ts +92 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/layout.test.ts +216 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/matrix.test.ts +54 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/matrix.ts +133 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/order.test.ts +101 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/plans.fixture.ts +194 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/project.test.ts +347 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/project.ts +358 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/selection.test.ts +43 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/selection.ts +54 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/states.test.ts +10 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/states.ts +10 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/types.ts +148 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/words.test.ts +47 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/graph/words.ts +146 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/index.ts +22 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/journal-columns.test.ts +39 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/journal-columns.ts +200 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/kpi-tiles.test.ts +92 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/kpi-tiles.ts +211 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/lanes.test.ts +49 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/lanes.ts +98 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/model-shares.test.ts +59 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/model-shares.ts +62 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/panel-body.ts +74 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/preflight.test.ts +28 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/preflight.ts +27 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/task-columns.ts +120 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/index.ts +14 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/model.test.ts +218 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/model.ts +156 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/rounds.test.ts +40 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/rounds.ts +86 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/sections.test.ts +75 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/sections.ts +82 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/web.ts +40 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/transcript/who.ts +53 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/trends.test.ts +133 -0
- contraagent-0.1.0/web/packages/ui/src/adapters/trends.ts +337 -0
- contraagent-0.1.0/web/packages/ui/src/clicks.test.ts +78 -0
- contraagent-0.1.0/web/packages/ui/src/controllers/locale.ts +47 -0
- contraagent-0.1.0/web/packages/ui/src/controllers/shortcuts.ts +69 -0
- contraagent-0.1.0/web/packages/ui/src/controllers/stream.ts +103 -0
- contraagent-0.1.0/web/packages/ui/src/controllers/task-detail.ts +54 -0
- contraagent-0.1.0/web/packages/ui/src/controllers/theme.ts +73 -0
- contraagent-0.1.0/web/packages/ui/src/core/events.ts +120 -0
- contraagent-0.1.0/web/packages/ui/src/core/i18n.ts +76 -0
- contraagent-0.1.0/web/packages/ui/src/core/index.ts +6 -0
- contraagent-0.1.0/web/packages/ui/src/core/memory.test.ts +43 -0
- contraagent-0.1.0/web/packages/ui/src/core/memory.ts +177 -0
- contraagent-0.1.0/web/packages/ui/src/core/scroll.ts +73 -0
- contraagent-0.1.0/web/packages/ui/src/core/view-route.test.ts +88 -0
- contraagent-0.1.0/web/packages/ui/src/core/view-route.ts +177 -0
- contraagent-0.1.0/web/packages/ui/src/core/view-router.ts +66 -0
- contraagent-0.1.0/web/packages/ui/src/define/all.ts +13 -0
- contraagent-0.1.0/web/packages/ui/src/define/contracts.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/definitions.ts +3 -0
- contraagent-0.1.0/web/packages/ui/src/define/journal-table.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/kpis.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/monitor.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/overview.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/pipeline-graph.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/procs.ts +3 -0
- contraagent-0.1.0/web/packages/ui/src/define/task-table.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/task-view.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/timeline.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define/transcript.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/define.test.ts +64 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-contracts.ts +204 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-definitions.ts +170 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-journal-table.ts +141 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-body.test.ts +160 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-body.ts +139 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-view.ts +50 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-proc-tree.ts +57 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-procs-view.test.ts +26 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-procs-view.ts +89 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-task-table.test.ts +109 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-task-table.ts +94 -0
- contraagent-0.1.0/web/packages/ui/src/elements/lists/index.ts +8 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-kpis.ts +51 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-model-usage.test.ts +78 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-model-usage.ts +113 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-overview.test.ts +128 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-overview.ts +492 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-pipeline-graph.test.ts +109 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-pipeline-graph.ts +617 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-quota.test.ts +89 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-quota.ts +164 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-run-driver.ts +140 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-spend-breakdown.ts +107 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-timeline.ts +57 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-workers.ts +82 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/index.ts +9 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/actions.ts +45 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/crumbs.ts +75 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/host.ts +26 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/inspector.ts +104 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/outline.ts +150 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/strings.ts +53 -0
- contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/styles.ts +97 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shared/ca-definition.ts +206 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shared/contract-parts.ts +158 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shared/file-card.ts +49 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shared/prompt-text.ts +13 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shared/task-chip.ts +18 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-clock.ts +27 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-hosts.test.ts +34 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-hosts.ts +93 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-monitor.test.ts +276 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-monitor.ts +526 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-run-picker.test.ts +27 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-run-picker.ts +284 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-theme-switch.ts +170 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-toasts.ts +100 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/header.ts +45 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/styles.ts +72 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/tabs.test.ts +14 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/tabs.ts +143 -0
- contraagent-0.1.0/web/packages/ui/src/elements/shell/views.ts +67 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/ca-task-view.test.ts +213 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/ca-task-view.ts +157 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/ca-transcript.test.ts +64 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/ca-transcript.ts +214 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/context.ts +105 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/header.ts +292 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/index.ts +2 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/inputs.test.ts +38 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/inputs.ts +46 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/panes/definition.ts +7 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/panes/io.ts +190 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/panes/transcript.ts +29 -0
- contraagent-0.1.0/web/packages/ui/src/elements/task/styles.ts +66 -0
- contraagent-0.1.0/web/packages/ui/src/elements/trends/ca-trends.test.ts +92 -0
- contraagent-0.1.0/web/packages/ui/src/elements/trends/ca-trends.ts +204 -0
- contraagent-0.1.0/web/packages/ui/src/examples.test.ts +21 -0
- contraagent-0.1.0/web/packages/ui/src/exports.test.ts +63 -0
- contraagent-0.1.0/web/packages/ui/src/fires.test.ts +121 -0
- contraagent-0.1.0/web/packages/ui/src/import.test.ts +25 -0
- contraagent-0.1.0/web/packages/ui/src/index.ts +23 -0
- contraagent-0.1.0/web/packages/ui/src/layers.test.ts +286 -0
- contraagent-0.1.0/web/packages/ui/src/lib/tone.test.ts +84 -0
- contraagent-0.1.0/web/packages/ui/src/lib/tone.ts +109 -0
- contraagent-0.1.0/web/packages/ui/src/lib/trends.ts +44 -0
- contraagent-0.1.0/web/packages/ui/src/locales/codes.ts +23 -0
- contraagent-0.1.0/web/packages/ui/src/locales/ja.ts +771 -0
- contraagent-0.1.0/web/packages/ui/src/status-classes.test.ts +34 -0
- contraagent-0.1.0/web/packages/ui/src/words/api-error.ts +17 -0
- contraagent-0.1.0/web/packages/ui/src/words/attempts.test.ts +20 -0
- contraagent-0.1.0/web/packages/ui/src/words/attempts.ts +28 -0
- contraagent-0.1.0/web/packages/ui/src/words/causes.test.ts +53 -0
- contraagent-0.1.0/web/packages/ui/src/words/causes.ts +67 -0
- contraagent-0.1.0/web/packages/ui/src/words/changes.ts +27 -0
- contraagent-0.1.0/web/packages/ui/src/words/claims.test.ts +15 -0
- contraagent-0.1.0/web/packages/ui/src/words/claims.ts +16 -0
- contraagent-0.1.0/web/packages/ui/src/words/context.test.ts +32 -0
- contraagent-0.1.0/web/packages/ui/src/words/context.ts +47 -0
- contraagent-0.1.0/web/packages/ui/src/words/contract.ts +63 -0
- contraagent-0.1.0/web/packages/ui/src/words/credential.test.ts +9 -0
- contraagent-0.1.0/web/packages/ui/src/words/credential.ts +8 -0
- contraagent-0.1.0/web/packages/ui/src/words/executor.ts +22 -0
- contraagent-0.1.0/web/packages/ui/src/words/export.test.ts +20 -0
- contraagent-0.1.0/web/packages/ui/src/words/export.ts +22 -0
- contraagent-0.1.0/web/packages/ui/src/words/format.test.ts +71 -0
- contraagent-0.1.0/web/packages/ui/src/words/format.ts +107 -0
- contraagent-0.1.0/web/packages/ui/src/words/hops.test.ts +21 -0
- contraagent-0.1.0/web/packages/ui/src/words/hops.ts +30 -0
- contraagent-0.1.0/web/packages/ui/src/words/hosts.ts +37 -0
- contraagent-0.1.0/web/packages/ui/src/words/index.ts +30 -0
- contraagent-0.1.0/web/packages/ui/src/words/models.ts +50 -0
- contraagent-0.1.0/web/packages/ui/src/words/outcome.test.ts +18 -0
- contraagent-0.1.0/web/packages/ui/src/words/outcome.ts +61 -0
- contraagent-0.1.0/web/packages/ui/src/words/panels.ts +53 -0
- contraagent-0.1.0/web/packages/ui/src/words/passes.ts +18 -0
- contraagent-0.1.0/web/packages/ui/src/words/preflight.ts +53 -0
- contraagent-0.1.0/web/packages/ui/src/words/priority.ts +8 -0
- contraagent-0.1.0/web/packages/ui/src/words/prompt.ts +20 -0
- contraagent-0.1.0/web/packages/ui/src/words/quota.test.ts +55 -0
- contraagent-0.1.0/web/packages/ui/src/words/quota.ts +108 -0
- contraagent-0.1.0/web/packages/ui/src/words/rests.test.ts +83 -0
- contraagent-0.1.0/web/packages/ui/src/words/rests.ts +96 -0
- contraagent-0.1.0/web/packages/ui/src/words/rounds.ts +56 -0
- contraagent-0.1.0/web/packages/ui/src/words/row-extras.ts +24 -0
- contraagent-0.1.0/web/packages/ui/src/words/run-line.test.ts +69 -0
- contraagent-0.1.0/web/packages/ui/src/words/run-line.ts +77 -0
- contraagent-0.1.0/web/packages/ui/src/words/stop.test.ts +22 -0
- contraagent-0.1.0/web/packages/ui/src/words/stop.ts +65 -0
- contraagent-0.1.0/web/packages/ui/src/words/table.ts +10 -0
- contraagent-0.1.0/web/packages/ui/src/words/task-definition.ts +37 -0
- contraagent-0.1.0/web/packages/ui/src/words/time-box.test.ts +18 -0
- contraagent-0.1.0/web/packages/ui/src/words/time-box.ts +21 -0
- contraagent-0.1.0/web/packages/ui/src/words/trends.ts +118 -0
- contraagent-0.1.0/web/packages/ui/tsconfig.build.json +4 -0
- contraagent-0.1.0/web/packages/ui/tsconfig.json +5 -0
- contraagent-0.1.0/web/packages/ui/vite.config.ts +28 -0
- contraagent-0.1.0/web/packages/ui/xliff/GLOSSARY.md +254 -0
- contraagent-0.1.0/web/packages/ui/xliff/ja.xlf +3084 -0
- contraagent-0.1.0/web/playwright.config.ts +48 -0
- contraagent-0.1.0/web/pnpm-lock.yaml +6477 -0
- contraagent-0.1.0/web/pnpm-workspace.yaml +10 -0
- contraagent-0.1.0/web/scripts/compact-locale.d.mts +14 -0
- contraagent-0.1.0/web/scripts/compact-locale.mjs +101 -0
- contraagent-0.1.0/web/scripts/compact-locale.test.ts +68 -0
- contraagent-0.1.0/web/scripts/examples-page/index.html +18 -0
- contraagent-0.1.0/web/scripts/examples-page/main.js +15 -0
- contraagent-0.1.0/web/scripts/minify-css.d.mts +8 -0
- contraagent-0.1.0/web/scripts/minify-css.mjs +78 -0
- contraagent-0.1.0/web/scripts/minify-css.test.ts +24 -0
- contraagent-0.1.0/web/scripts/minify-html.d.mts +8 -0
- contraagent-0.1.0/web/scripts/minify-html.mjs +148 -0
- contraagent-0.1.0/web/scripts/minify-html.test.ts +67 -0
- contraagent-0.1.0/web/scripts/optimize_images.py +67 -0
- contraagent-0.1.0/web/scripts/packed.mjs +67 -0
- contraagent-0.1.0/web/scripts/screenshots.mjs +379 -0
- contraagent-0.1.0/web/scripts/showcase.py +49 -0
- contraagent-0.1.0/web/scripts/size.mjs +92 -0
- contraagent-0.1.0/web/scripts/tarballs.mjs +95 -0
- contraagent-0.1.0/web/size-budgets.json +89 -0
- contraagent-0.1.0/web/tsconfig.base.json +27 -0
- contraagent-0.1.0/web/tsconfig.json +16 -0
- contraagent-0.1.0/web/tsconfig.tsbuildinfo +1 -0
- contraagent-0.1.0/web/vitest.config.ts +12 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# The build context of Dockerfile (the developer's hub image) is the repository root; only what the image installs
|
|
2
|
+
# enters it. Everything else (.git, .venv, node_modules, web/, runs, .claude/, tokens)
|
|
3
|
+
# stays out.
|
|
4
|
+
*
|
|
5
|
+
!pyproject.toml
|
|
6
|
+
!uv.lock
|
|
7
|
+
!LICENSE
|
|
8
|
+
!src/
|
|
9
|
+
**/__pycache__
|
|
10
|
+
**/*.py[cod]
|
|
11
|
+
**/.env
|
|
12
|
+
src/contraagent/docs/examples/hub/secrets
|
|
13
|
+
src/contraagent/docs/examples/hub/*.whl
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Lint, type-check and test on every supported Python on Linux and on one
|
|
2
|
+
# Python on macOS and Windows, plus one run against the lowest versions of the
|
|
3
|
+
# direct dependencies that pyproject.toml allows. release.yml runs it too, on
|
|
4
|
+
# a release's tag, so a push of a tag starts no run of its own here.
|
|
5
|
+
name: CI
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: ["**"]
|
|
10
|
+
pull_request:
|
|
11
|
+
workflow_call:
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
# A newer push to the same branch cancels the run still going for an older one.
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
test:
|
|
23
|
+
name: Python ${{ matrix.python }} (${{ matrix.os }})
|
|
24
|
+
runs-on: ${{ matrix.os }}
|
|
25
|
+
strategy:
|
|
26
|
+
fail-fast: false
|
|
27
|
+
matrix:
|
|
28
|
+
os: [ubuntu-latest]
|
|
29
|
+
python: ["3.12", "3.13", "3.14"]
|
|
30
|
+
include:
|
|
31
|
+
- os: macos-latest
|
|
32
|
+
python: "3.13"
|
|
33
|
+
- os: windows-latest
|
|
34
|
+
python: "3.13"
|
|
35
|
+
steps:
|
|
36
|
+
# The files as committed: a CRLF checkout on Windows would change bytes the tests compare.
|
|
37
|
+
- run: git config --global core.autocrlf false
|
|
38
|
+
- uses: actions/checkout@v6
|
|
39
|
+
- uses: astral-sh/setup-uv@v7
|
|
40
|
+
with:
|
|
41
|
+
python-version: ${{ matrix.python }} # overrides .python-version
|
|
42
|
+
enable-cache: true
|
|
43
|
+
- run: uv sync --locked
|
|
44
|
+
- run: uv run ruff check .
|
|
45
|
+
- run: uv run ruff format --check .
|
|
46
|
+
# Every OS's branches type-check on every runner.
|
|
47
|
+
- run: uv run pyright --pythonplatform Linux
|
|
48
|
+
- run: uv run pyright --pythonplatform Darwin
|
|
49
|
+
- run: uv run pyright --pythonplatform Windows
|
|
50
|
+
- run: uv run lint-imports
|
|
51
|
+
# pyproject.toml's addopts leave out the live, e2e and perf tests; the e2e
|
|
52
|
+
# tests need docker and run on Linux only (`uv run pytest -m e2e`).
|
|
53
|
+
- run: uv run pytest --cov
|
|
54
|
+
|
|
55
|
+
lowest-direct:
|
|
56
|
+
name: Lowest direct dependencies (Python 3.12)
|
|
57
|
+
runs-on: ubuntu-latest
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@v6
|
|
60
|
+
- uses: astral-sh/setup-uv@v7
|
|
61
|
+
with:
|
|
62
|
+
# 3.12: the lowest pydantic-core has no wheel for 3.14.
|
|
63
|
+
python-version: "3.12"
|
|
64
|
+
enable-cache: true
|
|
65
|
+
# Deselected here only: the committed openapi.json documents of the
|
|
66
|
+
# monitor and the hub are generated by the locked fastapi/pydantic and
|
|
67
|
+
# differ byte-for-byte under the oldest ones, and starlette's old
|
|
68
|
+
# TestClient cannot parse an IPv6 base URL.
|
|
69
|
+
- run: >-
|
|
70
|
+
uv run --isolated --resolution lowest-direct pytest
|
|
71
|
+
--deselect tests/test_monitor_api.py::test_the_committed_openapi_document_is_current
|
|
72
|
+
--deselect tests/test_hub_server.py::test_the_committed_openapi_document_is_current
|
|
73
|
+
--deselect tests/test_monitor_api.py::test_only_local_host_names_are_answered
|
|
74
|
+
|
|
75
|
+
web:
|
|
76
|
+
name: Web UI (types, lint, tests, committed build)
|
|
77
|
+
runs-on: ubuntu-latest
|
|
78
|
+
defaults:
|
|
79
|
+
run:
|
|
80
|
+
working-directory: web
|
|
81
|
+
steps:
|
|
82
|
+
- uses: actions/checkout@v6
|
|
83
|
+
# The docs site renders the packages' documentation with `contraagent.docs`.
|
|
84
|
+
- uses: astral-sh/setup-uv@v7
|
|
85
|
+
with:
|
|
86
|
+
enable-cache: true
|
|
87
|
+
- run: uv sync --locked
|
|
88
|
+
working-directory: .
|
|
89
|
+
- uses: actions/setup-node@v6
|
|
90
|
+
with:
|
|
91
|
+
node-version: 22
|
|
92
|
+
- run: corepack enable
|
|
93
|
+
- run: pnpm install --frozen-lockfile
|
|
94
|
+
# The generated API types match the committed OpenAPI document.
|
|
95
|
+
- run: pnpm gen --check
|
|
96
|
+
# Every message is extracted, translated, and built into src/locales.
|
|
97
|
+
- run: pnpm i18n
|
|
98
|
+
- run: git diff --exit-code -- packages/ui/xliff packages/ui/src/locales
|
|
99
|
+
- run: pnpm --filter @contraagent/ui i18n:check
|
|
100
|
+
- run: pnpm typecheck
|
|
101
|
+
- run: pnpm lint
|
|
102
|
+
- run: pnpm test
|
|
103
|
+
# The monitor serves the built UI from src/contraagent/_internal/monitor/static,
|
|
104
|
+
# which is committed: rebuilding must not change it.
|
|
105
|
+
- run: pnpm build
|
|
106
|
+
# What an npm consumer gets: the built packages' types resolve on their own.
|
|
107
|
+
- run: pnpm check:dist
|
|
108
|
+
- run: git diff --exit-code -- ../src/contraagent/_internal/monitor/static
|
|
109
|
+
- run: test -z "$(git status --porcelain -- ../src/contraagent/_internal/monitor/static)"
|
|
110
|
+
|
|
111
|
+
web-e2e:
|
|
112
|
+
name: Web UI end to end (Back, Forward, reload)
|
|
113
|
+
runs-on: ubuntu-latest
|
|
114
|
+
steps:
|
|
115
|
+
- uses: actions/checkout@v6
|
|
116
|
+
- uses: astral-sh/setup-uv@v7
|
|
117
|
+
with:
|
|
118
|
+
enable-cache: true
|
|
119
|
+
- run: uv sync --locked
|
|
120
|
+
- uses: actions/setup-node@v6
|
|
121
|
+
with:
|
|
122
|
+
node-version: 22
|
|
123
|
+
- run: corepack enable
|
|
124
|
+
- run: pnpm install --frozen-lockfile
|
|
125
|
+
working-directory: web
|
|
126
|
+
- run: pnpm exec playwright install --with-deps chromium
|
|
127
|
+
working-directory: web
|
|
128
|
+
# Builds the page, runs the demo pipeline, serves it with the real monitor.
|
|
129
|
+
- run: pnpm e2e
|
|
130
|
+
working-directory: web
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Build the documentation site (web/apps/docs) and deploy it to GitHub Pages,
|
|
2
|
+
# https://t-tani.github.io/contraagent/, on every push to main. The site is
|
|
3
|
+
# built for that base path (web/apps/docs/site.ts).
|
|
4
|
+
name: Pages
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
# One deploy at a time; a newer push waits for the deploy in progress, which
|
|
15
|
+
# runs to its end.
|
|
16
|
+
concurrency:
|
|
17
|
+
group: pages
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
build:
|
|
22
|
+
name: Build the documentation site
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
defaults:
|
|
25
|
+
run:
|
|
26
|
+
working-directory: web
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v6
|
|
29
|
+
# The docs site renders the packages' documentation with `contraagent.docs`.
|
|
30
|
+
- uses: astral-sh/setup-uv@v7
|
|
31
|
+
with:
|
|
32
|
+
enable-cache: true
|
|
33
|
+
- run: uv sync --locked
|
|
34
|
+
working-directory: .
|
|
35
|
+
- uses: actions/setup-node@v6
|
|
36
|
+
with:
|
|
37
|
+
node-version: 22
|
|
38
|
+
- run: corepack enable
|
|
39
|
+
- run: pnpm install --frozen-lockfile
|
|
40
|
+
- run: pnpm build
|
|
41
|
+
- uses: actions/upload-pages-artifact@v5
|
|
42
|
+
with:
|
|
43
|
+
path: web/apps/docs/dist
|
|
44
|
+
|
|
45
|
+
deploy:
|
|
46
|
+
name: Deploy to GitHub Pages
|
|
47
|
+
needs: build
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
permissions:
|
|
50
|
+
pages: write
|
|
51
|
+
id-token: write
|
|
52
|
+
environment:
|
|
53
|
+
name: github-pages
|
|
54
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
55
|
+
steps:
|
|
56
|
+
- id: deployment
|
|
57
|
+
uses: actions/deploy-pages@v5
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Publish a release: a push of the tag `X.Y.Z` publishes the Python package
|
|
2
|
+
# `contraagent` to PyPI and @contraagent/api, @contraagent/elements and
|
|
3
|
+
# @contraagent/ui to npm, both through Trusted Publishing (OIDC, no tokens), and
|
|
4
|
+
# creates the GitHub release with that version's section of CHANGELOG.md.
|
|
5
|
+
#
|
|
6
|
+
# Run by hand (workflow_dispatch) with `testpypi` on, it is a dry run: the
|
|
7
|
+
# Python package goes to TestPyPI (environment `testpypi`), `npm publish
|
|
8
|
+
# --dry-run` checks each npm tarball, and no GitHub release is made. With `testpypi` off it must run on a
|
|
9
|
+
# tag, and it publishes that tag as a push would.
|
|
10
|
+
#
|
|
11
|
+
# The steps for the person who releases: docs/releasing.md.
|
|
12
|
+
name: Release
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
push:
|
|
16
|
+
tags: ["[0-9]+.[0-9]+.[0-9]+"]
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
inputs:
|
|
19
|
+
testpypi:
|
|
20
|
+
description: "Dry run: publish to TestPyPI and run npm publish --dry-run"
|
|
21
|
+
type: boolean
|
|
22
|
+
default: true
|
|
23
|
+
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
|
|
27
|
+
# One release at a time for one ref, never cancelled half-way. The group must
|
|
28
|
+
# differ from ci.yml's, which runs here with this workflow's name and ref.
|
|
29
|
+
concurrency:
|
|
30
|
+
group: publish-${{ github.ref }}
|
|
31
|
+
cancel-in-progress: false
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
check:
|
|
35
|
+
name: Versions and changelog
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
outputs:
|
|
38
|
+
version: ${{ steps.versions.outputs.version }}
|
|
39
|
+
dry: ${{ steps.versions.outputs.dry }}
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v6
|
|
42
|
+
# The tag, pyproject.toml and the three package.json name one version, and
|
|
43
|
+
# the npm packages depend on each other at it (`workspace:*`, which
|
|
44
|
+
# `pnpm pack` writes as the exact version, or that version itself).
|
|
45
|
+
- id: versions
|
|
46
|
+
env:
|
|
47
|
+
DRY: ${{ github.event_name == 'workflow_dispatch' && inputs.testpypi }}
|
|
48
|
+
REF_TYPE: ${{ github.ref_type }}
|
|
49
|
+
REF_NAME: ${{ github.ref_name }}
|
|
50
|
+
run: |
|
|
51
|
+
python3 - <<'EOF'
|
|
52
|
+
import json, os, re, sys, tomllib
|
|
53
|
+
from pathlib import Path
|
|
54
|
+
|
|
55
|
+
dry = os.environ["DRY"] == "true"
|
|
56
|
+
version = tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"]
|
|
57
|
+
errors = []
|
|
58
|
+
if not re.fullmatch(r"\d+\.\d+\.\d+", version):
|
|
59
|
+
errors.append(f"pyproject.toml: version {version} is not X.Y.Z")
|
|
60
|
+
if os.environ["REF_TYPE"] == "tag":
|
|
61
|
+
if os.environ["REF_NAME"] != version:
|
|
62
|
+
errors.append(f"tag {os.environ['REF_NAME']} differs from pyproject.toml's version {version}")
|
|
63
|
+
elif not dry:
|
|
64
|
+
errors.append(f"a release runs on a tag, not on {os.environ['REF_TYPE']} {os.environ['REF_NAME']}")
|
|
65
|
+
manifests = [json.loads(Path(f"web/packages/{d}/package.json").read_text()) for d in ("api", "elements", "ui")]
|
|
66
|
+
names = {m["name"] for m in manifests}
|
|
67
|
+
for m in manifests:
|
|
68
|
+
if m["version"] != version:
|
|
69
|
+
errors.append(f"{m['name']}: version {m['version']}, not {version}")
|
|
70
|
+
for field in ("dependencies", "peerDependencies", "optionalDependencies"):
|
|
71
|
+
for name, spec in m.get(field, {}).items():
|
|
72
|
+
if name in names and spec not in ("workspace:*", version):
|
|
73
|
+
errors.append(f"{m['name']}: {field}.{name} is {spec}, not workspace:* or {version}")
|
|
74
|
+
|
|
75
|
+
# The version's section of CHANGELOG.md, which `towncrier build` writes:
|
|
76
|
+
# from its `## [X.Y.Z]` heading to the next release's heading.
|
|
77
|
+
text = Path("CHANGELOG.md").read_text()
|
|
78
|
+
section = re.search(rf"^## \[{re.escape(version)}\][^\n]*\n(.*?)(?=^## \[|\Z)", text, re.M | re.S)
|
|
79
|
+
if section and section.group(1).strip():
|
|
80
|
+
Path("notes.md").write_text(section.group(1).strip() + "\n")
|
|
81
|
+
elif dry:
|
|
82
|
+
print(f"::warning::CHANGELOG.md has no section for {version}; a release needs one")
|
|
83
|
+
else:
|
|
84
|
+
errors.append(f"CHANGELOG.md has no section for {version}: uv run towncrier build --version {version}")
|
|
85
|
+
|
|
86
|
+
for e in errors:
|
|
87
|
+
print(f"::error::{e}")
|
|
88
|
+
if errors:
|
|
89
|
+
sys.exit(1)
|
|
90
|
+
with open(os.environ["GITHUB_OUTPUT"], "a") as out:
|
|
91
|
+
out.write(f"version={version}\ndry={'true' if dry else 'false'}\n")
|
|
92
|
+
print(f"version {version}, {'dry run' if dry else 'release'}")
|
|
93
|
+
EOF
|
|
94
|
+
- if: steps.versions.outputs.dry == 'false'
|
|
95
|
+
uses: actions/upload-artifact@v7
|
|
96
|
+
with:
|
|
97
|
+
name: notes
|
|
98
|
+
path: notes.md
|
|
99
|
+
if-no-files-found: error
|
|
100
|
+
|
|
101
|
+
# Every job of ci.yml: the full test suite on every platform, and the web checks.
|
|
102
|
+
test:
|
|
103
|
+
name: CI
|
|
104
|
+
uses: ./.github/workflows/ci.yml
|
|
105
|
+
|
|
106
|
+
build:
|
|
107
|
+
name: Python and npm packages
|
|
108
|
+
runs-on: ubuntu-latest
|
|
109
|
+
steps:
|
|
110
|
+
- uses: actions/checkout@v6
|
|
111
|
+
- uses: astral-sh/setup-uv@v7
|
|
112
|
+
- run: uv build
|
|
113
|
+
- run: uvx twine check --strict dist/*
|
|
114
|
+
- uses: actions/setup-node@v6
|
|
115
|
+
with:
|
|
116
|
+
node-version: 22
|
|
117
|
+
- run: corepack enable
|
|
118
|
+
- run: pnpm install --frozen-lockfile
|
|
119
|
+
working-directory: web
|
|
120
|
+
# The tarballs as npm receives them: each dependency on another of the
|
|
121
|
+
# three names its exact version.
|
|
122
|
+
- run: pnpm tarballs:registry
|
|
123
|
+
working-directory: web
|
|
124
|
+
- run: node scripts/packed.mjs tarballs/*.tgz
|
|
125
|
+
working-directory: web
|
|
126
|
+
- uses: actions/upload-artifact@v7
|
|
127
|
+
with:
|
|
128
|
+
name: python
|
|
129
|
+
path: dist/
|
|
130
|
+
if-no-files-found: error
|
|
131
|
+
- uses: actions/upload-artifact@v7
|
|
132
|
+
with:
|
|
133
|
+
name: npm
|
|
134
|
+
path: web/tarballs/
|
|
135
|
+
if-no-files-found: error
|
|
136
|
+
|
|
137
|
+
pypi:
|
|
138
|
+
name: PyPI
|
|
139
|
+
needs: [check, test, build]
|
|
140
|
+
if: needs.check.outputs.dry == 'false'
|
|
141
|
+
runs-on: ubuntu-latest
|
|
142
|
+
environment:
|
|
143
|
+
name: pypi
|
|
144
|
+
url: https://pypi.org/p/contraagent
|
|
145
|
+
permissions:
|
|
146
|
+
id-token: write
|
|
147
|
+
steps:
|
|
148
|
+
- uses: actions/download-artifact@v8
|
|
149
|
+
with:
|
|
150
|
+
name: python
|
|
151
|
+
path: dist/
|
|
152
|
+
- uses: pypa/gh-action-pypi-publish@v1.14.2
|
|
153
|
+
|
|
154
|
+
# The dry run's upload, in its own environment: `pypi` accepts only tags.
|
|
155
|
+
testpypi:
|
|
156
|
+
name: TestPyPI
|
|
157
|
+
needs: [check, test, build]
|
|
158
|
+
if: needs.check.outputs.dry == 'true'
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
environment:
|
|
161
|
+
name: testpypi
|
|
162
|
+
url: https://test.pypi.org/p/contraagent
|
|
163
|
+
permissions:
|
|
164
|
+
id-token: write
|
|
165
|
+
steps:
|
|
166
|
+
- uses: actions/download-artifact@v8
|
|
167
|
+
with:
|
|
168
|
+
name: python
|
|
169
|
+
path: dist/
|
|
170
|
+
- uses: pypa/gh-action-pypi-publish@v1.14.2
|
|
171
|
+
with:
|
|
172
|
+
repository-url: https://test.pypi.org/legacy/
|
|
173
|
+
# TestPyPI keeps a version once uploaded: a second dry run of it passes.
|
|
174
|
+
skip-existing: true
|
|
175
|
+
|
|
176
|
+
npm:
|
|
177
|
+
name: npm
|
|
178
|
+
needs: [check, test, build]
|
|
179
|
+
if: needs.check.outputs.dry == 'false'
|
|
180
|
+
runs-on: ubuntu-latest
|
|
181
|
+
environment:
|
|
182
|
+
name: npm
|
|
183
|
+
url: https://www.npmjs.com/org/contraagent
|
|
184
|
+
permissions:
|
|
185
|
+
id-token: write
|
|
186
|
+
steps:
|
|
187
|
+
- uses: actions/download-artifact@v8
|
|
188
|
+
with:
|
|
189
|
+
name: npm
|
|
190
|
+
path: tarballs/
|
|
191
|
+
- uses: actions/setup-node@v6
|
|
192
|
+
with:
|
|
193
|
+
node-version: 22
|
|
194
|
+
# Trusted publishing needs npm 11.5.1 or later; Node 22 brings npm 10.
|
|
195
|
+
- run: npm install --global npm@11.21.0
|
|
196
|
+
# In the order they depend on each other: api, elements, ui. A version
|
|
197
|
+
# already on npm stays as it is: the first one, which the owner publishes
|
|
198
|
+
# by hand (docs/releasing.md), or one from a run that failed part way.
|
|
199
|
+
- env:
|
|
200
|
+
VERSION: ${{ needs.check.outputs.version }}
|
|
201
|
+
run: |
|
|
202
|
+
for name in api elements ui; do
|
|
203
|
+
if npm view "@contraagent/$name@$VERSION" version >/dev/null 2>&1; then
|
|
204
|
+
echo "::notice::@contraagent/$name@$VERSION is on npm already"
|
|
205
|
+
continue
|
|
206
|
+
fi
|
|
207
|
+
npm publish "tarballs/contraagent-$name-$VERSION.tgz" --access public --provenance
|
|
208
|
+
done
|
|
209
|
+
|
|
210
|
+
# The dry run's npm side: the same npm and the same tarballs, with nothing
|
|
211
|
+
# sent, so it needs neither the `npm` environment nor a token.
|
|
212
|
+
npm-dry-run:
|
|
213
|
+
name: npm (dry run)
|
|
214
|
+
needs: [check, test, build]
|
|
215
|
+
if: needs.check.outputs.dry == 'true'
|
|
216
|
+
runs-on: ubuntu-latest
|
|
217
|
+
steps:
|
|
218
|
+
- uses: actions/download-artifact@v8
|
|
219
|
+
with:
|
|
220
|
+
name: npm
|
|
221
|
+
path: tarballs/
|
|
222
|
+
- uses: actions/setup-node@v6
|
|
223
|
+
with:
|
|
224
|
+
node-version: 22
|
|
225
|
+
- run: npm install --global npm@11.21.0
|
|
226
|
+
- env:
|
|
227
|
+
VERSION: ${{ needs.check.outputs.version }}
|
|
228
|
+
run: |
|
|
229
|
+
for name in api elements ui; do
|
|
230
|
+
npm publish "tarballs/contraagent-$name-$VERSION.tgz" --access public --dry-run
|
|
231
|
+
done
|
|
232
|
+
|
|
233
|
+
release:
|
|
234
|
+
name: GitHub release
|
|
235
|
+
needs: [check, pypi, npm]
|
|
236
|
+
if: needs.check.outputs.dry == 'false'
|
|
237
|
+
runs-on: ubuntu-latest
|
|
238
|
+
permissions:
|
|
239
|
+
contents: write
|
|
240
|
+
steps:
|
|
241
|
+
- uses: actions/download-artifact@v8
|
|
242
|
+
with:
|
|
243
|
+
name: python
|
|
244
|
+
path: dist/
|
|
245
|
+
- uses: actions/download-artifact@v8
|
|
246
|
+
with:
|
|
247
|
+
name: notes
|
|
248
|
+
- env:
|
|
249
|
+
GH_TOKEN: ${{ github.token }}
|
|
250
|
+
TAG: ${{ needs.check.outputs.version }}
|
|
251
|
+
run: >-
|
|
252
|
+
gh release create "$TAG" dist/*
|
|
253
|
+
--repo "$GITHUB_REPOSITORY" --verify-tag
|
|
254
|
+
--title "$TAG" --notes-file notes.md
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
.pytest_cache/
|
|
4
|
+
.ruff_cache/
|
|
5
|
+
.coverage
|
|
6
|
+
.coverage.*
|
|
7
|
+
htmlcov/
|
|
8
|
+
.venv/
|
|
9
|
+
dist/
|
|
10
|
+
build/
|
|
11
|
+
*.egg-info/
|
|
12
|
+
# what the demo and the live test leave behind
|
|
13
|
+
demo-runs/
|
|
14
|
+
demo-out/
|
|
15
|
+
inputs/
|
|
16
|
+
live-demo/
|
|
17
|
+
.claude/worktrees/
|
|
18
|
+
# what make-tokens writes beside the hub's compose example
|
|
19
|
+
src/contraagent/docs/examples/hub/.env
|
|
20
|
+
src/contraagent/docs/examples/hub/secrets/*
|
|
21
|
+
!src/contraagent/docs/examples/hub/secrets/*.example
|
|
22
|
+
src/contraagent/docs/examples/hub/*.whl
|
|
23
|
+
.import_linter_cache/
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# pre-commit reads this file from the repository root.
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
4
|
+
rev: v0.17.0
|
|
5
|
+
hooks:
|
|
6
|
+
- id: ruff-check
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
- repo: local
|
|
9
|
+
hooks:
|
|
10
|
+
# Whole-project check against the locked environment, not per file.
|
|
11
|
+
- id: pyright
|
|
12
|
+
name: pyright
|
|
13
|
+
entry: uv run pyright
|
|
14
|
+
language: system
|
|
15
|
+
types: [python]
|
|
16
|
+
pass_filenames: false
|
|
17
|
+
# The web UI: types and lint, when anything under web/ changes.
|
|
18
|
+
- id: web-check
|
|
19
|
+
name: web (typecheck, lint)
|
|
20
|
+
entry: bash -c 'cd web && pnpm typecheck && pnpm lint'
|
|
21
|
+
language: system
|
|
22
|
+
files: ^web/
|
|
23
|
+
pass_filenames: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# contraagent
|
|
2
|
+
|
|
3
|
+
`contraagent` runs coding-agent CLIs (`claude -p`, `omp -p`, Codex, opencode, pi)
|
|
4
|
+
as typed, supervised tasks: a Python package (`src/contraagent/`) and a web monitor
|
|
5
|
+
(`web/`). This file is for agents changing contraagent itself. Before changing
|
|
6
|
+
anything under `web/`, read `web/AGENTS.md`.
|
|
7
|
+
|
|
8
|
+
## Commands
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
uv run ruff check . && uv run ruff format --check .
|
|
12
|
+
uv run pyright # 0 errors; the "yaml" source warning is expected
|
|
13
|
+
uv run pytest # parallel (xdist, at most 6 workers; -n0 for one); runs lint-imports too
|
|
14
|
+
uv run pytest -m e2e # the hub and relays as processes over Postgres and RustFS (docker)
|
|
15
|
+
CONTRAAGENT_LIVE=1 uv run pytest -m live # real coding agents; spends tokens
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A committed file that a test compares against goes stale when its source changes;
|
|
19
|
+
the test names it. Rewrite it with:
|
|
20
|
+
|
|
21
|
+
| After changing | Run |
|
|
22
|
+
|---|---|
|
|
23
|
+
| the public API | `uv run python tests/api/snapshot.py` (`tests/api/contraagent.api.txt`) |
|
|
24
|
+
| a command's arguments or help | `uv run python tests/cli/help.py` (`tests/cli/help.txt`, on the Python of `.python-version`) |
|
|
25
|
+
| a monitor response model or route | `uv run contraagent monitor --openapi src/contraagent/_internal/monitor/openapi.json`, then `pnpm gen` in `web/` |
|
|
26
|
+
| a run record model or the config's tables | `uv run python -m contraagent._internal.execution.file_schemas` (`src/contraagent/docs/schemas/`) |
|
|
27
|
+
| what the monitor returns | `uv run python web/apps/docs/scripts/fixture.py` (the docs site's fixtures) |
|
|
28
|
+
| what the CLI prints on the demo | `uv run python web/apps/docs/scripts/landing.py` |
|
|
29
|
+
| the omp version | `uv run python tests/fixtures/omp/record.py` (spends a few cents), then `tests/test_omp_wire.py` |
|
|
30
|
+
|
|
31
|
+
Release checks: `uv run pyright --verifytypes contraagent --ignoreexternal` (no unknown
|
|
32
|
+
type outside `contraagent.docs`), `uv run griffe check --search src contraagent --against
|
|
33
|
+
<last tag>` (breaking changes since a release; tags are `<version>`),
|
|
34
|
+
`docker build -t contraagent-hub:dev .` (the hub's image).
|
|
35
|
+
|
|
36
|
+
### Releasing
|
|
37
|
+
|
|
38
|
+
A pushed tag `X.Y.Z` releases: `.github/workflows/release.yml` checks that the tag,
|
|
39
|
+
pyproject.toml, the three package.json and CHANGELOG.md agree, runs ci.yml, and
|
|
40
|
+
publishes to PyPI and npm. The steps and the one-time setup are in
|
|
41
|
+
[docs/releasing.md](docs/releasing.md).
|
|
42
|
+
|
|
43
|
+
A test never waits out a retry's backoff (`RetryingRunner.backoff` is 0 in the tests).
|
|
44
|
+
Tests that share something across a module (one hub, the `live-demo` directory, an
|
|
45
|
+
agent's rate limits) carry an `xdist_group`.
|
|
46
|
+
|
|
47
|
+
## One word, one meaning
|
|
48
|
+
|
|
49
|
+
The glossary is `src/contraagent/docs/concepts.md`. Every word there means exactly
|
|
50
|
+
one thing in the code, the files a run writes, the monitor (API and UI), the
|
|
51
|
+
documentation and the examples. Do not use one of these words in another sense, and
|
|
52
|
+
do not add a second word for the same thing; a new word goes into the glossary first.
|
|
53
|
+
The monitor's UI shows its own reader-facing words for the same terms
|
|
54
|
+
(`web/packages/ui/WORDS.md`).
|
|
55
|
+
|
|
56
|
+
Some names stay although they look like a second word: `--agent` (Claude Code's flag,
|
|
57
|
+
from `Launch.role`), `Backend`/`create_backend`/`register_backend`/`known_agents` (keyed
|
|
58
|
+
by agent name), `[tasks.<kind>]` and `kind`, `Route`/`Router`/hop (the failover chain:
|
|
59
|
+
a route is one entry, a hop one launch on one route), `ambient` (the host's own
|
|
60
|
+
credential), `effort`/`max_turns`/`max_budget_usd` (the agents' flag names), cursor
|
|
61
|
+
`stage`, `streams/` and `*.stream.jsonl`, `hollow` (see `LaunchResult`), `RoutingPlan`
|
|
62
|
+
(`plan.jsonl` is the queue).
|
|
63
|
+
|
|
64
|
+
## Public API and layers
|
|
65
|
+
|
|
66
|
+
The implementation is under `src/contraagent/_internal/`. Users import only the
|
|
67
|
+
public modules (`contraagent`, `.config`, `.backends`, `.engine`, `.plugins`,
|
|
68
|
+
`.monitor`, `.monitor.api`, `.testing`); each only re-exports names from `_internal`
|
|
69
|
+
and calls `publish(__name__, __all__)`. A name that a user, the documentation or an
|
|
70
|
+
example uses gets one public home; everything else stays in `_internal`. Keep public
|
|
71
|
+
signatures small: a helper hides behind a method, a value returns the type it behaves
|
|
72
|
+
as, and a function a user passes is a `Protocol`. `tests/test_public_api.py` checks
|
|
73
|
+
the rest (one path per object, every reached type exported, no `**kwargs`, full types).
|
|
74
|
+
|
|
75
|
+
Inside `_internal`, a layer imports only the layers listed before it in the
|
|
76
|
+
`_internal/__init__.py` docstring; pass a callback or a protocol instead of importing
|
|
77
|
+
a later layer. Every reader and writer of a run's files goes through `runs/`.
|
|
78
|
+
`uv run lint-imports` checks this (pyproject.toml's
|
|
79
|
+
`[tool.importlinter]`; an exception only as a commented `ignore_imports` line), and
|
|
80
|
+
`tests/test_layers.py` runs it.
|
|
81
|
+
|
|
82
|
+
## Documentation
|
|
83
|
+
|
|
84
|
+
Each package holds its own documentation; its index lists its topics, and that list
|
|
85
|
+
is the site's sidebar and what `contraagent docs` prints:
|
|
86
|
+
`src/contraagent/docs/README.md`, `web/packages/ui/README.md`,
|
|
87
|
+
`web/packages/elements/README.md`, `web/packages/api/README.md`.
|
|
88
|
+
|
|
89
|
+
- The package documentation, the docstrings and the messages of `contraagent check`
|
|
90
|
+
are written for a coding agent that writes a pipeline from them alone: every fact it
|
|
91
|
+
needs is reachable from `contraagent docs`, without contraagent's source. The root
|
|
92
|
+
`README.md` and the monitor are for the person who asks for the pipeline, runs it
|
|
93
|
+
and reviews it.
|
|
94
|
+
- Code is quoted, never pasted: `::code{file="..." from="..." to="..."}`. The examples
|
|
95
|
+
run in the tests (`tests/test_docs.py`), so update them with any API change. The root
|
|
96
|
+
`README.md` writes its code out, after `<!-- ::code{...} -->` lines that the same
|
|
97
|
+
test checks.
|
|
98
|
+
- Facts live in the code (docstrings, `--help`, `examples/reference/pipeline.toml`,
|
|
99
|
+
`custom-elements.json`, `openapi.json`); prose points to them.
|
|
100
|
+
- The site (`web/apps/docs`) is built from the packages' documentation by
|
|
101
|
+
`scripts/collect.py`; see `web/AGENTS.md`.
|
|
102
|
+
|
|
103
|
+
Prose style, for the READMEs and topics: plain declarative sentences and short
|
|
104
|
+
paragraphs. A paragraph or list item starts with a sentence that carries its point,
|
|
105
|
+
not a bold run-in label; a part that needs a label gets a heading. Bold marks at most
|
|
106
|
+
a few words in a page. A link sits on the words it names, never in a parenthetical
|
|
107
|
+
after them. No slogan fragments, no "Label: fragment" sentences; vary the openings.
|
|
108
|
+
Write global English: common words, no idioms, phrasal verbs or slang, no
|
|
109
|
+
abbreviations but API, JSON, CLI, USD and units; the text must keep its meaning
|
|
110
|
+
through machine translation.
|
|
111
|
+
|
|
112
|
+
## Changes and commits
|
|
113
|
+
|
|
114
|
+
- A user-visible change adds a fragment `changelog.d/<slug>.<type>.md` (types and
|
|
115
|
+
rules in `changelog.d/README.md`); towncrier writes `CHANGELOG.md` at a release.
|
|
116
|
+
`uv run towncrier check --compare-with origin/main` checks a branch.
|
|
117
|
+
- Commit messages follow Google's CL description style: a short imperative first
|
|
118
|
+
line, a blank line, then a body that says what changed and why, wrapped at about
|
|
119
|
+
72 columns. No attribution trailers (`Co-Authored-By`, session links), no model
|
|
120
|
+
names, no local paths.
|
|
121
|
+
|
|
122
|
+
## Compatibility
|
|
123
|
+
|
|
124
|
+
The public API is what `src/contraagent/docs/compatibility.md` lists: the public
|
|
125
|
+
modules' `__all__`, the command line, the config file, the files a run writes and the
|
|
126
|
+
monitor's `openapi.json`. `contraagent._internal` is not public: change it freely,
|
|
127
|
+
with no aliases or shims.
|
|
128
|
+
|
|
129
|
+
- Until 0.1.0 is tagged, rename the public API freely too: no compatibility aliases,
|
|
130
|
+
no deprecation shims, no readers for old run directories; a changelog fragment
|
|
131
|
+
records each rename as old → new.
|
|
132
|
+
- From 0.1.0, a public API change is deliberate: the snapshots show it, a fragment
|
|
133
|
+
records it, and it waits for a minor release (from 1.0, a major one, after
|
|
134
|
+
`ContraagentDeprecationWarning` for two minor releases, through `migration()` in
|
|
135
|
+
`_internal/public.py`). A run record change that the current reader cannot read
|
|
136
|
+
raises `FORMAT` in `_internal/runs/layout.py` and adds a fixture beside
|
|
137
|
+
`tests/fixtures/runs/v1/`; the monitor reads every format in `FORMATS`.
|