@agntk/core 0.3.0 → 0.3.1
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/dist/agent-v2.d.ts +48 -0
- package/dist/agent-v2.d.ts.map +1 -0
- package/dist/agent-v2.js +365 -0
- package/dist/agent-v2.js.map +1 -0
- package/dist/memory/engine.d.ts +130 -0
- package/dist/memory/engine.d.ts.map +1 -0
- package/dist/memory/engine.js +227 -0
- package/dist/memory/engine.js.map +1 -0
- package/dist/memory/vectra-store.d.ts +31 -0
- package/dist/memory/vectra-store.d.ts.map +1 -0
- package/dist/memory/vectra-store.js +122 -0
- package/dist/memory/vectra-store.js.map +1 -0
- package/dist/models.js +1 -1
- package/dist/models.js.map +1 -1
- package/dist/pool/index.d.ts +7 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +6 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/specialist-pool.d.ts +59 -0
- package/dist/pool/specialist-pool.d.ts.map +1 -0
- package/dist/pool/specialist-pool.js +224 -0
- package/dist/pool/specialist-pool.js.map +1 -0
- package/dist/pool/tools.d.ts +63 -0
- package/dist/pool/tools.d.ts.map +1 -0
- package/dist/pool/tools.js +83 -0
- package/dist/pool/tools.js.map +1 -0
- package/dist/pool/types.d.ts +79 -0
- package/dist/pool/types.d.ts.map +1 -0
- package/dist/pool/types.js +5 -0
- package/dist/pool/types.js.map +1 -0
- package/dist/presets/index.d.ts +5 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/role-registry.d.ts +41 -0
- package/dist/presets/role-registry.d.ts.map +1 -0
- package/dist/presets/role-registry.js +213 -0
- package/dist/presets/role-registry.js.map +1 -0
- package/dist/presets/roles.d.ts +105 -0
- package/dist/presets/roles.d.ts.map +1 -0
- package/dist/presets/roles.js +207 -0
- package/dist/presets/roles.js.map +1 -0
- package/dist/prompts/templates.d.ts +11 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +115 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/streaming/data-parts.d.ts +163 -0
- package/dist/streaming/data-parts.d.ts.map +1 -0
- package/dist/streaming/data-parts.js +14 -0
- package/dist/streaming/data-parts.js.map +1 -0
- package/dist/streaming/index.d.ts +8 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +10 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/transient.d.ts +136 -0
- package/dist/streaming/transient.d.ts.map +1 -0
- package/dist/streaming/transient.js +201 -0
- package/dist/streaming/transient.js.map +1 -0
- package/dist/tools/factory.d.ts +109 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +166 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/provider.d.ts +97 -0
- package/dist/tools/provider.d.ts.map +1 -0
- package/dist/tools/provider.js +178 -0
- package/dist/tools/provider.js.map +1 -0
- package/dist/types/agent-v2.d.ts +83 -0
- package/dist/types/agent-v2.d.ts.map +1 -0
- package/dist/types/agent-v2.js +8 -0
- package/dist/types/agent-v2.js.map +1 -0
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +149 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/workflow/builders/adapt.d.ts +20 -0
- package/dist/workflow/builders/adapt.d.ts.map +1 -0
- package/dist/workflow/builders/adapt.js +33 -0
- package/dist/workflow/builders/adapt.js.map +1 -0
- package/dist/workflow/builders/index.d.ts +8 -0
- package/dist/workflow/builders/index.d.ts.map +1 -0
- package/dist/workflow/builders/index.js +7 -0
- package/dist/workflow/builders/index.js.map +1 -0
- package/dist/workflow/builders/parallel.d.ts +25 -0
- package/dist/workflow/builders/parallel.d.ts.map +1 -0
- package/dist/workflow/builders/parallel.js +60 -0
- package/dist/workflow/builders/parallel.js.map +1 -0
- package/dist/workflow/builders/pipeline.d.ts +22 -0
- package/dist/workflow/builders/pipeline.d.ts.map +1 -0
- package/dist/workflow/builders/pipeline.js +48 -0
- package/dist/workflow/builders/pipeline.js.map +1 -0
- package/dist/workflow/builders/types.d.ts +54 -0
- package/dist/workflow/builders/types.d.ts.map +1 -0
- package/dist/workflow/builders/types.js +5 -0
- package/dist/workflow/builders/types.js.map +1 -0
- package/dist/workflow/durable-agent.d.ts +128 -0
- package/dist/workflow/durable-agent.d.ts.map +1 -0
- package/dist/workflow/durable-agent.js +323 -0
- package/dist/workflow/durable-agent.js.map +1 -0
- package/dist/workflow/schedulers.d.ts +231 -0
- package/dist/workflow/schedulers.d.ts.map +1 -0
- package/dist/workflow/schedulers.js +250 -0
- package/dist/workflow/schedulers.js.map +1 -0
- package/dist/workflow/team/create-team.d.ts +34 -0
- package/dist/workflow/team/create-team.d.ts.map +1 -0
- package/dist/workflow/team/create-team.js +242 -0
- package/dist/workflow/team/create-team.js.map +1 -0
- package/dist/workflow/team/index.d.ts +9 -0
- package/dist/workflow/team/index.d.ts.map +1 -0
- package/dist/workflow/team/index.js +8 -0
- package/dist/workflow/team/index.js.map +1 -0
- package/dist/workflow/team/machines.d.ts +152 -0
- package/dist/workflow/team/machines.d.ts.map +1 -0
- package/dist/workflow/team/machines.js +197 -0
- package/dist/workflow/team/machines.js.map +1 -0
- package/dist/workflow/team/task-board.d.ts +47 -0
- package/dist/workflow/team/task-board.d.ts.map +1 -0
- package/dist/workflow/team/task-board.js +111 -0
- package/dist/workflow/team/task-board.js.map +1 -0
- package/dist/workflow/team/tools.d.ts +66 -0
- package/dist/workflow/team/tools.d.ts.map +1 -0
- package/dist/workflow/team/tools.js +100 -0
- package/dist/workflow/team/tools.js.map +1 -0
- package/dist/workflow/team/types.d.ts +109 -0
- package/dist/workflow/team/types.d.ts.map +1 -0
- package/dist/workflow/team/types.js +5 -0
- package/dist/workflow/team/types.js.map +1 -0
- package/dist/workflow/templates.d.ts +71 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +132 -0
- package/dist/workflow/templates.js.map +1 -0
- package/package.json +13 -13
- package/LICENSE +0 -22
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Scheduled Workflows
|
|
3
|
+
*
|
|
4
|
+
* Implements recurring task execution using Workflow DevKit's `sleep()`.
|
|
5
|
+
* Each scheduled workflow is a durable loop: execute → sleep → repeat.
|
|
6
|
+
* Zero compute cost during sleep — the workflow runtime suspends the process.
|
|
7
|
+
*
|
|
8
|
+
* @see ADV-SCHEDULER-018
|
|
9
|
+
* @see https://useworkflow.dev
|
|
10
|
+
*/
|
|
11
|
+
import { parseDuration, formatDuration } from './utils.js';
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for a scheduled workflow.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The return type of the task function
|
|
16
|
+
*/
|
|
17
|
+
export interface ScheduledWorkflowConfig<T = void> {
|
|
18
|
+
/** Human-readable name for this schedule. */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Description of what the scheduled task does. */
|
|
21
|
+
description?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Interval between executions.
|
|
24
|
+
* Duration string (e.g., "1h", "1d", "7d").
|
|
25
|
+
*/
|
|
26
|
+
interval: string;
|
|
27
|
+
/**
|
|
28
|
+
* The task to execute on each tick.
|
|
29
|
+
* Receives the current iteration number (0-indexed) and returns a result.
|
|
30
|
+
*/
|
|
31
|
+
task: (iteration: number) => Promise<T> | T;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum number of iterations before the workflow stops.
|
|
34
|
+
* Omit or set to `Infinity` for an infinite loop.
|
|
35
|
+
* @default Infinity
|
|
36
|
+
*/
|
|
37
|
+
maxIterations?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to run the task immediately on start, or wait for the first interval.
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
42
|
+
immediate?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Called after each successful task execution.
|
|
45
|
+
*/
|
|
46
|
+
onTick?: (result: T, iteration: number) => void | Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Called when a task execution throws an error.
|
|
49
|
+
* Return `true` to continue the schedule despite the error (default).
|
|
50
|
+
* Return `false` to stop the schedule.
|
|
51
|
+
* @default continue
|
|
52
|
+
*/
|
|
53
|
+
onError?: (error: Error, iteration: number) => boolean | Promise<boolean>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A running scheduled workflow instance.
|
|
57
|
+
*
|
|
58
|
+
* @typeParam T - The return type of the task function
|
|
59
|
+
*/
|
|
60
|
+
export interface ScheduledWorkflow<T = void> {
|
|
61
|
+
/** The schedule configuration name. */
|
|
62
|
+
readonly name: string;
|
|
63
|
+
/** The schedule configuration description. */
|
|
64
|
+
readonly description?: string;
|
|
65
|
+
/** The interval between executions. */
|
|
66
|
+
readonly interval: string;
|
|
67
|
+
/**
|
|
68
|
+
* Start the schedule loop. Returns a promise that resolves
|
|
69
|
+
* when the schedule completes (hits maxIterations or is cancelled).
|
|
70
|
+
*/
|
|
71
|
+
start: () => Promise<ScheduleResult<T>>;
|
|
72
|
+
/**
|
|
73
|
+
* Cancel the schedule. The current sleep will be interrupted,
|
|
74
|
+
* and the loop will exit after the current tick completes.
|
|
75
|
+
*/
|
|
76
|
+
cancel: () => void;
|
|
77
|
+
/** Whether the schedule is currently running. */
|
|
78
|
+
readonly isRunning: boolean;
|
|
79
|
+
/** Number of completed iterations. */
|
|
80
|
+
readonly completedIterations: number;
|
|
81
|
+
/** Results from completed iterations. */
|
|
82
|
+
readonly results: ScheduleTickResult<T>[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Result from a single scheduled tick.
|
|
86
|
+
*/
|
|
87
|
+
export interface ScheduleTickResult<T = void> {
|
|
88
|
+
/** 0-indexed iteration number. */
|
|
89
|
+
iteration: number;
|
|
90
|
+
/** Whether the tick succeeded. */
|
|
91
|
+
success: boolean;
|
|
92
|
+
/** The result value (if success). */
|
|
93
|
+
result?: T;
|
|
94
|
+
/** The error message (if failed). */
|
|
95
|
+
error?: string;
|
|
96
|
+
/** Timestamp when the tick completed. */
|
|
97
|
+
completedAt: Date;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Final result from a completed schedule.
|
|
101
|
+
*/
|
|
102
|
+
export interface ScheduleResult<T = void> {
|
|
103
|
+
/** Schedule name. */
|
|
104
|
+
name: string;
|
|
105
|
+
/** Total completed iterations. */
|
|
106
|
+
totalIterations: number;
|
|
107
|
+
/** Whether the schedule was cancelled. */
|
|
108
|
+
cancelled: boolean;
|
|
109
|
+
/** All tick results. */
|
|
110
|
+
ticks: ScheduleTickResult<T>[];
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create a scheduled workflow that loops with durable sleep.
|
|
114
|
+
*
|
|
115
|
+
* The workflow executes a task, sleeps for the configured interval,
|
|
116
|
+
* and repeats. Under the Workflow runtime, sleep is zero-compute.
|
|
117
|
+
*
|
|
118
|
+
* @param config - Schedule configuration
|
|
119
|
+
* @returns A `ScheduledWorkflow` instance (call `.start()` to begin)
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const daily = createScheduledWorkflow({
|
|
124
|
+
* name: 'daily-briefing',
|
|
125
|
+
* interval: '1d',
|
|
126
|
+
* task: async (iteration) => {
|
|
127
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
128
|
+
* const result = await agent.generate({
|
|
129
|
+
* prompt: 'Generate a daily briefing summary.',
|
|
130
|
+
* });
|
|
131
|
+
* return result.text;
|
|
132
|
+
* },
|
|
133
|
+
* onTick: (text, i) => console.log(`Briefing #${i}:`, text),
|
|
134
|
+
* });
|
|
135
|
+
*
|
|
136
|
+
* await daily.start(); // Loops forever with 1d sleep between ticks
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export declare function createScheduledWorkflow<T = void>(config: ScheduledWorkflowConfig<T>): ScheduledWorkflow<T>;
|
|
140
|
+
/**
|
|
141
|
+
* Options for the daily briefing schedule preset.
|
|
142
|
+
*/
|
|
143
|
+
export interface DailyBriefingOptions {
|
|
144
|
+
/**
|
|
145
|
+
* The task that generates the briefing content.
|
|
146
|
+
* Receives the iteration number.
|
|
147
|
+
*/
|
|
148
|
+
generateBriefing: (iteration: number) => Promise<string>;
|
|
149
|
+
/**
|
|
150
|
+
* Called with each briefing (e.g., send email, post to Slack).
|
|
151
|
+
*/
|
|
152
|
+
deliver: (briefing: string, iteration: number) => void | Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Override the default interval. Default: "1d"
|
|
155
|
+
*/
|
|
156
|
+
interval?: string;
|
|
157
|
+
/**
|
|
158
|
+
* Maximum number of briefings. Default: Infinity
|
|
159
|
+
*/
|
|
160
|
+
maxIterations?: number;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Create a daily briefing scheduled workflow.
|
|
164
|
+
*
|
|
165
|
+
* Runs a briefing generation task once per day (configurable),
|
|
166
|
+
* delivering the result via a callback.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const briefing = createDailyBriefing({
|
|
171
|
+
* generateBriefing: async () => {
|
|
172
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
173
|
+
* const result = await agent.generate({
|
|
174
|
+
* prompt: 'Summarize today\'s calendar, emails, and tasks.',
|
|
175
|
+
* });
|
|
176
|
+
* return result.text;
|
|
177
|
+
* },
|
|
178
|
+
* deliver: (text) => sendSlackMessage('#daily', text),
|
|
179
|
+
* });
|
|
180
|
+
*
|
|
181
|
+
* await briefing.start();
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export declare function createDailyBriefing(options: DailyBriefingOptions): ScheduledWorkflow<string>;
|
|
185
|
+
/**
|
|
186
|
+
* Options for the weekly report schedule preset.
|
|
187
|
+
*/
|
|
188
|
+
export interface WeeklyReportOptions {
|
|
189
|
+
/**
|
|
190
|
+
* The task that generates the weekly report.
|
|
191
|
+
* Receives the iteration (week) number.
|
|
192
|
+
*/
|
|
193
|
+
generateReport: (week: number) => Promise<string>;
|
|
194
|
+
/**
|
|
195
|
+
* Called with each report (e.g., send email, save to file).
|
|
196
|
+
*/
|
|
197
|
+
deliver: (report: string, week: number) => void | Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Override the default interval. Default: "7d"
|
|
200
|
+
*/
|
|
201
|
+
interval?: string;
|
|
202
|
+
/**
|
|
203
|
+
* Maximum number of reports. Default: Infinity
|
|
204
|
+
*/
|
|
205
|
+
maxIterations?: number;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create a weekly report scheduled workflow.
|
|
209
|
+
*
|
|
210
|
+
* Runs a report generation task once per week (configurable),
|
|
211
|
+
* delivering the result via a callback.
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* const report = createWeeklyReport({
|
|
216
|
+
* generateReport: async (week) => {
|
|
217
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
218
|
+
* const result = await agent.generate({
|
|
219
|
+
* prompt: `Generate weekly report #${week + 1}.`,
|
|
220
|
+
* });
|
|
221
|
+
* return result.text;
|
|
222
|
+
* },
|
|
223
|
+
* deliver: (text) => sendEmail('team@company.com', 'Weekly Report', text),
|
|
224
|
+
* });
|
|
225
|
+
*
|
|
226
|
+
* await report.start();
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
export declare function createWeeklyReport(options: WeeklyReportOptions): ScheduledWorkflow<string>;
|
|
230
|
+
export { parseDuration, formatDuration };
|
|
231
|
+
//# sourceMappingURL=schedulers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.d.ts","sourceRoot":"","sources":["../../src/workflow/schedulers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Scheduled Workflows
|
|
3
|
+
*
|
|
4
|
+
* Implements recurring task execution using Workflow DevKit's `sleep()`.
|
|
5
|
+
* Each scheduled workflow is a durable loop: execute → sleep → repeat.
|
|
6
|
+
* Zero compute cost during sleep — the workflow runtime suspends the process.
|
|
7
|
+
*
|
|
8
|
+
* @see ADV-SCHEDULER-018
|
|
9
|
+
* @see https://useworkflow.dev
|
|
10
|
+
*/
|
|
11
|
+
import { createLogger } from '@agntk/logger';
|
|
12
|
+
import { sleep } from './hooks.js';
|
|
13
|
+
import { parseDuration, formatDuration } from './utils.js';
|
|
14
|
+
const log = createLogger('@agntk/core:workflow:scheduler');
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Scheduled Workflow Factory
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Create a scheduled workflow that loops with durable sleep.
|
|
20
|
+
*
|
|
21
|
+
* The workflow executes a task, sleeps for the configured interval,
|
|
22
|
+
* and repeats. Under the Workflow runtime, sleep is zero-compute.
|
|
23
|
+
*
|
|
24
|
+
* @param config - Schedule configuration
|
|
25
|
+
* @returns A `ScheduledWorkflow` instance (call `.start()` to begin)
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const daily = createScheduledWorkflow({
|
|
30
|
+
* name: 'daily-briefing',
|
|
31
|
+
* interval: '1d',
|
|
32
|
+
* task: async (iteration) => {
|
|
33
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
34
|
+
* const result = await agent.generate({
|
|
35
|
+
* prompt: 'Generate a daily briefing summary.',
|
|
36
|
+
* });
|
|
37
|
+
* return result.text;
|
|
38
|
+
* },
|
|
39
|
+
* onTick: (text, i) => console.log(`Briefing #${i}:`, text),
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* await daily.start(); // Loops forever with 1d sleep between ticks
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function createScheduledWorkflow(config) {
|
|
46
|
+
const { name, description, interval, task, maxIterations = Infinity, immediate = true, onTick, onError, } = config;
|
|
47
|
+
// Validate interval eagerly
|
|
48
|
+
const intervalMs = parseDuration(interval);
|
|
49
|
+
let _running = false;
|
|
50
|
+
let _cancelled = false;
|
|
51
|
+
let _iteration = 0;
|
|
52
|
+
const _results = [];
|
|
53
|
+
log.info('Scheduled workflow created', {
|
|
54
|
+
name,
|
|
55
|
+
interval,
|
|
56
|
+
intervalMs,
|
|
57
|
+
maxIterations: maxIterations === Infinity ? 'infinite' : maxIterations,
|
|
58
|
+
immediate,
|
|
59
|
+
});
|
|
60
|
+
async function executeTick(iteration) {
|
|
61
|
+
log.debug('Executing tick', { name, iteration });
|
|
62
|
+
try {
|
|
63
|
+
const result = await task(iteration);
|
|
64
|
+
const tickResult = {
|
|
65
|
+
iteration,
|
|
66
|
+
success: true,
|
|
67
|
+
result,
|
|
68
|
+
completedAt: new Date(),
|
|
69
|
+
};
|
|
70
|
+
if (onTick) {
|
|
71
|
+
await onTick(result, iteration);
|
|
72
|
+
}
|
|
73
|
+
log.info('Tick completed', { name, iteration });
|
|
74
|
+
return tickResult;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
78
|
+
log.error('Tick failed', { name, iteration, error: error.message });
|
|
79
|
+
const tickResult = {
|
|
80
|
+
iteration,
|
|
81
|
+
success: false,
|
|
82
|
+
error: error.message,
|
|
83
|
+
completedAt: new Date(),
|
|
84
|
+
};
|
|
85
|
+
if (onError) {
|
|
86
|
+
const shouldContinue = await onError(error, iteration);
|
|
87
|
+
if (!shouldContinue) {
|
|
88
|
+
log.info('onError returned false — stopping schedule', { name });
|
|
89
|
+
_cancelled = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return tickResult;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function start() {
|
|
96
|
+
if (_running) {
|
|
97
|
+
throw new Error(`Schedule "${name}" is already running`);
|
|
98
|
+
}
|
|
99
|
+
_running = true;
|
|
100
|
+
_cancelled = false;
|
|
101
|
+
_iteration = 0;
|
|
102
|
+
_results.length = 0;
|
|
103
|
+
log.info('Schedule started', { name, interval, maxIterations: maxIterations === Infinity ? 'infinite' : maxIterations });
|
|
104
|
+
try {
|
|
105
|
+
while (_iteration < maxIterations && !_cancelled) {
|
|
106
|
+
// Sleep before first tick if not immediate
|
|
107
|
+
if (_iteration === 0 && !immediate) {
|
|
108
|
+
log.debug('Waiting for first interval before executing', { name, interval });
|
|
109
|
+
await sleep(interval, { reason: `${name}: waiting for first interval` });
|
|
110
|
+
if (_cancelled)
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
// Execute the tick
|
|
114
|
+
const tickResult = await executeTick(_iteration);
|
|
115
|
+
_results.push(tickResult);
|
|
116
|
+
_iteration++;
|
|
117
|
+
if (_cancelled)
|
|
118
|
+
break;
|
|
119
|
+
// Sleep between iterations (skip after last)
|
|
120
|
+
if (_iteration < maxIterations) {
|
|
121
|
+
log.debug('Sleeping between ticks', {
|
|
122
|
+
name,
|
|
123
|
+
iteration: _iteration,
|
|
124
|
+
interval,
|
|
125
|
+
intervalMs,
|
|
126
|
+
});
|
|
127
|
+
await sleep(interval, {
|
|
128
|
+
reason: `${name}: interval sleep (iteration ${_iteration})`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
_running = false;
|
|
135
|
+
}
|
|
136
|
+
const result = {
|
|
137
|
+
name,
|
|
138
|
+
totalIterations: _results.length,
|
|
139
|
+
cancelled: _cancelled,
|
|
140
|
+
ticks: [..._results],
|
|
141
|
+
};
|
|
142
|
+
log.info('Schedule completed', {
|
|
143
|
+
name,
|
|
144
|
+
totalIterations: result.totalIterations,
|
|
145
|
+
cancelled: result.cancelled,
|
|
146
|
+
});
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
function cancel() {
|
|
150
|
+
if (!_running) {
|
|
151
|
+
log.warn('cancel() called but schedule is not running', { name });
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
log.info('Schedule cancelled', { name, iteration: _iteration });
|
|
155
|
+
_cancelled = true;
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
name,
|
|
159
|
+
description,
|
|
160
|
+
interval,
|
|
161
|
+
start,
|
|
162
|
+
cancel,
|
|
163
|
+
get isRunning() {
|
|
164
|
+
return _running;
|
|
165
|
+
},
|
|
166
|
+
get completedIterations() {
|
|
167
|
+
return _results.length;
|
|
168
|
+
},
|
|
169
|
+
get results() {
|
|
170
|
+
return [..._results];
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create a daily briefing scheduled workflow.
|
|
176
|
+
*
|
|
177
|
+
* Runs a briefing generation task once per day (configurable),
|
|
178
|
+
* delivering the result via a callback.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* const briefing = createDailyBriefing({
|
|
183
|
+
* generateBriefing: async () => {
|
|
184
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
185
|
+
* const result = await agent.generate({
|
|
186
|
+
* prompt: 'Summarize today\'s calendar, emails, and tasks.',
|
|
187
|
+
* });
|
|
188
|
+
* return result.text;
|
|
189
|
+
* },
|
|
190
|
+
* deliver: (text) => sendSlackMessage('#daily', text),
|
|
191
|
+
* });
|
|
192
|
+
*
|
|
193
|
+
* await briefing.start();
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
export function createDailyBriefing(options) {
|
|
197
|
+
const { generateBriefing, deliver, interval = '1d', maxIterations, } = options;
|
|
198
|
+
return createScheduledWorkflow({
|
|
199
|
+
name: 'daily-briefing',
|
|
200
|
+
description: 'Generate and deliver a daily briefing summary',
|
|
201
|
+
interval,
|
|
202
|
+
maxIterations,
|
|
203
|
+
task: generateBriefing,
|
|
204
|
+
onTick: deliver,
|
|
205
|
+
onError: async (error, iteration) => {
|
|
206
|
+
log.error('Daily briefing failed', { iteration, error: error.message });
|
|
207
|
+
return true; // Continue schedule despite error
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Create a weekly report scheduled workflow.
|
|
213
|
+
*
|
|
214
|
+
* Runs a report generation task once per week (configurable),
|
|
215
|
+
* delivering the result via a callback.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const report = createWeeklyReport({
|
|
220
|
+
* generateReport: async (week) => {
|
|
221
|
+
* const agent = createAgent({ role: 'analyst' });
|
|
222
|
+
* const result = await agent.generate({
|
|
223
|
+
* prompt: `Generate weekly report #${week + 1}.`,
|
|
224
|
+
* });
|
|
225
|
+
* return result.text;
|
|
226
|
+
* },
|
|
227
|
+
* deliver: (text) => sendEmail('team@company.com', 'Weekly Report', text),
|
|
228
|
+
* });
|
|
229
|
+
*
|
|
230
|
+
* await report.start();
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
export function createWeeklyReport(options) {
|
|
234
|
+
const { generateReport, deliver, interval = '7d', maxIterations, } = options;
|
|
235
|
+
return createScheduledWorkflow({
|
|
236
|
+
name: 'weekly-report',
|
|
237
|
+
description: 'Generate and deliver a weekly report',
|
|
238
|
+
interval,
|
|
239
|
+
maxIterations,
|
|
240
|
+
task: generateReport,
|
|
241
|
+
onTick: deliver,
|
|
242
|
+
onError: async (error, iteration) => {
|
|
243
|
+
log.error('Weekly report failed', { week: iteration, error: error.message });
|
|
244
|
+
return true; // Continue schedule despite error
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
// Re-export used helpers for convenience
|
|
249
|
+
export { parseDuration, formatDuration };
|
|
250
|
+
//# sourceMappingURL=schedulers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.js","sourceRoot":"","sources":["../../src/workflow/schedulers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,GAAG,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAmI3D,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAkC;IAElC,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,aAAa,GAAG,QAAQ,EACxB,SAAS,GAAG,IAAI,EAChB,MAAM,EACN,OAAO,GACR,GAAG,MAAM,CAAC;IAEX,4BAA4B;IAC5B,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;QACrC,IAAI;QACJ,QAAQ;QACR,UAAU;QACV,aAAa,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;QACtE,SAAS;KACV,CAAC,CAAC;IAEH,KAAK,UAAU,WAAW,CAAC,SAAiB;QAC1C,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YAErC,MAAM,UAAU,GAA0B;gBACxC,SAAS;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClC,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEpE,MAAM,UAAU,GAA0B;gBACxC,SAAS;gBACT,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,GAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjE,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,sBAAsB,CAAC,CAAC;QAC3D,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,GAAG,KAAK,CAAC;QACnB,UAAU,GAAG,CAAC,CAAC;QACf,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEpB,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAEzH,IAAI,CAAC;YACH,OAAO,UAAU,GAAG,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjD,2CAA2C;gBAC3C,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnC,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC7E,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,8BAA8B,EAAE,CAAC,CAAC;oBAEzE,IAAI,UAAU;wBAAE,MAAM;gBACxB,CAAC;gBAED,mBAAmB;gBACnB,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,UAAU,EAAE,CAAC;gBAEb,IAAI,UAAU;oBAAE,MAAM;gBAEtB,6CAA6C;gBAC7C,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;oBAC/B,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE;wBAClC,IAAI;wBACJ,SAAS,EAAE,UAAU;wBACrB,QAAQ;wBACR,UAAU;qBACX,CAAC,CAAC;oBAEH,MAAM,KAAK,CAAC,QAAQ,EAAE;wBACpB,MAAM,EAAE,GAAG,IAAI,+BAA+B,UAAU,GAAG;qBAC5D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAsB;YAChC,IAAI;YACJ,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC;SACrB,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI;YACJ,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,MAAM;QACb,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,KAAK;QACL,MAAM;QAEN,IAAI,SAAS;YACX,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,mBAAmB;YACrB,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,IAAI,OAAO;YACT,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAgCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA6B;IAE7B,MAAM,EACJ,gBAAgB,EAChB,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,aAAa,GACd,GAAG,OAAO,CAAC;IAEZ,OAAO,uBAAuB,CAAS;QACrC,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,+CAA+C;QAC5D,QAAQ;QACR,aAAa;QACb,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAClC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,CAAC,kCAAkC;QACjD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA4BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA4B;IAE5B,MAAM,EACJ,cAAc,EACd,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,aAAa,GACd,GAAG,OAAO,CAAC;IAEZ,OAAO,uBAAuB,CAAS;QACrC,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sCAAsC;QACnD,QAAQ;QACR,aAAa;QACb,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAClC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,CAAC,kCAAkC;QACjD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview createTeam — public API for team coordination.
|
|
3
|
+
*
|
|
4
|
+
* Creates a Team that satisfies the Workflow interface, enabling
|
|
5
|
+
* composition with createPipeline and createParallel.
|
|
6
|
+
*/
|
|
7
|
+
import type { TeamConfig, Team } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a team of agents that coordinate via messaging, claim tasks
|
|
10
|
+
* from a shared board, and produce synthesized results.
|
|
11
|
+
*
|
|
12
|
+
* Satisfies the Workflow interface so it can be used inside createPipeline
|
|
13
|
+
* or createParallel.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const team = createTeam({
|
|
18
|
+
* name: 'research-team',
|
|
19
|
+
* lead: { name: 'lead', agent: leadAgent },
|
|
20
|
+
* members: [
|
|
21
|
+
* { name: 'researcher', agent: researchAgent },
|
|
22
|
+
* { name: 'writer', agent: writerAgent },
|
|
23
|
+
* ],
|
|
24
|
+
* tasks: [
|
|
25
|
+
* { id: 'research', description: 'Research the topic' },
|
|
26
|
+
* { id: 'write', description: 'Write the report', dependsOn: ['research'] },
|
|
27
|
+
* ],
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* const result = await team.execute({ prompt: 'quantum computing' });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function createTeam(config: TeamConfig): Team;
|
|
34
|
+
//# sourceMappingURL=create-team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-team.d.ts","sourceRoot":"","sources":["../../../src/workflow/team/create-team.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,UAAU,EAEV,IAAI,EAOL,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CA4JnD"}
|