wave-agent-sdk 0.17.1 → 0.17.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/builtin/skills/deep-research/SKILL.md +90 -0
- package/builtin/skills/settings/ENV.md +6 -3
- package/dist/agent.d.ts +28 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +128 -34
- package/dist/constants/goalPrompts.d.ts +2 -0
- package/dist/constants/goalPrompts.d.ts.map +1 -0
- package/dist/constants/goalPrompts.js +10 -0
- package/dist/constants/tools.d.ts +1 -0
- package/dist/constants/tools.d.ts.map +1 -1
- package/dist/constants/tools.js +1 -0
- package/dist/managers/aiManager.d.ts +7 -0
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +77 -41
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +10 -2
- package/dist/managers/goalManager.d.ts +43 -0
- package/dist/managers/goalManager.d.ts.map +1 -0
- package/dist/managers/goalManager.js +177 -0
- package/dist/managers/messageManager.d.ts +2 -2
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageQueue.d.ts +10 -0
- package/dist/managers/messageQueue.d.ts.map +1 -1
- package/dist/managers/messageQueue.js +53 -1
- package/dist/managers/pluginManager.d.ts.map +1 -1
- package/dist/managers/pluginManager.js +7 -1
- package/dist/managers/skillManager.d.ts +2 -0
- package/dist/managers/skillManager.d.ts.map +1 -1
- package/dist/managers/skillManager.js +19 -9
- package/dist/managers/slashCommandManager.d.ts +6 -0
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +105 -0
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +5 -0
- package/dist/managers/workflowManager.d.ts +65 -0
- package/dist/managers/workflowManager.d.ts.map +1 -0
- package/dist/managers/workflowManager.js +380 -0
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +3 -3
- package/dist/services/aiService.d.ts +23 -0
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +102 -9
- package/dist/services/configurationService.d.ts +1 -1
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +3 -16
- package/dist/services/hook.d.ts.map +1 -1
- package/dist/services/hook.js +4 -0
- package/dist/services/session.d.ts +9 -1
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +28 -1
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +49 -7
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +1 -1
- package/dist/tools/taskManagementTools.d.ts.map +1 -1
- package/dist/tools/taskManagementTools.js +103 -157
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/webFetchTool.d.ts.map +1 -1
- package/dist/tools/webFetchTool.js +0 -9
- package/dist/tools/workflowTool.d.ts +11 -0
- package/dist/tools/workflowTool.d.ts.map +1 -0
- package/dist/tools/workflowTool.js +190 -0
- package/dist/types/agent.d.ts +2 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/commands.d.ts +4 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/config.d.ts +2 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +2 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/messaging.d.ts +2 -2
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/processes.d.ts +6 -2
- package/dist/types/processes.d.ts.map +1 -1
- package/dist/types/workflow.d.ts +2 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +1 -0
- package/dist/utils/cacheControlUtils.d.ts +13 -8
- package/dist/utils/cacheControlUtils.d.ts.map +1 -1
- package/dist/utils/cacheControlUtils.js +73 -102
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +7 -0
- package/dist/utils/markdownParser.d.ts.map +1 -1
- package/dist/utils/markdownParser.js +21 -6
- package/dist/utils/messageOperations.d.ts +2 -2
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/notificationXml.d.ts.map +1 -1
- package/dist/workflow/budgetTracker.d.ts +12 -0
- package/dist/workflow/budgetTracker.d.ts.map +1 -0
- package/dist/workflow/budgetTracker.js +30 -0
- package/dist/workflow/concurrencyLimiter.d.ts +14 -0
- package/dist/workflow/concurrencyLimiter.d.ts.map +1 -0
- package/dist/workflow/concurrencyLimiter.js +39 -0
- package/dist/workflow/journal.d.ts +19 -0
- package/dist/workflow/journal.d.ts.map +1 -0
- package/dist/workflow/journal.js +74 -0
- package/dist/workflow/progressReporter.d.ts +21 -0
- package/dist/workflow/progressReporter.d.ts.map +1 -0
- package/dist/workflow/progressReporter.js +118 -0
- package/dist/workflow/runState.d.ts +16 -0
- package/dist/workflow/runState.d.ts.map +1 -0
- package/dist/workflow/runState.js +57 -0
- package/dist/workflow/scriptRuntime.d.ts +35 -0
- package/dist/workflow/scriptRuntime.d.ts.map +1 -0
- package/dist/workflow/scriptRuntime.js +196 -0
- package/dist/workflow/structuredOutput.d.ts +27 -0
- package/dist/workflow/structuredOutput.d.ts.map +1 -0
- package/dist/workflow/structuredOutput.js +106 -0
- package/dist/workflow/types.d.ts +81 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +1 -0
- package/dist/workflow/workflowApis.d.ts +46 -0
- package/dist/workflow/workflowApis.d.ts.map +1 -0
- package/dist/workflow/workflowApis.js +280 -0
- package/package.json +1 -1
- package/src/agent.ts +144 -34
- package/src/constants/goalPrompts.ts +10 -0
- package/src/constants/tools.ts +1 -0
- package/src/managers/aiManager.ts +91 -47
- package/src/managers/backgroundTaskManager.ts +16 -4
- package/src/managers/goalManager.ts +232 -0
- package/src/managers/messageManager.ts +2 -2
- package/src/managers/messageQueue.ts +59 -1
- package/src/managers/pluginManager.ts +8 -1
- package/src/managers/skillManager.ts +20 -9
- package/src/managers/slashCommandManager.ts +119 -0
- package/src/managers/toolManager.ts +7 -0
- package/src/managers/workflowManager.ts +491 -0
- package/src/prompts/index.ts +4 -2
- package/src/services/aiService.ts +166 -12
- package/src/services/configurationService.ts +2 -22
- package/src/services/hook.ts +5 -0
- package/src/services/session.ts +42 -2
- package/src/tools/bashTool.ts +64 -9
- package/src/tools/readTool.ts +1 -2
- package/src/tools/taskManagementTools.ts +146 -195
- package/src/tools/types.ts +2 -0
- package/src/tools/webFetchTool.ts +0 -12
- package/src/tools/workflowTool.ts +205 -0
- package/src/types/agent.ts +6 -0
- package/src/types/commands.ts +4 -0
- package/src/types/config.ts +2 -2
- package/src/types/core.ts +3 -3
- package/src/types/hooks.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/types/messaging.ts +2 -2
- package/src/types/processes.ts +10 -2
- package/src/types/workflow.ts +5 -0
- package/src/utils/cacheControlUtils.ts +106 -131
- package/src/utils/containerSetup.ts +9 -0
- package/src/utils/markdownParser.ts +26 -8
- package/src/utils/messageOperations.ts +2 -2
- package/src/utils/notificationXml.ts +6 -1
- package/src/workflow/budgetTracker.ts +34 -0
- package/src/workflow/concurrencyLimiter.ts +47 -0
- package/src/workflow/journal.ts +95 -0
- package/src/workflow/progressReporter.ts +141 -0
- package/src/workflow/runState.ts +65 -0
- package/src/workflow/scriptRuntime.ts +274 -0
- package/src/workflow/structuredOutput.ts +123 -0
- package/src/workflow/types.ts +95 -0
- package/src/workflow/workflowApis.ts +412 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notificationXml.d.ts","sourceRoot":"","sources":["../../src/utils/notificationXml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAW1E;AAQD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GACV,qBAAqB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"notificationXml.d.ts","sourceRoot":"","sources":["../../src/utils/notificationXml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAW1E;AAQD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GACV,qBAAqB,GAAG,IAAI,CAiC9B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class BudgetTracker {
|
|
2
|
+
private _total;
|
|
3
|
+
private totalSpent;
|
|
4
|
+
constructor(_total?: number | null);
|
|
5
|
+
addUsage(tokens: number): void;
|
|
6
|
+
spent(): number;
|
|
7
|
+
remaining(): number;
|
|
8
|
+
isExceeded(): boolean;
|
|
9
|
+
get total(): number | null;
|
|
10
|
+
toBudgetInfo(): import("./types.js").BudgetInfo;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=budgetTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetTracker.d.ts","sourceRoot":"","sources":["../../src/workflow/budgetTracker.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IAGZ,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,UAAU,CAAK;gBAEH,MAAM,GAAE,MAAM,GAAG,IAAW;IAEhD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,IAAI,MAAM;IAIf,SAAS,IAAI,MAAM;IAKnB,UAAU,IAAI,OAAO;IAIrB,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,YAAY,IAAI,OAAO,YAAY,EAAE,UAAU;CAOhD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class BudgetTracker {
|
|
2
|
+
constructor(_total = null) {
|
|
3
|
+
this._total = _total;
|
|
4
|
+
this.totalSpent = 0;
|
|
5
|
+
}
|
|
6
|
+
addUsage(tokens) {
|
|
7
|
+
this.totalSpent += tokens;
|
|
8
|
+
}
|
|
9
|
+
spent() {
|
|
10
|
+
return this.totalSpent;
|
|
11
|
+
}
|
|
12
|
+
remaining() {
|
|
13
|
+
if (this._total === null)
|
|
14
|
+
return Infinity;
|
|
15
|
+
return Math.max(0, this._total - this.totalSpent);
|
|
16
|
+
}
|
|
17
|
+
isExceeded() {
|
|
18
|
+
return this._total !== null && this.totalSpent >= this._total;
|
|
19
|
+
}
|
|
20
|
+
get total() {
|
|
21
|
+
return this._total;
|
|
22
|
+
}
|
|
23
|
+
toBudgetInfo() {
|
|
24
|
+
return {
|
|
25
|
+
total: this._total,
|
|
26
|
+
spent: () => this.totalSpent,
|
|
27
|
+
remaining: () => this.remaining(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class ConcurrencyLimiter {
|
|
2
|
+
private running;
|
|
3
|
+
private queue;
|
|
4
|
+
private readonly maxConcurrency;
|
|
5
|
+
private activeSet;
|
|
6
|
+
constructor(maxConcurrency: number);
|
|
7
|
+
acquire(): Promise<void>;
|
|
8
|
+
release(): void;
|
|
9
|
+
track<T>(promise: Promise<T>): Promise<T>;
|
|
10
|
+
drain(): Promise<void>;
|
|
11
|
+
get activeCount(): number;
|
|
12
|
+
get pendingCount(): number;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=concurrencyLimiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrencyLimiter.d.ts","sourceRoot":"","sources":["../../src/workflow/concurrencyLimiter.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,SAAS,CAA+B;gBAEpC,cAAc,EAAE,MAAM;IAI5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,OAAO,IAAI,IAAI;IASf,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export class ConcurrencyLimiter {
|
|
2
|
+
constructor(maxConcurrency) {
|
|
3
|
+
this.running = 0;
|
|
4
|
+
this.queue = [];
|
|
5
|
+
this.activeSet = new Set();
|
|
6
|
+
this.maxConcurrency = Math.max(1, maxConcurrency);
|
|
7
|
+
}
|
|
8
|
+
async acquire() {
|
|
9
|
+
if (this.running < this.maxConcurrency) {
|
|
10
|
+
this.running++;
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
this.queue.push(resolve);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
release() {
|
|
18
|
+
this.running--;
|
|
19
|
+
if (this.queue.length > 0) {
|
|
20
|
+
this.running++;
|
|
21
|
+
const next = this.queue.shift();
|
|
22
|
+
next();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
track(promise) {
|
|
26
|
+
this.activeSet.add(promise);
|
|
27
|
+
promise.finally(() => this.activeSet.delete(promise));
|
|
28
|
+
return promise;
|
|
29
|
+
}
|
|
30
|
+
async drain() {
|
|
31
|
+
await Promise.allSettled(this.activeSet);
|
|
32
|
+
}
|
|
33
|
+
get activeCount() {
|
|
34
|
+
return this.running;
|
|
35
|
+
}
|
|
36
|
+
get pendingCount() {
|
|
37
|
+
return this.queue.length;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { JournalLine } from "./types.js";
|
|
2
|
+
export declare class Journal {
|
|
3
|
+
readonly filePath: string;
|
|
4
|
+
private entries;
|
|
5
|
+
private stream;
|
|
6
|
+
constructor(filePath: string);
|
|
7
|
+
init(): Promise<void>;
|
|
8
|
+
append(entry: JournalLine): void;
|
|
9
|
+
appendLog(message: string): void;
|
|
10
|
+
getCachedResult(agentIndex: number): unknown | undefined;
|
|
11
|
+
get length(): number;
|
|
12
|
+
/** Count of agent entries (excluding log entries) */
|
|
13
|
+
get agentEntryCount(): number;
|
|
14
|
+
/** Remove the agent_failed entry for a given agent index (for retry support) */
|
|
15
|
+
removeFailedEntry(agentIndex: number): void;
|
|
16
|
+
close(): Promise<void>;
|
|
17
|
+
static load(filePath: string): Promise<Journal>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/workflow/journal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,OAAO;aAIU,QAAQ,EAAE,MAAM;IAH5C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAA+B;gBAEjB,QAAQ,EAAE,MAAM;IAEtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAOhC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAkBxD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,qDAAqD;IACrD,IAAI,eAAe,IAAI,MAAM,CAI5B;IAED,gFAAgF;IAChF,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAWrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAUf,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAetD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
export class Journal {
|
|
4
|
+
constructor(filePath) {
|
|
5
|
+
this.filePath = filePath;
|
|
6
|
+
this.entries = [];
|
|
7
|
+
this.stream = null;
|
|
8
|
+
}
|
|
9
|
+
async init() {
|
|
10
|
+
// Ensure directory exists
|
|
11
|
+
await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
12
|
+
// Create append-only write stream
|
|
13
|
+
this.stream = fs.createWriteStream(this.filePath, { flags: "a" });
|
|
14
|
+
}
|
|
15
|
+
append(entry) {
|
|
16
|
+
this.entries.push(entry);
|
|
17
|
+
if (this.stream && !this.stream.destroyed && !this.stream.writableEnded) {
|
|
18
|
+
this.stream.write(JSON.stringify(entry) + "\n");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
appendLog(message) {
|
|
22
|
+
this.append({ type: "log", message });
|
|
23
|
+
}
|
|
24
|
+
getCachedResult(agentIndex) {
|
|
25
|
+
const agentEntries = this.entries.filter((e) => !("type" in e));
|
|
26
|
+
// Check if this agent was marked as failed
|
|
27
|
+
const failedEntry = this.entries.find((e) => "type" in e && e.type === "agent_failed" && e.agentIndex === agentIndex);
|
|
28
|
+
if (failedEntry) {
|
|
29
|
+
return undefined; // Failed agents don't have cached results
|
|
30
|
+
}
|
|
31
|
+
if (agentIndex < agentEntries.length) {
|
|
32
|
+
return agentEntries[agentIndex].result;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
get length() {
|
|
37
|
+
return this.entries.length;
|
|
38
|
+
}
|
|
39
|
+
/** Count of agent entries (excluding log entries) */
|
|
40
|
+
get agentEntryCount() {
|
|
41
|
+
return this.entries.filter((e) => !("type" in e)).length;
|
|
42
|
+
}
|
|
43
|
+
/** Remove the agent_failed entry for a given agent index (for retry support) */
|
|
44
|
+
removeFailedEntry(agentIndex) {
|
|
45
|
+
this.entries = this.entries.filter((e) => !("type" in e &&
|
|
46
|
+
e.type === "agent_failed" &&
|
|
47
|
+
e.agentIndex === agentIndex));
|
|
48
|
+
}
|
|
49
|
+
async close() {
|
|
50
|
+
const s = this.stream;
|
|
51
|
+
this.stream = null;
|
|
52
|
+
if (s) {
|
|
53
|
+
await new Promise((resolve) => {
|
|
54
|
+
s.end(() => resolve());
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static async load(filePath) {
|
|
59
|
+
const journal = new Journal(filePath);
|
|
60
|
+
try {
|
|
61
|
+
const content = await fs.promises.readFile(filePath, "utf-8");
|
|
62
|
+
for (const line of content.split("\n")) {
|
|
63
|
+
const trimmed = line.trim();
|
|
64
|
+
if (trimmed) {
|
|
65
|
+
journal.entries.push(JSON.parse(trimmed));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// File doesn't exist yet — empty journal
|
|
71
|
+
}
|
|
72
|
+
return journal;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { WorkflowPhaseState, WorkflowMeta, WorkflowProgressEvent } from "./types.js";
|
|
2
|
+
export declare class ProgressReporter {
|
|
3
|
+
private meta;
|
|
4
|
+
private phases;
|
|
5
|
+
private currentPhaseIndex;
|
|
6
|
+
private agentCounter;
|
|
7
|
+
private listeners;
|
|
8
|
+
private runId;
|
|
9
|
+
constructor(meta: WorkflowMeta, runId?: string);
|
|
10
|
+
setPhase(title: string): void;
|
|
11
|
+
agentStarted(): void;
|
|
12
|
+
agentCompleted(tokens: number): void;
|
|
13
|
+
agentFailed(agentIndex: number): void;
|
|
14
|
+
formatSummary(): string;
|
|
15
|
+
getPhaseStates(): WorkflowPhaseState[];
|
|
16
|
+
get totalAgents(): number;
|
|
17
|
+
get totalTokens(): number;
|
|
18
|
+
onEvent(listener: (event: WorkflowProgressEvent) => void): void;
|
|
19
|
+
private emit;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=progressReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressReporter.d.ts","sourceRoot":"","sources":["../../src/workflow/progressReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,IAAI;IAPd,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,KAAK,CAAS;gBAGZ,IAAI,EAAE,YAAY,EAC1B,KAAK,CAAC,EAAE,MAAM;IAqBhB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA6B7B,YAAY,IAAI,IAAI;IAYpB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAapC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQrC,aAAa,IAAI,MAAM;IAUvB,cAAc,IAAI,kBAAkB,EAAE;IAItC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,IAAI;IAI/D,OAAO,CAAC,IAAI;CAgBb"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export class ProgressReporter {
|
|
2
|
+
constructor(meta, runId) {
|
|
3
|
+
this.meta = meta;
|
|
4
|
+
this.phases = [];
|
|
5
|
+
this.currentPhaseIndex = -1;
|
|
6
|
+
this.agentCounter = 0;
|
|
7
|
+
this.listeners = [];
|
|
8
|
+
this.runId = runId || "";
|
|
9
|
+
// Pre-initialize phases from meta so they appear even if the script
|
|
10
|
+
// doesn't call phase() explicitly
|
|
11
|
+
if (meta.phases?.length) {
|
|
12
|
+
for (const p of meta.phases) {
|
|
13
|
+
this.phases.push({
|
|
14
|
+
title: p.title,
|
|
15
|
+
agentCount: 0,
|
|
16
|
+
tokens: 0,
|
|
17
|
+
elapsed: 0,
|
|
18
|
+
startTime: Date.now(),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// Default to the first phase so agentStarted/agentCompleted
|
|
22
|
+
// track into it even without an explicit phase() call
|
|
23
|
+
this.currentPhaseIndex = 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
setPhase(title) {
|
|
27
|
+
// Emit phase_completed for the previous phase
|
|
28
|
+
if (this.currentPhaseIndex >= 0) {
|
|
29
|
+
this.emit({
|
|
30
|
+
type: "phase_completed",
|
|
31
|
+
phaseIndex: this.currentPhaseIndex,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const existing = this.phases.findIndex((p) => p.title === title);
|
|
35
|
+
if (existing >= 0) {
|
|
36
|
+
this.currentPhaseIndex = existing;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.phases.push({
|
|
40
|
+
title,
|
|
41
|
+
agentCount: 0,
|
|
42
|
+
tokens: 0,
|
|
43
|
+
elapsed: 0,
|
|
44
|
+
startTime: Date.now(),
|
|
45
|
+
});
|
|
46
|
+
this.currentPhaseIndex = this.phases.length - 1;
|
|
47
|
+
}
|
|
48
|
+
this.emit({
|
|
49
|
+
type: "phase_started",
|
|
50
|
+
phaseIndex: this.currentPhaseIndex,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
agentStarted() {
|
|
54
|
+
this.agentCounter++;
|
|
55
|
+
if (this.currentPhaseIndex >= 0) {
|
|
56
|
+
this.phases[this.currentPhaseIndex].agentCount++;
|
|
57
|
+
}
|
|
58
|
+
this.emit({
|
|
59
|
+
type: "agent_started",
|
|
60
|
+
phaseIndex: this.currentPhaseIndex,
|
|
61
|
+
agentIndex: this.agentCounter - 1,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
agentCompleted(tokens) {
|
|
65
|
+
if (this.currentPhaseIndex >= 0) {
|
|
66
|
+
this.phases[this.currentPhaseIndex].tokens += tokens;
|
|
67
|
+
this.phases[this.currentPhaseIndex].elapsed =
|
|
68
|
+
Date.now() - this.phases[this.currentPhaseIndex].startTime;
|
|
69
|
+
}
|
|
70
|
+
this.emit({
|
|
71
|
+
type: "agent_completed",
|
|
72
|
+
phaseIndex: this.currentPhaseIndex,
|
|
73
|
+
agentIndex: this.agentCounter - 1,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
agentFailed(agentIndex) {
|
|
77
|
+
this.emit({
|
|
78
|
+
type: "agent_failed",
|
|
79
|
+
phaseIndex: this.currentPhaseIndex,
|
|
80
|
+
agentIndex,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
formatSummary() {
|
|
84
|
+
const phaseInfo = this.currentPhaseIndex >= 0
|
|
85
|
+
? `Phase ${this.currentPhaseIndex + 1}/${this.phases.length}: ${this.phases[this.currentPhaseIndex].title}`
|
|
86
|
+
: "Initializing";
|
|
87
|
+
const totalTokens = this.phases.reduce((sum, p) => sum + p.tokens, 0);
|
|
88
|
+
const elapsed = this.phases.reduce((sum, p) => sum + p.elapsed, 0);
|
|
89
|
+
return `${phaseInfo} | ${this.agentCounter} agents | ${(totalTokens / 1000).toFixed(1)}k tokens | ${Math.round(elapsed / 1000)}s`;
|
|
90
|
+
}
|
|
91
|
+
getPhaseStates() {
|
|
92
|
+
return [...this.phases];
|
|
93
|
+
}
|
|
94
|
+
get totalAgents() {
|
|
95
|
+
return this.agentCounter;
|
|
96
|
+
}
|
|
97
|
+
get totalTokens() {
|
|
98
|
+
return this.phases.reduce((sum, p) => sum + p.tokens, 0);
|
|
99
|
+
}
|
|
100
|
+
onEvent(listener) {
|
|
101
|
+
this.listeners.push(listener);
|
|
102
|
+
}
|
|
103
|
+
emit(event) {
|
|
104
|
+
const fullEvent = {
|
|
105
|
+
...event,
|
|
106
|
+
runId: this.runId,
|
|
107
|
+
timestamp: Date.now(),
|
|
108
|
+
};
|
|
109
|
+
for (const listener of this.listeners) {
|
|
110
|
+
try {
|
|
111
|
+
listener(fullEvent);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Swallow listener errors
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WorkflowRun } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Persists WorkflowRun state to <runDir>/run-state.json.
|
|
4
|
+
* Enables run recovery across process restarts.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RunStateStore {
|
|
7
|
+
private baseDir;
|
|
8
|
+
constructor(baseDir: string);
|
|
9
|
+
/** Persist a run's state to disk */
|
|
10
|
+
save(run: WorkflowRun): Promise<void>;
|
|
11
|
+
/** Load a single run's state from disk */
|
|
12
|
+
load(runId: string): Promise<WorkflowRun | null>;
|
|
13
|
+
/** List all persisted run IDs */
|
|
14
|
+
listRuns(): Promise<string[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=runState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runState.d.ts","sourceRoot":"","sources":["../../src/workflow/runState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEnC,oCAAoC;IAC9B,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,0CAA0C;IACpC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUtD,iCAAiC;IAC3B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CA0BpC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* Persists WorkflowRun state to <runDir>/run-state.json.
|
|
5
|
+
* Enables run recovery across process restarts.
|
|
6
|
+
*/
|
|
7
|
+
export class RunStateStore {
|
|
8
|
+
constructor(baseDir) {
|
|
9
|
+
this.baseDir = baseDir;
|
|
10
|
+
}
|
|
11
|
+
/** Persist a run's state to disk */
|
|
12
|
+
async save(run) {
|
|
13
|
+
const runDir = path.join(this.baseDir, run.runId);
|
|
14
|
+
await fs.promises.mkdir(runDir, { recursive: true });
|
|
15
|
+
const statePath = path.join(runDir, "run-state.json");
|
|
16
|
+
// Omit non-serializable fields
|
|
17
|
+
const { completionPromise, ...serializable } = run;
|
|
18
|
+
void completionPromise;
|
|
19
|
+
await fs.promises.writeFile(statePath, JSON.stringify(serializable, null, 2), "utf-8");
|
|
20
|
+
}
|
|
21
|
+
/** Load a single run's state from disk */
|
|
22
|
+
async load(runId) {
|
|
23
|
+
const statePath = path.join(this.baseDir, runId, "run-state.json");
|
|
24
|
+
try {
|
|
25
|
+
const content = await fs.promises.readFile(statePath, "utf-8");
|
|
26
|
+
return JSON.parse(content);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** List all persisted run IDs */
|
|
33
|
+
async listRuns() {
|
|
34
|
+
try {
|
|
35
|
+
const entries = await fs.promises.readdir(this.baseDir, {
|
|
36
|
+
withFileTypes: true,
|
|
37
|
+
});
|
|
38
|
+
const runIds = [];
|
|
39
|
+
for (const entry of entries) {
|
|
40
|
+
if (entry.isDirectory() && entry.name.startsWith("wf_")) {
|
|
41
|
+
const statePath = path.join(this.baseDir, entry.name, "run-state.json");
|
|
42
|
+
try {
|
|
43
|
+
await fs.promises.access(statePath);
|
|
44
|
+
runIds.push(entry.name);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Directory exists but no run-state.json — skip
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return runIds;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { WorkflowMeta } from "./types.js";
|
|
2
|
+
export interface ParsedScript {
|
|
3
|
+
meta: WorkflowMeta;
|
|
4
|
+
body: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ScriptValidationResult {
|
|
7
|
+
valid: boolean;
|
|
8
|
+
errors: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Validate a workflow script for banned patterns and required structure
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateScript(script: string): ScriptValidationResult;
|
|
14
|
+
/**
|
|
15
|
+
* Parse a workflow script into meta and body.
|
|
16
|
+
* Extracts the `export const meta = {...}` declaration and the rest of the script.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseScript(script: string): ParsedScript;
|
|
19
|
+
/**
|
|
20
|
+
* Execute a workflow script with the given API closures.
|
|
21
|
+
* The script body is wrapped in an async IIFE and executed via new Function().
|
|
22
|
+
*/
|
|
23
|
+
export declare function executeScript(script: string, apis: {
|
|
24
|
+
agent: (prompt: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
25
|
+
parallel: (thunks: Array<() => Promise<unknown>>) => Promise<unknown[]>;
|
|
26
|
+
pipeline: (items: unknown[], ...stages: Array<(prev: unknown, item: unknown, index: number) => Promise<unknown>>) => Promise<unknown[]>;
|
|
27
|
+
phase: (title: string) => void;
|
|
28
|
+
log: (message: string) => void;
|
|
29
|
+
args: unknown;
|
|
30
|
+
budget: unknown;
|
|
31
|
+
}, abortSignal?: AbortSignal): Promise<{
|
|
32
|
+
meta: WorkflowMeta;
|
|
33
|
+
result: unknown;
|
|
34
|
+
}>;
|
|
35
|
+
//# sourceMappingURL=scriptRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptRuntime.d.ts","sourceRoot":"","sources":["../../src/workflow/scriptRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+D/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAgBrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA4FxD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,QAAQ,EAAE,CACR,KAAK,EAAE,OAAO,EAAE,EAChB,GAAG,MAAM,EAAE,KAAK,CACd,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAClE,KACE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB,EACD,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CA4DlD"}
|