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.
Files changed (1117) hide show
  1. contraagent-0.1.0/.dockerignore +13 -0
  2. contraagent-0.1.0/.github/workflows/ci.yml +130 -0
  3. contraagent-0.1.0/.github/workflows/pages.yml +57 -0
  4. contraagent-0.1.0/.github/workflows/release.yml +254 -0
  5. contraagent-0.1.0/.gitignore +23 -0
  6. contraagent-0.1.0/.pre-commit-config.yaml +23 -0
  7. contraagent-0.1.0/.python-version +1 -0
  8. contraagent-0.1.0/AGENTS.md +137 -0
  9. contraagent-0.1.0/CHANGELOG.md +96 -0
  10. contraagent-0.1.0/CLAUDE.md +1 -0
  11. contraagent-0.1.0/Dockerfile +43 -0
  12. contraagent-0.1.0/LICENSE +21 -0
  13. contraagent-0.1.0/PKG-INFO +189 -0
  14. contraagent-0.1.0/README.md +375 -0
  15. contraagent-0.1.0/changelog.d/README.md +18 -0
  16. contraagent-0.1.0/changelog.d/template.md +11 -0
  17. contraagent-0.1.0/docs/releasing.md +72 -0
  18. contraagent-0.1.0/pyproject.toml +336 -0
  19. contraagent-0.1.0/src/contraagent/__init__.py +99 -0
  20. contraagent-0.1.0/src/contraagent/__main__.py +3 -0
  21. contraagent-0.1.0/src/contraagent/_internal/__init__.py +43 -0
  22. contraagent-0.1.0/src/contraagent/_internal/backends/__init__.py +119 -0
  23. contraagent-0.1.0/src/contraagent/_internal/backends/base.py +566 -0
  24. contraagent-0.1.0/src/contraagent/_internal/backends/claude/__init__.py +5 -0
  25. contraagent-0.1.0/src/contraagent/_internal/backends/claude/backend.py +310 -0
  26. contraagent-0.1.0/src/contraagent/_internal/backends/claude/login.py +20 -0
  27. contraagent-0.1.0/src/contraagent/_internal/backends/claude/wire.py +398 -0
  28. contraagent-0.1.0/src/contraagent/_internal/backends/codex/__init__.py +5 -0
  29. contraagent-0.1.0/src/contraagent/_internal/backends/codex/backend.py +397 -0
  30. contraagent-0.1.0/src/contraagent/_internal/backends/codex/hooks.py +188 -0
  31. contraagent-0.1.0/src/contraagent/_internal/backends/codex/wire.py +395 -0
  32. contraagent-0.1.0/src/contraagent/_internal/backends/credentials.py +459 -0
  33. contraagent-0.1.0/src/contraagent/_internal/backends/launch.py +490 -0
  34. contraagent-0.1.0/src/contraagent/_internal/backends/live_processes.py +268 -0
  35. contraagent-0.1.0/src/contraagent/_internal/backends/omp/__init__.py +6 -0
  36. contraagent-0.1.0/src/contraagent/_internal/backends/omp/backend.py +455 -0
  37. contraagent-0.1.0/src/contraagent/_internal/backends/omp/catalogue.py +29 -0
  38. contraagent-0.1.0/src/contraagent/_internal/backends/omp/config.py +136 -0
  39. contraagent-0.1.0/src/contraagent/_internal/backends/omp/isolation/config.yml +27 -0
  40. contraagent-0.1.0/src/contraagent/_internal/backends/omp/rpc.py +358 -0
  41. contraagent-0.1.0/src/contraagent/_internal/backends/omp/wire.py +413 -0
  42. contraagent-0.1.0/src/contraagent/_internal/backends/opencode/__init__.py +5 -0
  43. contraagent-0.1.0/src/contraagent/_internal/backends/opencode/backend.py +442 -0
  44. contraagent-0.1.0/src/contraagent/_internal/backends/opencode/catalogue.py +37 -0
  45. contraagent-0.1.0/src/contraagent/_internal/backends/opencode/wire.py +223 -0
  46. contraagent-0.1.0/src/contraagent/_internal/backends/opencode_key.py +198 -0
  47. contraagent-0.1.0/src/contraagent/_internal/backends/pi/__init__.py +5 -0
  48. contraagent-0.1.0/src/contraagent/_internal/backends/pi/agent_dir.py +116 -0
  49. contraagent-0.1.0/src/contraagent/_internal/backends/pi/backend.py +345 -0
  50. contraagent-0.1.0/src/contraagent/_internal/backends/pi/catalogue.py +22 -0
  51. contraagent-0.1.0/src/contraagent/_internal/backends/pi/login.py +15 -0
  52. contraagent-0.1.0/src/contraagent/_internal/backends/pi/mcp.ts +16 -0
  53. contraagent-0.1.0/src/contraagent/_internal/backends/pi/wire.py +88 -0
  54. contraagent-0.1.0/src/contraagent/_internal/backends/plugin_files.py +32 -0
  55. contraagent-0.1.0/src/contraagent/_internal/backends/process.py +314 -0
  56. contraagent-0.1.0/src/contraagent/_internal/backends/refusal.py +162 -0
  57. contraagent-0.1.0/src/contraagent/_internal/backends/streams.py +146 -0
  58. contraagent-0.1.0/src/contraagent/_internal/backends/wire.py +243 -0
  59. contraagent-0.1.0/src/contraagent/_internal/cli.py +478 -0
  60. contraagent-0.1.0/src/contraagent/_internal/commandline.py +212 -0
  61. contraagent-0.1.0/src/contraagent/_internal/contracts/__init__.py +8 -0
  62. contraagent-0.1.0/src/contraagent/_internal/contracts/calls.py +239 -0
  63. contraagent-0.1.0/src/contraagent/_internal/contracts/contract.py +707 -0
  64. contraagent-0.1.0/src/contraagent/_internal/contracts/pointers.py +180 -0
  65. contraagent-0.1.0/src/contraagent/_internal/contracts/validators.py +178 -0
  66. contraagent-0.1.0/src/contraagent/_internal/dispatch/__init__.py +96 -0
  67. contraagent-0.1.0/src/contraagent/_internal/dispatch/flow.py +519 -0
  68. contraagent-0.1.0/src/contraagent/_internal/dispatch/interceptors.py +61 -0
  69. contraagent-0.1.0/src/contraagent/_internal/dispatch/python_task.py +90 -0
  70. contraagent-0.1.0/src/contraagent/_internal/dispatch/queue.py +713 -0
  71. contraagent-0.1.0/src/contraagent/_internal/dispatch/records.py +374 -0
  72. contraagent-0.1.0/src/contraagent/_internal/dispatch/task.py +291 -0
  73. contraagent-0.1.0/src/contraagent/_internal/dispatch/templates.py +37 -0
  74. contraagent-0.1.0/src/contraagent/_internal/docs.py +133 -0
  75. contraagent-0.1.0/src/contraagent/_internal/errors.py +27 -0
  76. contraagent-0.1.0/src/contraagent/_internal/execution/__init__.py +39 -0
  77. contraagent-0.1.0/src/contraagent/_internal/execution/adapter.py +105 -0
  78. contraagent-0.1.0/src/contraagent/_internal/execution/changes.py +143 -0
  79. contraagent-0.1.0/src/contraagent/_internal/execution/cursor.py +236 -0
  80. contraagent-0.1.0/src/contraagent/_internal/execution/estimates.py +263 -0
  81. contraagent-0.1.0/src/contraagent/_internal/execution/file_schemas.py +88 -0
  82. contraagent-0.1.0/src/contraagent/_internal/execution/journal.py +99 -0
  83. contraagent-0.1.0/src/contraagent/_internal/execution/pipeline_files.py +172 -0
  84. contraagent-0.1.0/src/contraagent/_internal/execution/python_tasks.py +272 -0
  85. contraagent-0.1.0/src/contraagent/_internal/execution/recording.py +802 -0
  86. contraagent-0.1.0/src/contraagent/_internal/execution/run.py +737 -0
  87. contraagent-0.1.0/src/contraagent/_internal/execution/runner.py +678 -0
  88. contraagent-0.1.0/src/contraagent/_internal/execution/schemas.py +383 -0
  89. contraagent-0.1.0/src/contraagent/_internal/execution/teardown.py +96 -0
  90. contraagent-0.1.0/src/contraagent/_internal/hub/__init__.py +23 -0
  91. contraagent-0.1.0/src/contraagent/_internal/hub/client.py +121 -0
  92. contraagent-0.1.0/src/contraagent/_internal/hub/core.py +227 -0
  93. contraagent-0.1.0/src/contraagent/_internal/hub/openapi.json +590 -0
  94. contraagent-0.1.0/src/contraagent/_internal/hub/postgres.py +345 -0
  95. contraagent-0.1.0/src/contraagent/_internal/hub/protocol.py +132 -0
  96. contraagent-0.1.0/src/contraagent/_internal/hub/relay.py +631 -0
  97. contraagent-0.1.0/src/contraagent/_internal/hub/retention.py +159 -0
  98. contraagent-0.1.0/src/contraagent/_internal/hub/s3.py +126 -0
  99. contraagent-0.1.0/src/contraagent/_internal/hub/segment_format.py +204 -0
  100. contraagent-0.1.0/src/contraagent/_internal/hub/segment_objects.py +179 -0
  101. contraagent-0.1.0/src/contraagent/_internal/hub/segments.py +1092 -0
  102. contraagent-0.1.0/src/contraagent/_internal/hub/server.py +803 -0
  103. contraagent-0.1.0/src/contraagent/_internal/hub/source.py +225 -0
  104. contraagent-0.1.0/src/contraagent/_internal/hub/store.py +385 -0
  105. contraagent-0.1.0/src/contraagent/_internal/hub/streams.py +193 -0
  106. contraagent-0.1.0/src/contraagent/_internal/monitor/__init__.py +14 -0
  107. contraagent-0.1.0/src/contraagent/_internal/monitor/aggregate.py +109 -0
  108. contraagent-0.1.0/src/contraagent/_internal/monitor/api.py +1203 -0
  109. contraagent-0.1.0/src/contraagent/_internal/monitor/core.py +1102 -0
  110. contraagent-0.1.0/src/contraagent/_internal/monitor/export.py +348 -0
  111. contraagent-0.1.0/src/contraagent/_internal/monitor/openapi.json +6659 -0
  112. contraagent-0.1.0/src/contraagent/_internal/monitor/server.py +554 -0
  113. contraagent-0.1.0/src/contraagent/_internal/monitor/static/app.js +985 -0
  114. contraagent-0.1.0/src/contraagent/_internal/monitor/static/apple-touch-icon.png +0 -0
  115. contraagent-0.1.0/src/contraagent/_internal/monitor/static/favicon-32.png +0 -0
  116. contraagent-0.1.0/src/contraagent/_internal/monitor/static/favicon.svg +1 -0
  117. contraagent-0.1.0/src/contraagent/_internal/monitor/static/index.html +31 -0
  118. contraagent-0.1.0/src/contraagent/_internal/monitor/static/ja.js +1 -0
  119. contraagent-0.1.0/src/contraagent/_internal/monitor/trends.py +755 -0
  120. contraagent-0.1.0/src/contraagent/_internal/monitor/views.py +81 -0
  121. contraagent-0.1.0/src/contraagent/_internal/pipeline/__init__.py +29 -0
  122. contraagent-0.1.0/src/contraagent/_internal/pipeline/adapter.py +174 -0
  123. contraagent-0.1.0/src/contraagent/_internal/pipeline/check.py +447 -0
  124. contraagent-0.1.0/src/contraagent/_internal/pipeline/graph.py +763 -0
  125. contraagent-0.1.0/src/contraagent/_internal/pipeline/loops.py +374 -0
  126. contraagent-0.1.0/src/contraagent/_internal/pipeline/origin.py +108 -0
  127. contraagent-0.1.0/src/contraagent/_internal/pipeline/pipeline.py +557 -0
  128. contraagent-0.1.0/src/contraagent/_internal/pipeline/reach.py +150 -0
  129. contraagent-0.1.0/src/contraagent/_internal/pipeline/spec.py +1091 -0
  130. contraagent-0.1.0/src/contraagent/_internal/platform/__init__.py +3 -0
  131. contraagent-0.1.0/src/contraagent/_internal/platform/commands.py +127 -0
  132. contraagent-0.1.0/src/contraagent/_internal/platform/envvars.py +27 -0
  133. contraagent-0.1.0/src/contraagent/_internal/platform/groups.py +243 -0
  134. contraagent-0.1.0/src/contraagent/_internal/platform/links.py +73 -0
  135. contraagent-0.1.0/src/contraagent/_internal/platform/locks.py +87 -0
  136. contraagent-0.1.0/src/contraagent/_internal/platform/processes.py +147 -0
  137. contraagent-0.1.0/src/contraagent/_internal/platform/telemetry.py +41 -0
  138. contraagent-0.1.0/src/contraagent/_internal/plugins/__init__.py +13 -0
  139. contraagent-0.1.0/src/contraagent/_internal/plugins/hooks.py +668 -0
  140. contraagent-0.1.0/src/contraagent/_internal/plugins/lint.py +78 -0
  141. contraagent-0.1.0/src/contraagent/_internal/plugins/plugin.py +202 -0
  142. contraagent-0.1.0/src/contraagent/_internal/plugins/scaffold.py +143 -0
  143. contraagent-0.1.0/src/contraagent/_internal/public.py +122 -0
  144. contraagent-0.1.0/src/contraagent/_internal/routing/__init__.py +37 -0
  145. contraagent-0.1.0/src/contraagent/_internal/routing/capacity.py +98 -0
  146. contraagent-0.1.0/src/contraagent/_internal/routing/config.py +331 -0
  147. contraagent-0.1.0/src/contraagent/_internal/routing/config_schema.py +125 -0
  148. contraagent-0.1.0/src/contraagent/_internal/routing/kind_config.py +160 -0
  149. contraagent-0.1.0/src/contraagent/_internal/routing/plan.py +440 -0
  150. contraagent-0.1.0/src/contraagent/_internal/routing/pool.py +76 -0
  151. contraagent-0.1.0/src/contraagent/_internal/routing/preflight.py +438 -0
  152. contraagent-0.1.0/src/contraagent/_internal/routing/quota.py +294 -0
  153. contraagent-0.1.0/src/contraagent/_internal/routing/router.py +341 -0
  154. contraagent-0.1.0/src/contraagent/_internal/runs/__init__.py +17 -0
  155. contraagent-0.1.0/src/contraagent/_internal/runs/files.py +245 -0
  156. contraagent-0.1.0/src/contraagent/_internal/runs/layout.py +179 -0
  157. contraagent-0.1.0/src/contraagent/_internal/runs/liveness.py +84 -0
  158. contraagent-0.1.0/src/contraagent/_internal/runs/names.py +94 -0
  159. contraagent-0.1.0/src/contraagent/_internal/runs/procs.py +178 -0
  160. contraagent-0.1.0/src/contraagent/_internal/runs/source.py +536 -0
  161. contraagent-0.1.0/src/contraagent/_internal/runs/times.py +41 -0
  162. contraagent-0.1.0/src/contraagent/_internal/testing.py +498 -0
  163. contraagent-0.1.0/src/contraagent/backends.py +56 -0
  164. contraagent-0.1.0/src/contraagent/config.py +47 -0
  165. contraagent-0.1.0/src/contraagent/docs/README.md +147 -0
  166. contraagent-0.1.0/src/contraagent/docs/agents.md +91 -0
  167. contraagent-0.1.0/src/contraagent/docs/compatibility.md +141 -0
  168. contraagent-0.1.0/src/contraagent/docs/concepts.md +203 -0
  169. contraagent-0.1.0/src/contraagent/docs/contracts.md +201 -0
  170. contraagent-0.1.0/src/contraagent/docs/examples/analysis/flow.py +151 -0
  171. contraagent-0.1.0/src/contraagent/docs/examples/before/flow.py +53 -0
  172. contraagent-0.1.0/src/contraagent/docs/examples/changes/flow.py +52 -0
  173. contraagent-0.1.0/src/contraagent/docs/examples/claims/flow.py +77 -0
  174. contraagent-0.1.0/src/contraagent/docs/examples/demo/checks.py +25 -0
  175. contraagent-0.1.0/src/contraagent/docs/examples/demo/pipeline.toml +15 -0
  176. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/.claude-plugin/plugin.json +5 -0
  177. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/README.md +15 -0
  178. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/reviewer.md +10 -0
  179. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/reviser.md +11 -0
  180. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/summarizer.md +11 -0
  181. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/agents/writer.md +11 -0
  182. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/codex/hooks.json +14 -0
  183. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/hooks/hooks.json +14 -0
  184. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/hooks.toml +18 -0
  185. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/package.json +4 -0
  186. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/settings.json +6 -0
  187. contraagent-0.1.0/src/contraagent/docs/examples/demo/plugins/docs/skills/write-output/SKILL.md +15 -0
  188. contraagent-0.1.0/src/contraagent/docs/examples/demo/run.py +256 -0
  189. contraagent-0.1.0/src/contraagent/docs/examples/demo/tasks.py +167 -0
  190. contraagent-0.1.0/src/contraagent/docs/examples/demo/test_demo.py +89 -0
  191. contraagent-0.1.0/src/contraagent/docs/examples/hub/.dockerignore +3 -0
  192. contraagent-0.1.0/src/contraagent/docs/examples/hub/.env.example +23 -0
  193. contraagent-0.1.0/src/contraagent/docs/examples/hub/Dockerfile +46 -0
  194. contraagent-0.1.0/src/contraagent/docs/examples/hub/compose.yaml +119 -0
  195. contraagent-0.1.0/src/contraagent/docs/examples/hub/contraagent-relay.service +33 -0
  196. contraagent-0.1.0/src/contraagent/docs/examples/hub/make-tokens +74 -0
  197. contraagent-0.1.0/src/contraagent/docs/examples/hub/secrets/ingest-tokens.example +6 -0
  198. contraagent-0.1.0/src/contraagent/docs/examples/hub/secrets/read-token.example +4 -0
  199. contraagent-0.1.0/src/contraagent/docs/examples/implementations/flow.py +40 -0
  200. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/.claude-plugin/plugin.json +5 -0
  201. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/.mcp.json +5 -0
  202. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/agents/reviewer.md +14 -0
  203. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/codex/hooks.json +14 -0
  204. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/hooks/hooks.json +14 -0
  205. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/hooks.toml +4 -0
  206. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/package.json +4 -0
  207. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/settings.json +6 -0
  208. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-go/skills/go-checks/SKILL.md +7 -0
  209. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/.claude-plugin/plugin.json +5 -0
  210. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/.mcp.json +5 -0
  211. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/agents/reviewer.md +14 -0
  212. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/codex/hooks.json +14 -0
  213. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/hooks/hooks.json +14 -0
  214. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/hooks.toml +4 -0
  215. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/package.json +4 -0
  216. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/settings.json +6 -0
  217. contraagent-0.1.0/src/contraagent/docs/examples/implementations/plugins/review-python/skills/python-checks/SKILL.md +7 -0
  218. contraagent-0.1.0/src/contraagent/docs/examples/light/flow.py +38 -0
  219. contraagent-0.1.0/src/contraagent/docs/examples/panels/cycles.py +80 -0
  220. contraagent-0.1.0/src/contraagent/docs/examples/panels/records.py +56 -0
  221. contraagent-0.1.0/src/contraagent/docs/examples/panels/views.py +102 -0
  222. contraagent-0.1.0/src/contraagent/docs/examples/partial/flow.py +62 -0
  223. contraagent-0.1.0/src/contraagent/docs/examples/preserve/flow.py +47 -0
  224. contraagent-0.1.0/src/contraagent/docs/examples/reference/pipeline.toml +184 -0
  225. contraagent-0.1.0/src/contraagent/docs/examples/retries/flow.py +65 -0
  226. contraagent-0.1.0/src/contraagent/docs/examples/review/flow.py +52 -0
  227. contraagent-0.1.0/src/contraagent/docs/examples/runner/flow.py +32 -0
  228. contraagent-0.1.0/src/contraagent/docs/examples/runner/run.py +82 -0
  229. contraagent-0.1.0/src/contraagent/docs/examples/scopes/flow.py +93 -0
  230. contraagent-0.1.0/src/contraagent/docs/examples/security/flow.py +37 -0
  231. contraagent-0.1.0/src/contraagent/docs/examples/security/pipeline.toml +40 -0
  232. contraagent-0.1.0/src/contraagent/docs/examples/skills/plugins/house-style/.claude-plugin/plugin.json +5 -0
  233. contraagent-0.1.0/src/contraagent/docs/examples/skills/plugins/house-style/skills/house-style/SKILL.md +11 -0
  234. contraagent-0.1.0/src/contraagent/docs/examples/skills/tasks.py +36 -0
  235. contraagent-0.1.0/src/contraagent/docs/examples/time_box/flow.py +52 -0
  236. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/csv-export.md +4 -0
  237. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/dark-mode.md +4 -0
  238. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/issues/login-timeout.md +5 -0
  239. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/pipeline.toml +11 -0
  240. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/.claude-plugin/plugin.json +5 -0
  241. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/README.md +15 -0
  242. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/agents/planner.md +17 -0
  243. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/agents/triager.md +20 -0
  244. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/codex/hooks.json +14 -0
  245. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/hooks/hooks.json +14 -0
  246. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/hooks.toml +18 -0
  247. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/package.json +4 -0
  248. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/settings.json +6 -0
  249. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/plugins/triage/skills/write-output/SKILL.md +17 -0
  250. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/tasks.py +77 -0
  251. contraagent-0.1.0/src/contraagent/docs/examples/tutorial/test_tutorial.py +63 -0
  252. contraagent-0.1.0/src/contraagent/docs/guide.md +151 -0
  253. contraagent-0.1.0/src/contraagent/docs/hub-operations.md +140 -0
  254. contraagent-0.1.0/src/contraagent/docs/hub.md +88 -0
  255. contraagent-0.1.0/src/contraagent/docs/monitor.md +335 -0
  256. contraagent-0.1.0/src/contraagent/docs/plugins.md +231 -0
  257. contraagent-0.1.0/src/contraagent/docs/routing.md +275 -0
  258. contraagent-0.1.0/src/contraagent/docs/schemas/cursor.schema.json +204 -0
  259. contraagent-0.1.0/src/contraagent/docs/schemas/deferred.schema.json +213 -0
  260. contraagent-0.1.0/src/contraagent/docs/schemas/flow_calls.schema.json +206 -0
  261. contraagent-0.1.0/src/contraagent/docs/schemas/journal.schema.json +754 -0
  262. contraagent-0.1.0/src/contraagent/docs/schemas/launches.schema.json +605 -0
  263. contraagent-0.1.0/src/contraagent/docs/schemas/pipeline.schema.json +871 -0
  264. contraagent-0.1.0/src/contraagent/docs/schemas/plan.schema.json +166 -0
  265. contraagent-0.1.0/src/contraagent/docs/schemas/rests.schema.json +93 -0
  266. contraagent-0.1.0/src/contraagent/docs/schemas/run.schema.json +339 -0
  267. contraagent-0.1.0/src/contraagent/docs/security.md +160 -0
  268. contraagent-0.1.0/src/contraagent/docs/tasks.md +516 -0
  269. contraagent-0.1.0/src/contraagent/docs/testing.md +258 -0
  270. contraagent-0.1.0/src/contraagent/docs/tutorial.md +406 -0
  271. contraagent-0.1.0/src/contraagent/engine.py +63 -0
  272. contraagent-0.1.0/src/contraagent/monitor/__init__.py +94 -0
  273. contraagent-0.1.0/src/contraagent/monitor/api.py +168 -0
  274. contraagent-0.1.0/src/contraagent/plugins.py +9 -0
  275. contraagent-0.1.0/src/contraagent/py.typed +0 -0
  276. contraagent-0.1.0/src/contraagent/testing.py +85 -0
  277. contraagent-0.1.0/tests/api/contraagent.api.txt +3383 -0
  278. contraagent-0.1.0/tests/api/snapshot.py +172 -0
  279. contraagent-0.1.0/tests/cli/help.py +59 -0
  280. contraagent-0.1.0/tests/cli/help.txt +355 -0
  281. contraagent-0.1.0/tests/conftest.py +51 -0
  282. contraagent-0.1.0/tests/fake_cli.py +24 -0
  283. contraagent-0.1.0/tests/fixtures/claude/rate_limit_events.jsonl +2 -0
  284. contraagent-0.1.0/tests/fixtures/omp/18.9.1/json.jsonl +69 -0
  285. contraagent-0.1.0/tests/fixtures/omp/18.9.1/models.json +1 -0
  286. contraagent-0.1.0/tests/fixtures/omp/18.9.1/rpc.jsonl +70 -0
  287. contraagent-0.1.0/tests/fixtures/omp/record.py +77 -0
  288. contraagent-0.1.0/tests/fixtures/opencode/1.19.0/json.jsonl +11 -0
  289. contraagent-0.1.0/tests/fixtures/opencode/1.19.0/models-verbose.txt +216 -0
  290. contraagent-0.1.0/tests/fixtures/opencode/go-usage.json +7 -0
  291. contraagent-0.1.0/tests/fixtures/opencode/record.py +67 -0
  292. contraagent-0.1.0/tests/fixtures/pi/1.2.0/json.jsonl +66 -0
  293. contraagent-0.1.0/tests/fixtures/pi/1.2.0/models-store.json +132 -0
  294. contraagent-0.1.0/tests/fixtures/pi/record.py +65 -0
  295. contraagent-0.1.0/tests/fixtures/runs/make_v1.py +84 -0
  296. contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-alpha.json +64 -0
  297. contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-beta.json +64 -0
  298. contraagent-0.1.0/tests/fixtures/runs/v1/review/calls/review-gamma.json +64 -0
  299. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-alpha.json +1 -0
  300. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-beta.json +1 -0
  301. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_fetch-gamma.json +1 -0
  302. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/python_summary.json +1 -0
  303. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-alpha.json +1 -0
  304. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-beta.json +1 -0
  305. contraagent-0.1.0/tests/fixtures/runs/v1/review/contracts/review-gamma.json +1 -0
  306. contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/fetch.json +1 -0
  307. contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/review.json +1 -0
  308. contraagent-0.1.0/tests/fixtures/runs/v1/review/definitions/summary.json +1 -0
  309. contraagent-0.1.0/tests/fixtures/runs/v1/review/flow_calls.jsonl +2 -0
  310. contraagent-0.1.0/tests/fixtures/runs/v1/review/journal.jsonl +7 -0
  311. contraagent-0.1.0/tests/fixtures/runs/v1/review/launches.jsonl +3 -0
  312. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/alpha.json +1 -0
  313. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/beta.json +1 -0
  314. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/fetch/gamma.json +1 -0
  315. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/review/alpha.json +3 -0
  316. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/review/beta.json +3 -0
  317. contraagent-0.1.0/tests/fixtures/runs/v1/review/out/summary/summary.json +1 -0
  318. contraagent-0.1.0/tests/fixtures/runs/v1/review/plan.jsonl +7 -0
  319. contraagent-0.1.0/tests/fixtures/runs/v1/review/run.json +1 -0
  320. contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-alpha.stream.jsonl +6 -0
  321. contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-beta.stream.jsonl +6 -0
  322. contraagent-0.1.0/tests/fixtures/runs/v1/review/streams/review-gamma.stream.jsonl +4 -0
  323. contraagent-0.1.0/tests/hub_services.py +316 -0
  324. contraagent-0.1.0/tests/live/test_live_agents.py +663 -0
  325. contraagent-0.1.0/tests/live/test_live_features.py +700 -0
  326. contraagent-0.1.0/tests/live/test_live_hooks.py +175 -0
  327. contraagent-0.1.0/tests/live/test_live_pi.py +193 -0
  328. contraagent-0.1.0/tests/test_analysis_flow.py +100 -0
  329. contraagent-0.1.0/tests/test_backend_run.py +216 -0
  330. contraagent-0.1.0/tests/test_backends_offline.py +314 -0
  331. contraagent-0.1.0/tests/test_changelog.py +58 -0
  332. contraagent-0.1.0/tests/test_changes.py +171 -0
  333. contraagent-0.1.0/tests/test_check.py +510 -0
  334. contraagent-0.1.0/tests/test_claim_capacity_host.py +189 -0
  335. contraagent-0.1.0/tests/test_claims.py +278 -0
  336. contraagent-0.1.0/tests/test_cli.py +109 -0
  337. contraagent-0.1.0/tests/test_codex_backend.py +320 -0
  338. contraagent-0.1.0/tests/test_codex_hooks.py +323 -0
  339. contraagent-0.1.0/tests/test_cost_and_unwrap.py +151 -0
  340. contraagent-0.1.0/tests/test_credentials.py +218 -0
  341. contraagent-0.1.0/tests/test_disallowed_tools.py +101 -0
  342. contraagent-0.1.0/tests/test_docs.py +594 -0
  343. contraagent-0.1.0/tests/test_estimates.py +177 -0
  344. contraagent-0.1.0/tests/test_export.py +243 -0
  345. contraagent-0.1.0/tests/test_failover.py +322 -0
  346. contraagent-0.1.0/tests/test_file_schemas.py +101 -0
  347. contraagent-0.1.0/tests/test_flow.py +455 -0
  348. contraagent-0.1.0/tests/test_flow_driver.py +382 -0
  349. contraagent-0.1.0/tests/test_generator_flows.py +576 -0
  350. contraagent-0.1.0/tests/test_hosts_api.py +80 -0
  351. contraagent-0.1.0/tests/test_hub_cli.py +68 -0
  352. contraagent-0.1.0/tests/test_hub_contract.py +308 -0
  353. contraagent-0.1.0/tests/test_hub_deploy.py +330 -0
  354. contraagent-0.1.0/tests/test_hub_e2e.py +549 -0
  355. contraagent-0.1.0/tests/test_hub_postgres.py +81 -0
  356. contraagent-0.1.0/tests/test_hub_prune.py +353 -0
  357. contraagent-0.1.0/tests/test_hub_retention_cli.py +290 -0
  358. contraagent-0.1.0/tests/test_hub_segments.py +528 -0
  359. contraagent-0.1.0/tests/test_hub_server.py +469 -0
  360. contraagent-0.1.0/tests/test_hub_streams.py +150 -0
  361. contraagent-0.1.0/tests/test_implementations.py +181 -0
  362. contraagent-0.1.0/tests/test_layers.py +14 -0
  363. contraagent-0.1.0/tests/test_light_launch.py +178 -0
  364. contraagent-0.1.0/tests/test_live_stream.py +421 -0
  365. contraagent-0.1.0/tests/test_message_output.py +109 -0
  366. contraagent-0.1.0/tests/test_model_usage.py +190 -0
  367. contraagent-0.1.0/tests/test_monitor_api.py +530 -0
  368. contraagent-0.1.0/tests/test_omp_wire.py +141 -0
  369. contraagent-0.1.0/tests/test_opencode_backend.py +166 -0
  370. contraagent-0.1.0/tests/test_opencode_login.py +180 -0
  371. contraagent-0.1.0/tests/test_opencode_wire.py +115 -0
  372. contraagent-0.1.0/tests/test_origin.py +42 -0
  373. contraagent-0.1.0/tests/test_output_name.py +154 -0
  374. contraagent-0.1.0/tests/test_panel_bodies.py +198 -0
  375. contraagent-0.1.0/tests/test_panel_service.py +206 -0
  376. contraagent-0.1.0/tests/test_partial.py +149 -0
  377. contraagent-0.1.0/tests/test_passes.py +545 -0
  378. contraagent-0.1.0/tests/test_peak_context.py +231 -0
  379. contraagent-0.1.0/tests/test_pi_backend.py +208 -0
  380. contraagent-0.1.0/tests/test_pi_wire.py +119 -0
  381. contraagent-0.1.0/tests/test_pipeline.py +338 -0
  382. contraagent-0.1.0/tests/test_pipeline_files.py +182 -0
  383. contraagent-0.1.0/tests/test_platform.py +439 -0
  384. contraagent-0.1.0/tests/test_plugins.py +381 -0
  385. contraagent-0.1.0/tests/test_pools_and_gateways.py +133 -0
  386. contraagent-0.1.0/tests/test_preflight.py +188 -0
  387. contraagent-0.1.0/tests/test_preserve.py +246 -0
  388. contraagent-0.1.0/tests/test_priority.py +78 -0
  389. contraagent-0.1.0/tests/test_public_api.py +655 -0
  390. contraagent-0.1.0/tests/test_python_task_inputs.py +146 -0
  391. contraagent-0.1.0/tests/test_python_task_retries.py +169 -0
  392. contraagent-0.1.0/tests/test_python_task_scopes.py +241 -0
  393. contraagent-0.1.0/tests/test_queue.py +368 -0
  394. contraagent-0.1.0/tests/test_quota_readings.py +251 -0
  395. contraagent-0.1.0/tests/test_quota_rests.py +507 -0
  396. contraagent-0.1.0/tests/test_recording.py +496 -0
  397. contraagent-0.1.0/tests/test_relay.py +416 -0
  398. contraagent-0.1.0/tests/test_run_files.py +256 -0
  399. contraagent-0.1.0/tests/test_run_format.py +99 -0
  400. contraagent-0.1.0/tests/test_run_source.py +183 -0
  401. contraagent-0.1.0/tests/test_runtime.py +372 -0
  402. contraagent-0.1.0/tests/test_smoke.py +54 -0
  403. contraagent-0.1.0/tests/test_stub_quota.py +47 -0
  404. contraagent-0.1.0/tests/test_stub_run.py +298 -0
  405. contraagent-0.1.0/tests/test_temp_root.py +70 -0
  406. contraagent-0.1.0/tests/test_testing.py +102 -0
  407. contraagent-0.1.0/tests/test_text_io.py +70 -0
  408. contraagent-0.1.0/tests/test_time_box.py +376 -0
  409. contraagent-0.1.0/tests/test_tracked_files.py +51 -0
  410. contraagent-0.1.0/tests/test_trends.py +520 -0
  411. contraagent-0.1.0/tests/test_validator_before.py +132 -0
  412. contraagent-0.1.0/tests/trends_reference.py +426 -0
  413. contraagent-0.1.0/uv.lock +1215 -0
  414. contraagent-0.1.0/web/.gitignore +10 -0
  415. contraagent-0.1.0/web/AGENTS.md +119 -0
  416. contraagent-0.1.0/web/CLAUDE.md +1 -0
  417. contraagent-0.1.0/web/apps/docs/.gitignore +26 -0
  418. contraagent-0.1.0/web/apps/docs/.vscode/extensions.json +4 -0
  419. contraagent-0.1.0/web/apps/docs/.vscode/launch.json +11 -0
  420. contraagent-0.1.0/web/apps/docs/astro.config.mjs +70 -0
  421. contraagent-0.1.0/web/apps/docs/package.json +24 -0
  422. contraagent-0.1.0/web/apps/docs/public/apple-touch-icon.png +0 -0
  423. contraagent-0.1.0/web/apps/docs/public/demo/data/info.json +1 -0
  424. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/cursor.json +1 -0
  425. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/definitions.json +1 -0
  426. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/journal.json +1 -0
  427. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/outputs.json +1 -0
  428. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/plan.json +1 -0
  429. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-east-0.json +1 -0
  430. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-east-1.json +1 -0
  431. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-south-0.json +1 -0
  432. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/classify-west-0.json +1 -0
  433. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-east-0.json +1 -0
  434. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-south-0.json +1 -0
  435. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_csv-west-0.json +1 -0
  436. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/parse_json-east-1.json +1 -0
  437. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-0-amount.json +1 -0
  438. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-0-id.json +1 -0
  439. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-1-amount.json +1 -0
  440. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-east-1-id.json +1 -0
  441. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-south-0-amount.json +1 -0
  442. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-south-0-id.json +1 -0
  443. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-west-0-amount.json +1 -0
  444. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/propose-west-0-id.json +1 -0
  445. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/streams/refine-east-0-id.json +1 -0
  446. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-east-0.json +1 -0
  447. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-east-1.json +1 -0
  448. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-south-0.json +1 -0
  449. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/classify-west-0.json +1 -0
  450. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-east-0.json +1 -0
  451. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-south-0.json +1 -0
  452. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_csv-west-0.json +1 -0
  453. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/parse_json-east-1.json +1 -0
  454. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-0-amount.json +1 -0
  455. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-0-id.json +1 -0
  456. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-1-amount.json +1 -0
  457. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-east-1-id.json +1 -0
  458. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-south-0-amount.json +1 -0
  459. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-south-0-id.json +1 -0
  460. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-west-0-amount.json +1 -0
  461. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/propose-west-0-id.json +1 -0
  462. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-east-0.json +1 -0
  463. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-east-1.json +1 -0
  464. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-south-0.json +1 -0
  465. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_rank_columns-west-0.json +1 -0
  466. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-east.json +1 -0
  467. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-south.json +1 -0
  468. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_report-west.json +1 -0
  469. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_summary.json +1 -0
  470. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-east.json +1 -0
  471. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-south.json +1 -0
  472. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_unpack-west.json +1 -0
  473. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-amount.json +1 -0
  474. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-id.json +1 -0
  475. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-0-id_2.json +1 -0
  476. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-1-amount.json +1 -0
  477. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-east-1-id.json +1 -0
  478. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-south-0-amount.json +1 -0
  479. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-south-0-id.json +1 -0
  480. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-west-0-amount.json +1 -0
  481. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/python_verify-west-0-id.json +1 -0
  482. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/analyse/tasks/refine-east-0-id.json +1 -0
  483. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/cursor.json +1 -0
  484. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/definitions.json +1 -0
  485. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/journal.json +1 -0
  486. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/outputs.json +1 -0
  487. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/plan.json +1 -0
  488. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-alpha.json +1 -0
  489. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-beta.json +1 -0
  490. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-delta.json +1 -0
  491. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-eta.json +1 -0
  492. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-gamma.json +1 -0
  493. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-gamma_2.json +1 -0
  494. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-iota.json +1 -0
  495. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-kappa.json +1 -0
  496. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/review-theta.json +1 -0
  497. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/revise-gamma.json +1 -0
  498. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-alpha.json +1 -0
  499. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-beta.json +1 -0
  500. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-delta.json +1 -0
  501. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-eta.json +1 -0
  502. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-gamma.json +1 -0
  503. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-iota.json +1 -0
  504. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-kappa.json +1 -0
  505. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/summarize-theta.json +1 -0
  506. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-alpha.json +1 -0
  507. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-beta.json +1 -0
  508. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-delta.json +1 -0
  509. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-eta.json +1 -0
  510. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-gamma.json +1 -0
  511. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-iota.json +1 -0
  512. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-kappa.json +1 -0
  513. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/streams/write_note-theta.json +1 -0
  514. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-alpha.json +1 -0
  515. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-beta.json +1 -0
  516. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-delta.json +1 -0
  517. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-eta.json +1 -0
  518. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-gamma.json +1 -0
  519. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-iota.json +1 -0
  520. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-kappa.json +1 -0
  521. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_prepare-theta.json +1 -0
  522. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_report.json +1 -0
  523. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-alpha.json +1 -0
  524. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-beta.json +1 -0
  525. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-delta.json +1 -0
  526. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-eta.json +1 -0
  527. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-gamma.json +1 -0
  528. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-gamma_2.json +1 -0
  529. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-iota.json +1 -0
  530. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-kappa.json +1 -0
  531. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/python_score-theta.json +1 -0
  532. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-alpha.json +1 -0
  533. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-beta.json +1 -0
  534. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-delta.json +1 -0
  535. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-eta.json +1 -0
  536. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-gamma.json +1 -0
  537. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-gamma_2.json +1 -0
  538. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-iota.json +1 -0
  539. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-kappa.json +1 -0
  540. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/review-theta.json +1 -0
  541. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/revise-gamma.json +1 -0
  542. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-alpha.json +1 -0
  543. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-beta.json +1 -0
  544. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-delta.json +1 -0
  545. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-eta.json +1 -0
  546. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-gamma.json +1 -0
  547. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-iota.json +1 -0
  548. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-kappa.json +1 -0
  549. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/summarize-theta.json +1 -0
  550. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-alpha.json +1 -0
  551. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-beta.json +1 -0
  552. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-delta.json +1 -0
  553. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-eta.json +1 -0
  554. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-gamma.json +1 -0
  555. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-iota.json +1 -0
  556. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-kappa.json +1 -0
  557. contraagent-0.1.0/web/apps/docs/public/demo/data/runs/docs/tasks/write_note-theta.json +1 -0
  558. contraagent-0.1.0/web/apps/docs/public/demo/data/runs.json +1 -0
  559. contraagent-0.1.0/web/apps/docs/public/demo/data/trends.json +1 -0
  560. contraagent-0.1.0/web/apps/docs/public/favicon-32.png +0 -0
  561. contraagent-0.1.0/web/apps/docs/public/favicon.svg +1 -0
  562. contraagent-0.1.0/web/apps/docs/scripts/collect.py +381 -0
  563. contraagent-0.1.0/web/apps/docs/scripts/fixture.py +105 -0
  564. contraagent-0.1.0/web/apps/docs/scripts/how_css.py +170 -0
  565. contraagent-0.1.0/web/apps/docs/scripts/landing.py +144 -0
  566. contraagent-0.1.0/web/apps/docs/site.ts +5 -0
  567. contraagent-0.1.0/web/apps/docs/src/components/ApiReference.astro +60 -0
  568. contraagent-0.1.0/web/apps/docs/src/components/Demo.astro +128 -0
  569. contraagent-0.1.0/web/apps/docs/src/components/ElementLinks.astro +30 -0
  570. contraagent-0.1.0/web/apps/docs/src/components/ElementReference.astro +131 -0
  571. contraagent-0.1.0/web/apps/docs/src/components/Example.astro +53 -0
  572. contraagent-0.1.0/web/apps/docs/src/components/LiveFigure.astro +40 -0
  573. contraagent-0.1.0/web/apps/docs/src/components/PageTitle.astro +19 -0
  574. contraagent-0.1.0/web/apps/docs/src/components/TokenTable.astro +44 -0
  575. contraagent-0.1.0/web/apps/docs/src/components/home/Hero.astro +83 -0
  576. contraagent-0.1.0/web/apps/docs/src/components/home/HowItWorks.astro +192 -0
  577. contraagent-0.1.0/web/apps/docs/src/components/home/Reveal.astro +8 -0
  578. contraagent-0.1.0/web/apps/docs/src/components/home/RunReplay.astro +614 -0
  579. contraagent-0.1.0/web/apps/docs/src/components/home/hero.ts +92 -0
  580. contraagent-0.1.0/web/apps/docs/src/components/home/how-carousel.ts +143 -0
  581. contraagent-0.1.0/web/apps/docs/src/components/home/how-scene.ts +99 -0
  582. contraagent-0.1.0/web/apps/docs/src/components/home/how-stages.css +193 -0
  583. contraagent-0.1.0/web/apps/docs/src/components/home/how.css +411 -0
  584. contraagent-0.1.0/web/apps/docs/src/components/home/how.ts +67 -0
  585. contraagent-0.1.0/web/apps/docs/src/components/home/python.ts +48 -0
  586. contraagent-0.1.0/web/apps/docs/src/components/home/replay.ts +514 -0
  587. contraagent-0.1.0/web/apps/docs/src/components/home/reveal.css +114 -0
  588. contraagent-0.1.0/web/apps/docs/src/components/home/reveal.ts +27 -0
  589. contraagent-0.1.0/web/apps/docs/src/components/home/scene.css +448 -0
  590. contraagent-0.1.0/web/apps/docs/src/components/home/timeline.ts +149 -0
  591. contraagent-0.1.0/web/apps/docs/src/content/docs/elements.mdx +125 -0
  592. contraagent-0.1.0/web/apps/docs/src/content/docs/index.mdx +78 -0
  593. contraagent-0.1.0/web/apps/docs/src/content/docs/reference/elements.mdx +9 -0
  594. contraagent-0.1.0/web/apps/docs/src/content/docs/reference/http-api.mdx +11 -0
  595. contraagent-0.1.0/web/apps/docs/src/content/docs/reference/theme.mdx +11 -0
  596. contraagent-0.1.0/web/apps/docs/src/content/docs/reference/ui.mdx +9 -0
  597. contraagent-0.1.0/web/apps/docs/src/content.config.ts +28 -0
  598. contraagent-0.1.0/web/apps/docs/src/fixtures/demo-run.json +8958 -0
  599. contraagent-0.1.0/web/apps/docs/src/fixtures/landing-outputs.json +34 -0
  600. contraagent-0.1.0/web/apps/docs/src/lib/base.ts +7 -0
  601. contraagent-0.1.0/web/apps/docs/src/lib/elements.ts +43 -0
  602. contraagent-0.1.0/web/apps/docs/src/lib/repo.ts +41 -0
  603. contraagent-0.1.0/web/apps/docs/src/lib/table-cards.mjs +31 -0
  604. contraagent-0.1.0/web/apps/docs/src/pages/demo/monitor.astro +27 -0
  605. contraagent-0.1.0/web/apps/docs/src/styles/pages.css +149 -0
  606. contraagent-0.1.0/web/apps/docs/src/styles/site.css +91 -0
  607. contraagent-0.1.0/web/apps/docs/tsconfig.json +7 -0
  608. contraagent-0.1.0/web/apps/monitor/index.html +25 -0
  609. contraagent-0.1.0/web/apps/monitor/package.json +19 -0
  610. contraagent-0.1.0/web/apps/monitor/public/apple-touch-icon.png +0 -0
  611. contraagent-0.1.0/web/apps/monitor/public/favicon-32.png +0 -0
  612. contraagent-0.1.0/web/apps/monitor/public/favicon.svg +1 -0
  613. contraagent-0.1.0/web/apps/monitor/src/main.ts +14 -0
  614. contraagent-0.1.0/web/apps/monitor/tsconfig.dist.json +7 -0
  615. contraagent-0.1.0/web/apps/monitor/tsconfig.json +5 -0
  616. contraagent-0.1.0/web/apps/monitor/vite.config.ts +43 -0
  617. contraagent-0.1.0/web/consumer/consumer.test.mjs +76 -0
  618. contraagent-0.1.0/web/consumer/package.json +14 -0
  619. contraagent-0.1.0/web/consumer/src/main.ts +39 -0
  620. contraagent-0.1.0/web/consumer/tsconfig.dist.json +7 -0
  621. contraagent-0.1.0/web/consumer/tsconfig.json +7 -0
  622. contraagent-0.1.0/web/consumer/vite.config.ts +16 -0
  623. contraagent-0.1.0/web/e2e/a11y.spec.ts +138 -0
  624. contraagent-0.1.0/web/e2e/connection.spec.ts +54 -0
  625. contraagent-0.1.0/web/e2e/docs-links.spec.ts +156 -0
  626. contraagent-0.1.0/web/e2e/docs-site.ts +10 -0
  627. contraagent-0.1.0/web/e2e/embed.html +30 -0
  628. contraagent-0.1.0/web/e2e/embed.spec.ts +99 -0
  629. contraagent-0.1.0/web/e2e/export.spec.ts +60 -0
  630. contraagent-0.1.0/web/e2e/fit.spec.ts +174 -0
  631. contraagent-0.1.0/web/e2e/fit.ts +73 -0
  632. contraagent-0.1.0/web/e2e/global-setup.ts +17 -0
  633. contraagent-0.1.0/web/e2e/history.spec.ts +125 -0
  634. contraagent-0.1.0/web/e2e/hub.py +168 -0
  635. contraagent-0.1.0/web/e2e/hub.spec.ts +157 -0
  636. contraagent-0.1.0/web/e2e/landing.spec.ts +342 -0
  637. contraagent-0.1.0/web/e2e/mobile.spec.ts +151 -0
  638. contraagent-0.1.0/web/e2e/overview.spec.ts +505 -0
  639. contraagent-0.1.0/web/e2e/tasks.spec.ts +92 -0
  640. contraagent-0.1.0/web/e2e/theme.spec.ts +82 -0
  641. contraagent-0.1.0/web/eslint.config.js +101 -0
  642. contraagent-0.1.0/web/package.json +36 -0
  643. contraagent-0.1.0/web/packages/api/README.md +103 -0
  644. contraagent-0.1.0/web/packages/api/package.json +46 -0
  645. contraagent-0.1.0/web/packages/api/scripts/gen.mjs +25 -0
  646. contraagent-0.1.0/web/packages/api/src/client.test.ts +82 -0
  647. contraagent-0.1.0/web/packages/api/src/client.ts +119 -0
  648. contraagent-0.1.0/web/packages/api/src/derive.test.ts +161 -0
  649. contraagent-0.1.0/web/packages/api/src/derive.ts +155 -0
  650. contraagent-0.1.0/web/packages/api/src/export.test.ts +147 -0
  651. contraagent-0.1.0/web/packages/api/src/export.ts +158 -0
  652. contraagent-0.1.0/web/packages/api/src/feed.ts +81 -0
  653. contraagent-0.1.0/web/packages/api/src/index.ts +12 -0
  654. contraagent-0.1.0/web/packages/api/src/outcomes.test.ts +185 -0
  655. contraagent-0.1.0/web/packages/api/src/outcomes.ts +267 -0
  656. contraagent-0.1.0/web/packages/api/src/panels.ts +51 -0
  657. contraagent-0.1.0/web/packages/api/src/quota.test.ts +59 -0
  658. contraagent-0.1.0/web/packages/api/src/quota.ts +78 -0
  659. contraagent-0.1.0/web/packages/api/src/reasons.test.ts +26 -0
  660. contraagent-0.1.0/web/packages/api/src/reasons.ts +57 -0
  661. contraagent-0.1.0/web/packages/api/src/run-state.test.ts +79 -0
  662. contraagent-0.1.0/web/packages/api/src/run-state.ts +166 -0
  663. contraagent-0.1.0/web/packages/api/src/schema.ts +3719 -0
  664. contraagent-0.1.0/web/packages/api/src/spend.test.ts +32 -0
  665. contraagent-0.1.0/web/packages/api/src/spend.ts +108 -0
  666. contraagent-0.1.0/web/packages/api/src/store.test.ts +225 -0
  667. contraagent-0.1.0/web/packages/api/src/store.ts +338 -0
  668. contraagent-0.1.0/web/packages/api/src/types.ts +165 -0
  669. contraagent-0.1.0/web/packages/api/tsconfig.build.json +4 -0
  670. contraagent-0.1.0/web/packages/api/tsconfig.json +5 -0
  671. contraagent-0.1.0/web/packages/elements/README.md +73 -0
  672. contraagent-0.1.0/web/packages/elements/docs/charts.md +58 -0
  673. contraagent-0.1.0/web/packages/elements/docs/check-table.md +40 -0
  674. contraagent-0.1.0/web/packages/elements/docs/data-table.md +57 -0
  675. contraagent-0.1.0/web/packages/elements/docs/examples/charts.ts +61 -0
  676. contraagent-0.1.0/web/packages/elements/docs/examples/check-table.ts +19 -0
  677. contraagent-0.1.0/web/packages/elements/docs/examples/ci-pipeline.ts +271 -0
  678. contraagent-0.1.0/web/packages/elements/docs/examples/data-table.ts +39 -0
  679. contraagent-0.1.0/web/packages/elements/docs/examples/graph.ts +57 -0
  680. contraagent-0.1.0/web/packages/elements/docs/examples/lanes.ts +40 -0
  681. contraagent-0.1.0/web/packages/elements/docs/examples/matrix.ts +56 -0
  682. contraagent-0.1.0/web/packages/elements/docs/examples/page.css +34 -0
  683. contraagent-0.1.0/web/packages/elements/docs/examples/segmented.ts +18 -0
  684. contraagent-0.1.0/web/packages/elements/docs/examples/status.ts +30 -0
  685. contraagent-0.1.0/web/packages/elements/docs/examples/theme.css +54 -0
  686. contraagent-0.1.0/web/packages/elements/docs/examples/tiles.ts +27 -0
  687. contraagent-0.1.0/web/packages/elements/docs/examples/transcript.ts +59 -0
  688. contraagent-0.1.0/web/packages/elements/docs/graph.md +112 -0
  689. contraagent-0.1.0/web/packages/elements/docs/images/charts.webp +0 -0
  690. contraagent-0.1.0/web/packages/elements/docs/images/check-table.webp +0 -0
  691. contraagent-0.1.0/web/packages/elements/docs/images/data-table.webp +0 -0
  692. contraagent-0.1.0/web/packages/elements/docs/images/graph.webp +0 -0
  693. contraagent-0.1.0/web/packages/elements/docs/images/lanes.webp +0 -0
  694. contraagent-0.1.0/web/packages/elements/docs/images/matrix.webp +0 -0
  695. contraagent-0.1.0/web/packages/elements/docs/images/page.webp +0 -0
  696. contraagent-0.1.0/web/packages/elements/docs/images/primitives.webp +0 -0
  697. contraagent-0.1.0/web/packages/elements/docs/images/theming-dark.webp +0 -0
  698. contraagent-0.1.0/web/packages/elements/docs/images/tiles.webp +0 -0
  699. contraagent-0.1.0/web/packages/elements/docs/images/transcript.webp +0 -0
  700. contraagent-0.1.0/web/packages/elements/docs/lanes.md +48 -0
  701. contraagent-0.1.0/web/packages/elements/docs/matrix.md +34 -0
  702. contraagent-0.1.0/web/packages/elements/docs/page.md +87 -0
  703. contraagent-0.1.0/web/packages/elements/docs/primitives.md +57 -0
  704. contraagent-0.1.0/web/packages/elements/docs/strings.md +16 -0
  705. contraagent-0.1.0/web/packages/elements/docs/theming.md +147 -0
  706. contraagent-0.1.0/web/packages/elements/docs/tiles.md +40 -0
  707. contraagent-0.1.0/web/packages/elements/docs/transcript.md +73 -0
  708. contraagent-0.1.0/web/packages/elements/docs/tsconfig.json +20 -0
  709. contraagent-0.1.0/web/packages/elements/package.json +192 -0
  710. contraagent-0.1.0/web/packages/elements/src/charts/bar-chart.ts +74 -0
  711. contraagent-0.1.0/web/packages/elements/src/charts/base.ts +188 -0
  712. contraagent-0.1.0/web/packages/elements/src/charts/charts.test.ts +233 -0
  713. contraagent-0.1.0/web/packages/elements/src/charts/column-chart.ts +153 -0
  714. contraagent-0.1.0/web/packages/elements/src/charts/heatmap.ts +129 -0
  715. contraagent-0.1.0/web/packages/elements/src/charts/index.ts +10 -0
  716. contraagent-0.1.0/web/packages/elements/src/charts/line-chart.ts +128 -0
  717. contraagent-0.1.0/web/packages/elements/src/charts/scale.ts +61 -0
  718. contraagent-0.1.0/web/packages/elements/src/charts/state-grid.ts +245 -0
  719. contraagent-0.1.0/web/packages/elements/src/charts/types.ts +48 -0
  720. contraagent-0.1.0/web/packages/elements/src/checks/check-table.test.ts +54 -0
  721. contraagent-0.1.0/web/packages/elements/src/checks/check-table.ts +85 -0
  722. contraagent-0.1.0/web/packages/elements/src/checks/index.ts +5 -0
  723. contraagent-0.1.0/web/packages/elements/src/checks/styles.ts +31 -0
  724. contraagent-0.1.0/web/packages/elements/src/checks/types.ts +48 -0
  725. contraagent-0.1.0/web/packages/elements/src/core/clock.ts +46 -0
  726. contraagent-0.1.0/web/packages/elements/src/core/define.ts +7 -0
  727. contraagent-0.1.0/web/packages/elements/src/core/events.ts +89 -0
  728. contraagent-0.1.0/web/packages/elements/src/core/format.ts +25 -0
  729. contraagent-0.1.0/web/packages/elements/src/core/frame.ts +5 -0
  730. contraagent-0.1.0/web/packages/elements/src/core/strings.ts +11 -0
  731. contraagent-0.1.0/web/packages/elements/src/core/tone.ts +14 -0
  732. contraagent-0.1.0/web/packages/elements/src/count/count.ts +54 -0
  733. contraagent-0.1.0/web/packages/elements/src/count/elapsed.ts +33 -0
  734. contraagent-0.1.0/web/packages/elements/src/count/index.ts +4 -0
  735. contraagent-0.1.0/web/packages/elements/src/define/all.ts +13 -0
  736. contraagent-0.1.0/web/packages/elements/src/define/charts.ts +17 -0
  737. contraagent-0.1.0/web/packages/elements/src/define/check-table.ts +9 -0
  738. contraagent-0.1.0/web/packages/elements/src/define/count.ts +11 -0
  739. contraagent-0.1.0/web/packages/elements/src/define/data-table.ts +9 -0
  740. contraagent-0.1.0/web/packages/elements/src/define/graph.ts +11 -0
  741. contraagent-0.1.0/web/packages/elements/src/define/json-tree.ts +9 -0
  742. contraagent-0.1.0/web/packages/elements/src/define/lanes.ts +9 -0
  743. contraagent-0.1.0/web/packages/elements/src/define/markdown.ts +9 -0
  744. contraagent-0.1.0/web/packages/elements/src/define/matrix.ts +9 -0
  745. contraagent-0.1.0/web/packages/elements/src/define/segmented.ts +9 -0
  746. contraagent-0.1.0/web/packages/elements/src/define/tiles.ts +11 -0
  747. contraagent-0.1.0/web/packages/elements/src/define/transcript.ts +9 -0
  748. contraagent-0.1.0/web/packages/elements/src/examples.test.ts +50 -0
  749. contraagent-0.1.0/web/packages/elements/src/graph/arrange.ts +399 -0
  750. contraagent-0.1.0/web/packages/elements/src/graph/card.ts +209 -0
  751. contraagent-0.1.0/web/packages/elements/src/graph/host.ts +100 -0
  752. contraagent-0.1.0/web/packages/elements/src/graph/icons.ts +23 -0
  753. contraagent-0.1.0/web/packages/elements/src/graph/index.ts +16 -0
  754. contraagent-0.1.0/web/packages/elements/src/graph/layered-graph.test.ts +184 -0
  755. contraagent-0.1.0/web/packages/elements/src/graph/layered-graph.ts +417 -0
  756. contraagent-0.1.0/web/packages/elements/src/graph/layout.ts +331 -0
  757. contraagent-0.1.0/web/packages/elements/src/graph/marks.test.ts +29 -0
  758. contraagent-0.1.0/web/packages/elements/src/graph/marks.ts +42 -0
  759. contraagent-0.1.0/web/packages/elements/src/graph/nav.test.ts +18 -0
  760. contraagent-0.1.0/web/packages/elements/src/graph/nav.ts +19 -0
  761. contraagent-0.1.0/web/packages/elements/src/graph/pan-zoom.test.ts +106 -0
  762. contraagent-0.1.0/web/packages/elements/src/graph/pan-zoom.ts +219 -0
  763. contraagent-0.1.0/web/packages/elements/src/graph/paths.test.ts +11 -0
  764. contraagent-0.1.0/web/packages/elements/src/graph/paths.ts +41 -0
  765. contraagent-0.1.0/web/packages/elements/src/graph/place-card.test.ts +68 -0
  766. contraagent-0.1.0/web/packages/elements/src/graph/place-card.ts +93 -0
  767. contraagent-0.1.0/web/packages/elements/src/graph/strings.ts +86 -0
  768. contraagent-0.1.0/web/packages/elements/src/graph/styles.ts +204 -0
  769. contraagent-0.1.0/web/packages/elements/src/graph/types.ts +202 -0
  770. contraagent-0.1.0/web/packages/elements/src/graph/view.test.ts +27 -0
  771. contraagent-0.1.0/web/packages/elements/src/graph/view.ts +28 -0
  772. contraagent-0.1.0/web/packages/elements/src/graph/views/dag.ts +294 -0
  773. contraagent-0.1.0/web/packages/elements/src/graph/views/foot.ts +109 -0
  774. contraagent-0.1.0/web/packages/elements/src/graph/views/node-table.ts +90 -0
  775. contraagent-0.1.0/web/packages/elements/src/import.test.ts +25 -0
  776. contraagent-0.1.0/web/packages/elements/src/index.ts +25 -0
  777. contraagent-0.1.0/web/packages/elements/src/json/index.ts +2 -0
  778. contraagent-0.1.0/web/packages/elements/src/json/json-tree.ts +49 -0
  779. contraagent-0.1.0/web/packages/elements/src/lanes/index.ts +6 -0
  780. contraagent-0.1.0/web/packages/elements/src/lanes/lanes.test.ts +65 -0
  781. contraagent-0.1.0/web/packages/elements/src/lanes/lanes.ts +143 -0
  782. contraagent-0.1.0/web/packages/elements/src/lanes/stack.test.ts +52 -0
  783. contraagent-0.1.0/web/packages/elements/src/lanes/stack.ts +51 -0
  784. contraagent-0.1.0/web/packages/elements/src/lanes/styles.ts +30 -0
  785. contraagent-0.1.0/web/packages/elements/src/lanes/types.ts +51 -0
  786. contraagent-0.1.0/web/packages/elements/src/markdown/cae-markdown.test.ts +35 -0
  787. contraagent-0.1.0/web/packages/elements/src/markdown/cae-markdown.ts +64 -0
  788. contraagent-0.1.0/web/packages/elements/src/markdown/highlight.ts +94 -0
  789. contraagent-0.1.0/web/packages/elements/src/markdown/index.ts +5 -0
  790. contraagent-0.1.0/web/packages/elements/src/markdown/markdown.ts +110 -0
  791. contraagent-0.1.0/web/packages/elements/src/matrix/grid-step.test.ts +23 -0
  792. contraagent-0.1.0/web/packages/elements/src/matrix/grid-step.ts +58 -0
  793. contraagent-0.1.0/web/packages/elements/src/matrix/index.ts +6 -0
  794. contraagent-0.1.0/web/packages/elements/src/matrix/mark-matrix.test.ts +66 -0
  795. contraagent-0.1.0/web/packages/elements/src/matrix/mark-matrix.ts +285 -0
  796. contraagent-0.1.0/web/packages/elements/src/matrix/styles.ts +48 -0
  797. contraagent-0.1.0/web/packages/elements/src/matrix/types.ts +83 -0
  798. contraagent-0.1.0/web/packages/elements/src/primitives/fact-line.test.ts +20 -0
  799. contraagent-0.1.0/web/packages/elements/src/primitives/fact-line.ts +26 -0
  800. contraagent-0.1.0/web/packages/elements/src/primitives/icon.ts +26 -0
  801. contraagent-0.1.0/web/packages/elements/src/primitives/index.ts +12 -0
  802. contraagent-0.1.0/web/packages/elements/src/primitives/legend.ts +56 -0
  803. contraagent-0.1.0/web/packages/elements/src/primitives/pill.test.ts +66 -0
  804. contraagent-0.1.0/web/packages/elements/src/primitives/pill.ts +58 -0
  805. contraagent-0.1.0/web/packages/elements/src/primitives/roving-focus.test.ts +49 -0
  806. contraagent-0.1.0/web/packages/elements/src/primitives/roving-focus.ts +138 -0
  807. contraagent-0.1.0/web/packages/elements/src/primitives/segmented.test.ts +65 -0
  808. contraagent-0.1.0/web/packages/elements/src/primitives/segmented.ts +92 -0
  809. contraagent-0.1.0/web/packages/elements/src/primitives/share-bar.test.ts +55 -0
  810. contraagent-0.1.0/web/packages/elements/src/primitives/share-bar.ts +94 -0
  811. contraagent-0.1.0/web/packages/elements/src/primitives/states.ts +28 -0
  812. contraagent-0.1.0/web/packages/elements/src/primitives/window.test.ts +59 -0
  813. contraagent-0.1.0/web/packages/elements/src/primitives/window.ts +65 -0
  814. contraagent-0.1.0/web/packages/elements/src/styles/chips.ts +18 -0
  815. contraagent-0.1.0/web/packages/elements/src/styles/facts.ts +7 -0
  816. contraagent-0.1.0/web/packages/elements/src/styles/index.ts +19 -0
  817. contraagent-0.1.0/web/packages/elements/src/styles/layout.ts +33 -0
  818. contraagent-0.1.0/web/packages/elements/src/styles/marks.ts +30 -0
  819. contraagent-0.1.0/web/packages/elements/src/styles/meter.ts +9 -0
  820. contraagent-0.1.0/web/packages/elements/src/styles/motion.ts +27 -0
  821. contraagent-0.1.0/web/packages/elements/src/styles/prose.ts +59 -0
  822. contraagent-0.1.0/web/packages/elements/src/styles/reset.ts +13 -0
  823. contraagent-0.1.0/web/packages/elements/src/styles/scale.test.ts +39 -0
  824. contraagent-0.1.0/web/packages/elements/src/styles/status.test.ts +47 -0
  825. contraagent-0.1.0/web/packages/elements/src/styles/status.ts +52 -0
  826. contraagent-0.1.0/web/packages/elements/src/styles/text.ts +21 -0
  827. contraagent-0.1.0/web/packages/elements/src/styles/tokens.ts +35 -0
  828. contraagent-0.1.0/web/packages/elements/src/table/data-table.test.ts +153 -0
  829. contraagent-0.1.0/web/packages/elements/src/table/data-table.ts +367 -0
  830. contraagent-0.1.0/web/packages/elements/src/table/index.ts +5 -0
  831. contraagent-0.1.0/web/packages/elements/src/table/styles.ts +32 -0
  832. contraagent-0.1.0/web/packages/elements/src/table/types.ts +73 -0
  833. contraagent-0.1.0/web/packages/elements/src/themes/boot.ts +14 -0
  834. contraagent-0.1.0/web/packages/elements/src/themes/choice.ts +47 -0
  835. contraagent-0.1.0/web/packages/elements/src/themes/data.ts +433 -0
  836. contraagent-0.1.0/web/packages/elements/src/themes/index.ts +10 -0
  837. contraagent-0.1.0/web/packages/elements/src/themes/sheet.ts +29 -0
  838. contraagent-0.1.0/web/packages/elements/src/themes/themes.test.ts +165 -0
  839. contraagent-0.1.0/web/packages/elements/src/themes/token-meanings.ts +67 -0
  840. contraagent-0.1.0/web/packages/elements/src/themes/tokens-list.ts +82 -0
  841. contraagent-0.1.0/web/packages/elements/src/tiles/index.ts +5 -0
  842. contraagent-0.1.0/web/packages/elements/src/tiles/stat-tiles.test.ts +60 -0
  843. contraagent-0.1.0/web/packages/elements/src/tiles/stat-tiles.ts +92 -0
  844. contraagent-0.1.0/web/packages/elements/src/tiles/styles.ts +23 -0
  845. contraagent-0.1.0/web/packages/elements/src/tiles/types.ts +20 -0
  846. contraagent-0.1.0/web/packages/elements/src/transcript/follow-scroll.test.ts +48 -0
  847. contraagent-0.1.0/web/packages/elements/src/transcript/follow-scroll.ts +72 -0
  848. contraagent-0.1.0/web/packages/elements/src/transcript/index.ts +6 -0
  849. contraagent-0.1.0/web/packages/elements/src/transcript/styles.ts +114 -0
  850. contraagent-0.1.0/web/packages/elements/src/transcript/tags.ts +18 -0
  851. contraagent-0.1.0/web/packages/elements/src/transcript/tool-card.ts +103 -0
  852. contraagent-0.1.0/web/packages/elements/src/transcript/transcript.test.ts +166 -0
  853. contraagent-0.1.0/web/packages/elements/src/transcript/transcript.ts +358 -0
  854. contraagent-0.1.0/web/packages/elements/src/transcript/types.ts +167 -0
  855. contraagent-0.1.0/web/packages/elements/tsconfig.build.json +4 -0
  856. contraagent-0.1.0/web/packages/elements/tsconfig.json +5 -0
  857. contraagent-0.1.0/web/packages/ui/README.md +131 -0
  858. contraagent-0.1.0/web/packages/ui/WORDS.md +106 -0
  859. contraagent-0.1.0/web/packages/ui/docs/embed.md +118 -0
  860. contraagent-0.1.0/web/packages/ui/docs/events.md +38 -0
  861. contraagent-0.1.0/web/packages/ui/docs/examples/embed.html +31 -0
  862. contraagent-0.1.0/web/packages/ui/docs/examples/journal.ts +32 -0
  863. contraagent-0.1.0/web/packages/ui/docs/examples/live-transcript.ts +22 -0
  864. contraagent-0.1.0/web/packages/ui/docs/examples/vite/index.html +30 -0
  865. contraagent-0.1.0/web/packages/ui/docs/examples/vite/main.ts +23 -0
  866. contraagent-0.1.0/web/packages/ui/docs/images/contracts.webp +0 -0
  867. contraagent-0.1.0/web/packages/ui/docs/images/definitions.webp +0 -0
  868. contraagent-0.1.0/web/packages/ui/docs/images/journal-table.webp +0 -0
  869. contraagent-0.1.0/web/packages/ui/docs/images/kpis.webp +0 -0
  870. contraagent-0.1.0/web/packages/ui/docs/images/monitor.webp +0 -0
  871. contraagent-0.1.0/web/packages/ui/docs/images/pipeline-graph.webp +0 -0
  872. contraagent-0.1.0/web/packages/ui/docs/images/task-table.webp +0 -0
  873. contraagent-0.1.0/web/packages/ui/docs/images/task-view.webp +0 -0
  874. contraagent-0.1.0/web/packages/ui/docs/images/timeline.webp +0 -0
  875. contraagent-0.1.0/web/packages/ui/docs/languages.md +48 -0
  876. contraagent-0.1.0/web/packages/ui/docs/live-data.md +17 -0
  877. contraagent-0.1.0/web/packages/ui/docs/theming.md +21 -0
  878. contraagent-0.1.0/web/packages/ui/docs/tsconfig.json +14 -0
  879. contraagent-0.1.0/web/packages/ui/lit-localize.json +15 -0
  880. contraagent-0.1.0/web/packages/ui/package.json +153 -0
  881. contraagent-0.1.0/web/packages/ui/scripts/i18n-check.mjs +51 -0
  882. contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.d.mts +6 -0
  883. contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.mjs +44 -0
  884. contraagent-0.1.0/web/packages/ui/scripts/strip-msg-desc.test.ts +23 -0
  885. contraagent-0.1.0/web/packages/ui/src/adapters/check-rows.test.ts +68 -0
  886. contraagent-0.1.0/web/packages/ui/src/adapters/check-rows.ts +78 -0
  887. contraagent-0.1.0/web/packages/ui/src/adapters/filters.test.ts +94 -0
  888. contraagent-0.1.0/web/packages/ui/src/adapters/filters.ts +76 -0
  889. contraagent-0.1.0/web/packages/ui/src/adapters/graph/__snapshots__/order.test.ts.snap +7633 -0
  890. contraagent-0.1.0/web/packages/ui/src/adapters/graph/compound.test.ts +127 -0
  891. contraagent-0.1.0/web/packages/ui/src/adapters/graph/compound.ts +359 -0
  892. contraagent-0.1.0/web/packages/ui/src/adapters/graph/flow-index.ts +154 -0
  893. contraagent-0.1.0/web/packages/ui/src/adapters/graph/highlight.ts +40 -0
  894. contraagent-0.1.0/web/packages/ui/src/adapters/graph/input.ts +236 -0
  895. contraagent-0.1.0/web/packages/ui/src/adapters/graph/layer.test.ts +38 -0
  896. contraagent-0.1.0/web/packages/ui/src/adapters/graph/layer.ts +92 -0
  897. contraagent-0.1.0/web/packages/ui/src/adapters/graph/layout.test.ts +216 -0
  898. contraagent-0.1.0/web/packages/ui/src/adapters/graph/matrix.test.ts +54 -0
  899. contraagent-0.1.0/web/packages/ui/src/adapters/graph/matrix.ts +133 -0
  900. contraagent-0.1.0/web/packages/ui/src/adapters/graph/order.test.ts +101 -0
  901. contraagent-0.1.0/web/packages/ui/src/adapters/graph/plans.fixture.ts +194 -0
  902. contraagent-0.1.0/web/packages/ui/src/adapters/graph/project.test.ts +347 -0
  903. contraagent-0.1.0/web/packages/ui/src/adapters/graph/project.ts +358 -0
  904. contraagent-0.1.0/web/packages/ui/src/adapters/graph/selection.test.ts +43 -0
  905. contraagent-0.1.0/web/packages/ui/src/adapters/graph/selection.ts +54 -0
  906. contraagent-0.1.0/web/packages/ui/src/adapters/graph/states.test.ts +10 -0
  907. contraagent-0.1.0/web/packages/ui/src/adapters/graph/states.ts +10 -0
  908. contraagent-0.1.0/web/packages/ui/src/adapters/graph/types.ts +148 -0
  909. contraagent-0.1.0/web/packages/ui/src/adapters/graph/words.test.ts +47 -0
  910. contraagent-0.1.0/web/packages/ui/src/adapters/graph/words.ts +146 -0
  911. contraagent-0.1.0/web/packages/ui/src/adapters/index.ts +22 -0
  912. contraagent-0.1.0/web/packages/ui/src/adapters/journal-columns.test.ts +39 -0
  913. contraagent-0.1.0/web/packages/ui/src/adapters/journal-columns.ts +200 -0
  914. contraagent-0.1.0/web/packages/ui/src/adapters/kpi-tiles.test.ts +92 -0
  915. contraagent-0.1.0/web/packages/ui/src/adapters/kpi-tiles.ts +211 -0
  916. contraagent-0.1.0/web/packages/ui/src/adapters/lanes.test.ts +49 -0
  917. contraagent-0.1.0/web/packages/ui/src/adapters/lanes.ts +98 -0
  918. contraagent-0.1.0/web/packages/ui/src/adapters/model-shares.test.ts +59 -0
  919. contraagent-0.1.0/web/packages/ui/src/adapters/model-shares.ts +62 -0
  920. contraagent-0.1.0/web/packages/ui/src/adapters/panel-body.ts +74 -0
  921. contraagent-0.1.0/web/packages/ui/src/adapters/preflight.test.ts +28 -0
  922. contraagent-0.1.0/web/packages/ui/src/adapters/preflight.ts +27 -0
  923. contraagent-0.1.0/web/packages/ui/src/adapters/task-columns.ts +120 -0
  924. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/index.ts +14 -0
  925. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/model.test.ts +218 -0
  926. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/model.ts +156 -0
  927. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/rounds.test.ts +40 -0
  928. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/rounds.ts +86 -0
  929. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/sections.test.ts +75 -0
  930. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/sections.ts +82 -0
  931. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/web.ts +40 -0
  932. contraagent-0.1.0/web/packages/ui/src/adapters/transcript/who.ts +53 -0
  933. contraagent-0.1.0/web/packages/ui/src/adapters/trends.test.ts +133 -0
  934. contraagent-0.1.0/web/packages/ui/src/adapters/trends.ts +337 -0
  935. contraagent-0.1.0/web/packages/ui/src/clicks.test.ts +78 -0
  936. contraagent-0.1.0/web/packages/ui/src/controllers/locale.ts +47 -0
  937. contraagent-0.1.0/web/packages/ui/src/controllers/shortcuts.ts +69 -0
  938. contraagent-0.1.0/web/packages/ui/src/controllers/stream.ts +103 -0
  939. contraagent-0.1.0/web/packages/ui/src/controllers/task-detail.ts +54 -0
  940. contraagent-0.1.0/web/packages/ui/src/controllers/theme.ts +73 -0
  941. contraagent-0.1.0/web/packages/ui/src/core/events.ts +120 -0
  942. contraagent-0.1.0/web/packages/ui/src/core/i18n.ts +76 -0
  943. contraagent-0.1.0/web/packages/ui/src/core/index.ts +6 -0
  944. contraagent-0.1.0/web/packages/ui/src/core/memory.test.ts +43 -0
  945. contraagent-0.1.0/web/packages/ui/src/core/memory.ts +177 -0
  946. contraagent-0.1.0/web/packages/ui/src/core/scroll.ts +73 -0
  947. contraagent-0.1.0/web/packages/ui/src/core/view-route.test.ts +88 -0
  948. contraagent-0.1.0/web/packages/ui/src/core/view-route.ts +177 -0
  949. contraagent-0.1.0/web/packages/ui/src/core/view-router.ts +66 -0
  950. contraagent-0.1.0/web/packages/ui/src/define/all.ts +13 -0
  951. contraagent-0.1.0/web/packages/ui/src/define/contracts.ts +2 -0
  952. contraagent-0.1.0/web/packages/ui/src/define/definitions.ts +3 -0
  953. contraagent-0.1.0/web/packages/ui/src/define/journal-table.ts +2 -0
  954. contraagent-0.1.0/web/packages/ui/src/define/kpis.ts +2 -0
  955. contraagent-0.1.0/web/packages/ui/src/define/monitor.ts +2 -0
  956. contraagent-0.1.0/web/packages/ui/src/define/overview.ts +2 -0
  957. contraagent-0.1.0/web/packages/ui/src/define/pipeline-graph.ts +2 -0
  958. contraagent-0.1.0/web/packages/ui/src/define/procs.ts +3 -0
  959. contraagent-0.1.0/web/packages/ui/src/define/task-table.ts +2 -0
  960. contraagent-0.1.0/web/packages/ui/src/define/task-view.ts +2 -0
  961. contraagent-0.1.0/web/packages/ui/src/define/timeline.ts +2 -0
  962. contraagent-0.1.0/web/packages/ui/src/define/transcript.ts +2 -0
  963. contraagent-0.1.0/web/packages/ui/src/define.test.ts +64 -0
  964. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-contracts.ts +204 -0
  965. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-definitions.ts +170 -0
  966. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-journal-table.ts +141 -0
  967. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-body.test.ts +160 -0
  968. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-body.ts +139 -0
  969. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-panel-view.ts +50 -0
  970. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-proc-tree.ts +57 -0
  971. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-procs-view.test.ts +26 -0
  972. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-procs-view.ts +89 -0
  973. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-task-table.test.ts +109 -0
  974. contraagent-0.1.0/web/packages/ui/src/elements/lists/ca-task-table.ts +94 -0
  975. contraagent-0.1.0/web/packages/ui/src/elements/lists/index.ts +8 -0
  976. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-kpis.ts +51 -0
  977. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-model-usage.test.ts +78 -0
  978. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-model-usage.ts +113 -0
  979. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-overview.test.ts +128 -0
  980. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-overview.ts +492 -0
  981. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-pipeline-graph.test.ts +109 -0
  982. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-pipeline-graph.ts +617 -0
  983. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-quota.test.ts +89 -0
  984. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-quota.ts +164 -0
  985. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-run-driver.ts +140 -0
  986. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-spend-breakdown.ts +107 -0
  987. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-timeline.ts +57 -0
  988. contraagent-0.1.0/web/packages/ui/src/elements/overview/ca-workers.ts +82 -0
  989. contraagent-0.1.0/web/packages/ui/src/elements/overview/index.ts +9 -0
  990. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/actions.ts +45 -0
  991. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/crumbs.ts +75 -0
  992. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/host.ts +26 -0
  993. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/inspector.ts +104 -0
  994. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/outline.ts +150 -0
  995. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/strings.ts +53 -0
  996. contraagent-0.1.0/web/packages/ui/src/elements/overview/pipeline-graph/styles.ts +97 -0
  997. contraagent-0.1.0/web/packages/ui/src/elements/shared/ca-definition.ts +206 -0
  998. contraagent-0.1.0/web/packages/ui/src/elements/shared/contract-parts.ts +158 -0
  999. contraagent-0.1.0/web/packages/ui/src/elements/shared/file-card.ts +49 -0
  1000. contraagent-0.1.0/web/packages/ui/src/elements/shared/prompt-text.ts +13 -0
  1001. contraagent-0.1.0/web/packages/ui/src/elements/shared/task-chip.ts +18 -0
  1002. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-clock.ts +27 -0
  1003. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-hosts.test.ts +34 -0
  1004. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-hosts.ts +93 -0
  1005. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-monitor.test.ts +276 -0
  1006. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-monitor.ts +526 -0
  1007. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-run-picker.test.ts +27 -0
  1008. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-run-picker.ts +284 -0
  1009. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-theme-switch.ts +170 -0
  1010. contraagent-0.1.0/web/packages/ui/src/elements/shell/ca-toasts.ts +100 -0
  1011. contraagent-0.1.0/web/packages/ui/src/elements/shell/header.ts +45 -0
  1012. contraagent-0.1.0/web/packages/ui/src/elements/shell/styles.ts +72 -0
  1013. contraagent-0.1.0/web/packages/ui/src/elements/shell/tabs.test.ts +14 -0
  1014. contraagent-0.1.0/web/packages/ui/src/elements/shell/tabs.ts +143 -0
  1015. contraagent-0.1.0/web/packages/ui/src/elements/shell/views.ts +67 -0
  1016. contraagent-0.1.0/web/packages/ui/src/elements/task/ca-task-view.test.ts +213 -0
  1017. contraagent-0.1.0/web/packages/ui/src/elements/task/ca-task-view.ts +157 -0
  1018. contraagent-0.1.0/web/packages/ui/src/elements/task/ca-transcript.test.ts +64 -0
  1019. contraagent-0.1.0/web/packages/ui/src/elements/task/ca-transcript.ts +214 -0
  1020. contraagent-0.1.0/web/packages/ui/src/elements/task/context.ts +105 -0
  1021. contraagent-0.1.0/web/packages/ui/src/elements/task/header.ts +292 -0
  1022. contraagent-0.1.0/web/packages/ui/src/elements/task/index.ts +2 -0
  1023. contraagent-0.1.0/web/packages/ui/src/elements/task/inputs.test.ts +38 -0
  1024. contraagent-0.1.0/web/packages/ui/src/elements/task/inputs.ts +46 -0
  1025. contraagent-0.1.0/web/packages/ui/src/elements/task/panes/definition.ts +7 -0
  1026. contraagent-0.1.0/web/packages/ui/src/elements/task/panes/io.ts +190 -0
  1027. contraagent-0.1.0/web/packages/ui/src/elements/task/panes/transcript.ts +29 -0
  1028. contraagent-0.1.0/web/packages/ui/src/elements/task/styles.ts +66 -0
  1029. contraagent-0.1.0/web/packages/ui/src/elements/trends/ca-trends.test.ts +92 -0
  1030. contraagent-0.1.0/web/packages/ui/src/elements/trends/ca-trends.ts +204 -0
  1031. contraagent-0.1.0/web/packages/ui/src/examples.test.ts +21 -0
  1032. contraagent-0.1.0/web/packages/ui/src/exports.test.ts +63 -0
  1033. contraagent-0.1.0/web/packages/ui/src/fires.test.ts +121 -0
  1034. contraagent-0.1.0/web/packages/ui/src/import.test.ts +25 -0
  1035. contraagent-0.1.0/web/packages/ui/src/index.ts +23 -0
  1036. contraagent-0.1.0/web/packages/ui/src/layers.test.ts +286 -0
  1037. contraagent-0.1.0/web/packages/ui/src/lib/tone.test.ts +84 -0
  1038. contraagent-0.1.0/web/packages/ui/src/lib/tone.ts +109 -0
  1039. contraagent-0.1.0/web/packages/ui/src/lib/trends.ts +44 -0
  1040. contraagent-0.1.0/web/packages/ui/src/locales/codes.ts +23 -0
  1041. contraagent-0.1.0/web/packages/ui/src/locales/ja.ts +771 -0
  1042. contraagent-0.1.0/web/packages/ui/src/status-classes.test.ts +34 -0
  1043. contraagent-0.1.0/web/packages/ui/src/words/api-error.ts +17 -0
  1044. contraagent-0.1.0/web/packages/ui/src/words/attempts.test.ts +20 -0
  1045. contraagent-0.1.0/web/packages/ui/src/words/attempts.ts +28 -0
  1046. contraagent-0.1.0/web/packages/ui/src/words/causes.test.ts +53 -0
  1047. contraagent-0.1.0/web/packages/ui/src/words/causes.ts +67 -0
  1048. contraagent-0.1.0/web/packages/ui/src/words/changes.ts +27 -0
  1049. contraagent-0.1.0/web/packages/ui/src/words/claims.test.ts +15 -0
  1050. contraagent-0.1.0/web/packages/ui/src/words/claims.ts +16 -0
  1051. contraagent-0.1.0/web/packages/ui/src/words/context.test.ts +32 -0
  1052. contraagent-0.1.0/web/packages/ui/src/words/context.ts +47 -0
  1053. contraagent-0.1.0/web/packages/ui/src/words/contract.ts +63 -0
  1054. contraagent-0.1.0/web/packages/ui/src/words/credential.test.ts +9 -0
  1055. contraagent-0.1.0/web/packages/ui/src/words/credential.ts +8 -0
  1056. contraagent-0.1.0/web/packages/ui/src/words/executor.ts +22 -0
  1057. contraagent-0.1.0/web/packages/ui/src/words/export.test.ts +20 -0
  1058. contraagent-0.1.0/web/packages/ui/src/words/export.ts +22 -0
  1059. contraagent-0.1.0/web/packages/ui/src/words/format.test.ts +71 -0
  1060. contraagent-0.1.0/web/packages/ui/src/words/format.ts +107 -0
  1061. contraagent-0.1.0/web/packages/ui/src/words/hops.test.ts +21 -0
  1062. contraagent-0.1.0/web/packages/ui/src/words/hops.ts +30 -0
  1063. contraagent-0.1.0/web/packages/ui/src/words/hosts.ts +37 -0
  1064. contraagent-0.1.0/web/packages/ui/src/words/index.ts +30 -0
  1065. contraagent-0.1.0/web/packages/ui/src/words/models.ts +50 -0
  1066. contraagent-0.1.0/web/packages/ui/src/words/outcome.test.ts +18 -0
  1067. contraagent-0.1.0/web/packages/ui/src/words/outcome.ts +61 -0
  1068. contraagent-0.1.0/web/packages/ui/src/words/panels.ts +53 -0
  1069. contraagent-0.1.0/web/packages/ui/src/words/passes.ts +18 -0
  1070. contraagent-0.1.0/web/packages/ui/src/words/preflight.ts +53 -0
  1071. contraagent-0.1.0/web/packages/ui/src/words/priority.ts +8 -0
  1072. contraagent-0.1.0/web/packages/ui/src/words/prompt.ts +20 -0
  1073. contraagent-0.1.0/web/packages/ui/src/words/quota.test.ts +55 -0
  1074. contraagent-0.1.0/web/packages/ui/src/words/quota.ts +108 -0
  1075. contraagent-0.1.0/web/packages/ui/src/words/rests.test.ts +83 -0
  1076. contraagent-0.1.0/web/packages/ui/src/words/rests.ts +96 -0
  1077. contraagent-0.1.0/web/packages/ui/src/words/rounds.ts +56 -0
  1078. contraagent-0.1.0/web/packages/ui/src/words/row-extras.ts +24 -0
  1079. contraagent-0.1.0/web/packages/ui/src/words/run-line.test.ts +69 -0
  1080. contraagent-0.1.0/web/packages/ui/src/words/run-line.ts +77 -0
  1081. contraagent-0.1.0/web/packages/ui/src/words/stop.test.ts +22 -0
  1082. contraagent-0.1.0/web/packages/ui/src/words/stop.ts +65 -0
  1083. contraagent-0.1.0/web/packages/ui/src/words/table.ts +10 -0
  1084. contraagent-0.1.0/web/packages/ui/src/words/task-definition.ts +37 -0
  1085. contraagent-0.1.0/web/packages/ui/src/words/time-box.test.ts +18 -0
  1086. contraagent-0.1.0/web/packages/ui/src/words/time-box.ts +21 -0
  1087. contraagent-0.1.0/web/packages/ui/src/words/trends.ts +118 -0
  1088. contraagent-0.1.0/web/packages/ui/tsconfig.build.json +4 -0
  1089. contraagent-0.1.0/web/packages/ui/tsconfig.json +5 -0
  1090. contraagent-0.1.0/web/packages/ui/vite.config.ts +28 -0
  1091. contraagent-0.1.0/web/packages/ui/xliff/GLOSSARY.md +254 -0
  1092. contraagent-0.1.0/web/packages/ui/xliff/ja.xlf +3084 -0
  1093. contraagent-0.1.0/web/playwright.config.ts +48 -0
  1094. contraagent-0.1.0/web/pnpm-lock.yaml +6477 -0
  1095. contraagent-0.1.0/web/pnpm-workspace.yaml +10 -0
  1096. contraagent-0.1.0/web/scripts/compact-locale.d.mts +14 -0
  1097. contraagent-0.1.0/web/scripts/compact-locale.mjs +101 -0
  1098. contraagent-0.1.0/web/scripts/compact-locale.test.ts +68 -0
  1099. contraagent-0.1.0/web/scripts/examples-page/index.html +18 -0
  1100. contraagent-0.1.0/web/scripts/examples-page/main.js +15 -0
  1101. contraagent-0.1.0/web/scripts/minify-css.d.mts +8 -0
  1102. contraagent-0.1.0/web/scripts/minify-css.mjs +78 -0
  1103. contraagent-0.1.0/web/scripts/minify-css.test.ts +24 -0
  1104. contraagent-0.1.0/web/scripts/minify-html.d.mts +8 -0
  1105. contraagent-0.1.0/web/scripts/minify-html.mjs +148 -0
  1106. contraagent-0.1.0/web/scripts/minify-html.test.ts +67 -0
  1107. contraagent-0.1.0/web/scripts/optimize_images.py +67 -0
  1108. contraagent-0.1.0/web/scripts/packed.mjs +67 -0
  1109. contraagent-0.1.0/web/scripts/screenshots.mjs +379 -0
  1110. contraagent-0.1.0/web/scripts/showcase.py +49 -0
  1111. contraagent-0.1.0/web/scripts/size.mjs +92 -0
  1112. contraagent-0.1.0/web/scripts/tarballs.mjs +95 -0
  1113. contraagent-0.1.0/web/size-budgets.json +89 -0
  1114. contraagent-0.1.0/web/tsconfig.base.json +27 -0
  1115. contraagent-0.1.0/web/tsconfig.json +16 -0
  1116. contraagent-0.1.0/web/tsconfig.tsbuildinfo +1 -0
  1117. 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`.