codex-autorunner 1.2.1__py3-none-any.whl → 1.3.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 (55) hide show
  1. codex_autorunner/bootstrap.py +26 -5
  2. codex_autorunner/core/config.py +176 -59
  3. codex_autorunner/core/filesystem.py +24 -0
  4. codex_autorunner/core/flows/controller.py +50 -12
  5. codex_autorunner/core/flows/runtime.py +8 -3
  6. codex_autorunner/core/hub.py +293 -16
  7. codex_autorunner/core/lifecycle_events.py +44 -5
  8. codex_autorunner/core/pma_delivery.py +81 -0
  9. codex_autorunner/core/pma_dispatches.py +224 -0
  10. codex_autorunner/core/pma_lane_worker.py +122 -0
  11. codex_autorunner/core/pma_queue.py +167 -18
  12. codex_autorunner/core/pma_reactive.py +91 -0
  13. codex_autorunner/core/pma_safety.py +58 -0
  14. codex_autorunner/core/pma_sink.py +104 -0
  15. codex_autorunner/core/pma_transcripts.py +183 -0
  16. codex_autorunner/core/safe_paths.py +117 -0
  17. codex_autorunner/housekeeping.py +77 -23
  18. codex_autorunner/integrations/agents/codex_backend.py +18 -12
  19. codex_autorunner/integrations/agents/wiring.py +2 -0
  20. codex_autorunner/integrations/app_server/client.py +31 -0
  21. codex_autorunner/integrations/app_server/supervisor.py +3 -0
  22. codex_autorunner/integrations/telegram/constants.py +1 -1
  23. codex_autorunner/integrations/telegram/handlers/commands/execution.py +16 -15
  24. codex_autorunner/integrations/telegram/handlers/commands/files.py +5 -8
  25. codex_autorunner/integrations/telegram/handlers/commands/github.py +10 -6
  26. codex_autorunner/integrations/telegram/handlers/commands/shared.py +9 -8
  27. codex_autorunner/integrations/telegram/handlers/commands/workspace.py +85 -2
  28. codex_autorunner/integrations/telegram/handlers/commands_runtime.py +29 -8
  29. codex_autorunner/integrations/telegram/helpers.py +30 -2
  30. codex_autorunner/integrations/telegram/ticket_flow_bridge.py +54 -3
  31. codex_autorunner/static/docChatCore.js +2 -0
  32. codex_autorunner/static/hub.js +59 -0
  33. codex_autorunner/static/index.html +70 -54
  34. codex_autorunner/static/notificationBell.js +173 -0
  35. codex_autorunner/static/notifications.js +154 -36
  36. codex_autorunner/static/pma.js +96 -35
  37. codex_autorunner/static/styles.css +415 -4
  38. codex_autorunner/static/utils.js +5 -1
  39. codex_autorunner/surfaces/cli/cli.py +206 -129
  40. codex_autorunner/surfaces/cli/template_repos.py +157 -0
  41. codex_autorunner/surfaces/web/app.py +193 -5
  42. codex_autorunner/surfaces/web/routes/file_chat.py +109 -61
  43. codex_autorunner/surfaces/web/routes/flows.py +125 -67
  44. codex_autorunner/surfaces/web/routes/pma.py +638 -57
  45. codex_autorunner/tickets/agent_pool.py +6 -1
  46. codex_autorunner/tickets/outbox.py +27 -14
  47. codex_autorunner/tickets/replies.py +4 -10
  48. codex_autorunner/tickets/runner.py +1 -0
  49. codex_autorunner/workspace/paths.py +8 -3
  50. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/METADATA +1 -1
  51. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/RECORD +55 -45
  52. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/WHEEL +0 -0
  53. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/entry_points.txt +0 -0
  54. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/licenses/LICENSE +0 -0
  55. {codex_autorunner-1.2.1.dist-info → codex_autorunner-1.3.0.dist-info}/top_level.txt +0 -0
@@ -155,6 +155,7 @@ class AgentPool:
155
155
  restart_backoff_initial_seconds=app_server_cfg.client.restart_backoff_initial_seconds,
156
156
  restart_backoff_max_seconds=app_server_cfg.client.restart_backoff_max_seconds,
157
157
  restart_backoff_jitter_ratio=app_server_cfg.client.restart_backoff_jitter_ratio,
158
+ output_policy=app_server_cfg.output.policy,
158
159
  default_approval_decision=default_approval_decision,
159
160
  )
160
161
  return self._app_server_supervisor
@@ -275,7 +276,11 @@ class AgentPool:
275
276
  finally:
276
277
  if req.emit_event is not None:
277
278
  self._active_emitters.pop(turn_handle.turn_id, None)
278
- text = "\n\n".join(result.agent_messages or []).strip()
279
+ final_message = str(getattr(result, "final_message", "") or "")
280
+ if final_message.strip():
281
+ text = final_message.strip()
282
+ else:
283
+ text = "\n\n".join(result.agent_messages or []).strip()
279
284
  return AgentTurnResult(
280
285
  agent_id=req.agent_id,
281
286
  conversation_id=thread_id,
@@ -5,26 +5,34 @@ from dataclasses import dataclass
5
5
  from pathlib import Path
6
6
  from typing import Any, Callable, Dict, Optional
7
7
 
8
+ from codex_autorunner.core.filesystem import copy_path
9
+
8
10
  from .frontmatter import parse_markdown_frontmatter
9
11
  from .lint import lint_dispatch_frontmatter
10
12
  from .models import Dispatch, DispatchRecord
11
13
 
12
- _lifecycle_emitter: Optional[Callable[[str, str, str, Dict[str, Any]], None]] = None
14
+ _lifecycle_emitter: Optional[Callable[[str, str, str, Dict[str, Any], str], None]] = (
15
+ None
16
+ )
13
17
 
14
18
 
15
19
  def set_lifecycle_emitter(
16
- emitter: Optional[Callable[[str, str, str, Dict[str, Any]], None]],
20
+ emitter: Optional[Callable[[str, str, str, Dict[str, Any], str], None]],
17
21
  ) -> None:
18
22
  global _lifecycle_emitter
19
23
  _lifecycle_emitter = emitter
20
24
 
21
25
 
22
26
  def _emit_lifecycle(
23
- event_type: str, repo_id: str, run_id: str, data: Dict[str, Any]
27
+ event_type: str,
28
+ repo_id: str,
29
+ run_id: str,
30
+ data: Dict[str, Any],
31
+ origin: str,
24
32
  ) -> None:
25
33
  if _lifecycle_emitter:
26
34
  try:
27
- _lifecycle_emitter(event_type, repo_id, run_id, data)
35
+ _lifecycle_emitter(event_type, repo_id, run_id, data, origin)
28
36
  except Exception:
29
37
  pass
30
38
 
@@ -59,14 +67,6 @@ def ensure_outbox_dirs(paths: OutboxPaths) -> None:
59
67
  paths.dispatch_history_dir.mkdir(parents=True, exist_ok=True)
60
68
 
61
69
 
62
- def _copy_item(src: Path, dst: Path) -> None:
63
- if src.is_dir():
64
- shutil.copytree(src, dst)
65
- else:
66
- dst.parent.mkdir(parents=True, exist_ok=True)
67
- shutil.copy2(src, dst)
68
-
69
-
70
70
  def _list_dispatch_items(dispatch_dir: Path) -> list[Path]:
71
71
  if not dispatch_dir.exists() or not dispatch_dir.is_dir():
72
72
  return []
@@ -197,6 +197,7 @@ def archive_dispatch(
197
197
  ticket_id: Optional[str] = None,
198
198
  repo_id: str = "",
199
199
  run_id: str = "",
200
+ origin: str = "runner",
200
201
  ) -> tuple[Optional[DispatchRecord], list[str]]:
201
202
  """Archive current dispatch and attachments to dispatch history.
202
203
 
@@ -236,13 +237,13 @@ def archive_dispatch(
236
237
  try:
237
238
  # Archive the dispatch file.
238
239
  msg_dest = dest / "DISPATCH.md"
239
- _copy_item(paths.dispatch_path, msg_dest)
240
+ copy_path(paths.dispatch_path, msg_dest)
240
241
  archived.append(msg_dest)
241
242
 
242
243
  # Archive all attachments.
243
244
  for item in items:
244
245
  item_dest = dest / item.name
245
- _copy_item(item, item_dest)
246
+ copy_path(item, item_dest)
246
247
  archived.append(item_dest)
247
248
 
248
249
  except OSError as exc:
@@ -257,16 +258,28 @@ def archive_dispatch(
257
258
 
258
259
  # Emit lifecycle event for dispatch creation
259
260
  if run_id:
261
+ dispatch_path = dest / "DISPATCH.md"
262
+ try:
263
+ relative_dispatch_path = str(dispatch_path.relative_to(paths.run_dir))
264
+ except Exception:
265
+ relative_dispatch_path = str(dispatch_path)
260
266
  _emit_lifecycle(
261
267
  "dispatch_created",
262
268
  repo_id,
263
269
  run_id,
264
270
  {
271
+ "repo_id": repo_id,
272
+ "run_id": run_id,
273
+ "dispatch_path": relative_dispatch_path,
274
+ "dispatch_seq": next_seq,
275
+ "dispatch_mode": dispatch.mode,
276
+ "dispatch_title": dispatch.title,
265
277
  "seq": next_seq,
266
278
  "mode": dispatch.mode,
267
279
  "title": dispatch.title,
268
280
  "ticket_id": ticket_id,
269
281
  },
282
+ origin,
270
283
  )
271
284
 
272
285
  return (
@@ -6,6 +6,8 @@ from dataclasses import dataclass, field
6
6
  from pathlib import Path
7
7
  from typing import Optional
8
8
 
9
+ from codex_autorunner.core.filesystem import copy_path
10
+
9
11
  from .frontmatter import parse_markdown_frontmatter
10
12
 
11
13
 
@@ -75,14 +77,6 @@ def parse_user_reply(path: Path) -> tuple[Optional[UserReply], list[str]]:
75
77
  return UserReply(body=body.lstrip("\n"), title=title_str, extra=extra), []
76
78
 
77
79
 
78
- def _copy_item(src: Path, dst: Path) -> None:
79
- if src.is_dir():
80
- shutil.copytree(src, dst)
81
- else:
82
- dst.parent.mkdir(parents=True, exist_ok=True)
83
- shutil.copy2(src, dst)
84
-
85
-
86
80
  def _list_reply_items(reply_dir: Path) -> list[Path]:
87
81
  if not reply_dir.exists() or not reply_dir.is_dir():
88
82
  return []
@@ -151,12 +145,12 @@ def dispatch_reply(
151
145
  archived: list[Path] = []
152
146
  try:
153
147
  msg_dest = dest / "USER_REPLY.md"
154
- _copy_item(paths.user_reply_path, msg_dest)
148
+ copy_path(paths.user_reply_path, msg_dest)
155
149
  archived.append(msg_dest)
156
150
 
157
151
  for item in items:
158
152
  item_dest = dest / item.name
159
- _copy_item(item, item_dest)
153
+ copy_path(item, item_dest)
160
154
  archived.append(item_dest)
161
155
  except OSError as exc:
162
156
  return None, [f"Failed to archive reply: {exc}"]
@@ -591,6 +591,7 @@ class TicketRunner:
591
591
  ticket_id=current_ticket_id,
592
592
  repo_id=self._repo_id,
593
593
  run_id=self._run_id,
594
+ origin="runner",
594
595
  )
595
596
  if dispatch_errors:
596
597
  # Treat as pause: user should fix DISPATCH.md frontmatter. Keep outbox
@@ -118,9 +118,14 @@ def read_workspace_file(
118
118
  not path.exists()
119
119
  ): # codeql[py/path-injection] validated by normalize_workspace_rel_path
120
120
  return ""
121
- return path.read_text(
122
- encoding="utf-8"
123
- ) # codeql[py/path-injection] validated by normalize_workspace_rel_path
121
+ try:
122
+ return path.read_text( # codeql[py/path-injection] validated by normalize_workspace_rel_path
123
+ encoding="utf-8"
124
+ )
125
+ except UnicodeDecodeError as exc:
126
+ raise ValueError(
127
+ "file is not UTF-8 text; download it to view binary data"
128
+ ) from exc
124
129
 
125
130
 
126
131
  def write_workspace_file( # codeql[py/path-injection]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-autorunner
3
- Version: 1.2.1
3
+ Version: 1.3.0
4
4
  Summary: Codex autorunner CLI per DESIGN-V1
5
5
  Author: Codex
6
6
  License: MIT License
@@ -1,12 +1,12 @@
1
1
  codex_autorunner/__init__.py,sha256=EyZQrh8IKtssHmoNafaN7--MNRG4DhLA-w7T7-AJqhk,205
2
2
  codex_autorunner/__main__.py,sha256=Qd-f8z2Q2vpiEP2x6PBFsJrpACWDVxFKQk820MhFmHo,59
3
3
  codex_autorunner/api.py,sha256=1QIExNBqoNfND7ldsa36E65MGaBstutrr7j6Dgs5W74,705
4
- codex_autorunner/bootstrap.py,sha256=rvUj4RLEhDFoEbNmtOTOEQKUlYDdak2kwVx_VgBPRt8,12558
4
+ codex_autorunner/bootstrap.py,sha256=x8dMOjtQnNO_adfOakzAbpHFPH1Ne5gfkvJ0HLbpMHY,13274
5
5
  codex_autorunner/cli.py,sha256=UKTukqhpK2pSJeFdVT1ESAGgjR_VGAtfHaovpwydf0k,222
6
6
  codex_autorunner/codex_cli.py,sha256=SkIFfNx7-sJB2QXa9Sy3r0MjovkGTFe8zM96vVxCA9E,384
7
7
  codex_autorunner/codex_runner.py,sha256=P0yHlZZjVYWLVH1O4b5VUwQs_mkJspPPG3-nULWt4Cw,362
8
8
  codex_autorunner/discovery.py,sha256=8vwGq5YKAZpyTFY-mcv2L7oZY1ECkgqeeu-jD3SBGaI,6778
9
- codex_autorunner/housekeeping.py,sha256=1Jk3-vIDfYfXf1N63Dqz7C-i0ACGYTzRcgYHcYDjsZo,12826
9
+ codex_autorunner/housekeeping.py,sha256=WLjK9RJQzHJOPalFUU38X32vOynKtpJraXxXQwFDl68,14666
10
10
  codex_autorunner/manifest.py,sha256=-1pQfCNFeAei9r-Z5wqJV2_EmJ6jNhYZ4y1aIc__w-8,6545
11
11
  codex_autorunner/plugin_api.py,sha256=o-87FVzjSbC1od55aGF3O3pp-NkKX9hDKOcEeh0J5BU,664
12
12
  codex_autorunner/server.py,sha256=BINEzCpVBJW0gXMe2jBmnwpuaFy36Ukp5YWXK72seKA,451
@@ -36,16 +36,17 @@ codex_autorunner/core/app_server_utils.py,sha256=We3SjezC4FFfYcQc8t8g40GWZlJft_1
36
36
  codex_autorunner/core/archive.py,sha256=CyUiGChq9LrbnDOWAi8LgHllcHd79ZxbBIm5O7m_wjk,10415
37
37
  codex_autorunner/core/circuit_breaker.py,sha256=DL8lUrZPluzvNHgCMDUJjWuYytgmVzhL30va8M3TPQ4,6205
38
38
  codex_autorunner/core/codex_runner.py,sha256=iteZnbPnsvfYBopCvvhyWIbnx_eVUJWu6A-gilVGVcw,3353
39
- codex_autorunner/core/config.py,sha256=A3L7po_ojBKIbxaEF5DnLwulw2A_tSbVNhIjjAe3fHo,117533
39
+ codex_autorunner/core/config.py,sha256=r7Qkw-sDD8hIyDOTUmQ1bfJFwd8qX60TLjPQ-Q5kM8A,120298
40
40
  codex_autorunner/core/context_awareness.py,sha256=lTV_37vAGtnnMlkCmKyUTmJOAp55mUJMEyHyx_ftU2E,1877
41
41
  codex_autorunner/core/docs.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  codex_autorunner/core/drafts.py,sha256=VeHfBmUpQDFmVZH2RSbZHCi7lIiMVrCFRf0iENlreEY,4202
43
43
  codex_autorunner/core/exceptions.py,sha256=CJAOtYagbVSieCxJiP3ndp-sBvjcQVYBz6LLKzKKaWA,1600
44
44
  codex_autorunner/core/filebox.py,sha256=XS0fu9k4q-V2BTO5OFDmTZ9BGq87ua_wJTF8b1y_-aE,8104
45
+ codex_autorunner/core/filesystem.py,sha256=Cjy9aj_u38k2kTaqnH4FPOwyHsEx2niNYR6LARowR9c,624
45
46
  codex_autorunner/core/git_utils.py,sha256=hOxXp41FDO6U0x0fOjSdW8-x1IXj6rJ_EvgXXre6a3c,8570
46
- codex_autorunner/core/hub.py,sha256=JeFndESVPUYDARB7MZIU_sdyEL20DRSVL1cpKisnpX8,44847
47
+ codex_autorunner/core/hub.py,sha256=FFYETDQcnFUezvH7JTPsYvPtjiWT3BTaciAfCDAR0ks,55911
47
48
  codex_autorunner/core/injected_context.py,sha256=HQ1VTO7E0TccBkRMQM3f0ihiGS4FNM-aCW35QX7_CXs,301
48
- codex_autorunner/core/lifecycle_events.py,sha256=QLpBJ1OjbGxY3rvzmYrlu-ZmoDicXNSiwO8RB5Qc4cE,8515
49
+ codex_autorunner/core/lifecycle_events.py,sha256=yAbOwG99VdjVW1uu7-Fcn0cVBeRP0uhiw_FGB45SrhE,9351
49
50
  codex_autorunner/core/locks.py,sha256=MWPGf7-4QTcQass9O5M7OlI1pHAqomep3-7pr3aA8qU,8324
50
51
  codex_autorunner/core/logging_utils.py,sha256=fQ9rIshtE-S02-xcFJOUOAXFTrFIcv_TkHzBXU4fxHs,5063
51
52
  codex_autorunner/core/notifications.py,sha256=XHhnhN6nJpJlbnNVrapMiXr8Y4El7l7x9s3ZCqTAjqM,18043
@@ -54,11 +55,17 @@ codex_autorunner/core/patch_utils.py,sha256=H5IPB5X4EJmXw7dNV3hj6m-vV2yXNY4PMuvq
54
55
  codex_autorunner/core/path_utils.py,sha256=2TwtUY8YvIbc4fyqVcZalzBVTmk5uDMpeUg7ZDAt0h4,3492
55
56
  codex_autorunner/core/pma_audit.py,sha256=QtDbR6yD4kdk8JV67fjeidNjOga8S2rLUsUNX7BSxJE,8022
56
57
  codex_autorunner/core/pma_context.py,sha256=QH3cRL4OdJXIbH8daOyy8ppVIhJzWpYnr2B-BSrWaSA,24631
58
+ codex_autorunner/core/pma_delivery.py,sha256=-RDrFgPB3R76CI3kqgFdDSsPmKEMu9QTsDCfNqVpPK0,2398
57
59
  codex_autorunner/core/pma_dispatch_interceptor.py,sha256=WZZfNJKAciqLdpJm02tE1t3WndU7nLO4z9xQcOb0wJk,9203
60
+ codex_autorunner/core/pma_dispatches.py,sha256=G8oYycOFVAGw6WxX7aKJhGNC8x_nKumUrc-yz4VYlCE,6440
61
+ codex_autorunner/core/pma_lane_worker.py,sha256=gjDHNxuXO9HIL-6BerwfTs9zh3Zjq6ve1m9s1cyucCY,4269
58
62
  codex_autorunner/core/pma_lifecycle.py,sha256=p60VgkpXxY0evLNPJj4-OhWIG6BXP4IepLyins4lhNE,16997
59
- codex_autorunner/core/pma_queue.py,sha256=R7AvfqWWxpER3lkhuP1d1eLD_LK-94oJyVmF7TKP4CM,12464
60
- codex_autorunner/core/pma_safety.py,sha256=Xf648Q044O_Gx8GZYVybBFaPy9fZwExWqGZciNMTgmk,7619
63
+ codex_autorunner/core/pma_queue.py,sha256=FhTYgZakIxydAHPGcF_9L3d4qWTSnXB0yFLrjA482tk,17741
64
+ codex_autorunner/core/pma_reactive.py,sha256=Ub3KZnTeUQj_mXOHsNwNQMpSz71fbxmufDZ-QYaY1e0,2777
65
+ codex_autorunner/core/pma_safety.py,sha256=2rdGnOeXIAsTKyypZ2Tfspk5AZB8eVvUxivaegPHv1o,9855
66
+ codex_autorunner/core/pma_sink.py,sha256=Lg5hmdwSsaaNb8Hdiwy-PxTVvqFiCg3_JT2A_8HJPVw,3273
61
67
  codex_autorunner/core/pma_state.py,sha256=dN-nRhUrZVPqlTsaEOfDn6s7eoN12zMTBqmW2HJrS4M,3722
68
+ codex_autorunner/core/pma_transcripts.py,sha256=TGYd5ImOO-6B_OruZjDr6Nkw-Y0s0AdLYOQBKCDqTXo,6049
62
69
  codex_autorunner/core/prompt.py,sha256=TUkZr5wYVHNtgxUpXeiSK_d_nxf412idEtjjoaXcDWM,177
63
70
  codex_autorunner/core/prompts.py,sha256=rPC7nIyA0QbQZDhTuqO3--_pf64wzPOCxKstwRalkGQ,5857
64
71
  codex_autorunner/core/redaction.py,sha256=bm7KhtSVJ24GwTOkJBRSZjCzCG-uHerqFtZN-KemhJ0,738
@@ -70,6 +77,7 @@ codex_autorunner/core/runner_controller.py,sha256=uIT_Kt2OBgKVCbk_8otN1zwCCnqCQF
70
77
  codex_autorunner/core/runner_process.py,sha256=G_O_kzo6sv_oWl0FuCzUXW28kZGXh7OdZOBWBKR5kBk,1503
71
78
  codex_autorunner/core/runner_state.py,sha256=WzkAGaf3OA3jLSSmVAtxwuoYoQkvpUPLOa_BulJ8Yds,5014
72
79
  codex_autorunner/core/runtime.py,sha256=6DKC7Onpb4nxGoCTJXlgI3rwrQWxtPg4iM3KlwjSGTs,26626
80
+ codex_autorunner/core/safe_paths.py,sha256=qIAW2ISxOr1Pq1zSnwUmX2P6l7tD6miazY1L-a60Xic,3842
73
81
  codex_autorunner/core/sqlite_utils.py,sha256=1fvF2SZ6bx0yI7fgm-obik6x7RwofymgWZbpQuatf_M,1069
74
82
  codex_autorunner/core/state.py,sha256=xfcbAYr6RRMNCUDbfde_qOGp_cS28XjKRORyfUs5kn4,14379
75
83
  codex_autorunner/core/state_roots.py,sha256=q0UO8-prWErKP0MmSRPQKAXQH3hacdnXPHB-ZrO5iQ4,1887
@@ -86,12 +94,12 @@ codex_autorunner/core/update_runner.py,sha256=mimPqchmRD-Rv2TIX67Z-ShfH3ytzS_Loz
86
94
  codex_autorunner/core/usage.py,sha256=BpttMKXZaPADFhjBxlhIExY6vTr2tmwUK7v6u_vSwfg,74815
87
95
  codex_autorunner/core/utils.py,sha256=F4vvnOeduINC500_N6Uil0_xWZHiWVLElO2uYKwOF6w,11892
88
96
  codex_autorunner/core/flows/__init__.py,sha256=AVQh2yts_kjo1zA91HwBc4uoMkfSRl8E_2b-gnxdvHM,503
89
- codex_autorunner/core/flows/controller.py,sha256=2OYAVzIuRvCdEkD5Cx0OS7AxCbOje0sS3JwQqfQgULY,9814
97
+ codex_autorunner/core/flows/controller.py,sha256=oHH__PLTcf-AqgZaQFVbWZAYG0aT8HgIew1TbQP6Bys,11017
90
98
  codex_autorunner/core/flows/definition.py,sha256=5rkczvPA2dW0PdgSYQIFxu4ItUPu2Q9_8ATeZiKGEpY,2725
91
99
  codex_autorunner/core/flows/models.py,sha256=Pny0f6fFXKX7tCuwUCYKRJPit8orqLIfjkfhLd_8zWA,2428
92
100
  codex_autorunner/core/flows/reasons.py,sha256=hT_NXIl-7Ry8n7xk289iUnbL_5i-SAOeBjo5AJikqA4,1565
93
101
  codex_autorunner/core/flows/reconciler.py,sha256=Ta3mUFfOmFZIgVoc-fpkIM9FAK19HzIbCnibHWfvQmM,4292
94
- codex_autorunner/core/flows/runtime.py,sha256=mMyWJR63sZjhPsmiQRLwakoKSxR-OFjIexNP1n2cfO4,14495
102
+ codex_autorunner/core/flows/runtime.py,sha256=XCuF_-IWozpph1ctnhngpbg32TvOpgD0do8zqAntWzg,14573
95
103
  codex_autorunner/core/flows/store.py,sha256=G6M17Wf3jO3fXCjwW9PfvI-Ak2kYjOJf9ZhNjZZh7wQ,20434
96
104
  codex_autorunner/core/flows/transition.py,sha256=o-LDTz5aL5jQ-owNAVq1Xe6Su8lZ7GCGdX_NWus2V6U,5056
97
105
  codex_autorunner/core/flows/ux_helpers.py,sha256=-508f_gGLq1J-owUziCSTXV14dIjZOAqWvV3NuK7oG0,8620
@@ -112,16 +120,16 @@ codex_autorunner/integrations/__init__.py,sha256=_6PZ2Hq6DzApW4d0rrmJY05vftGmHXp
112
120
  codex_autorunner/integrations/agents/__init__.py,sha256=9SiyMj-Ud1rtfOWrvpzxEIZRn8vLuix6G186AiXDht0,610
113
121
  codex_autorunner/integrations/agents/backend_orchestrator.py,sha256=KdGNhI6kbMhpBypJQqDRsPek8PXSuGhiyss1MdRz5mU,10269
114
122
  codex_autorunner/integrations/agents/codex_adapter.py,sha256=V6OtHb3poUB67nrIdnHwnCN4lmUaTFTCfR9XPkRxRDM,3886
115
- codex_autorunner/integrations/agents/codex_backend.py,sha256=D53HdjyHL7bL2SPi7DVY7dRRtRT_4NCU-yd910wS_v8,17882
123
+ codex_autorunner/integrations/agents/codex_backend.py,sha256=YdXhKMHbdmUS9MPOHrrKFsLixMCYjnJVTerRKexQOpg,18245
116
124
  codex_autorunner/integrations/agents/opencode_adapter.py,sha256=yOG3WfwRborZ6pKgABG7P7W9EG-QkkH3g9-49m_u1oM,4051
117
125
  codex_autorunner/integrations/agents/opencode_backend.py,sha256=kSPuAcb2DuZnKyf-0ZFEhLLKLoEQKKA9NKD2qFYpWMs,22307
118
126
  codex_autorunner/integrations/agents/runner.py,sha256=JyytAeuSBpJPA75jWmIoFlON9jyKgfvXmg-ZJSXm_uk,2690
119
- codex_autorunner/integrations/agents/wiring.py,sha256=UVnBHoOvDNlGK5U3sqPfggaWlPxr-Ai7Xfk508zrAzc,12326
127
+ codex_autorunner/integrations/agents/wiring.py,sha256=5jyTBjChiU9c9Cz92SquCQvU-9a4DVwCrx0t-sdJEf8,12458
120
128
  codex_autorunner/integrations/app_server/__init__.py,sha256=Ro2hRhH9wzxQJThz1Kyo-SADxCFtyF2ZfhHNureykGk,201
121
- codex_autorunner/integrations/app_server/client.py,sha256=S6zRzbSryU9YrZ3j_1Azu7dO6NQ9ZbY40HuaN_xkoR4,70827
129
+ codex_autorunner/integrations/app_server/client.py,sha256=xm-jMOqnLmVzD7da59X4chWfBhUo-zWsHaE6ZcFos9g,72051
122
130
  codex_autorunner/integrations/app_server/env.py,sha256=S0qP_hPFlRL-IHJCoRQoGJBWrkjnngiI4vGRCuimpx4,130
123
131
  codex_autorunner/integrations/app_server/event_buffer.py,sha256=t5e6YJ7ZaqoR8p0K95i6q8dfrUQ9sR1lYdMi1jjepZk,7150
124
- codex_autorunner/integrations/app_server/supervisor.py,sha256=7VAXeyufWRkqHrcaV4JFDknqboE7K3RosU14CFzUhl8,9659
132
+ codex_autorunner/integrations/app_server/supervisor.py,sha256=Sn8Qtno7mGqOYNUIGom6DX6MAIHwwFP3ccm_iF7emxE,9797
125
133
  codex_autorunner/integrations/github/__init__.py,sha256=mLMQATB-B_LbgebPRCdWqUDS-cMxXfuALGh_RsWbWBk,224
126
134
  codex_autorunner/integrations/github/service.py,sha256=484jkhg_lnDap0jMatspuMNn04cg7uVqAG2GctF17Co,39015
127
135
  codex_autorunner/integrations/telegram/__init__.py,sha256=oAEE1Yb-7Ybgb79NLWqNErkSXOGBJDgcvlI7gfHlpDA,36
@@ -129,10 +137,10 @@ codex_autorunner/integrations/telegram/adapter.py,sha256=mQmkKwiEoKLKjfAXw_a4gLm
129
137
  codex_autorunner/integrations/telegram/api_schemas.py,sha256=IXwB17Y4wL0lborU8HHssgNgOtHUJYLoMAcyb3Jv7_8,3402
130
138
  codex_autorunner/integrations/telegram/commands_registry.py,sha256=C5T6KeTUq4DmhmSe9FwNRg_kNJWKcYB4hxthVu7MbAQ,3153
131
139
  codex_autorunner/integrations/telegram/config.py,sha256=xxTQY4foUyWMYdEPZkdb7DV2E-ucCqXUhQGH-8RUocA,32313
132
- codex_autorunner/integrations/telegram/constants.py,sha256=16-CnkenzOrXAslfFXKYAMBmBUVPltAHfSuBWqq0Eag,6741
140
+ codex_autorunner/integrations/telegram/constants.py,sha256=cC0Fuqj8ojOq4-SSCdGEL0canLOiCYRo7K6ngJvNwvU,6741
133
141
  codex_autorunner/integrations/telegram/dispatch.py,sha256=dgh95aYuvveqS7TGvbYHKbtT2RYFx1qGq7mGYyRY2xI,6916
134
142
  codex_autorunner/integrations/telegram/doctor.py,sha256=uZNxQsnRGaQnu6GpoHVve5ELkSDO6FPCN4_byj6XbQo,9667
135
- codex_autorunner/integrations/telegram/helpers.py,sha256=vfsrdiaAILyOAqSbDikakhlfYFS23Kqb9lYO2sixocA,73389
143
+ codex_autorunner/integrations/telegram/helpers.py,sha256=REW7PQhHyh_6560IMHfsu0En8fKO7Jn_b3cptg6GCu0,74350
136
144
  codex_autorunner/integrations/telegram/notifications.py,sha256=XvUdRUq5gfD9JA30PclVLrDL5Azw0Sin8Oj0i1fcVx4,23430
137
145
  codex_autorunner/integrations/telegram/outbox.py,sha256=U3qve8pTSRakeqMMWgWqkSvL1e7zoz_aWqhLNH2eZEk,13954
138
146
  codex_autorunner/integrations/telegram/overflow.py,sha256=LUbPTwA2BxFV1w0sF1XAhIu_ft_eieSVYmjuftiVyO0,5384
@@ -142,7 +150,7 @@ codex_autorunner/integrations/telegram/retry.py,sha256=GIdMSSCVa2Sjd6-t2FC1O6AwP
142
150
  codex_autorunner/integrations/telegram/runtime.py,sha256=yyELUr2b-H3qosqWFnkhqCgaG5Cvf1i4hv3CClVHChg,10625
143
151
  codex_autorunner/integrations/telegram/service.py,sha256=vBXVyhtXTBUtMmG2hjw36ql6iK4NpglwpMRJALFhN8E,59505
144
152
  codex_autorunner/integrations/telegram/state.py,sha256=FxdZVz8JNGyM5MAOBYXBHGcKJj4dxiNX6SrF_2ktrgw,85694
145
- codex_autorunner/integrations/telegram/ticket_flow_bridge.py,sha256=UkRMloBZx-amYf2M4xRZG35-Zyz7ecu8uBEDY3dyeJA,21308
153
+ codex_autorunner/integrations/telegram/ticket_flow_bridge.py,sha256=CfiBbLrFlzViZqBIaK4GTFnDfrkFGjHdXSyhV2MVdfI,23499
146
154
  codex_autorunner/integrations/telegram/transport.py,sha256=zvNMR2hhwTgxLyf0dS0gDxFVIVEMoiGYkeiPQwblD2o,15082
147
155
  codex_autorunner/integrations/telegram/trigger_mode.py,sha256=bDGQUMUbnUNq4u25c-zmBUAOlFvnl5a8YyWgTN2Y8h8,1531
148
156
  codex_autorunner/integrations/telegram/types.py,sha256=SjeVaus_YtWz-06GqkSWl99cHTdu0YKd5egdlYY3tMI,1707
@@ -150,7 +158,7 @@ codex_autorunner/integrations/telegram/voice.py,sha256=I3XD-Uc-egA2UVfby210-kCLh
150
158
  codex_autorunner/integrations/telegram/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
159
  codex_autorunner/integrations/telegram/handlers/approvals.py,sha256=G8-FwRSyyBs9emb9eJjf4a0kD2rdqnFf25SldfHCKZ4,9365
152
160
  codex_autorunner/integrations/telegram/handlers/callbacks.py,sha256=wyF8Kmg69KHpKdlPj1DOhp3EEQ3rZ0sjxHnomApSAKw,3754
153
- codex_autorunner/integrations/telegram/handlers/commands_runtime.py,sha256=b935T6ML8lG8VUjAZQQ5M1nDR0rDU-1rq-u9HWez7oY,108920
161
+ codex_autorunner/integrations/telegram/handlers/commands_runtime.py,sha256=IMGnWAjdEeACpXBZvVXcJF86h4D28Wu_6sCfXDDsJG8,109851
154
162
  codex_autorunner/integrations/telegram/handlers/commands_spec.py,sha256=B9nzbALNmcxCzgz6MSHJgYy7lJgt4xgT9E41XrxVlqk,5629
155
163
  codex_autorunner/integrations/telegram/handlers/messages.py,sha256=lC6VAoY_NR8uJbO5D_tKykr2vWTy0Xu2JnJ9zyuy-Vc,32904
156
164
  codex_autorunner/integrations/telegram/handlers/questions.py,sha256=GoOZzyYPqOt9jW4T27EzjNUOQrMgf3i3F6fJ6tWILzI,15570
@@ -158,14 +166,14 @@ codex_autorunner/integrations/telegram/handlers/selections.py,sha256=JSg_ihLMkK1
158
166
  codex_autorunner/integrations/telegram/handlers/utils.py,sha256=T2y-2p1SNduypiNz9uq4zqRIFq47z9Lop6_s3nhUzN8,5317
159
167
  codex_autorunner/integrations/telegram/handlers/commands/__init__.py,sha256=NjxemJCRhWUDCP0nacsBfhXMYYUstVotgUhcISTaANU,812
160
168
  codex_autorunner/integrations/telegram/handlers/commands/approvals.py,sha256=uQsGQtSPjXZ5FyNldvVsZDImEI-G-YOMUwhlnth2wlc,6632
161
- codex_autorunner/integrations/telegram/handlers/commands/execution.py,sha256=TF4d4V9SI-6qbEHTy9BZcwA3fuMh08RxYGBvJL-D084,112545
162
- codex_autorunner/integrations/telegram/handlers/commands/files.py,sha256=OtWdyV_EKsyp6wJK2HlEUuBfB0ZM67NATnoZvVcVsTQ,59270
169
+ codex_autorunner/integrations/telegram/handlers/commands/execution.py,sha256=0ok3pJpQZdV1yHamq5FLI6NL-FpGOeDnMXXRUMR4Ydk,112739
170
+ codex_autorunner/integrations/telegram/handlers/commands/files.py,sha256=HnL8udtoOMSsveVdY_Zk7ZMzEmNDyOKLWBjzF8QOuDU,59227
163
171
  codex_autorunner/integrations/telegram/handlers/commands/flows.py,sha256=vJWHGNdFai8kgttOP1CybuAQPF4XfFU-mCOIXxbbP1I,64463
164
172
  codex_autorunner/integrations/telegram/handlers/commands/formatting.py,sha256=WRJDe2jUtrGMFVsp2Hah1GDsfQUV0Dd0KLSbcrY0j0o,3139
165
- codex_autorunner/integrations/telegram/handlers/commands/github.py,sha256=IKWKYttLqUei5NCzjIIqvGBcFpRBffdfvTwSMzPHzWo,68888
166
- codex_autorunner/integrations/telegram/handlers/commands/shared.py,sha256=Lam8f76yQGkTBsr0QpawOBU_eIjch8C4NzW6ifSd0sQ,6581
173
+ codex_autorunner/integrations/telegram/handlers/commands/github.py,sha256=2O6R3BCiLaB0z7wDEyZQciQVC725FnuS6easWcneP8s,69104
174
+ codex_autorunner/integrations/telegram/handlers/commands/shared.py,sha256=Bfa6_ct9s4W5mbL93W5Jbwq3n34rmKbh3m9maEZNBco,6792
167
175
  codex_autorunner/integrations/telegram/handlers/commands/voice.py,sha256=y06N3ju4RjI1Y4r69Os-2BcR6erHjXyGOkoiLWepS0k,3955
168
- codex_autorunner/integrations/telegram/handlers/commands/workspace.py,sha256=7sle1PCCD1WQ1vdrzQ8IWEDSgTJHBxyf-TpZdeesElc,100360
176
+ codex_autorunner/integrations/telegram/handlers/commands/workspace.py,sha256=OLsPShlUJr9BeZeI5KppaXM0tXpG6gZpnMz7yKHZtAg,103713
169
177
  codex_autorunner/integrations/templates/__init__.py,sha256=zicmMosrOEOwvBqiWkYzOfkWN6v2t4hlEwVMZyyLpNw,706
170
178
  codex_autorunner/integrations/templates/scan_agent.py,sha256=4OIrBbIzG-nxS_zXNcfBKmC2l4XHVavG2rdFA9dEHo8,9887
171
179
  codex_autorunner/routes/__init__.py,sha256=c8w_wt0V051zbHnI9WG3HieblE_2HivnboGux25oLQA,505
@@ -198,7 +206,7 @@ codex_autorunner/static/chatUploads.js,sha256=oFKWPAHnESvk0aqFTH40A3-90fai78GGS9
198
206
  codex_autorunner/static/constants.js,sha256=vmlDFXF6JYRrX3XJ0rJ_Ft1w-AMa7RdhHq8pTGhRR3Q,2036
199
207
  codex_autorunner/static/dashboard.js,sha256=15gI7rxhtG6Ngnw_N9iNHSkALkaaGRIYCYoqEJxwOe4,30749
200
208
  codex_autorunner/static/diffRenderer.js,sha256=AVeJ6yt8UBk6yQJWV6VCIsH9TIY5CYTCjNFD8uOWQ9U,1307
201
- codex_autorunner/static/docChatCore.js,sha256=LSn_Z7MHh7FtiRexXtxfXGdjN9mjfkdQODxgcAc90h0,22724
209
+ codex_autorunner/static/docChatCore.js,sha256=bdEFT9qyNfCC1_UT3FqtK4KDTISR4YYQoKWoAm7jTCY,22812
202
210
  codex_autorunner/static/docChatStorage.js,sha256=OgPiNgvPVVp0kJcCVy-ILjMSo5--keyrIleWacA-k6A,2104
203
211
  codex_autorunner/static/docChatVoice.js,sha256=YrKIf0INTke3ge9uDHLl_Fd3wFcISGyjJlQU-iyhAlU,2419
204
212
  codex_autorunner/static/docEditor.js,sha256=w2AqcQEGIkRut2xpRiFG4ndxccv0THoh3ZdwFw2YM6s,4580
@@ -207,19 +215,20 @@ codex_autorunner/static/eventSummarizer.js,sha256=PuLdLS9MIVrp97W47iAlEf8TFLNTHC
207
215
  codex_autorunner/static/fileChat.js,sha256=cUdmgyUOo2VL5Oe8VK7aDFYHEoT1ldyjZx7bgY0A69E,7248
208
216
  codex_autorunner/static/fileboxUi.js,sha256=HPNsms7jzdl8sM5eZNFkJac3mkvSRioziwIkQ16OwjQ,5600
209
217
  codex_autorunner/static/health.js,sha256=nwB-Ofc96zTP6YLQDaIJfO7duLug9bj3CCe893M7x1I,5204
210
- codex_autorunner/static/hub.js,sha256=CTZRedwEwo7S3Z500doHEYrEcWpIgm-Rk2rtY6aVd1U,48852
211
- codex_autorunner/static/index.html,sha256=JICjnURPfBLlmVsbpiEkzu7mJsOKUwg7NXfgF8G6Ksg,65834
218
+ codex_autorunner/static/hub.js,sha256=HRqvc_uzRNF_XrnByhQ0EAb5QSRu_EuyQMqh3Pj72xU,51354
219
+ codex_autorunner/static/index.html,sha256=U0O9c5MwAD1nvfeo13pXdLa6bT9tijm4_ut04ViMQ08,66956
212
220
  codex_autorunner/static/liveUpdates.js,sha256=SiVWPQRp-mqmmhRqOQWPFtMBLUA89J1KYvif88ZCMOk,1950
213
221
  codex_autorunner/static/loader.js,sha256=2Xyg_D43sSsH3fmm93-utyPJJSQ7KpvebbhNrM79ljo,1065
214
222
  codex_autorunner/static/messages.js,sha256=xLjw2LJMy6ng1cgEsCcZZ7SN4PXeNSFEVkJycQVhe8Y,35287
215
223
  codex_autorunner/static/mobileCompact.js,sha256=cDXLGeFLj5_knH-9qOXfbR5IXjCttyQ3-jclL4k1ouo,9473
216
- codex_autorunner/static/notifications.js,sha256=R8h9DhW5Tzr6X4A4fYFacI6Y--zvB7eJgJBRFRWVmW4,10430
217
- codex_autorunner/static/pma.js,sha256=eA_jyCXjaLetVQ02-jacfLN813xYSM4yaGIesCJ9ssc,42857
224
+ codex_autorunner/static/notificationBell.js,sha256=TM6lKkbByIJ5Qrpdi_LuMxh6BuX0zFgzF9RXSR2TCKI,5965
225
+ codex_autorunner/static/notifications.js,sha256=ZHdutCDdyDfcxiMhr4TepGF_deAAa37b9DSl_Og8EDI,15074
226
+ codex_autorunner/static/pma.js,sha256=rGQZvY7aKDxbulTssCVkRDg9xmxtJKAlsH5-_PYIMv8,44920
218
227
  codex_autorunner/static/preserve.js,sha256=cOB-kcPQPHYDZqwkJFi69n6LhT51BHNWGL6zLRPsJyM,437
219
228
  codex_autorunner/static/settings.js,sha256=ouKultNn5PUXt4tFr9CkkQdTMDwC_RtSTIbyuz-12Vs,9989
220
229
  codex_autorunner/static/smartRefresh.js,sha256=0BovWNSXgeqkcawiF0JfZf7Zu81Nqr2Ni4qCj0EeJ6I,1713
221
230
  codex_autorunner/static/streamUtils.js,sha256=EXbXeDUKUry953W3noyWo-2dpZxVVkfgbwiFT3eAXLQ,2128
222
- codex_autorunner/static/styles.css,sha256=jlZFD_nch9AJvYjNSw-_5havgbN9aGNrjeGYh2vC49w,254138
231
+ codex_autorunner/static/styles.css,sha256=RP6cuSR73Y3dJ_P7ZrGPpZbPgLPpYEwXGZVbxg9r0aA,261494
223
232
  codex_autorunner/static/tabs.js,sha256=SgebpOJIxzkD307VQ1NmXBpLY40b1g8RvNIcf2fmVlI,8429
224
233
  codex_autorunner/static/templateReposSettings.js,sha256=w-YmI-zbSpiVE_MHew3Ly2kJRF81_QbV-GMl8MAfq9E,7121
225
234
  codex_autorunner/static/terminal.js,sha256=EEnwfA8rcOt1vOQngXdOTpymdqsYoBA-XPmFoksaHcs,1621
@@ -234,7 +243,7 @@ codex_autorunner/static/ticketVoice.js,sha256=CVRumgn6kc9uwEqvRxh5bdHx4C1DTOv-SE
234
243
  codex_autorunner/static/tickets.js,sha256=c57keSCtTObCY4XXVcTkqBhUdjRJqFc_86tTTly2_B4,79904
235
244
  codex_autorunner/static/turnEvents.js,sha256=AmZZ3Bt-A1hg4QwaY9-tiwxnUEvDJvwdbrq7OF8wK5s,1152
236
245
  codex_autorunner/static/turnResume.js,sha256=eAXZLyyEYr-mCuDjItxRJkdCUBbdXZGzQEH_lTx2CHk,776
237
- codex_autorunner/static/utils.js,sha256=oWEmfn2JFSYDIcKpBNVu4kcSHnqbaxm42AxP1Ns7OBA,23200
246
+ codex_autorunner/static/utils.js,sha256=uHubjv6k8w-Xa7P-VOOCcOO5jW2LhJaPVHX5bzsBH2E,23322
238
247
  codex_autorunner/static/voice.js,sha256=QfQvDQK-AkyO1nNtYxq04dKolfyWHiLHG5uihGV9hpU,20209
239
248
  codex_autorunner/static/workspace.js,sha256=xqdf9T_0Cy_iFECMREIZ-WwmKL0jUfz2aM4f2Cm_DKg,37220
240
249
  codex_autorunner/static/workspaceApi.js,sha256=kZ79wHLBocaoFQwMN09XoQ8HM2rBKucqa_NQx5FPOlM,2015
@@ -264,12 +273,13 @@ codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-vietnamese
264
273
  codex_autorunner/static/vendor/fonts/jetbrains-mono/OFL.txt,sha256=p2q_ACxJCX0UboZ0CjEFpdAEULFZLoIKEQmoxWgM1pc,4399
265
274
  codex_autorunner/surfaces/__init__.py,sha256=qZrxvu7IX7s-SgSSIugNSc1JBE566tYz0zCX0hDhoUs,117
266
275
  codex_autorunner/surfaces/cli/__init__.py,sha256=TPjzXRVfCb4BIDdNkHovX9nhW31VGTQGy7V7oYvEVF4,211
267
- codex_autorunner/surfaces/cli/cli.py,sha256=vKlQSC0MPXVeQNjEj3eY94iTzUglA3uk3YScyynNiHQ,92443
276
+ codex_autorunner/surfaces/cli/cli.py,sha256=Aj-Hc9Thbv7UNU2AW2BKe0OXlxTTEFifPtpZwvPm9fs,94919
268
277
  codex_autorunner/surfaces/cli/codex_cli.py,sha256=4DJIaw63ohYlxsXWTG7Ikux8_zwgWYOyQqXtRWE7rMc,386
269
278
  codex_autorunner/surfaces/cli/pma_cli.py,sha256=7Id9_KpG2UBQoz7_201vZib-4C3DJyCKxjJ7fiHyARU,30315
279
+ codex_autorunner/surfaces/cli/template_repos.py,sha256=UL2haadP6CIej6u8eQEkgxP5k8qRxQpK4PQOHgPVpyc,5609
270
280
  codex_autorunner/surfaces/telegram/__init__.py,sha256=esNRNjA4D3fsYSNsR-x2C18iUQpnyYWY0CQT7hrUx3k,66
271
281
  codex_autorunner/surfaces/web/__init__.py,sha256=fDDDTYL26__wwaWd7xtI6axymkOgYntcrlHeHptDb8I,29
272
- codex_autorunner/surfaces/web/app.py,sha256=WpE-jiYok1t_Qnvr0HNra1VJO211s3Y19pWXePCbDiQ,87990
282
+ codex_autorunner/surfaces/web/app.py,sha256=99PWlouV3XCAHPj70cCkrEa2GkeJCXNm5RtcKzrr0WU,95118
273
283
  codex_autorunner/surfaces/web/hub_jobs.py,sha256=L_ba698fms2YdlZLUl6erLha-_-t3MJE5jsL9JcP3pw,6059
274
284
  codex_autorunner/surfaces/web/middleware.py,sha256=4mh4EikDLWWByLx3O5nQvMcqHOUFpORrNSWagHWLweE,21455
275
285
  codex_autorunner/surfaces/web/pty_session.py,sha256=K1_hJFYy-xh90o1hDezmsC3euP7ifsgHMzAg1E9HZA8,12791
@@ -285,11 +295,11 @@ codex_autorunner/surfaces/web/routes/analytics.py,sha256=1P4TP_icwWYY2ddLYHaCTTx
285
295
  codex_autorunner/surfaces/web/routes/app_server.py,sha256=vPy0nsw7wqQpK_4Iquffa6Aox4ksuyBx1hHfvrek040,5351
286
296
  codex_autorunner/surfaces/web/routes/archive.py,sha256=hH5U7wnBAeUFyE99dKbmAKTbYBd2zwBjzW-tokJQzJw,19702
287
297
  codex_autorunner/surfaces/web/routes/base.py,sha256=JV8kpXuaPkoJh9DBq--k9CdEM2VZwqfBDTEUE8EqGRg,26662
288
- codex_autorunner/surfaces/web/routes/file_chat.py,sha256=IN_fy7AoWKvfnJFwSz8C64u-JG-Hv3bueG9V6p7un6s,40630
298
+ codex_autorunner/surfaces/web/routes/file_chat.py,sha256=FnzrBndmMgiP9fvh0_IZopD47TgYllExt50XwgH-0ek,42010
289
299
  codex_autorunner/surfaces/web/routes/filebox.py,sha256=HdRRAjh80o4IfDkUbsuPUXflQ96fcJ6KBDQHmq42mcA,8084
290
- codex_autorunner/surfaces/web/routes/flows.py,sha256=C9SpQwmnVb5t3xfxluNTrhG1fHlUkRTrV-evzxptUB4,50327
300
+ codex_autorunner/surfaces/web/routes/flows.py,sha256=1tJ8Mr6dxP-YRBypWr_Uni2eQ_bH0QSxHgNVxkJfvTc,52382
291
301
  codex_autorunner/surfaces/web/routes/messages.py,sha256=XEIH24jfHUN3e00hopDmiXnADLo0h6Shw9Ie-nHAdPs,18070
292
- codex_autorunner/surfaces/web/routes/pma.py,sha256=1hLNmFkSWbZxhVMkf-IUAs0AhoajUVLW-z1j7S4mbGU,65690
302
+ codex_autorunner/surfaces/web/routes/pma.py,sha256=6Q6ltrWgCr75B95eo3ZRwWh7_FH0X7FuDxWPXqAYFjQ,88329
293
303
  codex_autorunner/surfaces/web/routes/repos.py,sha256=peJku6GMqMuF4mHVo-jC8cooeIRbNDpW5Hd_caGqmYs,8000
294
304
  codex_autorunner/surfaces/web/routes/review.py,sha256=kFUxZ27PSc89VR1V4-2m6iyL5EbTJ5TV60WmAnKKccY,5510
295
305
  codex_autorunner/surfaces/web/routes/sessions.py,sha256=TdUdMFp8AWJJ2GQpNUvHN9SJ2kFTpTFFITWWXmKcixA,6535
@@ -302,14 +312,14 @@ codex_autorunner/surfaces/web/routes/usage.py,sha256=p4olpgUXSbV7Nn4DQPZPYCxPNzm
302
312
  codex_autorunner/surfaces/web/routes/voice.py,sha256=sfws5BPrz9GWH_CEqrtNgO0H4wV1Ys-FNQSH5okQ_os,4858
303
313
  codex_autorunner/surfaces/web/routes/workspace.py,sha256=nbBUXX35h6QI0HkC0SLliDj1v43pKFBoWsqojylg0lA,11258
304
314
  codex_autorunner/tickets/__init__.py,sha256=2_OD0c3RHdRgCoi-T5Xacw9_gKqu5BBbUxQRMTZgsNw,607
305
- codex_autorunner/tickets/agent_pool.py,sha256=wweHSG6_LDYRDdlLbTt-y-HlyKOs22Ycz9nOxlpRLH4,17617
315
+ codex_autorunner/tickets/agent_pool.py,sha256=qCPzLrGcJNVq0oaVuAxhV-SrmJjxZKkTHA5pXUrbD2w,17838
306
316
  codex_autorunner/tickets/files.py,sha256=DQDa4A9o_QRgAJ7P2MHB1jTdLlosr-XlJ5x8D0y-vQY,3303
307
317
  codex_autorunner/tickets/frontmatter.py,sha256=zsv6Y-csjpL_jtzNPk3d34oOqrg-6EjnAlN98BEtF_g,1547
308
318
  codex_autorunner/tickets/lint.py,sha256=RFwVqodHaq7PO-PSWw-XUhtqABgFupQXO4W9ggdeOTE,4462
309
319
  codex_autorunner/tickets/models.py,sha256=X8zmzWjRhJyBrSMzUca-4lH3H-4JjL5159bfIjfsJ4c,2854
310
- codex_autorunner/tickets/outbox.py,sha256=uUI_EkNiqs9lm9lSwSViPKAR8xSCHMFMN0CL-cOEmIY,8179
311
- codex_autorunner/tickets/replies.py,sha256=R_eeg55s8dQ4VBcIpjPI1up4jCQvG8l_c0uV4LUa5Gs,4841
312
- codex_autorunner/tickets/runner.py,sha256=1pvA6WBDOUOo35SaqqBNEn1gbBxWzoxjHRUywgjF-4o,47725
320
+ codex_autorunner/tickets/outbox.py,sha256=8O3PF2A6GzlH4EiZsoT4abP_mhJUOofQ_YLjETqcmAA,8629
321
+ codex_autorunner/tickets/replies.py,sha256=FMnyLz-UtyLsRsoT8GyZ0-bUc5ptBIJqYwHjE4utisY,4697
322
+ codex_autorunner/tickets/runner.py,sha256=ZwkEkk-j7EN8P1L6kd9HzsJj8460p0oEXCkpCcVoqzk,47754
313
323
  codex_autorunner/tickets/spec_ingest.py,sha256=PmCYdGFeKVN6C9tae3j1zt8WXvISunlFpVHimycaMpo,2507
314
324
  codex_autorunner/voice/__init__.py,sha256=Z2ziy5TP4NCgNi4xld1FfRIbSJL9hpgkggYhbEtGOgQ,991
315
325
  codex_autorunner/voice/capture.py,sha256=UzvQvu3KaKpL4RoyXT-mq24uohAXvHIZ8vi6wObEJgQ,11435
@@ -330,10 +340,10 @@ codex_autorunner/web/static_assets.py,sha256=zvZ9Pr1YETsWfEkHi4zdOS_-2AD4aSvgmaN
330
340
  codex_autorunner/web/static_refresh.py,sha256=4QY5FK5T8ymsBIuSeuLWcx9yXL8LyO4Usc7Rhjs3N4Q,114
331
341
  codex_autorunner/web/terminal_sessions.py,sha256=8Pa4gKd-ZUjwqEDUInAgEPRP14CouBEZqgvXRKzNjEg,119
332
342
  codex_autorunner/workspace/__init__.py,sha256=yTql6_7BVZG0tirPMhbmMEVkk_j7Q8Wvb89eIZ0K7o8,977
333
- codex_autorunner/workspace/paths.py,sha256=mScZQpKPyFYvxEmyr_51PfWP_7aTAWkRT4AZWqGnME4,10785
334
- codex_autorunner-1.2.1.dist-info/licenses/LICENSE,sha256=gfYghezUeimFKy0hTmkOiAAwBY_QdRSXDTypbMtZU0k,1068
335
- codex_autorunner-1.2.1.dist-info/METADATA,sha256=5vxuxvkrCjyAPljglJZNqKAi1-Xph2ARbDChMturQeg,8914
336
- codex_autorunner-1.2.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
337
- codex_autorunner-1.2.1.dist-info/entry_points.txt,sha256=iPTzENG1MGBhxWF4x8W7VWk3iq4XurmGXMnIch7AVTs,93
338
- codex_autorunner-1.2.1.dist-info/top_level.txt,sha256=fc2h9rEENr-ZdyLemPJbMcWmsWlz4JuyD1UOkPLLVSQ,17
339
- codex_autorunner-1.2.1.dist-info/RECORD,,
343
+ codex_autorunner/workspace/paths.py,sha256=cb539NvsAn9KvzbyTx4-LbJASimw-8mkt_F-ks-VE9Q,10959
344
+ codex_autorunner-1.3.0.dist-info/licenses/LICENSE,sha256=gfYghezUeimFKy0hTmkOiAAwBY_QdRSXDTypbMtZU0k,1068
345
+ codex_autorunner-1.3.0.dist-info/METADATA,sha256=WJ77fikq7p8JLEhd-KdibGiCXmAOtF_JZe2H9s9bCxY,8914
346
+ codex_autorunner-1.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
347
+ codex_autorunner-1.3.0.dist-info/entry_points.txt,sha256=iPTzENG1MGBhxWF4x8W7VWk3iq4XurmGXMnIch7AVTs,93
348
+ codex_autorunner-1.3.0.dist-info/top_level.txt,sha256=fc2h9rEENr-ZdyLemPJbMcWmsWlz4JuyD1UOkPLLVSQ,17
349
+ codex_autorunner-1.3.0.dist-info/RECORD,,