codex-autorunner 0.1.2__py3-none-any.whl → 1.1.0__py3-none-any.whl

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 (276) hide show
  1. codex_autorunner/__init__.py +12 -1
  2. codex_autorunner/__main__.py +4 -0
  3. codex_autorunner/agents/codex/harness.py +1 -1
  4. codex_autorunner/agents/opencode/client.py +68 -35
  5. codex_autorunner/agents/opencode/constants.py +3 -0
  6. codex_autorunner/agents/opencode/harness.py +6 -1
  7. codex_autorunner/agents/opencode/logging.py +21 -5
  8. codex_autorunner/agents/opencode/run_prompt.py +1 -0
  9. codex_autorunner/agents/opencode/runtime.py +176 -47
  10. codex_autorunner/agents/opencode/supervisor.py +36 -48
  11. codex_autorunner/agents/registry.py +155 -8
  12. codex_autorunner/api.py +25 -0
  13. codex_autorunner/bootstrap.py +22 -37
  14. codex_autorunner/cli.py +5 -1156
  15. codex_autorunner/codex_cli.py +20 -84
  16. codex_autorunner/core/__init__.py +4 -0
  17. codex_autorunner/core/about_car.py +49 -32
  18. codex_autorunner/core/adapter_utils.py +21 -0
  19. codex_autorunner/core/app_server_ids.py +59 -0
  20. codex_autorunner/core/app_server_logging.py +7 -3
  21. codex_autorunner/core/app_server_prompts.py +27 -260
  22. codex_autorunner/core/app_server_threads.py +26 -28
  23. codex_autorunner/core/app_server_utils.py +165 -0
  24. codex_autorunner/core/archive.py +349 -0
  25. codex_autorunner/core/codex_runner.py +12 -2
  26. codex_autorunner/core/config.py +587 -103
  27. codex_autorunner/core/docs.py +10 -2
  28. codex_autorunner/core/drafts.py +136 -0
  29. codex_autorunner/core/engine.py +1531 -866
  30. codex_autorunner/core/exceptions.py +4 -0
  31. codex_autorunner/core/flows/__init__.py +25 -0
  32. codex_autorunner/core/flows/controller.py +202 -0
  33. codex_autorunner/core/flows/definition.py +82 -0
  34. codex_autorunner/core/flows/models.py +88 -0
  35. codex_autorunner/core/flows/reasons.py +52 -0
  36. codex_autorunner/core/flows/reconciler.py +131 -0
  37. codex_autorunner/core/flows/runtime.py +382 -0
  38. codex_autorunner/core/flows/store.py +568 -0
  39. codex_autorunner/core/flows/transition.py +138 -0
  40. codex_autorunner/core/flows/ux_helpers.py +257 -0
  41. codex_autorunner/core/flows/worker_process.py +242 -0
  42. codex_autorunner/core/git_utils.py +62 -0
  43. codex_autorunner/core/hub.py +136 -16
  44. codex_autorunner/core/locks.py +4 -0
  45. codex_autorunner/core/notifications.py +14 -2
  46. codex_autorunner/core/ports/__init__.py +28 -0
  47. codex_autorunner/core/ports/agent_backend.py +150 -0
  48. codex_autorunner/core/ports/backend_orchestrator.py +41 -0
  49. codex_autorunner/core/ports/run_event.py +91 -0
  50. codex_autorunner/core/prompt.py +15 -7
  51. codex_autorunner/core/redaction.py +29 -0
  52. codex_autorunner/core/review_context.py +5 -8
  53. codex_autorunner/core/run_index.py +6 -0
  54. codex_autorunner/core/runner_process.py +5 -2
  55. codex_autorunner/core/state.py +0 -88
  56. codex_autorunner/core/state_roots.py +57 -0
  57. codex_autorunner/core/supervisor_protocol.py +15 -0
  58. codex_autorunner/core/supervisor_utils.py +67 -0
  59. codex_autorunner/core/text_delta_coalescer.py +54 -0
  60. codex_autorunner/core/ticket_linter_cli.py +201 -0
  61. codex_autorunner/core/ticket_manager_cli.py +432 -0
  62. codex_autorunner/core/update.py +24 -16
  63. codex_autorunner/core/update_paths.py +28 -0
  64. codex_autorunner/core/update_runner.py +2 -0
  65. codex_autorunner/core/usage.py +164 -12
  66. codex_autorunner/core/utils.py +120 -11
  67. codex_autorunner/discovery.py +2 -4
  68. codex_autorunner/flows/review/__init__.py +17 -0
  69. codex_autorunner/{core/review.py → flows/review/service.py} +15 -10
  70. codex_autorunner/flows/ticket_flow/__init__.py +3 -0
  71. codex_autorunner/flows/ticket_flow/definition.py +98 -0
  72. codex_autorunner/integrations/agents/__init__.py +17 -0
  73. codex_autorunner/integrations/agents/backend_orchestrator.py +284 -0
  74. codex_autorunner/integrations/agents/codex_adapter.py +90 -0
  75. codex_autorunner/integrations/agents/codex_backend.py +448 -0
  76. codex_autorunner/integrations/agents/opencode_adapter.py +108 -0
  77. codex_autorunner/integrations/agents/opencode_backend.py +598 -0
  78. codex_autorunner/integrations/agents/runner.py +91 -0
  79. codex_autorunner/integrations/agents/wiring.py +271 -0
  80. codex_autorunner/integrations/app_server/client.py +583 -152
  81. codex_autorunner/integrations/app_server/env.py +2 -107
  82. codex_autorunner/{core/app_server_events.py → integrations/app_server/event_buffer.py} +15 -8
  83. codex_autorunner/integrations/app_server/supervisor.py +59 -33
  84. codex_autorunner/integrations/telegram/adapter.py +204 -165
  85. codex_autorunner/integrations/telegram/api_schemas.py +120 -0
  86. codex_autorunner/integrations/telegram/config.py +221 -0
  87. codex_autorunner/integrations/telegram/constants.py +17 -2
  88. codex_autorunner/integrations/telegram/dispatch.py +17 -0
  89. codex_autorunner/integrations/telegram/doctor.py +47 -0
  90. codex_autorunner/integrations/telegram/handlers/callbacks.py +7 -4
  91. codex_autorunner/integrations/telegram/handlers/commands/__init__.py +2 -0
  92. codex_autorunner/integrations/telegram/handlers/commands/execution.py +53 -57
  93. codex_autorunner/integrations/telegram/handlers/commands/files.py +2 -6
  94. codex_autorunner/integrations/telegram/handlers/commands/flows.py +1364 -0
  95. codex_autorunner/integrations/telegram/handlers/commands/formatting.py +1 -1
  96. codex_autorunner/integrations/telegram/handlers/commands/github.py +41 -582
  97. codex_autorunner/integrations/telegram/handlers/commands/workspace.py +8 -8
  98. codex_autorunner/integrations/telegram/handlers/commands_runtime.py +137 -478
  99. codex_autorunner/integrations/telegram/handlers/commands_spec.py +17 -4
  100. codex_autorunner/integrations/telegram/handlers/messages.py +121 -9
  101. codex_autorunner/integrations/telegram/handlers/selections.py +61 -1
  102. codex_autorunner/integrations/telegram/helpers.py +111 -16
  103. codex_autorunner/integrations/telegram/outbox.py +208 -37
  104. codex_autorunner/integrations/telegram/progress_stream.py +3 -10
  105. codex_autorunner/integrations/telegram/service.py +221 -42
  106. codex_autorunner/integrations/telegram/state.py +100 -2
  107. codex_autorunner/integrations/telegram/ticket_flow_bridge.py +611 -0
  108. codex_autorunner/integrations/telegram/transport.py +39 -4
  109. codex_autorunner/integrations/telegram/trigger_mode.py +53 -0
  110. codex_autorunner/manifest.py +2 -0
  111. codex_autorunner/plugin_api.py +22 -0
  112. codex_autorunner/routes/__init__.py +37 -67
  113. codex_autorunner/routes/agents.py +2 -137
  114. codex_autorunner/routes/analytics.py +3 -0
  115. codex_autorunner/routes/app_server.py +2 -131
  116. codex_autorunner/routes/base.py +2 -624
  117. codex_autorunner/routes/file_chat.py +7 -0
  118. codex_autorunner/routes/flows.py +7 -0
  119. codex_autorunner/routes/messages.py +7 -0
  120. codex_autorunner/routes/repos.py +2 -196
  121. codex_autorunner/routes/review.py +2 -147
  122. codex_autorunner/routes/sessions.py +2 -175
  123. codex_autorunner/routes/settings.py +2 -168
  124. codex_autorunner/routes/shared.py +2 -275
  125. codex_autorunner/routes/system.py +4 -188
  126. codex_autorunner/routes/usage.py +3 -0
  127. codex_autorunner/routes/voice.py +2 -119
  128. codex_autorunner/routes/workspace.py +3 -0
  129. codex_autorunner/server.py +3 -2
  130. codex_autorunner/static/agentControls.js +41 -11
  131. codex_autorunner/static/agentEvents.js +248 -0
  132. codex_autorunner/static/app.js +35 -24
  133. codex_autorunner/static/archive.js +826 -0
  134. codex_autorunner/static/archiveApi.js +37 -0
  135. codex_autorunner/static/autoRefresh.js +36 -8
  136. codex_autorunner/static/bootstrap.js +1 -0
  137. codex_autorunner/static/bus.js +1 -0
  138. codex_autorunner/static/cache.js +1 -0
  139. codex_autorunner/static/constants.js +20 -4
  140. codex_autorunner/static/dashboard.js +344 -325
  141. codex_autorunner/static/diffRenderer.js +37 -0
  142. codex_autorunner/static/docChatCore.js +324 -0
  143. codex_autorunner/static/docChatStorage.js +65 -0
  144. codex_autorunner/static/docChatVoice.js +65 -0
  145. codex_autorunner/static/docEditor.js +133 -0
  146. codex_autorunner/static/env.js +1 -0
  147. codex_autorunner/static/eventSummarizer.js +166 -0
  148. codex_autorunner/static/fileChat.js +182 -0
  149. codex_autorunner/static/health.js +155 -0
  150. codex_autorunner/static/hub.js +126 -185
  151. codex_autorunner/static/index.html +839 -863
  152. codex_autorunner/static/liveUpdates.js +1 -0
  153. codex_autorunner/static/loader.js +1 -0
  154. codex_autorunner/static/messages.js +873 -0
  155. codex_autorunner/static/mobileCompact.js +2 -1
  156. codex_autorunner/static/preserve.js +17 -0
  157. codex_autorunner/static/settings.js +149 -217
  158. codex_autorunner/static/smartRefresh.js +52 -0
  159. codex_autorunner/static/styles.css +8850 -3876
  160. codex_autorunner/static/tabs.js +175 -11
  161. codex_autorunner/static/terminal.js +32 -0
  162. codex_autorunner/static/terminalManager.js +34 -59
  163. codex_autorunner/static/ticketChatActions.js +333 -0
  164. codex_autorunner/static/ticketChatEvents.js +16 -0
  165. codex_autorunner/static/ticketChatStorage.js +16 -0
  166. codex_autorunner/static/ticketChatStream.js +264 -0
  167. codex_autorunner/static/ticketEditor.js +844 -0
  168. codex_autorunner/static/ticketVoice.js +9 -0
  169. codex_autorunner/static/tickets.js +1988 -0
  170. codex_autorunner/static/utils.js +43 -3
  171. codex_autorunner/static/voice.js +1 -0
  172. codex_autorunner/static/workspace.js +765 -0
  173. codex_autorunner/static/workspaceApi.js +53 -0
  174. codex_autorunner/static/workspaceFileBrowser.js +504 -0
  175. codex_autorunner/surfaces/__init__.py +5 -0
  176. codex_autorunner/surfaces/cli/__init__.py +6 -0
  177. codex_autorunner/surfaces/cli/cli.py +1224 -0
  178. codex_autorunner/surfaces/cli/codex_cli.py +20 -0
  179. codex_autorunner/surfaces/telegram/__init__.py +3 -0
  180. codex_autorunner/surfaces/web/__init__.py +1 -0
  181. codex_autorunner/surfaces/web/app.py +2019 -0
  182. codex_autorunner/surfaces/web/hub_jobs.py +192 -0
  183. codex_autorunner/surfaces/web/middleware.py +587 -0
  184. codex_autorunner/surfaces/web/pty_session.py +370 -0
  185. codex_autorunner/surfaces/web/review.py +6 -0
  186. codex_autorunner/surfaces/web/routes/__init__.py +78 -0
  187. codex_autorunner/surfaces/web/routes/agents.py +138 -0
  188. codex_autorunner/surfaces/web/routes/analytics.py +277 -0
  189. codex_autorunner/surfaces/web/routes/app_server.py +132 -0
  190. codex_autorunner/surfaces/web/routes/archive.py +357 -0
  191. codex_autorunner/surfaces/web/routes/base.py +615 -0
  192. codex_autorunner/surfaces/web/routes/file_chat.py +836 -0
  193. codex_autorunner/surfaces/web/routes/flows.py +1164 -0
  194. codex_autorunner/surfaces/web/routes/messages.py +459 -0
  195. codex_autorunner/surfaces/web/routes/repos.py +197 -0
  196. codex_autorunner/surfaces/web/routes/review.py +148 -0
  197. codex_autorunner/surfaces/web/routes/sessions.py +176 -0
  198. codex_autorunner/surfaces/web/routes/settings.py +169 -0
  199. codex_autorunner/surfaces/web/routes/shared.py +280 -0
  200. codex_autorunner/surfaces/web/routes/system.py +196 -0
  201. codex_autorunner/surfaces/web/routes/usage.py +89 -0
  202. codex_autorunner/surfaces/web/routes/voice.py +120 -0
  203. codex_autorunner/surfaces/web/routes/workspace.py +271 -0
  204. codex_autorunner/surfaces/web/runner_manager.py +25 -0
  205. codex_autorunner/surfaces/web/schemas.py +417 -0
  206. codex_autorunner/surfaces/web/static_assets.py +490 -0
  207. codex_autorunner/surfaces/web/static_refresh.py +86 -0
  208. codex_autorunner/surfaces/web/terminal_sessions.py +78 -0
  209. codex_autorunner/tickets/__init__.py +27 -0
  210. codex_autorunner/tickets/agent_pool.py +399 -0
  211. codex_autorunner/tickets/files.py +89 -0
  212. codex_autorunner/tickets/frontmatter.py +55 -0
  213. codex_autorunner/tickets/lint.py +102 -0
  214. codex_autorunner/tickets/models.py +97 -0
  215. codex_autorunner/tickets/outbox.py +244 -0
  216. codex_autorunner/tickets/replies.py +179 -0
  217. codex_autorunner/tickets/runner.py +881 -0
  218. codex_autorunner/tickets/spec_ingest.py +77 -0
  219. codex_autorunner/web/__init__.py +5 -1
  220. codex_autorunner/web/app.py +2 -1771
  221. codex_autorunner/web/hub_jobs.py +2 -191
  222. codex_autorunner/web/middleware.py +2 -587
  223. codex_autorunner/web/pty_session.py +2 -369
  224. codex_autorunner/web/runner_manager.py +2 -24
  225. codex_autorunner/web/schemas.py +2 -396
  226. codex_autorunner/web/static_assets.py +4 -484
  227. codex_autorunner/web/static_refresh.py +2 -85
  228. codex_autorunner/web/terminal_sessions.py +2 -77
  229. codex_autorunner/workspace/__init__.py +40 -0
  230. codex_autorunner/workspace/paths.py +335 -0
  231. codex_autorunner-1.1.0.dist-info/METADATA +154 -0
  232. codex_autorunner-1.1.0.dist-info/RECORD +308 -0
  233. {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/WHEEL +1 -1
  234. codex_autorunner/agents/execution/policy.py +0 -292
  235. codex_autorunner/agents/factory.py +0 -52
  236. codex_autorunner/agents/orchestrator.py +0 -358
  237. codex_autorunner/core/doc_chat.py +0 -1446
  238. codex_autorunner/core/snapshot.py +0 -580
  239. codex_autorunner/integrations/github/chatops.py +0 -268
  240. codex_autorunner/integrations/github/pr_flow.py +0 -1314
  241. codex_autorunner/routes/docs.py +0 -381
  242. codex_autorunner/routes/github.py +0 -327
  243. codex_autorunner/routes/runs.py +0 -250
  244. codex_autorunner/spec_ingest.py +0 -812
  245. codex_autorunner/static/docChatActions.js +0 -287
  246. codex_autorunner/static/docChatEvents.js +0 -300
  247. codex_autorunner/static/docChatRender.js +0 -205
  248. codex_autorunner/static/docChatStream.js +0 -361
  249. codex_autorunner/static/docs.js +0 -20
  250. codex_autorunner/static/docsClipboard.js +0 -69
  251. codex_autorunner/static/docsCrud.js +0 -257
  252. codex_autorunner/static/docsDocUpdates.js +0 -62
  253. codex_autorunner/static/docsDrafts.js +0 -16
  254. codex_autorunner/static/docsElements.js +0 -69
  255. codex_autorunner/static/docsInit.js +0 -285
  256. codex_autorunner/static/docsParse.js +0 -160
  257. codex_autorunner/static/docsSnapshot.js +0 -87
  258. codex_autorunner/static/docsSpecIngest.js +0 -263
  259. codex_autorunner/static/docsState.js +0 -127
  260. codex_autorunner/static/docsThreadRegistry.js +0 -44
  261. codex_autorunner/static/docsUi.js +0 -153
  262. codex_autorunner/static/docsVoice.js +0 -56
  263. codex_autorunner/static/github.js +0 -504
  264. codex_autorunner/static/logs.js +0 -678
  265. codex_autorunner/static/review.js +0 -157
  266. codex_autorunner/static/runs.js +0 -418
  267. codex_autorunner/static/snapshot.js +0 -124
  268. codex_autorunner/static/state.js +0 -94
  269. codex_autorunner/static/todoPreview.js +0 -27
  270. codex_autorunner/workspace.py +0 -16
  271. codex_autorunner-0.1.2.dist-info/METADATA +0 -249
  272. codex_autorunner-0.1.2.dist-info/RECORD +0 -222
  273. /codex_autorunner/{routes → surfaces/web/routes}/terminal_images.py +0 -0
  274. {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/entry_points.txt +0 -0
  275. {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/licenses/LICENSE +0 -0
  276. {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,308 @@
1
+ codex_autorunner/__init__.py,sha256=EyZQrh8IKtssHmoNafaN7--MNRG4DhLA-w7T7-AJqhk,205
2
+ codex_autorunner/__main__.py,sha256=Qd-f8z2Q2vpiEP2x6PBFsJrpACWDVxFKQk820MhFmHo,59
3
+ codex_autorunner/api.py,sha256=1QIExNBqoNfND7ldsa36E65MGaBstutrr7j6Dgs5W74,705
4
+ codex_autorunner/bootstrap.py,sha256=xG_jUGn2ChzsDR1-fy-WxZnWESG7V8MDNqJcYb5E6uM,5011
5
+ codex_autorunner/cli.py,sha256=UKTukqhpK2pSJeFdVT1ESAGgjR_VGAtfHaovpwydf0k,222
6
+ codex_autorunner/codex_cli.py,sha256=SkIFfNx7-sJB2QXa9Sy3r0MjovkGTFe8zM96vVxCA9E,384
7
+ codex_autorunner/codex_runner.py,sha256=P0yHlZZjVYWLVH1O4b5VUwQs_mkJspPPG3-nULWt4Cw,362
8
+ codex_autorunner/discovery.py,sha256=8vwGq5YKAZpyTFY-mcv2L7oZY1ECkgqeeu-jD3SBGaI,6778
9
+ codex_autorunner/housekeeping.py,sha256=1Jk3-vIDfYfXf1N63Dqz7C-i0ACGYTzRcgYHcYDjsZo,12826
10
+ codex_autorunner/manifest.py,sha256=-1pQfCNFeAei9r-Z5wqJV2_EmJ6jNhYZ4y1aIc__w-8,6545
11
+ codex_autorunner/plugin_api.py,sha256=o-87FVzjSbC1od55aGF3O3pp-NkKX9hDKOcEeh0J5BU,664
12
+ codex_autorunner/server.py,sha256=bZBpp9R99L77eQQ_t63njn21VoDBZzoCAOndbMZ0s08,434
13
+ codex_autorunner/agents/__init__.py,sha256=6xEQXHkZ40kHadHB9Is5fK9dGGVsgryasoRllIN8_ho,418
14
+ codex_autorunner/agents/base.py,sha256=UiYYYvSYrEjTHy0tjs8O8hcTwrgMtmuyrhoVW9EkiYY,1643
15
+ codex_autorunner/agents/registry.py,sha256=TuysgG3o3ymcwiyxP7YhJTN4vvIMEnbejE_eM6xiMTE,8165
16
+ codex_autorunner/agents/types.py,sha256=3dzkr0Rvn2EgSiJ1k65f6MF0ZEXifGK7GhUF4Nr2GBs,727
17
+ codex_autorunner/agents/codex/__init__.py,sha256=GQ9KHMVT2ggOe1jT1kHEPfJLRDzfH0doGJCNwO4a2o0,92
18
+ codex_autorunner/agents/codex/harness.py,sha256=Eva1uR-QuWpMk07VuDLXVpterpqOHls5WadbnpJnnOs,8440
19
+ codex_autorunner/agents/opencode/__init__.py,sha256=nTTukw5TzOKURCTyF7CJsbx-rh-9sue79XvqsOVTTNc,478
20
+ codex_autorunner/agents/opencode/agent_config.py,sha256=VO3qske0X75S8eoK6XR3NUNJq_WzGLJu1KsZdOFF-MY,2922
21
+ codex_autorunner/agents/opencode/client.py,sha256=LC2VGtRugyvkAiwXCH6Caimprrphvl1C0iCVyxyz95c,19367
22
+ codex_autorunner/agents/opencode/constants.py,sha256=h9rywpj-Lqio-pRVZ74CEbq8TOVI11oEEIXwY9hQ9FA,85
23
+ codex_autorunner/agents/opencode/events.py,sha256=c0OxtbfYtmYRwMyt4UOgRiAmunfT76huXBDQuybB0jg,1828
24
+ codex_autorunner/agents/opencode/harness.py,sha256=djALbaAhEi3coX4oSqhIne_9JHC19Gf-VcBca-a9R9I,10788
25
+ codex_autorunner/agents/opencode/logging.py,sha256=pbIS4xG84fkLrdNKiX2Y4zMTqj-ADzXOCNNPlnw1-z0,8423
26
+ codex_autorunner/agents/opencode/run_prompt.py,sha256=b4sZcuRgyHrM2jouEGZGeCw-nOwqUFX6OPy92e64kJ4,8656
27
+ codex_autorunner/agents/opencode/runtime.py,sha256=CTeARdmkCfyp2TB193vG4GeXB1MNPZ4S83OMMqGProE,63958
28
+ codex_autorunner/agents/opencode/supervisor.py,sha256=rtaY2HqUKd9xa2anHRCv0Xs84SPbQ9equtli8uUYa_4,18427
29
+ codex_autorunner/core/__init__.py,sha256=khlUA3V6Oq9fRgEs5rtrpgCAAHU_9mwcHWbgtGW1NJc,152
30
+ codex_autorunner/core/about_car.py,sha256=jwtXZSngWB3nK_m4nv6OCyCAqSbTFY_--wQs21RHbGw,5774
31
+ codex_autorunner/core/adapter_utils.py,sha256=o1AUZVhyQTMF-DaaWNVINnXJ_8HAyjaj6mqfDABYW9Q,728
32
+ codex_autorunner/core/app_server_ids.py,sha256=hn1AOx5RXN2gKtxdgfhFYGaYFAHxOJdgcvp1yqQyRMg,1839
33
+ codex_autorunner/core/app_server_logging.py,sha256=bXmc03VfpBRX0_WYW6QYJ7XLWpd-hnkJB_EnSr1WFOY,7792
34
+ codex_autorunner/core/app_server_prompts.py,sha256=Sjx22i7bxb8qFBBvkcFgyvHLEqFbz3IuGKTALRzsfjo,4222
35
+ codex_autorunner/core/app_server_threads.py,sha256=FpnKXp9zLX6G_wEdWtQGFa7EsxuE_n2ZTorR5f1ZkFo,6460
36
+ codex_autorunner/core/app_server_utils.py,sha256=We3SjezC4FFfYcQc8t8g40GWZlJft_1CFt1LCSgs298,5148
37
+ codex_autorunner/core/archive.py,sha256=CyUiGChq9LrbnDOWAi8LgHllcHd79ZxbBIm5O7m_wjk,10415
38
+ codex_autorunner/core/circuit_breaker.py,sha256=DL8lUrZPluzvNHgCMDUJjWuYytgmVzhL30va8M3TPQ4,6205
39
+ codex_autorunner/core/codex_runner.py,sha256=iteZnbPnsvfYBopCvvhyWIbnx_eVUJWu6A-gilVGVcw,3353
40
+ codex_autorunner/core/config.py,sha256=x8up5d5cUhI7d54eWCok4nvBxldE4wm0ACc_-9E9w1M,109046
41
+ codex_autorunner/core/docs.py,sha256=K-L7E4QQEvLROnJypfNtjHhnOz7Dl8guLhmYdwTj2l8,3741
42
+ codex_autorunner/core/drafts.py,sha256=VeHfBmUpQDFmVZH2RSbZHCi7lIiMVrCFRf0iENlreEY,4202
43
+ codex_autorunner/core/engine.py,sha256=Xr6t5SEhpQHeXsHIgTnLhZNB3AugkEjUl43vNYxG37c,127524
44
+ codex_autorunner/core/exceptions.py,sha256=CJAOtYagbVSieCxJiP3ndp-sBvjcQVYBz6LLKzKKaWA,1600
45
+ codex_autorunner/core/git_utils.py,sha256=hOxXp41FDO6U0x0fOjSdW8-x1IXj6rJ_EvgXXre6a3c,8570
46
+ codex_autorunner/core/hub.py,sha256=L2gPck5tWp8e4PBwWbi-rIJtc20oIklyYjf6_aP6c7M,38850
47
+ codex_autorunner/core/injected_context.py,sha256=HQ1VTO7E0TccBkRMQM3f0ihiGS4FNM-aCW35QX7_CXs,301
48
+ codex_autorunner/core/locks.py,sha256=MWPGf7-4QTcQass9O5M7OlI1pHAqomep3-7pr3aA8qU,8324
49
+ codex_autorunner/core/logging_utils.py,sha256=fQ9rIshtE-S02-xcFJOUOAXFTrFIcv_TkHzBXU4fxHs,5063
50
+ codex_autorunner/core/notifications.py,sha256=XHhnhN6nJpJlbnNVrapMiXr8Y4El7l7x9s3ZCqTAjqM,18043
51
+ codex_autorunner/core/optional_dependencies.py,sha256=sBuSnQrRhV6_JA2tVLlVnDBsED79kY81cOyWcRiynUM,1271
52
+ codex_autorunner/core/patch_utils.py,sha256=H5IPB5X4EJmXw7dNV3hj6m-vV2yXNY4PMuvq12msV7o,7635
53
+ codex_autorunner/core/path_utils.py,sha256=MjFTnTC-GuwR4-QS6fBJuvuicSi2E-G3Jt7KWjaFffc,3450
54
+ codex_autorunner/core/prompt.py,sha256=se4ziQ76LssiRJvSuNFbaIdf5UAX0wejmMVtO7k1So8,2898
55
+ codex_autorunner/core/prompts.py,sha256=LBab4SjAaAfWmWKSPkSGaCy5dWsnZr36lM3y8uFuGz4,8919
56
+ codex_autorunner/core/redaction.py,sha256=VkGJS2JTCYrWcTieb-iw994SM_mcBXC3toqwvH8VG2o,842
57
+ codex_autorunner/core/request_context.py,sha256=FVQtn67zJffRET9TBy48jk23ZonAjONOeFwZiizyfxc,997
58
+ codex_autorunner/core/retry.py,sha256=n31DM84oIW0PwWPipNd5TH2H6H5ej8I2JxikfX-FIQs,1725
59
+ codex_autorunner/core/review_context.py,sha256=DaepmVJ-qVx77FrXEkTMyDMF1uIAVT7HccDUXlk7iNU,5033
60
+ codex_autorunner/core/run_index.py,sha256=feOG5JNtJoqH57vfRuIeVtb111zokgpDsHMj3cgz4TE,7794
61
+ codex_autorunner/core/runner_controller.py,sha256=0QfocgTIZUQ4HbUhJLtVZRyT0vxyAzdHkttG0C94w2k,7404
62
+ codex_autorunner/core/runner_process.py,sha256=G_O_kzo6sv_oWl0FuCzUXW28kZGXh7OdZOBWBKR5kBk,1503
63
+ codex_autorunner/core/sqlite_utils.py,sha256=dA_2UGXoH-TNKPeJsqrIgbRtmTdETxr6FWPM5BZm9pU,754
64
+ codex_autorunner/core/state.py,sha256=-Adtoag43MDPFhv2rzI0doVCWNJxH5oVcHZKjUosQf8,14356
65
+ codex_autorunner/core/state_roots.py,sha256=Ziu81ObE90sgn3Xn49-7yTWmGjFyfjH2p1HplgAIa2k,1725
66
+ codex_autorunner/core/supervisor_protocol.py,sha256=5mF7krSfH82zU6smopJKamzqrcs2t2Uz-GU-vuCk2oc,364
67
+ codex_autorunner/core/supervisor_utils.py,sha256=Cb20PgcJzRWVCrJZt3SkCocoijQOuOwkKzsIFEIaHYY,2060
68
+ codex_autorunner/core/text_delta_coalescer.py,sha256=hNHupQpbE6YVDioNmuehcQZosGI9fhvNLFTm_5xtNMs,3086
69
+ codex_autorunner/core/ticket_linter_cli.py,sha256=X0qGbBI9QEwfSRVo-x4NSRyc8wfREUbuNk4jazSoY48,6529
70
+ codex_autorunner/core/ticket_manager_cli.py,sha256=8CoTWSX5f-fADOQVFKd47Y2A967jJV-nMACX0o194IA,14907
71
+ codex_autorunner/core/update.py,sha256=Nw0o6QlsqIiRmiKhQ7ScRHa_H7U7zs2DbN-2PjBC4zA,17839
72
+ codex_autorunner/core/update_paths.py,sha256=ECTr-8YUr85Shg_HKHgYHcsgZP5eOcmZsEOQbiYgeZE,796
73
+ codex_autorunner/core/update_runner.py,sha256=mimPqchmRD-Rv2TIX67Z-ShfH3ytzS_Lozw0m6IdBsc,1484
74
+ codex_autorunner/core/usage.py,sha256=BpttMKXZaPADFhjBxlhIExY6vTr2tmwUK7v6u_vSwfg,74815
75
+ codex_autorunner/core/utils.py,sha256=386gRnEg_HswZYV4hYII8c196g31OosOCRqXEnm908c,10976
76
+ codex_autorunner/core/flows/__init__.py,sha256=AVQh2yts_kjo1zA91HwBc4uoMkfSRl8E_2b-gnxdvHM,503
77
+ codex_autorunner/core/flows/controller.py,sha256=zejAiPrm-OhXP_5B2IILA_hkIfxvhre-fL4Ejz1EVbo,6953
78
+ codex_autorunner/core/flows/definition.py,sha256=5rkczvPA2dW0PdgSYQIFxu4ItUPu2Q9_8ATeZiKGEpY,2725
79
+ codex_autorunner/core/flows/models.py,sha256=Pny0f6fFXKX7tCuwUCYKRJPit8orqLIfjkfhLd_8zWA,2428
80
+ codex_autorunner/core/flows/reasons.py,sha256=hT_NXIl-7Ry8n7xk289iUnbL_5i-SAOeBjo5AJikqA4,1565
81
+ codex_autorunner/core/flows/reconciler.py,sha256=Zmci27gWO27JDFlKVwlYq7z1AalCaSQn_8JpRcbycfI,4177
82
+ codex_autorunner/core/flows/runtime.py,sha256=9PDRoGZuhHSGlzGPQKunwv-J4joVQLKy5e8YMUvhWmw,13420
83
+ codex_autorunner/core/flows/store.py,sha256=UCOaRmbbQrN_736Mn2GhsWuu_hFxl8q9sW_m4mj2-l4,18824
84
+ codex_autorunner/core/flows/transition.py,sha256=AWBhXGh2OPmGSiWZm8Q4HhAEDli0fZHeJanWuz_FpPM,4717
85
+ codex_autorunner/core/flows/ux_helpers.py,sha256=OcnYcFglp-yHPcJuV_DWn6PAP9IRMcGGB_E1W1I5UTc,8060
86
+ codex_autorunner/core/flows/worker_process.py,sha256=C5Y-1Q8jNfW2sg-9FYIpuBDc_MF-FQ8I9ltNc9oaduE,6741
87
+ codex_autorunner/core/ports/__init__.py,sha256=FAfpDuugMaknY8LSIqqGqsfCXgnh3kbBQlux5Z6Xez4,490
88
+ codex_autorunner/core/ports/agent_backend.py,sha256=Y_KBwJ_Wk8P_X7f6YAe7Wb4iplhFfkX9orbHYocqaSc,4403
89
+ codex_autorunner/core/ports/backend_orchestrator.py,sha256=3VZpeW078WqcLJotf5zXArs4O6dU79Kfz3e9iZcgvuc,1113
90
+ codex_autorunner/core/ports/run_event.py,sha256=SK-4e4Ix_tyEWFhZEwXa9L83yMbnyosJqJVSewxOLkE,1509
91
+ codex_autorunner/flows/review/__init__.py,sha256=aUkSaVLBDjgbC72hfIM1t-ZzE0hLWmtjlNjlhJb0ktk,320
92
+ codex_autorunner/flows/review/service.py,sha256=i3Pea2mjnJtAvnFTPlb-3IQLsrU2xG46D7AgIqi85GQ,30838
93
+ codex_autorunner/flows/ticket_flow/__init__.py,sha256=bSji9VcWwd_Ow6hdBlLOlpvoEcieEwcfswJ0DI-SWPA,97
94
+ codex_autorunner/flows/ticket_flow/definition.py,sha256=doUEwnSH3SUYDNNvc1xTV6ltH2ZTGAG-qkCcoiwfBLU,3782
95
+ codex_autorunner/integrations/__init__.py,sha256=_6PZ2Hq6DzApW4d0rrmJY05vftGmHXpHe9SOxq0J2hM,28
96
+ codex_autorunner/integrations/agents/__init__.py,sha256=PRQBqYCdfgMvD6cOXwnhY04TKRhbARTcLxMltmrykTE,515
97
+ codex_autorunner/integrations/agents/backend_orchestrator.py,sha256=WHncbdr7DnD_Wa45Cb51eeIRiGVX3nhsjQFOJMdFgCw,9743
98
+ codex_autorunner/integrations/agents/codex_adapter.py,sha256=V6OtHb3poUB67nrIdnHwnCN4lmUaTFTCfR9XPkRxRDM,3886
99
+ codex_autorunner/integrations/agents/codex_backend.py,sha256=dbpltJbrKi0dnzvhvNkNjK2yEmqEACEJqbrvvjEG2g4,17492
100
+ codex_autorunner/integrations/agents/opencode_adapter.py,sha256=yOG3WfwRborZ6pKgABG7P7W9EG-QkkH3g9-49m_u1oM,4051
101
+ codex_autorunner/integrations/agents/opencode_backend.py,sha256=kSPuAcb2DuZnKyf-0ZFEhLLKLoEQKKA9NKD2qFYpWMs,22307
102
+ codex_autorunner/integrations/agents/runner.py,sha256=vEhukm16JCI3GTTuj6wTDxTaqLzDo78QoqTBemHrf6s,2821
103
+ codex_autorunner/integrations/agents/wiring.py,sha256=27CurKqcRa6aTRho0b6a5JWQWjdPlbIpNz58Mho4jfg,12140
104
+ codex_autorunner/integrations/app_server/__init__.py,sha256=Ro2hRhH9wzxQJThz1Kyo-SADxCFtyF2ZfhHNureykGk,201
105
+ codex_autorunner/integrations/app_server/client.py,sha256=S6zRzbSryU9YrZ3j_1Azu7dO6NQ9ZbY40HuaN_xkoR4,70827
106
+ codex_autorunner/integrations/app_server/env.py,sha256=S0qP_hPFlRL-IHJCoRQoGJBWrkjnngiI4vGRCuimpx4,130
107
+ codex_autorunner/integrations/app_server/event_buffer.py,sha256=t5e6YJ7ZaqoR8p0K95i6q8dfrUQ9sR1lYdMi1jjepZk,7150
108
+ codex_autorunner/integrations/app_server/supervisor.py,sha256=7VAXeyufWRkqHrcaV4JFDknqboE7K3RosU14CFzUhl8,9659
109
+ codex_autorunner/integrations/github/__init__.py,sha256=mLMQATB-B_LbgebPRCdWqUDS-cMxXfuALGh_RsWbWBk,224
110
+ codex_autorunner/integrations/github/service.py,sha256=484jkhg_lnDap0jMatspuMNn04cg7uVqAG2GctF17Co,39015
111
+ codex_autorunner/integrations/telegram/__init__.py,sha256=oAEE1Yb-7Ybgb79NLWqNErkSXOGBJDgcvlI7gfHlpDA,36
112
+ codex_autorunner/integrations/telegram/adapter.py,sha256=YPFLrFxtYu_nfOGEG-dzWcjeWioBsCtG7bzxy1R66l0,56820
113
+ codex_autorunner/integrations/telegram/api_schemas.py,sha256=IXwB17Y4wL0lborU8HHssgNgOtHUJYLoMAcyb3Jv7_8,3402
114
+ codex_autorunner/integrations/telegram/commands_registry.py,sha256=C5T6KeTUq4DmhmSe9FwNRg_kNJWKcYB4hxthVu7MbAQ,3153
115
+ codex_autorunner/integrations/telegram/config.py,sha256=9xp66k479EedIGssi24UIm8EvCAtBuGL_ea4kkmdGEA,32312
116
+ codex_autorunner/integrations/telegram/constants.py,sha256=16-CnkenzOrXAslfFXKYAMBmBUVPltAHfSuBWqq0Eag,6741
117
+ codex_autorunner/integrations/telegram/dispatch.py,sha256=dgh95aYuvveqS7TGvbYHKbtT2RYFx1qGq7mGYyRY2xI,6916
118
+ codex_autorunner/integrations/telegram/doctor.py,sha256=nVAjDg56XE4UZbJVndTqZJLnUyfQ5Itfgv1xntEwFvA,1628
119
+ codex_autorunner/integrations/telegram/helpers.py,sha256=pNO_eViiP20Sac7eOnfp_dcgZBVChABqeBWJ8unU5aw,73490
120
+ codex_autorunner/integrations/telegram/notifications.py,sha256=XvUdRUq5gfD9JA30PclVLrDL5Azw0Sin8Oj0i1fcVx4,23430
121
+ codex_autorunner/integrations/telegram/outbox.py,sha256=U3qve8pTSRakeqMMWgWqkSvL1e7zoz_aWqhLNH2eZEk,13954
122
+ codex_autorunner/integrations/telegram/overflow.py,sha256=LUbPTwA2BxFV1w0sF1XAhIu_ft_eieSVYmjuftiVyO0,5384
123
+ codex_autorunner/integrations/telegram/progress_stream.py,sha256=jphPyvF1ka_ppEK66spAbcSDkEcNNXuJ2Y6p89VC4ks,7756
124
+ codex_autorunner/integrations/telegram/rendering.py,sha256=uBhymMUQuiKJJZ0ZxSl01sC4dYFVJqoIMMMFlm1XGZc,3531
125
+ codex_autorunner/integrations/telegram/retry.py,sha256=GIdMSSCVa2Sjd6-t2FC1O6AwPPSEM342rjjuI1Y7Tpk,1349
126
+ codex_autorunner/integrations/telegram/runtime.py,sha256=V9P93PDl_-DrunkYYheRmvCjqNaaTwhw0D127vb0XFw,10375
127
+ codex_autorunner/integrations/telegram/service.py,sha256=d4zqmAaKCiUlYayyNrLzG2cjOTfqOyBsQPn8WEsjh0A,58395
128
+ codex_autorunner/integrations/telegram/state.py,sha256=y4tvDseDwaYPuYJXQ9P782BqRilkwCltX7Gr2qc5DRM,83841
129
+ codex_autorunner/integrations/telegram/ticket_flow_bridge.py,sha256=wVjoSY9kgFMmk-OTaFFSQU93UQSSfF-7rcU1VengLTY,20895
130
+ codex_autorunner/integrations/telegram/transport.py,sha256=7KDpQZecwxKRbFucXWADiXl8OkizX8OOLt4gnryy0Dw,14711
131
+ codex_autorunner/integrations/telegram/trigger_mode.py,sha256=bDGQUMUbnUNq4u25c-zmBUAOlFvnl5a8YyWgTN2Y8h8,1531
132
+ codex_autorunner/integrations/telegram/types.py,sha256=SjeVaus_YtWz-06GqkSWl99cHTdu0YKd5egdlYY3tMI,1707
133
+ codex_autorunner/integrations/telegram/voice.py,sha256=I3XD-Uc-egA2UVfby210-kCLhL_pBfekyaaGLf359Qs,14784
134
+ codex_autorunner/integrations/telegram/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
+ codex_autorunner/integrations/telegram/handlers/approvals.py,sha256=G8-FwRSyyBs9emb9eJjf4a0kD2rdqnFf25SldfHCKZ4,9365
136
+ codex_autorunner/integrations/telegram/handlers/callbacks.py,sha256=wyF8Kmg69KHpKdlPj1DOhp3EEQ3rZ0sjxHnomApSAKw,3754
137
+ codex_autorunner/integrations/telegram/handlers/commands_runtime.py,sha256=E6BvhegqPmPdCByFa8Mp29DOIOOte6upmm9xC47Gfpg,102158
138
+ codex_autorunner/integrations/telegram/handlers/commands_spec.py,sha256=ulF5GKyaGBNN8pmCkl1jivdqteuOmRXtTXHu2fQbT8U,5325
139
+ codex_autorunner/integrations/telegram/handlers/messages.py,sha256=0i52-o6bpAa_HvvW5tU7NCKg9ECDot507Npe0kjUk-U,31730
140
+ codex_autorunner/integrations/telegram/handlers/questions.py,sha256=GoOZzyYPqOt9jW4T27EzjNUOQrMgf3i3F6fJ6tWILzI,15570
141
+ codex_autorunner/integrations/telegram/handlers/selections.py,sha256=JSg_ihLMkK1L3aH8XPEFbO5EaYY5ZWddwPztkNkA-Wc,25055
142
+ codex_autorunner/integrations/telegram/handlers/utils.py,sha256=T2y-2p1SNduypiNz9uq4zqRIFq47z9Lop6_s3nhUzN8,5317
143
+ codex_autorunner/integrations/telegram/handlers/commands/__init__.py,sha256=NjxemJCRhWUDCP0nacsBfhXMYYUstVotgUhcISTaANU,812
144
+ codex_autorunner/integrations/telegram/handlers/commands/approvals.py,sha256=uQsGQtSPjXZ5FyNldvVsZDImEI-G-YOMUwhlnth2wlc,6632
145
+ codex_autorunner/integrations/telegram/handlers/commands/execution.py,sha256=BgHwY6efXY-x7QKxzGlTGyKBubKoBAygO7phLndg5JI,104903
146
+ codex_autorunner/integrations/telegram/handlers/commands/files.py,sha256=xghRc6jF8iZoYxnOZY1h9wO08vLf72JcIcvRetfGQOU,50701
147
+ codex_autorunner/integrations/telegram/handlers/commands/flows.py,sha256=zKEVt8Q55dgDC4qFpVM1QpAbZJLapFD1c1dkFDlqsec,53706
148
+ codex_autorunner/integrations/telegram/handlers/commands/formatting.py,sha256=WRJDe2jUtrGMFVsp2Hah1GDsfQUV0Dd0KLSbcrY0j0o,3139
149
+ codex_autorunner/integrations/telegram/handlers/commands/github.py,sha256=IKWKYttLqUei5NCzjIIqvGBcFpRBffdfvTwSMzPHzWo,68888
150
+ codex_autorunner/integrations/telegram/handlers/commands/shared.py,sha256=Lam8f76yQGkTBsr0QpawOBU_eIjch8C4NzW6ifSd0sQ,6581
151
+ codex_autorunner/integrations/telegram/handlers/commands/voice.py,sha256=y06N3ju4RjI1Y4r69Os-2BcR6erHjXyGOkoiLWepS0k,3955
152
+ codex_autorunner/integrations/telegram/handlers/commands/workspace.py,sha256=w8LYnUJ0XX4VNmN0jkpGgbksyilliOBNQg71qiA24CE,81418
153
+ codex_autorunner/routes/__init__.py,sha256=c8w_wt0V051zbHnI9WG3HieblE_2HivnboGux25oLQA,505
154
+ codex_autorunner/routes/agents.py,sha256=0mrfZk4I3m0ESgD22n-hyPrSMWlrzgC-WhXqRIci1r8,103
155
+ codex_autorunner/routes/analytics.py,sha256=OPyGeqZVb0bDleUiAovfAOuYEpKwUNEbmC3Zhbd6_ds,110
156
+ codex_autorunner/routes/app_server.py,sha256=mWMpx9SzuxuqlXvEGS3_ew874i8QnXRAjb4ApOFkB2o,112
157
+ codex_autorunner/routes/base.py,sha256=A0itiLKieDNxo7N2SX2vX4Vf5aIatnDUIkXnlj08gy4,100
158
+ codex_autorunner/routes/file_chat.py,sha256=t2mUC7FJyyYX61i_zQ6M3xvgGpodWe-uB9sHGhZEd7E,151
159
+ codex_autorunner/routes/flows.py,sha256=DWc8xypej8xckLFqm9-qJMOGltncYS44hA2z-xlwPPM,134
160
+ codex_autorunner/routes/messages.py,sha256=IUn6B3KfPxw6dZ_8Yclc6kWtyzRJTBofxLizVCR0qX0,146
161
+ codex_autorunner/routes/repos.py,sha256=GuoriAMRGIzp77AqSK-s09RfzJEG1hDhYjyqq62rNjY,101
162
+ codex_autorunner/routes/review.py,sha256=vka1UJoMPL11OcftGCIHKRSaYYRHf1GKS1a37U2dxQY,104
163
+ codex_autorunner/routes/sessions.py,sha256=oXcKezZ1CTlOMz4bF1lOhFogYi1msbgmrpoUj_KmyXI,107
164
+ codex_autorunner/routes/settings.py,sha256=udTlhq0iFVloQz0C4bNTB7PQvMZRKeL9XP122Mp41_Q,108
165
+ codex_autorunner/routes/shared.py,sha256=abxEaPZOgPMGZmYJxkN3Vqlm1-lE79FkM9VAvzpB-RU,113
166
+ codex_autorunner/routes/system.py,sha256=sDPU0W0XxMvPKsqUfNfryN7dTp3QNjE1d6awhsVrUIU,139
167
+ codex_autorunner/routes/usage.py,sha256=XbPzqbQdPMlpley43IqGCeAZ0VzQ-7Da9A2dLhpmf0Q,102
168
+ codex_autorunner/routes/voice.py,sha256=1Ce6A2NojspaJQ_TodOsdZRyodn4E-gDPkVnwe_rQi0,102
169
+ codex_autorunner/routes/workspace.py,sha256=j_-z5kSU5pMC2obOyqJj4HYW35pquVwy7swBQBDflk4,110
170
+ codex_autorunner/static/agentControls.js,sha256=VzLpWzG7tWak9f3_heLuL6HAobpiH6GhPRku_eciVSo,13119
171
+ codex_autorunner/static/agentEvents.js,sha256=HAQHeKJnOqj6IkcBEM1ye5p6rcIjK9c9LZfBWKowonw,8188
172
+ codex_autorunner/static/app.js,sha256=NuHkyIkgYrCPo_H9xLW99Dr9rBc9BaM7IGdEJCAVfWA,4209
173
+ codex_autorunner/static/archive.js,sha256=OsdQ_OwOiSsA1mDPtPO_fEUuVZ0XsDGfE20Ddnd7RII,31544
174
+ codex_autorunner/static/archiveApi.js,sha256=da5envEoMUK0WF_iQScWjUhEeQPaCilsGGbWNyK_MnA,1622
175
+ codex_autorunner/static/autoRefresh.js,sha256=8nsJmnIpD1Ga02kdUIFNAA3Z3-lw-7kLJMjR4Ve0aE8,6694
176
+ codex_autorunner/static/bootstrap.js,sha256=ZXzMfDMjiC5ReOrDbv9lqSBaTZQlM7eqEAJ4IKPhm5s,4833
177
+ codex_autorunner/static/bus.js,sha256=NXuNHd_43Irr-5Ood1LQ15rSwCTm5J_Pv9ybnkeGQM0,630
178
+ codex_autorunner/static/cache.js,sha256=idp3ISlRKjSK_eSRUmL_rWGI2qx7g-BJ1_48Mz6IWSw,1035
179
+ codex_autorunner/static/constants.js,sha256=TuLK0-_WKJVE5uJUeTl_CVtD5laEtTjtTnu0Uv2eIFw,1932
180
+ codex_autorunner/static/dashboard.js,sha256=15gI7rxhtG6Ngnw_N9iNHSkALkaaGRIYCYoqEJxwOe4,30749
181
+ codex_autorunner/static/diffRenderer.js,sha256=AVeJ6yt8UBk6yQJWV6VCIsH9TIY5CYTCjNFD8uOWQ9U,1307
182
+ codex_autorunner/static/docChatCore.js,sha256=XJW4LzojwfMITuw0QictzDQBL3Pu_y8LM71r6Pr3USc,13540
183
+ codex_autorunner/static/docChatStorage.js,sha256=OgPiNgvPVVp0kJcCVy-ILjMSo5--keyrIleWacA-k6A,2104
184
+ codex_autorunner/static/docChatVoice.js,sha256=YrKIf0INTke3ge9uDHLl_Fd3wFcISGyjJlQU-iyhAlU,2419
185
+ codex_autorunner/static/docEditor.js,sha256=w2AqcQEGIkRut2xpRiFG4ndxccv0THoh3ZdwFw2YM6s,4580
186
+ codex_autorunner/static/env.js,sha256=3-XgQC03WqalAg_T8dabn47uSKS7lPM874OzV7ET5jU,1813
187
+ codex_autorunner/static/eventSummarizer.js,sha256=PuLdLS9MIVrp97W47iAlEf8TFLNTHCigT2clYCH2sZg,5425
188
+ codex_autorunner/static/fileChat.js,sha256=NDuXXD35fVK2qxwQ9e1fAXMfy2WhIsq-L8BzIlyKOHA,5838
189
+ codex_autorunner/static/health.js,sha256=nwB-Ofc96zTP6YLQDaIJfO7duLug9bj3CCe893M7x1I,5204
190
+ codex_autorunner/static/hub.js,sha256=s5K7GBccL5dd2VKtr7GQI268r4K1mj1yQJ9w90OGbMo,50255
191
+ codex_autorunner/static/index.html,sha256=WXvgxZG0ntBpIqiIIBm0nChuKUNH18bBuOb7CDbswAw,50217
192
+ codex_autorunner/static/liveUpdates.js,sha256=SiVWPQRp-mqmmhRqOQWPFtMBLUA89J1KYvif88ZCMOk,1950
193
+ codex_autorunner/static/loader.js,sha256=2Xyg_D43sSsH3fmm93-utyPJJSQ7KpvebbhNrM79ljo,1065
194
+ codex_autorunner/static/messages.js,sha256=wrJxDqFSPkD8mtoKFPEHcvMstVntN66tkqi3On-HG7o,32288
195
+ codex_autorunner/static/mobileCompact.js,sha256=cDXLGeFLj5_knH-9qOXfbR5IXjCttyQ3-jclL4k1ouo,9473
196
+ codex_autorunner/static/preserve.js,sha256=cOB-kcPQPHYDZqwkJFi69n6LhT51BHNWGL6zLRPsJyM,437
197
+ codex_autorunner/static/settings.js,sha256=Q_jaK_9YFVps3foZApGOu7Yn4bRLRzqXzsvQfYLp1TM,9834
198
+ codex_autorunner/static/smartRefresh.js,sha256=0BovWNSXgeqkcawiF0JfZf7Zu81Nqr2Ni4qCj0EeJ6I,1713
199
+ codex_autorunner/static/styles.css,sha256=uvrcKbGmSBoAdxKVHBIupMr261vf1OW0FmL1ItRA6w4,210911
200
+ codex_autorunner/static/tabs.js,sha256=SgebpOJIxzkD307VQ1NmXBpLY40b1g8RvNIcf2fmVlI,8429
201
+ codex_autorunner/static/terminal.js,sha256=EEnwfA8rcOt1vOQngXdOTpymdqsYoBA-XPmFoksaHcs,1621
202
+ codex_autorunner/static/terminalManager.js,sha256=_KqMvFqCq3t5St_Bxl7pC8w9KAvOth9InT56hUSnZxc,139493
203
+ codex_autorunner/static/ticketChatActions.js,sha256=dH0h7CdCbEHr94aUQI-jxkLLoXw6_eoNeNhpcOWR0Ck,11862
204
+ codex_autorunner/static/ticketChatEvents.js,sha256=9Y1CA4t--bxqXRHrsE4O4Dx5Td9KAFAAZwLXXj_y1yM,536
205
+ codex_autorunner/static/ticketChatStorage.js,sha256=lEg2zKJfEA34ZS0azwCmGPW8CPpX3wqCmyNcCafP9Yw,621
206
+ codex_autorunner/static/ticketChatStream.js,sha256=yotrAXNI4FXbJFGuiLgVcYXDs3KU4GaNmQdwrECGPrk,9432
207
+ codex_autorunner/static/ticketEditor.js,sha256=uL7PjXtBE6IKw9BSMKnSSPMRlt3m8LdbKmd3sOvso2U,29973
208
+ codex_autorunner/static/ticketVoice.js,sha256=CVRumgn6kc9uwEqvRxh5bdHx4C1DTOv-SEP_fJgeLxM,320
209
+ codex_autorunner/static/tickets.js,sha256=Y0NePyenqZKxaIPbGGxPDAAz0sv-wlIHxvIqfoYPX9Y,77393
210
+ codex_autorunner/static/utils.js,sha256=pIoc5NNeuGNKNMn53RLh2oYRvil8JIqK6wkFxkzgTgE,22306
211
+ codex_autorunner/static/voice.js,sha256=QfQvDQK-AkyO1nNtYxq04dKolfyWHiLHG5uihGV9hpU,20209
212
+ codex_autorunner/static/workspace.js,sha256=lskhBJZquG4HAOmHD23McgRIJo1KoaiqxCk4IobFIM0,29778
213
+ codex_autorunner/static/workspaceApi.js,sha256=kZ79wHLBocaoFQwMN09XoQ8HM2rBKucqa_NQx5FPOlM,2015
214
+ codex_autorunner/static/workspaceFileBrowser.js,sha256=0EAn4aKO34vqKLYNZhuLq9ODg8GCy9PR9yoY8dtaN-o,20858
215
+ codex_autorunner/static/vendor/LICENSE.xterm,sha256=R1kKvILKKMOnUg07hzusejoAsCy8Mik-HxQdzNJpgIc,1186
216
+ codex_autorunner/static/vendor/xterm-addon-fit.js,sha256=EPMZTF8XwXhvt9XbhlweyFObZzajGAY_04var3xGhI8,1503
217
+ codex_autorunner/static/vendor/xterm.css,sha256=gy8_LGA7Q61DUf8ElwFQzHqHMBQnbbEmpgZcbdgeSHI,5383
218
+ codex_autorunner/static/vendor/xterm.js,sha256=8K6g919IVZATrmZDwked1zfSbaQtVSTm0rcJFa5lI8c,283404
219
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-cyrillic-ext.woff2,sha256=k0PeLKXZVJ95LnliN1r477DzIMdkO_02yIS1ow5cOW8,1664
220
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-cyrillic.woff2,sha256=SZWppDrGWewy_Ni0Y3Vc1qB7Mabms4lKahU7Zhz0kOI,8892
221
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-greek.woff2,sha256=ScPabJorJ5sPH4YPXPsfXcONiKXHvpybGDe7xOPbYRE,6800
222
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-latin-ext.woff2,sha256=nDjLLQ0tk8HubiH6eNt28T6n4V4VzGQhTHyom2qqNcQ,11596
223
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-latin.woff2,sha256=LDK5s-41jBGeIQ9vUZX5vTSJTXinhf8uldYOcY5ACvQ,31340
224
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-vietnamese.woff2,sha256=1E6xk2BDpWA46wLdcLJD83m-9leD-U7BLyd1UHIEEfE,5872
225
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-cyrillic-ext.woff2,sha256=k0PeLKXZVJ95LnliN1r477DzIMdkO_02yIS1ow5cOW8,1664
226
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-cyrillic.woff2,sha256=SZWppDrGWewy_Ni0Y3Vc1qB7Mabms4lKahU7Zhz0kOI,8892
227
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-greek.woff2,sha256=ScPabJorJ5sPH4YPXPsfXcONiKXHvpybGDe7xOPbYRE,6800
228
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-latin-ext.woff2,sha256=nDjLLQ0tk8HubiH6eNt28T6n4V4VzGQhTHyom2qqNcQ,11596
229
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-latin.woff2,sha256=LDK5s-41jBGeIQ9vUZX5vTSJTXinhf8uldYOcY5ACvQ,31340
230
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-vietnamese.woff2,sha256=1E6xk2BDpWA46wLdcLJD83m-9leD-U7BLyd1UHIEEfE,5872
231
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-cyrillic-ext.woff2,sha256=k0PeLKXZVJ95LnliN1r477DzIMdkO_02yIS1ow5cOW8,1664
232
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-cyrillic.woff2,sha256=SZWppDrGWewy_Ni0Y3Vc1qB7Mabms4lKahU7Zhz0kOI,8892
233
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-greek.woff2,sha256=ScPabJorJ5sPH4YPXPsfXcONiKXHvpybGDe7xOPbYRE,6800
234
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-latin-ext.woff2,sha256=nDjLLQ0tk8HubiH6eNt28T6n4V4VzGQhTHyom2qqNcQ,11596
235
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-latin.woff2,sha256=LDK5s-41jBGeIQ9vUZX5vTSJTXinhf8uldYOcY5ACvQ,31340
236
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-vietnamese.woff2,sha256=1E6xk2BDpWA46wLdcLJD83m-9leD-U7BLyd1UHIEEfE,5872
237
+ codex_autorunner/static/vendor/fonts/jetbrains-mono/OFL.txt,sha256=p2q_ACxJCX0UboZ0CjEFpdAEULFZLoIKEQmoxWgM1pc,4399
238
+ codex_autorunner/surfaces/__init__.py,sha256=qZrxvu7IX7s-SgSSIugNSc1JBE566tYz0zCX0hDhoUs,117
239
+ codex_autorunner/surfaces/cli/__init__.py,sha256=TPjzXRVfCb4BIDdNkHovX9nhW31VGTQGy7V7oYvEVF4,211
240
+ codex_autorunner/surfaces/cli/cli.py,sha256=eblZyhwYmZrxEcvaFZFeMHzc8RzrxqTyJQrA4KwYwEU,44641
241
+ codex_autorunner/surfaces/cli/codex_cli.py,sha256=4DJIaw63ohYlxsXWTG7Ikux8_zwgWYOyQqXtRWE7rMc,386
242
+ codex_autorunner/surfaces/telegram/__init__.py,sha256=esNRNjA4D3fsYSNsR-x2C18iUQpnyYWY0CQT7hrUx3k,66
243
+ codex_autorunner/surfaces/web/__init__.py,sha256=fDDDTYL26__wwaWd7xtI6axymkOgYntcrlHeHptDb8I,29
244
+ codex_autorunner/surfaces/web/app.py,sha256=t9rNDzuaaLUx7B0Xe8J2HqDXYu5g7Dj4PdakRGOH2Lo,79037
245
+ codex_autorunner/surfaces/web/hub_jobs.py,sha256=L_ba698fms2YdlZLUl6erLha-_-t3MJE5jsL9JcP3pw,6059
246
+ codex_autorunner/surfaces/web/middleware.py,sha256=4mh4EikDLWWByLx3O5nQvMcqHOUFpORrNSWagHWLweE,21455
247
+ codex_autorunner/surfaces/web/pty_session.py,sha256=K1_hJFYy-xh90o1hDezmsC3euP7ifsgHMzAg1E9HZA8,12791
248
+ codex_autorunner/surfaces/web/review.py,sha256=70KXs1-b15f1CXuRfWHgHpriHzcyPbpMkEFY25AOzNo,166
249
+ codex_autorunner/surfaces/web/runner_manager.py,sha256=pbkc13vCQ0Ycg0WcYvfzCJbbi6g_IOInaztjAZdQMRQ,648
250
+ codex_autorunner/surfaces/web/schemas.py,sha256=tnV_89jYDdeBz52RS8qlxEaESJ-e-2bWdPZB15sY0ZQ,9501
251
+ codex_autorunner/surfaces/web/static_assets.py,sha256=Mo0FJ0ALM-NlUpkWJIMKC2Vq5JX6ZeOe3w_h_VK5uys,15178
252
+ codex_autorunner/surfaces/web/static_refresh.py,sha256=Rv40lPd3eRDqcwnF6CXlwRaV5kNPkcXund7zjY7YqGM,3145
253
+ codex_autorunner/surfaces/web/terminal_sessions.py,sha256=uol4tWorQ-EcJHLWNS6MQb8otpGFR1CaXuzutGMOgO0,2651
254
+ codex_autorunner/surfaces/web/routes/__init__.py,sha256=K5yCrvwECOMjOeB_zhVfEkYo8pXyTCDDcSTNlnG_j-M,2964
255
+ codex_autorunner/surfaces/web/routes/agents.py,sha256=w3yC3KxNMy16015YFS9FNRLLiIq9CvFM7culln7ByqA,5541
256
+ codex_autorunner/surfaces/web/routes/analytics.py,sha256=TkOSd3gsv2LggHl00a9t8o901J94uPqsX6VRwT_t4wQ,9435
257
+ codex_autorunner/surfaces/web/routes/app_server.py,sha256=vPy0nsw7wqQpK_4Iquffa6Aox4ksuyBx1hHfvrek040,5351
258
+ codex_autorunner/surfaces/web/routes/archive.py,sha256=IjYtIi0P_WucFxppoqRLnSuFaFcclSKx9kiDnAbJ5vU,12514
259
+ codex_autorunner/surfaces/web/routes/base.py,sha256=JV8kpXuaPkoJh9DBq--k9CdEM2VZwqfBDTEUE8EqGRg,26662
260
+ codex_autorunner/surfaces/web/routes/file_chat.py,sha256=PTUDrhu6IOS6eEVSRydDARizPlH_LZfIldhSw6Sne1g,29843
261
+ codex_autorunner/surfaces/web/routes/flows.py,sha256=wav4K9RhR29GEK7PCVWB0PpPXej3TtYH5WCg9TRh9bc,42813
262
+ codex_autorunner/surfaces/web/routes/messages.py,sha256=qa9b1R8WGYsZCidy43qCocogeQ1g6pH1mKdAsJbvJlU,16643
263
+ codex_autorunner/surfaces/web/routes/repos.py,sha256=P1Yr8t19edAEUT9GHefU56dfvv7SbS0mqdmEp6-teP0,7999
264
+ codex_autorunner/surfaces/web/routes/review.py,sha256=kFUxZ27PSc89VR1V4-2m6iyL5EbTJ5TV60WmAnKKccY,5510
265
+ codex_autorunner/surfaces/web/routes/sessions.py,sha256=TdUdMFp8AWJJ2GQpNUvHN9SJ2kFTpTFFITWWXmKcixA,6535
266
+ codex_autorunner/surfaces/web/routes/settings.py,sha256=uqSGmXp_jdrKnwMsJ_hYp18beTzKQULeTNE5nicAXVk,7347
267
+ codex_autorunner/surfaces/web/routes/shared.py,sha256=Lwv0hex39ZgsHX22BI0uXdrnhBOAkolVbp5EYr6l7Q8,9159
268
+ codex_autorunner/surfaces/web/routes/system.py,sha256=fvU-5umRh8bxgdiNmfs_5ObUGibMLHqDQpvasU-0m80,7580
269
+ codex_autorunner/surfaces/web/routes/terminal_images.py,sha256=0wNAIHRcN_iIzeXuVN6nqe9E7OYEoQ6C84Tcx93r1XI,3299
270
+ codex_autorunner/surfaces/web/routes/usage.py,sha256=p4olpgUXSbV7Nn4DQPZPYCxPNzmFQdC_5gUYUSPMJuU,2737
271
+ codex_autorunner/surfaces/web/routes/voice.py,sha256=sfws5BPrz9GWH_CEqrtNgO0H4wV1Ys-FNQSH5okQ_os,4858
272
+ codex_autorunner/surfaces/web/routes/workspace.py,sha256=nbBUXX35h6QI0HkC0SLliDj1v43pKFBoWsqojylg0lA,11258
273
+ codex_autorunner/tickets/__init__.py,sha256=2_OD0c3RHdRgCoi-T5Xacw9_gKqu5BBbUxQRMTZgsNw,607
274
+ codex_autorunner/tickets/agent_pool.py,sha256=HCSx5d982izWd1jUmC8RlAbWzgTkIXHKoecqioZvkio,16209
275
+ codex_autorunner/tickets/files.py,sha256=xTITpvXRC5gC8jFrioQ4B_Qg0CppH9NDkDe2NGKdoPs,2622
276
+ codex_autorunner/tickets/frontmatter.py,sha256=zsv6Y-csjpL_jtzNPk3d34oOqrg-6EjnAlN98BEtF_g,1547
277
+ codex_autorunner/tickets/lint.py,sha256=6vKPWMqbBvJ0fPJqBZGWo0aIsoYckceMjdVIzREUxMI,2873
278
+ codex_autorunner/tickets/models.py,sha256=YFBd8rid2RCHusa-V8DliMBWhXhSOOJ33SozSxRnEO0,2704
279
+ codex_autorunner/tickets/outbox.py,sha256=30_Jxns2JMo9eia3kM2ZYDHA9emkdKt98JlD19A9HLQ,7072
280
+ codex_autorunner/tickets/replies.py,sha256=R_eeg55s8dQ4VBcIpjPI1up4jCQvG8l_c0uV4LUa5Gs,4841
281
+ codex_autorunner/tickets/runner.py,sha256=bBZtNjE38Wz2kLc9eoS5YlP_JvSRNygnLaBxrkWpiU0,36922
282
+ codex_autorunner/tickets/spec_ingest.py,sha256=PmCYdGFeKVN6C9tae3j1zt8WXvISunlFpVHimycaMpo,2507
283
+ codex_autorunner/voice/__init__.py,sha256=Z2ziy5TP4NCgNi4xld1FfRIbSJL9hpgkggYhbEtGOgQ,991
284
+ codex_autorunner/voice/capture.py,sha256=UzvQvu3KaKpL4RoyXT-mq24uohAXvHIZ8vi6wObEJgQ,11435
285
+ codex_autorunner/voice/config.py,sha256=BZAq90KS6aLLFto653a-PYj8Aq6b5Ty_UBBFhcrzvw0,6285
286
+ codex_autorunner/voice/provider.py,sha256=zvNVuvsrZfM4bj3N2xzEgTtQ78YGWcdjUW9fJK6Ziog,1750
287
+ codex_autorunner/voice/resolver.py,sha256=EC1AtmIrwRQBQE_hwreLgKhUtvzZ9Tg5vu8_MNIXES4,1130
288
+ codex_autorunner/voice/service.py,sha256=_kVyuB_3928BbGHrAqF28N_nCfKPLB6K9ilG79wyzl0,9052
289
+ codex_autorunner/voice/providers/__init__.py,sha256=L37XCpAHluK83m62y0_I0KGkiCdu1Keml02gS_g2Brc,200
290
+ codex_autorunner/voice/providers/openai_whisper.py,sha256=HCK_GMmYFoZ4EcneGsjr4_P9JzblRO8AOguVD5pOcLk,11973
291
+ codex_autorunner/web/__init__.py,sha256=wKC_eHatQaY4LdIYJzywiFdtNwOOghbKfsdRZdf5DBY,200
292
+ codex_autorunner/web/app.py,sha256=GY2v8xP1zW9HXnbePvZVruNy2Kntk6WW2Bu0QCCwdN4,92
293
+ codex_autorunner/web/hub_jobs.py,sha256=gxWUcENl_wlG6rytQoeEH-4wU4jxqCEQ6elsNFuXQzc,101
294
+ codex_autorunner/web/middleware.py,sha256=h2cXCErMuMdalnVj22N0cXSjY2y-7L4f8xj8B-v3I80,106
295
+ codex_autorunner/web/pty_session.py,sha256=yLzWXYS7J76VwUEIyvisUezaa3s0CJZ-7JWmrCUClZs,108
296
+ codex_autorunner/web/runner_manager.py,sha256=semh-u1DoOb84o6PVw3vFWWfrjPo4pSecFdAwSa5X_w,114
297
+ codex_autorunner/web/schemas.py,sha256=n-44_A8E-WgYg1c0IUm2wZRtfEUs7NwTiC4ZF__XbO8,99
298
+ codex_autorunner/web/static_assets.py,sha256=zvZ9Pr1YETsWfEkHi4zdOS_-2AD4aSvgmaNA5zc6UNc,160
299
+ codex_autorunner/web/static_refresh.py,sha256=4QY5FK5T8ymsBIuSeuLWcx9yXL8LyO4Usc7Rhjs3N4Q,114
300
+ codex_autorunner/web/terminal_sessions.py,sha256=8Pa4gKd-ZUjwqEDUInAgEPRP14CouBEZqgvXRKzNjEg,119
301
+ codex_autorunner/workspace/__init__.py,sha256=yTql6_7BVZG0tirPMhbmMEVkk_j7Q8Wvb89eIZ0K7o8,977
302
+ codex_autorunner/workspace/paths.py,sha256=mScZQpKPyFYvxEmyr_51PfWP_7aTAWkRT4AZWqGnME4,10785
303
+ codex_autorunner-1.1.0.dist-info/licenses/LICENSE,sha256=gfYghezUeimFKy0hTmkOiAAwBY_QdRSXDTypbMtZU0k,1068
304
+ codex_autorunner-1.1.0.dist-info/METADATA,sha256=V4ximj_lUt9K-aHHFrdDKXdE9Cupf8i_ZGzzXt6RDtQ,8380
305
+ codex_autorunner-1.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
306
+ codex_autorunner-1.1.0.dist-info/entry_points.txt,sha256=iPTzENG1MGBhxWF4x8W7VWk3iq4XurmGXMnIch7AVTs,93
307
+ codex_autorunner-1.1.0.dist-info/top_level.txt,sha256=fc2h9rEENr-ZdyLemPJbMcWmsWlz4JuyD1UOkPLLVSQ,17
308
+ codex_autorunner-1.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.1)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,292 +0,0 @@
1
- """Centralized approval and sandbox policy mappings for Codex and OpenCode agents."""
2
-
3
- from dataclasses import dataclass
4
- from typing import Any, Optional, Union
5
-
6
- # ========================================================================
7
- # Approval Policies
8
- # ========================================================================
9
-
10
-
11
- class ApprovalPolicy:
12
- """Canonical approval policy values for both Codex and OpenCode."""
13
-
14
- NEVER = "never"
15
- ON_FAILURE = "on-failure"
16
- ON_REQUEST = "on-request"
17
- UNTRUSTED = "untrusted"
18
-
19
- ALL_VALUES = {NEVER, ON_FAILURE, ON_REQUEST, UNTRUSTED}
20
-
21
-
22
- # ========================================================================
23
- # Sandbox Policies (Codex)
24
- # ========================================================================
25
-
26
-
27
- class SandboxPolicy:
28
- """Canonical sandbox policy values for Codex app-server."""
29
-
30
- DANGER_FULL_ACCESS = "dangerFullAccess"
31
- READ_ONLY = "readOnly"
32
- WORKSPACE_WRITE = "workspaceWrite"
33
- EXTERNAL_SANDBOX = "externalSandbox"
34
-
35
- ALL_VALUES = {
36
- DANGER_FULL_ACCESS,
37
- READ_ONLY,
38
- WORKSPACE_WRITE,
39
- EXTERNAL_SANDBOX,
40
- }
41
-
42
-
43
- # ========================================================================
44
- # Permission Policies (OpenCode)
45
- # ========================================================================
46
-
47
-
48
- class PermissionPolicy:
49
- """Canonical permission policy values for OpenCode."""
50
-
51
- ALLOW = "allow"
52
- DENY = "deny"
53
- ASK = "ask"
54
-
55
- ALL_VALUES = {ALLOW, DENY, ASK}
56
-
57
-
58
- # ========================================================================
59
- # Data Classes
60
- # ========================================================================
61
-
62
-
63
- @dataclass
64
- class SandboxPolicyConfig:
65
- """Configuration for Codex sandbox policies."""
66
-
67
- policy: Union[str, dict[str, Any]]
68
- """Either a string policy type or full policy dict with type and options."""
69
-
70
-
71
- @dataclass
72
- class PolicyMapping:
73
- """Unified policy mapping for both Codex and OpenCode agents."""
74
-
75
- approval_policy: str
76
- sandbox_policy: Union[str, dict[str, Any]]
77
- permission_policy: Optional[str] = None
78
-
79
-
80
- # ========================================================================
81
- # Normalization Functions
82
- # ========================================================================
83
-
84
-
85
- def normalize_approval_policy(policy: Optional[str]) -> str:
86
- """Normalize approval policy to canonical value.
87
-
88
- Args:
89
- policy: Approval policy string (case-insensitive, various aliases accepted).
90
-
91
- Returns:
92
- Canonical approval policy value.
93
-
94
- Raises:
95
- ValueError: If policy is not a recognized value.
96
- """
97
- if policy is None:
98
- return ApprovalPolicy.NEVER
99
-
100
- if not isinstance(policy, str):
101
- raise ValueError(f"Invalid approval policy: {policy!r}")
102
-
103
- normalized = policy.strip()
104
- if not normalized:
105
- raise ValueError(f"Invalid approval policy: {policy!r}")
106
-
107
- normalized = normalized.lower()
108
-
109
- # Aliases for never
110
- if normalized in ("never", "no", "false", "0"):
111
- return ApprovalPolicy.NEVER
112
-
113
- # Aliases for on-failure
114
- if normalized in (
115
- "on-failure",
116
- "on_failure",
117
- "onfailure",
118
- "fail",
119
- "failure",
120
- ):
121
- return ApprovalPolicy.ON_FAILURE
122
-
123
- # Aliases for on-request
124
- if normalized in ("on-request", "on_request", "onrequest", "ask", "prompt"):
125
- return ApprovalPolicy.ON_REQUEST
126
-
127
- # Aliases for untrusted
128
- if normalized in (
129
- "untrusted",
130
- "unlesstrusted",
131
- "unless-trusted",
132
- "unless trusted",
133
- "auto",
134
- ):
135
- return ApprovalPolicy.UNTRUSTED
136
-
137
- raise ValueError(
138
- f"Invalid approval policy: {policy!r}. "
139
- f"Valid values: {', '.join(sorted(ApprovalPolicy.ALL_VALUES))}"
140
- )
141
-
142
-
143
- def normalize_sandbox_policy(policy: Optional[Any]) -> Union[str, dict[str, Any]]:
144
- """Normalize sandbox policy to canonical value.
145
-
146
- Args:
147
- policy: Sandbox policy (string or dict with 'type' field).
148
-
149
- Returns:
150
- Normalized sandbox policy as string or dict.
151
- """
152
- if policy is None:
153
- return SandboxPolicy.DANGER_FULL_ACCESS
154
-
155
- # If it's a dict, normalize the type field
156
- if isinstance(policy, dict):
157
- policy_value = policy.copy()
158
- type_value = policy_value.get("type")
159
- if isinstance(type_value, str):
160
- policy_value["type"] = normalize_sandbox_policy_type(type_value)
161
- return policy_value
162
-
163
- # If it's a string, wrap in dict structure
164
- if isinstance(policy, str):
165
- normalized_type = normalize_sandbox_policy_type(policy)
166
- return {"type": normalized_type}
167
-
168
- # For other types, convert to string and wrap
169
- return {"type": SandboxPolicy.DANGER_FULL_ACCESS}
170
-
171
-
172
- def normalize_sandbox_policy_type(raw: str) -> str:
173
- """Normalize sandbox policy type string to canonical value.
174
-
175
- Args:
176
- raw: Sandbox policy type string (case-insensitive).
177
-
178
- Returns:
179
- Canonical sandbox policy type.
180
- """
181
- if not raw:
182
- return SandboxPolicy.DANGER_FULL_ACCESS
183
-
184
- # Normalize case and remove special characters
185
- import re
186
-
187
- cleaned = re.sub(r"[^a-zA-Z0-9]+", "", raw.strip())
188
- if not cleaned:
189
- return SandboxPolicy.DANGER_FULL_ACCESS
190
-
191
- canonical = _SANDBOX_POLICY_CANONICAL.get(cleaned.lower())
192
- return canonical or raw.strip()
193
-
194
-
195
- _SANDBOX_POLICY_CANONICAL = {
196
- "dangerfullaccess": SandboxPolicy.DANGER_FULL_ACCESS,
197
- "readonly": SandboxPolicy.READ_ONLY,
198
- "workspacewrite": SandboxPolicy.WORKSPACE_WRITE,
199
- "externalsandbox": SandboxPolicy.EXTERNAL_SANDBOX,
200
- }
201
-
202
-
203
- # ========================================================================
204
- # Mapping Functions
205
- # ========================================================================
206
-
207
-
208
- def map_approval_to_permission(
209
- approval_policy: Optional[str], *, default: str = PermissionPolicy.ALLOW
210
- ) -> str:
211
- """Map approval policy to OpenCode permission policy.
212
-
213
- This maps Codex-style approval policies to OpenCode-style permission policies.
214
-
215
- Args:
216
- approval_policy: Codex approval policy.
217
- default: Default permission if policy is None or unrecognized.
218
-
219
- Returns:
220
- OpenCode permission policy (allow/deny/ask).
221
- """
222
- if approval_policy is None:
223
- return default
224
-
225
- try:
226
- normalized = normalize_approval_policy(approval_policy)
227
- except ValueError:
228
- # Invalid policy, return default
229
- return default
230
-
231
- # Direct matches
232
- if normalized == ApprovalPolicy.NEVER:
233
- return PermissionPolicy.ALLOW
234
- if normalized == ApprovalPolicy.ON_FAILURE:
235
- return PermissionPolicy.ASK
236
- if normalized == ApprovalPolicy.ON_REQUEST:
237
- return PermissionPolicy.ASK
238
- if normalized == ApprovalPolicy.UNTRUSTED:
239
- return PermissionPolicy.ASK
240
-
241
- return default
242
-
243
-
244
- def build_codex_sandbox_policy(
245
- sandbox_mode: Optional[str],
246
- *,
247
- repo_root: Optional[Any] = None,
248
- network_access: bool = False,
249
- ) -> Union[str, dict[str, Any]]:
250
- """Build Codex sandbox policy from mode string.
251
-
252
- Args:
253
- sandbox_mode: Sandbox mode string.
254
- repo_root: Repository root path (for workspaceWrite policy).
255
- network_access: Whether to allow network access (for workspaceWrite).
256
-
257
- Returns:
258
- Sandbox policy string or dict.
259
- """
260
- if not sandbox_mode:
261
- return SandboxPolicy.DANGER_FULL_ACCESS
262
-
263
- normalized_mode = normalize_sandbox_policy_type(sandbox_mode)
264
-
265
- # workspaceWrite requires dict structure with writableRoots and networkAccess
266
- if normalized_mode == SandboxPolicy.WORKSPACE_WRITE and repo_root is not None:
267
- return {
268
- "type": SandboxPolicy.WORKSPACE_WRITE,
269
- "writableRoots": [str(repo_root)],
270
- "networkAccess": network_access,
271
- }
272
-
273
- # Other modes can be simple strings
274
- return normalized_mode
275
-
276
-
277
- # ========================================================================
278
- # Exports
279
- # ========================================================================
280
-
281
- __all__ = [
282
- "ApprovalPolicy",
283
- "SandboxPolicy",
284
- "PermissionPolicy",
285
- "SandboxPolicyConfig",
286
- "PolicyMapping",
287
- "normalize_approval_policy",
288
- "normalize_sandbox_policy",
289
- "normalize_sandbox_policy_type",
290
- "map_approval_to_permission",
291
- "build_codex_sandbox_policy",
292
- ]