poe-code 1.2.1 → 2.0.0

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 (156) hide show
  1. package/README.md +16 -20
  2. package/dist/cli/bootstrap.d.ts +4 -0
  3. package/dist/cli/bootstrap.js +75 -0
  4. package/dist/cli/bootstrap.js.map +1 -0
  5. package/dist/cli/commands/configure.d.ts +2 -1
  6. package/dist/cli/commands/configure.js +7 -7
  7. package/dist/cli/commands/configure.js.map +1 -1
  8. package/dist/cli/container.d.ts +0 -5
  9. package/dist/cli/container.js +0 -8
  10. package/dist/cli/container.js.map +1 -1
  11. package/dist/cli/error-logger.d.ts +17 -2
  12. package/dist/cli/error-logger.js.map +1 -1
  13. package/dist/cli/errors.d.ts +6 -0
  14. package/dist/cli/errors.js +8 -0
  15. package/dist/cli/errors.js.map +1 -1
  16. package/dist/cli/program.js +6 -26
  17. package/dist/cli/program.js.map +1 -1
  18. package/dist/cli/prompt-runner.d.ts +3 -0
  19. package/dist/cli/prompt-runner.js +9 -0
  20. package/dist/cli/prompt-runner.js.map +1 -0
  21. package/dist/cli/service-registry.d.ts +8 -0
  22. package/dist/cli/service-registry.js.map +1 -1
  23. package/dist/cli/ui/service-menu.d.ts +6 -0
  24. package/dist/cli/ui/service-menu.js +37 -0
  25. package/dist/cli/ui/service-menu.js.map +1 -0
  26. package/dist/cli/ui/theme.d.ts +16 -0
  27. package/dist/cli/ui/theme.js +78 -0
  28. package/dist/cli/ui/theme.js.map +1 -0
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +2 -74
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers/claude-code-adapter.js +6 -0
  33. package/dist/providers/claude-code-adapter.js.map +1 -1
  34. package/dist/providers/codex-adapter.js +6 -0
  35. package/dist/providers/codex-adapter.js.map +1 -1
  36. package/dist/providers/opencode-adapter.js +6 -0
  37. package/dist/providers/opencode-adapter.js.map +1 -1
  38. package/package.json +13 -34
  39. package/dist/cli/api-client.d.ts +0 -14
  40. package/dist/cli/api-client.js +0 -140
  41. package/dist/cli/api-client.js.map +0 -1
  42. package/dist/cli/chat.d.ts +0 -32
  43. package/dist/cli/chat.js +0 -2
  44. package/dist/cli/chat.js.map +0 -1
  45. package/dist/cli/commands/agent.d.ts +0 -18
  46. package/dist/cli/commands/agent.js +0 -84
  47. package/dist/cli/commands/agent.js.map +0 -1
  48. package/dist/cli/commands/configure-agents.d.ts +0 -3
  49. package/dist/cli/commands/configure-agents.js +0 -72
  50. package/dist/cli/commands/configure-agents.js.map +0 -1
  51. package/dist/cli/commands/init.d.ts +0 -8
  52. package/dist/cli/commands/init.js +0 -45
  53. package/dist/cli/commands/init.js.map +0 -1
  54. package/dist/cli/commands/interactive.d.ts +0 -3
  55. package/dist/cli/commands/interactive.js +0 -17
  56. package/dist/cli/commands/interactive.js.map +0 -1
  57. package/dist/cli/commands/login.d.ts +0 -6
  58. package/dist/cli/commands/login.js +0 -51
  59. package/dist/cli/commands/login.js.map +0 -1
  60. package/dist/cli/commands/logout.d.ts +0 -3
  61. package/dist/cli/commands/logout.js +0 -31
  62. package/dist/cli/commands/logout.js.map +0 -1
  63. package/dist/cli/commands/prerequisites.d.ts +0 -3
  64. package/dist/cli/commands/prerequisites.js +0 -23
  65. package/dist/cli/commands/prerequisites.js.map +0 -1
  66. package/dist/cli/commands/query.d.ts +0 -7
  67. package/dist/cli/commands/query.js +0 -46
  68. package/dist/cli/commands/query.js.map +0 -1
  69. package/dist/cli/commands/remove.d.ts +0 -6
  70. package/dist/cli/commands/remove.js +0 -80
  71. package/dist/cli/commands/remove.js.map +0 -1
  72. package/dist/cli/commands/root.d.ts +0 -3
  73. package/dist/cli/commands/root.js +0 -7
  74. package/dist/cli/commands/root.js.map +0 -1
  75. package/dist/cli/commands/spawn-worktree.d.ts +0 -6
  76. package/dist/cli/commands/spawn-worktree.js +0 -91
  77. package/dist/cli/commands/spawn-worktree.js.map +0 -1
  78. package/dist/cli/commands/spawn.d.ts +0 -7
  79. package/dist/cli/commands/spawn.js +0 -112
  80. package/dist/cli/commands/spawn.js.map +0 -1
  81. package/dist/cli/commands/test.d.ts +0 -6
  82. package/dist/cli/commands/test.js +0 -26
  83. package/dist/cli/commands/test.js.map +0 -1
  84. package/dist/cli/file-mentions.d.ts +0 -13
  85. package/dist/cli/file-mentions.js +0 -87
  86. package/dist/cli/file-mentions.js.map +0 -1
  87. package/dist/cli/file-picker-state.d.ts +0 -14
  88. package/dist/cli/file-picker-state.js +0 -23
  89. package/dist/cli/file-picker-state.js.map +0 -1
  90. package/dist/cli/interactive-command-runner.d.ts +0 -11
  91. package/dist/cli/interactive-command-runner.js +0 -142
  92. package/dist/cli/interactive-command-runner.js.map +0 -1
  93. package/dist/cli/interactive-launcher.d.ts +0 -2
  94. package/dist/cli/interactive-launcher.js +0 -404
  95. package/dist/cli/interactive-launcher.js.map +0 -1
  96. package/dist/cli/interactive-tasks.d.ts +0 -7
  97. package/dist/cli/interactive-tasks.js +0 -199
  98. package/dist/cli/interactive-tasks.js.map +0 -1
  99. package/dist/cli/interactive.d.ts +0 -19
  100. package/dist/cli/interactive.js +0 -479
  101. package/dist/cli/interactive.js.map +0 -1
  102. package/dist/cli/markdown-renderer.d.ts +0 -27
  103. package/dist/cli/markdown-renderer.js +0 -178
  104. package/dist/cli/markdown-renderer.js.map +0 -1
  105. package/dist/cli/markdown-renderer.test.d.ts +0 -1
  106. package/dist/cli/markdown-renderer.test.js +0 -105
  107. package/dist/cli/markdown-renderer.test.js.map +0 -1
  108. package/dist/commands/init.d.ts +0 -9
  109. package/dist/commands/init.js +0 -43
  110. package/dist/commands/init.js.map +0 -1
  111. package/dist/commands/spawn-worktree.d.ts +0 -25
  112. package/dist/commands/spawn-worktree.js +0 -139
  113. package/dist/commands/spawn-worktree.js.map +0 -1
  114. package/dist/services/agent-config-manager.d.ts +0 -32
  115. package/dist/services/agent-config-manager.js +0 -130
  116. package/dist/services/agent-config-manager.js.map +0 -1
  117. package/dist/services/agent-registry.d.ts +0 -27
  118. package/dist/services/agent-registry.js +0 -89
  119. package/dist/services/agent-registry.js.map +0 -1
  120. package/dist/services/agent-session.d.ts +0 -24
  121. package/dist/services/agent-session.js +0 -107
  122. package/dist/services/agent-session.js.map +0 -1
  123. package/dist/services/agent-task-registry.d.ts +0 -131
  124. package/dist/services/agent-task-registry.js +0 -491
  125. package/dist/services/agent-task-registry.js.map +0 -1
  126. package/dist/services/chat.d.ts +0 -94
  127. package/dist/services/chat.js +0 -241
  128. package/dist/services/chat.js.map +0 -1
  129. package/dist/services/mcp-client.d.ts +0 -38
  130. package/dist/services/mcp-client.js +0 -170
  131. package/dist/services/mcp-client.js.map +0 -1
  132. package/dist/services/mcp-manager.d.ts +0 -28
  133. package/dist/services/mcp-manager.js +0 -157
  134. package/dist/services/mcp-manager.js.map +0 -1
  135. package/dist/services/poe-code.d.ts +0 -7
  136. package/dist/services/poe-code.js +0 -5
  137. package/dist/services/poe-code.js.map +0 -1
  138. package/dist/services/task-logger.d.ts +0 -24
  139. package/dist/services/task-logger.js +0 -73
  140. package/dist/services/task-logger.js.map +0 -1
  141. package/dist/services/task-runner.d.ts +0 -19
  142. package/dist/services/task-runner.js +0 -157
  143. package/dist/services/task-runner.js.map +0 -1
  144. package/dist/services/tools.d.ts +0 -76
  145. package/dist/services/tools.js +0 -870
  146. package/dist/services/tools.js.map +0 -1
  147. package/dist/utils/e2e-flags.d.ts +0 -1
  148. package/dist/utils/e2e-flags.js +0 -9
  149. package/dist/utils/e2e-flags.js.map +0 -1
  150. package/dist/utils/worktree.d.ts +0 -40
  151. package/dist/utils/worktree.js +0 -179
  152. package/dist/utils/worktree.js.map +0 -1
  153. package/shared/conversation-layout.cjs +0 -11
  154. package/shared/conversation-layout.d.ts +0 -7
  155. package/shared/conversation-layout.js +0 -11
  156. package/shared/package.json +0 -13
@@ -1,130 +0,0 @@
1
- import path from "node:path";
2
- import { LEGACY_DEFAULT_AGENTS } from "./agent-registry.js";
3
- const CONFIG_SCHEMA_URL = "https://poe.com/schemas/agent-config.schema.json";
4
- export class AgentConfigManager {
5
- constructor(init) {
6
- this.cachedConfig = null;
7
- this.fs = init.fs;
8
- this.registry = init.registry;
9
- this.homeDir = init.homeDir;
10
- this.configPath = path.join(this.homeDir, ".poe-code", "agent-config.json");
11
- }
12
- getConfigPath() {
13
- return this.configPath;
14
- }
15
- async loadConfig() {
16
- if (this.cachedConfig) {
17
- return cloneConfig(this.cachedConfig);
18
- }
19
- const existing = await this.readConfig();
20
- const merged = this.mergeWithRegistry(existing);
21
- if (!existing || !configsEqual(existing, merged)) {
22
- await this.writeConfig(merged);
23
- }
24
- this.cachedConfig = merged;
25
- return cloneConfig(merged);
26
- }
27
- async getEnabledAgents() {
28
- const config = await this.loadConfig();
29
- return config.agents
30
- .filter((entry) => entry.enabled)
31
- .map((entry) => ({ ...entry }));
32
- }
33
- async updateAgent(update) {
34
- const config = await this.loadConfig();
35
- const adapter = this.registry.get(update.id);
36
- if (!adapter) {
37
- throw new Error(`Unknown agent "${update.id}".`);
38
- }
39
- const target = config.agents.find((entry) => entry.id === update.id);
40
- if (!target) {
41
- throw new Error(`Agent "${update.id}" is not present in configuration.`);
42
- }
43
- if (target.enabled === update.enabled) {
44
- return;
45
- }
46
- target.enabled = update.enabled;
47
- await this.writeConfig(config);
48
- this.cachedConfig = config;
49
- }
50
- async readConfig() {
51
- try {
52
- const content = await this.fs.readFile(this.configPath, "utf8");
53
- const parsed = JSON.parse(content);
54
- if (!Array.isArray(parsed.agents)) {
55
- return null;
56
- }
57
- const agents = parsed.agents
58
- .filter((entry) => entry && typeof entry.id === "string")
59
- .map((entry) => ({
60
- id: entry.id,
61
- enabled: Boolean(entry.enabled)
62
- }));
63
- const sanitized = {
64
- $schema: typeof parsed.$schema === "string"
65
- ? parsed.$schema
66
- : undefined,
67
- agents
68
- };
69
- return sanitized;
70
- }
71
- catch (error) {
72
- if (error &&
73
- typeof error === "object" &&
74
- "code" in error &&
75
- error.code === "ENOENT") {
76
- return null;
77
- }
78
- return null;
79
- }
80
- }
81
- mergeWithRegistry(existing) {
82
- const existingMap = new Map();
83
- if (existing) {
84
- for (const entry of existing.agents) {
85
- if (typeof entry.id === "string") {
86
- existingMap.set(entry.id, Boolean(entry.enabled));
87
- }
88
- }
89
- }
90
- const agents = this.registry.list().map((adapter) => {
91
- const current = existingMap.get(adapter.id);
92
- const enabled = current !== undefined
93
- ? current
94
- : adapter.defaultEnabled ??
95
- LEGACY_DEFAULT_AGENTS.some((legacy) => legacy === adapter.id);
96
- return { id: adapter.id, enabled };
97
- });
98
- return {
99
- $schema: CONFIG_SCHEMA_URL,
100
- agents
101
- };
102
- }
103
- async writeConfig(config) {
104
- await this.ensureDirectory();
105
- const serialized = serializeConfig(config);
106
- await this.fs.writeFile(this.configPath, serialized, { encoding: "utf8" });
107
- }
108
- async ensureDirectory() {
109
- const dir = path.dirname(this.configPath);
110
- try {
111
- await this.fs.stat(dir);
112
- }
113
- catch {
114
- await this.fs.mkdir(dir, { recursive: true });
115
- }
116
- }
117
- }
118
- function cloneConfig(config) {
119
- return {
120
- $schema: config.$schema,
121
- agents: config.agents.map((entry) => ({ ...entry }))
122
- };
123
- }
124
- function serializeConfig(config) {
125
- return JSON.stringify(config, null, 2);
126
- }
127
- function configsEqual(a, b) {
128
- return serializeConfig(a) === serializeConfig(b);
129
- }
130
- //# sourceMappingURL=agent-config-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-config-manager.js","sourceRoot":"","sources":["../../src/services/agent-config-manager.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { CommandRunner, CommandRunnerResult } from "../utils/prerequisites.js";
2
- export interface AgentSpawnOptions {
3
- prompt: string;
4
- args: string[];
5
- runCommand: CommandRunner;
6
- }
7
- export interface AgentDetectionContext {
8
- runCommand: CommandRunner;
9
- }
10
- export interface AgentAdapter {
11
- id: string;
12
- label: string;
13
- spawn: (options: AgentSpawnOptions) => Promise<CommandRunnerResult>;
14
- detect?: (context: AgentDetectionContext) => Promise<boolean>;
15
- defaultEnabled?: boolean;
16
- description?: string;
17
- }
18
- export declare class AgentRegistry {
19
- private readonly adapters;
20
- constructor(initialAdapters?: AgentAdapter[]);
21
- register(adapter: AgentAdapter): void;
22
- get(id: string): AgentAdapter | undefined;
23
- has(id: string): boolean;
24
- list(): AgentAdapter[];
25
- }
26
- export declare const LEGACY_DEFAULT_AGENTS: readonly ["claude-code", "codex", "opencode"];
27
- export declare function createDefaultAgentRegistry(): AgentRegistry;
@@ -1,89 +0,0 @@
1
- import { spawnCodex } from "./codex.js";
2
- import { spawnClaudeCode } from "./claude-code.js";
3
- import { spawnOpenCode } from "./opencode.js";
4
- import { spawnPoeCode } from "./poe-code.js";
5
- export class AgentRegistry {
6
- constructor(initialAdapters = []) {
7
- this.adapters = new Map();
8
- for (const adapter of initialAdapters) {
9
- this.register(adapter);
10
- }
11
- }
12
- register(adapter) {
13
- this.adapters.set(adapter.id, adapter);
14
- }
15
- get(id) {
16
- return this.adapters.get(id);
17
- }
18
- has(id) {
19
- return this.adapters.has(id);
20
- }
21
- list() {
22
- return Array.from(this.adapters.values());
23
- }
24
- }
25
- export const LEGACY_DEFAULT_AGENTS = [
26
- "claude-code",
27
- "codex",
28
- "opencode"
29
- ];
30
- export function createDefaultAgentRegistry() {
31
- const registry = new AgentRegistry();
32
- registry.register({
33
- id: "claude-code",
34
- label: "Claude Code",
35
- spawn: async (options) => await spawnClaudeCode({
36
- prompt: options.prompt,
37
- args: options.args,
38
- runCommand: options.runCommand
39
- }),
40
- detect: createBinaryDetector("claude"),
41
- defaultEnabled: true
42
- });
43
- registry.register({
44
- id: "codex",
45
- label: "Codex CLI",
46
- spawn: async (options) => await spawnCodex({
47
- prompt: options.prompt,
48
- args: options.args,
49
- runCommand: options.runCommand
50
- }),
51
- detect: createBinaryDetector("codex"),
52
- defaultEnabled: true
53
- });
54
- registry.register({
55
- id: "opencode",
56
- label: "OpenCode CLI",
57
- spawn: async (options) => await spawnOpenCode({
58
- prompt: options.prompt,
59
- args: options.args,
60
- runCommand: options.runCommand
61
- }),
62
- detect: createBinaryDetector("opencode"),
63
- defaultEnabled: true
64
- });
65
- registry.register({
66
- id: "poe-code",
67
- label: "Poe Code",
68
- spawn: async (options) => await spawnPoeCode({
69
- prompt: options.prompt,
70
- args: options.args,
71
- runCommand: options.runCommand
72
- }),
73
- detect: async () => true,
74
- defaultEnabled: false
75
- });
76
- return registry;
77
- }
78
- function createBinaryDetector(command) {
79
- return async ({ runCommand }) => {
80
- try {
81
- const result = await runCommand(command, ["--version"]);
82
- return result.exitCode === 0;
83
- }
84
- catch {
85
- return false;
86
- }
87
- };
88
- }
89
- //# sourceMappingURL=agent-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/services/agent-registry.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { FileSystem } from "../utils/file-system.js";
2
- import { type ChatMessage, type ToolCallCallback } from "./chat.js";
3
- import { type AgentTask } from "./agent-task-registry.js";
4
- export interface AgentSession {
5
- getModel(): string;
6
- setToolCallCallback(callback: ToolCallCallback): void;
7
- sendMessage(prompt: string, options?: {
8
- signal?: AbortSignal;
9
- onChunk?: (chunk: string) => void;
10
- }): Promise<ChatMessage>;
11
- waitForAllTasks(): Promise<void>;
12
- drainCompletedTasks(): AgentTask[];
13
- dispose(): Promise<void>;
14
- }
15
- export interface AgentSessionOptions {
16
- fs: FileSystem;
17
- cwd: string;
18
- homeDir: string;
19
- apiKey: string;
20
- model: string;
21
- logger: (message: string) => void;
22
- awaitTasksOnDispose?: boolean;
23
- }
24
- export declare function createAgentSession(options: AgentSessionOptions): Promise<AgentSession>;
@@ -1,107 +0,0 @@
1
- import path from "node:path";
2
- import * as fs from "node:fs";
3
- import { DefaultToolExecutor, getAvailableTools } from "./tools.js";
4
- import { McpManager } from "./mcp-manager.js";
5
- import { PoeChatService } from "./chat.js";
6
- import { AgentTaskRegistry } from "./agent-task-registry.js";
7
- import { AgentConfigManager } from "./agent-config-manager.js";
8
- import { createDefaultAgentRegistry } from "./agent-registry.js";
9
- export async function createAgentSession(options) {
10
- const mcpManager = new McpManager(options.fs, options.homeDir);
11
- try {
12
- await mcpManager.connectAll();
13
- }
14
- catch (error) {
15
- options.logger(`Failed to connect to some MCP servers: ${formatError(error)}`);
16
- }
17
- let systemPrompt;
18
- try {
19
- const systemPromptPath = path.join(options.cwd, "SYSTEM_PROMPT.md");
20
- systemPrompt = await options.fs.readFile(systemPromptPath, "utf8");
21
- }
22
- catch {
23
- systemPrompt = undefined;
24
- }
25
- const cwdContext = `\n\nIMPORTANT: You are working in the directory: ${options.cwd}\nWhen accessing files, use paths relative to this directory.`;
26
- systemPrompt = systemPrompt ? `${systemPrompt}${cwdContext}` : cwdContext;
27
- const tasksDir = path.join(options.homeDir, ".poe-code", "tasks");
28
- const logsDir = path.join(options.homeDir, ".poe-code", "logs", "tasks");
29
- const nativeFs = fs;
30
- const taskRegistry = new AgentTaskRegistry({
31
- fs: nativeFs,
32
- tasksDir,
33
- logsDir,
34
- logger: (event, payload) => {
35
- options.logger(`task:${event} ${JSON.stringify(payload ?? {})}`);
36
- }
37
- });
38
- const awaitTasksOnDispose = options.awaitTasksOnDispose ?? false;
39
- const agentRegistry = createDefaultAgentRegistry();
40
- const agentConfigManager = new AgentConfigManager({
41
- fs: options.fs,
42
- homeDir: options.homeDir,
43
- registry: agentRegistry
44
- });
45
- try {
46
- await agentConfigManager.loadConfig();
47
- }
48
- catch (error) {
49
- options.logger(`Failed to load agent configuration: ${formatError(error)}`);
50
- }
51
- const toolExecutor = new DefaultToolExecutor({
52
- fs: options.fs,
53
- cwd: options.cwd,
54
- allowedPaths: [options.cwd, options.homeDir],
55
- mcpManager,
56
- taskRegistry,
57
- onWriteFile: async ({ relativePath }) => {
58
- options.logger(`Tool write_file -> ${relativePath}`);
59
- },
60
- agentRegistry,
61
- agentConfigManager,
62
- homeDir: options.homeDir
63
- });
64
- let toolCallback;
65
- const chatService = new PoeChatService(options.apiKey, options.model, toolExecutor, (event) => {
66
- toolCallback?.(event);
67
- }, systemPrompt, taskRegistry);
68
- return {
69
- getModel() {
70
- return chatService.getModel();
71
- },
72
- setToolCallCallback(callback) {
73
- toolCallback = callback;
74
- chatService.setToolCallCallback(callback);
75
- },
76
- async sendMessage(prompt, options) {
77
- const tools = await getAvailableTools({
78
- agentRegistry,
79
- agentConfigManager,
80
- mcpManager
81
- });
82
- return chatService.sendMessage(prompt, tools, options);
83
- },
84
- async waitForAllTasks() {
85
- await taskRegistry.waitForAllTasks();
86
- },
87
- drainCompletedTasks() {
88
- const completed = taskRegistry.getCompletedTasks();
89
- taskRegistry.clearCompleted();
90
- return completed;
91
- },
92
- async dispose() {
93
- if (awaitTasksOnDispose) {
94
- await taskRegistry.waitForAllTasks();
95
- }
96
- taskRegistry.dispose();
97
- await mcpManager.disconnectAll();
98
- }
99
- };
100
- }
101
- function formatError(error) {
102
- if (error instanceof Error) {
103
- return error.message;
104
- }
105
- return String(error);
106
- }
107
- //# sourceMappingURL=agent-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/services/agent-session.ts"],"names":[],"mappings":"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"}
@@ -1,131 +0,0 @@
1
- import type { FSWatcher, Stats } from "node:fs";
2
- export type AgentTaskStatus = "running" | "completed" | "failed" | "killed";
3
- export interface AgentTask {
4
- id: string;
5
- toolName: string;
6
- args: Record<string, unknown>;
7
- status: AgentTaskStatus;
8
- startTime: number;
9
- endTime?: number;
10
- result?: string;
11
- error?: string;
12
- logFile: string;
13
- progressFile: string;
14
- pid?: number;
15
- command?: string;
16
- worktreePath?: string;
17
- }
18
- export interface ProgressUpdate {
19
- type: "progress" | "complete" | "error";
20
- message?: string;
21
- result?: string;
22
- error?: string;
23
- timestamp: number;
24
- }
25
- type MinimalStats = Pick<Stats, "size" | "mtimeMs">;
26
- export interface FsLike {
27
- promises: {
28
- mkdir(path: string, options?: {
29
- recursive?: boolean;
30
- }): Promise<void>;
31
- readFile(path: string, encoding: BufferEncoding): Promise<string>;
32
- writeFile(path: string, data: string | Uint8Array, options?: {
33
- encoding?: BufferEncoding;
34
- }): Promise<void>;
35
- appendFile(path: string, data: string | Uint8Array, options?: {
36
- encoding?: BufferEncoding;
37
- }): Promise<void>;
38
- readdir(path: string): Promise<string[]>;
39
- stat(path: string): Promise<MinimalStats>;
40
- unlink(path: string): Promise<void>;
41
- rename(oldPath: string, newPath: string): Promise<void>;
42
- };
43
- watch(filename: string, listener: (event: string, filename: string | null) => void): FSWatcher;
44
- existsSync(path: string): boolean;
45
- mkdirSync(path: string, options?: {
46
- recursive?: boolean;
47
- }): void;
48
- readFileSync(path: string, encoding: BufferEncoding): string;
49
- writeFileSync(path: string, data: string, options?: {
50
- encoding?: BufferEncoding;
51
- }): void;
52
- appendFileSync(path: string, data: string): void;
53
- statSync(path: string): MinimalStats;
54
- unlinkSync(path: string): void;
55
- renameSync(oldPath: string, newPath: string): void;
56
- readdirSync(path: string): string[];
57
- }
58
- export interface AgentTaskRegistryOptions {
59
- fs: FsLike;
60
- tasksDir: string;
61
- logsDir: string;
62
- now?: () => number;
63
- maxTasks?: number;
64
- archiveAfterMs?: number;
65
- logRetentionMs?: number;
66
- completionRetentionMs?: number;
67
- watchFactory?: (dir: string, listener: (event: string, filename: string | null) => void) => FSWatcher;
68
- debounceMs?: number;
69
- logger?: (event: string, payload?: Record<string, unknown>) => void;
70
- }
71
- export declare class AgentTaskRegistry {
72
- private readonly fs;
73
- private readonly tasksDir;
74
- private readonly logsDir;
75
- private readonly now;
76
- private readonly maxTasks;
77
- private readonly archiveAfterMs;
78
- private readonly logRetentionMs;
79
- private readonly completionRetentionMs;
80
- private readonly watchFactory?;
81
- private readonly debounceMs;
82
- private readonly logger?;
83
- private watcher?;
84
- private readonly tasks;
85
- private readonly taskOrder;
86
- private readonly completionCallbacks;
87
- private readonly progressCallbacks;
88
- private readonly completedQueue;
89
- private readonly completedSet;
90
- private readonly pendingDebounce;
91
- constructor(options: AgentTaskRegistryOptions);
92
- get size(): number;
93
- getTasksDirectory(): string;
94
- getLogsDirectory(): string;
95
- registerTask(input: {
96
- toolName: string;
97
- args: Record<string, unknown>;
98
- }): string;
99
- updateTask(id: string, patch: Partial<AgentTask>): void;
100
- getTask(id: string): AgentTask | undefined;
101
- getAllTasks(): AgentTask[];
102
- getRunningTasks(): AgentTask[];
103
- getCompletedTasks(): AgentTask[];
104
- clearCompleted(): void;
105
- onTaskComplete(callback: (task: AgentTask) => void): void;
106
- onTaskProgress(callback: (taskId: string, update: ProgressUpdate) => void): void;
107
- killTask(id: string): boolean;
108
- readProgress(taskId: string): ProgressUpdate[];
109
- waitForTask(id: string, onUpdate: (update: ProgressUpdate) => void): Promise<AgentTask | undefined>;
110
- dispose(): void;
111
- waitForAllTasks(): Promise<void>;
112
- private ensureDirectories;
113
- private bootstrapFromDisk;
114
- private loadExistingTasks;
115
- private cleanupCompletedTasks;
116
- private cleanupArchives;
117
- private cleanupLogs;
118
- private startWatching;
119
- private handleFileChange;
120
- private enqueueCompletion;
121
- private readLatestProgress;
122
- archiveTask(id: string): void;
123
- private trimCache;
124
- private ensureFile;
125
- private persistTask;
126
- private loadTask;
127
- private createTaskId;
128
- private isTerminal;
129
- private isProcessAlive;
130
- }
131
- export {};