@dotsetlabs/dotclaw 2.0.0 → 2.2.0
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/.env.example +12 -0
- package/README.md +7 -6
- package/config-examples/runtime.json +56 -121
- package/config-examples/tool-budgets.json +1 -1
- package/config-examples/tool-policy.json +3 -16
- package/container/Dockerfile +5 -1
- package/container/agent-runner/package.json +1 -1
- package/container/agent-runner/src/agent-config.ts +71 -55
- package/container/agent-runner/src/container-protocol.ts +9 -10
- package/container/agent-runner/src/daemon.ts +18 -5
- package/container/agent-runner/src/index.ts +567 -637
- package/container/agent-runner/src/ipc.ts +67 -54
- package/container/agent-runner/src/mcp-registry.ts +11 -0
- package/container/agent-runner/src/memory.ts +139 -1
- package/container/agent-runner/src/process-registry.ts +257 -0
- package/container/agent-runner/src/system-prompt.ts +311 -0
- package/container/agent-runner/src/tools.ts +379 -284
- package/container/agent-runner/src/tts.ts +42 -0
- package/dist/agent-context.d.ts +1 -0
- package/dist/agent-context.d.ts.map +1 -1
- package/dist/agent-context.js +6 -3
- package/dist/agent-context.js.map +1 -1
- package/dist/agent-execution.d.ts +5 -10
- package/dist/agent-execution.d.ts.map +1 -1
- package/dist/agent-execution.js +25 -26
- package/dist/agent-execution.js.map +1 -1
- package/dist/config.d.ts +1 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -2
- package/dist/config.js.map +1 -1
- package/dist/container-protocol.d.ts +11 -10
- package/dist/container-protocol.d.ts.map +1 -1
- package/dist/container-runner.d.ts.map +1 -1
- package/dist/container-runner.js +44 -8
- package/dist/container-runner.js.map +1 -1
- package/dist/dashboard.d.ts +0 -6
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +1 -55
- package/dist/dashboard.js.map +1 -1
- package/dist/db.d.ts +1 -46
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +0 -192
- package/dist/db.js.map +1 -1
- package/dist/error-messages.d.ts.map +1 -1
- package/dist/error-messages.js +5 -1
- package/dist/error-messages.js.map +1 -1
- package/dist/index.js +58 -57
- package/dist/index.js.map +1 -1
- package/dist/ipc-dispatcher.d.ts.map +1 -1
- package/dist/ipc-dispatcher.js +330 -183
- package/dist/ipc-dispatcher.js.map +1 -1
- package/dist/maintenance.d.ts.map +1 -1
- package/dist/maintenance.js +3 -13
- package/dist/maintenance.js.map +1 -1
- package/dist/memory-recall.d.ts +1 -0
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +3 -0
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/memory-store.js +5 -3
- package/dist/memory-store.js.map +1 -1
- package/dist/message-pipeline.d.ts +1 -1
- package/dist/message-pipeline.d.ts.map +1 -1
- package/dist/message-pipeline.js +171 -374
- package/dist/message-pipeline.js.map +1 -1
- package/dist/metrics.d.ts +0 -3
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +2 -33
- package/dist/metrics.js.map +1 -1
- package/dist/model-registry.d.ts +15 -0
- package/dist/model-registry.d.ts.map +1 -1
- package/dist/model-registry.js +56 -12
- package/dist/model-registry.js.map +1 -1
- package/dist/providers/discord/discord-provider.d.ts.map +1 -1
- package/dist/providers/discord/discord-provider.js +6 -3
- package/dist/providers/discord/discord-provider.js.map +1 -1
- package/dist/providers/telegram/telegram-provider.d.ts +1 -0
- package/dist/providers/telegram/telegram-provider.d.ts.map +1 -1
- package/dist/providers/telegram/telegram-provider.js +14 -0
- package/dist/providers/telegram/telegram-provider.js.map +1 -1
- package/dist/request-router.d.ts +8 -31
- package/dist/request-router.d.ts.map +1 -1
- package/dist/request-router.js +24 -128
- package/dist/request-router.js.map +1 -1
- package/dist/runtime-config.d.ts +29 -101
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +96 -170
- package/dist/runtime-config.js.map +1 -1
- package/dist/streaming.d.ts +58 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +196 -0
- package/dist/streaming.js.map +1 -0
- package/dist/task-scheduler.d.ts.map +1 -1
- package/dist/task-scheduler.js +10 -50
- package/dist/task-scheduler.js.map +1 -1
- package/dist/tool-budgets.js +1 -1
- package/dist/tool-budgets.js.map +1 -1
- package/dist/tool-policy.js +13 -13
- package/dist/tool-policy.js.map +1 -1
- package/dist/types.d.ts +0 -41
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook.d.ts +14 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +169 -0
- package/dist/webhook.js.map +1 -0
- package/package.json +3 -3
- package/scripts/configure.js +81 -0
- package/scripts/install.sh +1 -1
- package/config-examples/plugin-http.json +0 -18
- package/container/skills/agent-browser.md +0 -159
- package/dist/background-job-classifier.d.ts +0 -20
- package/dist/background-job-classifier.d.ts.map +0 -1
- package/dist/background-job-classifier.js +0 -145
- package/dist/background-job-classifier.js.map +0 -1
- package/dist/background-jobs.d.ts +0 -56
- package/dist/background-jobs.d.ts.map +0 -1
- package/dist/background-jobs.js +0 -559
- package/dist/background-jobs.js.map +0 -1
- package/dist/orchestration.d.ts +0 -39
- package/dist/orchestration.d.ts.map +0 -1
- package/dist/orchestration.js +0 -136
- package/dist/orchestration.js.map +0 -1
- package/dist/planner-probe.d.ts +0 -14
- package/dist/planner-probe.d.ts.map +0 -1
- package/dist/planner-probe.js +0 -97
- package/dist/planner-probe.js.map +0 -1
- package/dist/tool-intent-probe.d.ts +0 -11
- package/dist/tool-intent-probe.d.ts.map +0 -1
- package/dist/tool-intent-probe.js +0 -63
- package/dist/tool-intent-probe.js.map +0 -1
- package/dist/workflow-engine.d.ts +0 -51
- package/dist/workflow-engine.d.ts.map +0 -1
- package/dist/workflow-engine.js +0 -281
- package/dist/workflow-engine.js.map +0 -1
- package/dist/workflow-store.d.ts +0 -39
- package/dist/workflow-store.d.ts.map +0 -1
- package/dist/workflow-store.js +0 -173
- package/dist/workflow-store.js.map +0 -1
package/dist/workflow-engine.js
DELETED
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Declarative YAML/JSON multi-step workflow engine.
|
|
3
|
-
* Supports state persistence, conditional execution, dependency checking, and retry.
|
|
4
|
-
* Steps execute sequentially; use the orchestration module for parallel fan-out.
|
|
5
|
-
*/
|
|
6
|
-
import fs from 'fs';
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import yaml from 'js-yaml';
|
|
9
|
-
import { GROUPS_DIR, CONTAINER_TIMEOUT } from './config.js';
|
|
10
|
-
import { generateId } from './id.js';
|
|
11
|
-
import { executeAgentRun } from './agent-execution.js';
|
|
12
|
-
import { emitHook } from './hooks.js';
|
|
13
|
-
import { logger } from './logger.js';
|
|
14
|
-
import { createWorkflowRun, updateWorkflowRun, getWorkflowRun, listWorkflowRunsByGroup, upsertStepResult, getStepResults } from './workflow-store.js';
|
|
15
|
-
// Active workflow run cancellation
|
|
16
|
-
const cancelledRuns = new Set();
|
|
17
|
-
function loadWorkflowDefinition(name, groupFolder) {
|
|
18
|
-
const workflowsDir = path.join(GROUPS_DIR, groupFolder, 'workflows');
|
|
19
|
-
const yamlPath = path.join(workflowsDir, `${name}.yml`);
|
|
20
|
-
const jsonPath = path.join(workflowsDir, `${name}.json`);
|
|
21
|
-
let raw;
|
|
22
|
-
if (fs.existsSync(jsonPath)) {
|
|
23
|
-
raw = fs.readFileSync(jsonPath, 'utf-8');
|
|
24
|
-
}
|
|
25
|
-
else if (fs.existsSync(yamlPath)) {
|
|
26
|
-
// Simple YAML parser for basic structures
|
|
27
|
-
raw = fs.readFileSync(yamlPath, 'utf-8');
|
|
28
|
-
return parseYamlWorkflow(raw);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
return JSON.parse(raw);
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export function parseYamlWorkflow(raw) {
|
|
41
|
-
try {
|
|
42
|
-
const parsed = yaml.load(raw);
|
|
43
|
-
if (!parsed || typeof parsed !== 'object')
|
|
44
|
-
return null;
|
|
45
|
-
const name = typeof parsed.name === 'string' ? parsed.name : '';
|
|
46
|
-
if (!name)
|
|
47
|
-
return null;
|
|
48
|
-
const rawSteps = Array.isArray(parsed.steps) ? parsed.steps : [];
|
|
49
|
-
if (rawSteps.length === 0)
|
|
50
|
-
return null;
|
|
51
|
-
const steps = rawSteps.map((s) => {
|
|
52
|
-
const step = {
|
|
53
|
-
name: String(s.name || ''),
|
|
54
|
-
prompt: String(s.prompt || '')
|
|
55
|
-
};
|
|
56
|
-
if (Array.isArray(s.depends_on))
|
|
57
|
-
step.depends_on = s.depends_on.map(String);
|
|
58
|
-
if (Array.isArray(s.tools))
|
|
59
|
-
step.tools = s.tools.map(String);
|
|
60
|
-
if (typeof s.timeout_ms === 'number')
|
|
61
|
-
step.timeout_ms = s.timeout_ms;
|
|
62
|
-
if (typeof s.condition === 'string')
|
|
63
|
-
step.condition = s.condition;
|
|
64
|
-
if (typeof s.model_override === 'string')
|
|
65
|
-
step.model_override = s.model_override;
|
|
66
|
-
return step;
|
|
67
|
-
});
|
|
68
|
-
const result = { name, steps };
|
|
69
|
-
if (parsed.trigger && typeof parsed.trigger === 'object') {
|
|
70
|
-
const t = parsed.trigger;
|
|
71
|
-
result.trigger = {};
|
|
72
|
-
if (typeof t.schedule === 'string')
|
|
73
|
-
result.trigger.schedule = t.schedule;
|
|
74
|
-
if (typeof t.timezone === 'string')
|
|
75
|
-
result.trigger.timezone = t.timezone;
|
|
76
|
-
if (typeof t.pattern === 'string')
|
|
77
|
-
result.trigger.pattern = t.pattern;
|
|
78
|
-
}
|
|
79
|
-
if (parsed.on_error && typeof parsed.on_error === 'object') {
|
|
80
|
-
const e = parsed.on_error;
|
|
81
|
-
result.on_error = {};
|
|
82
|
-
if (typeof e.notify === 'boolean')
|
|
83
|
-
result.on_error.notify = e.notify;
|
|
84
|
-
if (typeof e.retry === 'number')
|
|
85
|
-
result.on_error.retry = e.retry;
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Evaluate a simple condition string against step results.
|
|
95
|
-
* Supports: "steps.<name>.result == '<value>'" and "steps.<name>.result != '<value>'"
|
|
96
|
-
* Also supports bare truthiness: "steps.<name>.result" (truthy if non-null/non-empty)
|
|
97
|
-
*/
|
|
98
|
-
function evaluateCondition(condition, stepResults) {
|
|
99
|
-
// Match: steps.<name>.result == '<value>' or steps.<name>.result != '<value>'
|
|
100
|
-
const comparisonMatch = condition.match(/^steps\.([a-zA-Z0-9_-]+)\.result\s*(==|!=)\s*['"](.*)['"]$/);
|
|
101
|
-
if (comparisonMatch) {
|
|
102
|
-
const [, stepName, operator, value] = comparisonMatch;
|
|
103
|
-
const result = stepResults[stepName] ?? '';
|
|
104
|
-
return operator === '==' ? result === value : result !== value;
|
|
105
|
-
}
|
|
106
|
-
// Bare truthiness: steps.<name>.result
|
|
107
|
-
const truthyMatch = condition.match(/^steps\.([a-zA-Z0-9_-]+)\.result$/);
|
|
108
|
-
if (truthyMatch) {
|
|
109
|
-
const result = stepResults[truthyMatch[1]];
|
|
110
|
-
return result !== null && result !== undefined && result.trim() !== '';
|
|
111
|
-
}
|
|
112
|
-
// Unknown condition format — default to true (don't skip)
|
|
113
|
-
logger.warn({ condition }, 'Unknown workflow condition format; defaulting to true');
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
function interpolateStepPrompt(prompt, stepResults) {
|
|
117
|
-
return prompt.replace(/\{\{steps\.([a-zA-Z0-9_-]+)\.result\}\}/g, (_match, stepName) => {
|
|
118
|
-
return stepResults[stepName] || '[no result]';
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
export async function startWorkflowRun(name, groupFolder, chatJid, params, deps) {
|
|
122
|
-
const workflow = loadWorkflowDefinition(name, groupFolder);
|
|
123
|
-
if (!workflow) {
|
|
124
|
-
return { ok: false, error: `Workflow "${name}" not found in ${groupFolder}/workflows/` };
|
|
125
|
-
}
|
|
126
|
-
const runId = generateId('wf');
|
|
127
|
-
const now = new Date().toISOString();
|
|
128
|
-
createWorkflowRun({
|
|
129
|
-
id: runId,
|
|
130
|
-
workflow_name: name,
|
|
131
|
-
group_folder: groupFolder,
|
|
132
|
-
chat_jid: chatJid,
|
|
133
|
-
status: 'running',
|
|
134
|
-
current_step: null,
|
|
135
|
-
state_json: params ? JSON.stringify(params) : null,
|
|
136
|
-
params_json: params ? JSON.stringify(params) : null,
|
|
137
|
-
created_at: now,
|
|
138
|
-
updated_at: now
|
|
139
|
-
});
|
|
140
|
-
// Run the workflow asynchronously
|
|
141
|
-
executeWorkflow(runId, workflow, groupFolder, chatJid, deps).catch(err => {
|
|
142
|
-
logger.error({ runId, error: err instanceof Error ? err.message : String(err) }, 'Workflow execution failed');
|
|
143
|
-
updateWorkflowRun(runId, {
|
|
144
|
-
status: 'failed',
|
|
145
|
-
finished_at: new Date().toISOString(),
|
|
146
|
-
error: err instanceof Error ? err.message : String(err)
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
return { ok: true, run_id: runId };
|
|
150
|
-
}
|
|
151
|
-
async function executeWorkflow(runId, workflow, groupFolder, chatJid, deps) {
|
|
152
|
-
const stepResults = {};
|
|
153
|
-
const maxRetries = workflow.on_error?.retry || 0;
|
|
154
|
-
for (const step of workflow.steps) {
|
|
155
|
-
if (cancelledRuns.has(runId)) {
|
|
156
|
-
cancelledRuns.delete(runId);
|
|
157
|
-
updateWorkflowRun(runId, { status: 'canceled', finished_at: new Date().toISOString() });
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
// Check dependencies
|
|
161
|
-
if (step.depends_on && step.depends_on.length > 0) {
|
|
162
|
-
const existingResults = getStepResults(runId);
|
|
163
|
-
const completedSteps = new Set(existingResults.filter(r => r.status === 'completed').map(r => r.step_name));
|
|
164
|
-
const unmet = step.depends_on.filter(dep => !completedSteps.has(dep));
|
|
165
|
-
if (unmet.length > 0) {
|
|
166
|
-
const failedDeps = existingResults.filter(r => step.depends_on.includes(r.step_name) && r.status === 'failed');
|
|
167
|
-
if (failedDeps.length > 0) {
|
|
168
|
-
upsertStepResult(runId, step.name, {
|
|
169
|
-
status: 'skipped',
|
|
170
|
-
error: `Dependency failed: ${failedDeps.map(d => d.step_name).join(', ')}`
|
|
171
|
-
});
|
|
172
|
-
stepResults[step.name] = null;
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Evaluate step condition: simple "steps.<name>.result == 'value'" checks
|
|
178
|
-
if (step.condition) {
|
|
179
|
-
const skip = !evaluateCondition(step.condition, stepResults);
|
|
180
|
-
if (skip) {
|
|
181
|
-
upsertStepResult(runId, step.name, {
|
|
182
|
-
status: 'skipped',
|
|
183
|
-
error: `Condition not met: ${step.condition}`
|
|
184
|
-
});
|
|
185
|
-
stepResults[step.name] = null;
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
updateWorkflowRun(runId, { current_step: step.name });
|
|
190
|
-
upsertStepResult(runId, step.name, { status: 'running', started_at: new Date().toISOString() });
|
|
191
|
-
// Execute step with retries
|
|
192
|
-
let stepResult = null;
|
|
193
|
-
let stepError = null;
|
|
194
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
195
|
-
try {
|
|
196
|
-
const groups = deps.registeredGroups();
|
|
197
|
-
const group = Object.values(groups).find(g => g.folder === groupFolder);
|
|
198
|
-
if (!group)
|
|
199
|
-
throw new Error(`Group not found: ${groupFolder}`);
|
|
200
|
-
const prompt = interpolateStepPrompt(step.prompt, stepResults);
|
|
201
|
-
const { output } = await executeAgentRun({
|
|
202
|
-
group,
|
|
203
|
-
prompt,
|
|
204
|
-
chatJid,
|
|
205
|
-
recallQuery: '',
|
|
206
|
-
recallMaxResults: 0,
|
|
207
|
-
recallMaxTokens: 0,
|
|
208
|
-
useSemaphore: true,
|
|
209
|
-
useGroupLock: true,
|
|
210
|
-
modelOverride: step.model_override,
|
|
211
|
-
toolAllow: step.tools,
|
|
212
|
-
timeoutMs: step.timeout_ms || CONTAINER_TIMEOUT,
|
|
213
|
-
disableMemoryExtraction: true
|
|
214
|
-
});
|
|
215
|
-
stepResult = output.result;
|
|
216
|
-
stepError = null;
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
catch (err) {
|
|
220
|
-
stepError = err instanceof Error ? err.message : String(err);
|
|
221
|
-
if (attempt < maxRetries) {
|
|
222
|
-
logger.warn({ runId, step: step.name, attempt, error: stepError }, 'Workflow step failed, retrying');
|
|
223
|
-
await new Promise(r => setTimeout(r, 2000 * Math.pow(2, attempt)));
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
stepResults[step.name] = stepResult;
|
|
228
|
-
if (stepError) {
|
|
229
|
-
upsertStepResult(runId, step.name, {
|
|
230
|
-
status: 'failed',
|
|
231
|
-
error: stepError,
|
|
232
|
-
finished_at: new Date().toISOString()
|
|
233
|
-
});
|
|
234
|
-
if (workflow.on_error?.notify) {
|
|
235
|
-
void emitHook('task:completed', {
|
|
236
|
-
workflow_run_id: runId,
|
|
237
|
-
step: step.name,
|
|
238
|
-
status: 'failed',
|
|
239
|
-
error: stepError
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
updateWorkflowRun(runId, {
|
|
243
|
-
status: 'failed',
|
|
244
|
-
finished_at: new Date().toISOString(),
|
|
245
|
-
error: `Step "${step.name}" failed: ${stepError}`
|
|
246
|
-
});
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
upsertStepResult(runId, step.name, {
|
|
250
|
-
status: 'completed',
|
|
251
|
-
result: stepResult,
|
|
252
|
-
finished_at: new Date().toISOString()
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
updateWorkflowRun(runId, {
|
|
256
|
-
status: 'completed',
|
|
257
|
-
finished_at: new Date().toISOString(),
|
|
258
|
-
state_json: JSON.stringify(stepResults)
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
export function getWorkflowRunStatus(runId) {
|
|
262
|
-
const run = getWorkflowRun(runId);
|
|
263
|
-
if (!run)
|
|
264
|
-
return null;
|
|
265
|
-
const steps = getStepResults(runId);
|
|
266
|
-
return { run, steps };
|
|
267
|
-
}
|
|
268
|
-
export function cancelWorkflowRun(runId) {
|
|
269
|
-
const run = getWorkflowRun(runId);
|
|
270
|
-
if (!run)
|
|
271
|
-
return false;
|
|
272
|
-
if (run.status !== 'running')
|
|
273
|
-
return false;
|
|
274
|
-
cancelledRuns.add(runId);
|
|
275
|
-
updateWorkflowRun(runId, { status: 'canceled', finished_at: new Date().toISOString() });
|
|
276
|
-
return true;
|
|
277
|
-
}
|
|
278
|
-
export function listWorkflowRuns(groupFolder, options) {
|
|
279
|
-
return listWorkflowRunsByGroup(groupFolder, options);
|
|
280
|
-
}
|
|
281
|
-
//# sourceMappingURL=workflow-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../src/workflow-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow-store.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SQLite-backed workflow state persistence.
|
|
3
|
-
*/
|
|
4
|
-
export interface WorkflowRun {
|
|
5
|
-
id: string;
|
|
6
|
-
workflow_name: string;
|
|
7
|
-
group_folder: string;
|
|
8
|
-
chat_jid: string;
|
|
9
|
-
status: 'pending' | 'running' | 'completed' | 'failed' | 'canceled';
|
|
10
|
-
current_step: string | null;
|
|
11
|
-
state_json: string | null;
|
|
12
|
-
params_json: string | null;
|
|
13
|
-
created_at: string;
|
|
14
|
-
updated_at: string;
|
|
15
|
-
finished_at: string | null;
|
|
16
|
-
error: string | null;
|
|
17
|
-
}
|
|
18
|
-
export interface WorkflowStepResult {
|
|
19
|
-
id: number;
|
|
20
|
-
run_id: string;
|
|
21
|
-
step_name: string;
|
|
22
|
-
status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
23
|
-
result: string | null;
|
|
24
|
-
error: string | null;
|
|
25
|
-
started_at: string | null;
|
|
26
|
-
finished_at: string | null;
|
|
27
|
-
}
|
|
28
|
-
export declare function createWorkflowRun(run: Omit<WorkflowRun, 'finished_at' | 'error'>): void;
|
|
29
|
-
export declare function updateWorkflowRun(id: string, updates: Partial<WorkflowRun>): void;
|
|
30
|
-
export declare function getWorkflowRun(id: string): WorkflowRun | undefined;
|
|
31
|
-
export declare function listWorkflowRunsByGroup(groupFolder: string, options?: {
|
|
32
|
-
status?: string;
|
|
33
|
-
limit?: number;
|
|
34
|
-
}): WorkflowRun[];
|
|
35
|
-
export declare function upsertStepResult(runId: string, stepName: string, updates: Partial<WorkflowStepResult>): void;
|
|
36
|
-
export declare function getStepResults(runId: string): WorkflowStepResult[];
|
|
37
|
-
export declare function cleanupOldWorkflowRuns(retentionMs: number): number;
|
|
38
|
-
export declare function closeWorkflowStore(): void;
|
|
39
|
-
//# sourceMappingURL=workflow-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-store.d.ts","sourceRoot":"","sources":["../src/workflow-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAiDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,IAAI,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAgBjF;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGlE;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAczH;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAsB5G;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAGlE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiBlE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
|
package/dist/workflow-store.js
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SQLite-backed workflow state persistence.
|
|
3
|
-
*/
|
|
4
|
-
import Database from 'better-sqlite3';
|
|
5
|
-
import fs from 'fs';
|
|
6
|
-
import path from 'path';
|
|
7
|
-
import { STORE_DIR } from './config.js';
|
|
8
|
-
let db = null;
|
|
9
|
-
function getDb() {
|
|
10
|
-
if (db)
|
|
11
|
-
return db;
|
|
12
|
-
const dbPath = path.join(STORE_DIR, 'messages.db');
|
|
13
|
-
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
14
|
-
db = new Database(dbPath);
|
|
15
|
-
db.pragma('journal_mode = WAL');
|
|
16
|
-
db.pragma('busy_timeout = 3000');
|
|
17
|
-
ensureTables(db);
|
|
18
|
-
return db;
|
|
19
|
-
}
|
|
20
|
-
function ensureTables(database) {
|
|
21
|
-
database.exec(`
|
|
22
|
-
CREATE TABLE IF NOT EXISTS workflow_runs (
|
|
23
|
-
id TEXT PRIMARY KEY,
|
|
24
|
-
workflow_name TEXT NOT NULL,
|
|
25
|
-
group_folder TEXT NOT NULL,
|
|
26
|
-
chat_jid TEXT NOT NULL,
|
|
27
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
28
|
-
current_step TEXT,
|
|
29
|
-
state_json TEXT,
|
|
30
|
-
params_json TEXT,
|
|
31
|
-
created_at TEXT NOT NULL,
|
|
32
|
-
updated_at TEXT NOT NULL,
|
|
33
|
-
finished_at TEXT,
|
|
34
|
-
error TEXT
|
|
35
|
-
);
|
|
36
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_group ON workflow_runs(group_folder, created_at);
|
|
37
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_status ON workflow_runs(status);
|
|
38
|
-
|
|
39
|
-
CREATE TABLE IF NOT EXISTS workflow_step_results (
|
|
40
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
-
run_id TEXT NOT NULL,
|
|
42
|
-
step_name TEXT NOT NULL,
|
|
43
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
44
|
-
result TEXT,
|
|
45
|
-
error TEXT,
|
|
46
|
-
started_at TEXT,
|
|
47
|
-
finished_at TEXT,
|
|
48
|
-
FOREIGN KEY (run_id) REFERENCES workflow_runs(id)
|
|
49
|
-
);
|
|
50
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_step_results ON workflow_step_results(run_id, step_name);
|
|
51
|
-
`);
|
|
52
|
-
}
|
|
53
|
-
export function createWorkflowRun(run) {
|
|
54
|
-
const db = getDb();
|
|
55
|
-
db.prepare(`
|
|
56
|
-
INSERT INTO workflow_runs (id, workflow_name, group_folder, chat_jid, status, current_step, state_json, params_json, created_at, updated_at)
|
|
57
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
58
|
-
`).run(run.id, run.workflow_name, run.group_folder, run.chat_jid, run.status, run.current_step, run.state_json, run.params_json, run.created_at, run.updated_at);
|
|
59
|
-
}
|
|
60
|
-
export function updateWorkflowRun(id, updates) {
|
|
61
|
-
const db = getDb();
|
|
62
|
-
const fields = [];
|
|
63
|
-
const values = [];
|
|
64
|
-
if (updates.status !== undefined) {
|
|
65
|
-
fields.push('status = ?');
|
|
66
|
-
values.push(updates.status);
|
|
67
|
-
}
|
|
68
|
-
if (updates.current_step !== undefined) {
|
|
69
|
-
fields.push('current_step = ?');
|
|
70
|
-
values.push(updates.current_step);
|
|
71
|
-
}
|
|
72
|
-
if (updates.state_json !== undefined) {
|
|
73
|
-
fields.push('state_json = ?');
|
|
74
|
-
values.push(updates.state_json);
|
|
75
|
-
}
|
|
76
|
-
if (updates.finished_at !== undefined) {
|
|
77
|
-
fields.push('finished_at = ?');
|
|
78
|
-
values.push(updates.finished_at);
|
|
79
|
-
}
|
|
80
|
-
if (updates.error !== undefined) {
|
|
81
|
-
fields.push('error = ?');
|
|
82
|
-
values.push(updates.error);
|
|
83
|
-
}
|
|
84
|
-
fields.push('updated_at = ?');
|
|
85
|
-
values.push(new Date().toISOString());
|
|
86
|
-
values.push(id);
|
|
87
|
-
db.prepare(`UPDATE workflow_runs SET ${fields.join(', ')} WHERE id = ?`).run(...values);
|
|
88
|
-
}
|
|
89
|
-
export function getWorkflowRun(id) {
|
|
90
|
-
const db = getDb();
|
|
91
|
-
return db.prepare('SELECT * FROM workflow_runs WHERE id = ?').get(id);
|
|
92
|
-
}
|
|
93
|
-
export function listWorkflowRunsByGroup(groupFolder, options) {
|
|
94
|
-
const db = getDb();
|
|
95
|
-
let sql = 'SELECT * FROM workflow_runs WHERE group_folder = ?';
|
|
96
|
-
const params = [groupFolder];
|
|
97
|
-
if (options?.status) {
|
|
98
|
-
sql += ' AND status = ?';
|
|
99
|
-
params.push(options.status);
|
|
100
|
-
}
|
|
101
|
-
sql += ' ORDER BY created_at DESC';
|
|
102
|
-
if (options?.limit) {
|
|
103
|
-
sql += ' LIMIT ?';
|
|
104
|
-
params.push(options.limit);
|
|
105
|
-
}
|
|
106
|
-
return db.prepare(sql).all(...params);
|
|
107
|
-
}
|
|
108
|
-
export function upsertStepResult(runId, stepName, updates) {
|
|
109
|
-
const db = getDb();
|
|
110
|
-
const existing = db.prepare('SELECT id FROM workflow_step_results WHERE run_id = ? AND step_name = ?').get(runId, stepName);
|
|
111
|
-
if (existing) {
|
|
112
|
-
const fields = [];
|
|
113
|
-
const values = [];
|
|
114
|
-
if (updates.status !== undefined) {
|
|
115
|
-
fields.push('status = ?');
|
|
116
|
-
values.push(updates.status);
|
|
117
|
-
}
|
|
118
|
-
if (updates.result !== undefined) {
|
|
119
|
-
fields.push('result = ?');
|
|
120
|
-
values.push(updates.result);
|
|
121
|
-
}
|
|
122
|
-
if (updates.error !== undefined) {
|
|
123
|
-
fields.push('error = ?');
|
|
124
|
-
values.push(updates.error);
|
|
125
|
-
}
|
|
126
|
-
if (updates.started_at !== undefined) {
|
|
127
|
-
fields.push('started_at = ?');
|
|
128
|
-
values.push(updates.started_at);
|
|
129
|
-
}
|
|
130
|
-
if (updates.finished_at !== undefined) {
|
|
131
|
-
fields.push('finished_at = ?');
|
|
132
|
-
values.push(updates.finished_at);
|
|
133
|
-
}
|
|
134
|
-
if (fields.length > 0) {
|
|
135
|
-
values.push(existing.id);
|
|
136
|
-
db.prepare(`UPDATE workflow_step_results SET ${fields.join(', ')} WHERE id = ?`).run(...values);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
db.prepare(`
|
|
141
|
-
INSERT INTO workflow_step_results (run_id, step_name, status, result, error, started_at, finished_at)
|
|
142
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
143
|
-
`).run(runId, stepName, updates.status || 'pending', updates.result || null, updates.error || null, updates.started_at || null, updates.finished_at || null);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
export function getStepResults(runId) {
|
|
147
|
-
const db = getDb();
|
|
148
|
-
return db.prepare('SELECT * FROM workflow_step_results WHERE run_id = ? ORDER BY id').all(runId);
|
|
149
|
-
}
|
|
150
|
-
export function cleanupOldWorkflowRuns(retentionMs) {
|
|
151
|
-
const db = getDb();
|
|
152
|
-
const cutoff = new Date(Date.now() - retentionMs).toISOString();
|
|
153
|
-
const rows = db.prepare(`SELECT id FROM workflow_runs WHERE status IN ('completed', 'failed', 'canceled') AND finished_at < ?`).all(cutoff);
|
|
154
|
-
if (rows.length === 0)
|
|
155
|
-
return 0;
|
|
156
|
-
const deleteSteps = db.prepare('DELETE FROM workflow_step_results WHERE run_id = ?');
|
|
157
|
-
const deleteRun = db.prepare('DELETE FROM workflow_runs WHERE id = ?');
|
|
158
|
-
const tx = db.transaction(() => {
|
|
159
|
-
for (const row of rows) {
|
|
160
|
-
deleteSteps.run(row.id);
|
|
161
|
-
deleteRun.run(row.id);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
tx();
|
|
165
|
-
return rows.length;
|
|
166
|
-
}
|
|
167
|
-
export function closeWorkflowStore() {
|
|
168
|
-
if (db) {
|
|
169
|
-
db.close();
|
|
170
|
-
db = null;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=workflow-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-store.js","sourceRoot":"","sources":["../src/workflow-store.ts"],"names":[],"mappings":"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"}
|