@hasna/todos 0.11.30 → 0.11.32
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/cli/commands/agent-commands.d.ts +3 -0
- package/dist/cli/commands/agent-commands.d.ts.map +1 -0
- package/dist/cli/commands/cloud-commands.d.ts +3 -0
- package/dist/cli/commands/cloud-commands.d.ts.map +1 -0
- package/dist/cli/commands/config-serve-commands.d.ts +3 -0
- package/dist/cli/commands/config-serve-commands.d.ts.map +1 -0
- package/dist/cli/commands/machines.d.ts +3 -0
- package/dist/cli/commands/machines.d.ts.map +1 -0
- package/dist/cli/commands/mcp-hooks-commands.d.ts +3 -0
- package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -0
- package/dist/cli/commands/plan-template-commands.d.ts +3 -0
- package/dist/cli/commands/plan-template-commands.d.ts.map +1 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.d.ts.map +1 -0
- package/dist/cli/commands/query-commands.d.ts +3 -0
- package/dist/cli/commands/query-commands.d.ts.map +1 -0
- package/dist/cli/commands/task-commands.d.ts +3 -0
- package/dist/cli/commands/task-commands.d.ts.map +1 -0
- package/dist/cli/helpers.d.ts +21 -0
- package/dist/cli/helpers.d.ts.map +1 -0
- package/dist/cli/index.js +28144 -27871
- package/dist/db/cycles.d.ts +78 -0
- package/dist/db/cycles.d.ts.map +1 -0
- package/dist/db/machines.d.ts +30 -1
- package/dist/db/machines.d.ts.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/task-crud.d.ts.map +1 -1
- package/dist/db/webhooks.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +184 -6
- package/dist/lib/auto-assign.d.ts.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/logger.d.ts +17 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +290 -4
- package/dist/mcp/tools/machines.d.ts +8 -0
- package/dist/mcp/tools/machines.d.ts.map +1 -0
- package/dist/server/index.js +30 -4
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cycles — time-boxed iteration periods (like Linear.app cycles).
|
|
3
|
+
*
|
|
4
|
+
* A cycle has a start/end date, a number, and a duration in weeks.
|
|
5
|
+
* Tasks can be assigned to a cycle via the cycle_id column on tasks.
|
|
6
|
+
*/
|
|
7
|
+
import type { Database } from "bun:sqlite";
|
|
8
|
+
export interface Cycle {
|
|
9
|
+
id: string;
|
|
10
|
+
project_id: string | null;
|
|
11
|
+
number: number;
|
|
12
|
+
start_date: string;
|
|
13
|
+
end_date: string;
|
|
14
|
+
duration_weeks: number;
|
|
15
|
+
status: "active" | "completed" | "archived";
|
|
16
|
+
created_at: string;
|
|
17
|
+
updated_at: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CycleWithStats extends Cycle {
|
|
20
|
+
task_count: number;
|
|
21
|
+
completed_count: number;
|
|
22
|
+
started_count: number;
|
|
23
|
+
uncompleted_count: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CreateCycleInput {
|
|
26
|
+
project_id?: string;
|
|
27
|
+
number?: number;
|
|
28
|
+
start_date: string;
|
|
29
|
+
duration_weeks?: number;
|
|
30
|
+
status?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface CycleUpdateInput {
|
|
33
|
+
status?: string;
|
|
34
|
+
start_date?: string;
|
|
35
|
+
end_date?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface CycleQueryOptions {
|
|
38
|
+
project_id?: string;
|
|
39
|
+
status?: string;
|
|
40
|
+
limit?: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function createCycle(input: CreateCycleInput, db?: Database): Cycle;
|
|
43
|
+
export declare function getCycle(id: string, db?: Database): Cycle | null;
|
|
44
|
+
export declare function getCycleByNumber(project_id: string, number: number, db?: Database): Cycle | null;
|
|
45
|
+
export declare function listCycles(options?: CycleQueryOptions, db?: Database): Cycle[];
|
|
46
|
+
export declare function updateCycle(id: string, input: CycleUpdateInput, db?: Database): Cycle | null;
|
|
47
|
+
export declare function deleteCycle(id: string, db?: Database): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Generate a sequence of cycles starting from a given date.
|
|
50
|
+
* Creates `count` cycles with the specified duration_weeks.
|
|
51
|
+
*/
|
|
52
|
+
export declare function generateCycles(project_id: string, options: {
|
|
53
|
+
start_date: string;
|
|
54
|
+
count: number;
|
|
55
|
+
duration_weeks?: number;
|
|
56
|
+
}, db?: Database): Cycle[];
|
|
57
|
+
/**
|
|
58
|
+
* Get the currently active cycle for a project (today falls within start/end).
|
|
59
|
+
*/
|
|
60
|
+
export declare function getCurrentCycle(project_id: string, db?: Database): Cycle | null;
|
|
61
|
+
/**
|
|
62
|
+
* Get the next upcoming cycle (start_date is in the future).
|
|
63
|
+
*/
|
|
64
|
+
export declare function getNextCycle(project_id: string, db?: Database): Cycle | null;
|
|
65
|
+
/**
|
|
66
|
+
* Get cycle statistics (task counts by state).
|
|
67
|
+
*/
|
|
68
|
+
export declare function getCycleStats(cycle_id: string, db?: Database): {
|
|
69
|
+
task_count: number;
|
|
70
|
+
completed_count: number;
|
|
71
|
+
started_count: number;
|
|
72
|
+
uncompleted_count: number;
|
|
73
|
+
} | null;
|
|
74
|
+
/**
|
|
75
|
+
* List all cycles with their task stats for a project.
|
|
76
|
+
*/
|
|
77
|
+
export declare function listCyclesWithStats(options?: CycleQueryOptions, db?: Database): CycleWithStats[];
|
|
78
|
+
//# sourceMappingURL=cycles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycles.d.ts","sourceRoot":"","sources":["../../src/db/cycles.ts"],"names":[],"mappings":"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"}
|
package/dist/db/machines.d.ts
CHANGED
|
@@ -11,7 +11,36 @@ export declare function getMachineId(db?: Database): string;
|
|
|
11
11
|
export declare function resetMachineId(): void;
|
|
12
12
|
export declare function getMachine(id: string, db?: Database): Machine | null;
|
|
13
13
|
export declare function getMachineByName(name: string, db?: Database): Machine | null;
|
|
14
|
-
export declare function listMachines(db?: Database): Machine[];
|
|
14
|
+
export declare function listMachines(db?: Database, includeArchived?: boolean): Machine[];
|
|
15
|
+
/**
|
|
16
|
+
* Register a new machine or update an existing one.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerMachine(name: string, opts: {
|
|
19
|
+
hostname?: string;
|
|
20
|
+
ssh_address?: string;
|
|
21
|
+
primary?: boolean;
|
|
22
|
+
}, db?: Database): Machine;
|
|
23
|
+
/**
|
|
24
|
+
* Set a machine as the primary machine.
|
|
25
|
+
* Clears is_primary on all other machines.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setPrimaryMachine(name: string, db?: Database): Machine;
|
|
28
|
+
/**
|
|
29
|
+
* Get the primary machine.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getPrimaryMachine(db?: Database): Machine | null;
|
|
32
|
+
/**
|
|
33
|
+
* Archive (soft-delete) a machine.
|
|
34
|
+
* Cannot archive the primary machine or machines with active/pending tasks.
|
|
35
|
+
*/
|
|
36
|
+
export declare function archiveMachine(id: string, db?: Database): void;
|
|
37
|
+
/**
|
|
38
|
+
* Unarchive a machine.
|
|
39
|
+
*/
|
|
40
|
+
export declare function unarchiveMachine(id: string, db?: Database): Machine | null;
|
|
41
|
+
/**
|
|
42
|
+
* Delete a machine (hard delete). Only allowed if not primary and no tasks.
|
|
43
|
+
*/
|
|
15
44
|
export declare function deleteMachine(id: string, db?: Database): boolean;
|
|
16
45
|
export declare function backfillMachineId(db: Database, force?: boolean): void;
|
|
17
46
|
//# sourceMappingURL=machines.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../../src/db/machines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../../src/db/machines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AAY7D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAuB9D;AAMD,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAKlD;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAIpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAI5E;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,UAAQ,GAAG,OAAO,EAAE,CAO9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EACpE,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CA8BT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAUtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAI/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAe9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAI1E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAehE;AAaD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,UAAQ,GAAG,IAAI,CAgBnE"}
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA8BhD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA8BhD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAkb/C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA4BnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-crud.d.ts","sourceRoot":"","sources":["../../src/db/task-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EACf,IAAI,EACJ,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAY3B,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAS5C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAMjF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAGlF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"task-crud.d.ts","sourceRoot":"","sources":["../../src/db/task-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EACf,IAAI,EACJ,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAY3B,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAS5C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAMjF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAGlF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAsEtE;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAK9D;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,iBAAiB,GAAG,IAAI,CAqD1B;AAED,wBAAgB,SAAS,CAAC,MAAM,GAAE,UAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,CAsIxE;AAED,wBAAgB,UAAU,CAAC,MAAM,GAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAqFnG;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAqIN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAI7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/db/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAsBrE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/db/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAsBrE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CA+CvG;AAyBD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAcD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAsB/E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAIpE;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAGrD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGhE;AAED,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,EAAE,CAM/F;AAqGD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type { TodosClientOptions } from "./sdk.js";
|
|
|
3
3
|
export { getDatabase, closeDatabase, resetDatabase, resolvePartialId, now, uuid } from "./db/database.js";
|
|
4
4
|
export { createTask, getTask, getTaskWithRelations, listTasks, countTasks, updateTask, deleteTask, startTask, completeTask, lockTask, unlockTask, addDependency, removeDependency, getTaskDependencies, getTaskDependents, getBlockingDeps, bulkUpdateTasks, bulkCreateTasks, cloneTask, getTaskStats, getTaskGraph, moveTask, getNextTask, claimNextTask, stealTask, claimOrSteal, logCost, getActiveWork, failTask, getTasksChangedSince, getStaleTasks, getStatus, decomposeTasks, setTaskStatus, setTaskPriority, redistributeStaleTasks, getOverdueTasks, archiveTasks, unarchiveTask, } from "./db/tasks.js";
|
|
5
5
|
export type { TaskGraphNode, TaskGraph, BulkCreateTaskInput, ActiveWorkItem, StatusSummary, DecomposeSubtaskInput } from "./db/tasks.js";
|
|
6
|
+
export { createCycle, getCycle, getCycleByNumber, listCycles, updateCycle, deleteCycle, generateCycles, getCurrentCycle, getNextCycle, getCycleStats, listCyclesWithStats, } from "./db/cycles.js";
|
|
7
|
+
export type { Cycle, CycleWithStats, CreateCycleInput, CycleUpdateInput, CycleQueryOptions } from "./db/cycles.js";
|
|
6
8
|
export { createProject, getProject, getProjectByPath, getProjectWithSources, listProjects, updateProject, deleteProject, ensureProject, nextTaskShortId, slugify, addProjectSource, removeProjectSource, listProjectSources, renameProject, setMachineLocalPath, getMachineLocalPath, listMachineLocalPaths, removeMachineLocalPath, } from "./db/projects.js";
|
|
7
9
|
export type { ProjectMachinePath } from "./db/projects.js";
|
|
8
10
|
export { createPlan, getPlan, listPlans, updatePlan, deletePlan, } from "./db/plans.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG1G,OAAO,EACL,UAAU,EACV,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,OAAO,EACP,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGzI,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnH,OAAO,EACL,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3F,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3H,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9U,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtJ,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvF,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGpJ,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG/G,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7H,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjG,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,YAAY,EACV,IAAI,EACJ,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,IAAI,EACJ,eAAe,EACf,eAAe,EACf,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,GAAG,EACH,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -988,10 +988,15 @@ function ensureSchema(db) {
|
|
|
988
988
|
ensureTable("machines", `
|
|
989
989
|
CREATE TABLE machines (
|
|
990
990
|
id TEXT PRIMARY KEY, name TEXT NOT NULL UNIQUE, hostname TEXT, platform TEXT,
|
|
991
|
+
ssh_address TEXT, is_primary INTEGER NOT NULL DEFAULT 0,
|
|
991
992
|
last_seen_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
993
|
+
archived_at TEXT,
|
|
992
994
|
metadata TEXT DEFAULT '{}',
|
|
993
995
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
994
996
|
)`);
|
|
997
|
+
ensureColumn("machines", "ssh_address", "TEXT");
|
|
998
|
+
ensureColumn("machines", "is_primary", "INTEGER NOT NULL DEFAULT 0");
|
|
999
|
+
ensureColumn("machines", "archived_at", "TEXT");
|
|
995
1000
|
ensureColumn("projects", "task_list_id", "TEXT");
|
|
996
1001
|
ensureColumn("projects", "task_prefix", "TEXT");
|
|
997
1002
|
ensureColumn("projects", "task_counter", "INTEGER NOT NULL DEFAULT 0");
|
|
@@ -1183,6 +1188,24 @@ function ensureSchema(db) {
|
|
|
1183
1188
|
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_watchers_agent ON task_watchers(agent_id)");
|
|
1184
1189
|
ensureColumn("task_dependencies", "external_project_id", "TEXT");
|
|
1185
1190
|
ensureColumn("task_dependencies", "external_task_id", "TEXT");
|
|
1191
|
+
ensureTable("cycles", `
|
|
1192
|
+
CREATE TABLE cycles (
|
|
1193
|
+
id TEXT PRIMARY KEY,
|
|
1194
|
+
project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
|
|
1195
|
+
number INTEGER NOT NULL,
|
|
1196
|
+
start_date TEXT NOT NULL,
|
|
1197
|
+
end_date TEXT NOT NULL,
|
|
1198
|
+
duration_weeks INTEGER NOT NULL DEFAULT 1,
|
|
1199
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'completed', 'archived')),
|
|
1200
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
1201
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
1202
|
+
)`);
|
|
1203
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_cycles_project ON cycles(project_id)");
|
|
1204
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_cycles_number ON cycles(number)");
|
|
1205
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_cycles_status ON cycles(status)");
|
|
1206
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_cycles_dates ON cycles(start_date, end_date)");
|
|
1207
|
+
ensureColumn("tasks", "cycle_id", "TEXT REFERENCES cycles(id) ON DELETE SET NULL");
|
|
1208
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_tasks_cycle ON tasks(cycle_id) WHERE cycle_id IS NOT NULL");
|
|
1186
1209
|
}
|
|
1187
1210
|
function backfillTaskTags(db) {
|
|
1188
1211
|
try {
|
|
@@ -1222,6 +1245,7 @@ import { hostname as osHostname, platform as osPlatform } from "os";
|
|
|
1222
1245
|
function rowToMachine(row) {
|
|
1223
1246
|
return {
|
|
1224
1247
|
...row,
|
|
1248
|
+
is_primary: !!row.is_primary,
|
|
1225
1249
|
metadata: row.metadata ? JSON.parse(row.metadata) : {}
|
|
1226
1250
|
};
|
|
1227
1251
|
}
|
|
@@ -1238,7 +1262,7 @@ function getOrCreateLocalMachine(db) {
|
|
|
1238
1262
|
const id = uuid();
|
|
1239
1263
|
const ts = now();
|
|
1240
1264
|
d.run("INSERT INTO machines (id, name, hostname, platform, last_seen_at, metadata, created_at) VALUES (?, ?, ?, ?, ?, '{}', ?)", [id, name, host, plat, ts, ts]);
|
|
1241
|
-
return { id, name, hostname: host, platform: plat, last_seen_at: ts, metadata: {}, created_at: ts };
|
|
1265
|
+
return { id, name, hostname: host, platform: plat, ssh_address: null, is_primary: false, last_seen_at: ts, archived_at: null, metadata: {}, created_at: ts };
|
|
1242
1266
|
}
|
|
1243
1267
|
function getMachineId(db) {
|
|
1244
1268
|
if (_machineId)
|
|
@@ -1260,13 +1284,23 @@ function getMachineByName(name, db) {
|
|
|
1260
1284
|
const row = d.query("SELECT * FROM machines WHERE name = ?").get(name);
|
|
1261
1285
|
return row ? rowToMachine(row) : null;
|
|
1262
1286
|
}
|
|
1263
|
-
function listMachines(db) {
|
|
1287
|
+
function listMachines(db, includeArchived = false) {
|
|
1264
1288
|
const d = db || getDatabase();
|
|
1265
|
-
const
|
|
1289
|
+
const query = includeArchived ? "SELECT * FROM machines ORDER BY last_seen_at DESC" : "SELECT * FROM machines WHERE archived_at IS NULL ORDER BY last_seen_at DESC";
|
|
1290
|
+
const rows = d.query(query).all();
|
|
1266
1291
|
return rows.map(rowToMachine);
|
|
1267
1292
|
}
|
|
1268
1293
|
function deleteMachine(id, db) {
|
|
1269
1294
|
const d = db || getDatabase();
|
|
1295
|
+
const row = d.query("SELECT * FROM machines WHERE id = ?").get(id);
|
|
1296
|
+
if (!row)
|
|
1297
|
+
return false;
|
|
1298
|
+
if (row.is_primary)
|
|
1299
|
+
throw new Error("Cannot delete the primary machine");
|
|
1300
|
+
const activeCount = d.query("SELECT COUNT(*) as cnt FROM tasks WHERE machine_id = ? AND status IN ('pending', 'in_progress')").get(id);
|
|
1301
|
+
if (activeCount.cnt > 0) {
|
|
1302
|
+
throw new Error(`Cannot delete machine with ${activeCount.cnt} active/pending tasks`);
|
|
1303
|
+
}
|
|
1270
1304
|
const result = d.run("DELETE FROM machines WHERE id = ?", [id]);
|
|
1271
1305
|
return result.changes > 0;
|
|
1272
1306
|
}
|
|
@@ -2742,6 +2776,7 @@ function validateWebhookUrl(urlString) {
|
|
|
2742
2776
|
if (hostname === "169.254.169.254" || hostname.startsWith("169.254.")) {
|
|
2743
2777
|
return { valid: false, error: "Webhook URLs cannot target cloud metadata endpoints" };
|
|
2744
2778
|
}
|
|
2779
|
+
const cleanHostname = hostname.replace(/^\[|\]$/g, "");
|
|
2745
2780
|
const privateRanges = [
|
|
2746
2781
|
/^10\./,
|
|
2747
2782
|
/^172\.(1[6-9]|2\d|3[01])\./,
|
|
@@ -2752,7 +2787,7 @@ function validateWebhookUrl(urlString) {
|
|
|
2752
2787
|
/^fe80:/i
|
|
2753
2788
|
];
|
|
2754
2789
|
for (const range of privateRanges) {
|
|
2755
|
-
if (range.test(
|
|
2790
|
+
if (range.test(cleanHostname)) {
|
|
2756
2791
|
return { valid: false, error: "Webhook URLs cannot target private IP ranges" };
|
|
2757
2792
|
}
|
|
2758
2793
|
}
|
|
@@ -3008,14 +3043,15 @@ function createTask(input, db) {
|
|
|
3008
3043
|
let id = uuid();
|
|
3009
3044
|
for (let attempt = 0;attempt < 3; attempt++) {
|
|
3010
3045
|
try {
|
|
3011
|
-
d.run(`INSERT INTO tasks (id, short_id, project_id, parent_id, plan_id, task_list_id, title, description, status, priority, agent_id, assigned_to, session_id, working_dir, tags, metadata, version, created_at, updated_at, due_at, estimated_minutes, requires_approval, approved_by, approved_at, recurrence_rule, recurrence_parent_id, spawns_template_id, reason, spawned_from_session, assigned_by, assigned_from_project, task_type)
|
|
3012
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
3046
|
+
d.run(`INSERT INTO tasks (id, short_id, project_id, parent_id, plan_id, task_list_id, cycle_id, title, description, status, priority, agent_id, assigned_to, session_id, working_dir, tags, metadata, version, created_at, updated_at, due_at, estimated_minutes, requires_approval, approved_by, approved_at, recurrence_rule, recurrence_parent_id, spawns_template_id, reason, spawned_from_session, assigned_by, assigned_from_project, task_type)
|
|
3047
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
3013
3048
|
id,
|
|
3014
3049
|
null,
|
|
3015
3050
|
input.project_id || null,
|
|
3016
3051
|
input.parent_id || null,
|
|
3017
3052
|
input.plan_id || null,
|
|
3018
3053
|
input.task_list_id || null,
|
|
3054
|
+
input.cycle_id || null,
|
|
3019
3055
|
input.title,
|
|
3020
3056
|
input.description || null,
|
|
3021
3057
|
input.status || "pending",
|
|
@@ -4700,6 +4736,137 @@ function logCost(taskId, tokens, usd, db) {
|
|
|
4700
4736
|
const d = db || getDatabase();
|
|
4701
4737
|
d.run("UPDATE tasks SET cost_tokens = cost_tokens + ?, cost_usd = cost_usd + ?, updated_at = ? WHERE id = ?", [tokens, usd, now(), taskId]);
|
|
4702
4738
|
}
|
|
4739
|
+
// src/db/cycles.ts
|
|
4740
|
+
init_database();
|
|
4741
|
+
function createCycle(input, db) {
|
|
4742
|
+
const d = db || getDatabase();
|
|
4743
|
+
const id = crypto.randomUUID();
|
|
4744
|
+
const project_id = input.project_id || null;
|
|
4745
|
+
const duration_weeks = input.duration_weeks ?? 1;
|
|
4746
|
+
const start = new Date(input.start_date);
|
|
4747
|
+
const end_date = new Date(start);
|
|
4748
|
+
end_date.setDate(end_date.getDate() + duration_weeks * 7);
|
|
4749
|
+
const number = input.number ?? getNextCycleNumber(project_id, d);
|
|
4750
|
+
const stmt = d.prepare(`
|
|
4751
|
+
INSERT INTO cycles (id, project_id, number, start_date, end_date, duration_weeks, status)
|
|
4752
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
4753
|
+
`);
|
|
4754
|
+
stmt.run(id, project_id, number, input.start_date, end_date.toISOString().split("T")[0], duration_weeks, input.status || "active");
|
|
4755
|
+
return getCycle(id, d);
|
|
4756
|
+
}
|
|
4757
|
+
function getNextCycleNumber(project_id, db) {
|
|
4758
|
+
if (!project_id)
|
|
4759
|
+
return 1;
|
|
4760
|
+
const row = db.query("SELECT MAX(number) as max_num FROM cycles WHERE project_id = ?").get(project_id);
|
|
4761
|
+
return (row?.max_num ?? 0) + 1;
|
|
4762
|
+
}
|
|
4763
|
+
function getCycle(id, db) {
|
|
4764
|
+
const d = db || getDatabase();
|
|
4765
|
+
return d.query("SELECT * FROM cycles WHERE id = ?").get(id);
|
|
4766
|
+
}
|
|
4767
|
+
function getCycleByNumber(project_id, number, db) {
|
|
4768
|
+
const d = db || getDatabase();
|
|
4769
|
+
return d.query("SELECT * FROM cycles WHERE project_id = ? AND number = ?").get(project_id, number);
|
|
4770
|
+
}
|
|
4771
|
+
function listCycles(options = {}, db) {
|
|
4772
|
+
const d = db || getDatabase();
|
|
4773
|
+
let sql = "SELECT * FROM cycles WHERE 1=1";
|
|
4774
|
+
const params = [];
|
|
4775
|
+
if (options.project_id) {
|
|
4776
|
+
sql += " AND project_id = ?";
|
|
4777
|
+
params.push(options.project_id);
|
|
4778
|
+
}
|
|
4779
|
+
if (options.status) {
|
|
4780
|
+
sql += " AND status = ?";
|
|
4781
|
+
params.push(options.status);
|
|
4782
|
+
}
|
|
4783
|
+
sql += " ORDER BY start_date DESC";
|
|
4784
|
+
if (options.limit)
|
|
4785
|
+
sql += " LIMIT ?";
|
|
4786
|
+
if (options.limit)
|
|
4787
|
+
params.push(options.limit);
|
|
4788
|
+
return d.prepare(sql).all(...params);
|
|
4789
|
+
}
|
|
4790
|
+
function updateCycle(id, input, db) {
|
|
4791
|
+
const d = db || getDatabase();
|
|
4792
|
+
const existing = getCycle(id, d);
|
|
4793
|
+
if (!existing)
|
|
4794
|
+
return null;
|
|
4795
|
+
const parts = [];
|
|
4796
|
+
const params = [];
|
|
4797
|
+
if (input.status !== undefined) {
|
|
4798
|
+
parts.push("status = ?");
|
|
4799
|
+
params.push(input.status);
|
|
4800
|
+
}
|
|
4801
|
+
if (input.start_date !== undefined) {
|
|
4802
|
+
parts.push("start_date = ?");
|
|
4803
|
+
params.push(input.start_date);
|
|
4804
|
+
}
|
|
4805
|
+
if (input.end_date !== undefined) {
|
|
4806
|
+
parts.push("end_date = ?");
|
|
4807
|
+
params.push(input.end_date);
|
|
4808
|
+
}
|
|
4809
|
+
parts.push("updated_at = datetime('now')");
|
|
4810
|
+
params.push(id);
|
|
4811
|
+
d.prepare(`UPDATE cycles SET ${parts.join(", ")} WHERE id = ?`).run(...params);
|
|
4812
|
+
return getCycle(id, d);
|
|
4813
|
+
}
|
|
4814
|
+
function deleteCycle(id, db) {
|
|
4815
|
+
const d = db || getDatabase();
|
|
4816
|
+
const result = d.prepare("DELETE FROM cycles WHERE id = ?").run(id);
|
|
4817
|
+
return result.changes > 0;
|
|
4818
|
+
}
|
|
4819
|
+
function generateCycles(project_id, options, db) {
|
|
4820
|
+
const d = db || getDatabase();
|
|
4821
|
+
const duration_weeks = options.duration_weeks ?? 1;
|
|
4822
|
+
const cycles = [];
|
|
4823
|
+
let startDate = new Date(options.start_date);
|
|
4824
|
+
for (let i = 0;i < options.count; i++) {
|
|
4825
|
+
const cycle = createCycle({
|
|
4826
|
+
project_id,
|
|
4827
|
+
start_date: startDate.toISOString().split("T")[0],
|
|
4828
|
+
duration_weeks
|
|
4829
|
+
}, d);
|
|
4830
|
+
cycles.push(cycle);
|
|
4831
|
+
startDate.setDate(startDate.getDate() + duration_weeks * 7);
|
|
4832
|
+
}
|
|
4833
|
+
return cycles;
|
|
4834
|
+
}
|
|
4835
|
+
function getCurrentCycle(project_id, db) {
|
|
4836
|
+
const d = db || getDatabase();
|
|
4837
|
+
const today = new Date().toISOString().split("T")[0];
|
|
4838
|
+
return d.query("SELECT * FROM cycles WHERE project_id = ? AND status = 'active' AND start_date <= ? AND end_date >= ? ORDER BY number DESC LIMIT 1").get(project_id, today, today);
|
|
4839
|
+
}
|
|
4840
|
+
function getNextCycle(project_id, db) {
|
|
4841
|
+
const d = db || getDatabase();
|
|
4842
|
+
const today = new Date().toISOString().split("T")[0];
|
|
4843
|
+
return d.query("SELECT * FROM cycles WHERE project_id = ? AND start_date > ? ORDER BY number ASC LIMIT 1").get(project_id, today);
|
|
4844
|
+
}
|
|
4845
|
+
function getCycleStats(cycle_id, db) {
|
|
4846
|
+
const d = db || getDatabase();
|
|
4847
|
+
const row = d.query(`
|
|
4848
|
+
SELECT
|
|
4849
|
+
COUNT(*) as task_count,
|
|
4850
|
+
COALESCE(SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END), 0) as completed_count,
|
|
4851
|
+
COALESCE(SUM(CASE WHEN status = 'in_progress' THEN 1 ELSE 0 END), 0) as started_count,
|
|
4852
|
+
COALESCE(SUM(CASE WHEN status NOT IN ('completed', 'cancelled') THEN 1 ELSE 0 END), 0) as uncompleted_count
|
|
4853
|
+
FROM tasks WHERE cycle_id = ?
|
|
4854
|
+
`).get(cycle_id);
|
|
4855
|
+
return row ?? null;
|
|
4856
|
+
}
|
|
4857
|
+
function listCyclesWithStats(options = {}, db) {
|
|
4858
|
+
const cycles = listCycles(options, db);
|
|
4859
|
+
return cycles.map((cycle) => {
|
|
4860
|
+
const stats = getCycleStats(cycle.id, db);
|
|
4861
|
+
return {
|
|
4862
|
+
...cycle,
|
|
4863
|
+
task_count: stats?.task_count ?? 0,
|
|
4864
|
+
completed_count: stats?.completed_count ?? 0,
|
|
4865
|
+
started_count: stats?.started_count ?? 0,
|
|
4866
|
+
uncompleted_count: stats?.uncompleted_count ?? 0
|
|
4867
|
+
};
|
|
4868
|
+
});
|
|
4869
|
+
}
|
|
4703
4870
|
// src/db/plans.ts
|
|
4704
4871
|
init_types();
|
|
4705
4872
|
init_database();
|
|
@@ -17829,6 +17996,7 @@ export {
|
|
|
17829
17996
|
updatePlan,
|
|
17830
17997
|
updateOrg,
|
|
17831
17998
|
updateDispatchStatus,
|
|
17999
|
+
updateCycle,
|
|
17832
18000
|
updateChecklistItemText,
|
|
17833
18001
|
updateAgentActivity,
|
|
17834
18002
|
updateAgent,
|
|
@@ -17905,6 +18073,8 @@ export {
|
|
|
17905
18073
|
listDispatches,
|
|
17906
18074
|
listDispatchLogs,
|
|
17907
18075
|
listDeliveries,
|
|
18076
|
+
listCyclesWithStats,
|
|
18077
|
+
listCycles,
|
|
17908
18078
|
listComments,
|
|
17909
18079
|
listAgents,
|
|
17910
18080
|
issueToTask,
|
|
@@ -17949,6 +18119,7 @@ export {
|
|
|
17949
18119
|
getOrg,
|
|
17950
18120
|
getOrCreateLocalMachine,
|
|
17951
18121
|
getNextTask,
|
|
18122
|
+
getNextCycle,
|
|
17952
18123
|
getMachineLocalPath,
|
|
17953
18124
|
getMachineId,
|
|
17954
18125
|
getMachineByName,
|
|
@@ -17961,6 +18132,10 @@ export {
|
|
|
17961
18132
|
getDispatch,
|
|
17962
18133
|
getDirectReports,
|
|
17963
18134
|
getDatabase,
|
|
18135
|
+
getCycleStats,
|
|
18136
|
+
getCycleByNumber,
|
|
18137
|
+
getCycle,
|
|
18138
|
+
getCurrentCycle,
|
|
17964
18139
|
getCriticalPath,
|
|
17965
18140
|
getCompletionGuardConfig,
|
|
17966
18141
|
getComment,
|
|
@@ -17975,6 +18150,7 @@ export {
|
|
|
17975
18150
|
getAgent,
|
|
17976
18151
|
getActiveWork,
|
|
17977
18152
|
getActiveModel,
|
|
18153
|
+
generateCycles,
|
|
17978
18154
|
gatherTrainingData,
|
|
17979
18155
|
formatTmuxTarget,
|
|
17980
18156
|
formatSingleTask,
|
|
@@ -18002,6 +18178,7 @@ export {
|
|
|
18002
18178
|
deletePlan,
|
|
18003
18179
|
deleteOrg,
|
|
18004
18180
|
deleteMachine,
|
|
18181
|
+
deleteCycle,
|
|
18005
18182
|
deleteComment,
|
|
18006
18183
|
deleteAgent,
|
|
18007
18184
|
defaultSyncAgents,
|
|
@@ -18017,6 +18194,7 @@ export {
|
|
|
18017
18194
|
createHandoff,
|
|
18018
18195
|
createDispatchLog,
|
|
18019
18196
|
createDispatch,
|
|
18197
|
+
createCycle,
|
|
18020
18198
|
createClient,
|
|
18021
18199
|
countTasks,
|
|
18022
18200
|
completeTask,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-assign.d.ts","sourceRoot":"","sources":["../../src/lib/auto-assign.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,WAAW,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"auto-assign.d.ts","sourceRoot":"","sources":["../../src/lib/auto-assign.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,WAAW,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA0BvE;AA8DD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8D7F"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export interface TodosConfig {
|
|
|
29
29
|
/** Per-project agent name pools, keyed by working directory path prefix. */
|
|
30
30
|
project_pools?: Record<string, string[]>;
|
|
31
31
|
}
|
|
32
|
+
export declare function resetConfig(): void;
|
|
32
33
|
export declare function loadConfig(): TodosConfig;
|
|
33
34
|
export declare function getSyncAgentsFromConfig(): string[] | null;
|
|
34
35
|
export declare function getAgentTaskListId(agent: string): string | null;
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1D,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1D,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAkBD,wBAAgB,WAAW,SAE1B;AAMD,wBAAgB,UAAU,IAAI,WAAW,CAYxC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAG7D;AAUD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAmB3E;AAED,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CASrG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LogsClient } from "@hasna/logs";
|
|
2
|
+
export declare function getLogger(): LogsClient | null;
|
|
3
|
+
export declare function logError(message: string, opts?: {
|
|
4
|
+
service?: string;
|
|
5
|
+
stack?: string;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
traceId?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function logInfo(message: string, opts?: {
|
|
10
|
+
service?: string;
|
|
11
|
+
metadata?: Record<string, unknown>;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function logWarn(message: string, opts?: {
|
|
14
|
+
service?: string;
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,wBAAgB,SAAS,IAAI,UAAU,GAAG,IAAI,CAQ7C;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAgGA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E"}
|