@serviceme/devtools-core 0.0.5 → 0.1.2

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/dist/index.d.mts CHANGED
@@ -1,4 +1,16 @@
1
- import { EnvironmentCheckResult, KnownEnvironmentTool, ToolCheckResult, ServiceMeImageValidationResult, ServiceMeImageInfo, ServiceMeImageCompressOptions, ServiceMeImageCompressResult, JsonSortOptions, JsonValidationResult, OpenCodeAgentEvent, OpenCodeRuntimeOptions, OpenCodeServerState, AgentSessionStatus, ServiceMeProjectExtractTemplateInput, ServiceMeProjectExtractTemplateResult, ServiceMeProjectInstallDepsResult, ServiceMeProjectMakeScriptsExecutableResult, ServiceMeProjectGitInitResult, ServiceMeProjectScaffoldPruneResult } from '@serviceme/devtools-protocol';
1
+ import * as _serviceme_devtools_protocol from '@serviceme/devtools-protocol';
2
+ import { CopilotDoctorResult, CopilotPromptOptions, CopilotPromptResult, EnvironmentCheckResult, KnownEnvironmentTool, ToolCheckResult, ServiceMeImageValidationResult, ServiceMeImageInfo, ServiceMeImageCompressOptions, ServiceMeImageCompressResult, JsonSortOptions, JsonValidationResult, ServiceMeProjectExtractTemplateInput, ServiceMeProjectExtractTemplateResult, ServiceMeProjectInstallDepsResult, ServiceMeProjectMakeScriptsExecutableResult, ServiceMeProjectGitInitResult, ServiceMeProjectScaffoldPruneResult, TaskExecutionStatus, ScheduledTaskType, TaskPayload, ScheduledTasksConfig, ScheduledTask, TaskStartedEventParams, TaskOutputEventParams, TaskCompletedEventParams, TaskFailedEventParams, TaskCancelledEventParams, TaskExecutionSnapshot, RunningTaskInfo, TaskExecutionLog } from '@serviceme/devtools-protocol';
3
+
4
+ /**
5
+ * Quick auth pre-flight check using `gh auth status`.
6
+ * Returns true if gh is authenticated; false otherwise.
7
+ */
8
+ declare function isCopilotAuthenticated(): Promise<boolean>;
9
+ declare function copilotDoctor(): Promise<CopilotDoctorResult>;
10
+ declare function createCopilotNotInstalledError(): _serviceme_devtools_protocol.ServicemeProtocolError;
11
+ declare function createCopilotAuthRequiredError(): _serviceme_devtools_protocol.ServicemeProtocolError;
12
+
13
+ declare function copilotPrompt(options: CopilotPromptOptions): Promise<CopilotPromptResult>;
2
14
 
3
15
  declare class EnvironmentInspector {
4
16
  checkEnvironment(): Promise<EnvironmentCheckResult>;
@@ -41,61 +53,6 @@ interface ServiceMeLogger {
41
53
  declare const noopLogger: ServiceMeLogger;
42
54
  declare function createConsoleLogger(prefix?: string): ServiceMeLogger;
43
55
 
44
- interface OpenCodePromptInput {
45
- sessionId: string;
46
- prompt: string;
47
- workspaceRoot?: string;
48
- signal?: AbortSignal;
49
- onEvent?: (event: OpenCodeAgentEvent) => void;
50
- }
51
- interface OpenCodeManagerOptions {
52
- command?: string;
53
- installUrl?: string;
54
- host?: string;
55
- portMin?: number;
56
- portMax?: number;
57
- healthPath?: string;
58
- sessionPath?: string;
59
- sessionStatusPath?: string;
60
- startupPollIntervalMs?: number;
61
- idleTimeoutMs?: number;
62
- stdoutLogLimitBytes?: number;
63
- logger?: ServiceMeLogger;
64
- }
65
- declare class OpenCodeManager {
66
- private readonly options;
67
- private readonly logger;
68
- private childProcess;
69
- private port;
70
- private startupPromise;
71
- private idleTimer;
72
- private stdoutBytes;
73
- constructor(options?: OpenCodeManagerOptions);
74
- isAvailable(): Promise<boolean>;
75
- isRunning(): boolean;
76
- ensureServer(runtime?: OpenCodeRuntimeOptions): Promise<OpenCodeServerState>;
77
- getServerState(): Promise<OpenCodeServerState>;
78
- createSession(runtime?: OpenCodeRuntimeOptions): Promise<{
79
- sessionId: string;
80
- title?: string;
81
- status: AgentSessionStatus;
82
- }>;
83
- prompt(input: OpenCodePromptInput): Promise<void>;
84
- getSessionStatus(sessionId: string, workspaceRoot?: string): Promise<AgentSessionStatus>;
85
- abortSession(sessionId: string, workspaceRoot?: string): Promise<void>;
86
- dispose(): Promise<void>;
87
- private ensureServerStarted;
88
- private startServerProcess;
89
- private waitForHealth;
90
- private isServerHealthy;
91
- private resetIdleTimer;
92
- private terminateTrackedProcess;
93
- private request;
94
- private createQuery;
95
- private getLatestAssistantMessage;
96
- private mapStatus;
97
- }
98
-
99
56
  declare class ProjectTools {
100
57
  extractTemplate(zipPath: string, workspacePath: string, tempExtractDir: string, input: ServiceMeProjectExtractTemplateInput): Promise<ServiceMeProjectExtractTemplateResult>;
101
58
  installDependencies(workspacePath: string, command?: string): Promise<ServiceMeProjectInstallDepsResult>;
@@ -109,7 +66,172 @@ declare class ProjectTools {
109
66
  }
110
67
  declare function createProjectTools(): ProjectTools;
111
68
 
69
+ declare class DaemonLogger {
70
+ private readonly logPath;
71
+ constructor(workspacePath: string);
72
+ getLogPath(): string;
73
+ log(level: "info" | "warn" | "error", message: string): void;
74
+ private rotateIfNeeded;
75
+ }
76
+
77
+ declare class PidManager {
78
+ private readonly pidPath;
79
+ constructor(workspacePath: string);
80
+ getPidPath(): string;
81
+ writePid(pid: number): void;
82
+ readPid(): number | null;
83
+ removePid(): void;
84
+ isProcessRunning(pid: number): boolean;
85
+ getRunningPid(): number | null;
86
+ }
87
+
88
+ declare class SchedulerDaemon {
89
+ private readonly workspacePath;
90
+ private readonly configManager;
91
+ private readonly logManager;
92
+ private readonly pidManager;
93
+ private readonly logger;
94
+ private tickTimer;
95
+ private watcher;
96
+ private running;
97
+ private startTime;
98
+ private lastRun;
99
+ private taskRunning;
100
+ constructor(workspacePath: string);
101
+ start(): void;
102
+ stop(): void;
103
+ private setupConfigWatch;
104
+ private tick;
105
+ private shouldRun;
106
+ private executeTask;
107
+ getStatus(): {
108
+ running: boolean;
109
+ pid: number;
110
+ uptimeSeconds: number | null;
111
+ tasksRegistered: number;
112
+ tasksEnabled: number;
113
+ workspacePath: string;
114
+ pidFile: string;
115
+ };
116
+ }
117
+ declare function parseIntervalMs(schedule: string): number;
118
+ declare function matchesCron(expression: string, date: Date): boolean;
119
+
120
+ interface ExecutorResult {
121
+ status: TaskExecutionStatus;
122
+ output?: string;
123
+ error?: string;
124
+ }
125
+ interface TaskExecutor {
126
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
127
+ }
128
+ type OutputEventCallback = (stream: "stdout" | "stderr", data: string) => void;
129
+ interface StreamingExecutorHandle {
130
+ result: Promise<ExecutorResult>;
131
+ cancel: () => void;
132
+ }
133
+ interface StreamingTaskExecutor extends TaskExecutor {
134
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
135
+ }
136
+ declare function isStreamingTaskExecutor(executor: TaskExecutor): executor is StreamingTaskExecutor;
137
+
138
+ declare class GithubCopilotCliExecutor implements StreamingTaskExecutor {
139
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
140
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
141
+ }
142
+
143
+ declare class HttpRequestExecutor implements TaskExecutor {
144
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
145
+ }
146
+
147
+ declare class ShellExecutor implements StreamingTaskExecutor {
148
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
149
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
150
+ }
151
+
152
+ declare function getExecutor(taskType: ScheduledTaskType): TaskExecutor;
153
+
154
+ interface CreateTaskInput {
155
+ name: string;
156
+ description?: string;
157
+ scheduleType: "cron" | "interval";
158
+ schedule: string;
159
+ taskType: ScheduledTaskType;
160
+ payload: TaskPayload;
161
+ enabled?: boolean;
162
+ }
163
+ interface EditTaskInput {
164
+ name?: string;
165
+ description?: string;
166
+ scheduleType?: "cron" | "interval";
167
+ schedule?: string;
168
+ taskType?: ScheduledTaskType;
169
+ payload?: TaskPayload;
170
+ enabled?: boolean;
171
+ }
172
+ declare class TaskConfigManager {
173
+ private readonly configPath;
174
+ constructor(workspacePath: string);
175
+ getConfigPath(): string;
176
+ readConfig(): ScheduledTasksConfig;
177
+ private writeConfig;
178
+ listTasks(): ScheduledTask[];
179
+ getTask(id: string): ScheduledTask | undefined;
180
+ getTaskByName(name: string): ScheduledTask | undefined;
181
+ createTask(input: CreateTaskInput): ScheduledTask;
182
+ editTask(id: string, input: EditTaskInput): ScheduledTask;
183
+ deleteTask(id: string): ScheduledTask;
184
+ toggleTask(id: string, enabled: boolean): ScheduledTask;
185
+ }
186
+
187
+ interface TaskEventListener {
188
+ onStarted(params: TaskStartedEventParams): void;
189
+ onOutput(params: TaskOutputEventParams): void;
190
+ onCompleted(params: TaskCompletedEventParams): void;
191
+ onFailed(params: TaskFailedEventParams): void;
192
+ onCancelled(params: TaskCancelledEventParams): void;
193
+ }
194
+ declare class TaskExecutionEngine {
195
+ private readonly getExecutor;
196
+ private readonly running;
197
+ private readonly taskExecutions;
198
+ private listener;
199
+ constructor(getExecutor: (taskType: string) => TaskExecutor);
200
+ setListener(listener: TaskEventListener): void;
201
+ execute(snapshot: TaskExecutionSnapshot): Promise<void>;
202
+ cancel(executionId: string): boolean;
203
+ listRunning(): RunningTaskInfo[];
204
+ dispose(): void;
205
+ }
206
+
207
+ interface AppendLogInput {
208
+ taskId: string;
209
+ taskName: string;
210
+ startedAt: string;
211
+ finishedAt: string;
212
+ status: Exclude<TaskExecutionStatus, "running">;
213
+ output?: string;
214
+ error?: string;
215
+ }
216
+ declare class TaskLogManager {
217
+ private readonly logPath;
218
+ constructor(workspacePath: string);
219
+ getLogPath(): string;
220
+ private readLogFile;
221
+ private backupCorruptedFile;
222
+ private writeLogFile;
223
+ appendLog(input: AppendLogInput): TaskExecutionLog;
224
+ getLogs(options?: {
225
+ taskId?: string;
226
+ limit?: number;
227
+ }): {
228
+ logs: TaskExecutionLog[];
229
+ total: number;
230
+ };
231
+ clearLogs(taskId?: string): number;
232
+ }
233
+
112
234
  declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
113
235
  declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
114
236
 
115
- export { EnvironmentInspector, ImageTools, type JsonTools, OpenCodeManager, type OpenCodeManagerOptions, type OpenCodePromptInput, ProjectTools, type ServiceMeLogger, createConsoleLogger, createImageTools, createJsonTools, createProjectTools, moveFiles, noopLogger, unzipFile };
237
+ export { type AppendLogInput, type CreateTaskInput, DaemonLogger, type EditTaskInput, EnvironmentInspector, type ExecutorResult, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type JsonTools, type OutputEventCallback, PidManager, ProjectTools, SchedulerDaemon, type ServiceMeLogger, ShellExecutor, type StreamingExecutorHandle, type StreamingTaskExecutor, TaskConfigManager, type TaskEventListener, TaskExecutionEngine, type TaskExecutor, TaskLogManager, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, getExecutor, isCopilotAuthenticated, isStreamingTaskExecutor, matchesCron, moveFiles, noopLogger, parseIntervalMs, unzipFile };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,16 @@
1
- import { EnvironmentCheckResult, KnownEnvironmentTool, ToolCheckResult, ServiceMeImageValidationResult, ServiceMeImageInfo, ServiceMeImageCompressOptions, ServiceMeImageCompressResult, JsonSortOptions, JsonValidationResult, OpenCodeAgentEvent, OpenCodeRuntimeOptions, OpenCodeServerState, AgentSessionStatus, ServiceMeProjectExtractTemplateInput, ServiceMeProjectExtractTemplateResult, ServiceMeProjectInstallDepsResult, ServiceMeProjectMakeScriptsExecutableResult, ServiceMeProjectGitInitResult, ServiceMeProjectScaffoldPruneResult } from '@serviceme/devtools-protocol';
1
+ import * as _serviceme_devtools_protocol from '@serviceme/devtools-protocol';
2
+ import { CopilotDoctorResult, CopilotPromptOptions, CopilotPromptResult, EnvironmentCheckResult, KnownEnvironmentTool, ToolCheckResult, ServiceMeImageValidationResult, ServiceMeImageInfo, ServiceMeImageCompressOptions, ServiceMeImageCompressResult, JsonSortOptions, JsonValidationResult, ServiceMeProjectExtractTemplateInput, ServiceMeProjectExtractTemplateResult, ServiceMeProjectInstallDepsResult, ServiceMeProjectMakeScriptsExecutableResult, ServiceMeProjectGitInitResult, ServiceMeProjectScaffoldPruneResult, TaskExecutionStatus, ScheduledTaskType, TaskPayload, ScheduledTasksConfig, ScheduledTask, TaskStartedEventParams, TaskOutputEventParams, TaskCompletedEventParams, TaskFailedEventParams, TaskCancelledEventParams, TaskExecutionSnapshot, RunningTaskInfo, TaskExecutionLog } from '@serviceme/devtools-protocol';
3
+
4
+ /**
5
+ * Quick auth pre-flight check using `gh auth status`.
6
+ * Returns true if gh is authenticated; false otherwise.
7
+ */
8
+ declare function isCopilotAuthenticated(): Promise<boolean>;
9
+ declare function copilotDoctor(): Promise<CopilotDoctorResult>;
10
+ declare function createCopilotNotInstalledError(): _serviceme_devtools_protocol.ServicemeProtocolError;
11
+ declare function createCopilotAuthRequiredError(): _serviceme_devtools_protocol.ServicemeProtocolError;
12
+
13
+ declare function copilotPrompt(options: CopilotPromptOptions): Promise<CopilotPromptResult>;
2
14
 
3
15
  declare class EnvironmentInspector {
4
16
  checkEnvironment(): Promise<EnvironmentCheckResult>;
@@ -41,61 +53,6 @@ interface ServiceMeLogger {
41
53
  declare const noopLogger: ServiceMeLogger;
42
54
  declare function createConsoleLogger(prefix?: string): ServiceMeLogger;
43
55
 
44
- interface OpenCodePromptInput {
45
- sessionId: string;
46
- prompt: string;
47
- workspaceRoot?: string;
48
- signal?: AbortSignal;
49
- onEvent?: (event: OpenCodeAgentEvent) => void;
50
- }
51
- interface OpenCodeManagerOptions {
52
- command?: string;
53
- installUrl?: string;
54
- host?: string;
55
- portMin?: number;
56
- portMax?: number;
57
- healthPath?: string;
58
- sessionPath?: string;
59
- sessionStatusPath?: string;
60
- startupPollIntervalMs?: number;
61
- idleTimeoutMs?: number;
62
- stdoutLogLimitBytes?: number;
63
- logger?: ServiceMeLogger;
64
- }
65
- declare class OpenCodeManager {
66
- private readonly options;
67
- private readonly logger;
68
- private childProcess;
69
- private port;
70
- private startupPromise;
71
- private idleTimer;
72
- private stdoutBytes;
73
- constructor(options?: OpenCodeManagerOptions);
74
- isAvailable(): Promise<boolean>;
75
- isRunning(): boolean;
76
- ensureServer(runtime?: OpenCodeRuntimeOptions): Promise<OpenCodeServerState>;
77
- getServerState(): Promise<OpenCodeServerState>;
78
- createSession(runtime?: OpenCodeRuntimeOptions): Promise<{
79
- sessionId: string;
80
- title?: string;
81
- status: AgentSessionStatus;
82
- }>;
83
- prompt(input: OpenCodePromptInput): Promise<void>;
84
- getSessionStatus(sessionId: string, workspaceRoot?: string): Promise<AgentSessionStatus>;
85
- abortSession(sessionId: string, workspaceRoot?: string): Promise<void>;
86
- dispose(): Promise<void>;
87
- private ensureServerStarted;
88
- private startServerProcess;
89
- private waitForHealth;
90
- private isServerHealthy;
91
- private resetIdleTimer;
92
- private terminateTrackedProcess;
93
- private request;
94
- private createQuery;
95
- private getLatestAssistantMessage;
96
- private mapStatus;
97
- }
98
-
99
56
  declare class ProjectTools {
100
57
  extractTemplate(zipPath: string, workspacePath: string, tempExtractDir: string, input: ServiceMeProjectExtractTemplateInput): Promise<ServiceMeProjectExtractTemplateResult>;
101
58
  installDependencies(workspacePath: string, command?: string): Promise<ServiceMeProjectInstallDepsResult>;
@@ -109,7 +66,172 @@ declare class ProjectTools {
109
66
  }
110
67
  declare function createProjectTools(): ProjectTools;
111
68
 
69
+ declare class DaemonLogger {
70
+ private readonly logPath;
71
+ constructor(workspacePath: string);
72
+ getLogPath(): string;
73
+ log(level: "info" | "warn" | "error", message: string): void;
74
+ private rotateIfNeeded;
75
+ }
76
+
77
+ declare class PidManager {
78
+ private readonly pidPath;
79
+ constructor(workspacePath: string);
80
+ getPidPath(): string;
81
+ writePid(pid: number): void;
82
+ readPid(): number | null;
83
+ removePid(): void;
84
+ isProcessRunning(pid: number): boolean;
85
+ getRunningPid(): number | null;
86
+ }
87
+
88
+ declare class SchedulerDaemon {
89
+ private readonly workspacePath;
90
+ private readonly configManager;
91
+ private readonly logManager;
92
+ private readonly pidManager;
93
+ private readonly logger;
94
+ private tickTimer;
95
+ private watcher;
96
+ private running;
97
+ private startTime;
98
+ private lastRun;
99
+ private taskRunning;
100
+ constructor(workspacePath: string);
101
+ start(): void;
102
+ stop(): void;
103
+ private setupConfigWatch;
104
+ private tick;
105
+ private shouldRun;
106
+ private executeTask;
107
+ getStatus(): {
108
+ running: boolean;
109
+ pid: number;
110
+ uptimeSeconds: number | null;
111
+ tasksRegistered: number;
112
+ tasksEnabled: number;
113
+ workspacePath: string;
114
+ pidFile: string;
115
+ };
116
+ }
117
+ declare function parseIntervalMs(schedule: string): number;
118
+ declare function matchesCron(expression: string, date: Date): boolean;
119
+
120
+ interface ExecutorResult {
121
+ status: TaskExecutionStatus;
122
+ output?: string;
123
+ error?: string;
124
+ }
125
+ interface TaskExecutor {
126
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
127
+ }
128
+ type OutputEventCallback = (stream: "stdout" | "stderr", data: string) => void;
129
+ interface StreamingExecutorHandle {
130
+ result: Promise<ExecutorResult>;
131
+ cancel: () => void;
132
+ }
133
+ interface StreamingTaskExecutor extends TaskExecutor {
134
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
135
+ }
136
+ declare function isStreamingTaskExecutor(executor: TaskExecutor): executor is StreamingTaskExecutor;
137
+
138
+ declare class GithubCopilotCliExecutor implements StreamingTaskExecutor {
139
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
140
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
141
+ }
142
+
143
+ declare class HttpRequestExecutor implements TaskExecutor {
144
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
145
+ }
146
+
147
+ declare class ShellExecutor implements StreamingTaskExecutor {
148
+ execute(payload: unknown, abortSignal?: AbortSignal): Promise<ExecutorResult>;
149
+ executeStreaming(payload: unknown, onOutput: OutputEventCallback, abortSignal?: AbortSignal): StreamingExecutorHandle;
150
+ }
151
+
152
+ declare function getExecutor(taskType: ScheduledTaskType): TaskExecutor;
153
+
154
+ interface CreateTaskInput {
155
+ name: string;
156
+ description?: string;
157
+ scheduleType: "cron" | "interval";
158
+ schedule: string;
159
+ taskType: ScheduledTaskType;
160
+ payload: TaskPayload;
161
+ enabled?: boolean;
162
+ }
163
+ interface EditTaskInput {
164
+ name?: string;
165
+ description?: string;
166
+ scheduleType?: "cron" | "interval";
167
+ schedule?: string;
168
+ taskType?: ScheduledTaskType;
169
+ payload?: TaskPayload;
170
+ enabled?: boolean;
171
+ }
172
+ declare class TaskConfigManager {
173
+ private readonly configPath;
174
+ constructor(workspacePath: string);
175
+ getConfigPath(): string;
176
+ readConfig(): ScheduledTasksConfig;
177
+ private writeConfig;
178
+ listTasks(): ScheduledTask[];
179
+ getTask(id: string): ScheduledTask | undefined;
180
+ getTaskByName(name: string): ScheduledTask | undefined;
181
+ createTask(input: CreateTaskInput): ScheduledTask;
182
+ editTask(id: string, input: EditTaskInput): ScheduledTask;
183
+ deleteTask(id: string): ScheduledTask;
184
+ toggleTask(id: string, enabled: boolean): ScheduledTask;
185
+ }
186
+
187
+ interface TaskEventListener {
188
+ onStarted(params: TaskStartedEventParams): void;
189
+ onOutput(params: TaskOutputEventParams): void;
190
+ onCompleted(params: TaskCompletedEventParams): void;
191
+ onFailed(params: TaskFailedEventParams): void;
192
+ onCancelled(params: TaskCancelledEventParams): void;
193
+ }
194
+ declare class TaskExecutionEngine {
195
+ private readonly getExecutor;
196
+ private readonly running;
197
+ private readonly taskExecutions;
198
+ private listener;
199
+ constructor(getExecutor: (taskType: string) => TaskExecutor);
200
+ setListener(listener: TaskEventListener): void;
201
+ execute(snapshot: TaskExecutionSnapshot): Promise<void>;
202
+ cancel(executionId: string): boolean;
203
+ listRunning(): RunningTaskInfo[];
204
+ dispose(): void;
205
+ }
206
+
207
+ interface AppendLogInput {
208
+ taskId: string;
209
+ taskName: string;
210
+ startedAt: string;
211
+ finishedAt: string;
212
+ status: Exclude<TaskExecutionStatus, "running">;
213
+ output?: string;
214
+ error?: string;
215
+ }
216
+ declare class TaskLogManager {
217
+ private readonly logPath;
218
+ constructor(workspacePath: string);
219
+ getLogPath(): string;
220
+ private readLogFile;
221
+ private backupCorruptedFile;
222
+ private writeLogFile;
223
+ appendLog(input: AppendLogInput): TaskExecutionLog;
224
+ getLogs(options?: {
225
+ taskId?: string;
226
+ limit?: number;
227
+ }): {
228
+ logs: TaskExecutionLog[];
229
+ total: number;
230
+ };
231
+ clearLogs(taskId?: string): number;
232
+ }
233
+
112
234
  declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
113
235
  declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
114
236
 
115
- export { EnvironmentInspector, ImageTools, type JsonTools, OpenCodeManager, type OpenCodeManagerOptions, type OpenCodePromptInput, ProjectTools, type ServiceMeLogger, createConsoleLogger, createImageTools, createJsonTools, createProjectTools, moveFiles, noopLogger, unzipFile };
237
+ export { type AppendLogInput, type CreateTaskInput, DaemonLogger, type EditTaskInput, EnvironmentInspector, type ExecutorResult, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type JsonTools, type OutputEventCallback, PidManager, ProjectTools, SchedulerDaemon, type ServiceMeLogger, ShellExecutor, type StreamingExecutorHandle, type StreamingTaskExecutor, TaskConfigManager, type TaskEventListener, TaskExecutionEngine, type TaskExecutor, TaskLogManager, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, getExecutor, isCopilotAuthenticated, isStreamingTaskExecutor, matchesCron, moveFiles, noopLogger, parseIntervalMs, unzipFile };