opencode-orchestrator 0.8.19 → 0.8.21
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.
- package/README.md +12 -0
- package/dist/agents/commander.d.ts +1 -1
- package/dist/agents/definitions.d.ts +1 -1
- package/dist/agents/subagents/planner.d.ts +1 -1
- package/dist/agents/subagents/reviewer.d.ts +1 -1
- package/dist/agents/subagents/worker.d.ts +1 -1
- package/dist/core/agents/config.d.ts +1 -1
- package/dist/core/cache/constants.d.ts +2 -0
- package/dist/core/orchestrator/state.d.ts +2 -2
- package/dist/core/orchestrator/types/task-status.d.ts +2 -1
- package/dist/core/recovery/constants.d.ts +6 -3
- package/dist/core/task/interfaces/index.d.ts +1 -1
- package/dist/core/task/interfaces/task-node.d.ts +1 -1
- package/dist/index.js +317 -173
- package/dist/shared/agent/constants/agent-tokens.d.ts +11 -0
- package/dist/shared/agent/constants/index.d.ts +7 -0
- package/dist/shared/agent/{names.d.ts → constants/names.d.ts} +1 -2
- package/dist/shared/agent/index.d.ts +4 -4
- package/dist/shared/agent/{definition.d.ts → interfaces/agent-definition.d.ts} +1 -1
- package/dist/shared/agent/interfaces/concurrency-config.d.ts +9 -0
- package/dist/shared/agent/interfaces/index.d.ts +5 -0
- package/dist/shared/agent/types/agent-name.d.ts +5 -0
- package/dist/shared/agent/types/index.d.ts +4 -0
- package/dist/shared/cache/constants/cache.d.ts +11 -0
- package/dist/shared/cache/constants/index.d.ts +8 -0
- package/dist/shared/cache/index.d.ts +4 -0
- package/dist/shared/command/index.d.ts +5 -0
- package/dist/shared/command/interfaces/background-task.d.ts +20 -0
- package/dist/shared/command/interfaces/index.d.ts +5 -0
- package/dist/shared/command/interfaces/run-background-options.d.ts +9 -0
- package/dist/shared/command/types/background-task-status.d.ts +4 -0
- package/dist/shared/command/types/index.d.ts +4 -0
- package/dist/shared/core/constants/index.d.ts +7 -0
- package/dist/shared/core/index.d.ts +4 -0
- package/dist/shared/errors/index.d.ts +1 -1
- package/dist/shared/errors/patterns.d.ts +13 -0
- package/dist/shared/errors/retry.d.ts +1 -1
- package/dist/shared/index.d.ts +30 -0
- package/dist/shared/loop/constants/index.d.ts +5 -0
- package/dist/shared/loop/constants/loop.d.ts +17 -0
- package/dist/shared/loop/index.d.ts +6 -0
- package/dist/shared/loop/interfaces/index.d.ts +5 -0
- package/dist/shared/loop/interfaces/todo-stats.d.ts +11 -0
- package/dist/shared/loop/interfaces/todo.d.ts +13 -0
- package/dist/shared/loop/types/index.d.ts +5 -0
- package/dist/shared/loop/types/todo-priority.d.ts +4 -0
- package/dist/shared/loop/types/todo-status.d.ts +4 -0
- package/dist/shared/message/constants/index.d.ts +6 -0
- package/dist/shared/message/index.d.ts +4 -0
- package/dist/shared/notification/constants/index.d.ts +5 -0
- package/dist/shared/notification/constants/toast-duration.d.ts +19 -0
- package/dist/shared/notification/index.d.ts +6 -0
- package/dist/shared/notification/interfaces/index.d.ts +5 -0
- package/dist/shared/notification/interfaces/toast-message.d.ts +13 -0
- package/dist/shared/notification/interfaces/toast-options.d.ts +10 -0
- package/dist/shared/notification/types/index.d.ts +4 -0
- package/dist/shared/notification/types/toast-variant.d.ts +4 -0
- package/dist/shared/recovery/constants/history.d.ts +11 -0
- package/dist/shared/recovery/constants/index.d.ts +5 -0
- package/dist/shared/recovery/constants/recovery.d.ts +13 -0
- package/dist/shared/recovery/index.d.ts +6 -0
- package/dist/shared/recovery/interfaces/error-context.d.ts +11 -0
- package/dist/shared/recovery/interfaces/index.d.ts +5 -0
- package/dist/shared/recovery/interfaces/recovery-record.d.ts +10 -0
- package/dist/shared/recovery/types/index.d.ts +4 -0
- package/dist/shared/recovery/types/recovery-action.d.ts +4 -0
- package/dist/shared/session/constants/index.d.ts +7 -0
- package/dist/shared/session/constants/session-events.d.ts +10 -0
- package/dist/shared/session/index.d.ts +4 -0
- package/dist/shared/{constants → task/constants}/background-task.d.ts +3 -0
- package/dist/shared/task/constants/index.d.ts +7 -0
- package/dist/shared/{constants → task/constants}/parallel-task.d.ts +7 -4
- package/dist/shared/task/index.d.ts +6 -0
- package/dist/shared/task/interfaces/index.d.ts +7 -0
- package/dist/shared/task/interfaces/launch-input.d.ts +11 -0
- package/dist/shared/task/interfaces/parallel-task.d.ts +26 -0
- package/dist/shared/task/interfaces/resume-input.d.ts +16 -0
- package/dist/shared/task/interfaces/task-progress.d.ts +9 -0
- package/dist/shared/task/types/index.d.ts +4 -0
- package/dist/shared/task/types/parallel-task-status.d.ts +4 -0
- package/dist/shared/tool/constants/index.d.ts +5 -0
- package/dist/shared/tool/constants/tool-output.d.ts +9 -0
- package/dist/shared/tool/index.d.ts +4 -0
- package/package.json +1 -1
- package/dist/shared/agent.d.ts +0 -6
- package/dist/shared/constants/index.d.ts +0 -28
- package/dist/shared/constants.d.ts +0 -7
- package/dist/shared/error-patterns.d.ts +0 -6
- /package/dist/shared/{constants → agent/constants}/status.d.ts +0 -0
- /package/dist/shared/{constants → cache/constants}/cache-actions.d.ts +0 -0
- /package/dist/shared/{constants → cache/constants}/filter-status.d.ts +0 -0
- /package/dist/shared/{constants → core/constants}/id-prefix.d.ts +0 -0
- /package/dist/shared/{constants → core/constants}/memory-limits.d.ts +0 -0
- /package/dist/shared/{constants → core/constants}/paths.d.ts +0 -0
- /package/dist/shared/{constants → core/constants}/time.d.ts +0 -0
- /package/dist/shared/{constants → loop/constants}/mission-seal.d.ts +0 -0
- /package/dist/shared/{constants → message/constants}/part-types.d.ts +0 -0
- /package/dist/shared/{constants → message/constants}/prompts.d.ts +0 -0
- /package/dist/shared/{constants → message/constants}/slash-commands.d.ts +0 -0
- /package/dist/shared/{constants → notification/constants}/toast-variants.d.ts +0 -0
- /package/dist/shared/{event-types.d.ts → session/constants/event-types.d.ts} +0 -0
- /package/dist/shared/{constants → task/constants}/background-status.d.ts +0 -0
- /package/dist/shared/{constants → tool/constants}/tool-names.d.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -7,33 +7,72 @@ var __export = (target, all) => {
|
|
|
7
7
|
// src/index.ts
|
|
8
8
|
import { createRequire } from "node:module";
|
|
9
9
|
|
|
10
|
-
// src/shared/constants/
|
|
10
|
+
// src/shared/agent/constants/names.ts
|
|
11
|
+
var AGENT_NAMES = {
|
|
12
|
+
COMMANDER: "Commander",
|
|
13
|
+
PLANNER: "Planner",
|
|
14
|
+
WORKER: "Worker",
|
|
15
|
+
REVIEWER: "Reviewer"
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// src/shared/agent/constants/agent-tokens.ts
|
|
19
|
+
var AGENT_TOKENS = {
|
|
20
|
+
/** Primary agent (Commander) max tokens */
|
|
21
|
+
PRIMARY_MAX_TOKENS: 64e3,
|
|
22
|
+
/** Primary agent thinking budget */
|
|
23
|
+
PRIMARY_THINKING_BUDGET: 32e3,
|
|
24
|
+
/** Subagent max tokens */
|
|
25
|
+
SUBAGENT_MAX_TOKENS: 32e3
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/shared/agent/constants/status.ts
|
|
29
|
+
var AGENT_EMOJI = {
|
|
30
|
+
Commander: "C",
|
|
31
|
+
Planner: "P",
|
|
32
|
+
Worker: "W",
|
|
33
|
+
Reviewer: "R"
|
|
34
|
+
};
|
|
35
|
+
var STATUS_EMOJI = {
|
|
36
|
+
pending: "...",
|
|
37
|
+
running: "RUN",
|
|
38
|
+
completed: "OK",
|
|
39
|
+
done: "OK",
|
|
40
|
+
error: "ERR",
|
|
41
|
+
timeout: "TIM",
|
|
42
|
+
cancelled: "CAN"
|
|
43
|
+
};
|
|
44
|
+
function getStatusEmoji(status) {
|
|
45
|
+
return STATUS_EMOJI[status] ?? "?";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/shared/core/constants/time.ts
|
|
11
49
|
var TIME = {
|
|
12
50
|
SECOND: 1e3,
|
|
13
51
|
MINUTE: 60 * 1e3,
|
|
14
52
|
HOUR: 60 * 60 * 1e3
|
|
15
53
|
};
|
|
16
54
|
|
|
17
|
-
// src/shared/constants/id-prefix.ts
|
|
55
|
+
// src/shared/core/constants/id-prefix.ts
|
|
18
56
|
var ID_PREFIX = {
|
|
19
57
|
TASK: "task_",
|
|
20
58
|
JOB: "job_",
|
|
21
59
|
SESSION: "session_"
|
|
22
60
|
};
|
|
23
61
|
|
|
24
|
-
// src/shared/constants/
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
62
|
+
// src/shared/core/constants/paths.ts
|
|
63
|
+
var PATHS = {
|
|
64
|
+
OPENCODE: ".opencode",
|
|
65
|
+
DOCS: ".opencode/docs",
|
|
66
|
+
ARCHIVE: ".opencode/archive",
|
|
67
|
+
TASK_ARCHIVE: ".opencode/archive/tasks",
|
|
68
|
+
DOC_ARCHIVE: ".opencode/archive/docs",
|
|
69
|
+
TODO: ".opencode/todo.md",
|
|
70
|
+
CONTEXT: ".opencode/context.md",
|
|
71
|
+
SUMMARY: ".opencode/summary.md",
|
|
72
|
+
DOC_METADATA: ".opencode/docs/_metadata.json"
|
|
34
73
|
};
|
|
35
74
|
|
|
36
|
-
// src/shared/constants/memory-limits.ts
|
|
75
|
+
// src/shared/core/constants/memory-limits.ts
|
|
37
76
|
var MEMORY_LIMITS = {
|
|
38
77
|
MAX_TASKS_IN_MEMORY: 1e3,
|
|
39
78
|
MAX_NOTIFICATIONS_PER_PARENT: 100,
|
|
@@ -44,26 +83,186 @@ var MEMORY_LIMITS = {
|
|
|
44
83
|
ERROR_CLEANUP_AGE_MS: 10 * TIME.MINUTE
|
|
45
84
|
};
|
|
46
85
|
|
|
47
|
-
// src/shared/constants/
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
86
|
+
// src/shared/task/constants/parallel-task.ts
|
|
87
|
+
var PARALLEL_TASK = {
|
|
88
|
+
// Task lifecycle (24 hours for long tasks)
|
|
89
|
+
TTL_MS: 24 * TIME.HOUR,
|
|
90
|
+
CLEANUP_DELAY_MS: 10 * TIME.MINUTE,
|
|
91
|
+
MAX_DEPTH: 3,
|
|
92
|
+
// Concurrency limits (safe for most APIs)
|
|
93
|
+
DEFAULT_CONCURRENCY: 3,
|
|
94
|
+
MAX_CONCURRENCY: 10,
|
|
95
|
+
// Sync polling (for delegate_task sync mode)
|
|
96
|
+
SYNC_TIMEOUT_MS: 5 * TIME.MINUTE,
|
|
97
|
+
POLL_INTERVAL_MS: 500,
|
|
98
|
+
MIN_IDLE_TIME_MS: 5 * TIME.SECOND,
|
|
99
|
+
MIN_STABILITY_MS: 3 * TIME.SECOND,
|
|
100
|
+
STABLE_POLLS_REQUIRED: 3,
|
|
101
|
+
MAX_POLL_COUNT: 600
|
|
58
102
|
};
|
|
59
103
|
|
|
60
|
-
// src/shared/constants/background-task.ts
|
|
104
|
+
// src/shared/task/constants/background-task.ts
|
|
61
105
|
var BACKGROUND_TASK = {
|
|
62
106
|
DEFAULT_TIMEOUT_MS: 5 * TIME.MINUTE,
|
|
63
|
-
MAX_OUTPUT_LENGTH: 1e4
|
|
107
|
+
MAX_OUTPUT_LENGTH: 1e4,
|
|
108
|
+
MAX_CONCURRENT: 5,
|
|
109
|
+
POLL_INTERVAL_MS: 500,
|
|
110
|
+
RETRY_COOLDOWN_MS: 30 * TIME.SECOND
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// src/shared/task/constants/background-status.ts
|
|
114
|
+
var BACKGROUND_STATUS = {
|
|
115
|
+
RUNNING: "running",
|
|
116
|
+
DONE: "done",
|
|
117
|
+
ERROR: "error",
|
|
118
|
+
TIMEOUT: "timeout"
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// src/shared/loop/constants/loop.ts
|
|
122
|
+
var LOOP = {
|
|
123
|
+
/** Countdown seconds before auto-continuation */
|
|
124
|
+
COUNTDOWN_SECONDS: 3,
|
|
125
|
+
/** Minimum time between continuation checks */
|
|
126
|
+
MIN_TIME_BETWEEN_CHECKS_MS: 3 * TIME.SECOND,
|
|
127
|
+
/** Grace period after countdown starts (ignore messages) */
|
|
128
|
+
COUNTDOWN_GRACE_PERIOD_MS: 500,
|
|
129
|
+
/** Window to consider abort as recent */
|
|
130
|
+
ABORT_WINDOW_MS: 3 * TIME.SECOND,
|
|
131
|
+
/** Maximum iterations for mission loop */
|
|
132
|
+
DEFAULT_MAX_ITERATIONS: 1e3,
|
|
133
|
+
/** Rust tool timeout */
|
|
134
|
+
RUST_TOOL_TIMEOUT_MS: 60 * TIME.SECOND
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// src/shared/loop/constants/mission-seal.ts
|
|
138
|
+
var MISSION_SEAL = {
|
|
139
|
+
TAG: "mission_seal",
|
|
140
|
+
CONFIRMATION: "SEALED",
|
|
141
|
+
PATTERN: "<mission_seal>SEALED</mission_seal>",
|
|
142
|
+
DEFAULT_MAX_ITERATIONS: 20,
|
|
143
|
+
DEFAULT_COUNTDOWN_SECONDS: 3,
|
|
144
|
+
STATE_FILE: "loop-state.json",
|
|
145
|
+
STOP_COMMAND: "/stop",
|
|
146
|
+
CANCEL_COMMAND: "/cancel"
|
|
147
|
+
};
|
|
148
|
+
var MISSION = MISSION_SEAL;
|
|
149
|
+
|
|
150
|
+
// src/shared/notification/constants/toast-duration.ts
|
|
151
|
+
var TOAST_DURATION = {
|
|
152
|
+
/** Extra short: 1.5 seconds */
|
|
153
|
+
EXTRA_SHORT: 1500,
|
|
154
|
+
/** Short: 2 seconds */
|
|
155
|
+
SHORT: 2 * TIME.SECOND,
|
|
156
|
+
/** Medium: 3 seconds */
|
|
157
|
+
MEDIUM: 3 * TIME.SECOND,
|
|
158
|
+
/** Default: 4 seconds */
|
|
159
|
+
DEFAULT: 4 * TIME.SECOND,
|
|
160
|
+
/** Long: 5 seconds */
|
|
161
|
+
LONG: 5 * TIME.SECOND,
|
|
162
|
+
/** Extended: 7 seconds */
|
|
163
|
+
EXTENDED: 7 * TIME.SECOND,
|
|
164
|
+
/** Persistent: 0 (stays until dismissed) */
|
|
165
|
+
PERSISTENT: 0
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// src/shared/recovery/constants/recovery.ts
|
|
169
|
+
var RECOVERY = {
|
|
170
|
+
/** Maximum recovery attempts per session */
|
|
171
|
+
MAX_ATTEMPTS: 3,
|
|
172
|
+
/** Minimum time between recovery attempts */
|
|
173
|
+
MIN_INTERVAL_MS: 30 * TIME.SECOND,
|
|
174
|
+
/** Base delay for retry backoff calculation */
|
|
175
|
+
BASE_DELAY_MS: 1 * TIME.SECOND,
|
|
176
|
+
/** Maximum retry multiplier */
|
|
177
|
+
MAX_RETRY_MULTIPLIER: 5
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// src/shared/recovery/constants/history.ts
|
|
181
|
+
var HISTORY = {
|
|
182
|
+
/** Recovery history max entries */
|
|
183
|
+
MAX_RECOVERY: 100,
|
|
184
|
+
/** Toast history max entries */
|
|
185
|
+
MAX_TOAST: 50,
|
|
186
|
+
/** Progress store max entries */
|
|
187
|
+
MAX_PROGRESS: 100
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// src/shared/cache/constants/cache.ts
|
|
191
|
+
var CACHE = {
|
|
192
|
+
/** Default cache TTL (24 hours) */
|
|
193
|
+
DEFAULT_TTL_MS: 24 * TIME.HOUR,
|
|
194
|
+
/** Maximum cache entries */
|
|
195
|
+
MAX_ENTRIES: 100,
|
|
196
|
+
/** Session TTL (24 hours for long tasks) */
|
|
197
|
+
SESSION_TTL_MS: 24 * TIME.HOUR
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// src/shared/cache/constants/cache-actions.ts
|
|
201
|
+
var CACHE_ACTIONS = {
|
|
202
|
+
LIST: "list",
|
|
203
|
+
GET: "get",
|
|
204
|
+
CLEAR: "clear",
|
|
205
|
+
STATS: "stats"
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// src/shared/cache/constants/filter-status.ts
|
|
209
|
+
var FILTER_STATUS = {
|
|
210
|
+
ALL: "all",
|
|
211
|
+
RUNNING: "running",
|
|
212
|
+
DONE: "done",
|
|
213
|
+
COMPLETED: "completed",
|
|
214
|
+
ERROR: "error",
|
|
215
|
+
PENDING: "pending"
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// src/shared/session/constants/session-events.ts
|
|
219
|
+
var SESSION_EVENTS = {
|
|
220
|
+
IDLE: "session.idle",
|
|
221
|
+
DELETED: "session.deleted",
|
|
222
|
+
CREATED: "session.created",
|
|
223
|
+
ERROR: "session.error"
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// src/shared/session/constants/event-types.ts
|
|
227
|
+
var TASK_EVENTS = {
|
|
228
|
+
STARTED: "task.started",
|
|
229
|
+
COMPLETED: "task.completed",
|
|
230
|
+
FAILED: "task.failed",
|
|
231
|
+
CANCELLED: "task.cancelled"
|
|
232
|
+
};
|
|
233
|
+
var TODO_EVENTS = {
|
|
234
|
+
CREATED: "todo.created",
|
|
235
|
+
UPDATED: "todo.updated",
|
|
236
|
+
COMPLETED: "todo.completed"
|
|
237
|
+
};
|
|
238
|
+
var SESSION_EVENTS2 = {
|
|
239
|
+
IDLE: "session.idle",
|
|
240
|
+
BUSY: "session.busy",
|
|
241
|
+
ERROR: "session.error",
|
|
242
|
+
DELETED: "session.deleted"
|
|
243
|
+
};
|
|
244
|
+
var DOCUMENT_EVENTS = {
|
|
245
|
+
CACHED: "document.cached",
|
|
246
|
+
EXPIRED: "document.expired"
|
|
247
|
+
};
|
|
248
|
+
var MISSION_EVENTS = {
|
|
249
|
+
COMPLETE: "mission.complete",
|
|
250
|
+
FAILED: "mission.failed",
|
|
251
|
+
ALL_TASKS_COMPLETE: "all_tasks.complete"
|
|
252
|
+
};
|
|
253
|
+
var SPECIAL_EVENTS = {
|
|
254
|
+
WILDCARD: "*"
|
|
255
|
+
};
|
|
256
|
+
var EVENT_TYPES = {
|
|
257
|
+
...TASK_EVENTS,
|
|
258
|
+
...TODO_EVENTS,
|
|
259
|
+
...SESSION_EVENTS2,
|
|
260
|
+
...DOCUMENT_EVENTS,
|
|
261
|
+
...MISSION_EVENTS,
|
|
262
|
+
...SPECIAL_EVENTS
|
|
64
263
|
};
|
|
65
264
|
|
|
66
|
-
// src/shared/constants/tool-names.ts
|
|
265
|
+
// src/shared/tool/constants/tool-names.ts
|
|
67
266
|
var TOOL_NAMES = {
|
|
68
267
|
// Parallel task tools
|
|
69
268
|
DELEGATE_TASK: "delegate_task",
|
|
@@ -89,40 +288,15 @@ var TOOL_NAMES = {
|
|
|
89
288
|
SLASHCOMMAND: "slashcommand"
|
|
90
289
|
};
|
|
91
290
|
|
|
92
|
-
// src/shared/constants/
|
|
93
|
-
var
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
DEFAULT_COUNTDOWN_SECONDS: 3,
|
|
99
|
-
STATE_FILE: "loop-state.json",
|
|
100
|
-
STOP_COMMAND: "/stop",
|
|
101
|
-
CANCEL_COMMAND: "/cancel"
|
|
102
|
-
};
|
|
103
|
-
var MISSION = MISSION_SEAL;
|
|
104
|
-
|
|
105
|
-
// src/shared/constants/status.ts
|
|
106
|
-
var AGENT_EMOJI = {
|
|
107
|
-
Commander: "C",
|
|
108
|
-
Planner: "P",
|
|
109
|
-
Worker: "W",
|
|
110
|
-
Reviewer: "R"
|
|
111
|
-
};
|
|
112
|
-
var STATUS_EMOJI = {
|
|
113
|
-
pending: "...",
|
|
114
|
-
running: "RUN",
|
|
115
|
-
completed: "OK",
|
|
116
|
-
done: "OK",
|
|
117
|
-
error: "ERR",
|
|
118
|
-
timeout: "TIM",
|
|
119
|
-
cancelled: "CAN"
|
|
291
|
+
// src/shared/tool/constants/tool-output.ts
|
|
292
|
+
var TOOL_OUTPUT = {
|
|
293
|
+
/** Maximum length for healthy output capture */
|
|
294
|
+
MAX_HEALTHY_OUTPUT_LENGTH: 1e3,
|
|
295
|
+
/** Threshold for considering output small enough to capture */
|
|
296
|
+
SMALL_OUTPUT_THRESHOLD: 5e3
|
|
120
297
|
};
|
|
121
|
-
function getStatusEmoji(status) {
|
|
122
|
-
return STATUS_EMOJI[status] ?? "?";
|
|
123
|
-
}
|
|
124
298
|
|
|
125
|
-
// src/shared/constants/part-types.ts
|
|
299
|
+
// src/shared/message/constants/part-types.ts
|
|
126
300
|
var PART_TYPES = {
|
|
127
301
|
TEXT: "text",
|
|
128
302
|
REASONING: "reasoning",
|
|
@@ -130,46 +304,45 @@ var PART_TYPES = {
|
|
|
130
304
|
TOOL_RESULT: "tool_result"
|
|
131
305
|
};
|
|
132
306
|
|
|
133
|
-
// src/shared/constants/prompts.ts
|
|
307
|
+
// src/shared/message/constants/prompts.ts
|
|
134
308
|
var PROMPTS = {
|
|
135
309
|
CONTINUE: "continue",
|
|
136
310
|
CONTINUE_PREVIOUS: "continue previous work",
|
|
137
311
|
CONTINUE_DEFAULT: "continue from where we left off"
|
|
138
312
|
};
|
|
139
313
|
|
|
140
|
-
// src/shared/
|
|
141
|
-
var
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
RUNNING: "running",
|
|
151
|
-
DONE: "done",
|
|
152
|
-
ERROR: "error",
|
|
153
|
-
TIMEOUT: "timeout"
|
|
314
|
+
// src/shared/errors/patterns.ts
|
|
315
|
+
var ERROR_PATTERNS = {
|
|
316
|
+
TOOL_RESULT_MISSING: /tool_result_missing|tool result.*missing/i,
|
|
317
|
+
THINKING_BLOCK_ORDER: /thinking.*block.*order|thinking_block_order/i,
|
|
318
|
+
THINKING_DISABLED: /thinking.*disabled|thinking_disabled_violation/i,
|
|
319
|
+
RATE_LIMIT: /rate.?limit|too.?many.?requests|429/i,
|
|
320
|
+
CONTEXT_OVERFLOW: /context.?length|token.?limit|maximum.?context/i,
|
|
321
|
+
MESSAGE_ABORTED: /MessageAbortedError|AbortError/i,
|
|
322
|
+
NETWORK_ERROR: /network|ECONNREFUSED|ETIMEDOUT|fetch failed/i,
|
|
323
|
+
AUTH_ERROR: /unauthorized|401|403|invalid.*token/i
|
|
154
324
|
};
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
325
|
+
var ERROR_TYPE = {
|
|
326
|
+
TOOL_RESULT_MISSING: "TOOL_RESULT_MISSING",
|
|
327
|
+
THINKING_BLOCK_ORDER: "THINKING_BLOCK_ORDER",
|
|
328
|
+
THINKING_DISABLED: "THINKING_DISABLED",
|
|
329
|
+
RATE_LIMIT: "RATE_LIMIT",
|
|
330
|
+
CONTEXT_OVERFLOW: "CONTEXT_OVERFLOW",
|
|
331
|
+
MESSAGE_ABORTED: "MESSAGE_ABORTED",
|
|
332
|
+
NETWORK_ERROR: "NETWORK_ERROR",
|
|
333
|
+
AUTH_ERROR: "AUTH_ERROR"
|
|
164
334
|
};
|
|
165
335
|
|
|
166
|
-
// src/shared/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
336
|
+
// src/shared/errors/detection.ts
|
|
337
|
+
function detectErrorType(error45) {
|
|
338
|
+
const errorStr = typeof error45 === "string" ? error45 : error45?.message || error45?.name || String(error45);
|
|
339
|
+
for (const [type, pattern] of Object.entries(ERROR_PATTERNS)) {
|
|
340
|
+
if (pattern.test(errorStr)) {
|
|
341
|
+
return type;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
173
346
|
|
|
174
347
|
// src/core/agents/consts/task-status.const.ts
|
|
175
348
|
var TASK_STATUS = {
|
|
@@ -191,8 +364,8 @@ var TODO_STATUS = {
|
|
|
191
364
|
// src/core/orchestrator/state.ts
|
|
192
365
|
var state = {
|
|
193
366
|
missionActive: false,
|
|
194
|
-
maxIterations:
|
|
195
|
-
maxRetries:
|
|
367
|
+
maxIterations: LOOP.DEFAULT_MAX_ITERATIONS,
|
|
368
|
+
maxRetries: RECOVERY.MAX_ATTEMPTS,
|
|
196
369
|
sessions: /* @__PURE__ */ new Map()
|
|
197
370
|
};
|
|
198
371
|
|
|
@@ -13787,7 +13960,7 @@ Use check_background to get results.
|
|
|
13787
13960
|
args: {
|
|
13788
13961
|
command: tool.schema.string().describe("Shell command to execute"),
|
|
13789
13962
|
cwd: tool.schema.string().optional().describe("Working directory"),
|
|
13790
|
-
timeout: tool.schema.number().optional().describe(
|
|
13963
|
+
timeout: tool.schema.number().optional().describe(`Timeout in ms (default: ${BACKGROUND_TASK.DEFAULT_TIMEOUT_MS})`),
|
|
13791
13964
|
label: tool.schema.string().optional().describe("Task label")
|
|
13792
13965
|
},
|
|
13793
13966
|
async execute(args) {
|
|
@@ -13795,7 +13968,7 @@ Use check_background to get results.
|
|
|
13795
13968
|
const task = backgroundTaskManager.run({
|
|
13796
13969
|
command,
|
|
13797
13970
|
cwd: cwd || process.cwd(),
|
|
13798
|
-
timeout: timeout ||
|
|
13971
|
+
timeout: timeout || BACKGROUND_TASK.DEFAULT_TIMEOUT_MS,
|
|
13799
13972
|
label
|
|
13800
13973
|
});
|
|
13801
13974
|
const displayLabel = label ? ` (${label})` : "";
|
|
@@ -14263,7 +14436,6 @@ function initToastClient(client) {
|
|
|
14263
14436
|
tuiClient = client;
|
|
14264
14437
|
}
|
|
14265
14438
|
var toasts = [];
|
|
14266
|
-
var MAX_HISTORY = 50;
|
|
14267
14439
|
var handlers = [];
|
|
14268
14440
|
function show(options) {
|
|
14269
14441
|
const toast = {
|
|
@@ -14276,7 +14448,7 @@ function show(options) {
|
|
|
14276
14448
|
dismissed: false
|
|
14277
14449
|
};
|
|
14278
14450
|
toasts.push(toast);
|
|
14279
|
-
if (toasts.length >
|
|
14451
|
+
if (toasts.length > HISTORY.MAX_TOAST) {
|
|
14280
14452
|
toasts.shift();
|
|
14281
14453
|
}
|
|
14282
14454
|
for (const handler of handlers) {
|
|
@@ -14333,19 +14505,19 @@ var sessionCreated = (sessionId, agent) => show({
|
|
|
14333
14505
|
title: "Session Created",
|
|
14334
14506
|
message: `${agent} - ${sessionId.slice(0, 12)}...`,
|
|
14335
14507
|
variant: "info",
|
|
14336
|
-
duration:
|
|
14508
|
+
duration: TOAST_DURATION.SHORT
|
|
14337
14509
|
});
|
|
14338
14510
|
var sessionResumed = (sessionId, agent) => show({
|
|
14339
14511
|
title: "Session Resumed",
|
|
14340
14512
|
message: `${agent} - ${sessionId.slice(0, 12)}...`,
|
|
14341
14513
|
variant: "info",
|
|
14342
|
-
duration:
|
|
14514
|
+
duration: TOAST_DURATION.SHORT
|
|
14343
14515
|
});
|
|
14344
14516
|
var sessionCompleted = (sessionId, duration3) => show({
|
|
14345
14517
|
title: "Session Completed",
|
|
14346
14518
|
message: `${sessionId.slice(0, 12)}... (${duration3})`,
|
|
14347
14519
|
variant: "success",
|
|
14348
|
-
duration:
|
|
14520
|
+
duration: TOAST_DURATION.MEDIUM
|
|
14349
14521
|
});
|
|
14350
14522
|
|
|
14351
14523
|
// src/core/notification/presets/parallel.ts
|
|
@@ -14353,19 +14525,19 @@ var parallelTasksLaunched = (count, agents) => show({
|
|
|
14353
14525
|
title: "Parallel Tasks Launched",
|
|
14354
14526
|
message: `${count} tasks: ${agents.join(", ")}`,
|
|
14355
14527
|
variant: "info",
|
|
14356
|
-
duration:
|
|
14528
|
+
duration: TOAST_DURATION.DEFAULT
|
|
14357
14529
|
});
|
|
14358
14530
|
var concurrencyAcquired = (agent, slot) => show({
|
|
14359
14531
|
title: "Concurrency Slot",
|
|
14360
14532
|
message: `${agent} acquired ${slot}`,
|
|
14361
14533
|
variant: "info",
|
|
14362
|
-
duration:
|
|
14534
|
+
duration: TOAST_DURATION.SHORT
|
|
14363
14535
|
});
|
|
14364
14536
|
var concurrencyReleased = (agent) => show({
|
|
14365
14537
|
title: "Slot Released",
|
|
14366
14538
|
message: agent,
|
|
14367
14539
|
variant: "info",
|
|
14368
|
-
duration:
|
|
14540
|
+
duration: TOAST_DURATION.EXTRA_SHORT
|
|
14369
14541
|
});
|
|
14370
14542
|
|
|
14371
14543
|
// src/core/notification/presets/mission.ts
|
|
@@ -14387,19 +14559,19 @@ var toolExecuted = (toolName, target) => show({
|
|
|
14387
14559
|
title: toolName,
|
|
14388
14560
|
message: target.slice(0, 80),
|
|
14389
14561
|
variant: "info",
|
|
14390
|
-
duration:
|
|
14562
|
+
duration: TOAST_DURATION.SHORT
|
|
14391
14563
|
});
|
|
14392
14564
|
var documentCached = (filename) => show({
|
|
14393
14565
|
title: "Document Cached",
|
|
14394
14566
|
message: `${PATHS.DOCS}/${filename}`,
|
|
14395
14567
|
variant: "info",
|
|
14396
|
-
duration:
|
|
14568
|
+
duration: TOAST_DURATION.SHORT
|
|
14397
14569
|
});
|
|
14398
14570
|
var researchStarted = (topic) => show({
|
|
14399
14571
|
title: "Research Started",
|
|
14400
14572
|
message: topic,
|
|
14401
14573
|
variant: "info",
|
|
14402
|
-
duration:
|
|
14574
|
+
duration: TOAST_DURATION.MEDIUM
|
|
14403
14575
|
});
|
|
14404
14576
|
|
|
14405
14577
|
// src/core/notification/presets/warnings.ts
|
|
@@ -14407,25 +14579,25 @@ var warningRateLimited = () => show({
|
|
|
14407
14579
|
title: "Rate Limited",
|
|
14408
14580
|
message: "Waiting before retry...",
|
|
14409
14581
|
variant: "warning",
|
|
14410
|
-
duration:
|
|
14582
|
+
duration: TOAST_DURATION.LONG
|
|
14411
14583
|
});
|
|
14412
14584
|
var errorRecovery = (action) => show({
|
|
14413
14585
|
title: "Error Recovery",
|
|
14414
14586
|
message: `Attempting: ${action}`,
|
|
14415
14587
|
variant: "warning",
|
|
14416
|
-
duration:
|
|
14588
|
+
duration: TOAST_DURATION.MEDIUM
|
|
14417
14589
|
});
|
|
14418
14590
|
var warningMaxDepth = (depth) => show({
|
|
14419
14591
|
title: "Max Depth Reached",
|
|
14420
14592
|
message: `Recursion blocked at depth ${depth}`,
|
|
14421
14593
|
variant: "warning",
|
|
14422
|
-
duration:
|
|
14594
|
+
duration: TOAST_DURATION.LONG
|
|
14423
14595
|
});
|
|
14424
14596
|
var warningMaxRetries = () => show({
|
|
14425
14597
|
title: "Max Retries Exceeded",
|
|
14426
14598
|
message: "Automatic recovery has stopped. Manual intervention may be needed.",
|
|
14427
14599
|
variant: "error",
|
|
14428
|
-
duration:
|
|
14600
|
+
duration: TOAST_DURATION.PERSISTENT
|
|
14429
14601
|
});
|
|
14430
14602
|
|
|
14431
14603
|
// src/core/notification/presets.ts
|
|
@@ -15044,10 +15216,6 @@ You will be notified when ALL tasks complete. Continue productive work.`;
|
|
|
15044
15216
|
};
|
|
15045
15217
|
|
|
15046
15218
|
// src/core/agents/manager/event-handler.ts
|
|
15047
|
-
var SESSION_EVENTS = {
|
|
15048
|
-
IDLE: "session.idle",
|
|
15049
|
-
DELETED: "session.deleted"
|
|
15050
|
-
};
|
|
15051
15219
|
var EventHandler = class {
|
|
15052
15220
|
constructor(client, store, concurrency, findBySession, notifyParentIfAllComplete, scheduleCleanup, validateSessionHasOutput2) {
|
|
15053
15221
|
this.client = client;
|
|
@@ -15284,11 +15452,11 @@ var parallelAgentManager = {
|
|
|
15284
15452
|
};
|
|
15285
15453
|
|
|
15286
15454
|
// src/tools/parallel/delegate-task.ts
|
|
15287
|
-
var MIN_IDLE_TIME_MS =
|
|
15288
|
-
var POLL_INTERVAL_MS =
|
|
15289
|
-
var SYNC_TIMEOUT_MS =
|
|
15290
|
-
var MAX_POLL_COUNT =
|
|
15291
|
-
var STABLE_POLLS_REQUIRED =
|
|
15455
|
+
var MIN_IDLE_TIME_MS = PARALLEL_TASK.MIN_IDLE_TIME_MS;
|
|
15456
|
+
var POLL_INTERVAL_MS = PARALLEL_TASK.POLL_INTERVAL_MS;
|
|
15457
|
+
var SYNC_TIMEOUT_MS = PARALLEL_TASK.SYNC_TIMEOUT_MS;
|
|
15458
|
+
var MAX_POLL_COUNT = PARALLEL_TASK.MAX_POLL_COUNT;
|
|
15459
|
+
var STABLE_POLLS_REQUIRED = PARALLEL_TASK.STABLE_POLLS_REQUIRED;
|
|
15292
15460
|
async function validateSessionHasOutput(session, sessionID) {
|
|
15293
15461
|
try {
|
|
15294
15462
|
const response = await session.messages({ path: { id: sessionID } });
|
|
@@ -15603,7 +15771,7 @@ function createAsyncAgentTools(manager, client) {
|
|
|
15603
15771
|
// src/core/cache/constants.ts
|
|
15604
15772
|
var CACHE_DIR = PATHS.DOCS;
|
|
15605
15773
|
var METADATA_FILE = PATHS.DOC_METADATA;
|
|
15606
|
-
var DEFAULT_TTL_MS =
|
|
15774
|
+
var DEFAULT_TTL_MS = CACHE.DEFAULT_TTL_MS;
|
|
15607
15775
|
|
|
15608
15776
|
// src/core/cache/operations.ts
|
|
15609
15777
|
import * as fs4 from "node:fs/promises";
|
|
@@ -16386,7 +16554,6 @@ ${r.content}
|
|
|
16386
16554
|
// src/core/progress/store.ts
|
|
16387
16555
|
var progressHistory = /* @__PURE__ */ new Map();
|
|
16388
16556
|
var sessionStartTimes = /* @__PURE__ */ new Map();
|
|
16389
|
-
var MAX_HISTORY2 = 100;
|
|
16390
16557
|
function startSession(sessionId) {
|
|
16391
16558
|
sessionStartTimes.set(sessionId, /* @__PURE__ */ new Date());
|
|
16392
16559
|
progressHistory.set(sessionId, []);
|
|
@@ -16419,7 +16586,7 @@ function recordSnapshot(sessionId, data) {
|
|
|
16419
16586
|
};
|
|
16420
16587
|
const history = progressHistory.get(sessionId) || [];
|
|
16421
16588
|
history.push(snapshot);
|
|
16422
|
-
if (history.length >
|
|
16589
|
+
if (history.length > HISTORY.MAX_PROGRESS) {
|
|
16423
16590
|
history.shift();
|
|
16424
16591
|
}
|
|
16425
16592
|
progressHistory.set(sessionId, history);
|
|
@@ -16466,33 +16633,10 @@ function formatCompact2(sessionId) {
|
|
|
16466
16633
|
return formatCompact(snapshot);
|
|
16467
16634
|
}
|
|
16468
16635
|
|
|
16469
|
-
// src/shared/errors/patterns.ts
|
|
16470
|
-
var ERROR_PATTERNS = {
|
|
16471
|
-
TOOL_RESULT_MISSING: /tool_result_missing|tool result.*missing/i,
|
|
16472
|
-
THINKING_BLOCK_ORDER: /thinking.*block.*order|thinking_block_order/i,
|
|
16473
|
-
THINKING_DISABLED: /thinking.*disabled|thinking_disabled_violation/i,
|
|
16474
|
-
RATE_LIMIT: /rate.?limit|too.?many.?requests|429/i,
|
|
16475
|
-
CONTEXT_OVERFLOW: /context.?length|token.?limit|maximum.?context/i,
|
|
16476
|
-
MESSAGE_ABORTED: /MessageAbortedError|AbortError/i,
|
|
16477
|
-
NETWORK_ERROR: /network|ECONNREFUSED|ETIMEDOUT|fetch failed/i,
|
|
16478
|
-
AUTH_ERROR: /unauthorized|401|403|invalid.*token/i
|
|
16479
|
-
};
|
|
16480
|
-
|
|
16481
|
-
// src/shared/errors/detection.ts
|
|
16482
|
-
function detectErrorType(error45) {
|
|
16483
|
-
const errorStr = typeof error45 === "string" ? error45 : error45?.message || error45?.name || String(error45);
|
|
16484
|
-
for (const [type, pattern] of Object.entries(ERROR_PATTERNS)) {
|
|
16485
|
-
if (pattern.test(errorStr)) {
|
|
16486
|
-
return type;
|
|
16487
|
-
}
|
|
16488
|
-
}
|
|
16489
|
-
return null;
|
|
16490
|
-
}
|
|
16491
|
-
|
|
16492
16636
|
// src/core/recovery/constants.ts
|
|
16493
|
-
var MAX_RETRIES =
|
|
16494
|
-
var BASE_DELAY =
|
|
16495
|
-
var
|
|
16637
|
+
var MAX_RETRIES = RECOVERY.MAX_ATTEMPTS;
|
|
16638
|
+
var BASE_DELAY = RECOVERY.BASE_DELAY_MS;
|
|
16639
|
+
var MAX_HISTORY = HISTORY.MAX_RECOVERY;
|
|
16496
16640
|
|
|
16497
16641
|
// src/core/recovery/patterns.ts
|
|
16498
16642
|
var errorPatterns = [
|
|
@@ -16577,7 +16721,7 @@ function handleError(context) {
|
|
|
16577
16721
|
action,
|
|
16578
16722
|
timestamp: /* @__PURE__ */ new Date()
|
|
16579
16723
|
});
|
|
16580
|
-
if (recoveryHistory.length >
|
|
16724
|
+
if (recoveryHistory.length > MAX_HISTORY) {
|
|
16581
16725
|
recoveryHistory.shift();
|
|
16582
16726
|
}
|
|
16583
16727
|
return action;
|
|
@@ -16631,7 +16775,7 @@ async function handleSessionError(client, sessionID, error45, properties) {
|
|
|
16631
16775
|
return false;
|
|
16632
16776
|
}
|
|
16633
16777
|
const now = Date.now();
|
|
16634
|
-
if (now - state2.lastErrorTime <
|
|
16778
|
+
if (now - state2.lastErrorTime < BACKGROUND_TASK.RETRY_COOLDOWN_MS) {
|
|
16635
16779
|
log2("[session-recovery] Too soon since last error, skipping", { sessionID });
|
|
16636
16780
|
return false;
|
|
16637
16781
|
}
|
|
@@ -16643,7 +16787,7 @@ async function handleSessionError(client, sessionID, error45, properties) {
|
|
|
16643
16787
|
return false;
|
|
16644
16788
|
}
|
|
16645
16789
|
log2("[session-recovery] Detected error type", { sessionID, errorType, errorCount: state2.errorCount });
|
|
16646
|
-
if (state2.errorCount >
|
|
16790
|
+
if (state2.errorCount > RECOVERY.MAX_ATTEMPTS) {
|
|
16647
16791
|
log2("[session-recovery] Max recovery attempts exceeded", { sessionID });
|
|
16648
16792
|
presets.warningMaxRetries();
|
|
16649
16793
|
return false;
|
|
@@ -16653,16 +16797,16 @@ async function handleSessionError(client, sessionID, error45, properties) {
|
|
|
16653
16797
|
let recoveryPrompt = null;
|
|
16654
16798
|
let toastMessage = null;
|
|
16655
16799
|
switch (errorType) {
|
|
16656
|
-
case
|
|
16800
|
+
case ERROR_TYPE.TOOL_RESULT_MISSING:
|
|
16657
16801
|
recoveryPrompt = TOOL_CRASH_RECOVERY_PROMPT;
|
|
16658
16802
|
toastMessage = "Tool Crash Recovery";
|
|
16659
16803
|
break;
|
|
16660
|
-
case
|
|
16661
|
-
case
|
|
16804
|
+
case ERROR_TYPE.THINKING_BLOCK_ORDER:
|
|
16805
|
+
case ERROR_TYPE.THINKING_DISABLED:
|
|
16662
16806
|
recoveryPrompt = THINKING_RECOVERY_PROMPT;
|
|
16663
16807
|
toastMessage = "Thinking Block Recovery";
|
|
16664
16808
|
break;
|
|
16665
|
-
case
|
|
16809
|
+
case ERROR_TYPE.RATE_LIMIT:
|
|
16666
16810
|
const ctx = {
|
|
16667
16811
|
sessionId: sessionID,
|
|
16668
16812
|
error: error45 instanceof Error ? error45 : new Error(String(error45)),
|
|
@@ -16676,11 +16820,11 @@ async function handleSessionError(client, sessionID, error45, properties) {
|
|
|
16676
16820
|
}
|
|
16677
16821
|
state2.isRecovering = false;
|
|
16678
16822
|
return true;
|
|
16679
|
-
case
|
|
16823
|
+
case ERROR_TYPE.CONTEXT_OVERFLOW:
|
|
16680
16824
|
toastMessage = "Context Overflow - Consider compaction";
|
|
16681
16825
|
state2.isRecovering = false;
|
|
16682
16826
|
return false;
|
|
16683
|
-
case
|
|
16827
|
+
case ERROR_TYPE.MESSAGE_ABORTED:
|
|
16684
16828
|
log2("[session-recovery] Message aborted by user, not recovering", { sessionID });
|
|
16685
16829
|
state2.isRecovering = false;
|
|
16686
16830
|
return false;
|
|
@@ -16825,10 +16969,10 @@ After launching, use list_tasks to monitor progress.
|
|
|
16825
16969
|
// src/core/loop/todo-continuation.ts
|
|
16826
16970
|
var sessionStates = /* @__PURE__ */ new Map();
|
|
16827
16971
|
var COUNTDOWN_SECONDS = 2;
|
|
16828
|
-
var TOAST_DURATION_MS =
|
|
16829
|
-
var MIN_TIME_BETWEEN_CONTINUATIONS_MS =
|
|
16830
|
-
var COUNTDOWN_GRACE_PERIOD_MS =
|
|
16831
|
-
var ABORT_WINDOW_MS =
|
|
16972
|
+
var TOAST_DURATION_MS = TOAST_DURATION.EXTRA_SHORT;
|
|
16973
|
+
var MIN_TIME_BETWEEN_CONTINUATIONS_MS = LOOP.MIN_TIME_BETWEEN_CHECKS_MS;
|
|
16974
|
+
var COUNTDOWN_GRACE_PERIOD_MS = LOOP.COUNTDOWN_GRACE_PERIOD_MS;
|
|
16975
|
+
var ABORT_WINDOW_MS = LOOP.ABORT_WINDOW_MS;
|
|
16832
16976
|
function getState2(sessionID) {
|
|
16833
16977
|
let state2 = sessionStates.get(sessionID);
|
|
16834
16978
|
if (!state2) {
|
|
@@ -16981,7 +17125,7 @@ async function handleSessionIdle(client, sessionID, mainSessionID) {
|
|
|
16981
17125
|
} catch {
|
|
16982
17126
|
log2("[todo-continuation] Failed to re-fetch todos for continuation", { sessionID });
|
|
16983
17127
|
}
|
|
16984
|
-
}, COUNTDOWN_SECONDS *
|
|
17128
|
+
}, COUNTDOWN_SECONDS * TIME.SECOND);
|
|
16985
17129
|
}
|
|
16986
17130
|
function handleUserMessage(sessionID) {
|
|
16987
17131
|
const state2 = getState2(sessionID);
|
|
@@ -17160,9 +17304,9 @@ ${state2.prompt}
|
|
|
17160
17304
|
}
|
|
17161
17305
|
|
|
17162
17306
|
// src/core/loop/mission-seal-handler.ts
|
|
17163
|
-
var COUNTDOWN_SECONDS2 =
|
|
17164
|
-
var TOAST_DURATION_MS2 =
|
|
17165
|
-
var MIN_TIME_BETWEEN_CHECKS_MS =
|
|
17307
|
+
var COUNTDOWN_SECONDS2 = LOOP.COUNTDOWN_SECONDS;
|
|
17308
|
+
var TOAST_DURATION_MS2 = TOAST_DURATION.EXTRA_SHORT;
|
|
17309
|
+
var MIN_TIME_BETWEEN_CHECKS_MS = LOOP.MIN_TIME_BETWEEN_CHECKS_MS;
|
|
17166
17310
|
var sessionStates2 = /* @__PURE__ */ new Map();
|
|
17167
17311
|
function getState3(sessionID) {
|
|
17168
17312
|
let state2 = sessionStates2.get(sessionID);
|
|
@@ -17213,7 +17357,7 @@ async function showSealedToast(client, state2) {
|
|
|
17213
17357
|
title: "\u{1F396}\uFE0F Mission Sealed!",
|
|
17214
17358
|
message: `Completed after ${state2.iteration} iteration(s)`,
|
|
17215
17359
|
variant: "success",
|
|
17216
|
-
duration:
|
|
17360
|
+
duration: TOAST_DURATION.LONG
|
|
17217
17361
|
}
|
|
17218
17362
|
});
|
|
17219
17363
|
}
|
|
@@ -17229,7 +17373,7 @@ async function showMaxIterationsToast(client, state2) {
|
|
|
17229
17373
|
title: "\u26A0\uFE0F Mission Loop Stopped",
|
|
17230
17374
|
message: `Max iterations (${state2.maxIterations}) reached`,
|
|
17231
17375
|
variant: "warning",
|
|
17232
|
-
duration:
|
|
17376
|
+
duration: TOAST_DURATION.LONG
|
|
17233
17377
|
}
|
|
17234
17378
|
});
|
|
17235
17379
|
}
|
|
@@ -17478,8 +17622,8 @@ function createConfigHandler() {
|
|
|
17478
17622
|
description: "Autonomous orchestrator - executes until mission complete",
|
|
17479
17623
|
mode: "primary",
|
|
17480
17624
|
prompt: commanderPrompt,
|
|
17481
|
-
maxTokens:
|
|
17482
|
-
thinking: { type: "enabled", budgetTokens:
|
|
17625
|
+
maxTokens: AGENT_TOKENS.PRIMARY_MAX_TOKENS,
|
|
17626
|
+
thinking: { type: "enabled", budgetTokens: AGENT_TOKENS.PRIMARY_THINKING_BUDGET },
|
|
17483
17627
|
color: "#FF6B6B"
|
|
17484
17628
|
},
|
|
17485
17629
|
// Consolidated subagents (4 agents instead of 6)
|
|
@@ -17488,7 +17632,7 @@ function createConfigHandler() {
|
|
|
17488
17632
|
mode: "subagent",
|
|
17489
17633
|
hidden: true,
|
|
17490
17634
|
prompt: AGENTS[AGENT_NAMES.PLANNER]?.systemPrompt || "",
|
|
17491
|
-
maxTokens:
|
|
17635
|
+
maxTokens: AGENT_TOKENS.SUBAGENT_MAX_TOKENS,
|
|
17492
17636
|
color: "#9B59B6"
|
|
17493
17637
|
},
|
|
17494
17638
|
[AGENT_NAMES.WORKER]: {
|
|
@@ -17496,7 +17640,7 @@ function createConfigHandler() {
|
|
|
17496
17640
|
mode: "subagent",
|
|
17497
17641
|
hidden: true,
|
|
17498
17642
|
prompt: AGENTS[AGENT_NAMES.WORKER]?.systemPrompt || "",
|
|
17499
|
-
maxTokens:
|
|
17643
|
+
maxTokens: AGENT_TOKENS.SUBAGENT_MAX_TOKENS,
|
|
17500
17644
|
color: "#E67E22"
|
|
17501
17645
|
},
|
|
17502
17646
|
[AGENT_NAMES.REVIEWER]: {
|
|
@@ -17504,7 +17648,7 @@ function createConfigHandler() {
|
|
|
17504
17648
|
mode: "subagent",
|
|
17505
17649
|
hidden: true,
|
|
17506
17650
|
prompt: AGENTS[AGENT_NAMES.REVIEWER]?.systemPrompt || "",
|
|
17507
|
-
maxTokens:
|
|
17651
|
+
maxTokens: AGENT_TOKENS.SUBAGENT_MAX_TOKENS,
|
|
17508
17652
|
color: "#27AE60"
|
|
17509
17653
|
}
|
|
17510
17654
|
};
|
|
@@ -17761,8 +17905,8 @@ Anomaly count: ${stateSession.anomalyCount}
|
|
|
17761
17905
|
if (stateSession.anomalyCount > 0) {
|
|
17762
17906
|
stateSession.anomalyCount = 0;
|
|
17763
17907
|
}
|
|
17764
|
-
if (toolOutput.output.length <
|
|
17765
|
-
stateSession.lastHealthyOutput = toolOutput.output.substring(0,
|
|
17908
|
+
if (toolOutput.output.length < TOOL_OUTPUT.SMALL_OUTPUT_THRESHOLD) {
|
|
17909
|
+
stateSession.lastHealthyOutput = toolOutput.output.substring(0, TOOL_OUTPUT.MAX_HEALTHY_OUTPUT_LENGTH);
|
|
17766
17910
|
}
|
|
17767
17911
|
}
|
|
17768
17912
|
}
|