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.
- codex_autorunner/__init__.py +12 -1
- codex_autorunner/__main__.py +4 -0
- codex_autorunner/agents/codex/harness.py +1 -1
- codex_autorunner/agents/opencode/client.py +68 -35
- codex_autorunner/agents/opencode/constants.py +3 -0
- codex_autorunner/agents/opencode/harness.py +6 -1
- codex_autorunner/agents/opencode/logging.py +21 -5
- codex_autorunner/agents/opencode/run_prompt.py +1 -0
- codex_autorunner/agents/opencode/runtime.py +176 -47
- codex_autorunner/agents/opencode/supervisor.py +36 -48
- codex_autorunner/agents/registry.py +155 -8
- codex_autorunner/api.py +25 -0
- codex_autorunner/bootstrap.py +22 -37
- codex_autorunner/cli.py +5 -1156
- codex_autorunner/codex_cli.py +20 -84
- codex_autorunner/core/__init__.py +4 -0
- codex_autorunner/core/about_car.py +49 -32
- codex_autorunner/core/adapter_utils.py +21 -0
- codex_autorunner/core/app_server_ids.py +59 -0
- codex_autorunner/core/app_server_logging.py +7 -3
- codex_autorunner/core/app_server_prompts.py +27 -260
- codex_autorunner/core/app_server_threads.py +26 -28
- codex_autorunner/core/app_server_utils.py +165 -0
- codex_autorunner/core/archive.py +349 -0
- codex_autorunner/core/codex_runner.py +12 -2
- codex_autorunner/core/config.py +587 -103
- codex_autorunner/core/docs.py +10 -2
- codex_autorunner/core/drafts.py +136 -0
- codex_autorunner/core/engine.py +1531 -866
- codex_autorunner/core/exceptions.py +4 -0
- codex_autorunner/core/flows/__init__.py +25 -0
- codex_autorunner/core/flows/controller.py +202 -0
- codex_autorunner/core/flows/definition.py +82 -0
- codex_autorunner/core/flows/models.py +88 -0
- codex_autorunner/core/flows/reasons.py +52 -0
- codex_autorunner/core/flows/reconciler.py +131 -0
- codex_autorunner/core/flows/runtime.py +382 -0
- codex_autorunner/core/flows/store.py +568 -0
- codex_autorunner/core/flows/transition.py +138 -0
- codex_autorunner/core/flows/ux_helpers.py +257 -0
- codex_autorunner/core/flows/worker_process.py +242 -0
- codex_autorunner/core/git_utils.py +62 -0
- codex_autorunner/core/hub.py +136 -16
- codex_autorunner/core/locks.py +4 -0
- codex_autorunner/core/notifications.py +14 -2
- codex_autorunner/core/ports/__init__.py +28 -0
- codex_autorunner/core/ports/agent_backend.py +150 -0
- codex_autorunner/core/ports/backend_orchestrator.py +41 -0
- codex_autorunner/core/ports/run_event.py +91 -0
- codex_autorunner/core/prompt.py +15 -7
- codex_autorunner/core/redaction.py +29 -0
- codex_autorunner/core/review_context.py +5 -8
- codex_autorunner/core/run_index.py +6 -0
- codex_autorunner/core/runner_process.py +5 -2
- codex_autorunner/core/state.py +0 -88
- codex_autorunner/core/state_roots.py +57 -0
- codex_autorunner/core/supervisor_protocol.py +15 -0
- codex_autorunner/core/supervisor_utils.py +67 -0
- codex_autorunner/core/text_delta_coalescer.py +54 -0
- codex_autorunner/core/ticket_linter_cli.py +201 -0
- codex_autorunner/core/ticket_manager_cli.py +432 -0
- codex_autorunner/core/update.py +24 -16
- codex_autorunner/core/update_paths.py +28 -0
- codex_autorunner/core/update_runner.py +2 -0
- codex_autorunner/core/usage.py +164 -12
- codex_autorunner/core/utils.py +120 -11
- codex_autorunner/discovery.py +2 -4
- codex_autorunner/flows/review/__init__.py +17 -0
- codex_autorunner/{core/review.py → flows/review/service.py} +15 -10
- codex_autorunner/flows/ticket_flow/__init__.py +3 -0
- codex_autorunner/flows/ticket_flow/definition.py +98 -0
- codex_autorunner/integrations/agents/__init__.py +17 -0
- codex_autorunner/integrations/agents/backend_orchestrator.py +284 -0
- codex_autorunner/integrations/agents/codex_adapter.py +90 -0
- codex_autorunner/integrations/agents/codex_backend.py +448 -0
- codex_autorunner/integrations/agents/opencode_adapter.py +108 -0
- codex_autorunner/integrations/agents/opencode_backend.py +598 -0
- codex_autorunner/integrations/agents/runner.py +91 -0
- codex_autorunner/integrations/agents/wiring.py +271 -0
- codex_autorunner/integrations/app_server/client.py +583 -152
- codex_autorunner/integrations/app_server/env.py +2 -107
- codex_autorunner/{core/app_server_events.py → integrations/app_server/event_buffer.py} +15 -8
- codex_autorunner/integrations/app_server/supervisor.py +59 -33
- codex_autorunner/integrations/telegram/adapter.py +204 -165
- codex_autorunner/integrations/telegram/api_schemas.py +120 -0
- codex_autorunner/integrations/telegram/config.py +221 -0
- codex_autorunner/integrations/telegram/constants.py +17 -2
- codex_autorunner/integrations/telegram/dispatch.py +17 -0
- codex_autorunner/integrations/telegram/doctor.py +47 -0
- codex_autorunner/integrations/telegram/handlers/callbacks.py +7 -4
- codex_autorunner/integrations/telegram/handlers/commands/__init__.py +2 -0
- codex_autorunner/integrations/telegram/handlers/commands/execution.py +53 -57
- codex_autorunner/integrations/telegram/handlers/commands/files.py +2 -6
- codex_autorunner/integrations/telegram/handlers/commands/flows.py +1364 -0
- codex_autorunner/integrations/telegram/handlers/commands/formatting.py +1 -1
- codex_autorunner/integrations/telegram/handlers/commands/github.py +41 -582
- codex_autorunner/integrations/telegram/handlers/commands/workspace.py +8 -8
- codex_autorunner/integrations/telegram/handlers/commands_runtime.py +137 -478
- codex_autorunner/integrations/telegram/handlers/commands_spec.py +17 -4
- codex_autorunner/integrations/telegram/handlers/messages.py +121 -9
- codex_autorunner/integrations/telegram/handlers/selections.py +61 -1
- codex_autorunner/integrations/telegram/helpers.py +111 -16
- codex_autorunner/integrations/telegram/outbox.py +208 -37
- codex_autorunner/integrations/telegram/progress_stream.py +3 -10
- codex_autorunner/integrations/telegram/service.py +221 -42
- codex_autorunner/integrations/telegram/state.py +100 -2
- codex_autorunner/integrations/telegram/ticket_flow_bridge.py +611 -0
- codex_autorunner/integrations/telegram/transport.py +39 -4
- codex_autorunner/integrations/telegram/trigger_mode.py +53 -0
- codex_autorunner/manifest.py +2 -0
- codex_autorunner/plugin_api.py +22 -0
- codex_autorunner/routes/__init__.py +37 -67
- codex_autorunner/routes/agents.py +2 -137
- codex_autorunner/routes/analytics.py +3 -0
- codex_autorunner/routes/app_server.py +2 -131
- codex_autorunner/routes/base.py +2 -624
- codex_autorunner/routes/file_chat.py +7 -0
- codex_autorunner/routes/flows.py +7 -0
- codex_autorunner/routes/messages.py +7 -0
- codex_autorunner/routes/repos.py +2 -196
- codex_autorunner/routes/review.py +2 -147
- codex_autorunner/routes/sessions.py +2 -175
- codex_autorunner/routes/settings.py +2 -168
- codex_autorunner/routes/shared.py +2 -275
- codex_autorunner/routes/system.py +4 -188
- codex_autorunner/routes/usage.py +3 -0
- codex_autorunner/routes/voice.py +2 -119
- codex_autorunner/routes/workspace.py +3 -0
- codex_autorunner/server.py +3 -2
- codex_autorunner/static/agentControls.js +41 -11
- codex_autorunner/static/agentEvents.js +248 -0
- codex_autorunner/static/app.js +35 -24
- codex_autorunner/static/archive.js +826 -0
- codex_autorunner/static/archiveApi.js +37 -0
- codex_autorunner/static/autoRefresh.js +36 -8
- codex_autorunner/static/bootstrap.js +1 -0
- codex_autorunner/static/bus.js +1 -0
- codex_autorunner/static/cache.js +1 -0
- codex_autorunner/static/constants.js +20 -4
- codex_autorunner/static/dashboard.js +344 -325
- codex_autorunner/static/diffRenderer.js +37 -0
- codex_autorunner/static/docChatCore.js +324 -0
- codex_autorunner/static/docChatStorage.js +65 -0
- codex_autorunner/static/docChatVoice.js +65 -0
- codex_autorunner/static/docEditor.js +133 -0
- codex_autorunner/static/env.js +1 -0
- codex_autorunner/static/eventSummarizer.js +166 -0
- codex_autorunner/static/fileChat.js +182 -0
- codex_autorunner/static/health.js +155 -0
- codex_autorunner/static/hub.js +126 -185
- codex_autorunner/static/index.html +839 -863
- codex_autorunner/static/liveUpdates.js +1 -0
- codex_autorunner/static/loader.js +1 -0
- codex_autorunner/static/messages.js +873 -0
- codex_autorunner/static/mobileCompact.js +2 -1
- codex_autorunner/static/preserve.js +17 -0
- codex_autorunner/static/settings.js +149 -217
- codex_autorunner/static/smartRefresh.js +52 -0
- codex_autorunner/static/styles.css +8850 -3876
- codex_autorunner/static/tabs.js +175 -11
- codex_autorunner/static/terminal.js +32 -0
- codex_autorunner/static/terminalManager.js +34 -59
- codex_autorunner/static/ticketChatActions.js +333 -0
- codex_autorunner/static/ticketChatEvents.js +16 -0
- codex_autorunner/static/ticketChatStorage.js +16 -0
- codex_autorunner/static/ticketChatStream.js +264 -0
- codex_autorunner/static/ticketEditor.js +844 -0
- codex_autorunner/static/ticketVoice.js +9 -0
- codex_autorunner/static/tickets.js +1988 -0
- codex_autorunner/static/utils.js +43 -3
- codex_autorunner/static/voice.js +1 -0
- codex_autorunner/static/workspace.js +765 -0
- codex_autorunner/static/workspaceApi.js +53 -0
- codex_autorunner/static/workspaceFileBrowser.js +504 -0
- codex_autorunner/surfaces/__init__.py +5 -0
- codex_autorunner/surfaces/cli/__init__.py +6 -0
- codex_autorunner/surfaces/cli/cli.py +1224 -0
- codex_autorunner/surfaces/cli/codex_cli.py +20 -0
- codex_autorunner/surfaces/telegram/__init__.py +3 -0
- codex_autorunner/surfaces/web/__init__.py +1 -0
- codex_autorunner/surfaces/web/app.py +2019 -0
- codex_autorunner/surfaces/web/hub_jobs.py +192 -0
- codex_autorunner/surfaces/web/middleware.py +587 -0
- codex_autorunner/surfaces/web/pty_session.py +370 -0
- codex_autorunner/surfaces/web/review.py +6 -0
- codex_autorunner/surfaces/web/routes/__init__.py +78 -0
- codex_autorunner/surfaces/web/routes/agents.py +138 -0
- codex_autorunner/surfaces/web/routes/analytics.py +277 -0
- codex_autorunner/surfaces/web/routes/app_server.py +132 -0
- codex_autorunner/surfaces/web/routes/archive.py +357 -0
- codex_autorunner/surfaces/web/routes/base.py +615 -0
- codex_autorunner/surfaces/web/routes/file_chat.py +836 -0
- codex_autorunner/surfaces/web/routes/flows.py +1164 -0
- codex_autorunner/surfaces/web/routes/messages.py +459 -0
- codex_autorunner/surfaces/web/routes/repos.py +197 -0
- codex_autorunner/surfaces/web/routes/review.py +148 -0
- codex_autorunner/surfaces/web/routes/sessions.py +176 -0
- codex_autorunner/surfaces/web/routes/settings.py +169 -0
- codex_autorunner/surfaces/web/routes/shared.py +280 -0
- codex_autorunner/surfaces/web/routes/system.py +196 -0
- codex_autorunner/surfaces/web/routes/usage.py +89 -0
- codex_autorunner/surfaces/web/routes/voice.py +120 -0
- codex_autorunner/surfaces/web/routes/workspace.py +271 -0
- codex_autorunner/surfaces/web/runner_manager.py +25 -0
- codex_autorunner/surfaces/web/schemas.py +417 -0
- codex_autorunner/surfaces/web/static_assets.py +490 -0
- codex_autorunner/surfaces/web/static_refresh.py +86 -0
- codex_autorunner/surfaces/web/terminal_sessions.py +78 -0
- codex_autorunner/tickets/__init__.py +27 -0
- codex_autorunner/tickets/agent_pool.py +399 -0
- codex_autorunner/tickets/files.py +89 -0
- codex_autorunner/tickets/frontmatter.py +55 -0
- codex_autorunner/tickets/lint.py +102 -0
- codex_autorunner/tickets/models.py +97 -0
- codex_autorunner/tickets/outbox.py +244 -0
- codex_autorunner/tickets/replies.py +179 -0
- codex_autorunner/tickets/runner.py +881 -0
- codex_autorunner/tickets/spec_ingest.py +77 -0
- codex_autorunner/web/__init__.py +5 -1
- codex_autorunner/web/app.py +2 -1771
- codex_autorunner/web/hub_jobs.py +2 -191
- codex_autorunner/web/middleware.py +2 -587
- codex_autorunner/web/pty_session.py +2 -369
- codex_autorunner/web/runner_manager.py +2 -24
- codex_autorunner/web/schemas.py +2 -396
- codex_autorunner/web/static_assets.py +4 -484
- codex_autorunner/web/static_refresh.py +2 -85
- codex_autorunner/web/terminal_sessions.py +2 -77
- codex_autorunner/workspace/__init__.py +40 -0
- codex_autorunner/workspace/paths.py +335 -0
- codex_autorunner-1.1.0.dist-info/METADATA +154 -0
- codex_autorunner-1.1.0.dist-info/RECORD +308 -0
- {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/WHEEL +1 -1
- codex_autorunner/agents/execution/policy.py +0 -292
- codex_autorunner/agents/factory.py +0 -52
- codex_autorunner/agents/orchestrator.py +0 -358
- codex_autorunner/core/doc_chat.py +0 -1446
- codex_autorunner/core/snapshot.py +0 -580
- codex_autorunner/integrations/github/chatops.py +0 -268
- codex_autorunner/integrations/github/pr_flow.py +0 -1314
- codex_autorunner/routes/docs.py +0 -381
- codex_autorunner/routes/github.py +0 -327
- codex_autorunner/routes/runs.py +0 -250
- codex_autorunner/spec_ingest.py +0 -812
- codex_autorunner/static/docChatActions.js +0 -287
- codex_autorunner/static/docChatEvents.js +0 -300
- codex_autorunner/static/docChatRender.js +0 -205
- codex_autorunner/static/docChatStream.js +0 -361
- codex_autorunner/static/docs.js +0 -20
- codex_autorunner/static/docsClipboard.js +0 -69
- codex_autorunner/static/docsCrud.js +0 -257
- codex_autorunner/static/docsDocUpdates.js +0 -62
- codex_autorunner/static/docsDrafts.js +0 -16
- codex_autorunner/static/docsElements.js +0 -69
- codex_autorunner/static/docsInit.js +0 -285
- codex_autorunner/static/docsParse.js +0 -160
- codex_autorunner/static/docsSnapshot.js +0 -87
- codex_autorunner/static/docsSpecIngest.js +0 -263
- codex_autorunner/static/docsState.js +0 -127
- codex_autorunner/static/docsThreadRegistry.js +0 -44
- codex_autorunner/static/docsUi.js +0 -153
- codex_autorunner/static/docsVoice.js +0 -56
- codex_autorunner/static/github.js +0 -504
- codex_autorunner/static/logs.js +0 -678
- codex_autorunner/static/review.js +0 -157
- codex_autorunner/static/runs.js +0 -418
- codex_autorunner/static/snapshot.js +0 -124
- codex_autorunner/static/state.js +0 -94
- codex_autorunner/static/todoPreview.js +0 -27
- codex_autorunner/workspace.py +0 -16
- codex_autorunner-0.1.2.dist-info/METADATA +0 -249
- codex_autorunner-0.1.2.dist-info/RECORD +0 -222
- /codex_autorunner/{routes → surfaces/web/routes}/terminal_images.py +0 -0
- {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/entry_points.txt +0 -0
- {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/licenses/LICENSE +0 -0
- {codex_autorunner-0.1.2.dist-info → codex_autorunner-1.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// GENERATED FILE - do not edit directly. Source: static_src/
|
|
2
|
+
import { api, resolvePath } from "./utils.js";
|
|
3
|
+
export async function listArchiveSnapshots() {
|
|
4
|
+
const res = (await api("/api/archive/snapshots"));
|
|
5
|
+
return res?.snapshots ?? [];
|
|
6
|
+
}
|
|
7
|
+
export async function fetchArchiveSnapshot(snapshotId, worktreeRepoId) {
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
if (worktreeRepoId)
|
|
10
|
+
params.set("worktree_repo_id", worktreeRepoId);
|
|
11
|
+
const qs = params.toString();
|
|
12
|
+
const url = `/api/archive/snapshots/${encodeURIComponent(snapshotId)}${qs ? `?${qs}` : ""}`;
|
|
13
|
+
return (await api(url));
|
|
14
|
+
}
|
|
15
|
+
export async function listArchiveTree(snapshotId, worktreeRepoId, path = "") {
|
|
16
|
+
const params = new URLSearchParams({ snapshot_id: snapshotId });
|
|
17
|
+
if (worktreeRepoId)
|
|
18
|
+
params.set("worktree_repo_id", worktreeRepoId);
|
|
19
|
+
if (path)
|
|
20
|
+
params.set("path", path);
|
|
21
|
+
const url = `/api/archive/tree?${params.toString()}`;
|
|
22
|
+
return (await api(url));
|
|
23
|
+
}
|
|
24
|
+
export async function readArchiveFile(snapshotId, worktreeRepoId, path) {
|
|
25
|
+
const params = new URLSearchParams({ snapshot_id: snapshotId, path });
|
|
26
|
+
if (worktreeRepoId)
|
|
27
|
+
params.set("worktree_repo_id", worktreeRepoId);
|
|
28
|
+
const url = `/api/archive/file?${params.toString()}`;
|
|
29
|
+
return (await api(url));
|
|
30
|
+
}
|
|
31
|
+
export function downloadArchiveFile(snapshotId, worktreeRepoId, path) {
|
|
32
|
+
const params = new URLSearchParams({ snapshot_id: snapshotId, path });
|
|
33
|
+
if (worktreeRepoId)
|
|
34
|
+
params.set("worktree_repo_id", worktreeRepoId);
|
|
35
|
+
const url = resolvePath(`/api/archive/download?${params.toString()}`);
|
|
36
|
+
window.location.href = url;
|
|
37
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// GENERATED FILE - do not edit directly. Source: static_src/
|
|
1
2
|
/**
|
|
2
3
|
* Auto-refresh utility for managing periodic data fetching.
|
|
3
4
|
*
|
|
@@ -16,6 +17,9 @@ const refreshers = new Map();
|
|
|
16
17
|
let activeTab = null;
|
|
17
18
|
// Track page visibility
|
|
18
19
|
let pageVisible = true;
|
|
20
|
+
// Global enable/disable toggle (e.g., when repo server is offline)
|
|
21
|
+
let globallyEnabled = true;
|
|
22
|
+
let globalPauseReason = null;
|
|
19
23
|
/**
|
|
20
24
|
* Register a component for auto-refresh.
|
|
21
25
|
*
|
|
@@ -43,8 +47,8 @@ export function registerAutoRefresh(id, options) {
|
|
|
43
47
|
// Start timer if applicable
|
|
44
48
|
maybeStartTimer(id, refresher);
|
|
45
49
|
// Immediate refresh if requested
|
|
46
|
-
if (immediate) {
|
|
47
|
-
doRefresh(id, refresher);
|
|
50
|
+
if (immediate && globallyEnabled) {
|
|
51
|
+
void doRefresh(id, refresher, { reason: "manual" });
|
|
48
52
|
}
|
|
49
53
|
return () => unregisterAutoRefresh(id);
|
|
50
54
|
}
|
|
@@ -66,13 +70,35 @@ export function unregisterAutoRefresh(id) {
|
|
|
66
70
|
export function triggerRefresh(id) {
|
|
67
71
|
const refresher = refreshers.get(id);
|
|
68
72
|
if (refresher) {
|
|
69
|
-
doRefresh(id, refresher);
|
|
73
|
+
void doRefresh(id, refresher, { reason: "manual" });
|
|
70
74
|
}
|
|
71
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Globally enable/disable all auto-refresh timers.
|
|
78
|
+
*/
|
|
79
|
+
export function setAutoRefreshEnabled(enabled, reason) {
|
|
80
|
+
globallyEnabled = enabled;
|
|
81
|
+
globalPauseReason = enabled ? null : reason || null;
|
|
82
|
+
refreshers.forEach((refresher, id) => {
|
|
83
|
+
if (!enabled) {
|
|
84
|
+
if (refresher.timerId) {
|
|
85
|
+
clearInterval(refresher.timerId);
|
|
86
|
+
refresher.timerId = null;
|
|
87
|
+
}
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
maybeStartTimer(id, refresher);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export function getAutoRefreshPauseReason() {
|
|
94
|
+
return globalPauseReason;
|
|
95
|
+
}
|
|
72
96
|
/**
|
|
73
97
|
* Check if conditions allow refresh for this refresher.
|
|
74
98
|
*/
|
|
75
99
|
function canRefresh(refresher) {
|
|
100
|
+
if (!globallyEnabled)
|
|
101
|
+
return false;
|
|
76
102
|
// Don't refresh if page is hidden
|
|
77
103
|
if (!pageVisible)
|
|
78
104
|
return false;
|
|
@@ -87,13 +113,13 @@ function canRefresh(refresher) {
|
|
|
87
113
|
/**
|
|
88
114
|
* Perform actual refresh.
|
|
89
115
|
*/
|
|
90
|
-
async function doRefresh(id, refresher) {
|
|
116
|
+
async function doRefresh(id, refresher, ctx) {
|
|
91
117
|
if (!canRefresh(refresher))
|
|
92
118
|
return;
|
|
93
119
|
refresher.isRefreshing = true;
|
|
94
120
|
refresher.lastRefresh = Date.now();
|
|
95
121
|
try {
|
|
96
|
-
await refresher.callback();
|
|
122
|
+
await refresher.callback(ctx);
|
|
97
123
|
}
|
|
98
124
|
catch (err) {
|
|
99
125
|
console.error(`Auto-refresh error for '${id}':`, err);
|
|
@@ -112,12 +138,14 @@ function maybeStartTimer(id, refresher) {
|
|
|
112
138
|
refresher.timerId = null;
|
|
113
139
|
}
|
|
114
140
|
// Only start timer if page is visible and tab is active (or global)
|
|
141
|
+
if (!globallyEnabled)
|
|
142
|
+
return;
|
|
115
143
|
if (!pageVisible)
|
|
116
144
|
return;
|
|
117
145
|
if (refresher.tabId && refresher.tabId !== activeTab)
|
|
118
146
|
return;
|
|
119
147
|
refresher.timerId = setInterval(() => {
|
|
120
|
-
doRefresh(id, refresher);
|
|
148
|
+
void doRefresh(id, refresher, { reason: "timer" });
|
|
121
149
|
}, refresher.interval);
|
|
122
150
|
}
|
|
123
151
|
/**
|
|
@@ -141,7 +169,7 @@ function handleTabChange(tabId) {
|
|
|
141
169
|
const timeSinceLastRefresh = Date.now() - refresher.lastRefresh;
|
|
142
170
|
// Only refresh if it's been at least 5 seconds since last refresh
|
|
143
171
|
if (timeSinceLastRefresh > 5000) {
|
|
144
|
-
doRefresh(id, refresher);
|
|
172
|
+
void doRefresh(id, refresher, { reason: "activation" });
|
|
145
173
|
}
|
|
146
174
|
}
|
|
147
175
|
});
|
|
@@ -158,7 +186,7 @@ function handleVisibilityChange() {
|
|
|
158
186
|
// Refresh if it's been a while since last refresh
|
|
159
187
|
const timeSinceLastRefresh = Date.now() - refresher.lastRefresh;
|
|
160
188
|
if (timeSinceLastRefresh > refresher.interval) {
|
|
161
|
-
doRefresh(id, refresher);
|
|
189
|
+
void doRefresh(id, refresher, { reason: "visibility" });
|
|
162
190
|
}
|
|
163
191
|
});
|
|
164
192
|
}
|
codex_autorunner/static/bus.js
CHANGED
codex_autorunner/static/cache.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
// GENERATED FILE - do not edit directly. Source: static_src/
|
|
1
2
|
export const CONSTANTS = {
|
|
2
3
|
UI: {
|
|
3
|
-
TOAST_DURATION:
|
|
4
|
+
TOAST_DURATION: 5000,
|
|
4
5
|
POLLING_INTERVAL: 15000,
|
|
5
6
|
LOG_SCROLL_THRESHOLD: 50,
|
|
6
7
|
MAX_LOG_LINES_IN_DOM: 2000,
|
|
@@ -36,11 +37,26 @@ export const CONSTANTS = {
|
|
|
36
37
|
},
|
|
37
38
|
PROMPTS: {
|
|
38
39
|
VOICE_TRANSCRIPT_DISCLAIMER: "Note: transcribed from user voice. If confusing or possibly inaccurate and you cannot infer the intention please clarify before proceeding.",
|
|
40
|
+
CAR_CONTEXT_HINT: "Context: read .codex-autorunner/ABOUT_CAR.md for repo-specific rules.",
|
|
41
|
+
},
|
|
42
|
+
KEYWORDS: {
|
|
43
|
+
CAR_CONTEXT: [
|
|
44
|
+
"car",
|
|
45
|
+
"codex",
|
|
46
|
+
"spec",
|
|
47
|
+
"autorunner",
|
|
48
|
+
"workspace",
|
|
49
|
+
"ticket",
|
|
50
|
+
"tickets",
|
|
51
|
+
"context",
|
|
52
|
+
"decision",
|
|
53
|
+
"decisions",
|
|
54
|
+
"handoff",
|
|
55
|
+
"dispatch",
|
|
56
|
+
"inbox",
|
|
57
|
+
],
|
|
39
58
|
},
|
|
40
59
|
API: {
|
|
41
|
-
STATE_ENDPOINT: "/api/state",
|
|
42
|
-
LOGS_ENDPOINT: "/api/logs",
|
|
43
|
-
DOCS_ENDPOINT: "/api/docs",
|
|
44
60
|
TERMINAL_ENDPOINT: "/api/terminal",
|
|
45
61
|
TERMINAL_IMAGE_ENDPOINT: "/api/terminal/image",
|
|
46
62
|
}
|