@creezio/tasks 0.22.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/README.md +279 -0
- package/dist/.creezio-src-hash.json +4 -0
- package/dist/ai-task-agent.d.ts +47 -0
- package/dist/ai-task-agent.d.ts.map +1 -0
- package/dist/ai-task-agent.js +558 -0
- package/dist/ai-task-agent.js.map +1 -0
- package/dist/ai-task-runner.d.ts +78 -0
- package/dist/ai-task-runner.d.ts.map +1 -0
- package/dist/ai-task-runner.js +645 -0
- package/dist/ai-task-runner.js.map +1 -0
- package/dist/api-mount.d.ts +4 -0
- package/dist/api-mount.d.ts.map +1 -0
- package/dist/api-mount.js +91 -0
- package/dist/api-mount.js.map +1 -0
- package/dist/assistant-adapter.d.ts +7 -0
- package/dist/assistant-adapter.d.ts.map +1 -0
- package/dist/assistant-adapter.js +96 -0
- package/dist/assistant-adapter.js.map +1 -0
- package/dist/brand/config.d.ts +165 -0
- package/dist/brand/config.d.ts.map +1 -0
- package/dist/brand/config.js +39 -0
- package/dist/brand/config.js.map +1 -0
- package/dist/env-bridge.d.ts +12 -0
- package/dist/env-bridge.d.ts.map +1 -0
- package/dist/env-bridge.js +33 -0
- package/dist/env-bridge.js.map +1 -0
- package/dist/hono-routes.d.ts +8 -0
- package/dist/hono-routes.d.ts.map +1 -0
- package/dist/hono-routes.js +563 -0
- package/dist/hono-routes.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/kanban-service.d.ts +136 -0
- package/dist/kanban-service.d.ts.map +1 -0
- package/dist/kanban-service.js +580 -0
- package/dist/kanban-service.js.map +1 -0
- package/dist/mcp-host-tools.d.ts +59 -0
- package/dist/mcp-host-tools.d.ts.map +1 -0
- package/dist/mcp-host-tools.js +326 -0
- package/dist/mcp-host-tools.js.map +1 -0
- package/dist/mcp-workspace-tools.d.ts +15 -0
- package/dist/mcp-workspace-tools.d.ts.map +1 -0
- package/dist/mcp-workspace-tools.js +338 -0
- package/dist/mcp-workspace-tools.js.map +1 -0
- package/dist/memory-store.d.ts +3 -0
- package/dist/memory-store.d.ts.map +1 -0
- package/dist/memory-store.js +75 -0
- package/dist/memory-store.js.map +1 -0
- package/dist/sqlite-driver.d.ts +13 -0
- package/dist/sqlite-driver.d.ts.map +1 -0
- package/dist/sqlite-driver.js +13 -0
- package/dist/sqlite-driver.js.map +1 -0
- package/dist/sqlite-store.d.ts +15 -0
- package/dist/sqlite-store.d.ts.map +1 -0
- package/dist/sqlite-store.js +113 -0
- package/dist/sqlite-store.js.map +1 -0
- package/dist/task-runs.d.ts +108 -0
- package/dist/task-runs.d.ts.map +1 -0
- package/dist/task-runs.js +427 -0
- package/dist/task-runs.js.map +1 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist-cjs/ai-task-agent.js +569 -0
- package/dist-cjs/ai-task-agent.js.map +1 -0
- package/dist-cjs/ai-task-runner.js +660 -0
- package/dist-cjs/ai-task-runner.js.map +1 -0
- package/dist-cjs/api-mount.js +94 -0
- package/dist-cjs/api-mount.js.map +1 -0
- package/dist-cjs/assistant-adapter.js +99 -0
- package/dist-cjs/assistant-adapter.js.map +1 -0
- package/dist-cjs/brand/config.js +47 -0
- package/dist-cjs/brand/config.js.map +1 -0
- package/dist-cjs/env-bridge.js +36 -0
- package/dist-cjs/env-bridge.js.map +1 -0
- package/dist-cjs/hono-routes.js +566 -0
- package/dist-cjs/hono-routes.js.map +1 -0
- package/dist-cjs/index.js +117 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/kanban-service.js +601 -0
- package/dist-cjs/kanban-service.js.map +1 -0
- package/dist-cjs/mcp-host-tools.js +333 -0
- package/dist-cjs/mcp-host-tools.js.map +1 -0
- package/dist-cjs/mcp-workspace-tools.js +342 -0
- package/dist-cjs/mcp-workspace-tools.js.map +1 -0
- package/dist-cjs/memory-store.js +81 -0
- package/dist-cjs/memory-store.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/sqlite-driver.js +16 -0
- package/dist-cjs/sqlite-driver.js.map +1 -0
- package/dist-cjs/sqlite-store.js +119 -0
- package/dist-cjs/sqlite-store.js.map +1 -0
- package/dist-cjs/task-runs.js +457 -0
- package/dist-cjs/task-runs.js.map +1 -0
- package/dist-cjs/types.js +18 -0
- package/dist-cjs/types.js.map +1 -0
- package/package.json +79 -0
- package/scripts/port-from-tempoflow.mjs +405 -0
- package/ui/ai-activity-panel.tsx +559 -0
- package/ui/index.ts +7 -0
- package/ui/task-detail-sheet.tsx +668 -0
- package/ui/tasks-kanban-client.tsx +647 -0
- package/ui/tasks-types.ts +120 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RUN_STATUSES = void 0;
|
|
4
|
+
exports.subscribeAgentLogs = subscribeAgentLogs;
|
|
5
|
+
exports.subscribeTaskRuns = subscribeTaskRuns;
|
|
6
|
+
exports.taskRunsReady = taskRunsReady;
|
|
7
|
+
exports.taskRunsHitlReady = taskRunsHitlReady;
|
|
8
|
+
exports.taskRunsTokensReady = taskRunsTokensReady;
|
|
9
|
+
exports.countRunsCreatedToday = countRunsCreatedToday;
|
|
10
|
+
exports.sumUsageTokensToday = sumUsageTokensToday;
|
|
11
|
+
exports.getTaskRun = getTaskRun;
|
|
12
|
+
exports.listTaskRunsForTask = listTaskRunsForTask;
|
|
13
|
+
exports.getActiveRunForAssignee = getActiveRunForAssignee;
|
|
14
|
+
exports.countRunningRuns = countRunningRuns;
|
|
15
|
+
exports.listRunningRuns = listRunningRuns;
|
|
16
|
+
exports.getRunningRun = getRunningRun;
|
|
17
|
+
exports.maxConcurrentAiRuns = maxConcurrentAiRuns;
|
|
18
|
+
exports.enqueueTaskRun = enqueueTaskRun;
|
|
19
|
+
exports.openDetachedHitlRun = openDetachedHitlRun;
|
|
20
|
+
exports.claimNextQueuedRun = claimNextQueuedRun;
|
|
21
|
+
exports.finishTaskRun = finishTaskRun;
|
|
22
|
+
exports.setHitlPrompt = setHitlPrompt;
|
|
23
|
+
exports.resumeHitlRun = resumeHitlRun;
|
|
24
|
+
exports.clearHitlResponse = clearHitlResponse;
|
|
25
|
+
exports.cancelTaskRun = cancelTaskRun;
|
|
26
|
+
exports.bumpRunStepCount = bumpRunStepCount;
|
|
27
|
+
exports.appendAgentLog = appendAgentLog;
|
|
28
|
+
exports.listAgentLogs = listAgentLogs;
|
|
29
|
+
exports.purgeAgentLogsOlderThan = purgeAgentLogsOlderThan;
|
|
30
|
+
exports.isHitlPaused = isHitlPaused;
|
|
31
|
+
/**
|
|
32
|
+
* Runs d'exécution des tâches IA + logs session agent.
|
|
33
|
+
*/
|
|
34
|
+
const node_crypto_1 = require("node:crypto");
|
|
35
|
+
const config_js_1 = require("./brand/config.js");
|
|
36
|
+
function getWriteDb() {
|
|
37
|
+
return (0, config_js_1.requireTasksBrand)().db.getWriteDb();
|
|
38
|
+
}
|
|
39
|
+
function queryAll(sql, params = []) {
|
|
40
|
+
return (0, config_js_1.requireTasksBrand)().db.queryAll(sql, params);
|
|
41
|
+
}
|
|
42
|
+
function queryOne(sql, params = []) {
|
|
43
|
+
return (0, config_js_1.requireTasksBrand)().db.queryOne(sql, params);
|
|
44
|
+
}
|
|
45
|
+
function tableExists(name) {
|
|
46
|
+
return (0, config_js_1.requireTasksBrand)().db.tableExists(name);
|
|
47
|
+
}
|
|
48
|
+
exports.RUN_STATUSES = [
|
|
49
|
+
"queued",
|
|
50
|
+
"running",
|
|
51
|
+
"succeeded",
|
|
52
|
+
"failed",
|
|
53
|
+
"cancelled",
|
|
54
|
+
];
|
|
55
|
+
const g = globalThis;
|
|
56
|
+
const logListeners = g.__creezioTasksAgentLogListeners ?? new Map();
|
|
57
|
+
g.__creezioTasksAgentLogListeners = logListeners;
|
|
58
|
+
const runListeners = g.__creezioTasksAgentRunListeners ?? new Map();
|
|
59
|
+
g.__creezioTasksAgentRunListeners = runListeners;
|
|
60
|
+
function notifyLog(ev) {
|
|
61
|
+
const keys = [ev.run.id, ev.run.assignee_user_id, "*"];
|
|
62
|
+
for (const key of keys) {
|
|
63
|
+
const set = logListeners.get(key);
|
|
64
|
+
if (!set)
|
|
65
|
+
continue;
|
|
66
|
+
for (const fn of Array.from(set)) {
|
|
67
|
+
try {
|
|
68
|
+
fn(ev);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
/* ignore */
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function notifyRun(run) {
|
|
77
|
+
const keys = [run.id, run.assignee_user_id, "*"];
|
|
78
|
+
for (const key of keys) {
|
|
79
|
+
const set = runListeners.get(key);
|
|
80
|
+
if (!set)
|
|
81
|
+
continue;
|
|
82
|
+
for (const fn of Array.from(set)) {
|
|
83
|
+
try {
|
|
84
|
+
fn(run);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* ignore */
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Abonne aux logs d'un run, d'un user (assignee) ou `*` (tous). */
|
|
93
|
+
function subscribeAgentLogs(key, fn) {
|
|
94
|
+
let set = logListeners.get(key);
|
|
95
|
+
if (!set) {
|
|
96
|
+
set = new Set();
|
|
97
|
+
logListeners.set(key, set);
|
|
98
|
+
}
|
|
99
|
+
set.add(fn);
|
|
100
|
+
return () => {
|
|
101
|
+
set.delete(fn);
|
|
102
|
+
if (set.size === 0)
|
|
103
|
+
logListeners.delete(key);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function subscribeTaskRuns(key, fn) {
|
|
107
|
+
let set = runListeners.get(key);
|
|
108
|
+
if (!set) {
|
|
109
|
+
set = new Set();
|
|
110
|
+
runListeners.set(key, set);
|
|
111
|
+
}
|
|
112
|
+
set.add(fn);
|
|
113
|
+
return () => {
|
|
114
|
+
set.delete(fn);
|
|
115
|
+
if (set.size === 0)
|
|
116
|
+
runListeners.delete(key);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function normalizeRun(row) {
|
|
120
|
+
if (!row)
|
|
121
|
+
return null;
|
|
122
|
+
return {
|
|
123
|
+
...row,
|
|
124
|
+
hitl_prompt: row.hitl_prompt ?? null,
|
|
125
|
+
hitl_response: row.hitl_response ?? null,
|
|
126
|
+
retry_of: row.retry_of ?? null,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function taskRunsReady() {
|
|
130
|
+
return tableExists("task_runs") && tableExists("agent_session_logs");
|
|
131
|
+
}
|
|
132
|
+
function taskRunsHitlReady() {
|
|
133
|
+
if (!taskRunsReady())
|
|
134
|
+
return false;
|
|
135
|
+
try {
|
|
136
|
+
const cols = queryAll(`PRAGMA table_info(task_runs)`);
|
|
137
|
+
return cols.some((c) => c.name === "hitl_prompt");
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Colonne usage_tokens présente (migration 031). */
|
|
144
|
+
function taskRunsTokensReady() {
|
|
145
|
+
if (!taskRunsReady())
|
|
146
|
+
return false;
|
|
147
|
+
try {
|
|
148
|
+
const cols = queryAll(`PRAGMA table_info(task_runs)`);
|
|
149
|
+
return cols.some((c) => c.name === "usage_tokens");
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Runs créés depuis minuit UTC (quota MAX_RUNS_PER_DAY (envPrefix)). */
|
|
156
|
+
function countRunsCreatedToday() {
|
|
157
|
+
if (!taskRunsReady())
|
|
158
|
+
return 0;
|
|
159
|
+
const row = queryOne(`SELECT COUNT(*) AS c FROM task_runs WHERE created_at >= date('now')`);
|
|
160
|
+
return row?.c ?? 0;
|
|
161
|
+
}
|
|
162
|
+
/** Tokens LLM consommés depuis minuit UTC (quota MAX_TOKENS_PER_DAY (envPrefix)). */
|
|
163
|
+
function sumUsageTokensToday() {
|
|
164
|
+
if (!taskRunsTokensReady())
|
|
165
|
+
return 0;
|
|
166
|
+
const row = queryOne(`SELECT COALESCE(SUM(usage_tokens), 0) AS s FROM task_runs
|
|
167
|
+
WHERE created_at >= date('now')`);
|
|
168
|
+
return row?.s ?? 0;
|
|
169
|
+
}
|
|
170
|
+
function getTaskRun(id) {
|
|
171
|
+
if (!taskRunsReady())
|
|
172
|
+
return null;
|
|
173
|
+
return normalizeRun(queryOne(`SELECT * FROM task_runs WHERE id = ?`, [id]) ?? null);
|
|
174
|
+
}
|
|
175
|
+
function listTaskRunsForTask(taskId) {
|
|
176
|
+
if (!taskRunsReady())
|
|
177
|
+
return [];
|
|
178
|
+
return queryAll(`SELECT * FROM task_runs WHERE task_id = ? ORDER BY created_at DESC`, [taskId]).map((r) => normalizeRun(r));
|
|
179
|
+
}
|
|
180
|
+
function getActiveRunForAssignee(assigneeUserId) {
|
|
181
|
+
if (!taskRunsReady())
|
|
182
|
+
return null;
|
|
183
|
+
return normalizeRun(queryOne(`SELECT * FROM task_runs
|
|
184
|
+
WHERE assignee_user_id = ? AND status IN ('queued','running')
|
|
185
|
+
ORDER BY
|
|
186
|
+
CASE status WHEN 'running' THEN 0 ELSE 1 END,
|
|
187
|
+
created_at ASC
|
|
188
|
+
LIMIT 1`, [assigneeUserId]) ?? null);
|
|
189
|
+
}
|
|
190
|
+
function countRunningRuns() {
|
|
191
|
+
if (!taskRunsReady())
|
|
192
|
+
return 0;
|
|
193
|
+
const row = queryOne(`SELECT COUNT(*) AS c FROM task_runs WHERE status = 'running'`);
|
|
194
|
+
return row?.c ?? 0;
|
|
195
|
+
}
|
|
196
|
+
function listRunningRuns() {
|
|
197
|
+
if (!taskRunsReady())
|
|
198
|
+
return [];
|
|
199
|
+
return queryAll(`SELECT * FROM task_runs WHERE status = 'running' ORDER BY started_at ASC`).map((r) => normalizeRun(r));
|
|
200
|
+
}
|
|
201
|
+
function getRunningRun() {
|
|
202
|
+
return listRunningRuns()[0] ?? null;
|
|
203
|
+
}
|
|
204
|
+
/** Défaut 2 ; plafond dur 8. Env MAX_CONCURRENT (envPrefix). */
|
|
205
|
+
function maxConcurrentAiRuns() {
|
|
206
|
+
const raw = Number((0, config_js_1.tasksEnv)("MAX_CONCURRENT", "2") || "2");
|
|
207
|
+
if (!Number.isFinite(raw) || raw < 1)
|
|
208
|
+
return 2;
|
|
209
|
+
return Math.min(8, Math.floor(raw));
|
|
210
|
+
}
|
|
211
|
+
function enqueueTaskRun(input) {
|
|
212
|
+
if (!taskRunsReady()) {
|
|
213
|
+
throw new Error("schéma task_runs plateforme requis (task_runs)");
|
|
214
|
+
}
|
|
215
|
+
const existing = queryOne(`SELECT * FROM task_runs
|
|
216
|
+
WHERE task_id = ? AND status IN ('queued','running')
|
|
217
|
+
LIMIT 1`, [input.taskId]);
|
|
218
|
+
if (existing)
|
|
219
|
+
return normalizeRun(existing);
|
|
220
|
+
const id = (0, node_crypto_1.randomUUID)();
|
|
221
|
+
if (taskRunsHitlReady()) {
|
|
222
|
+
getWriteDb()
|
|
223
|
+
.prepare(`INSERT INTO task_runs (id, task_id, assignee_user_id, status, retry_of)
|
|
224
|
+
VALUES (?, ?, ?, 'queued', ?)`)
|
|
225
|
+
.run(id, input.taskId, input.assigneeUserId, input.retryOf ?? null);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
getWriteDb()
|
|
229
|
+
.prepare(`INSERT INTO task_runs (id, task_id, assignee_user_id, status)
|
|
230
|
+
VALUES (?, ?, ?, 'queued')`)
|
|
231
|
+
.run(id, input.taskId, input.assigneeUserId);
|
|
232
|
+
}
|
|
233
|
+
const run = getTaskRun(id);
|
|
234
|
+
notifyRun(run);
|
|
235
|
+
return run;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* H4 « Hermes cerveau unique » — run HITL DÉTACHÉ : question posée par un
|
|
239
|
+
* service (tool MCP `platform.ask_human`) sans boucle agent derrière.
|
|
240
|
+
*
|
|
241
|
+
* Réutilise l'infra `task_runs.hitl_prompt` (choix documenté : même canal de
|
|
242
|
+
* réponse humain que le runner — kanban « en attente humain » +
|
|
243
|
+
* `answer_ai_question`/`resumeHitlRun` — zéro table ni UI parallèle). Le run
|
|
244
|
+
* est inséré directement en `running` + `hitl_prompt` (jamais `queued`, pour
|
|
245
|
+
* que la boucle runner ne le claim pas). La réponse est relue par
|
|
246
|
+
* `platform.get_human_answer`, qui clôt le run.
|
|
247
|
+
*/
|
|
248
|
+
function openDetachedHitlRun(input) {
|
|
249
|
+
if (!taskRunsReady() || !taskRunsHitlReady())
|
|
250
|
+
return null;
|
|
251
|
+
const id = (0, node_crypto_1.randomUUID)();
|
|
252
|
+
getWriteDb()
|
|
253
|
+
.prepare(`INSERT INTO task_runs
|
|
254
|
+
(id, task_id, assignee_user_id, status, started_at, hitl_prompt)
|
|
255
|
+
VALUES (?, ?, ?, 'running', datetime('now'), ?)`)
|
|
256
|
+
.run(id, input.taskId, input.assigneeUserId, input.prompt.slice(0, 4000));
|
|
257
|
+
const run = getTaskRun(id);
|
|
258
|
+
if (run)
|
|
259
|
+
notifyRun(run);
|
|
260
|
+
return run;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Claim atomique d'un run queued si le nombre de runs running < maxConcurrent.
|
|
264
|
+
*/
|
|
265
|
+
function claimNextQueuedRun(maxConcurrent = maxConcurrentAiRuns()) {
|
|
266
|
+
if (!taskRunsReady())
|
|
267
|
+
return null;
|
|
268
|
+
if (countRunningRuns() >= maxConcurrent)
|
|
269
|
+
return null;
|
|
270
|
+
const next = queryOne(`SELECT * FROM task_runs WHERE status = 'queued'
|
|
271
|
+
ORDER BY created_at ASC LIMIT 1`);
|
|
272
|
+
if (!next)
|
|
273
|
+
return null;
|
|
274
|
+
const r = getWriteDb()
|
|
275
|
+
.prepare(`UPDATE task_runs
|
|
276
|
+
SET status = 'running',
|
|
277
|
+
started_at = datetime('now'),
|
|
278
|
+
updated_at = datetime('now')
|
|
279
|
+
WHERE id = ? AND status = 'queued'
|
|
280
|
+
AND (
|
|
281
|
+
SELECT COUNT(*) FROM task_runs WHERE status = 'running' AND id != ?
|
|
282
|
+
) < ?`)
|
|
283
|
+
.run(next.id, next.id, maxConcurrent);
|
|
284
|
+
if (r.changes === 0)
|
|
285
|
+
return null;
|
|
286
|
+
const run = getTaskRun(next.id);
|
|
287
|
+
if (run)
|
|
288
|
+
notifyRun(run);
|
|
289
|
+
return run;
|
|
290
|
+
}
|
|
291
|
+
function finishTaskRun(id, result) {
|
|
292
|
+
if (!taskRunsReady())
|
|
293
|
+
return null;
|
|
294
|
+
if (typeof result.usageTokens === "number" &&
|
|
295
|
+
result.usageTokens > 0 &&
|
|
296
|
+
taskRunsTokensReady()) {
|
|
297
|
+
getWriteDb()
|
|
298
|
+
.prepare(`UPDATE task_runs SET usage_tokens = ? WHERE id = ?`)
|
|
299
|
+
.run(Math.round(result.usageTokens), id);
|
|
300
|
+
}
|
|
301
|
+
if (taskRunsHitlReady()) {
|
|
302
|
+
getWriteDb()
|
|
303
|
+
.prepare(`UPDATE task_runs
|
|
304
|
+
SET status = ?,
|
|
305
|
+
last_error = ?,
|
|
306
|
+
host_device_id = COALESCE(?, host_device_id),
|
|
307
|
+
step_count = COALESCE(?, step_count),
|
|
308
|
+
hitl_prompt = NULL,
|
|
309
|
+
finished_at = datetime('now'),
|
|
310
|
+
updated_at = datetime('now')
|
|
311
|
+
WHERE id = ?`)
|
|
312
|
+
.run(result.status, result.lastError ?? null, result.hostDeviceId ?? null, result.stepCount ?? null, id);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
getWriteDb()
|
|
316
|
+
.prepare(`UPDATE task_runs
|
|
317
|
+
SET status = ?,
|
|
318
|
+
last_error = ?,
|
|
319
|
+
host_device_id = COALESCE(?, host_device_id),
|
|
320
|
+
step_count = COALESCE(?, step_count),
|
|
321
|
+
finished_at = datetime('now'),
|
|
322
|
+
updated_at = datetime('now')
|
|
323
|
+
WHERE id = ?`)
|
|
324
|
+
.run(result.status, result.lastError ?? null, result.hostDeviceId ?? null, result.stepCount ?? null, id);
|
|
325
|
+
}
|
|
326
|
+
const run = getTaskRun(id);
|
|
327
|
+
if (run)
|
|
328
|
+
notifyRun(run);
|
|
329
|
+
return run;
|
|
330
|
+
}
|
|
331
|
+
function setHitlPrompt(id, prompt) {
|
|
332
|
+
if (!taskRunsHitlReady())
|
|
333
|
+
return null;
|
|
334
|
+
getWriteDb()
|
|
335
|
+
.prepare(`UPDATE task_runs
|
|
336
|
+
SET hitl_prompt = ?,
|
|
337
|
+
hitl_response = NULL,
|
|
338
|
+
updated_at = datetime('now')
|
|
339
|
+
WHERE id = ? AND status = 'running'`)
|
|
340
|
+
.run(prompt, id);
|
|
341
|
+
const run = getTaskRun(id);
|
|
342
|
+
if (run)
|
|
343
|
+
notifyRun(run);
|
|
344
|
+
return run;
|
|
345
|
+
}
|
|
346
|
+
function resumeHitlRun(id, response = "ok") {
|
|
347
|
+
if (!taskRunsHitlReady())
|
|
348
|
+
return null;
|
|
349
|
+
const current = getTaskRun(id);
|
|
350
|
+
if (!current || current.status !== "running" || !current.hitl_prompt) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
getWriteDb()
|
|
354
|
+
.prepare(`UPDATE task_runs
|
|
355
|
+
SET hitl_prompt = NULL,
|
|
356
|
+
hitl_response = ?,
|
|
357
|
+
updated_at = datetime('now')
|
|
358
|
+
WHERE id = ? AND status = 'running'`)
|
|
359
|
+
.run(response.slice(0, 2000), id);
|
|
360
|
+
const run = getTaskRun(id);
|
|
361
|
+
if (run)
|
|
362
|
+
notifyRun(run);
|
|
363
|
+
return run;
|
|
364
|
+
}
|
|
365
|
+
function clearHitlResponse(id) {
|
|
366
|
+
if (!taskRunsHitlReady())
|
|
367
|
+
return;
|
|
368
|
+
getWriteDb()
|
|
369
|
+
.prepare(`UPDATE task_runs SET hitl_response = NULL, updated_at = datetime('now')
|
|
370
|
+
WHERE id = ?`)
|
|
371
|
+
.run(id);
|
|
372
|
+
}
|
|
373
|
+
function cancelTaskRun(id) {
|
|
374
|
+
const run = getTaskRun(id);
|
|
375
|
+
if (!run)
|
|
376
|
+
return null;
|
|
377
|
+
if (run.status !== "queued" && run.status !== "running")
|
|
378
|
+
return run;
|
|
379
|
+
return finishTaskRun(id, {
|
|
380
|
+
status: "cancelled",
|
|
381
|
+
lastError: "cancelled_by_user",
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
function bumpRunStepCount(id) {
|
|
385
|
+
getWriteDb()
|
|
386
|
+
.prepare(`UPDATE task_runs
|
|
387
|
+
SET step_count = step_count + 1, updated_at = datetime('now')
|
|
388
|
+
WHERE id = ?`)
|
|
389
|
+
.run(id);
|
|
390
|
+
const row = getTaskRun(id);
|
|
391
|
+
return row?.step_count ?? 0;
|
|
392
|
+
}
|
|
393
|
+
function appendAgentLog(input) {
|
|
394
|
+
if (!taskRunsReady()) {
|
|
395
|
+
throw new Error("schéma task_runs plateforme requis (agent_session_logs)");
|
|
396
|
+
}
|
|
397
|
+
const seqRow = queryOne(`SELECT MAX(seq) AS m FROM agent_session_logs WHERE run_id = ?`, [input.runId]);
|
|
398
|
+
const seq = (seqRow?.m ?? 0) + 1;
|
|
399
|
+
const id = (0, node_crypto_1.randomUUID)();
|
|
400
|
+
let payloadJson = null;
|
|
401
|
+
if (input.payload !== undefined) {
|
|
402
|
+
try {
|
|
403
|
+
payloadJson = JSON.stringify(input.payload);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
payloadJson = null;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
getWriteDb()
|
|
410
|
+
.prepare(`INSERT INTO agent_session_logs
|
|
411
|
+
(id, run_id, seq, level, event_type, message, payload_json)
|
|
412
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`)
|
|
413
|
+
.run(id, input.runId, seq, input.level || "info", input.eventType, input.message, payloadJson);
|
|
414
|
+
bumpRunStepCount(input.runId);
|
|
415
|
+
const log = {
|
|
416
|
+
id,
|
|
417
|
+
run_id: input.runId,
|
|
418
|
+
seq,
|
|
419
|
+
level: input.level || "info",
|
|
420
|
+
event_type: input.eventType,
|
|
421
|
+
message: input.message,
|
|
422
|
+
payload_json: payloadJson,
|
|
423
|
+
created_at: new Date().toISOString(),
|
|
424
|
+
};
|
|
425
|
+
const run = getTaskRun(input.runId);
|
|
426
|
+
if (run)
|
|
427
|
+
notifyLog({ run, log });
|
|
428
|
+
return log;
|
|
429
|
+
}
|
|
430
|
+
function listAgentLogs(runId, afterSeq = 0, limit = 200) {
|
|
431
|
+
if (!taskRunsReady())
|
|
432
|
+
return [];
|
|
433
|
+
return queryAll(`SELECT * FROM agent_session_logs
|
|
434
|
+
WHERE run_id = ? AND seq > ?
|
|
435
|
+
ORDER BY seq ASC
|
|
436
|
+
LIMIT ?`, [runId, afterSeq, limit]);
|
|
437
|
+
}
|
|
438
|
+
/** Purge logs (+ runs terminés) plus vieux que N jours. */
|
|
439
|
+
function purgeAgentLogsOlderThan(days) {
|
|
440
|
+
if (!taskRunsReady())
|
|
441
|
+
return { logsDeleted: 0, runsDeleted: 0 };
|
|
442
|
+
const d = Math.max(1, Math.floor(days));
|
|
443
|
+
const logs = getWriteDb()
|
|
444
|
+
.prepare(`DELETE FROM agent_session_logs
|
|
445
|
+
WHERE created_at < datetime('now', ?)`)
|
|
446
|
+
.run(`-${d} days`);
|
|
447
|
+
const runs = getWriteDb()
|
|
448
|
+
.prepare(`DELETE FROM task_runs
|
|
449
|
+
WHERE status IN ('succeeded','failed','cancelled')
|
|
450
|
+
AND COALESCE(finished_at, created_at) < datetime('now', ?)`)
|
|
451
|
+
.run(`-${d} days`);
|
|
452
|
+
return { logsDeleted: logs.changes, runsDeleted: runs.changes };
|
|
453
|
+
}
|
|
454
|
+
function isHitlPaused(run) {
|
|
455
|
+
return Boolean(run?.status === "running" && run.hitl_prompt);
|
|
456
|
+
}
|
|
457
|
+
//# sourceMappingURL=task-runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-runs.js","sourceRoot":"","sources":["../src/task-runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLATFORM_TASKS_CORE_SQL = void 0;
|
|
4
|
+
/** DDL optionnel sqlite core. */
|
|
5
|
+
exports.PLATFORM_TASKS_CORE_SQL = `
|
|
6
|
+
CREATE TABLE IF NOT EXISTS creezio_platform_tasks (
|
|
7
|
+
id TEXT PRIMARY KEY,
|
|
8
|
+
user_id TEXT NOT NULL,
|
|
9
|
+
title TEXT NOT NULL,
|
|
10
|
+
body TEXT NOT NULL DEFAULT '',
|
|
11
|
+
status TEXT NOT NULL DEFAULT 'open',
|
|
12
|
+
created_at TEXT NOT NULL,
|
|
13
|
+
updated_at TEXT NOT NULL
|
|
14
|
+
);
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_creezio_platform_tasks_user
|
|
16
|
+
ON creezio_platform_tasks(user_id, status);
|
|
17
|
+
`;
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuCA,iCAAiC;AACpB,QAAA,uBAAuB,GAAG;;;;;;;;;;;;CAYtC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@creezio/tasks",
|
|
3
|
+
"version": "0.22.0",
|
|
4
|
+
"description": "Tâches natives plateforme Creezio — kanban human/ai/hermes + runs + AI (hors PluginTaskRecord product-hub)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist-cjs/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist-cjs/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./ui": {
|
|
16
|
+
"types": "./ui/index.ts",
|
|
17
|
+
"import": "./ui/index.ts",
|
|
18
|
+
"default": "./ui/index.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"dist-cjs",
|
|
24
|
+
"ui",
|
|
25
|
+
"scripts"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc -p tsconfig.json",
|
|
29
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@creezio/api-kernel": "^0.22.0",
|
|
33
|
+
"@creezio/assistant": "^0.22.0",
|
|
34
|
+
"@creezio/auth": "^0.22.0",
|
|
35
|
+
"@creezio/platform-core": "^0.22.0",
|
|
36
|
+
"@creezio/shell-ui": "^0.22.0",
|
|
37
|
+
"hono": "^4.12.32",
|
|
38
|
+
"zod": "^4.4.3"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^22.15.3",
|
|
42
|
+
"@types/react": "^18.3.12",
|
|
43
|
+
"typescript": "^5.8.3"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"date-fns": ">=2.0.0",
|
|
47
|
+
"lucide-react": ">=0.400.0",
|
|
48
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
49
|
+
"sonner": ">=1.0.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependenciesMeta": {
|
|
52
|
+
"date-fns": {
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
"lucide-react": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
58
|
+
"react": {
|
|
59
|
+
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"sonner": {
|
|
62
|
+
"optional": true
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"license": "UNLICENSED",
|
|
66
|
+
"module": "./dist/index.js",
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"registry": "https://registry.npmjs.org",
|
|
69
|
+
"access": "public"
|
|
70
|
+
},
|
|
71
|
+
"repository": {
|
|
72
|
+
"type": "git",
|
|
73
|
+
"url": "https://github.com/creezio/creezio.git",
|
|
74
|
+
"directory": "packages/tasks"
|
|
75
|
+
},
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=22.5"
|
|
78
|
+
}
|
|
79
|
+
}
|