@litmers/cursorflow-orchestrator 0.1.20 → 0.1.28
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/CHANGELOG.md +20 -0
- package/commands/cursorflow-clean.md +19 -0
- package/commands/cursorflow-runs.md +59 -0
- package/commands/cursorflow-stop.md +55 -0
- package/dist/cli/clean.js +171 -0
- package/dist/cli/clean.js.map +1 -1
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/logs.js +83 -42
- package/dist/cli/logs.js.map +1 -1
- package/dist/cli/monitor.d.ts +7 -0
- package/dist/cli/monitor.js +1007 -189
- package/dist/cli/monitor.js.map +1 -1
- package/dist/cli/prepare.js +87 -3
- package/dist/cli/prepare.js.map +1 -1
- package/dist/cli/resume.js +188 -236
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/run.js +125 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/runs.d.ts +5 -0
- package/dist/cli/runs.js +214 -0
- package/dist/cli/runs.js.map +1 -0
- package/dist/cli/setup-commands.js +0 -0
- package/dist/cli/signal.js +1 -1
- package/dist/cli/signal.js.map +1 -1
- package/dist/cli/stop.d.ts +5 -0
- package/dist/cli/stop.js +215 -0
- package/dist/cli/stop.js.map +1 -0
- package/dist/cli/tasks.d.ts +10 -0
- package/dist/cli/tasks.js +165 -0
- package/dist/cli/tasks.js.map +1 -0
- package/dist/core/auto-recovery.d.ts +212 -0
- package/dist/core/auto-recovery.js +737 -0
- package/dist/core/auto-recovery.js.map +1 -0
- package/dist/core/failure-policy.d.ts +156 -0
- package/dist/core/failure-policy.js +488 -0
- package/dist/core/failure-policy.js.map +1 -0
- package/dist/core/orchestrator.d.ts +15 -2
- package/dist/core/orchestrator.js +397 -15
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/reviewer.d.ts +2 -0
- package/dist/core/reviewer.js +2 -0
- package/dist/core/reviewer.js.map +1 -1
- package/dist/core/runner.d.ts +33 -10
- package/dist/core/runner.js +321 -146
- package/dist/core/runner.js.map +1 -1
- package/dist/services/logging/buffer.d.ts +67 -0
- package/dist/services/logging/buffer.js +309 -0
- package/dist/services/logging/buffer.js.map +1 -0
- package/dist/services/logging/console.d.ts +89 -0
- package/dist/services/logging/console.js +169 -0
- package/dist/services/logging/console.js.map +1 -0
- package/dist/services/logging/file-writer.d.ts +71 -0
- package/dist/services/logging/file-writer.js +516 -0
- package/dist/services/logging/file-writer.js.map +1 -0
- package/dist/services/logging/formatter.d.ts +39 -0
- package/dist/services/logging/formatter.js +227 -0
- package/dist/services/logging/formatter.js.map +1 -0
- package/dist/services/logging/index.d.ts +11 -0
- package/dist/services/logging/index.js +30 -0
- package/dist/services/logging/index.js.map +1 -0
- package/dist/services/logging/parser.d.ts +31 -0
- package/dist/services/logging/parser.js +222 -0
- package/dist/services/logging/parser.js.map +1 -0
- package/dist/services/process/index.d.ts +59 -0
- package/dist/services/process/index.js +257 -0
- package/dist/services/process/index.js.map +1 -0
- package/dist/types/agent.d.ts +20 -0
- package/dist/types/agent.js +6 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +65 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/events.d.ts +125 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.js +37 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lane.d.ts +43 -0
- package/dist/types/lane.js +6 -0
- package/dist/types/lane.js.map +1 -0
- package/dist/types/logging.d.ts +71 -0
- package/dist/types/logging.js +16 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/review.d.ts +17 -0
- package/dist/types/review.js +6 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/run.d.ts +32 -0
- package/dist/types/run.js +6 -0
- package/dist/types/run.js.map +1 -0
- package/dist/types/task.d.ts +71 -0
- package/dist/types/task.js +6 -0
- package/dist/types/task.js.map +1 -0
- package/dist/ui/components.d.ts +134 -0
- package/dist/ui/components.js +389 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/log-viewer.d.ts +49 -0
- package/dist/ui/log-viewer.js +449 -0
- package/dist/ui/log-viewer.js.map +1 -0
- package/dist/utils/checkpoint.d.ts +87 -0
- package/dist/utils/checkpoint.js +317 -0
- package/dist/utils/checkpoint.js.map +1 -0
- package/dist/utils/config.d.ts +4 -0
- package/dist/utils/config.js +11 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/cursor-agent.js.map +1 -1
- package/dist/utils/dependency.d.ts +74 -0
- package/dist/utils/dependency.js +420 -0
- package/dist/utils/dependency.js.map +1 -0
- package/dist/utils/doctor.js +10 -5
- package/dist/utils/doctor.js.map +1 -1
- package/dist/utils/enhanced-logger.d.ts +10 -33
- package/dist/utils/enhanced-logger.js +94 -9
- package/dist/utils/enhanced-logger.js.map +1 -1
- package/dist/utils/git.d.ts +121 -0
- package/dist/utils/git.js +322 -2
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/health.d.ts +91 -0
- package/dist/utils/health.js +556 -0
- package/dist/utils/health.js.map +1 -0
- package/dist/utils/lock.d.ts +95 -0
- package/dist/utils/lock.js +332 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/log-buffer.d.ts +17 -0
- package/dist/utils/log-buffer.js +14 -0
- package/dist/utils/log-buffer.js.map +1 -0
- package/dist/utils/log-constants.d.ts +23 -0
- package/dist/utils/log-constants.js +28 -0
- package/dist/utils/log-constants.js.map +1 -0
- package/dist/utils/log-formatter.d.ts +9 -0
- package/dist/utils/log-formatter.js +113 -70
- package/dist/utils/log-formatter.js.map +1 -1
- package/dist/utils/log-service.d.ts +19 -0
- package/dist/utils/log-service.js +47 -0
- package/dist/utils/log-service.js.map +1 -0
- package/dist/utils/logger.d.ts +46 -27
- package/dist/utils/logger.js +82 -60
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/process-manager.d.ts +21 -0
- package/dist/utils/process-manager.js +138 -0
- package/dist/utils/process-manager.js.map +1 -0
- package/dist/utils/retry.d.ts +121 -0
- package/dist/utils/retry.js +374 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/run-service.d.ts +88 -0
- package/dist/utils/run-service.js +412 -0
- package/dist/utils/run-service.js.map +1 -0
- package/dist/utils/state.d.ts +58 -2
- package/dist/utils/state.js +306 -3
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/task-service.d.ts +82 -0
- package/dist/utils/task-service.js +348 -0
- package/dist/utils/task-service.js.map +1 -0
- package/dist/utils/types.d.ts +2 -272
- package/dist/utils/types.js +16 -0
- package/dist/utils/types.js.map +1 -1
- package/package.json +38 -23
- package/scripts/ai-security-check.js +0 -1
- package/scripts/local-security-gate.sh +0 -0
- package/scripts/monitor-lanes.sh +94 -0
- package/scripts/patches/test-cursor-agent.js +0 -1
- package/scripts/release.sh +0 -0
- package/scripts/setup-security.sh +0 -0
- package/scripts/stream-logs.sh +72 -0
- package/scripts/verify-and-fix.sh +0 -0
- package/src/cli/clean.ts +180 -0
- package/src/cli/index.ts +7 -0
- package/src/cli/init.ts +1 -1
- package/src/cli/logs.ts +79 -42
- package/src/cli/monitor.ts +1815 -899
- package/src/cli/prepare.ts +97 -3
- package/src/cli/resume.ts +220 -277
- package/src/cli/run.ts +154 -3
- package/src/cli/runs.ts +212 -0
- package/src/cli/setup-commands.ts +0 -0
- package/src/cli/signal.ts +1 -1
- package/src/cli/stop.ts +209 -0
- package/src/cli/tasks.ts +154 -0
- package/src/core/auto-recovery.ts +909 -0
- package/src/core/failure-policy.ts +592 -0
- package/src/core/orchestrator.ts +1136 -675
- package/src/core/reviewer.ts +4 -0
- package/src/core/runner.ts +1443 -1217
- package/src/services/logging/buffer.ts +326 -0
- package/src/services/logging/console.ts +193 -0
- package/src/services/logging/file-writer.ts +526 -0
- package/src/services/logging/formatter.ts +268 -0
- package/src/services/logging/index.ts +16 -0
- package/src/services/logging/parser.ts +232 -0
- package/src/services/process/index.ts +261 -0
- package/src/types/agent.ts +24 -0
- package/src/types/config.ts +79 -0
- package/src/types/events.ts +156 -0
- package/src/types/index.ts +29 -0
- package/src/types/lane.ts +56 -0
- package/src/types/logging.ts +96 -0
- package/src/types/review.ts +20 -0
- package/src/types/run.ts +37 -0
- package/src/types/task.ts +79 -0
- package/src/ui/components.ts +430 -0
- package/src/ui/log-viewer.ts +485 -0
- package/src/utils/checkpoint.ts +374 -0
- package/src/utils/config.ts +11 -2
- package/src/utils/cursor-agent.ts +1 -1
- package/src/utils/dependency.ts +482 -0
- package/src/utils/doctor.ts +11 -5
- package/src/utils/enhanced-logger.ts +108 -49
- package/src/utils/git.ts +871 -499
- package/src/utils/health.ts +596 -0
- package/src/utils/lock.ts +346 -0
- package/src/utils/log-buffer.ts +28 -0
- package/src/utils/log-constants.ts +26 -0
- package/src/utils/log-formatter.ts +120 -37
- package/src/utils/log-service.ts +49 -0
- package/src/utils/logger.ts +100 -51
- package/src/utils/process-manager.ts +100 -0
- package/src/utils/retry.ts +413 -0
- package/src/utils/run-service.ts +433 -0
- package/src/utils/state.ts +369 -3
- package/src/utils/task-service.ts +370 -0
- package/src/utils/types.ts +2 -315
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging-related type definitions
|
|
3
|
+
*/
|
|
4
|
+
export declare enum LogImportance {
|
|
5
|
+
CRITICAL = "critical",
|
|
6
|
+
HIGH = "high",
|
|
7
|
+
MEDIUM = "medium",
|
|
8
|
+
LOW = "low",
|
|
9
|
+
INFO = "info",
|
|
10
|
+
DEBUG = "debug"
|
|
11
|
+
}
|
|
12
|
+
export type MessageType = 'system' | 'user' | 'assistant' | 'tool' | 'tool_result' | 'result' | 'thinking' | 'success' | 'info' | 'warn' | 'error' | 'stdout' | 'stderr';
|
|
13
|
+
export interface ParsedMessage {
|
|
14
|
+
type: MessageType;
|
|
15
|
+
role: string;
|
|
16
|
+
content: string;
|
|
17
|
+
timestamp: number;
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export interface JsonLogEntry {
|
|
21
|
+
timestamp: string;
|
|
22
|
+
type?: string;
|
|
23
|
+
level?: 'stdout' | 'stderr' | 'info' | 'error' | 'debug' | 'session';
|
|
24
|
+
source?: string;
|
|
25
|
+
task?: string;
|
|
26
|
+
lane?: string;
|
|
27
|
+
message?: string;
|
|
28
|
+
content?: string;
|
|
29
|
+
raw?: string;
|
|
30
|
+
metadata?: Record<string, any>;
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
}
|
|
33
|
+
export interface BufferedLogEntry {
|
|
34
|
+
id: number;
|
|
35
|
+
timestamp: Date;
|
|
36
|
+
laneName: string;
|
|
37
|
+
level: string;
|
|
38
|
+
type: MessageType | string;
|
|
39
|
+
message: string;
|
|
40
|
+
raw?: JsonLogEntry;
|
|
41
|
+
importance: LogImportance;
|
|
42
|
+
laneColor: string;
|
|
43
|
+
metadata?: Record<string, any>;
|
|
44
|
+
}
|
|
45
|
+
export type { EnhancedLogConfig } from './config';
|
|
46
|
+
export interface LogSession {
|
|
47
|
+
id: string;
|
|
48
|
+
laneName: string;
|
|
49
|
+
taskName?: string;
|
|
50
|
+
model?: string;
|
|
51
|
+
startTime: number;
|
|
52
|
+
metadata?: Record<string, any>;
|
|
53
|
+
}
|
|
54
|
+
export interface ConversationEntry {
|
|
55
|
+
timestamp: string;
|
|
56
|
+
role: 'user' | 'assistant' | 'reviewer' | 'system' | 'intervention';
|
|
57
|
+
task: string | null;
|
|
58
|
+
fullText: string;
|
|
59
|
+
textLength: number;
|
|
60
|
+
model: string | null;
|
|
61
|
+
}
|
|
62
|
+
export interface GitLogEntry {
|
|
63
|
+
timestamp: string;
|
|
64
|
+
operation: string;
|
|
65
|
+
[key: string]: any;
|
|
66
|
+
}
|
|
67
|
+
export interface EventEntry {
|
|
68
|
+
timestamp: string;
|
|
69
|
+
event: string;
|
|
70
|
+
[key: string]: any;
|
|
71
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Logging-related type definitions
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LogImportance = void 0;
|
|
7
|
+
var LogImportance;
|
|
8
|
+
(function (LogImportance) {
|
|
9
|
+
LogImportance["CRITICAL"] = "critical";
|
|
10
|
+
LogImportance["HIGH"] = "high";
|
|
11
|
+
LogImportance["MEDIUM"] = "medium";
|
|
12
|
+
LogImportance["LOW"] = "low";
|
|
13
|
+
LogImportance["INFO"] = "info";
|
|
14
|
+
LogImportance["DEBUG"] = "debug";
|
|
15
|
+
})(LogImportance || (exports.LogImportance = LogImportance = {}));
|
|
16
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/types/logging.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,gCAAe,CAAA;AACjB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-related type definitions
|
|
3
|
+
*/
|
|
4
|
+
export interface ReviewIssue {
|
|
5
|
+
severity: 'critical' | 'major' | 'minor';
|
|
6
|
+
description: string;
|
|
7
|
+
file?: string;
|
|
8
|
+
suggestion?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ReviewResult {
|
|
11
|
+
status: 'approved' | 'needs_changes';
|
|
12
|
+
buildSuccess: boolean;
|
|
13
|
+
issues: ReviewIssue[];
|
|
14
|
+
suggestions: string[];
|
|
15
|
+
summary: string;
|
|
16
|
+
raw: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/types/review.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-related type definitions
|
|
3
|
+
*/
|
|
4
|
+
import type { LaneInfo } from './lane';
|
|
5
|
+
export type RunStatus = 'running' | 'completed' | 'failed' | 'partial' | 'pending';
|
|
6
|
+
export interface RunInfo {
|
|
7
|
+
id: string;
|
|
8
|
+
path: string;
|
|
9
|
+
taskName: string;
|
|
10
|
+
status: RunStatus;
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime?: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
lanes: LaneInfo[];
|
|
15
|
+
branches: string[];
|
|
16
|
+
worktrees: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Flow info for multiple concurrent flows
|
|
20
|
+
*/
|
|
21
|
+
export interface FlowInfo {
|
|
22
|
+
id: string;
|
|
23
|
+
path: string;
|
|
24
|
+
status: RunStatus;
|
|
25
|
+
startTime: number;
|
|
26
|
+
endTime?: number;
|
|
27
|
+
laneCount: number;
|
|
28
|
+
completedCount: number;
|
|
29
|
+
failedCount: number;
|
|
30
|
+
isAlive: boolean;
|
|
31
|
+
pid?: number;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/types/run.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task-related type definitions
|
|
3
|
+
*/
|
|
4
|
+
import type { DependencyPolicy, DependencyRequestPlan } from './agent';
|
|
5
|
+
import type { LaneFileInfo } from './lane';
|
|
6
|
+
export interface Task {
|
|
7
|
+
name: string;
|
|
8
|
+
prompt: string;
|
|
9
|
+
model?: string;
|
|
10
|
+
/** Acceptance criteria for the AI reviewer to validate */
|
|
11
|
+
acceptanceCriteria?: string[];
|
|
12
|
+
/** Task-level dependencies (format: "lane:task") */
|
|
13
|
+
dependsOn?: string[];
|
|
14
|
+
/** Task execution timeout in milliseconds. Overrides lane-level timeout. */
|
|
15
|
+
timeout?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RunnerConfig {
|
|
18
|
+
tasks: Task[];
|
|
19
|
+
dependsOn?: string[];
|
|
20
|
+
pipelineBranch?: string;
|
|
21
|
+
worktreeDir?: string;
|
|
22
|
+
branchPrefix?: string;
|
|
23
|
+
worktreeRoot?: string;
|
|
24
|
+
baseBranch?: string;
|
|
25
|
+
model?: string;
|
|
26
|
+
dependencyPolicy: DependencyPolicy;
|
|
27
|
+
enableReview?: boolean;
|
|
28
|
+
/** Output format for cursor-agent (default: 'stream-json') */
|
|
29
|
+
agentOutputFormat?: 'stream-json' | 'json' | 'plain';
|
|
30
|
+
reviewModel?: string;
|
|
31
|
+
reviewAllTasks?: boolean;
|
|
32
|
+
maxReviewIterations?: number;
|
|
33
|
+
acceptanceCriteria?: string[];
|
|
34
|
+
/** Task execution timeout in milliseconds. Default: 600000 (10 minutes) */
|
|
35
|
+
timeout?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Enable intervention feature (stdin piping for message injection).
|
|
38
|
+
* Warning: May cause stdout buffering issues on some systems.
|
|
39
|
+
* Default: false
|
|
40
|
+
*/
|
|
41
|
+
enableIntervention?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Disable Git operations (worktree, branch, push, commit).
|
|
44
|
+
* Useful for testing or environments without Git remote.
|
|
45
|
+
* Default: false
|
|
46
|
+
*/
|
|
47
|
+
noGit?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface TaskDirInfo {
|
|
50
|
+
name: string;
|
|
51
|
+
path: string;
|
|
52
|
+
timestamp: Date;
|
|
53
|
+
featureName: string;
|
|
54
|
+
lanes: LaneFileInfo[];
|
|
55
|
+
validationStatus: ValidationStatus;
|
|
56
|
+
lastValidated?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface TaskExecutionResult {
|
|
59
|
+
taskName: string;
|
|
60
|
+
taskBranch: string;
|
|
61
|
+
status: 'FINISHED' | 'ERROR' | 'BLOCKED_DEPENDENCY';
|
|
62
|
+
error?: string;
|
|
63
|
+
dependencyRequest?: DependencyRequestPlan | null;
|
|
64
|
+
}
|
|
65
|
+
export interface TaskResult {
|
|
66
|
+
taskName: string;
|
|
67
|
+
taskBranch: string;
|
|
68
|
+
acceptanceCriteria?: string[];
|
|
69
|
+
[key: string]: any;
|
|
70
|
+
}
|
|
71
|
+
export type ValidationStatus = 'valid' | 'warnings' | 'errors' | 'unknown';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/types/task.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CursorFlow UI Components
|
|
3
|
+
*
|
|
4
|
+
* Reusable terminal UI components for interactive screens.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 상태 아이콘 유틸리티
|
|
8
|
+
*/
|
|
9
|
+
export declare const StatusIcons: {
|
|
10
|
+
readonly running: "🔄";
|
|
11
|
+
readonly completed: "✅";
|
|
12
|
+
readonly done: "✅";
|
|
13
|
+
readonly failed: "❌";
|
|
14
|
+
readonly partial: "⚠️";
|
|
15
|
+
readonly pending: "⏳";
|
|
16
|
+
readonly valid: "✅";
|
|
17
|
+
readonly errors: "❌";
|
|
18
|
+
readonly warnings: "⚠️";
|
|
19
|
+
};
|
|
20
|
+
export declare function getStatusIcon(status: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* ANSI 코드 제거
|
|
23
|
+
*/
|
|
24
|
+
export declare function stripAnsi(str: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* 문자열 패딩 (ANSI 코드 고려)
|
|
27
|
+
*/
|
|
28
|
+
export declare function pad(str: string, width: number, align?: 'left' | 'right' | 'center'): string;
|
|
29
|
+
/**
|
|
30
|
+
* 프로그레스 바 렌더링
|
|
31
|
+
*/
|
|
32
|
+
export declare function renderProgressBar(current: number, total: number, width?: number): string;
|
|
33
|
+
/**
|
|
34
|
+
* 확인 다이얼로그
|
|
35
|
+
*/
|
|
36
|
+
export declare function confirm(message: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* 알림 표시
|
|
39
|
+
*/
|
|
40
|
+
export interface Notification {
|
|
41
|
+
message: string;
|
|
42
|
+
type: 'info' | 'success' | 'error' | 'warning';
|
|
43
|
+
time: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function renderNotification(notification: Notification | null): string;
|
|
46
|
+
/**
|
|
47
|
+
* 키 도움말 바
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderKeyHelp(keys: {
|
|
50
|
+
key: string;
|
|
51
|
+
action: string;
|
|
52
|
+
}[]): string;
|
|
53
|
+
/**
|
|
54
|
+
* 헤더 렌더링
|
|
55
|
+
*/
|
|
56
|
+
export declare function renderHeader(title: string, subtitle?: string): string[];
|
|
57
|
+
/**
|
|
58
|
+
* 기본 인터랙티브 화면 클래스
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class InteractiveScreen {
|
|
61
|
+
protected notification: Notification | null;
|
|
62
|
+
protected running: boolean;
|
|
63
|
+
start(): void;
|
|
64
|
+
stop(): void;
|
|
65
|
+
abstract render(): void;
|
|
66
|
+
abstract handleKey(key: string, keyInfo?: any): void;
|
|
67
|
+
protected setupTerminal(): void;
|
|
68
|
+
protected restoreTerminal(): void;
|
|
69
|
+
private keypressHandler;
|
|
70
|
+
protected showNotification(message: string, type: Notification['type']): void;
|
|
71
|
+
protected clearOldNotification(): void;
|
|
72
|
+
protected clearScreen(): void;
|
|
73
|
+
protected hideCursor(): void;
|
|
74
|
+
protected showCursor(): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 선택 가능한 리스트 컴포넌트
|
|
78
|
+
*/
|
|
79
|
+
export declare class SelectableList<T> {
|
|
80
|
+
items: T[];
|
|
81
|
+
selectedIndex: number;
|
|
82
|
+
private formatter;
|
|
83
|
+
private maxVisible;
|
|
84
|
+
private scrollOffset;
|
|
85
|
+
constructor(items: T[], formatter: (item: T, selected: boolean) => string, maxVisible?: number);
|
|
86
|
+
moveUp(): void;
|
|
87
|
+
moveDown(): void;
|
|
88
|
+
private adjustScroll;
|
|
89
|
+
getSelected(): T | undefined;
|
|
90
|
+
getSelectedIndex(): number;
|
|
91
|
+
setItems(items: T[]): void;
|
|
92
|
+
render(): string[];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 체크박스 리스트 컴포넌트
|
|
96
|
+
*/
|
|
97
|
+
export declare class CheckboxList<T> {
|
|
98
|
+
items: T[];
|
|
99
|
+
checked: Set<number>;
|
|
100
|
+
selectedIndex: number;
|
|
101
|
+
private formatter;
|
|
102
|
+
private maxVisible;
|
|
103
|
+
private scrollOffset;
|
|
104
|
+
constructor(items: T[], formatter: (item: T, isSelected: boolean, isChecked: boolean) => string, maxVisible?: number);
|
|
105
|
+
moveUp(): void;
|
|
106
|
+
moveDown(): void;
|
|
107
|
+
private adjustScroll;
|
|
108
|
+
toggle(): void;
|
|
109
|
+
selectAll(): void;
|
|
110
|
+
deselectAll(): void;
|
|
111
|
+
getChecked(): T[];
|
|
112
|
+
render(): string[];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 스크롤 가능 버퍼 컴포넌트
|
|
116
|
+
*/
|
|
117
|
+
export declare class ScrollableBuffer<T> {
|
|
118
|
+
private items;
|
|
119
|
+
private scrollOffset;
|
|
120
|
+
private pageSize;
|
|
121
|
+
constructor(pageSize?: number);
|
|
122
|
+
setItems(items: T[]): void;
|
|
123
|
+
scrollUp(lines?: number): void;
|
|
124
|
+
scrollDown(lines?: number): void;
|
|
125
|
+
scrollToTop(): void;
|
|
126
|
+
scrollToBottom(): void;
|
|
127
|
+
getVisibleItems(): T[];
|
|
128
|
+
getTotalCount(): number;
|
|
129
|
+
getScrollInfo(): {
|
|
130
|
+
offset: number;
|
|
131
|
+
total: number;
|
|
132
|
+
pageSize: number;
|
|
133
|
+
};
|
|
134
|
+
}
|