@accomplish_ai/agent-core-cli 0.1.6 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/dist/core/init.js +20 -6
- package/dist/core/init.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -156,6 +156,66 @@ data: {"type":"done","content":"Task completed"}
|
|
|
156
156
|
|
|
157
157
|
WebSocket endpoint. Same message format as SSE. Replays history on connect, streams live updates, closes automatically when the job completes.
|
|
158
158
|
|
|
159
|
+
## TaskManagerAPI Surface
|
|
160
|
+
|
|
161
|
+
The CLI wraps `@accomplish_ai/agent-core`'s `TaskManagerAPI`. Currently only `startTask` and `dispose` are used by the HTTP server. The full API surface is documented below for consumers and contributors.
|
|
162
|
+
|
|
163
|
+
### Task Lifecycle
|
|
164
|
+
|
|
165
|
+
| Method | Description | Used by CLI |
|
|
166
|
+
|--------|-------------|:-----------:|
|
|
167
|
+
| `startTask(taskId, config, callbacks)` | Start a task with prompt, config, and event callbacks | Yes |
|
|
168
|
+
| `interruptTask(taskId)` | Soft stop — sends Ctrl+C to the agent process for graceful shutdown | No |
|
|
169
|
+
| `cancelTask(taskId)` | Hard stop — kills the agent process immediately | No |
|
|
170
|
+
| `cancelQueuedTask(taskId)` | Cancel a task waiting in the queue (before it starts running) | No |
|
|
171
|
+
| `cancelAllTasks()` | Cancel all running and queued tasks | No |
|
|
172
|
+
| `sendResponse(taskId, response)` | Send a response to a task waiting for input (e.g. permission prompt) | No |
|
|
173
|
+
| `dispose()` | Dispose resources and clean up all processes | Yes |
|
|
174
|
+
|
|
175
|
+
### Task State Queries
|
|
176
|
+
|
|
177
|
+
| Method | Description | Used by CLI |
|
|
178
|
+
|--------|-------------|:-----------:|
|
|
179
|
+
| `isTaskRunning(taskId)` | Check if a specific task is currently running | No |
|
|
180
|
+
| `hasActiveTask(taskId)` | Check if a task is active (running or queued) | No |
|
|
181
|
+
| `hasRunningTask()` | Check if any task is currently running | No |
|
|
182
|
+
| `isTaskQueued(taskId)` | Check if a task is waiting in the queue | No |
|
|
183
|
+
| `getQueueLength()` | Get number of queued tasks | No |
|
|
184
|
+
| `getActiveTaskIds()` | Get IDs of all active tasks | No |
|
|
185
|
+
| `getActiveTaskId()` | Get ID of the currently running task | No |
|
|
186
|
+
| `getActiveTaskCount()` | Get count of active tasks (running + queued) | No |
|
|
187
|
+
| `getIsFirstTask()` | Check if this is the first task in the session | No |
|
|
188
|
+
| `getSessionId(taskId)` | Get the session ID for a task | No |
|
|
189
|
+
|
|
190
|
+
### Task Callbacks
|
|
191
|
+
|
|
192
|
+
Callbacks passed to `startTask()` for receiving lifecycle events.
|
|
193
|
+
|
|
194
|
+
| Callback | Required | Description | Used by CLI |
|
|
195
|
+
|----------|:--------:|-------------|:-----------:|
|
|
196
|
+
| `onMessage(message)` | No | Raw message from the agent (streamed as-is) | Yes |
|
|
197
|
+
| `onBatchedMessages(messages)` | No | Batched/processed messages (50ms batches) | No |
|
|
198
|
+
| `onProgress(progress)` | Yes | Task progress updates | Yes |
|
|
199
|
+
| `onPermissionRequest(request)` | Yes | Agent needs permission to proceed | Yes |
|
|
200
|
+
| `onComplete(result)` | Yes | Task finished (success or failure) | Yes |
|
|
201
|
+
| `onError(error)` | Yes | Unrecoverable error during execution | Yes |
|
|
202
|
+
| `onStatusChange(status)` | No | Task status transitions | No |
|
|
203
|
+
| `onDebug(info)` | No | Debug/diagnostic information | No |
|
|
204
|
+
| `onTodoUpdate(todos)` | No | Agent's internal todo list changes | No |
|
|
205
|
+
| `onAuthError(error)` | No | Authentication/API key errors | No |
|
|
206
|
+
|
|
207
|
+
### Configuration
|
|
208
|
+
|
|
209
|
+
Factory options passed to `createTaskManager()`.
|
|
210
|
+
|
|
211
|
+
| Option | Required | Description |
|
|
212
|
+
|--------|:--------:|-------------|
|
|
213
|
+
| `adapterOptions` | Yes | Platform, CLI command, environment builder, CLI args builder |
|
|
214
|
+
| `defaultWorkingDirectory` | Yes | Default working directory for tasks |
|
|
215
|
+
| `maxConcurrentTasks` | No | Max parallel tasks (CLI sets `1`) |
|
|
216
|
+
| `isCliAvailable` | Yes | Async check that the OpenCode CLI is installed |
|
|
217
|
+
| `onBeforeTaskStart` | No | Hook called before each task starts |
|
|
218
|
+
|
|
159
219
|
## Development
|
|
160
220
|
|
|
161
221
|
```bash
|
package/dist/core/init.js
CHANGED
|
@@ -19,7 +19,12 @@ export async function initialize(options = {}) {
|
|
|
19
19
|
await startPermissionServers();
|
|
20
20
|
// 4. Resolve MCP tools path
|
|
21
21
|
const mcpToolsPath = resolveMcpToolsPath();
|
|
22
|
-
// 5.
|
|
22
|
+
// 5. Build browser config from environment
|
|
23
|
+
const browser = process.env.CDP_ENDPOINT
|
|
24
|
+
? { mode: 'remote', cdpEndpoint: process.env.CDP_ENDPOINT,
|
|
25
|
+
cdpHeaders: process.env.CDP_SECRET ? { 'X-CDP-Secret': process.env.CDP_SECRET } : {} }
|
|
26
|
+
: { mode: 'none' };
|
|
27
|
+
// 6. Generate OpenCode config
|
|
23
28
|
const configResult = generateConfig({
|
|
24
29
|
platform: process.platform,
|
|
25
30
|
mcpToolsPath,
|
|
@@ -29,10 +34,11 @@ export async function initialize(options = {}) {
|
|
|
29
34
|
questionApiPort: QUESTION_API_PORT,
|
|
30
35
|
enabledProviders: ['anthropic'],
|
|
31
36
|
model,
|
|
37
|
+
browser,
|
|
32
38
|
});
|
|
33
39
|
process.env.OPENCODE_CONFIG = configResult.configPath;
|
|
34
40
|
process.env.OPENCODE_CONFIG_DIR = path.dirname(configResult.configPath);
|
|
35
|
-
//
|
|
41
|
+
// 7. Create TaskManager
|
|
36
42
|
const adapterOptions = {
|
|
37
43
|
platform: process.platform,
|
|
38
44
|
isPackaged: true,
|
|
@@ -78,13 +84,21 @@ function resolveMcpToolsPath() {
|
|
|
78
84
|
if (fs.existsSync(candidate))
|
|
79
85
|
return candidate;
|
|
80
86
|
}
|
|
81
|
-
// Fallback:
|
|
87
|
+
// Fallback: resolve the package entry and walk up to find mcp-tools.
|
|
88
|
+
// import.meta.resolve returns the main entry file (e.g. .../agent-core/dist/index.js),
|
|
89
|
+
// so path.dirname alone gives dist/, not the package root. Walk up until
|
|
90
|
+
// we find the mcp-tools sibling directory.
|
|
82
91
|
try {
|
|
83
|
-
const
|
|
84
|
-
|
|
92
|
+
const entryFile = new URL(import.meta.resolve('@accomplish_ai/agent-core')).pathname;
|
|
93
|
+
for (let dir = path.dirname(entryFile); dir !== path.dirname(dir); dir = path.dirname(dir)) {
|
|
94
|
+
const mcpTools = path.join(dir, 'mcp-tools');
|
|
95
|
+
if (fs.existsSync(mcpTools))
|
|
96
|
+
return mcpTools;
|
|
97
|
+
}
|
|
85
98
|
}
|
|
86
99
|
catch {
|
|
87
|
-
|
|
100
|
+
// import.meta.resolve failed (package not resolvable from here)
|
|
88
101
|
}
|
|
102
|
+
return path.join(process.cwd(), 'mcp-tools');
|
|
89
103
|
}
|
|
90
104
|
//# sourceMappingURL=init.js.map
|
package/dist/core/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,YAAY,IAAI,gBAAgB,EAChC,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
|