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.
- package/README.md +91 -41
- package/dist/core/agents/agent-registry.d.ts +28 -0
- package/dist/core/agents/concurrency.d.ts +41 -0
- package/dist/core/agents/config.d.ts +10 -0
- package/dist/core/agents/consts/index.d.ts +4 -0
- package/dist/core/agents/index.d.ts +2 -3
- package/dist/core/agents/interfaces/session-pool.interface.d.ts +0 -7
- package/dist/core/agents/manager/event-handler.d.ts +35 -0
- package/dist/core/agents/manager/index.d.ts +10 -0
- package/dist/core/agents/manager/task-cleaner.d.ts +29 -0
- package/dist/core/agents/manager/task-launcher.d.ts +35 -0
- package/dist/core/agents/manager/task-poller.d.ts +30 -0
- package/dist/core/agents/manager/task-resumer.d.ts +18 -0
- package/dist/core/agents/manager.d.ts +36 -8
- package/dist/core/agents/persistence/task-wal.d.ts +26 -0
- package/dist/core/agents/session-pool.d.ts +0 -5
- package/dist/core/agents/task-store.d.ts +54 -0
- package/dist/core/agents/unified-task-executor.d.ts +92 -10
- package/dist/core/cleanup/cleanup-scheduler.d.ts +11 -0
- package/dist/core/context/context-window-monitor.d.ts +66 -0
- package/dist/core/context/index.d.ts +6 -0
- package/dist/core/loop/continuation-lock.d.ts +57 -0
- package/dist/core/loop/formatters.d.ts +17 -0
- package/dist/core/loop/interfaces/index.d.ts +5 -0
- package/dist/core/loop/interfaces/todo-stats.d.ts +11 -0
- package/dist/core/loop/interfaces/todo.d.ts +13 -0
- package/dist/core/loop/interfaces.d.ts +7 -0
- package/dist/core/loop/mission-loop-handler.d.ts +25 -0
- package/dist/core/loop/mission-loop.d.ts +48 -0
- package/dist/core/loop/parser.d.ts +8 -0
- package/dist/core/loop/stats.d.ts +24 -0
- package/dist/core/loop/todo-continuation.d.ts +39 -0
- package/dist/core/loop/todo-enforcer.d.ts +9 -0
- package/dist/core/loop/todo-manager.d.ts +22 -0
- package/dist/core/loop/types/index.d.ts +5 -0
- package/dist/core/loop/types/todo-priority.d.ts +4 -0
- package/dist/core/loop/types/todo-status.d.ts +4 -0
- package/dist/core/loop/verification.d.ts +27 -0
- package/dist/core/memory/interfaces.d.ts +33 -0
- package/dist/core/memory/memory-manager.d.ts +40 -0
- package/dist/core/metrics/collector.d.ts +27 -0
- package/dist/core/notification/os-notify/index.d.ts +7 -0
- package/dist/core/notification/os-notify/notifier.d.ts +7 -0
- package/dist/core/notification/os-notify/platform-resolver.d.ts +7 -0
- package/dist/core/notification/os-notify/platform.d.ts +7 -0
- package/dist/core/notification/os-notify/sound-player.d.ts +7 -0
- package/dist/core/notification/os-notify/todo-checker.d.ts +5 -0
- package/dist/core/notification/task-toast-manager.d.ts +127 -0
- package/dist/core/notification/toast-core.d.ts +36 -0
- package/dist/core/notification/toast.d.ts +9 -0
- package/dist/core/orchestrator/index.d.ts +6 -0
- package/dist/core/orchestrator/interfaces/index.d.ts +4 -0
- package/dist/core/orchestrator/interfaces/session-state.d.ts +11 -0
- package/dist/core/orchestrator/session-manager.d.ts +31 -0
- package/dist/core/orchestrator/state.d.ts +10 -0
- package/dist/core/orchestrator/types/index.d.ts +4 -0
- package/dist/core/orchestrator/types/task-status.d.ts +5 -0
- package/dist/core/plugins/interfaces.d.ts +30 -0
- package/dist/core/plugins/plugin-manager.d.ts +21 -0
- package/dist/core/progress/calculator.d.ts +11 -0
- package/dist/core/progress/formatters.d.ts +20 -0
- package/dist/core/progress/interfaces/index.d.ts +8 -0
- package/dist/core/progress/interfaces/progress-snapshot.d.ts +15 -0
- package/dist/core/progress/interfaces/snapshot-input.d.ts +13 -0
- package/dist/core/progress/interfaces/step-progress.d.ts +7 -0
- package/dist/core/progress/interfaces/task-progress.d.ts +10 -0
- package/dist/core/progress/interfaces/todo-progress.d.ts +9 -0
- package/dist/core/progress/interfaces.d.ts +6 -0
- package/dist/core/progress/progress-notifier.d.ts +14 -0
- package/dist/core/progress/state-broadcaster.d.ts +29 -0
- package/dist/core/progress/store.d.ts +28 -0
- package/dist/core/progress/tracker.d.ts +11 -0
- package/dist/core/queue/async-queue.d.ts +46 -0
- package/dist/core/queue/async-utils.d.ts +20 -0
- package/dist/core/queue/index.d.ts +8 -0
- package/dist/core/queue/work-pool.d.ts +19 -0
- package/dist/core/recovery/auto-recovery.d.ts +9 -0
- package/dist/core/recovery/constants.d.ts +9 -0
- package/dist/core/recovery/handler.d.ts +27 -0
- package/dist/core/recovery/interfaces/error-context.d.ts +11 -0
- package/dist/core/recovery/interfaces/error-pattern.d.ts +10 -0
- package/dist/core/recovery/interfaces/index.d.ts +8 -0
- package/dist/core/recovery/interfaces/recovery-action.d.ts +25 -0
- package/dist/core/recovery/interfaces/recovery-record.d.ts +10 -0
- package/dist/core/recovery/interfaces/recovery-stats.d.ts +9 -0
- package/dist/core/recovery/interfaces.d.ts +6 -0
- package/dist/core/recovery/patterns.d.ts +8 -0
- package/dist/core/recovery/retry.d.ts +59 -0
- package/dist/core/recovery/session-recovery.d.ts +30 -0
- package/dist/core/session/interfaces/context-stats.d.ts +9 -0
- package/dist/core/session/interfaces/index.d.ts +8 -0
- package/dist/core/session/interfaces/shared-context.d.ts +15 -0
- package/dist/core/session/interfaces/shared-decision.d.ts +10 -0
- package/dist/core/session/interfaces/shared-document.d.ts +9 -0
- package/dist/core/session/interfaces/shared-finding.d.ts +10 -0
- package/dist/core/session/interfaces.d.ts +6 -0
- package/dist/core/session/session-health.d.ts +93 -0
- package/dist/core/session/shared-context.d.ts +8 -0
- package/dist/core/session/store.d.ts +44 -0
- package/dist/core/session/summary.d.ts +7 -0
- package/dist/core/sync/todo-parser.d.ts +5 -0
- package/dist/core/sync/todo-sync-service.d.ts +42 -0
- package/dist/core/task/interfaces/index.d.ts +8 -0
- package/dist/core/task/interfaces/task-hierarchy.d.ts +9 -0
- package/dist/core/task/interfaces/task-input.d.ts +11 -0
- package/dist/core/task/interfaces/task-node.d.ts +20 -0
- package/dist/core/task/interfaces/task-progress.d.ts +11 -0
- package/dist/core/task/interfaces.d.ts +6 -0
- package/dist/core/task/parser.d.ts +8 -0
- package/dist/core/task/scheduler.d.ts +12 -0
- package/dist/core/task/store.d.ts +32 -0
- package/dist/core/task/summary.d.ts +7 -0
- package/dist/core/task/task-decomposer.d.ts +10 -0
- package/dist/core/todo/todo-manager.d.ts +36 -0
- package/dist/hooks/compatibility/external-plugin.d.ts +10 -0
- package/dist/hooks/constants.d.ts +27 -0
- package/dist/hooks/custom/agent-ui.d.ts +20 -0
- package/dist/hooks/custom/memory-gate.d.ts +21 -0
- package/dist/hooks/custom/metrics.d.ts +14 -0
- package/dist/hooks/custom/resource-control.d.ts +13 -0
- package/dist/hooks/custom/secret-scanner.d.ts +19 -0
- package/dist/hooks/custom/strict-role-guard.d.ts +21 -0
- package/dist/hooks/custom/user-activity.d.ts +11 -0
- package/dist/hooks/features/mission-loop.d.ts +18 -0
- package/dist/hooks/features/sanity-check.d.ts +15 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/registry.d.ts +37 -0
- package/dist/hooks/types.d.ts +72 -0
- package/dist/index.js +19426 -3884
- package/dist/plugin-handlers/assistant-done-handler.d.ts +12 -0
- package/dist/plugin-handlers/chat-message-handler.d.ts +30 -0
- package/dist/plugin-handlers/config-handler.d.ts +9 -0
- package/dist/plugin-handlers/event-handler.d.ts +18 -0
- package/dist/plugin-handlers/index.d.ts +9 -0
- package/dist/plugin-handlers/interfaces/assistant-done-context.d.ts +12 -0
- package/dist/plugin-handlers/interfaces/chat-message-context.d.ts +12 -0
- package/dist/plugin-handlers/interfaces/event-handler-context.d.ts +14 -0
- package/dist/plugin-handlers/interfaces/index.d.ts +12 -0
- package/dist/plugin-handlers/interfaces/orchestrator-state.d.ts +14 -0
- package/dist/plugin-handlers/interfaces/session-compacting.d.ts +19 -0
- package/dist/plugin-handlers/interfaces/session-state.d.ts +15 -0
- package/dist/plugin-handlers/interfaces/system-transform.d.ts +17 -0
- package/dist/plugin-handlers/interfaces/tool-execute-context.d.ts +8 -0
- package/dist/plugin-handlers/interfaces/tool-hook.d.ts +14 -0
- package/dist/plugin-handlers/session-compacting-handler.d.ts +14 -0
- package/dist/plugin-handlers/system-transform-handler.d.ts +14 -0
- package/dist/plugin-handlers/tool-execute-handler.d.ts +14 -0
- package/dist/plugin-handlers/tool-execute-pre-handler.d.ts +8 -0
- package/dist/shared/constants/system-messages.d.ts +3 -3
- package/dist/shared/core/constants/index.d.ts +0 -4
- package/dist/shared/errors/constants/error-patterns.d.ts +13 -0
- package/dist/shared/errors/constants/error-type.d.ts +13 -0
- package/dist/shared/errors/constants/index.d.ts +5 -0
- package/dist/shared/errors/detection.d.ts +5 -0
- package/dist/shared/errors/index.d.ts +7 -0
- package/dist/shared/errors/retry.d.ts +7 -0
- package/dist/shared/errors/types/error-pattern-type.d.ts +5 -0
- package/dist/shared/errors/types/index.d.ts +4 -0
- package/dist/shared/index.d.ts +8 -6
- package/dist/shared/loop/constants/index.d.ts +7 -0
- package/dist/shared/loop/constants/labels.d.ts +33 -0
- package/dist/shared/loop/constants/loop.d.ts +17 -0
- package/dist/shared/loop/constants/mission-control.d.ts +20 -0
- package/dist/shared/loop/constants/todo-status.d.ts +9 -0
- package/dist/shared/loop/index.d.ts +6 -0
- package/dist/shared/loop/interfaces/index.d.ts +6 -0
- package/dist/shared/loop/interfaces/mission-loop.d.ts +29 -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 +8 -0
- package/dist/shared/message/constants/message-roles.d.ts +23 -0
- package/dist/shared/message/constants/part-types.d.ts +13 -0
- package/dist/shared/message/constants/plugin-hooks.d.ts +15 -0
- package/dist/shared/message/constants/prompts.d.ts +8 -0
- package/dist/shared/message/constants/slash-commands.d.ts +21 -0
- package/dist/shared/message/index.d.ts +4 -0
- package/dist/shared/notification/constants/index.d.ts +3 -0
- package/dist/shared/notification/constants/toast-duration.d.ts +19 -0
- package/dist/shared/notification/constants/toast-variants.d.ts +10 -0
- package/dist/shared/notification/constants/tui.const.d.ts +24 -0
- package/dist/shared/notification/index.d.ts +7 -0
- package/dist/shared/notification/interfaces/index.d.ts +6 -0
- package/dist/shared/notification/interfaces/task-toast.interface.d.ts +18 -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/os-notify/constants/index.d.ts +6 -0
- package/dist/shared/notification/os-notify/constants/notification-command-keys.d.ts +11 -0
- package/dist/shared/notification/os-notify/constants/notification-commands.d.ts +11 -0
- package/dist/shared/notification/os-notify/constants/notification-defaults.d.ts +5 -0
- package/dist/shared/notification/os-notify/index.d.ts +6 -0
- package/dist/shared/notification/os-notify/interfaces/index.d.ts +5 -0
- package/dist/shared/notification/os-notify/interfaces/notification-config.d.ts +15 -0
- package/dist/shared/notification/os-notify/interfaces/notification-state.d.ts +13 -0
- package/dist/shared/notification/os-notify/types/index.d.ts +4 -0
- package/dist/shared/notification/os-notify/types/notification-commands.d.ts +5 -0
- package/dist/shared/notification/presets/index.d.ts +9 -0
- package/dist/shared/notification/presets/mission.d.ts +5 -0
- package/dist/shared/notification/presets/parallel.d.ts +6 -0
- package/dist/shared/notification/presets/session.d.ts +6 -0
- package/dist/shared/notification/presets/task-lifecycle.d.ts +7 -0
- package/dist/shared/notification/presets/tools.d.ts +6 -0
- package/dist/shared/notification/presets/warnings.d.ts +7 -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/os/constants/index.d.ts +4 -0
- package/dist/shared/os/constants/platform.d.ts +9 -0
- package/dist/shared/os/index.d.ts +5 -0
- package/dist/shared/os/types/index.d.ts +4 -0
- package/dist/shared/os/types/platform.d.ts +5 -0
- package/dist/shared/prompt/index.d.ts +0 -1
- package/dist/shared/recovery/constants/history.d.ts +11 -0
- package/dist/shared/recovery/constants/index.d.ts +6 -0
- package/dist/shared/recovery/constants/recovery-level.d.ts +15 -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 +0 -2
- package/dist/shared/session/index.d.ts +0 -1
- package/dist/shared/verification/constants/categories.d.ts +95 -0
- package/dist/shared/verification/constants/checklist.d.ts +16 -0
- package/dist/shared/verification/constants/index.d.ts +7 -0
- package/dist/shared/verification/constants/patterns.d.ts +19 -0
- package/dist/shared/verification/constants/signals.d.ts +10 -0
- package/dist/shared/verification/index.d.ts +8 -0
- package/dist/shared/verification/interfaces/checklist-item.d.ts +21 -0
- package/dist/shared/verification/interfaces/checklist-verification-result.d.ts +24 -0
- package/dist/shared/verification/interfaces/index.d.ts +7 -0
- package/dist/shared/verification/interfaces/verification-checklist.d.ts +19 -0
- package/dist/shared/verification/interfaces/verification-result.d.ts +29 -0
- package/dist/shared/verification/types/checklist-category.d.ts +18 -0
- package/dist/shared/verification/types/index.d.ts +4 -0
- package/dist/tools/parallel/list-agents.d.ts +1 -1
- package/dist/tools/parallel/show-metrics.d.ts +10 -0
- package/dist/tools/parallel/update-todo.d.ts +7 -0
- package/dist/utils/common.d.ts +5 -3
- package/dist/utils/compatibility/claude.d.ts +9 -0
- package/dist/utils/formatting/elapsed-time.d.ts +4 -0
- package/dist/utils/formatting/index.d.ts +5 -0
- package/dist/utils/formatting/timestamp.d.ts +4 -0
- package/dist/utils/parsing/index.d.ts +4 -0
- package/dist/utils/parsing/slash-command.d.ts +7 -0
- package/dist/utils/sanity/checker.d.ts +8 -0
- package/dist/utils/sanity/constants/escalation-prompt.d.ts +4 -0
- package/dist/utils/sanity/constants/index.d.ts +6 -0
- package/dist/utils/sanity/constants/recovery-prompt.d.ts +4 -0
- package/dist/utils/sanity/constants/severity.d.ts +8 -0
- package/dist/utils/sanity/index.d.ts +7 -0
- package/dist/utils/sanity/interfaces/index.d.ts +4 -0
- package/dist/utils/sanity/interfaces/sanity-result.d.ts +9 -0
- package/dist/utils/sanity/types/index.d.ts +4 -0
- package/dist/utils/sanity/types/severity.d.ts +5 -0
- package/package.json +3 -3
- package/dist/core/agents/adaptive-concurrency.d.ts +0 -57
- /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,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,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,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,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,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,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,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,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";
|