itermbot 1.0.16 → 1.0.18
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/.agent/run-state.json +13 -0
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/release.yml +1 -1
- package/README.md +8 -0
- package/config/agent.yaml +13 -1
- package/config/app.yaml +24 -0
- package/config/memory.yaml +9 -3
- package/config/model.yaml +12 -22
- package/config/toolkit.yaml +55 -51
- package/dist/chat/response-safety.js +2 -2
- package/dist/chat/response-safety.js.map +1 -1
- package/dist/chat/task-manager.d.ts +33 -0
- package/dist/chat/task-manager.d.ts.map +1 -0
- package/dist/chat/task-manager.js +124 -0
- package/dist/chat/task-manager.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -6
- package/dist/config.js.map +1 -1
- package/dist/index.js +78 -11
- package/dist/index.js.map +1 -1
- package/dist/iterm/target-panel-backend.d.ts +75 -0
- package/dist/iterm/target-panel-backend.d.ts.map +1 -0
- package/dist/iterm/target-panel-backend.js +285 -0
- package/dist/iterm/target-panel-backend.js.map +1 -0
- package/dist/startup/diagnostics.d.ts.map +1 -1
- package/dist/startup/diagnostics.js +5 -2
- package/dist/startup/diagnostics.js.map +1 -1
- package/package.json +2 -2
- package/src/chat/response-safety.ts +2 -2
- package/src/chat/task-manager.ts +165 -0
- package/src/config.ts +113 -6
- package/src/external-modules.d.ts +1 -2
- package/src/index.ts +95 -12
- package/src/iterm/target-panel-backend.ts +368 -0
- package/src/startup/diagnostics.ts +5 -2
- package/test/integration/live-iterm-llm.integration.test.mjs +56 -3
- package/test/unit/config.test.mjs +18 -5
- package/test/unit/target-panel-backend.test.mjs +166 -0
- package/test/unit/task-manager.test.mjs +58 -0
- package/config/skill.yaml +0 -9
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"prompt": "Disk usage looks high. Please investigate where space is used, diagnostics only, no cleanup.\n\nTool-call rules:\n- Return strict JSON for tool args (example: {\"offset\":0}, never \"offset=0\").\n- Use workspace-relative paths only; never construct absolute filesystem paths.\n- Framework supports both tool calls and script commands; follow the SKILL whitelist per step.\n- If a skill allows both tool and script for one step, prefer the tool path unless user asks for script.\n- Do not inspect script source files unless the user explicitly asks for script code.\n- Avoid redundant exploratory calls; use the shortest valid workflow.\n- Complete the task in one uninterrupted run whenever possible; do not stop after intermediate reads or planning.\n- If required output artifacts are missing, continue executing tool steps until they are written and validated.",
|
|
3
|
+
"threadId": "t-1773110357185",
|
|
4
|
+
"status": "completed",
|
|
5
|
+
"startedAt": "2026-03-10T02:41:38.572Z",
|
|
6
|
+
"updatedAt": "2026-03-10T02:41:38.572Z",
|
|
7
|
+
"stepCount": 2,
|
|
8
|
+
"lastSummary": "Tool call: itermRunCommandInSession",
|
|
9
|
+
"artifacts": {
|
|
10
|
+
"todosPath": "/Users/boqiangliang/project/botbotgo/apps/itermbot/.agent/todos.json",
|
|
11
|
+
"todosPresent": false
|
|
12
|
+
}
|
|
13
|
+
}
|
package/.github/workflows/ci.yml
CHANGED
package/README.md
CHANGED
|
@@ -21,8 +21,16 @@ Main config files:
|
|
|
21
21
|
- `config/model.yaml`
|
|
22
22
|
- `config/toolkit.yaml`
|
|
23
23
|
- `config/memory.yaml`
|
|
24
|
+
- `config/task-manager.yaml`
|
|
24
25
|
|
|
25
26
|
`config/app.yaml` holds app-level behavior such as prompt templates and local startup settings. The model, memory, tool, and runtime files are delegated to the corresponding framework repos.
|
|
27
|
+
`config/task-manager.yaml` defines the application task manager behavior and persistence file.
|
|
28
|
+
|
|
29
|
+
Task manager commands in CLI:
|
|
30
|
+
|
|
31
|
+
- `task list`
|
|
32
|
+
- `task add <description>`
|
|
33
|
+
- `task run [task-id]`
|
|
26
34
|
|
|
27
35
|
## Usage
|
|
28
36
|
|
package/config/agent.yaml
CHANGED
|
@@ -3,5 +3,17 @@ kind: AgentConfig
|
|
|
3
3
|
metadata:
|
|
4
4
|
name: itermbot-agent
|
|
5
5
|
spec:
|
|
6
|
+
stateDirName: .agent
|
|
6
7
|
maxSteps: 100
|
|
7
|
-
|
|
8
|
+
|
|
9
|
+
# Runtime timing and liveness controls.
|
|
10
|
+
executeTimeoutMs: 240000
|
|
11
|
+
llmIdleTimeoutMs: 300000
|
|
12
|
+
heartbeatIntervalMs: 10000
|
|
13
|
+
backend:
|
|
14
|
+
type: module_export
|
|
15
|
+
module: ./dist/iterm/target-panel-backend.js
|
|
16
|
+
exportName: ITermTargetPanelBackend
|
|
17
|
+
options:
|
|
18
|
+
waitMs: 1000
|
|
19
|
+
maxOutputLines: 8000
|
package/config/app.yaml
CHANGED
|
@@ -1,14 +1,35 @@
|
|
|
1
|
+
# mandatory: apiVersion
|
|
2
|
+
# description: API version of this config resource.
|
|
3
|
+
# default: None (must be explicitly set)
|
|
1
4
|
apiVersion: botbotgo.world/v1
|
|
5
|
+
# mandatory: kind
|
|
6
|
+
# description: Resource kind; app config must be AppConfig.
|
|
7
|
+
# default: None (must be explicitly set)
|
|
2
8
|
kind: AppConfig
|
|
3
9
|
metadata:
|
|
10
|
+
# mandatory: metadata.name
|
|
11
|
+
# description: App config name.
|
|
12
|
+
# default: None (must be explicitly set)
|
|
4
13
|
name: itermbot
|
|
5
14
|
spec:
|
|
15
|
+
# optional: spec.agent
|
|
16
|
+
# description: Default agent mode identifier (for example, deep/react).
|
|
17
|
+
# default: Determined by app entrypoint default policy
|
|
6
18
|
agent: deep
|
|
7
19
|
|
|
20
|
+
# optional: spec.printSteps
|
|
21
|
+
# description: Whether to print intermediate step logs.
|
|
22
|
+
# default: false
|
|
8
23
|
printSteps: true
|
|
24
|
+
# optional: spec.responseSafetyMode
|
|
25
|
+
# description: Response safety policy level.
|
|
26
|
+
# default: balanced
|
|
9
27
|
responseSafetyMode: balanced
|
|
10
28
|
|
|
11
29
|
promptTemplates:
|
|
30
|
+
# optional: spec.promptTemplates.systemPrompt
|
|
31
|
+
# description: Main system prompt template.
|
|
32
|
+
# default: None
|
|
12
33
|
systemPrompt: |
|
|
13
34
|
## Role
|
|
14
35
|
You are a senior systems engineer and terminal operations specialist.
|
|
@@ -58,6 +79,9 @@ spec:
|
|
|
58
79
|
- If an inspection request omits path or scope, first run one non-destructive check against the current target-panel working directory and state that assumption explicitly.
|
|
59
80
|
- Do not suggest destructive commands (for example rm -rf, sudo rm, mkfs, dd, or disk erase) unless the user explicitly asks to execute them.
|
|
60
81
|
- Prefer non-destructive and reversible recommendations before irreversible actions.
|
|
82
|
+
# optional: spec.promptTemplates.directCommandTranslationPrompt
|
|
83
|
+
# description: Prompt template for translating user requests into one read-only command.
|
|
84
|
+
# default: None
|
|
61
85
|
directCommandTranslationPrompt: |
|
|
62
86
|
Role: you are a terminal command translator for direct execution.
|
|
63
87
|
Translate one user request into one executable read-only terminal command.
|
package/config/memory.yaml
CHANGED
|
@@ -6,7 +6,9 @@ spec:
|
|
|
6
6
|
types:
|
|
7
7
|
thread:
|
|
8
8
|
store:
|
|
9
|
-
type:
|
|
9
|
+
type: sqlite
|
|
10
|
+
config:
|
|
11
|
+
dbPath: ../data/thread.sqlite
|
|
10
12
|
# Empty model means using model.yaml defaults.
|
|
11
13
|
# You can override per type, e.g. llmModelId/embedModelId.
|
|
12
14
|
model: {}
|
|
@@ -25,7 +27,9 @@ spec:
|
|
|
25
27
|
|
|
26
28
|
cross_thread:
|
|
27
29
|
store:
|
|
28
|
-
type:
|
|
30
|
+
type: sqlite
|
|
31
|
+
config:
|
|
32
|
+
dbPath: ../data/cross-thread.sqlite
|
|
29
33
|
# Empty model means using model.yaml defaults.
|
|
30
34
|
# You can override per type, e.g. llmModelId/embedModelId.
|
|
31
35
|
model: {}
|
|
@@ -43,7 +47,9 @@ spec:
|
|
|
43
47
|
|
|
44
48
|
knowledge:
|
|
45
49
|
store:
|
|
46
|
-
type:
|
|
50
|
+
type: sqlite
|
|
51
|
+
config:
|
|
52
|
+
dbPath: ../data/knowledge.sqlite
|
|
47
53
|
# Empty model means using model.yaml defaults.
|
|
48
54
|
# You can override per type, e.g. llmModelId/embedModelId.
|
|
49
55
|
model: {}
|
package/config/model.yaml
CHANGED
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
apiVersion: botbotgo.world/v1
|
|
2
2
|
kind: ModelConfig
|
|
3
3
|
metadata:
|
|
4
|
-
name:
|
|
4
|
+
name: agent-example-model
|
|
5
5
|
spec:
|
|
6
6
|
llm:
|
|
7
|
-
default:
|
|
8
|
-
|
|
7
|
+
default: gpt_oss
|
|
8
|
+
gpt_oss:
|
|
9
9
|
provider: openai
|
|
10
|
-
base_url:
|
|
11
|
-
model:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
model: lfm2:latest
|
|
10
|
+
base_url: https://ollama-rtx-4070.easynet.world/v1
|
|
11
|
+
model: gpt-oss:latest
|
|
12
|
+
apiKey: ollama
|
|
13
|
+
options:
|
|
14
|
+
timeoutMs: 300000
|
|
16
15
|
|
|
17
16
|
embed:
|
|
18
|
-
default:
|
|
19
|
-
|
|
20
|
-
provider: openai
|
|
21
|
-
base_url: http://localhost:11434/v1
|
|
22
|
-
model: qwen3-embedding:0.6b
|
|
23
|
-
apiKey: not-needed
|
|
24
|
-
|
|
25
|
-
vlm:
|
|
26
|
-
default: glm_ocr
|
|
27
|
-
glm_ocr:
|
|
28
|
-
type: image
|
|
17
|
+
default: nomic_embed_text
|
|
18
|
+
nomic_embed_text:
|
|
29
19
|
provider: openai
|
|
30
|
-
base_url:
|
|
31
|
-
model:
|
|
20
|
+
base_url: https://ollama-rtx-4070.easynet.world/v1
|
|
21
|
+
model: nomic-embed-text
|
|
32
22
|
apiKey: not-needed
|
package/config/toolkit.yaml
CHANGED
|
@@ -3,55 +3,59 @@ kind: ToolkitConfig
|
|
|
3
3
|
metadata:
|
|
4
4
|
name: itermbot-local-tool-config
|
|
5
5
|
spec:
|
|
6
|
+
sandboxedPath: .
|
|
7
|
+
paths:
|
|
8
|
+
file:../../../framework/toolkit-builtin: {}
|
|
6
9
|
tools:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
10
|
+
customized:
|
|
11
|
+
file:../../../framework/toolkit-builtin:
|
|
12
|
+
itermRunCommandInSession:
|
|
13
|
+
allowedCommandPrefixes:
|
|
14
|
+
- cat
|
|
15
|
+
- cd
|
|
16
|
+
- date
|
|
17
|
+
- df
|
|
18
|
+
- du
|
|
19
|
+
- env
|
|
20
|
+
- file
|
|
21
|
+
- find
|
|
22
|
+
- grep
|
|
23
|
+
- head
|
|
24
|
+
- hostname
|
|
25
|
+
- id
|
|
26
|
+
- ls
|
|
27
|
+
- md5sum
|
|
28
|
+
- pgrep
|
|
29
|
+
- ps
|
|
30
|
+
- pwd
|
|
31
|
+
- readlink
|
|
32
|
+
- rg
|
|
33
|
+
- sha1sum
|
|
34
|
+
- sha256sum
|
|
35
|
+
- stat
|
|
36
|
+
- sysctl
|
|
37
|
+
- tail
|
|
38
|
+
- top
|
|
39
|
+
- uname -s
|
|
40
|
+
- uname
|
|
41
|
+
- uptime
|
|
42
|
+
- vm_stat
|
|
43
|
+
- wc
|
|
44
|
+
- whoami
|
|
45
|
+
- free
|
|
46
|
+
- kubectl config current-context
|
|
47
|
+
- kubectl config get-contexts
|
|
48
|
+
- kubectl config view
|
|
49
|
+
- kubectl cluster-info
|
|
50
|
+
- kubectl get
|
|
51
|
+
- kubectl logs
|
|
52
|
+
- kubectl describe
|
|
53
|
+
analyzeProjectRepo:
|
|
54
|
+
timeoutMs: 90000
|
|
55
|
+
askProjectRepo:
|
|
56
|
+
timeoutMs: 90000
|
|
57
|
+
gitPrView:
|
|
58
|
+
comments: true
|
|
59
|
+
gitPrReview:
|
|
60
|
+
comments: true
|
|
61
|
+
timeoutMs: 90000
|
|
@@ -31,7 +31,7 @@ function buildGenericSafeGuidance() {
|
|
|
31
31
|
].join("\n");
|
|
32
32
|
}
|
|
33
33
|
export function enforceResponseSafety(text) {
|
|
34
|
-
const trimmed = text.trim();
|
|
34
|
+
const trimmed = typeof text === "string" ? text.trim() : "";
|
|
35
35
|
if (!trimmed)
|
|
36
36
|
return trimmed;
|
|
37
37
|
return enforceResponseSafetyWithMode(trimmed, "balanced");
|
|
@@ -89,7 +89,7 @@ function replaceUngroundedPaths(text, options) {
|
|
|
89
89
|
return { text: out, replaced };
|
|
90
90
|
}
|
|
91
91
|
export function enforceResponseSafetyWithMode(text, mode = "balanced", options) {
|
|
92
|
-
const trimmed = text.trim();
|
|
92
|
+
const trimmed = typeof text === "string" ? text.trim() : "";
|
|
93
93
|
if (!trimmed)
|
|
94
94
|
return trimmed;
|
|
95
95
|
if (mode === "off")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-safety.js","sourceRoot":"","sources":["../../src/chat/response-safety.ts"],"names":[],"mappings":"AAMA,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG;QACf,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,qBAAqB;KACtB,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAC3D,OAAO,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC5D,OAAO,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC9D,OAAO,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC5D,OAAO,CAAC,yBAAyB,EAAE,gCAAgC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY;IACjD,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;QACL,6BAA6B;QAC7B,0DAA0D;QAC1D,yDAAyD;QACzD,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"response-safety.js","sourceRoot":"","sources":["../../src/chat/response-safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type TaskStatus = "pending" | "running" | "completed" | "failed";
|
|
2
|
+
export interface TaskRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
description: string;
|
|
5
|
+
status: TaskStatus;
|
|
6
|
+
createdAt: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
startedAt?: string;
|
|
9
|
+
finishedAt?: string;
|
|
10
|
+
outputPreview?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateTaskManagerOptions {
|
|
14
|
+
rootDir: string;
|
|
15
|
+
stateFile?: string;
|
|
16
|
+
maxTasks?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface TaskManagerRunOptions {
|
|
19
|
+
id?: string;
|
|
20
|
+
runTask: (description: string) => Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
export declare class ApplicationTaskManager {
|
|
23
|
+
private readonly statePath;
|
|
24
|
+
private readonly maxTasks;
|
|
25
|
+
constructor(options: CreateTaskManagerOptions);
|
|
26
|
+
add(description: string): Promise<TaskRecord>;
|
|
27
|
+
list(): Promise<TaskRecord[]>;
|
|
28
|
+
runNext(options: TaskManagerRunOptions): Promise<TaskRecord>;
|
|
29
|
+
handleCommand(input: string, runTask: (description: string) => Promise<string>): Promise<string | null>;
|
|
30
|
+
private readStore;
|
|
31
|
+
private writeStore;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=task-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/chat/task-manager.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD;AAQD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEf,OAAO,EAAE,wBAAwB;IAKvC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsB7C,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK7B,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuC5D,aAAa,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YA8BX,SAAS;YAaT,UAAU;CAIzB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
function normalizePreview(text) {
|
|
4
|
+
const oneLine = text.replace(/\s+/g, " ").trim();
|
|
5
|
+
if (oneLine.length <= 240)
|
|
6
|
+
return oneLine;
|
|
7
|
+
return `${oneLine.slice(0, 237)}...`;
|
|
8
|
+
}
|
|
9
|
+
export class ApplicationTaskManager {
|
|
10
|
+
statePath;
|
|
11
|
+
maxTasks;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.statePath = resolve(options.rootDir, options.stateFile ?? ".agent/tasks.json");
|
|
14
|
+
this.maxTasks = Math.max(1, Math.floor(options.maxTasks ?? 200));
|
|
15
|
+
}
|
|
16
|
+
async add(description) {
|
|
17
|
+
const trimmed = description.trim();
|
|
18
|
+
if (!trimmed) {
|
|
19
|
+
throw new Error("Task description cannot be empty.");
|
|
20
|
+
}
|
|
21
|
+
const store = await this.readStore();
|
|
22
|
+
if (store.tasks.length >= this.maxTasks) {
|
|
23
|
+
throw new Error(`Task limit reached (${this.maxTasks}).`);
|
|
24
|
+
}
|
|
25
|
+
const now = new Date().toISOString();
|
|
26
|
+
const task = {
|
|
27
|
+
id: `t-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`,
|
|
28
|
+
description: trimmed,
|
|
29
|
+
status: "pending",
|
|
30
|
+
createdAt: now,
|
|
31
|
+
updatedAt: now,
|
|
32
|
+
};
|
|
33
|
+
store.tasks.push(task);
|
|
34
|
+
await this.writeStore(store);
|
|
35
|
+
return task;
|
|
36
|
+
}
|
|
37
|
+
async list() {
|
|
38
|
+
const store = await this.readStore();
|
|
39
|
+
return [...store.tasks];
|
|
40
|
+
}
|
|
41
|
+
async runNext(options) {
|
|
42
|
+
const store = await this.readStore();
|
|
43
|
+
const task = options.id
|
|
44
|
+
? store.tasks.find((item) => item.id === options.id)
|
|
45
|
+
: store.tasks.find((item) => item.status === "pending");
|
|
46
|
+
if (!task) {
|
|
47
|
+
throw new Error(options.id ? `Task not found: ${options.id}` : "No pending task to run.");
|
|
48
|
+
}
|
|
49
|
+
if (task.status === "running") {
|
|
50
|
+
throw new Error(`Task is already running: ${task.id}`);
|
|
51
|
+
}
|
|
52
|
+
const startedAt = new Date().toISOString();
|
|
53
|
+
task.status = "running";
|
|
54
|
+
task.startedAt = startedAt;
|
|
55
|
+
task.updatedAt = startedAt;
|
|
56
|
+
task.error = undefined;
|
|
57
|
+
await this.writeStore(store);
|
|
58
|
+
try {
|
|
59
|
+
const output = await options.runTask(task.description);
|
|
60
|
+
const finishedAt = new Date().toISOString();
|
|
61
|
+
task.status = "completed";
|
|
62
|
+
task.finishedAt = finishedAt;
|
|
63
|
+
task.updatedAt = finishedAt;
|
|
64
|
+
task.outputPreview = normalizePreview(output);
|
|
65
|
+
await this.writeStore(store);
|
|
66
|
+
return { ...task };
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const finishedAt = new Date().toISOString();
|
|
70
|
+
task.status = "failed";
|
|
71
|
+
task.finishedAt = finishedAt;
|
|
72
|
+
task.updatedAt = finishedAt;
|
|
73
|
+
task.error = error instanceof Error ? error.message : String(error);
|
|
74
|
+
await this.writeStore(store);
|
|
75
|
+
return { ...task };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async handleCommand(input, runTask) {
|
|
79
|
+
const trimmed = input.trim();
|
|
80
|
+
if (!/^task(\s|$)/i.test(trimmed))
|
|
81
|
+
return null;
|
|
82
|
+
const listMatch = /^task\s+list$/i.exec(trimmed);
|
|
83
|
+
if (listMatch) {
|
|
84
|
+
const tasks = await this.list();
|
|
85
|
+
if (tasks.length === 0)
|
|
86
|
+
return "No tasks.";
|
|
87
|
+
return tasks
|
|
88
|
+
.map((task) => `- ${task.id} [${task.status}] ${task.description}`)
|
|
89
|
+
.join("\n");
|
|
90
|
+
}
|
|
91
|
+
const addMatch = /^task\s+add\s+(.+)$/i.exec(trimmed);
|
|
92
|
+
if (addMatch) {
|
|
93
|
+
const task = await this.add(addMatch[1] ?? "");
|
|
94
|
+
return `Task added: ${task.id} [pending] ${task.description}`;
|
|
95
|
+
}
|
|
96
|
+
const runMatch = /^task\s+run(?:\s+([a-zA-Z0-9_-]+))?$/i.exec(trimmed);
|
|
97
|
+
if (runMatch) {
|
|
98
|
+
const task = await this.runNext({ id: runMatch[1], runTask });
|
|
99
|
+
if (task.status === "completed") {
|
|
100
|
+
return `Task completed: ${task.id}\n${task.outputPreview ?? ""}`.trim();
|
|
101
|
+
}
|
|
102
|
+
return `Task failed: ${task.id}\n${task.error ?? "Unknown error"}`;
|
|
103
|
+
}
|
|
104
|
+
return "Task manager commands: task list | task add <description> | task run [task-id]";
|
|
105
|
+
}
|
|
106
|
+
async readStore() {
|
|
107
|
+
try {
|
|
108
|
+
const raw = await readFile(this.statePath, "utf8");
|
|
109
|
+
const parsed = JSON.parse(raw);
|
|
110
|
+
if (parsed && parsed.version === 1 && Array.isArray(parsed.tasks)) {
|
|
111
|
+
return { version: 1, tasks: parsed.tasks };
|
|
112
|
+
}
|
|
113
|
+
return { version: 1, tasks: [] };
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return { version: 1, tasks: [] };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async writeStore(store) {
|
|
120
|
+
await mkdir(dirname(this.statePath), { recursive: true });
|
|
121
|
+
await writeFile(this.statePath, JSON.stringify(store, null, 2), "utf8");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=task-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/chat/task-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type PromptTemplates = {
|
|
|
4
4
|
};
|
|
5
5
|
export type ResponseSafetyMode = "off" | "balanced" | "strict";
|
|
6
6
|
export type AgentMode = "react" | "deep";
|
|
7
|
+
export type RuntimeBackendType = "local_shell" | "deepagents_export" | "module_export";
|
|
7
8
|
export type AppConfig = {
|
|
8
9
|
agent?: AgentMode;
|
|
9
10
|
printSteps?: boolean;
|
|
@@ -13,6 +14,16 @@ export type AppConfig = {
|
|
|
13
14
|
export type RuntimeConfig = {
|
|
14
15
|
maxSteps?: number;
|
|
15
16
|
invokeTimeoutMs?: number;
|
|
17
|
+
backend?: {
|
|
18
|
+
type?: RuntimeBackendType;
|
|
19
|
+
exportName?: string;
|
|
20
|
+
module?: string;
|
|
21
|
+
createMethod?: string;
|
|
22
|
+
options?: Record<string, unknown>;
|
|
23
|
+
inheritEnv?: boolean;
|
|
24
|
+
timeoutMs?: number;
|
|
25
|
+
maxOutputBytes?: number;
|
|
26
|
+
};
|
|
16
27
|
};
|
|
17
28
|
export type SkillRuntimeConfig = {
|
|
18
29
|
mode?: "prompt" | "subagent";
|
|
@@ -27,7 +38,13 @@ export type SkillWorkflowConfig = {
|
|
|
27
38
|
summaryPrompt?: string;
|
|
28
39
|
}>;
|
|
29
40
|
};
|
|
41
|
+
export type TaskManagerConfig = {
|
|
42
|
+
enabled?: boolean;
|
|
43
|
+
stateFile?: string;
|
|
44
|
+
maxTasks?: number;
|
|
45
|
+
};
|
|
30
46
|
export declare function loadAppConfig(configPath: string): Promise<AppConfig>;
|
|
31
47
|
export declare function loadRuntimeConfig(configPath: string): Promise<RuntimeConfig>;
|
|
32
48
|
export declare function loadSkillRuntimeConfig(configPath: string): Promise<SkillRuntimeConfig>;
|
|
49
|
+
export declare function loadTaskManagerConfig(configPath: string): Promise<TaskManagerConfig>;
|
|
33
50
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC/D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC/D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACzC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEvF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAqC1E;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAyElF;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwE5F;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+B1F"}
|