@rk0429/agentic-relay 3.0.0 → 3.1.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 +73 -1
- package/dist/application/spawn-agents-service.d.ts +2 -0
- package/dist/application/spawn-agents-service.js +24 -0
- package/dist/application/spawn-agents-service.js.map +1 -1
- package/dist/application/task-service.d.ts +26 -0
- package/dist/application/task-service.js +308 -0
- package/dist/application/task-service.js.map +1 -0
- package/dist/bin/relay.js +6 -0
- package/dist/bin/relay.js.map +1 -1
- package/dist/core/errors.d.ts +3 -0
- package/dist/core/errors.js +6 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/types.d.ts +95 -2
- package/dist/core/types.js +16 -0
- package/dist/core/types.js.map +1 -1
- package/dist/domain/task-management.d.ts +50 -0
- package/dist/domain/task-management.js +232 -0
- package/dist/domain/task-management.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/backends/cli-backend-executor.js +58 -29
- package/dist/infrastructure/backends/cli-backend-executor.js.map +1 -1
- package/dist/infrastructure/store/relay-store.d.ts +5 -1
- package/dist/infrastructure/store/relay-store.js +33 -1
- package/dist/infrastructure/store/relay-store.js.map +1 -1
- package/dist/interfaces/mcp/relay-mcp-server.d.ts +2 -0
- package/dist/interfaces/mcp/relay-mcp-server.js +82 -1
- package/dist/interfaces/mcp/relay-mcp-server.js.map +1 -1
- package/package.json +1 -1
package/dist/core/types.d.ts
CHANGED
|
@@ -3,6 +3,99 @@ export type BackendType = (typeof BACKEND_TYPES)[number];
|
|
|
3
3
|
export declare const TASK_TYPES: readonly ["orchestration", "research", "document_review", "code_writing", "document_writing", "code_review"];
|
|
4
4
|
export type TaskType = (typeof TASK_TYPES)[number];
|
|
5
5
|
export type ExecutionStatus = "success" | "error";
|
|
6
|
+
export declare const TASK_STATUSES: readonly ["backlog", "ready", "in_progress", "review", "blocked", "done", "superseded", "archived"];
|
|
7
|
+
export type TaskStatus = (typeof TASK_STATUSES)[number];
|
|
8
|
+
export declare const SYSTEM_CAUSES: readonly ["dependency_resolved", "agent_spawned", "agent_completed", "agent_failed"];
|
|
9
|
+
export type SystemCause = (typeof SYSTEM_CAUSES)[number];
|
|
10
|
+
export type Actor = {
|
|
11
|
+
type: "agent";
|
|
12
|
+
agentId: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: "system";
|
|
15
|
+
cause: SystemCause;
|
|
16
|
+
};
|
|
17
|
+
export interface TaskComment {
|
|
18
|
+
author: Actor;
|
|
19
|
+
content: string;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TaskRecord {
|
|
23
|
+
taskId: string;
|
|
24
|
+
title: string;
|
|
25
|
+
description: string;
|
|
26
|
+
status: TaskStatus;
|
|
27
|
+
parentId?: string;
|
|
28
|
+
agentId?: string;
|
|
29
|
+
initiatorId: string;
|
|
30
|
+
dependsOn: string[];
|
|
31
|
+
acceptanceCriteria?: string;
|
|
32
|
+
comments: TaskComment[];
|
|
33
|
+
createdAt: string;
|
|
34
|
+
updatedAt: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TaskSummary {
|
|
37
|
+
task_id: string;
|
|
38
|
+
title: string;
|
|
39
|
+
status: TaskStatus;
|
|
40
|
+
parent_id?: string;
|
|
41
|
+
agent_id?: string;
|
|
42
|
+
depends_on: string[];
|
|
43
|
+
acceptance_criteria?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface TaskDetail extends TaskSummary {
|
|
46
|
+
description: string;
|
|
47
|
+
initiator_id: string;
|
|
48
|
+
comments: Array<{
|
|
49
|
+
author: Actor;
|
|
50
|
+
content: string;
|
|
51
|
+
created_at: string;
|
|
52
|
+
}>;
|
|
53
|
+
created_at: string;
|
|
54
|
+
updated_at: string;
|
|
55
|
+
}
|
|
56
|
+
export interface CreateTaskInput {
|
|
57
|
+
title: string;
|
|
58
|
+
description: string;
|
|
59
|
+
parent_id?: string;
|
|
60
|
+
depends_on?: string[];
|
|
61
|
+
acceptance_criteria?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface UpdateTaskInput {
|
|
64
|
+
task_id: string;
|
|
65
|
+
title?: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
depends_on?: string[];
|
|
68
|
+
acceptance_criteria?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface UpdateTaskStatusInput {
|
|
71
|
+
task_id: string;
|
|
72
|
+
status: TaskStatus;
|
|
73
|
+
comment?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface AssignAgentInput {
|
|
76
|
+
task_id: string;
|
|
77
|
+
agent_id: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ListTasksInput {
|
|
80
|
+
parent_id?: string;
|
|
81
|
+
status?: TaskStatus;
|
|
82
|
+
}
|
|
83
|
+
export interface DeleteTaskInput {
|
|
84
|
+
task_id: string;
|
|
85
|
+
}
|
|
86
|
+
export interface DeleteTaskResult {
|
|
87
|
+
task_id: string;
|
|
88
|
+
archived_task_ids: string[];
|
|
89
|
+
warnings: string[];
|
|
90
|
+
}
|
|
91
|
+
export interface TaskMutationContext {
|
|
92
|
+
actorId: string;
|
|
93
|
+
}
|
|
94
|
+
export interface AgentLifecycleTaskEvent {
|
|
95
|
+
taskId: string;
|
|
96
|
+
sessionId: string;
|
|
97
|
+
backend?: BackendType;
|
|
98
|
+
}
|
|
6
99
|
export interface SpawnAgentInput {
|
|
7
100
|
backend?: BackendType;
|
|
8
101
|
prompt: string;
|
|
@@ -48,8 +141,8 @@ export interface LogEntry {
|
|
|
48
141
|
timestamp: string;
|
|
49
142
|
session_id: string;
|
|
50
143
|
task_id?: string;
|
|
51
|
-
backend
|
|
52
|
-
event_type: "agent_spawned" | "agent_completed" | "agent_failed" | "routing_fallback";
|
|
144
|
+
backend?: BackendType;
|
|
145
|
+
event_type: "agent_spawned" | "agent_completed" | "agent_failed" | "routing_fallback" | "task_status_changed";
|
|
53
146
|
status: "running" | "success" | "error";
|
|
54
147
|
details?: Record<string, unknown>;
|
|
55
148
|
}
|
package/dist/core/types.js
CHANGED
|
@@ -7,4 +7,20 @@ export const TASK_TYPES = [
|
|
|
7
7
|
"document_writing",
|
|
8
8
|
"code_review",
|
|
9
9
|
];
|
|
10
|
+
export const TASK_STATUSES = [
|
|
11
|
+
"backlog",
|
|
12
|
+
"ready",
|
|
13
|
+
"in_progress",
|
|
14
|
+
"review",
|
|
15
|
+
"blocked",
|
|
16
|
+
"done",
|
|
17
|
+
"superseded",
|
|
18
|
+
"archived",
|
|
19
|
+
];
|
|
20
|
+
export const SYSTEM_CAUSES = [
|
|
21
|
+
"dependency_resolved",
|
|
22
|
+
"agent_spawned",
|
|
23
|
+
"agent_completed",
|
|
24
|
+
"agent_failed",
|
|
25
|
+
];
|
|
10
26
|
//# sourceMappingURL=types.js.map
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAGpE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,cAAc;IACd,kBAAkB;IAClB,aAAa;CACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAGpE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,cAAc;IACd,kBAAkB;IAClB,aAAa;CACL,CAAC;AAKX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,OAAO;IACP,aAAa;IACb,QAAQ;IACR,SAAS;IACT,MAAM;IACN,YAAY;IACZ,UAAU;CACF,CAAC;AAGX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,qBAAqB;IACrB,eAAe;IACf,iBAAiB;IACjB,cAAc;CACN,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Actor, TaskRecord, TaskStatus } from "../core/types.js";
|
|
2
|
+
export interface DeletionImpact {
|
|
3
|
+
targetTaskId: string;
|
|
4
|
+
affectedDependants: string[];
|
|
5
|
+
descendantTaskIds: string[];
|
|
6
|
+
hasDependants: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function createTaskRecord(options: {
|
|
9
|
+
taskId: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
parentId?: string;
|
|
13
|
+
dependsOn?: string[];
|
|
14
|
+
acceptanceCriteria?: string;
|
|
15
|
+
initiatorId: string;
|
|
16
|
+
now: string;
|
|
17
|
+
}): TaskRecord;
|
|
18
|
+
export declare function transitionTask(options: {
|
|
19
|
+
task: TaskRecord;
|
|
20
|
+
nextStatus: TaskStatus;
|
|
21
|
+
actor: Actor;
|
|
22
|
+
allTasks: TaskRecord[];
|
|
23
|
+
parentTask?: TaskRecord;
|
|
24
|
+
comment?: string;
|
|
25
|
+
now: string;
|
|
26
|
+
}): TaskRecord;
|
|
27
|
+
export declare function assignTaskAgent(task: TaskRecord, agentId: string, now: string): TaskRecord;
|
|
28
|
+
export declare function updateTaskFields(options: {
|
|
29
|
+
task: TaskRecord;
|
|
30
|
+
now: string;
|
|
31
|
+
title?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
dependsOn?: string[];
|
|
34
|
+
acceptanceCriteria?: string;
|
|
35
|
+
}): TaskRecord;
|
|
36
|
+
export declare function validateTaskDependencies(options: {
|
|
37
|
+
taskId: string;
|
|
38
|
+
parentId?: string;
|
|
39
|
+
dependsOn: string[];
|
|
40
|
+
tasks: TaskRecord[];
|
|
41
|
+
}): void;
|
|
42
|
+
export declare function validateNoCycle(options: {
|
|
43
|
+
taskId: string;
|
|
44
|
+
dependsOn: string[];
|
|
45
|
+
tasks: TaskRecord[];
|
|
46
|
+
}): void;
|
|
47
|
+
export declare function canTransitionToReview(taskId: string, tasks: TaskRecord[]): boolean;
|
|
48
|
+
export declare function allDependenciesResolved(dependsOn: string[], tasksById: Map<string, TaskRecord>): boolean;
|
|
49
|
+
export declare function collectDeletionImpact(taskId: string, tasks: TaskRecord[]): DeletionImpact;
|
|
50
|
+
export declare function collectDescendantTaskIds(taskId: string, tasks: TaskRecord[]): string[];
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { ValidationError } from "../core/errors.js";
|
|
2
|
+
export function createTaskRecord(options) {
|
|
3
|
+
return {
|
|
4
|
+
taskId: options.taskId,
|
|
5
|
+
title: options.title,
|
|
6
|
+
description: options.description,
|
|
7
|
+
status: "backlog",
|
|
8
|
+
parentId: options.parentId,
|
|
9
|
+
dependsOn: [...(options.dependsOn ?? [])],
|
|
10
|
+
acceptanceCriteria: options.acceptanceCriteria,
|
|
11
|
+
initiatorId: options.initiatorId,
|
|
12
|
+
comments: [],
|
|
13
|
+
createdAt: options.now,
|
|
14
|
+
updatedAt: options.now,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function transitionTask(options) {
|
|
18
|
+
const { task, nextStatus, actor, allTasks, parentTask, comment, now } = options;
|
|
19
|
+
validateStatusTransition({ task, nextStatus, actor, allTasks, parentTask, comment });
|
|
20
|
+
const comments = [...task.comments];
|
|
21
|
+
if (comment) {
|
|
22
|
+
comments.push(createComment(actor, comment, now));
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
...task,
|
|
26
|
+
status: nextStatus,
|
|
27
|
+
comments,
|
|
28
|
+
updatedAt: now,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function assignTaskAgent(task, agentId, now) {
|
|
32
|
+
if (!agentId) {
|
|
33
|
+
throw new ValidationError("agent_id must be a non-empty string.");
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...task,
|
|
37
|
+
agentId,
|
|
38
|
+
updatedAt: now,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function updateTaskFields(options) {
|
|
42
|
+
return {
|
|
43
|
+
...options.task,
|
|
44
|
+
title: options.title ?? options.task.title,
|
|
45
|
+
description: options.description ?? options.task.description,
|
|
46
|
+
dependsOn: options.dependsOn ? [...options.dependsOn] : options.task.dependsOn,
|
|
47
|
+
acceptanceCriteria: options.acceptanceCriteria ?? options.task.acceptanceCriteria,
|
|
48
|
+
updatedAt: options.now,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function validateTaskDependencies(options) {
|
|
52
|
+
const tasksById = new Map(options.tasks.map((task) => [task.taskId, task]));
|
|
53
|
+
for (const dependencyId of options.dependsOn) {
|
|
54
|
+
const dependency = tasksById.get(dependencyId);
|
|
55
|
+
if (!dependency) {
|
|
56
|
+
throw new ValidationError(`Dependency task ${dependencyId} does not exist.`);
|
|
57
|
+
}
|
|
58
|
+
if (dependencyId === options.taskId) {
|
|
59
|
+
throw new ValidationError("A task cannot depend on itself.");
|
|
60
|
+
}
|
|
61
|
+
if (dependency.parentId !== options.parentId) {
|
|
62
|
+
throw new ValidationError(`Dependency task ${dependencyId} must share the same parent.`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
validateNoCycle({
|
|
66
|
+
taskId: options.taskId,
|
|
67
|
+
dependsOn: options.dependsOn,
|
|
68
|
+
tasks: options.tasks,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function validateNoCycle(options) {
|
|
72
|
+
const adjacency = new Map();
|
|
73
|
+
for (const task of options.tasks) {
|
|
74
|
+
adjacency.set(task.taskId, [...task.dependsOn]);
|
|
75
|
+
}
|
|
76
|
+
adjacency.set(options.taskId, [...options.dependsOn]);
|
|
77
|
+
const visit = (taskId, stack, seen) => {
|
|
78
|
+
if (stack.has(taskId)) {
|
|
79
|
+
throw new ValidationError(`Circular dependency detected at task ${taskId}.`);
|
|
80
|
+
}
|
|
81
|
+
if (seen.has(taskId)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
seen.add(taskId);
|
|
85
|
+
stack.add(taskId);
|
|
86
|
+
for (const dependencyId of adjacency.get(taskId) ?? []) {
|
|
87
|
+
visit(dependencyId, stack, seen);
|
|
88
|
+
}
|
|
89
|
+
stack.delete(taskId);
|
|
90
|
+
};
|
|
91
|
+
visit(options.taskId, new Set(), new Set());
|
|
92
|
+
}
|
|
93
|
+
export function canTransitionToReview(taskId, tasks) {
|
|
94
|
+
const children = tasks.filter((candidate) => candidate.parentId === taskId);
|
|
95
|
+
return children.every((child) => child.status === "done");
|
|
96
|
+
}
|
|
97
|
+
export function allDependenciesResolved(dependsOn, tasksById) {
|
|
98
|
+
return dependsOn.every((dependencyId) => tasksById.get(dependencyId)?.status === "done");
|
|
99
|
+
}
|
|
100
|
+
export function collectDeletionImpact(taskId, tasks) {
|
|
101
|
+
const descendants = collectDescendantTaskIds(taskId, tasks);
|
|
102
|
+
const affectedIds = new Set([taskId, ...descendants]);
|
|
103
|
+
const affectedDependants = tasks
|
|
104
|
+
.filter((task) => task.dependsOn.some((dependencyId) => affectedIds.has(dependencyId)))
|
|
105
|
+
.filter((task) => !affectedIds.has(task.taskId))
|
|
106
|
+
.map((task) => task.taskId);
|
|
107
|
+
return {
|
|
108
|
+
targetTaskId: taskId,
|
|
109
|
+
affectedDependants,
|
|
110
|
+
descendantTaskIds: descendants,
|
|
111
|
+
hasDependants: affectedDependants.length > 0,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export function collectDescendantTaskIds(taskId, tasks) {
|
|
115
|
+
const childrenByParent = new Map();
|
|
116
|
+
for (const task of tasks) {
|
|
117
|
+
if (!task.parentId) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const siblings = childrenByParent.get(task.parentId) ?? [];
|
|
121
|
+
siblings.push(task.taskId);
|
|
122
|
+
childrenByParent.set(task.parentId, siblings);
|
|
123
|
+
}
|
|
124
|
+
const result = [];
|
|
125
|
+
const stack = [...(childrenByParent.get(taskId) ?? [])];
|
|
126
|
+
while (stack.length > 0) {
|
|
127
|
+
const current = stack.pop();
|
|
128
|
+
result.push(current);
|
|
129
|
+
stack.push(...(childrenByParent.get(current) ?? []));
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
function validateStatusTransition(options) {
|
|
134
|
+
const { task, nextStatus, actor, allTasks, parentTask, comment } = options;
|
|
135
|
+
if (task.status === nextStatus) {
|
|
136
|
+
throw new ValidationError(`Task ${task.taskId} is already ${nextStatus}.`);
|
|
137
|
+
}
|
|
138
|
+
switch (nextStatus) {
|
|
139
|
+
case "ready":
|
|
140
|
+
if (task.status !== "backlog") {
|
|
141
|
+
throw new ValidationError("Only backlog tasks can transition to ready.");
|
|
142
|
+
}
|
|
143
|
+
if (!allDependenciesResolved(task.dependsOn, new Map(allTasks.map((item) => [item.taskId, item])))) {
|
|
144
|
+
throw new ValidationError("All dependency tasks must be done before transitioning to ready.");
|
|
145
|
+
}
|
|
146
|
+
return;
|
|
147
|
+
case "in_progress":
|
|
148
|
+
if (task.status === "ready" || task.status === "blocked") {
|
|
149
|
+
ensureAssignedAgentMatchesActor(task, actor);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (task.status === "review") {
|
|
153
|
+
if (!comment) {
|
|
154
|
+
throw new ValidationError("A comment is required when returning a task from review to in_progress.");
|
|
155
|
+
}
|
|
156
|
+
ensureReviewApprover(task, parentTask, actor);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
throw new ValidationError(`Cannot transition ${task.status} to in_progress.`);
|
|
160
|
+
case "review":
|
|
161
|
+
if (task.status !== "in_progress") {
|
|
162
|
+
throw new ValidationError("Only in_progress tasks can transition to review.");
|
|
163
|
+
}
|
|
164
|
+
ensureAssignedAgentMatchesActor(task, actor);
|
|
165
|
+
if (hasChildren(task.taskId, allTasks) && !canTransitionToReview(task.taskId, allTasks)) {
|
|
166
|
+
throw new ValidationError("All child tasks must be done before the parent task can transition to review.");
|
|
167
|
+
}
|
|
168
|
+
return;
|
|
169
|
+
case "blocked":
|
|
170
|
+
if (actor.type === "system") {
|
|
171
|
+
if (task.status === "archived" || task.status === "superseded") {
|
|
172
|
+
throw new ValidationError(`Cannot transition ${task.status} to blocked.`);
|
|
173
|
+
}
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (task.status !== "in_progress") {
|
|
177
|
+
throw new ValidationError("Only in_progress tasks can transition to blocked manually.");
|
|
178
|
+
}
|
|
179
|
+
ensureAssignedAgentMatchesActor(task, actor);
|
|
180
|
+
return;
|
|
181
|
+
case "done":
|
|
182
|
+
if (task.status !== "review") {
|
|
183
|
+
throw new ValidationError("Only review tasks can transition to done.");
|
|
184
|
+
}
|
|
185
|
+
ensureReviewApprover(task, parentTask, actor);
|
|
186
|
+
return;
|
|
187
|
+
case "superseded":
|
|
188
|
+
case "archived":
|
|
189
|
+
if (task.status === "archived" || task.status === "superseded") {
|
|
190
|
+
throw new ValidationError(`Cannot transition ${task.status} to ${nextStatus}.`);
|
|
191
|
+
}
|
|
192
|
+
return;
|
|
193
|
+
case "backlog":
|
|
194
|
+
throw new ValidationError("Tasks cannot transition back to backlog.");
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function hasChildren(taskId, tasks) {
|
|
198
|
+
return tasks.some((task) => task.parentId === taskId);
|
|
199
|
+
}
|
|
200
|
+
function ensureAssignedAgentMatchesActor(task, actor) {
|
|
201
|
+
if (actor.type !== "agent") {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (task.agentId && task.agentId !== actor.agentId) {
|
|
205
|
+
throw new ValidationError(`Only the assigned agent can transition task ${task.taskId}.`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function ensureReviewApprover(task, parentTask, actor) {
|
|
209
|
+
if (actor.type !== "agent") {
|
|
210
|
+
throw new ValidationError("Only an agent can approve or reject a review.");
|
|
211
|
+
}
|
|
212
|
+
if (!task.parentId) {
|
|
213
|
+
if (actor.agentId !== task.initiatorId) {
|
|
214
|
+
throw new ValidationError("Only the task initiator can approve or reject a root task review.");
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (!parentTask?.agentId) {
|
|
219
|
+
throw new ValidationError("The parent task must have an assigned agent before review approval.");
|
|
220
|
+
}
|
|
221
|
+
if (actor.agentId !== parentTask.agentId) {
|
|
222
|
+
throw new ValidationError("Only the parent task's assigned agent can approve or reject the child task review.");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function createComment(actor, content, now) {
|
|
226
|
+
return {
|
|
227
|
+
author: actor,
|
|
228
|
+
content,
|
|
229
|
+
createdAt: now,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=task-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-management.js","sourceRoot":"","sources":["../../src/domain/task-management.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./application/spawn-agents-service.js";
|
|
2
|
+
export * from "./application/task-service.js";
|
|
2
3
|
export * from "./core/errors.js";
|
|
3
4
|
export * from "./core/types.js";
|
|
5
|
+
export * from "./domain/task-management.js";
|
|
4
6
|
export * from "./infrastructure/backends/backend-registry.js";
|
|
5
7
|
export * from "./infrastructure/backends/cli-backend-executor.js";
|
|
6
8
|
export * from "./infrastructure/process/process-executor.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./application/spawn-agents-service.js";
|
|
2
|
+
export * from "./application/task-service.js";
|
|
2
3
|
export * from "./core/errors.js";
|
|
3
4
|
export * from "./core/types.js";
|
|
5
|
+
export * from "./domain/task-management.js";
|
|
4
6
|
export * from "./infrastructure/backends/backend-registry.js";
|
|
5
7
|
export * from "./infrastructure/backends/cli-backend-executor.js";
|
|
6
8
|
export * from "./infrastructure/process/process-executor.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC"}
|
|
@@ -125,43 +125,67 @@ async function safeReadFile(filePath) {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
function extractSessionId(raw) {
|
|
128
|
-
for (const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"conversation_id",
|
|
140
|
-
"conversationId",
|
|
141
|
-
]);
|
|
142
|
-
if (typeof found === "string" && found.length > 0) {
|
|
143
|
-
return found;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
continue;
|
|
128
|
+
for (const candidate of parseJsonCandidates(raw)) {
|
|
129
|
+
const found = findFirstByKeys(candidate, [
|
|
130
|
+
"session_id",
|
|
131
|
+
"sessionId",
|
|
132
|
+
"thread_id",
|
|
133
|
+
"threadId",
|
|
134
|
+
"conversation_id",
|
|
135
|
+
"conversationId",
|
|
136
|
+
]);
|
|
137
|
+
if (typeof found === "string" && found.length > 0) {
|
|
138
|
+
return found;
|
|
148
139
|
}
|
|
149
140
|
}
|
|
150
141
|
return undefined;
|
|
151
142
|
}
|
|
152
143
|
function extractText(raw) {
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const parsed = JSON.parse(line);
|
|
158
|
-
collectStrings(parsed, chunks, new Set(["text", "message", "output_text", "content"]));
|
|
144
|
+
for (const candidate of parseJsonCandidates(raw)) {
|
|
145
|
+
const extracted = extractPreferredText(candidate);
|
|
146
|
+
if (extracted) {
|
|
147
|
+
return extracted;
|
|
159
148
|
}
|
|
160
|
-
|
|
161
|
-
|
|
149
|
+
}
|
|
150
|
+
return raw.trim();
|
|
151
|
+
}
|
|
152
|
+
function parseJsonCandidates(raw) {
|
|
153
|
+
const candidates = [];
|
|
154
|
+
const trimmed = raw.trim();
|
|
155
|
+
if (!trimmed) {
|
|
156
|
+
return candidates;
|
|
157
|
+
}
|
|
158
|
+
const wholeDocument = tryParseJson(trimmed);
|
|
159
|
+
if (wholeDocument !== undefined) {
|
|
160
|
+
candidates.push(wholeDocument);
|
|
161
|
+
}
|
|
162
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
163
|
+
const parsedLine = tryParseJson(line.trim());
|
|
164
|
+
if (parsedLine !== undefined) {
|
|
165
|
+
candidates.push(parsedLine);
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
|
-
return
|
|
168
|
+
return candidates;
|
|
169
|
+
}
|
|
170
|
+
function tryParseJson(value) {
|
|
171
|
+
if (!value) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
return JSON.parse(value);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function extractPreferredText(value) {
|
|
182
|
+
const response = findFirstByKeys(value, ["response"]);
|
|
183
|
+
const responseText = stringifyText(response);
|
|
184
|
+
if (responseText) {
|
|
185
|
+
return responseText;
|
|
186
|
+
}
|
|
187
|
+
const generic = findFirstByKeys(value, ["output_text", "message", "content", "text"]);
|
|
188
|
+
return stringifyText(generic);
|
|
165
189
|
}
|
|
166
190
|
function findFirstByKeys(value, keys) {
|
|
167
191
|
if (!value || typeof value !== "object") {
|
|
@@ -207,4 +231,9 @@ function collectStrings(value, chunks, preferredKeys) {
|
|
|
207
231
|
}
|
|
208
232
|
}
|
|
209
233
|
}
|
|
234
|
+
function stringifyText(value) {
|
|
235
|
+
const chunks = [];
|
|
236
|
+
collectStrings(value, chunks, new Set(["text", "message", "output_text", "content", "response"]));
|
|
237
|
+
return chunks.join("\n").trim();
|
|
238
|
+
}
|
|
210
239
|
//# sourceMappingURL=cli-backend-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-backend-executor.js","sourceRoot":"","sources":["../../../src/infrastructure/backends/cli-backend-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-backend-executor.js","sourceRoot":"","sources":["../../../src/infrastructure/backends/cli-backend-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LogEntry, RelaySessionMetadata } from "../../core/types.js";
|
|
1
|
+
import type { LogEntry, RelaySessionMetadata, TaskRecord } from "../../core/types.js";
|
|
2
2
|
export declare class RelayStore {
|
|
3
3
|
readonly rootDir: string;
|
|
4
4
|
constructor(rootDir: string);
|
|
@@ -8,7 +8,11 @@ export declare class RelayStore {
|
|
|
8
8
|
writeSessionMetadata(metadata: RelaySessionMetadata): Promise<void>;
|
|
9
9
|
readSessionMetadata(relaySessionId: string): Promise<RelaySessionMetadata | null>;
|
|
10
10
|
appendLog(entry: LogEntry): Promise<void>;
|
|
11
|
+
writeTask(task: TaskRecord): Promise<void>;
|
|
12
|
+
readTask(taskId: string): Promise<TaskRecord | null>;
|
|
13
|
+
listTasks(): Promise<TaskRecord[]>;
|
|
11
14
|
private responsesDir;
|
|
12
15
|
private sessionsDir;
|
|
13
16
|
private logsDir;
|
|
17
|
+
private tasksDir;
|
|
14
18
|
}
|