opencode-orchestrator 1.2.23 → 1.2.32

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 (261) hide show
  1. package/README.md +91 -41
  2. package/dist/core/agents/agent-registry.d.ts +28 -0
  3. package/dist/core/agents/concurrency.d.ts +41 -0
  4. package/dist/core/agents/config.d.ts +10 -0
  5. package/dist/core/agents/consts/index.d.ts +4 -0
  6. package/dist/core/agents/index.d.ts +2 -3
  7. package/dist/core/agents/interfaces/session-pool.interface.d.ts +0 -7
  8. package/dist/core/agents/manager/event-handler.d.ts +35 -0
  9. package/dist/core/agents/manager/index.d.ts +10 -0
  10. package/dist/core/agents/manager/task-cleaner.d.ts +29 -0
  11. package/dist/core/agents/manager/task-launcher.d.ts +35 -0
  12. package/dist/core/agents/manager/task-poller.d.ts +30 -0
  13. package/dist/core/agents/manager/task-resumer.d.ts +18 -0
  14. package/dist/core/agents/manager.d.ts +36 -8
  15. package/dist/core/agents/persistence/task-wal.d.ts +26 -0
  16. package/dist/core/agents/session-pool.d.ts +0 -5
  17. package/dist/core/agents/task-store.d.ts +54 -0
  18. package/dist/core/agents/unified-task-executor.d.ts +92 -10
  19. package/dist/core/cleanup/cleanup-scheduler.d.ts +11 -0
  20. package/dist/core/context/context-window-monitor.d.ts +66 -0
  21. package/dist/core/context/index.d.ts +6 -0
  22. package/dist/core/loop/continuation-lock.d.ts +57 -0
  23. package/dist/core/loop/formatters.d.ts +17 -0
  24. package/dist/core/loop/interfaces/index.d.ts +5 -0
  25. package/dist/core/loop/interfaces/todo-stats.d.ts +11 -0
  26. package/dist/core/loop/interfaces/todo.d.ts +13 -0
  27. package/dist/core/loop/interfaces.d.ts +7 -0
  28. package/dist/core/loop/mission-loop-handler.d.ts +25 -0
  29. package/dist/core/loop/mission-loop.d.ts +48 -0
  30. package/dist/core/loop/parser.d.ts +8 -0
  31. package/dist/core/loop/stats.d.ts +24 -0
  32. package/dist/core/loop/todo-continuation.d.ts +39 -0
  33. package/dist/core/loop/todo-enforcer.d.ts +9 -0
  34. package/dist/core/loop/todo-manager.d.ts +22 -0
  35. package/dist/core/loop/types/index.d.ts +5 -0
  36. package/dist/core/loop/types/todo-priority.d.ts +4 -0
  37. package/dist/core/loop/types/todo-status.d.ts +4 -0
  38. package/dist/core/loop/verification.d.ts +27 -0
  39. package/dist/core/memory/interfaces.d.ts +33 -0
  40. package/dist/core/memory/memory-manager.d.ts +40 -0
  41. package/dist/core/metrics/collector.d.ts +27 -0
  42. package/dist/core/notification/os-notify/index.d.ts +7 -0
  43. package/dist/core/notification/os-notify/notifier.d.ts +7 -0
  44. package/dist/core/notification/os-notify/platform-resolver.d.ts +7 -0
  45. package/dist/core/notification/os-notify/platform.d.ts +7 -0
  46. package/dist/core/notification/os-notify/sound-player.d.ts +7 -0
  47. package/dist/core/notification/os-notify/todo-checker.d.ts +5 -0
  48. package/dist/core/notification/task-toast-manager.d.ts +127 -0
  49. package/dist/core/notification/toast-core.d.ts +36 -0
  50. package/dist/core/notification/toast.d.ts +9 -0
  51. package/dist/core/orchestrator/index.d.ts +6 -0
  52. package/dist/core/orchestrator/interfaces/index.d.ts +4 -0
  53. package/dist/core/orchestrator/interfaces/session-state.d.ts +11 -0
  54. package/dist/core/orchestrator/session-manager.d.ts +31 -0
  55. package/dist/core/orchestrator/state.d.ts +10 -0
  56. package/dist/core/orchestrator/types/index.d.ts +4 -0
  57. package/dist/core/orchestrator/types/task-status.d.ts +5 -0
  58. package/dist/core/plugins/interfaces.d.ts +30 -0
  59. package/dist/core/plugins/plugin-manager.d.ts +21 -0
  60. package/dist/core/progress/calculator.d.ts +11 -0
  61. package/dist/core/progress/formatters.d.ts +20 -0
  62. package/dist/core/progress/interfaces/index.d.ts +8 -0
  63. package/dist/core/progress/interfaces/progress-snapshot.d.ts +15 -0
  64. package/dist/core/progress/interfaces/snapshot-input.d.ts +13 -0
  65. package/dist/core/progress/interfaces/step-progress.d.ts +7 -0
  66. package/dist/core/progress/interfaces/task-progress.d.ts +10 -0
  67. package/dist/core/progress/interfaces/todo-progress.d.ts +9 -0
  68. package/dist/core/progress/interfaces.d.ts +6 -0
  69. package/dist/core/progress/progress-notifier.d.ts +14 -0
  70. package/dist/core/progress/state-broadcaster.d.ts +29 -0
  71. package/dist/core/progress/store.d.ts +28 -0
  72. package/dist/core/progress/tracker.d.ts +11 -0
  73. package/dist/core/queue/async-queue.d.ts +46 -0
  74. package/dist/core/queue/async-utils.d.ts +20 -0
  75. package/dist/core/queue/index.d.ts +8 -0
  76. package/dist/core/queue/work-pool.d.ts +19 -0
  77. package/dist/core/recovery/auto-recovery.d.ts +9 -0
  78. package/dist/core/recovery/constants.d.ts +9 -0
  79. package/dist/core/recovery/handler.d.ts +27 -0
  80. package/dist/core/recovery/interfaces/error-context.d.ts +11 -0
  81. package/dist/core/recovery/interfaces/error-pattern.d.ts +10 -0
  82. package/dist/core/recovery/interfaces/index.d.ts +8 -0
  83. package/dist/core/recovery/interfaces/recovery-action.d.ts +25 -0
  84. package/dist/core/recovery/interfaces/recovery-record.d.ts +10 -0
  85. package/dist/core/recovery/interfaces/recovery-stats.d.ts +9 -0
  86. package/dist/core/recovery/interfaces.d.ts +6 -0
  87. package/dist/core/recovery/patterns.d.ts +8 -0
  88. package/dist/core/recovery/retry.d.ts +59 -0
  89. package/dist/core/recovery/session-recovery.d.ts +30 -0
  90. package/dist/core/session/interfaces/context-stats.d.ts +9 -0
  91. package/dist/core/session/interfaces/index.d.ts +8 -0
  92. package/dist/core/session/interfaces/shared-context.d.ts +15 -0
  93. package/dist/core/session/interfaces/shared-decision.d.ts +10 -0
  94. package/dist/core/session/interfaces/shared-document.d.ts +9 -0
  95. package/dist/core/session/interfaces/shared-finding.d.ts +10 -0
  96. package/dist/core/session/interfaces.d.ts +6 -0
  97. package/dist/core/session/session-health.d.ts +93 -0
  98. package/dist/core/session/shared-context.d.ts +8 -0
  99. package/dist/core/session/store.d.ts +44 -0
  100. package/dist/core/session/summary.d.ts +7 -0
  101. package/dist/core/sync/todo-parser.d.ts +5 -0
  102. package/dist/core/sync/todo-sync-service.d.ts +42 -0
  103. package/dist/core/task/interfaces/index.d.ts +8 -0
  104. package/dist/core/task/interfaces/task-hierarchy.d.ts +9 -0
  105. package/dist/core/task/interfaces/task-input.d.ts +11 -0
  106. package/dist/core/task/interfaces/task-node.d.ts +20 -0
  107. package/dist/core/task/interfaces/task-progress.d.ts +11 -0
  108. package/dist/core/task/interfaces.d.ts +6 -0
  109. package/dist/core/task/parser.d.ts +8 -0
  110. package/dist/core/task/scheduler.d.ts +12 -0
  111. package/dist/core/task/store.d.ts +32 -0
  112. package/dist/core/task/summary.d.ts +7 -0
  113. package/dist/core/task/task-decomposer.d.ts +10 -0
  114. package/dist/core/todo/todo-manager.d.ts +36 -0
  115. package/dist/hooks/compatibility/external-plugin.d.ts +10 -0
  116. package/dist/hooks/constants.d.ts +27 -0
  117. package/dist/hooks/custom/agent-ui.d.ts +20 -0
  118. package/dist/hooks/custom/memory-gate.d.ts +21 -0
  119. package/dist/hooks/custom/metrics.d.ts +14 -0
  120. package/dist/hooks/custom/resource-control.d.ts +13 -0
  121. package/dist/hooks/custom/secret-scanner.d.ts +19 -0
  122. package/dist/hooks/custom/strict-role-guard.d.ts +21 -0
  123. package/dist/hooks/custom/user-activity.d.ts +11 -0
  124. package/dist/hooks/features/mission-loop.d.ts +18 -0
  125. package/dist/hooks/features/sanity-check.d.ts +15 -0
  126. package/dist/hooks/index.d.ts +5 -0
  127. package/dist/hooks/registry.d.ts +37 -0
  128. package/dist/hooks/types.d.ts +72 -0
  129. package/dist/index.js +19426 -3884
  130. package/dist/plugin-handlers/assistant-done-handler.d.ts +12 -0
  131. package/dist/plugin-handlers/chat-message-handler.d.ts +30 -0
  132. package/dist/plugin-handlers/config-handler.d.ts +9 -0
  133. package/dist/plugin-handlers/event-handler.d.ts +18 -0
  134. package/dist/plugin-handlers/index.d.ts +9 -0
  135. package/dist/plugin-handlers/interfaces/assistant-done-context.d.ts +12 -0
  136. package/dist/plugin-handlers/interfaces/chat-message-context.d.ts +12 -0
  137. package/dist/plugin-handlers/interfaces/event-handler-context.d.ts +14 -0
  138. package/dist/plugin-handlers/interfaces/index.d.ts +12 -0
  139. package/dist/plugin-handlers/interfaces/orchestrator-state.d.ts +14 -0
  140. package/dist/plugin-handlers/interfaces/session-compacting.d.ts +19 -0
  141. package/dist/plugin-handlers/interfaces/session-state.d.ts +15 -0
  142. package/dist/plugin-handlers/interfaces/system-transform.d.ts +17 -0
  143. package/dist/plugin-handlers/interfaces/tool-execute-context.d.ts +8 -0
  144. package/dist/plugin-handlers/interfaces/tool-hook.d.ts +14 -0
  145. package/dist/plugin-handlers/session-compacting-handler.d.ts +14 -0
  146. package/dist/plugin-handlers/system-transform-handler.d.ts +14 -0
  147. package/dist/plugin-handlers/tool-execute-handler.d.ts +14 -0
  148. package/dist/plugin-handlers/tool-execute-pre-handler.d.ts +8 -0
  149. package/dist/shared/constants/system-messages.d.ts +3 -3
  150. package/dist/shared/core/constants/index.d.ts +0 -4
  151. package/dist/shared/errors/constants/error-patterns.d.ts +13 -0
  152. package/dist/shared/errors/constants/error-type.d.ts +13 -0
  153. package/dist/shared/errors/constants/index.d.ts +5 -0
  154. package/dist/shared/errors/detection.d.ts +5 -0
  155. package/dist/shared/errors/index.d.ts +7 -0
  156. package/dist/shared/errors/retry.d.ts +7 -0
  157. package/dist/shared/errors/types/error-pattern-type.d.ts +5 -0
  158. package/dist/shared/errors/types/index.d.ts +4 -0
  159. package/dist/shared/index.d.ts +8 -6
  160. package/dist/shared/loop/constants/index.d.ts +7 -0
  161. package/dist/shared/loop/constants/labels.d.ts +33 -0
  162. package/dist/shared/loop/constants/loop.d.ts +17 -0
  163. package/dist/shared/loop/constants/mission-control.d.ts +20 -0
  164. package/dist/shared/loop/constants/todo-status.d.ts +9 -0
  165. package/dist/shared/loop/index.d.ts +6 -0
  166. package/dist/shared/loop/interfaces/index.d.ts +6 -0
  167. package/dist/shared/loop/interfaces/mission-loop.d.ts +29 -0
  168. package/dist/shared/loop/interfaces/todo-stats.d.ts +11 -0
  169. package/dist/shared/loop/interfaces/todo.d.ts +13 -0
  170. package/dist/shared/loop/types/index.d.ts +5 -0
  171. package/dist/shared/loop/types/todo-priority.d.ts +4 -0
  172. package/dist/shared/loop/types/todo-status.d.ts +4 -0
  173. package/dist/shared/message/constants/index.d.ts +8 -0
  174. package/dist/shared/message/constants/message-roles.d.ts +23 -0
  175. package/dist/shared/message/constants/part-types.d.ts +13 -0
  176. package/dist/shared/message/constants/plugin-hooks.d.ts +15 -0
  177. package/dist/shared/message/constants/prompts.d.ts +8 -0
  178. package/dist/shared/message/constants/slash-commands.d.ts +21 -0
  179. package/dist/shared/message/index.d.ts +4 -0
  180. package/dist/shared/notification/constants/index.d.ts +3 -0
  181. package/dist/shared/notification/constants/toast-duration.d.ts +19 -0
  182. package/dist/shared/notification/constants/toast-variants.d.ts +10 -0
  183. package/dist/shared/notification/constants/tui.const.d.ts +24 -0
  184. package/dist/shared/notification/index.d.ts +7 -0
  185. package/dist/shared/notification/interfaces/index.d.ts +6 -0
  186. package/dist/shared/notification/interfaces/task-toast.interface.d.ts +18 -0
  187. package/dist/shared/notification/interfaces/toast-message.d.ts +13 -0
  188. package/dist/shared/notification/interfaces/toast-options.d.ts +10 -0
  189. package/dist/shared/notification/os-notify/constants/index.d.ts +6 -0
  190. package/dist/shared/notification/os-notify/constants/notification-command-keys.d.ts +11 -0
  191. package/dist/shared/notification/os-notify/constants/notification-commands.d.ts +11 -0
  192. package/dist/shared/notification/os-notify/constants/notification-defaults.d.ts +5 -0
  193. package/dist/shared/notification/os-notify/index.d.ts +6 -0
  194. package/dist/shared/notification/os-notify/interfaces/index.d.ts +5 -0
  195. package/dist/shared/notification/os-notify/interfaces/notification-config.d.ts +15 -0
  196. package/dist/shared/notification/os-notify/interfaces/notification-state.d.ts +13 -0
  197. package/dist/shared/notification/os-notify/types/index.d.ts +4 -0
  198. package/dist/shared/notification/os-notify/types/notification-commands.d.ts +5 -0
  199. package/dist/shared/notification/presets/index.d.ts +9 -0
  200. package/dist/shared/notification/presets/mission.d.ts +5 -0
  201. package/dist/shared/notification/presets/parallel.d.ts +6 -0
  202. package/dist/shared/notification/presets/session.d.ts +6 -0
  203. package/dist/shared/notification/presets/task-lifecycle.d.ts +7 -0
  204. package/dist/shared/notification/presets/tools.d.ts +6 -0
  205. package/dist/shared/notification/presets/warnings.d.ts +7 -0
  206. package/dist/shared/notification/types/index.d.ts +4 -0
  207. package/dist/shared/notification/types/toast-variant.d.ts +4 -0
  208. package/dist/shared/os/constants/index.d.ts +4 -0
  209. package/dist/shared/os/constants/platform.d.ts +9 -0
  210. package/dist/shared/os/index.d.ts +5 -0
  211. package/dist/shared/os/types/index.d.ts +4 -0
  212. package/dist/shared/os/types/platform.d.ts +5 -0
  213. package/dist/shared/prompt/index.d.ts +0 -1
  214. package/dist/shared/recovery/constants/history.d.ts +11 -0
  215. package/dist/shared/recovery/constants/index.d.ts +6 -0
  216. package/dist/shared/recovery/constants/recovery-level.d.ts +15 -0
  217. package/dist/shared/recovery/constants/recovery.d.ts +13 -0
  218. package/dist/shared/recovery/index.d.ts +6 -0
  219. package/dist/shared/recovery/interfaces/error-context.d.ts +11 -0
  220. package/dist/shared/recovery/interfaces/index.d.ts +5 -0
  221. package/dist/shared/recovery/interfaces/recovery-record.d.ts +10 -0
  222. package/dist/shared/recovery/types/index.d.ts +4 -0
  223. package/dist/shared/recovery/types/recovery-action.d.ts +4 -0
  224. package/dist/shared/session/constants/index.d.ts +0 -2
  225. package/dist/shared/session/index.d.ts +0 -1
  226. package/dist/shared/verification/constants/categories.d.ts +95 -0
  227. package/dist/shared/verification/constants/checklist.d.ts +16 -0
  228. package/dist/shared/verification/constants/index.d.ts +7 -0
  229. package/dist/shared/verification/constants/patterns.d.ts +19 -0
  230. package/dist/shared/verification/constants/signals.d.ts +10 -0
  231. package/dist/shared/verification/index.d.ts +8 -0
  232. package/dist/shared/verification/interfaces/checklist-item.d.ts +21 -0
  233. package/dist/shared/verification/interfaces/checklist-verification-result.d.ts +24 -0
  234. package/dist/shared/verification/interfaces/index.d.ts +7 -0
  235. package/dist/shared/verification/interfaces/verification-checklist.d.ts +19 -0
  236. package/dist/shared/verification/interfaces/verification-result.d.ts +29 -0
  237. package/dist/shared/verification/types/checklist-category.d.ts +18 -0
  238. package/dist/shared/verification/types/index.d.ts +4 -0
  239. package/dist/tools/parallel/list-agents.d.ts +1 -1
  240. package/dist/tools/parallel/show-metrics.d.ts +10 -0
  241. package/dist/tools/parallel/update-todo.d.ts +7 -0
  242. package/dist/utils/common.d.ts +5 -3
  243. package/dist/utils/compatibility/claude.d.ts +9 -0
  244. package/dist/utils/formatting/elapsed-time.d.ts +4 -0
  245. package/dist/utils/formatting/index.d.ts +5 -0
  246. package/dist/utils/formatting/timestamp.d.ts +4 -0
  247. package/dist/utils/parsing/index.d.ts +4 -0
  248. package/dist/utils/parsing/slash-command.d.ts +7 -0
  249. package/dist/utils/sanity/checker.d.ts +8 -0
  250. package/dist/utils/sanity/constants/escalation-prompt.d.ts +4 -0
  251. package/dist/utils/sanity/constants/index.d.ts +6 -0
  252. package/dist/utils/sanity/constants/recovery-prompt.d.ts +4 -0
  253. package/dist/utils/sanity/constants/severity.d.ts +8 -0
  254. package/dist/utils/sanity/index.d.ts +7 -0
  255. package/dist/utils/sanity/interfaces/index.d.ts +4 -0
  256. package/dist/utils/sanity/interfaces/sanity-result.d.ts +9 -0
  257. package/dist/utils/sanity/types/index.d.ts +4 -0
  258. package/dist/utils/sanity/types/severity.d.ts +5 -0
  259. package/package.json +3 -3
  260. package/dist/core/agents/adaptive-concurrency.d.ts +0 -57
  261. /package/dist/{shared/task/constants/task-status.d.ts → core/agents/consts/task-status.const.d.ts} +0 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Recovery Constants
3
+ *
4
+ * @deprecated Use RECOVERY and HISTORY from shared/constants instead
5
+ * This file is kept for backward compatibility only.
6
+ */
7
+ export declare const MAX_RETRIES: 3;
8
+ export declare const BASE_DELAY: number;
9
+ export declare const MAX_HISTORY: 100;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Recovery Handler - Core error handling logic
3
+ */
4
+ import type { ErrorContext, RecoveryAction, RecoveryRecord, RecoveryStats } from "./interfaces.js";
5
+ /**
6
+ * Handle an error and determine recovery action
7
+ */
8
+ export declare function handleError(context: ErrorContext): RecoveryAction;
9
+ /**
10
+ * Execute a function with auto-recovery
11
+ */
12
+ export declare function withRecovery<T>(sessionId: string, fn: () => Promise<T>, options?: {
13
+ maxRetries?: number;
14
+ onRetry?: (action: RecoveryAction) => void;
15
+ }): Promise<T>;
16
+ /**
17
+ * Get recovery statistics
18
+ */
19
+ export declare function getStats(): RecoveryStats;
20
+ /**
21
+ * Get recent recovery history
22
+ */
23
+ export declare function getHistory(limit?: number): RecoveryRecord[];
24
+ /**
25
+ * Clear error counts for a session
26
+ */
27
+ export declare function clearSession(sessionId: string): void;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Error Context Interface
3
+ */
4
+ export interface ErrorContext {
5
+ sessionId: string;
6
+ taskId?: string;
7
+ agent?: string;
8
+ error: Error;
9
+ attempt: number;
10
+ timestamp: Date;
11
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Error Pattern Interface
3
+ */
4
+ import type { ErrorContext } from "./error-context.js";
5
+ import type { RecoveryAction } from "./recovery-action.js";
6
+ export interface ErrorPattern {
7
+ pattern: RegExp | string;
8
+ category: string;
9
+ handler: (context: ErrorContext) => RecoveryAction;
10
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Recovery Interfaces - Index
3
+ */
4
+ export type { RecoveryAction } from "./recovery-action.js";
5
+ export type { ErrorContext } from "./error-context.js";
6
+ export type { ErrorPattern } from "./error-pattern.js";
7
+ export type { RecoveryRecord } from "./recovery-record.js";
8
+ export type { RecoveryStats } from "./recovery-stats.js";
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Recovery Action Type
3
+ */
4
+ export type RecoveryAction = {
5
+ type: "retry";
6
+ delay: number;
7
+ attempt: number;
8
+ modifyPrompt?: string;
9
+ } | {
10
+ type: "skip";
11
+ reason: string;
12
+ } | {
13
+ type: "escalate";
14
+ to: string;
15
+ reason: string;
16
+ } | {
17
+ type: "resume";
18
+ sessionId: string;
19
+ } | {
20
+ type: "compact";
21
+ reason: string;
22
+ } | {
23
+ type: "abort";
24
+ reason: string;
25
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Recovery Record Interface
3
+ */
4
+ import type { ErrorContext } from "./error-context.js";
5
+ import type { RecoveryAction } from "./recovery-action.js";
6
+ export interface RecoveryRecord {
7
+ context: ErrorContext;
8
+ action: RecoveryAction;
9
+ timestamp: Date;
10
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Recovery Stats Interface
3
+ */
4
+ export interface RecoveryStats {
5
+ totalRecoveries: number;
6
+ byCategory: Record<string, number>;
7
+ byAction: Record<string, number>;
8
+ successRate: number;
9
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Auto Recovery Interfaces & Types
3
+ *
4
+ * Re-exports for backward compatibility.
5
+ */
6
+ export * from "./interfaces/index.js";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Error Patterns - Recovery strategies for common errors
3
+ */
4
+ import type { ErrorPattern } from "./interfaces.js";
5
+ /**
6
+ * Error patterns and their recovery strategies
7
+ */
8
+ export declare const errorPatterns: ErrorPattern[];
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Session Retry Utilities
3
+ *
4
+ * Provides sophisticated retry logic for API errors including:
5
+ * - retry-after header parsing
6
+ * - Exponential backoff
7
+ * - Retryable error detection
8
+ *
9
+ * Inspired by OpenCode's SessionRetry system.
10
+ */
11
+ /** Initial delay for retries (ms) */
12
+ export declare const RETRY_INITIAL_DELAY = 2000;
13
+ /** Backoff multiplier */
14
+ export declare const RETRY_BACKOFF_FACTOR = 2;
15
+ /** Max delay when no headers (30 seconds) */
16
+ export declare const RETRY_MAX_DELAY_NO_HEADERS = 30000;
17
+ /** Absolute max delay for setTimeout (max 32-bit signed int) */
18
+ export declare const RETRY_MAX_DELAY = 2147483647;
19
+ /** Max retry attempts */
20
+ export declare const MAX_RETRY_ATTEMPTS = 5;
21
+ export interface APIErrorData {
22
+ isRetryable?: boolean;
23
+ message?: string;
24
+ responseHeaders?: Record<string, string>;
25
+ status?: number;
26
+ }
27
+ export interface RetryConfig {
28
+ maxAttempts?: number;
29
+ initialDelay?: number;
30
+ maxDelay?: number;
31
+ backoffFactor?: number;
32
+ }
33
+ /**
34
+ * Sleep with abort signal support
35
+ */
36
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
37
+ /**
38
+ * Calculate retry delay from attempt number and optional error data
39
+ *
40
+ * Priority:
41
+ * 1. retry-after-ms header
42
+ * 2. retry-after header (seconds or HTTP date)
43
+ * 3. Exponential backoff
44
+ */
45
+ export declare function calculateDelay(attempt: number, errorData?: APIErrorData): number;
46
+ /**
47
+ * Check if an error is retryable
48
+ *
49
+ * Returns a human-readable reason if retryable, undefined otherwise.
50
+ */
51
+ export declare function isRetryable(error: unknown): string | undefined;
52
+ /**
53
+ * Retry an async operation with exponential backoff
54
+ */
55
+ export declare function withRetry<T>(operation: () => Promise<T>, config?: RetryConfig, signal?: AbortSignal): Promise<T>;
56
+ /**
57
+ * Format delay for human readability
58
+ */
59
+ export declare function formatDelay(ms: number): string;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Session Recovery Event Handler
3
+ *
4
+ * Integrates with the OpenCode event system to automatically recover from session errors.
5
+ *
6
+ * Supported error types:
7
+ * - tool_result_missing: Tool crashed, inject error message
8
+ * - thinking_block_order: Thinking block ordering issue
9
+ * - rate_limit: API rate limiting
10
+ * - context_overflow: Token limit exceeded
11
+ */
12
+ import type { PluginInput } from "@opencode-ai/plugin";
13
+ type OpencodeClient = PluginInput["client"];
14
+ /**
15
+ * Handle session error event and attempt recovery
16
+ */
17
+ export declare function handleSessionError(client: OpencodeClient, sessionID: string, error: unknown, properties?: Record<string, unknown>): Promise<boolean>;
18
+ /**
19
+ * Mark that recovery is complete for a session
20
+ */
21
+ export declare function markRecoveryComplete(sessionID: string): void;
22
+ /**
23
+ * Clean up session recovery state
24
+ */
25
+ export declare function cleanupSessionRecovery(sessionID: string): void;
26
+ /**
27
+ * Check if session is currently recovering
28
+ */
29
+ export declare function isSessionRecovering(sessionID: string): boolean;
30
+ export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Context Stats Interface
3
+ */
4
+ export interface ContextStats {
5
+ totalContexts: number;
6
+ totalDocuments: number;
7
+ totalFindings: number;
8
+ totalDecisions: number;
9
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Session Interfaces - Index
3
+ */
4
+ export type { SharedDocument } from "./shared-document.js";
5
+ export type { SharedFinding } from "./shared-finding.js";
6
+ export type { SharedDecision } from "./shared-decision.js";
7
+ export type { SharedContext } from "./shared-context.js";
8
+ export type { ContextStats } from "./context-stats.js";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared Context Interface
3
+ */
4
+ import type { SharedDocument } from "./shared-document.js";
5
+ import type { SharedFinding } from "./shared-finding.js";
6
+ import type { SharedDecision } from "./shared-decision.js";
7
+ export interface SharedContext {
8
+ sessionId: string;
9
+ parentId?: string;
10
+ documents: Map<string, SharedDocument>;
11
+ findings: SharedFinding[];
12
+ decisions: Map<string, SharedDecision>;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared Decision Interface
3
+ */
4
+ export interface SharedDecision {
5
+ id: string;
6
+ question: string;
7
+ answer: string;
8
+ rationale: string;
9
+ decidedAt: Date;
10
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared Document Interface
3
+ */
4
+ export interface SharedDocument {
5
+ url: string;
6
+ filename: string;
7
+ title: string;
8
+ cachedAt: Date;
9
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared Finding Interface
3
+ */
4
+ export interface SharedFinding {
5
+ id: string;
6
+ content: string;
7
+ source: string;
8
+ timestamp: Date;
9
+ category: "pattern" | "api" | "config" | "warning" | "decision";
10
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shared Context Interfaces
3
+ *
4
+ * Re-exports for backward compatibility.
5
+ */
6
+ export * from "./interfaces/index.js";
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Session Health Monitor
3
+ *
4
+ * Periodically checks session health and detects stale sessions.
5
+ * Early detection of infinite loading states improves system stability.
6
+ */
7
+ import type { PluginInput } from "@opencode-ai/plugin";
8
+ type OpencodeClient = PluginInput["client"];
9
+ interface SessionHealthState {
10
+ sessionID: string;
11
+ lastActiveTime: number;
12
+ lastResponseTime: number;
13
+ isStale: boolean;
14
+ activityCount: number;
15
+ }
16
+ /**
17
+ * Record session activity
18
+ *
19
+ * Call this when an activity occurs in the session.
20
+ * (e.g., sending prompt, tool execution)
21
+ *
22
+ * @param sessionID - Session ID
23
+ */
24
+ export declare function recordSessionActivity(sessionID: string): void;
25
+ /**
26
+ * Record session response receipt
27
+ *
28
+ * Call this when a response is received from the session.
29
+ * (e.g., assistant message received)
30
+ *
31
+ * @param sessionID - Session ID
32
+ */
33
+ export declare function recordSessionResponse(sessionID: string): void;
34
+ /**
35
+ * Check if session is stale
36
+ *
37
+ * @param sessionID - Session ID
38
+ * @returns true if stale
39
+ */
40
+ export declare function isSessionStale(sessionID: string): boolean;
41
+ /**
42
+ * Get session response age
43
+ *
44
+ * @param sessionID - Session ID
45
+ * @returns Time elapsed since last response (ms), or -1 if session not found
46
+ */
47
+ export declare function getSessionResponseAge(sessionID: string): number;
48
+ /**
49
+ * Get all stale session IDs
50
+ *
51
+ * @returns Array of stale session IDs
52
+ */
53
+ export declare function getStaleSessions(): string[];
54
+ /**
55
+ * Start health check monitor
56
+ *
57
+ * @param opencodeClient - OpenCode Client
58
+ */
59
+ export declare function startHealthCheck(opencodeClient: OpencodeClient): void;
60
+ /**
61
+ * Stop health check monitor
62
+ */
63
+ export declare function stopHealthCheck(): void;
64
+ /**
65
+ * Perform actual health check (Exported for testing)
66
+ */
67
+ export declare function performHealthCheck(): void;
68
+ /**
69
+ * Cleanup session health state
70
+ *
71
+ * @param sessionID - Session ID
72
+ */
73
+ export declare function cleanupSessionHealth(sessionID: string): void;
74
+ /**
75
+ * Clear all session health info (for testing)
76
+ */
77
+ export declare function clearAllSessionHealth(): void;
78
+ /**
79
+ * Get session health info (for debugging)
80
+ *
81
+ * @param sessionID - Session ID
82
+ */
83
+ export declare function getSessionHealth(sessionID: string): SessionHealthState | undefined;
84
+ /**
85
+ * Get overall health stats (for debugging)
86
+ */
87
+ export declare function getHealthStats(): {
88
+ total: number;
89
+ stale: number;
90
+ healthy: number;
91
+ avgResponseAge: number;
92
+ };
93
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Session Shared Context
3
+ *
4
+ * Enables context sharing between parent and child sessions
5
+ */
6
+ export type { SharedDocument, SharedFinding, SharedDecision, SharedContext, ContextStats, } from "./interfaces.js";
7
+ export { create, get, getMerged, addDocument, addFinding, addDecision, getChildren, clear, clearAll, getStats, } from "./store.js";
8
+ export { getSummary } from "./summary.js";
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Context Store - Session context data management
3
+ */
4
+ import type { SharedContext, SharedDocument, SharedFinding, SharedDecision, ContextStats } from "./interfaces.js";
5
+ /**
6
+ * Create a new shared context for a session
7
+ */
8
+ export declare function create(sessionId: string, parentId?: string): SharedContext;
9
+ /**
10
+ * Get shared context for a session
11
+ */
12
+ export declare function get(sessionId: string): SharedContext | undefined;
13
+ /**
14
+ * Get merged context (includes parent context)
15
+ */
16
+ export declare function getMerged(sessionId: string): SharedContext | undefined;
17
+ /**
18
+ * Add a document to the shared context
19
+ */
20
+ export declare function addDocument(sessionId: string, doc: SharedDocument): void;
21
+ /**
22
+ * Add a finding to the shared context
23
+ */
24
+ export declare function addFinding(sessionId: string, finding: Omit<SharedFinding, "id" | "timestamp">): void;
25
+ /**
26
+ * Record a decision
27
+ */
28
+ export declare function addDecision(sessionId: string, decision: Omit<SharedDecision, "id" | "decidedAt">): void;
29
+ /**
30
+ * Get all child session IDs
31
+ */
32
+ export declare function getChildren(parentId: string): string[];
33
+ /**
34
+ * Clear context for a session
35
+ */
36
+ export declare function clear(sessionId: string): void;
37
+ /**
38
+ * Clear all contexts
39
+ */
40
+ export declare function clearAll(): void;
41
+ /**
42
+ * Get stats
43
+ */
44
+ export declare function getStats(): ContextStats;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Context Summary - Generate prompt summaries
3
+ */
4
+ /**
5
+ * Get context summary for injection into prompts
6
+ */
7
+ export declare function getSummary(sessionId: string): string;
@@ -0,0 +1,5 @@
1
+ import { type Todo } from "../../shared/index.js";
2
+ /**
3
+ * Parses markdown content into Todo objects
4
+ */
5
+ export declare function parseTodoMd(content: string): Todo[];
@@ -0,0 +1,42 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ type OpencodeClient = PluginInput["client"];
3
+ interface TrackedTaskTodo {
4
+ id: string;
5
+ description: string;
6
+ status: string;
7
+ agent: string;
8
+ isBackground: boolean;
9
+ parentSessionID?: string;
10
+ }
11
+ export declare class TodoSyncService {
12
+ private client;
13
+ private directory;
14
+ private todoPath;
15
+ private fileTodos;
16
+ private taskTodos;
17
+ private updateTimeout;
18
+ private watcher;
19
+ private pendingUpdates;
20
+ private batchTimer;
21
+ private readonly BATCH_WINDOW_MS;
22
+ private activeSessions;
23
+ constructor(client: OpencodeClient, directory: string);
24
+ start(): Promise<void>;
25
+ registerSession(sessionID: string): void;
26
+ unregisterSession(sessionID: string): void;
27
+ private reloadFileTodos;
28
+ /**
29
+ * Called by TaskToastManager when tasks change
30
+ */
31
+ updateTaskStatus(task: TrackedTaskTodo): void;
32
+ removeTask(taskId: string): void;
33
+ private broadcastUpdate;
34
+ private scheduleUpdate;
35
+ /**
36
+ * Flush all pending updates in parallel batches
37
+ */
38
+ private flushBatchedUpdates;
39
+ private sendTodosToSession;
40
+ stop(): void;
41
+ }
42
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Task Interfaces - Index
3
+ */
4
+ export type { TaskNode, TaskStatus } from "./task-node.js";
5
+ export type { TaskHierarchy } from "./task-hierarchy.js";
6
+ export type { TaskProgress } from "./task-progress.js";
7
+ export type { TaskInput } from "./task-input.js";
8
+ export { TASK_STATUS } from "../../../shared/index.js";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Task Hierarchy Interface
3
+ */
4
+ import type { TaskNode } from "./task-node.js";
5
+ export interface TaskHierarchy {
6
+ rootId: string;
7
+ nodes: Map<string, TaskNode>;
8
+ parallelGroups: Map<string, string[]>;
9
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Input Interface
3
+ */
4
+ export interface TaskInput {
5
+ description: string;
6
+ level: number;
7
+ parentId?: string;
8
+ agent?: string;
9
+ parallelGroup?: string;
10
+ dependsOn?: string[];
11
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Task Node Interface
3
+ */
4
+ import type { ParallelTaskStatus } from "../../../shared/task/types/index.js";
5
+ export type TaskStatus = ParallelTaskStatus;
6
+ export interface TaskNode {
7
+ id: string;
8
+ description: string;
9
+ level: number;
10
+ parent?: string;
11
+ children: string[];
12
+ status: TaskStatus;
13
+ agent?: string;
14
+ parallelGroup?: string;
15
+ dependsOn: string[];
16
+ createdAt: Date;
17
+ startedAt?: Date;
18
+ completedAt?: Date;
19
+ result?: string;
20
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Progress Interface
3
+ */
4
+ export interface TaskProgress {
5
+ total: number;
6
+ pending: number;
7
+ running: number;
8
+ completed: number;
9
+ failed: number;
10
+ percentage: number;
11
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Task Decomposer Interfaces
3
+ *
4
+ * Re-exports for backward compatibility.
5
+ */
6
+ export * from "./interfaces/index.js";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Task Parser - Parse hierarchy from Planner output
3
+ */
4
+ import type { TaskHierarchy } from "./interfaces.js";
5
+ /**
6
+ * Parse task hierarchy from text (Planner output)
7
+ */
8
+ export declare function parseFromText(sessionId: string, text: string): TaskHierarchy;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Task Scheduler - Execution order and dependencies
3
+ */
4
+ import type { TaskNode } from "./interfaces.js";
5
+ /**
6
+ * Get next executable tasks (respecting dependencies)
7
+ */
8
+ export declare function getNextTasks(sessionId: string): TaskNode[];
9
+ /**
10
+ * Get parallel group tasks that can run together
11
+ */
12
+ export declare function getParallelBatch(sessionId: string, groupId: string): TaskNode[];
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Task Store - Hierarchy data management
3
+ */
4
+ import type { TaskNode, TaskHierarchy, TaskInput, TaskStatus, TaskProgress } from "./interfaces.js";
5
+ /**
6
+ * Create a new task hierarchy
7
+ */
8
+ export declare function create(sessionId: string, rootDescription: string): TaskHierarchy;
9
+ /**
10
+ * Get hierarchy for session
11
+ */
12
+ export declare function getHierarchy(sessionId: string): TaskHierarchy | undefined;
13
+ /**
14
+ * Add a task node
15
+ */
16
+ export declare function addTask(sessionId: string, task: TaskInput): TaskNode;
17
+ /**
18
+ * Update task status
19
+ */
20
+ export declare function updateStatus(sessionId: string, taskId: string, status: TaskStatus, result?: string): void;
21
+ /**
22
+ * Clear hierarchy
23
+ */
24
+ export declare function clear(sessionId: string): void;
25
+ /**
26
+ * Check if all tasks are complete
27
+ */
28
+ export declare function isComplete(sessionId: string): boolean;
29
+ /**
30
+ * Get progress statistics
31
+ */
32
+ export declare function getProgress(sessionId: string): TaskProgress;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Task Summary - Generate prompt summaries
3
+ */
4
+ /**
5
+ * Get hierarchy summary for prompts
6
+ */
7
+ export declare function getSummary(sessionId: string): string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Task Decomposer
3
+ *
4
+ * Automatically decomposes complex tasks into hierarchical subtasks
5
+ */
6
+ export type { TaskStatus, TaskNode, TaskHierarchy, TaskProgress, TaskInput, } from "./interfaces.js";
7
+ export { create, getHierarchy, addTask, updateStatus, clear, isComplete, getProgress, } from "./store.js";
8
+ export { getNextTasks, getParallelBatch, } from "./scheduler.js";
9
+ export { parseFromText } from "./parser.js";
10
+ export { getSummary } from "./summary.js";