@dmmulroy/overseer 0.2.2 → 0.3.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/dist/api/learnings.d.ts +2 -9
- package/dist/api/learnings.d.ts.map +1 -1
- package/dist/api/learnings.js +6 -16
- package/dist/api/learnings.js.map +1 -1
- package/dist/api/tasks.d.ts +29 -15
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +30 -14
- package/dist/api/tasks.js.map +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +4 -0
- package/dist/executor.js.map +1 -1
- package/dist/tests/integration.test.js +208 -43
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/types.d.ts +40 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
package/dist/api/learnings.d.ts
CHANGED
|
@@ -4,16 +4,9 @@ import type { Learning } from "../types.js";
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const learnings: {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
add(taskId: string, content: string, sourceTaskId?: string): Promise<Learning>;
|
|
10
|
-
/**
|
|
11
|
-
* List all learnings for a task
|
|
7
|
+
* List all learnings for a task.
|
|
8
|
+
* Includes learnings bubbled from completed child tasks.
|
|
12
9
|
*/
|
|
13
10
|
list(taskId: string): Promise<Learning[]>;
|
|
14
|
-
/**
|
|
15
|
-
* Delete a learning
|
|
16
|
-
*/
|
|
17
|
-
delete(id: string): Promise<void>;
|
|
18
11
|
};
|
|
19
12
|
//# sourceMappingURL=learnings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/api/learnings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/api/learnings.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;;OAGG;iBACgB,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAGhD,CAAC"}
|
package/dist/api/learnings.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Learnings API - typed wrapper around os learning commands
|
|
3
|
+
*
|
|
4
|
+
* Note: Learnings are now added via tasks.complete() with the learnings option.
|
|
5
|
+
* They bubble to immediate parent on completion, aligning with VCS state.
|
|
6
|
+
* This API only provides read access for viewing learnings.
|
|
3
7
|
*/
|
|
4
8
|
import { callCli } from "../cli.js";
|
|
5
9
|
/**
|
|
@@ -7,25 +11,11 @@ import { callCli } from "../cli.js";
|
|
|
7
11
|
*/
|
|
8
12
|
export const learnings = {
|
|
9
13
|
/**
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
async add(taskId, content, sourceTaskId) {
|
|
13
|
-
const args = ["learning", "add", taskId, content];
|
|
14
|
-
if (sourceTaskId)
|
|
15
|
-
args.push("--source", sourceTaskId);
|
|
16
|
-
return (await callCli(args));
|
|
17
|
-
},
|
|
18
|
-
/**
|
|
19
|
-
* List all learnings for a task
|
|
14
|
+
* List all learnings for a task.
|
|
15
|
+
* Includes learnings bubbled from completed child tasks.
|
|
20
16
|
*/
|
|
21
17
|
async list(taskId) {
|
|
22
18
|
return (await callCli(["learning", "list", taskId]));
|
|
23
19
|
},
|
|
24
|
-
/**
|
|
25
|
-
* Delete a learning
|
|
26
|
-
*/
|
|
27
|
-
async delete(id) {
|
|
28
|
-
await callCli(["learning", "delete", id]);
|
|
29
|
-
},
|
|
30
20
|
};
|
|
31
21
|
//# sourceMappingURL=learnings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/api/learnings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/api/learnings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAe,CAAC;IACrE,CAAC;CACF,CAAC"}
|
package/dist/api/tasks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Task } from "../types.js";
|
|
1
|
+
import type { Task, TaskWithContext } from "../types.js";
|
|
2
2
|
export interface TaskFilter {
|
|
3
3
|
parentId?: string;
|
|
4
4
|
ready?: boolean;
|
|
@@ -22,48 +22,62 @@ export interface UpdateTaskInput {
|
|
|
22
22
|
*/
|
|
23
23
|
export declare const tasks: {
|
|
24
24
|
/**
|
|
25
|
-
* List tasks with optional filters
|
|
25
|
+
* List tasks with optional filters.
|
|
26
|
+
* Returns tasks without context chain or inherited learnings.
|
|
26
27
|
*/
|
|
27
28
|
list(filter?: TaskFilter): Promise<Task[]>;
|
|
28
29
|
/**
|
|
29
|
-
* Get single task with full context and learnings
|
|
30
|
+
* Get single task with full context chain and inherited learnings.
|
|
30
31
|
*/
|
|
31
|
-
get(id: string): Promise<
|
|
32
|
+
get(id: string): Promise<TaskWithContext>;
|
|
32
33
|
/**
|
|
33
|
-
* Create new task
|
|
34
|
+
* Create new task.
|
|
35
|
+
* Returns task without context chain or inherited learnings.
|
|
34
36
|
*/
|
|
35
37
|
create(input: CreateTaskInput): Promise<Task>;
|
|
36
38
|
/**
|
|
37
|
-
* Update existing task
|
|
39
|
+
* Update existing task.
|
|
40
|
+
* Returns task without context chain or inherited learnings.
|
|
38
41
|
*/
|
|
39
42
|
update(id: string, input: UpdateTaskInput): Promise<Task>;
|
|
40
43
|
/**
|
|
41
|
-
* Mark task as started
|
|
44
|
+
* Mark task as started.
|
|
45
|
+
* Follows blockers to find startable work, cascades to deepest leaf.
|
|
46
|
+
* Creates VCS bookmark for started task (if VCS available).
|
|
47
|
+
* Returns the task that was actually started.
|
|
42
48
|
*/
|
|
43
49
|
start(id: string): Promise<Task>;
|
|
44
50
|
/**
|
|
45
|
-
* Complete task with optional result
|
|
51
|
+
* Complete task with optional result and learnings.
|
|
52
|
+
* Learnings are attached to the task and bubbled to immediate parent.
|
|
53
|
+
* Auto-bubbles up if all siblings done and parent unblocked.
|
|
54
|
+
* Squashes commits and captures commit SHA (if VCS available).
|
|
46
55
|
*/
|
|
47
|
-
complete(id: string,
|
|
56
|
+
complete(id: string, options?: {
|
|
57
|
+
result?: string;
|
|
58
|
+
learnings?: string[];
|
|
59
|
+
}): Promise<Task>;
|
|
48
60
|
/**
|
|
49
|
-
* Reopen completed task
|
|
61
|
+
* Reopen completed task.
|
|
50
62
|
*/
|
|
51
63
|
reopen(id: string): Promise<Task>;
|
|
52
64
|
/**
|
|
53
|
-
* Delete task (cascades to children)
|
|
65
|
+
* Delete task (cascades to children and learnings).
|
|
54
66
|
*/
|
|
55
67
|
delete(id: string): Promise<void>;
|
|
56
68
|
/**
|
|
57
|
-
* Add blocker relationship
|
|
69
|
+
* Add blocker relationship.
|
|
70
|
+
* Validates: no self-blocks, no ancestor/descendant blocks, no cycles.
|
|
58
71
|
*/
|
|
59
72
|
block(taskId: string, blockerId: string): Promise<void>;
|
|
60
73
|
/**
|
|
61
|
-
* Remove blocker relationship
|
|
74
|
+
* Remove blocker relationship.
|
|
62
75
|
*/
|
|
63
76
|
unblock(taskId: string, blockerId: string): Promise<void>;
|
|
64
77
|
/**
|
|
65
|
-
* Get next ready task
|
|
78
|
+
* Get next ready task (DFS to find deepest unblocked incomplete leaf).
|
|
79
|
+
* Returns task with full context chain and inherited learnings, or null if no ready tasks.
|
|
66
80
|
*/
|
|
67
|
-
nextReady(milestoneId?: string): Promise<
|
|
81
|
+
nextReady(milestoneId?: string): Promise<TaskWithContext | null>;
|
|
68
82
|
};
|
|
69
83
|
//# sourceMappingURL=tasks.d.ts.map
|
package/dist/api/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/api/tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/api/tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB;;;OAGG;kBACiB,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQhD;;OAEG;YACW,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI/C;;;OAGG;kBACiB,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD;;;OAGG;eACc,MAAM,SAAS,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D;;;;;OAKG;cACa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC;;;;;OAKG;iBAEG,MAAM,YACA;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;;OAGG;kBACiB,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;OAEG;oBACmB,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;OAGG;4BAC2B,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;CAKvE,CAAC"}
|
package/dist/api/tasks.js
CHANGED
|
@@ -7,7 +7,8 @@ import { callCli } from "../cli.js";
|
|
|
7
7
|
*/
|
|
8
8
|
export const tasks = {
|
|
9
9
|
/**
|
|
10
|
-
* List tasks with optional filters
|
|
10
|
+
* List tasks with optional filters.
|
|
11
|
+
* Returns tasks without context chain or inherited learnings.
|
|
11
12
|
*/
|
|
12
13
|
async list(filter) {
|
|
13
14
|
const args = ["task", "list"];
|
|
@@ -20,13 +21,14 @@ export const tasks = {
|
|
|
20
21
|
return (await callCli(args));
|
|
21
22
|
},
|
|
22
23
|
/**
|
|
23
|
-
* Get single task with full context and learnings
|
|
24
|
+
* Get single task with full context chain and inherited learnings.
|
|
24
25
|
*/
|
|
25
26
|
async get(id) {
|
|
26
27
|
return (await callCli(["task", "get", id]));
|
|
27
28
|
},
|
|
28
29
|
/**
|
|
29
|
-
* Create new task
|
|
30
|
+
* Create new task.
|
|
31
|
+
* Returns task without context chain or inherited learnings.
|
|
30
32
|
*/
|
|
31
33
|
async create(input) {
|
|
32
34
|
const args = ["task", "create", "-d", input.description];
|
|
@@ -42,7 +44,8 @@ export const tasks = {
|
|
|
42
44
|
return (await callCli(args));
|
|
43
45
|
},
|
|
44
46
|
/**
|
|
45
|
-
* Update existing task
|
|
47
|
+
* Update existing task.
|
|
48
|
+
* Returns task without context chain or inherited learnings.
|
|
46
49
|
*/
|
|
47
50
|
async update(id, input) {
|
|
48
51
|
const args = ["task", "update", id];
|
|
@@ -57,46 +60,59 @@ export const tasks = {
|
|
|
57
60
|
return (await callCli(args));
|
|
58
61
|
},
|
|
59
62
|
/**
|
|
60
|
-
* Mark task as started
|
|
63
|
+
* Mark task as started.
|
|
64
|
+
* Follows blockers to find startable work, cascades to deepest leaf.
|
|
65
|
+
* Creates VCS bookmark for started task (if VCS available).
|
|
66
|
+
* Returns the task that was actually started.
|
|
61
67
|
*/
|
|
62
68
|
async start(id) {
|
|
63
69
|
return (await callCli(["task", "start", id]));
|
|
64
70
|
},
|
|
65
71
|
/**
|
|
66
|
-
* Complete task with optional result
|
|
72
|
+
* Complete task with optional result and learnings.
|
|
73
|
+
* Learnings are attached to the task and bubbled to immediate parent.
|
|
74
|
+
* Auto-bubbles up if all siblings done and parent unblocked.
|
|
75
|
+
* Squashes commits and captures commit SHA (if VCS available).
|
|
67
76
|
*/
|
|
68
|
-
async complete(id,
|
|
77
|
+
async complete(id, options) {
|
|
69
78
|
const args = ["task", "complete", id];
|
|
70
|
-
if (result)
|
|
71
|
-
args.push("--result", result);
|
|
79
|
+
if (options?.result)
|
|
80
|
+
args.push("--result", options.result);
|
|
81
|
+
if (options?.learnings) {
|
|
82
|
+
for (const learning of options.learnings) {
|
|
83
|
+
args.push("--learning", learning);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
72
86
|
return (await callCli(args));
|
|
73
87
|
},
|
|
74
88
|
/**
|
|
75
|
-
* Reopen completed task
|
|
89
|
+
* Reopen completed task.
|
|
76
90
|
*/
|
|
77
91
|
async reopen(id) {
|
|
78
92
|
return (await callCli(["task", "reopen", id]));
|
|
79
93
|
},
|
|
80
94
|
/**
|
|
81
|
-
* Delete task (cascades to children)
|
|
95
|
+
* Delete task (cascades to children and learnings).
|
|
82
96
|
*/
|
|
83
97
|
async delete(id) {
|
|
84
98
|
await callCli(["task", "delete", id]);
|
|
85
99
|
},
|
|
86
100
|
/**
|
|
87
|
-
* Add blocker relationship
|
|
101
|
+
* Add blocker relationship.
|
|
102
|
+
* Validates: no self-blocks, no ancestor/descendant blocks, no cycles.
|
|
88
103
|
*/
|
|
89
104
|
async block(taskId, blockerId) {
|
|
90
105
|
await callCli(["task", "block", taskId, "--by", blockerId]);
|
|
91
106
|
},
|
|
92
107
|
/**
|
|
93
|
-
* Remove blocker relationship
|
|
108
|
+
* Remove blocker relationship.
|
|
94
109
|
*/
|
|
95
110
|
async unblock(taskId, blockerId) {
|
|
96
111
|
await callCli(["task", "unblock", taskId, "--by", blockerId]);
|
|
97
112
|
},
|
|
98
113
|
/**
|
|
99
|
-
* Get next ready task
|
|
114
|
+
* Get next ready task (DFS to find deepest unblocked incomplete leaf).
|
|
115
|
+
* Returns task with full context chain and inherited learnings, or null if no ready tasks.
|
|
100
116
|
*/
|
|
101
117
|
async nextReady(milestoneId) {
|
|
102
118
|
const args = ["task", "next-ready"];
|
package/dist/api/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/api/tasks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/api/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6E5D;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6E5D;AAwBD;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC"}
|
package/dist/executor.js
CHANGED
|
@@ -87,6 +87,10 @@ export async function execute(code) {
|
|
|
87
87
|
* Truncate large outputs to prevent response overflow
|
|
88
88
|
*/
|
|
89
89
|
function truncateOutput(result) {
|
|
90
|
+
// Handle undefined explicitly (JSON.stringify returns undefined for undefined)
|
|
91
|
+
if (result === undefined) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
90
94
|
const json = JSON.stringify(result, null, 2);
|
|
91
95
|
if (json.length <= MAX_OUTPUT_SIZE) {
|
|
92
96
|
return result;
|
package/dist/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,13 @@ before(async () => {
|
|
|
29
29
|
// Run CLI from test directory (where jj repo is)
|
|
30
30
|
process.env.OVERSEER_CLI_CWD = testDir;
|
|
31
31
|
// Initialize jj repo for VCS tests
|
|
32
|
+
// Create with initial commit history to avoid jj-lib panics when squashing
|
|
33
|
+
// (root commit has no parents, causing assertion failure)
|
|
32
34
|
await runCommand("jj", ["git", "init", "--colocate", testDir]);
|
|
35
|
+
// Create a file and commit to establish parent for working copy
|
|
36
|
+
await runCommand("sh", ["-c", `echo "init" > "${testDir}/.overseer-init"`]);
|
|
33
37
|
await runCommand("jj", ["describe", "-m", "initial"], testDir);
|
|
38
|
+
await runCommand("jj", ["new"], testDir);
|
|
34
39
|
});
|
|
35
40
|
after(async () => {
|
|
36
41
|
// Restore original env vars
|
|
@@ -180,8 +185,8 @@ describe("Integration Tests", () => {
|
|
|
180
185
|
});
|
|
181
186
|
it("should add and remove blockers", async () => {
|
|
182
187
|
const result = await executeCode(`
|
|
183
|
-
const task1 = await tasks.create({ description: "
|
|
184
|
-
const task2 = await tasks.create({ description: "
|
|
188
|
+
const task1 = await tasks.create({ description: "Blocker test task 1" });
|
|
189
|
+
const task2 = await tasks.create({ description: "Blocker test task 2" });
|
|
185
190
|
|
|
186
191
|
await tasks.block(task1.id, task2.id);
|
|
187
192
|
const blocked = await tasks.get(task1.id);
|
|
@@ -190,12 +195,13 @@ describe("Integration Tests", () => {
|
|
|
190
195
|
const unblocked = await tasks.get(task1.id);
|
|
191
196
|
|
|
192
197
|
return {
|
|
193
|
-
blockedCount: blocked.blockedBy.length,
|
|
194
|
-
unblockedCount: unblocked.blockedBy.length
|
|
198
|
+
blockedCount: (blocked.blockedBy || []).length,
|
|
199
|
+
unblockedCount: (unblocked.blockedBy || []).length,
|
|
200
|
+
blockedBy: blocked.blockedBy
|
|
195
201
|
};
|
|
196
202
|
`);
|
|
197
203
|
const counts = result;
|
|
198
|
-
assert.equal(counts.blockedCount, 1);
|
|
204
|
+
assert.equal(counts.blockedCount, 1, `Expected 1 blocker, got ${counts.blockedCount}. blockedBy: ${JSON.stringify(counts.blockedBy)}`);
|
|
199
205
|
assert.equal(counts.unblockedCount, 0);
|
|
200
206
|
});
|
|
201
207
|
it("should filter tasks by ready status", async () => {
|
|
@@ -224,51 +230,206 @@ describe("Integration Tests", () => {
|
|
|
224
230
|
assert.equal(flags.hasReady, true, "Unblocked task should be ready");
|
|
225
231
|
});
|
|
226
232
|
});
|
|
233
|
+
describe("NextReady API", () => {
|
|
234
|
+
it("should return null when no tasks are ready", async () => {
|
|
235
|
+
const result = await executeCode(`
|
|
236
|
+
// Create a blocked milestone (blocked by another task)
|
|
237
|
+
const blocker = await tasks.create({ description: "Blocker task", priority: 1 });
|
|
238
|
+
const blockedMilestone = await tasks.create({
|
|
239
|
+
description: "Blocked milestone",
|
|
240
|
+
priority: 5,
|
|
241
|
+
blockedBy: [blocker.id]
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// nextReady with milestoneId should return null since milestone is blocked
|
|
245
|
+
const next = await tasks.nextReady(blockedMilestone.id);
|
|
246
|
+
return next;
|
|
247
|
+
`);
|
|
248
|
+
assert.equal(result, null, "nextReady should return null for blocked milestone");
|
|
249
|
+
});
|
|
250
|
+
it("should return task with context when ready", async () => {
|
|
251
|
+
const result = await executeCode(`
|
|
252
|
+
// Create unblocked milestone
|
|
253
|
+
const milestone = await tasks.create({
|
|
254
|
+
description: "Ready milestone",
|
|
255
|
+
context: "Milestone context",
|
|
256
|
+
priority: 5
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
const next = await tasks.nextReady(milestone.id);
|
|
260
|
+
return next;
|
|
261
|
+
`);
|
|
262
|
+
assert.ok(result, "nextReady should return a task");
|
|
263
|
+
const task = result;
|
|
264
|
+
assert.ok(task.id, "Task should have id");
|
|
265
|
+
assert.ok(task.context, "Task should have context chain");
|
|
266
|
+
const context = task.context;
|
|
267
|
+
assert.equal(context.own, "Milestone context", "Context should include own");
|
|
268
|
+
});
|
|
269
|
+
it("should return deepest ready leaf in hierarchy", async () => {
|
|
270
|
+
const result = await executeCode(`
|
|
271
|
+
// Create hierarchy: milestone -> task -> subtask
|
|
272
|
+
const milestone = await tasks.create({
|
|
273
|
+
description: "M",
|
|
274
|
+
context: "MC",
|
|
275
|
+
priority: 5
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
const task = await tasks.create({
|
|
279
|
+
description: "T",
|
|
280
|
+
context: "TC",
|
|
281
|
+
parentId: milestone.id,
|
|
282
|
+
priority: 5
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
const subtask = await tasks.create({
|
|
286
|
+
description: "S",
|
|
287
|
+
context: "SC",
|
|
288
|
+
parentId: task.id,
|
|
289
|
+
priority: 5
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
const next = await tasks.nextReady(milestone.id);
|
|
293
|
+
return {
|
|
294
|
+
nextId: next?.id,
|
|
295
|
+
subtaskId: subtask.id,
|
|
296
|
+
depth: next?.depth
|
|
297
|
+
};
|
|
298
|
+
`);
|
|
299
|
+
const res = result;
|
|
300
|
+
assert.equal(res.nextId, res.subtaskId, "Should return deepest leaf (subtask)");
|
|
301
|
+
assert.equal(res.depth, 2, "Subtask should have depth 2");
|
|
302
|
+
});
|
|
303
|
+
it("should return task with inherited learnings", async () => {
|
|
304
|
+
const result = await executeCode(`
|
|
305
|
+
const milestone = await tasks.create({
|
|
306
|
+
description: "M",
|
|
307
|
+
priority: 5
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
// Create task under milestone, add sibling to prevent auto-complete
|
|
311
|
+
const task1 = await tasks.create({
|
|
312
|
+
description: "T1",
|
|
313
|
+
parentId: milestone.id,
|
|
314
|
+
priority: 5
|
|
315
|
+
});
|
|
316
|
+
const task2 = await tasks.create({
|
|
317
|
+
description: "T2",
|
|
318
|
+
parentId: milestone.id,
|
|
319
|
+
priority: 5
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
// Complete task1 with learning - bubbles to milestone
|
|
323
|
+
await tasks.complete(task1.id, { learnings: ["Milestone learning"] });
|
|
324
|
+
|
|
325
|
+
// task2 should see learning via milestone
|
|
326
|
+
const next = await tasks.nextReady(milestone.id);
|
|
327
|
+
return next?.learnings;
|
|
328
|
+
`);
|
|
329
|
+
assert.ok(result, "Should have learnings");
|
|
330
|
+
const inherited = result;
|
|
331
|
+
assert.ok(inherited.milestone, "Should have milestone learnings");
|
|
332
|
+
assert.equal(inherited.milestone.length, 1, "Should have 1 milestone learning");
|
|
333
|
+
});
|
|
334
|
+
it("should skip blocked subtrees", async () => {
|
|
335
|
+
const result = await executeCode(`
|
|
336
|
+
// Create blocker (separate milestone)
|
|
337
|
+
const blocker = await tasks.create({ description: "Blocker for skip test", priority: 1 });
|
|
338
|
+
|
|
339
|
+
// Create blocked milestone (high priority)
|
|
340
|
+
const blockedM = await tasks.create({
|
|
341
|
+
description: "Blocked M for skip test",
|
|
342
|
+
priority: 5,
|
|
343
|
+
blockedBy: [blocker.id]
|
|
344
|
+
});
|
|
345
|
+
const blockedTask = await tasks.create({
|
|
346
|
+
description: "Blocked T for skip test",
|
|
347
|
+
parentId: blockedM.id,
|
|
348
|
+
priority: 5
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
// nextReady within the blocked milestone should return null
|
|
352
|
+
const nextInBlocked = await tasks.nextReady(blockedM.id);
|
|
353
|
+
|
|
354
|
+
return {
|
|
355
|
+
blockedMilestoneNext: nextInBlocked,
|
|
356
|
+
blockedTaskId: blockedTask.id
|
|
357
|
+
};
|
|
358
|
+
`);
|
|
359
|
+
const res = result;
|
|
360
|
+
// nextReady within blocked milestone should return null
|
|
361
|
+
assert.equal(res.blockedMilestoneNext, null, "nextReady in blocked milestone should return null");
|
|
362
|
+
});
|
|
363
|
+
});
|
|
227
364
|
describe("Learnings API", () => {
|
|
228
|
-
it("should add and list
|
|
365
|
+
it("should add learnings via complete and list them", async () => {
|
|
229
366
|
const result = await executeCode(`
|
|
230
|
-
const
|
|
367
|
+
const parent = await tasks.create({ description: "Parent" });
|
|
368
|
+
const task = await tasks.create({
|
|
369
|
+
description: "Task with learning",
|
|
370
|
+
parentId: parent.id
|
|
371
|
+
});
|
|
231
372
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
"Use TypeScript for type safety"
|
|
235
|
-
);
|
|
373
|
+
// Add learnings via complete
|
|
374
|
+
await tasks.complete(task.id, {
|
|
375
|
+
learnings: ["Use TypeScript for type safety"]
|
|
376
|
+
});
|
|
236
377
|
|
|
378
|
+
// Learnings should be on task
|
|
237
379
|
const list = await learnings.list(task.id);
|
|
238
380
|
|
|
239
|
-
return {
|
|
381
|
+
return { list, content: list[0]?.content };
|
|
240
382
|
`);
|
|
241
383
|
assert.ok(result);
|
|
242
|
-
const {
|
|
243
|
-
assert.ok(learning.id);
|
|
384
|
+
const { list, content } = result;
|
|
244
385
|
assert.ok(Array.isArray(list));
|
|
245
386
|
assert.equal(list.length, 1);
|
|
387
|
+
assert.equal(content, "Use TypeScript for type safety");
|
|
246
388
|
});
|
|
247
|
-
it("should
|
|
389
|
+
it("should bubble learnings to parent on complete", async () => {
|
|
248
390
|
const result = await executeCode(`
|
|
249
|
-
const
|
|
250
|
-
const
|
|
391
|
+
const parent = await tasks.create({ description: "Parent" });
|
|
392
|
+
const task = await tasks.create({
|
|
393
|
+
description: "Task",
|
|
394
|
+
parentId: parent.id
|
|
395
|
+
});
|
|
251
396
|
|
|
252
|
-
|
|
253
|
-
|
|
397
|
+
// Complete with learning - should bubble to parent
|
|
398
|
+
await tasks.complete(task.id, { learnings: ["Test learning"] });
|
|
399
|
+
|
|
400
|
+
// Parent should have the learning
|
|
401
|
+
const parentLearnings = await learnings.list(parent.id);
|
|
254
402
|
|
|
255
|
-
return
|
|
403
|
+
return {
|
|
404
|
+
parentCount: parentLearnings.length,
|
|
405
|
+
content: parentLearnings[0]?.content
|
|
406
|
+
};
|
|
256
407
|
`);
|
|
257
|
-
|
|
408
|
+
const res = result;
|
|
409
|
+
assert.equal(res.parentCount, 1);
|
|
410
|
+
assert.equal(res.content, "Test learning");
|
|
258
411
|
});
|
|
259
412
|
it("should include learnings in task get", async () => {
|
|
260
413
|
const result = await executeCode(`
|
|
261
414
|
const milestone = await tasks.create({
|
|
262
415
|
description: "Milestone"
|
|
263
416
|
});
|
|
264
|
-
await learnings.add(milestone.id, "Milestone learning");
|
|
265
417
|
|
|
266
|
-
|
|
267
|
-
|
|
418
|
+
// Create task and sibling to prevent milestone auto-complete
|
|
419
|
+
const task1 = await tasks.create({
|
|
420
|
+
description: "Task 1",
|
|
421
|
+
parentId: milestone.id
|
|
422
|
+
});
|
|
423
|
+
const task2 = await tasks.create({
|
|
424
|
+
description: "Task 2",
|
|
268
425
|
parentId: milestone.id
|
|
269
426
|
});
|
|
270
427
|
|
|
271
|
-
|
|
428
|
+
// Complete task1 with learning - bubbles to milestone
|
|
429
|
+
await tasks.complete(task1.id, { learnings: ["Milestone learning"] });
|
|
430
|
+
|
|
431
|
+
// task2 should inherit milestone learnings
|
|
432
|
+
const fetched = await tasks.get(task2.id);
|
|
272
433
|
return fetched.learnings;
|
|
273
434
|
`);
|
|
274
435
|
assert.ok(result);
|
|
@@ -337,41 +498,45 @@ describe("Integration Tests", () => {
|
|
|
337
498
|
priority: 1
|
|
338
499
|
});
|
|
339
500
|
|
|
340
|
-
//
|
|
341
|
-
await
|
|
342
|
-
|
|
343
|
-
// Create subtask
|
|
344
|
-
const task = await tasks.create({
|
|
501
|
+
// Create tasks (sibling to prevent auto-complete of milestone)
|
|
502
|
+
const task1 = await tasks.create({
|
|
345
503
|
description: "Implement core logic",
|
|
346
504
|
context: "Handle edge cases",
|
|
347
505
|
parentId: milestone.id,
|
|
348
506
|
priority: 2
|
|
349
507
|
});
|
|
508
|
+
const task2 = await tasks.create({
|
|
509
|
+
description: "Write tests",
|
|
510
|
+
parentId: milestone.id,
|
|
511
|
+
priority: 3
|
|
512
|
+
});
|
|
350
513
|
|
|
351
514
|
// Get task with inherited context
|
|
352
|
-
const fetched = await tasks.get(
|
|
515
|
+
const fetched = await tasks.get(task1.id);
|
|
353
516
|
|
|
354
|
-
// Start and complete
|
|
355
|
-
await tasks.start(
|
|
356
|
-
await tasks.complete(
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
517
|
+
// Start and complete task1 with learning - bubbles to milestone
|
|
518
|
+
await tasks.start(task1.id);
|
|
519
|
+
await tasks.complete(task1.id, {
|
|
520
|
+
result: "Implemented successfully",
|
|
521
|
+
learnings: ["Follow existing patterns", "Consider performance"]
|
|
522
|
+
});
|
|
360
523
|
|
|
361
|
-
//
|
|
362
|
-
const
|
|
524
|
+
// task2 should see learnings via milestone
|
|
525
|
+
const task2WithContext = await tasks.get(task2.id);
|
|
363
526
|
|
|
364
527
|
return {
|
|
365
|
-
hasContext: !!
|
|
366
|
-
hasLearnings:
|
|
367
|
-
|
|
528
|
+
hasContext: !!task2WithContext.context.milestone,
|
|
529
|
+
hasLearnings: task2WithContext.learnings.milestone.length > 0,
|
|
530
|
+
learningCount: task2WithContext.learnings.milestone.length,
|
|
531
|
+
isTask1Completed: (await tasks.get(task1.id)).completed
|
|
368
532
|
};
|
|
369
533
|
`);
|
|
370
534
|
assert.ok(result);
|
|
371
535
|
const workflow = result;
|
|
372
536
|
assert.equal(workflow.hasContext, true);
|
|
373
537
|
assert.equal(workflow.hasLearnings, true);
|
|
374
|
-
assert.equal(workflow.
|
|
538
|
+
assert.equal(workflow.learningCount, 2);
|
|
539
|
+
assert.equal(workflow.isTask1Completed, true);
|
|
375
540
|
});
|
|
376
541
|
});
|
|
377
542
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,IAAI,OAAe,CAAC;AACpB,IAAI,cAAkC,CAAC;AACvC,IAAI,eAAmC,CAAC;AACxC,IAAI,cAAkC,CAAC;AAEvC,MAAM,CAAC,KAAK,IAAI,EAAE;IAChB,+CAA+C;IAC/C,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE5C,2CAA2C;IAC3C,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC9C,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAChD,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACtC,oDAAoD;IACpD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;IACnF,iDAAiD;IACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAEvC,mCAAmC;IACnC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -13,20 +13,38 @@ export declare function isTaskId(s: string): s is TaskId;
|
|
|
13
13
|
export declare function isLearningId(s: string): s is LearningId;
|
|
14
14
|
export declare function parseTaskId(s: string): TaskId;
|
|
15
15
|
export declare function parseLearningId(s: string): LearningId;
|
|
16
|
+
/**
|
|
17
|
+
* Task context chain (inherited from hierarchy)
|
|
18
|
+
*/
|
|
19
|
+
export interface TaskContext {
|
|
20
|
+
own: string;
|
|
21
|
+
parent?: string;
|
|
22
|
+
milestone?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Inherited learnings from parent/milestone
|
|
26
|
+
*/
|
|
27
|
+
export interface InheritedLearnings {
|
|
28
|
+
milestone: Learning[];
|
|
29
|
+
parent: Learning[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Priority levels (enforced by Rust, 1-5)
|
|
33
|
+
*/
|
|
34
|
+
export type Priority = 1 | 2 | 3 | 4 | 5;
|
|
35
|
+
/**
|
|
36
|
+
* Task depth (0=milestone, 1=task, 2=subtask)
|
|
37
|
+
*/
|
|
38
|
+
export type Depth = 0 | 1 | 2;
|
|
39
|
+
/**
|
|
40
|
+
* Task returned from list/create/update/start/complete/reopen
|
|
41
|
+
* Does NOT include context chain or inherited learnings
|
|
42
|
+
*/
|
|
16
43
|
export interface Task {
|
|
17
44
|
id: TaskId;
|
|
18
45
|
parentId: TaskId | null;
|
|
19
46
|
description: string;
|
|
20
|
-
|
|
21
|
-
own: string;
|
|
22
|
-
parent?: string;
|
|
23
|
-
milestone?: string;
|
|
24
|
-
};
|
|
25
|
-
learnings: {
|
|
26
|
-
milestone: Learning[];
|
|
27
|
-
parent: Learning[];
|
|
28
|
-
};
|
|
29
|
-
priority: 1 | 2 | 3 | 4 | 5;
|
|
47
|
+
priority: Priority;
|
|
30
48
|
completed: boolean;
|
|
31
49
|
completedAt: string | null;
|
|
32
50
|
startedAt: string | null;
|
|
@@ -34,9 +52,18 @@ export interface Task {
|
|
|
34
52
|
updatedAt: string;
|
|
35
53
|
result: string | null;
|
|
36
54
|
commitSha: string | null;
|
|
37
|
-
depth:
|
|
38
|
-
blockedBy
|
|
39
|
-
blocks
|
|
55
|
+
depth: Depth;
|
|
56
|
+
blockedBy?: TaskId[];
|
|
57
|
+
blocks?: TaskId[];
|
|
58
|
+
bookmark?: string;
|
|
59
|
+
startCommit?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Task returned from get/nextReady - includes context chain and inherited learnings
|
|
63
|
+
*/
|
|
64
|
+
export interface TaskWithContext extends Task {
|
|
65
|
+
context: TaskContext;
|
|
66
|
+
learnings: InheritedLearnings;
|
|
40
67
|
}
|
|
41
68
|
export interface Learning {
|
|
42
69
|
id: LearningId;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAGxE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,UAAU,CAEvD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAKrD;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAGxE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,UAAU,CAEvD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAKrD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM;gBAFrB,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKxB;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,SAA8B;CAIlD"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,qBAAqB;AACrB,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,0BAA0B;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,yBAAyB;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,qBAAqB;AACrB,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,0BAA0B;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,yBAAyB;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAoED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGxB;IACA;IAHT,YACE,OAAe,EACR,QAAgB,EAChB,MAAc;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAGrB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAO,GAAG,2BAA2B;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dmmulroy/overseer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Codemode MCP server for agent task management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"postinstall": "node ./bin/postinstall.mjs"
|
|
16
16
|
},
|
|
17
17
|
"optionalDependencies": {
|
|
18
|
-
"@dmmulroy/overseer-darwin-arm64": "0.
|
|
19
|
-
"@dmmulroy/overseer-darwin-x64": "0.
|
|
20
|
-
"@dmmulroy/overseer-linux-arm64": "0.
|
|
21
|
-
"@dmmulroy/overseer-linux-x64": "0.
|
|
22
|
-
"@dmmulroy/overseer-linux-arm64-musl": "0.
|
|
23
|
-
"@dmmulroy/overseer-linux-x64-musl": "0.
|
|
18
|
+
"@dmmulroy/overseer-darwin-arm64": "0.3.0",
|
|
19
|
+
"@dmmulroy/overseer-darwin-x64": "0.3.0",
|
|
20
|
+
"@dmmulroy/overseer-linux-arm64": "0.3.0",
|
|
21
|
+
"@dmmulroy/overseer-linux-x64": "0.3.0",
|
|
22
|
+
"@dmmulroy/overseer-linux-arm64-musl": "0.3.0",
|
|
23
|
+
"@dmmulroy/overseer-linux-x64-musl": "0.3.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.0.4"
|