poe-code 0.1.26

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 (245) hide show
  1. package/README.md +64 -0
  2. package/dist/cli/api-client.d.ts +14 -0
  3. package/dist/cli/api-client.js +140 -0
  4. package/dist/cli/api-client.js.map +1 -0
  5. package/dist/cli/chat.d.ts +32 -0
  6. package/dist/cli/chat.js +2 -0
  7. package/dist/cli/chat.js.map +1 -0
  8. package/dist/cli/command-runner.d.ts +2 -0
  9. package/dist/cli/command-runner.js +37 -0
  10. package/dist/cli/command-runner.js.map +1 -0
  11. package/dist/cli/commands/agent.d.ts +18 -0
  12. package/dist/cli/commands/agent.js +84 -0
  13. package/dist/cli/commands/agent.js.map +1 -0
  14. package/dist/cli/commands/configure-agents.d.ts +3 -0
  15. package/dist/cli/commands/configure-agents.js +72 -0
  16. package/dist/cli/commands/configure-agents.js.map +1 -0
  17. package/dist/cli/commands/configure.d.ts +11 -0
  18. package/dist/cli/commands/configure.js +150 -0
  19. package/dist/cli/commands/configure.js.map +1 -0
  20. package/dist/cli/commands/init.d.ts +8 -0
  21. package/dist/cli/commands/init.js +45 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/interactive.d.ts +3 -0
  24. package/dist/cli/commands/interactive.js +17 -0
  25. package/dist/cli/commands/interactive.js.map +1 -0
  26. package/dist/cli/commands/login.d.ts +6 -0
  27. package/dist/cli/commands/login.js +51 -0
  28. package/dist/cli/commands/login.js.map +1 -0
  29. package/dist/cli/commands/logout.d.ts +3 -0
  30. package/dist/cli/commands/logout.js +31 -0
  31. package/dist/cli/commands/logout.js.map +1 -0
  32. package/dist/cli/commands/prerequisites.d.ts +3 -0
  33. package/dist/cli/commands/prerequisites.js +23 -0
  34. package/dist/cli/commands/prerequisites.js.map +1 -0
  35. package/dist/cli/commands/query.d.ts +7 -0
  36. package/dist/cli/commands/query.js +46 -0
  37. package/dist/cli/commands/query.js.map +1 -0
  38. package/dist/cli/commands/remove.d.ts +6 -0
  39. package/dist/cli/commands/remove.js +80 -0
  40. package/dist/cli/commands/remove.js.map +1 -0
  41. package/dist/cli/commands/root.d.ts +3 -0
  42. package/dist/cli/commands/root.js +7 -0
  43. package/dist/cli/commands/root.js.map +1 -0
  44. package/dist/cli/commands/shared.d.ts +24 -0
  45. package/dist/cli/commands/shared.js +61 -0
  46. package/dist/cli/commands/shared.js.map +1 -0
  47. package/dist/cli/commands/spawn-worktree.d.ts +6 -0
  48. package/dist/cli/commands/spawn-worktree.js +91 -0
  49. package/dist/cli/commands/spawn-worktree.js.map +1 -0
  50. package/dist/cli/commands/spawn.d.ts +7 -0
  51. package/dist/cli/commands/spawn.js +112 -0
  52. package/dist/cli/commands/spawn.js.map +1 -0
  53. package/dist/cli/commands/test.d.ts +6 -0
  54. package/dist/cli/commands/test.js +26 -0
  55. package/dist/cli/commands/test.js.map +1 -0
  56. package/dist/cli/constants.d.ts +10 -0
  57. package/dist/cli/constants.js +11 -0
  58. package/dist/cli/constants.js.map +1 -0
  59. package/dist/cli/container.d.ts +48 -0
  60. package/dist/cli/container.js +94 -0
  61. package/dist/cli/container.js.map +1 -0
  62. package/dist/cli/context.d.ts +37 -0
  63. package/dist/cli/context.js +198 -0
  64. package/dist/cli/context.js.map +1 -0
  65. package/dist/cli/environment.d.ts +19 -0
  66. package/dist/cli/environment.js +26 -0
  67. package/dist/cli/environment.js.map +1 -0
  68. package/dist/cli/error-logger.d.ts +46 -0
  69. package/dist/cli/error-logger.js +137 -0
  70. package/dist/cli/error-logger.js.map +1 -0
  71. package/dist/cli/errors.d.ts +91 -0
  72. package/dist/cli/errors.js +128 -0
  73. package/dist/cli/errors.js.map +1 -0
  74. package/dist/cli/file-mentions.d.ts +13 -0
  75. package/dist/cli/file-mentions.js +87 -0
  76. package/dist/cli/file-mentions.js.map +1 -0
  77. package/dist/cli/file-picker-state.d.ts +14 -0
  78. package/dist/cli/file-picker-state.js +23 -0
  79. package/dist/cli/file-picker-state.js.map +1 -0
  80. package/dist/cli/http.d.ts +11 -0
  81. package/dist/cli/http.js +2 -0
  82. package/dist/cli/http.js.map +1 -0
  83. package/dist/cli/interactive-command-runner.d.ts +11 -0
  84. package/dist/cli/interactive-command-runner.js +142 -0
  85. package/dist/cli/interactive-command-runner.js.map +1 -0
  86. package/dist/cli/interactive-launcher.d.ts +2 -0
  87. package/dist/cli/interactive-launcher.js +404 -0
  88. package/dist/cli/interactive-launcher.js.map +1 -0
  89. package/dist/cli/interactive-tasks.d.ts +7 -0
  90. package/dist/cli/interactive-tasks.js +199 -0
  91. package/dist/cli/interactive-tasks.js.map +1 -0
  92. package/dist/cli/interactive.d.ts +19 -0
  93. package/dist/cli/interactive.js +479 -0
  94. package/dist/cli/interactive.js.map +1 -0
  95. package/dist/cli/logger.d.ts +26 -0
  96. package/dist/cli/logger.js +87 -0
  97. package/dist/cli/logger.js.map +1 -0
  98. package/dist/cli/markdown-renderer.d.ts +27 -0
  99. package/dist/cli/markdown-renderer.js +178 -0
  100. package/dist/cli/markdown-renderer.js.map +1 -0
  101. package/dist/cli/markdown-renderer.test.d.ts +1 -0
  102. package/dist/cli/markdown-renderer.test.js +105 -0
  103. package/dist/cli/markdown-renderer.test.js.map +1 -0
  104. package/dist/cli/options.d.ts +30 -0
  105. package/dist/cli/options.js +84 -0
  106. package/dist/cli/options.js.map +1 -0
  107. package/dist/cli/program.d.ts +4 -0
  108. package/dist/cli/program.js +64 -0
  109. package/dist/cli/program.js.map +1 -0
  110. package/dist/cli/prompts.d.ts +23 -0
  111. package/dist/cli/prompts.js +58 -0
  112. package/dist/cli/prompts.js.map +1 -0
  113. package/dist/cli/service-registry.d.ts +33 -0
  114. package/dist/cli/service-registry.js +35 -0
  115. package/dist/cli/service-registry.js.map +1 -0
  116. package/dist/cli/telemetry.d.ts +15 -0
  117. package/dist/cli/telemetry.js +45 -0
  118. package/dist/cli/telemetry.js.map +1 -0
  119. package/dist/cli/types.d.ts +2 -0
  120. package/dist/cli/types.js +2 -0
  121. package/dist/cli/types.js.map +1 -0
  122. package/dist/commands/init.d.ts +9 -0
  123. package/dist/commands/init.js +43 -0
  124. package/dist/commands/init.js.map +1 -0
  125. package/dist/commands/publish-placeholder.d.ts +8 -0
  126. package/dist/commands/publish-placeholder.js +50 -0
  127. package/dist/commands/publish-placeholder.js.map +1 -0
  128. package/dist/commands/spawn-worktree.d.ts +25 -0
  129. package/dist/commands/spawn-worktree.js +139 -0
  130. package/dist/commands/spawn-worktree.js.map +1 -0
  131. package/dist/index.d.ts +4 -0
  132. package/dist/index.js +81 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/providers/claude-code-adapter.d.ts +20 -0
  135. package/dist/providers/claude-code-adapter.js +48 -0
  136. package/dist/providers/claude-code-adapter.js.map +1 -0
  137. package/dist/providers/codex-adapter.d.ts +19 -0
  138. package/dist/providers/codex-adapter.js +49 -0
  139. package/dist/providers/codex-adapter.js.map +1 -0
  140. package/dist/providers/index.d.ts +2 -0
  141. package/dist/providers/index.js +13 -0
  142. package/dist/providers/index.js.map +1 -0
  143. package/dist/providers/opencode-adapter.d.ts +18 -0
  144. package/dist/providers/opencode-adapter.js +45 -0
  145. package/dist/providers/opencode-adapter.js.map +1 -0
  146. package/dist/providers/roo-code-adapter.d.ts +19 -0
  147. package/dist/providers/roo-code-adapter.js +70 -0
  148. package/dist/providers/roo-code-adapter.js.map +1 -0
  149. package/dist/services/agent-config-manager.d.ts +32 -0
  150. package/dist/services/agent-config-manager.js +130 -0
  151. package/dist/services/agent-config-manager.js.map +1 -0
  152. package/dist/services/agent-registry.d.ts +27 -0
  153. package/dist/services/agent-registry.js +89 -0
  154. package/dist/services/agent-registry.js.map +1 -0
  155. package/dist/services/agent-session.d.ts +24 -0
  156. package/dist/services/agent-session.js +107 -0
  157. package/dist/services/agent-session.js.map +1 -0
  158. package/dist/services/agent-task-registry.d.ts +131 -0
  159. package/dist/services/agent-task-registry.js +491 -0
  160. package/dist/services/agent-task-registry.js.map +1 -0
  161. package/dist/services/chat.d.ts +94 -0
  162. package/dist/services/chat.js +241 -0
  163. package/dist/services/chat.js.map +1 -0
  164. package/dist/services/claude-code.d.ts +28 -0
  165. package/dist/services/claude-code.js +155 -0
  166. package/dist/services/claude-code.js.map +1 -0
  167. package/dist/services/codex.d.ts +27 -0
  168. package/dist/services/codex.js +231 -0
  169. package/dist/services/codex.js.map +1 -0
  170. package/dist/services/credentials.d.ts +11 -0
  171. package/dist/services/credentials.js +44 -0
  172. package/dist/services/credentials.js.map +1 -0
  173. package/dist/services/mcp-client.d.ts +38 -0
  174. package/dist/services/mcp-client.js +170 -0
  175. package/dist/services/mcp-client.js.map +1 -0
  176. package/dist/services/mcp-manager.d.ts +28 -0
  177. package/dist/services/mcp-manager.js +157 -0
  178. package/dist/services/mcp-manager.js.map +1 -0
  179. package/dist/services/model-strategy.d.ts +99 -0
  180. package/dist/services/model-strategy.js +182 -0
  181. package/dist/services/model-strategy.js.map +1 -0
  182. package/dist/services/opencode.d.ts +25 -0
  183. package/dist/services/opencode.js +161 -0
  184. package/dist/services/opencode.js.map +1 -0
  185. package/dist/services/poe-code.d.ts +7 -0
  186. package/dist/services/poe-code.js +5 -0
  187. package/dist/services/poe-code.js.map +1 -0
  188. package/dist/services/roo-code.d.ts +22 -0
  189. package/dist/services/roo-code.js +134 -0
  190. package/dist/services/roo-code.js.map +1 -0
  191. package/dist/services/service-install.d.ts +21 -0
  192. package/dist/services/service-install.js +47 -0
  193. package/dist/services/service-install.js.map +1 -0
  194. package/dist/services/service-manifest.d.ts +122 -0
  195. package/dist/services/service-manifest.js +368 -0
  196. package/dist/services/service-manifest.js.map +1 -0
  197. package/dist/services/task-logger.d.ts +24 -0
  198. package/dist/services/task-logger.js +73 -0
  199. package/dist/services/task-logger.js.map +1 -0
  200. package/dist/services/task-runner.d.ts +19 -0
  201. package/dist/services/task-runner.js +157 -0
  202. package/dist/services/task-runner.js.map +1 -0
  203. package/dist/services/tools.d.ts +76 -0
  204. package/dist/services/tools.js +870 -0
  205. package/dist/services/tools.js.map +1 -0
  206. package/dist/templates/claude-code/anthropic_key.sh.hbs +2 -0
  207. package/dist/templates/codex/config.toml.hbs +9 -0
  208. package/dist/templates/python/env.hbs +3 -0
  209. package/dist/templates/python/main.py.hbs +17 -0
  210. package/dist/templates/python/requirements.txt.hbs +2 -0
  211. package/dist/utils/backup.d.ts +5 -0
  212. package/dist/utils/backup.js +61 -0
  213. package/dist/utils/backup.js.map +1 -0
  214. package/dist/utils/command-line.d.ts +1 -0
  215. package/dist/utils/command-line.js +54 -0
  216. package/dist/utils/command-line.js.map +1 -0
  217. package/dist/utils/dry-run.d.ts +38 -0
  218. package/dist/utils/dry-run.js +211 -0
  219. package/dist/utils/dry-run.js.map +1 -0
  220. package/dist/utils/e2e-flags.d.ts +1 -0
  221. package/dist/utils/e2e-flags.js +9 -0
  222. package/dist/utils/e2e-flags.js.map +1 -0
  223. package/dist/utils/file-system.d.ts +21 -0
  224. package/dist/utils/file-system.js +2 -0
  225. package/dist/utils/file-system.js.map +1 -0
  226. package/dist/utils/json.d.ts +12 -0
  227. package/dist/utils/json.js +42 -0
  228. package/dist/utils/json.js.map +1 -0
  229. package/dist/utils/prerequisites.d.ts +41 -0
  230. package/dist/utils/prerequisites.js +92 -0
  231. package/dist/utils/prerequisites.js.map +1 -0
  232. package/dist/utils/templates.d.ts +4 -0
  233. package/dist/utils/templates.js +22 -0
  234. package/dist/utils/templates.js.map +1 -0
  235. package/dist/utils/toml.d.ts +8 -0
  236. package/dist/utils/toml.js +30 -0
  237. package/dist/utils/toml.js.map +1 -0
  238. package/dist/utils/worktree.d.ts +40 -0
  239. package/dist/utils/worktree.js +179 -0
  240. package/dist/utils/worktree.js.map +1 -0
  241. package/package.json +84 -0
  242. package/shared/conversation-layout.cjs +11 -0
  243. package/shared/conversation-layout.d.ts +7 -0
  244. package/shared/conversation-layout.js +11 -0
  245. package/shared/package.json +13 -0
@@ -0,0 +1,107 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/services/agent-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
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 {};