@locusai/sdk 0.8.1 → 0.9.1
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/agent/__tests__/orchestrator.cleanup.test.d.ts +2 -0
- package/dist/agent/__tests__/orchestrator.cleanup.test.d.ts.map +1 -0
- package/dist/agent/__tests__/worker.no-changes.test.d.ts +2 -0
- package/dist/agent/__tests__/worker.no-changes.test.d.ts.map +1 -0
- package/dist/agent/document-fetcher.d.ts.map +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/review-service.d.ts.map +1 -1
- package/dist/agent/reviewer-worker.d.ts +42 -0
- package/dist/agent/reviewer-worker.d.ts.map +1 -0
- package/dist/agent/task-executor.d.ts +1 -1
- package/dist/agent/task-executor.d.ts.map +1 -1
- package/dist/agent/worker.d.ts +47 -4
- package/dist/agent/worker.d.ts.map +1 -1
- package/dist/agent/worker.js +1102 -506
- package/dist/ai/claude-runner.d.ts +5 -0
- package/dist/ai/claude-runner.d.ts.map +1 -1
- package/dist/ai/codex-runner.d.ts +5 -0
- package/dist/ai/codex-runner.d.ts.map +1 -1
- package/dist/ai/runner.d.ts +5 -0
- package/dist/ai/runner.d.ts.map +1 -1
- package/dist/core/config.d.ts +10 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/prompt-builder.d.ts +3 -6
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/git/git-utils.d.ts +31 -0
- package/dist/git/git-utils.d.ts.map +1 -0
- package/dist/git/index.d.ts +3 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/pr-service.d.ts +66 -0
- package/dist/git/pr-service.d.ts.map +1 -0
- package/dist/index-node.d.ts +5 -1
- package/dist/index-node.d.ts.map +1 -1
- package/dist/index-node.js +2560 -729
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -49
- package/dist/modules/auth.d.ts +3 -0
- package/dist/modules/auth.d.ts.map +1 -1
- package/dist/modules/tasks.d.ts +0 -5
- package/dist/modules/tasks.d.ts.map +1 -1
- package/dist/modules/workspaces.d.ts +10 -10
- package/dist/modules/workspaces.d.ts.map +1 -1
- package/dist/orchestrator.d.ts +38 -5
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/planning/agents/architect.d.ts +15 -0
- package/dist/planning/agents/architect.d.ts.map +1 -0
- package/dist/planning/agents/sprint-organizer.d.ts +14 -0
- package/dist/planning/agents/sprint-organizer.d.ts.map +1 -0
- package/dist/planning/agents/tech-lead.d.ts +15 -0
- package/dist/planning/agents/tech-lead.d.ts.map +1 -0
- package/dist/planning/index.d.ts +4 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/plan-manager.d.ts +52 -0
- package/dist/planning/plan-manager.d.ts.map +1 -0
- package/dist/planning/planning-meeting.d.ts +36 -0
- package/dist/planning/planning-meeting.d.ts.map +1 -0
- package/dist/planning/sprint-plan.d.ts +47 -0
- package/dist/planning/sprint-plan.d.ts.map +1 -0
- package/dist/project/knowledge-base.d.ts +25 -0
- package/dist/project/knowledge-base.d.ts.map +1 -0
- package/dist/worktree/index.d.ts +3 -0
- package/dist/worktree/index.d.ts.map +1 -0
- package/dist/worktree/worktree-config.d.ts +58 -0
- package/dist/worktree/worktree-config.d.ts.map +1 -0
- package/dist/worktree/worktree-manager.d.ts +96 -0
- package/dist/worktree/worktree-manager.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/modules/ai.d.ts +0 -55
- package/dist/modules/ai.d.ts.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { LocusConfig, LocusEmitter } from "./events.js";
|
|
2
|
-
import { AIModule } from "./modules/ai.js";
|
|
3
2
|
import { AuthModule } from "./modules/auth.js";
|
|
4
3
|
import { CiModule } from "./modules/ci.js";
|
|
5
4
|
import { DocsModule } from "./modules/docs.js";
|
|
@@ -9,7 +8,6 @@ import { SprintsModule } from "./modules/sprints.js";
|
|
|
9
8
|
import { TasksModule } from "./modules/tasks.js";
|
|
10
9
|
import { WorkspacesModule } from "./modules/workspaces.js";
|
|
11
10
|
export * from "./events.js";
|
|
12
|
-
export * from "./modules/ai.js";
|
|
13
11
|
export * from "./modules/auth.js";
|
|
14
12
|
export * from "./modules/ci.js";
|
|
15
13
|
export * from "./modules/docs.js";
|
|
@@ -22,7 +20,6 @@ export declare class LocusClient {
|
|
|
22
20
|
private readonly api;
|
|
23
21
|
readonly emitter: LocusEmitter;
|
|
24
22
|
readonly auth: AuthModule;
|
|
25
|
-
readonly ai: AIModule;
|
|
26
23
|
readonly tasks: TasksModule;
|
|
27
24
|
readonly sprints: SprintsModule;
|
|
28
25
|
readonly workspaces: WorkspacesModule;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AAExC,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,SAAgB,OAAO,EAAE,YAAY,CAAC;IAEtC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,UAAU,EAAE,gBAAgB,CAAC;IAC7C,SAAgB,aAAa,EAAE,mBAAmB,CAAC;IACnD,SAAgB,WAAW,EAAE,iBAAiB,CAAC;IAC/C,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,EAAE,EAAE,QAAQ,CAAC;gBAEjB,MAAM,EAAE,WAAW;IA6B/B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,iBAAiB;IAmDlB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAOrC"}
|
package/dist/index.js
CHANGED
|
@@ -52,8 +52,7 @@ __export(exports_src, {
|
|
|
52
52
|
InvitationsModule: () => InvitationsModule,
|
|
53
53
|
DocsModule: () => DocsModule,
|
|
54
54
|
CiModule: () => CiModule,
|
|
55
|
-
AuthModule: () => AuthModule
|
|
56
|
-
AIModule: () => AIModule
|
|
55
|
+
AuthModule: () => AuthModule
|
|
57
56
|
});
|
|
58
57
|
module.exports = __toCommonJS(exports_src);
|
|
59
58
|
var import_axios = __toESM(require("axios"));
|
|
@@ -86,43 +85,6 @@ class BaseModule {
|
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
// src/modules/ai.ts
|
|
90
|
-
class AIModule extends BaseModule {
|
|
91
|
-
async chat(workspaceId, body) {
|
|
92
|
-
const { data } = await this.api.post(`/ai/${workspaceId}/chat`, body, { timeout: 300000 });
|
|
93
|
-
return data;
|
|
94
|
-
}
|
|
95
|
-
async detectIntent(workspaceId, body) {
|
|
96
|
-
const { data } = await this.api.post(`/ai/${workspaceId}/chat/intent`, body, { timeout: 300000 });
|
|
97
|
-
return data;
|
|
98
|
-
}
|
|
99
|
-
async executeIntent(workspaceId, body) {
|
|
100
|
-
const { data } = await this.api.post(`/ai/${workspaceId}/chat/execute`, body, { timeout: 300000 });
|
|
101
|
-
return data;
|
|
102
|
-
}
|
|
103
|
-
async listSessions(workspaceId) {
|
|
104
|
-
const { data } = await this.api.get(`/ai/${workspaceId}/sessions`);
|
|
105
|
-
return data;
|
|
106
|
-
}
|
|
107
|
-
async getSession(workspaceId, sessionId) {
|
|
108
|
-
const { data } = await this.api.get(`/ai/${workspaceId}/session/${sessionId}`);
|
|
109
|
-
return data;
|
|
110
|
-
}
|
|
111
|
-
getChatStreamUrl(workspaceId, sessionId) {
|
|
112
|
-
return `${this.api.defaults.baseURL}/ai/${workspaceId}/chat/stream?sessionId=${sessionId}`;
|
|
113
|
-
}
|
|
114
|
-
async deleteSession(workspaceId, sessionId) {
|
|
115
|
-
await this.api.delete(`/ai/${workspaceId}/session/${sessionId}`);
|
|
116
|
-
}
|
|
117
|
-
async shareSession(workspaceId, sessionId, body) {
|
|
118
|
-
await this.api.post(`/ai/${workspaceId}/session/${sessionId}/share`, body);
|
|
119
|
-
}
|
|
120
|
-
async getSharedSession(sessionId) {
|
|
121
|
-
const { data } = await this.api.get(`/ai/shared/${sessionId}`);
|
|
122
|
-
return data;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
88
|
// src/modules/auth.ts
|
|
127
89
|
class AuthModule extends BaseModule {
|
|
128
90
|
async getProfile() {
|
|
@@ -149,6 +111,10 @@ class AuthModule extends BaseModule {
|
|
|
149
111
|
const { data } = await this.api.post("/auth/complete-registration", body);
|
|
150
112
|
return data;
|
|
151
113
|
}
|
|
114
|
+
async deleteAccount() {
|
|
115
|
+
const { data } = await this.api.delete("/auth/account");
|
|
116
|
+
return data;
|
|
117
|
+
}
|
|
152
118
|
}
|
|
153
119
|
|
|
154
120
|
// src/modules/ci.ts
|
|
@@ -346,10 +312,6 @@ class TasksModule extends BaseModule {
|
|
|
346
312
|
updates
|
|
347
313
|
});
|
|
348
314
|
}
|
|
349
|
-
async getContext(id, workspaceId) {
|
|
350
|
-
const { data } = await this.api.get(`/workspaces/${workspaceId}/tasks/${id}/context`);
|
|
351
|
-
return data;
|
|
352
|
-
}
|
|
353
315
|
}
|
|
354
316
|
|
|
355
317
|
// src/modules/workspaces.ts
|
|
@@ -386,10 +348,6 @@ class WorkspacesModule extends BaseModule {
|
|
|
386
348
|
const { data } = await this.api.get(`/workspaces/${id}/stats`);
|
|
387
349
|
return data;
|
|
388
350
|
}
|
|
389
|
-
async getManifestStatus(workspaceId) {
|
|
390
|
-
const { data } = await this.api.get(`/workspaces/${workspaceId}/manifest-status`);
|
|
391
|
-
return data;
|
|
392
|
-
}
|
|
393
351
|
async getActivity(id, limit) {
|
|
394
352
|
const { data } = await this.api.get(`/workspaces/${id}/activity`, {
|
|
395
353
|
params: { limit }
|
|
@@ -400,6 +358,18 @@ class WorkspacesModule extends BaseModule {
|
|
|
400
358
|
const { data } = await this.api.post(`/workspaces/${id}/dispatch`, { workerId, sprintId });
|
|
401
359
|
return data.task;
|
|
402
360
|
}
|
|
361
|
+
async heartbeat(workspaceId, agentId, currentTaskId, status) {
|
|
362
|
+
const { data } = await this.api.post(`/workspaces/${workspaceId}/agents/heartbeat`, {
|
|
363
|
+
agentId,
|
|
364
|
+
currentTaskId: currentTaskId ?? null,
|
|
365
|
+
status: status ?? "WORKING"
|
|
366
|
+
});
|
|
367
|
+
return data.agent;
|
|
368
|
+
}
|
|
369
|
+
async getAgents(workspaceId) {
|
|
370
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/agents`);
|
|
371
|
+
return data.agents;
|
|
372
|
+
}
|
|
403
373
|
async listApiKeys(workspaceId) {
|
|
404
374
|
const { data } = await this.api.get(`/workspaces/${workspaceId}/api-keys`);
|
|
405
375
|
return data.apiKeys;
|
|
@@ -418,7 +388,6 @@ class LocusClient {
|
|
|
418
388
|
api;
|
|
419
389
|
emitter;
|
|
420
390
|
auth;
|
|
421
|
-
ai;
|
|
422
391
|
tasks;
|
|
423
392
|
sprints;
|
|
424
393
|
workspaces;
|
|
@@ -438,7 +407,6 @@ class LocusClient {
|
|
|
438
407
|
});
|
|
439
408
|
this.setupInterceptors();
|
|
440
409
|
this.auth = new AuthModule(this.api, this.emitter);
|
|
441
|
-
this.ai = new AIModule(this.api, this.emitter);
|
|
442
410
|
this.tasks = new TasksModule(this.api, this.emitter);
|
|
443
411
|
this.sprints = new SprintsModule(this.api, this.emitter);
|
|
444
412
|
this.workspaces = new WorkspacesModule(this.api, this.emitter);
|
package/dist/modules/auth.d.ts
CHANGED
|
@@ -16,5 +16,8 @@ export declare class AuthModule extends BaseModule {
|
|
|
16
16
|
}>;
|
|
17
17
|
verifyLogin(body: VerifyOtp): Promise<LoginResponse>;
|
|
18
18
|
completeRegistration(body: CompleteRegistration): Promise<LoginResponse>;
|
|
19
|
+
deleteAccount(): Promise<{
|
|
20
|
+
success: boolean;
|
|
21
|
+
}>;
|
|
19
22
|
}
|
|
20
23
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,UAAW,SAAQ,UAAU;IAClC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,IAAI,OAAO,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAKI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQhE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ7D,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAQpD,oBAAoB,CACxB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,UAAW,SAAQ,UAAU;IAClC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,IAAI,OAAO,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAKI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQhE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ7D,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAQpD,oBAAoB,CACxB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,aAAa,CAAC;IAQnB,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAMrD"}
|
package/dist/modules/tasks.d.ts
CHANGED
|
@@ -21,10 +21,5 @@ export declare class TasksModule extends BaseModule {
|
|
|
21
21
|
getBacklog(workspaceId: string): Promise<Task[]>;
|
|
22
22
|
addComment(id: string, workspaceId: string, body: AddComment): Promise<Comment>;
|
|
23
23
|
batchUpdate(ids: string[], workspaceId: string, updates: UpdateTask): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Fetch the formatted context for a task (Project Manifest + Task Details).
|
|
26
|
-
* This is used by the local AI agent to align with the project.
|
|
27
|
-
*/
|
|
28
|
-
getContext(id: string, workspaceId: string): Promise<string>;
|
|
29
24
|
}
|
|
30
25
|
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/modules/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,EAEP,UAAU,EACV,IAAI,EAEJ,UAAU,EAEV,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACpC;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAsB3E;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAYrE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,MAAM,CACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAQV,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAOhD,UAAU,CACd,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC;IAQb,WAAW,CACf,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/modules/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,EAEP,UAAU,EACV,IAAI,EAEJ,UAAU,EAEV,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACpC;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAsB3E;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAYrE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,MAAM,CACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAQV,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAOhD,UAAU,CACd,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC;IAQb,WAAW,CACf,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC;CAMjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateWorkspace, Event,
|
|
1
|
+
import { AgentRegistrationInfo, CreateWorkspace, Event, Task, UpdateWorkspace, Workspace, WorkspaceStats } from "@locusai/shared";
|
|
2
2
|
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class WorkspacesModule extends BaseModule {
|
|
4
4
|
listAll(): Promise<Workspace[]>;
|
|
@@ -11,21 +11,21 @@ export declare class WorkspacesModule extends BaseModule {
|
|
|
11
11
|
update(id: string, body: UpdateWorkspace): Promise<Workspace>;
|
|
12
12
|
delete(id: string): Promise<void>;
|
|
13
13
|
getStats(id: string): Promise<WorkspaceStats>;
|
|
14
|
-
/**
|
|
15
|
-
* Get detailed manifest completion status for a workspace.
|
|
16
|
-
* Returns completion percentage and missing fields.
|
|
17
|
-
*/
|
|
18
|
-
getManifestStatus(workspaceId: string): Promise<ManifestStatusResponse>;
|
|
19
14
|
getActivity(id: string, limit?: number): Promise<Event[]>;
|
|
20
15
|
/**
|
|
21
16
|
* Dispatch a task from the workspace backlog to an agent.
|
|
22
|
-
*
|
|
17
|
+
* Uses server-side locking to prevent double-assignment.
|
|
23
18
|
*/
|
|
19
|
+
dispatch(id: string, workerId: string, sprintId?: string): Promise<Task>;
|
|
24
20
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
21
|
+
* Send an agent heartbeat to the API.
|
|
22
|
+
* Creates or updates the agent registration with current status.
|
|
27
23
|
*/
|
|
28
|
-
|
|
24
|
+
heartbeat(workspaceId: string, agentId: string, currentTaskId?: string | null, status?: "IDLE" | "WORKING" | "COMPLETED" | "FAILED"): Promise<AgentRegistrationInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* Get active agents for a workspace.
|
|
27
|
+
*/
|
|
28
|
+
getAgents(workspaceId: string): Promise<AgentRegistrationInfo[]>;
|
|
29
29
|
listApiKeys(workspaceId: string): Promise<WorkspaceApiKey[]>;
|
|
30
30
|
createApiKey(workspaceId: string, name: string): Promise<WorkspaceApiKey>;
|
|
31
31
|
deleteApiKey(workspaceId: string, keyId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/modules/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/modules/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAErB,eAAe,EACf,KAAK,EACL,IAAI,EAEJ,eAAe,EACf,SAAS,EAET,cAAc,EAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,gBAAiB,SAAQ,UAAU;IACxC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO9C,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IASrE,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ5D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKvC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ7D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAO7C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAU/D;;;OAGG;IACG,QAAQ,CACZ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAYhB;;;OAGG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GACnD,OAAO,CAAC,qBAAqB,CAAC;IAYjC;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAWhE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAO5D,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,CAAC;IAQrB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/orchestrator.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ChildProcess } from "node:child_process";
|
|
|
2
2
|
import { Task } from "@locusai/shared";
|
|
3
3
|
import { EventEmitter } from "events";
|
|
4
4
|
import type { AiProvider } from "./ai/runner.js";
|
|
5
|
+
import type { WorktreeCleanupPolicy } from "./worktree/worktree-config.js";
|
|
5
6
|
export interface AgentConfig {
|
|
6
7
|
id: string;
|
|
7
8
|
maxConcurrentTasks: number;
|
|
@@ -14,6 +15,8 @@ export interface AgentState {
|
|
|
14
15
|
tasksFailed: number;
|
|
15
16
|
lastHeartbeat: Date;
|
|
16
17
|
process?: ChildProcess;
|
|
18
|
+
worktreePath?: string;
|
|
19
|
+
worktreeBranch?: string;
|
|
17
20
|
}
|
|
18
21
|
export interface OrchestratorConfig {
|
|
19
22
|
workspaceId: string;
|
|
@@ -24,6 +27,11 @@ export interface OrchestratorConfig {
|
|
|
24
27
|
apiKey: string;
|
|
25
28
|
model?: string;
|
|
26
29
|
provider?: AiProvider;
|
|
30
|
+
agentCount?: number;
|
|
31
|
+
useWorktrees?: boolean;
|
|
32
|
+
worktreeCleanupPolicy?: WorktreeCleanupPolicy;
|
|
33
|
+
/** Whether to push agent branches to remote after committing */
|
|
34
|
+
autoPush?: boolean;
|
|
27
35
|
}
|
|
28
36
|
export declare class AgentOrchestrator extends EventEmitter {
|
|
29
37
|
private client;
|
|
@@ -32,7 +40,12 @@ export declare class AgentOrchestrator extends EventEmitter {
|
|
|
32
40
|
private isRunning;
|
|
33
41
|
private processedTasks;
|
|
34
42
|
private resolvedSprintId;
|
|
43
|
+
private worktreeManager;
|
|
44
|
+
private heartbeatInterval;
|
|
35
45
|
constructor(config: OrchestratorConfig);
|
|
46
|
+
private get agentCount();
|
|
47
|
+
private get useWorktrees();
|
|
48
|
+
private get worktreeCleanupPolicy();
|
|
36
49
|
/**
|
|
37
50
|
* Resolve the sprint ID - use provided or find active sprint
|
|
38
51
|
*/
|
|
@@ -42,17 +55,21 @@ export declare class AgentOrchestrator extends EventEmitter {
|
|
|
42
55
|
*/
|
|
43
56
|
start(): Promise<void>;
|
|
44
57
|
/**
|
|
45
|
-
* Main orchestration loop -
|
|
58
|
+
* Main orchestration loop - spawns N agents and monitors them
|
|
46
59
|
*/
|
|
47
60
|
private orchestrationLoop;
|
|
48
61
|
/**
|
|
49
|
-
* Spawn a single agent process
|
|
62
|
+
* Spawn a single agent process. Each agent manages its own per-task worktrees.
|
|
50
63
|
*/
|
|
51
64
|
private spawnAgent;
|
|
52
65
|
/**
|
|
53
|
-
*
|
|
66
|
+
* Resolve the worker script path from the SDK module location
|
|
54
67
|
*/
|
|
55
|
-
private
|
|
68
|
+
private resolveWorkerPath;
|
|
69
|
+
/**
|
|
70
|
+
* Start monitoring agent heartbeats for stale detection
|
|
71
|
+
*/
|
|
72
|
+
private startHeartbeatMonitor;
|
|
56
73
|
/**
|
|
57
74
|
* Get available tasks in sprint
|
|
58
75
|
*/
|
|
@@ -74,7 +91,17 @@ export declare class AgentOrchestrator extends EventEmitter {
|
|
|
74
91
|
*/
|
|
75
92
|
stop(): Promise<void>;
|
|
76
93
|
/**
|
|
77
|
-
*
|
|
94
|
+
* Stop a specific agent by ID
|
|
95
|
+
*/
|
|
96
|
+
stopAgent(agentId: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Kill a process and all its descendants.
|
|
99
|
+
* Sends SIGTERM first to allow graceful shutdown, which triggers the worker's
|
|
100
|
+
* signal handler to abort the active Claude/Codex CLI process.
|
|
101
|
+
*/
|
|
102
|
+
private killProcessTree;
|
|
103
|
+
/**
|
|
104
|
+
* Cleanup - kill all agent processes and worktrees
|
|
78
105
|
*/
|
|
79
106
|
private cleanup;
|
|
80
107
|
/**
|
|
@@ -82,10 +109,16 @@ export declare class AgentOrchestrator extends EventEmitter {
|
|
|
82
109
|
*/
|
|
83
110
|
getStats(): {
|
|
84
111
|
activeAgents: number;
|
|
112
|
+
agentCount: number;
|
|
113
|
+
useWorktrees: boolean;
|
|
85
114
|
processedTasks: number;
|
|
86
115
|
totalTasksCompleted: number;
|
|
87
116
|
totalTasksFailed: number;
|
|
88
117
|
};
|
|
118
|
+
/**
|
|
119
|
+
* Get all agent states for status display
|
|
120
|
+
*/
|
|
121
|
+
getAgentStates(): AgentState[];
|
|
89
122
|
private sleep;
|
|
90
123
|
}
|
|
91
124
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAIzD,OAAO,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architect Agent Persona
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of the planning meeting. Reviews the Tech Lead's task
|
|
5
|
+
* breakdown and refines it with dependency analysis, risk assessment,
|
|
6
|
+
* and task splitting/merging recommendations.
|
|
7
|
+
*/
|
|
8
|
+
export interface ArchitectInput {
|
|
9
|
+
directive: string;
|
|
10
|
+
projectContext: string;
|
|
11
|
+
techLeadOutput: string;
|
|
12
|
+
feedback?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildArchitectPrompt(input: ArchitectInput): string;
|
|
15
|
+
//# sourceMappingURL=architect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/architect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CA+DlE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint Organizer Agent Persona
|
|
3
|
+
*
|
|
4
|
+
* Phase 3 (final) of the planning meeting. Takes the Architect's
|
|
5
|
+
* refined task list and produces the final sprint plan with
|
|
6
|
+
* name, goal, estimated duration, and organized task assignments.
|
|
7
|
+
*/
|
|
8
|
+
export interface SprintOrganizerInput {
|
|
9
|
+
directive: string;
|
|
10
|
+
architectOutput: string;
|
|
11
|
+
feedback?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function buildSprintOrganizerPrompt(input: SprintOrganizerInput): string;
|
|
14
|
+
//# sourceMappingURL=sprint-organizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint-organizer.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/sprint-organizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CAoER"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tech Lead Agent Persona
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 of the planning meeting. Reads the CEO directive,
|
|
5
|
+
* project context, and codebase structure to produce an initial
|
|
6
|
+
* task breakdown with technical approach for each task.
|
|
7
|
+
*/
|
|
8
|
+
export interface TechLeadInput {
|
|
9
|
+
directive: string;
|
|
10
|
+
projectContext: string;
|
|
11
|
+
codebaseIndex: string;
|
|
12
|
+
feedback?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildTechLeadPrompt(input: TechLeadInput): string;
|
|
15
|
+
//# sourceMappingURL=tech-lead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/tech-lead.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA6DhE"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PlanManager } from "./plan-manager.js";
|
|
2
|
+
export { PlanningMeeting, type PlanningMeetingConfig, type PlanningMeetingResult, type PlanningPhase, } from "./planning-meeting.js";
|
|
3
|
+
export { type PlannedTask, parseSprintPlanFromAI, plannedTasksToCreatePayloads, type SprintPlan, type SprintPlanRisk, sprintPlanToMarkdown, } from "./sprint-plan.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,WAAW,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Sprint, Task } from "@locusai/shared";
|
|
2
|
+
import type { LocusClient } from "../index.js";
|
|
3
|
+
import { type SprintPlan } from "./sprint-plan.js";
|
|
4
|
+
/**
|
|
5
|
+
* Manages the lifecycle of sprint plans:
|
|
6
|
+
* save, load, list, approve, reject, cancel.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PlanManager {
|
|
9
|
+
private projectPath;
|
|
10
|
+
private plansDir;
|
|
11
|
+
constructor(projectPath: string);
|
|
12
|
+
/**
|
|
13
|
+
* Save a sprint plan to disk as both JSON (for machine) and Markdown (for human).
|
|
14
|
+
*/
|
|
15
|
+
save(plan: SprintPlan): string;
|
|
16
|
+
/**
|
|
17
|
+
* Load a plan by ID or slug.
|
|
18
|
+
*/
|
|
19
|
+
load(idOrSlug: string): SprintPlan | null;
|
|
20
|
+
/**
|
|
21
|
+
* List all plans, optionally filtered by status.
|
|
22
|
+
*/
|
|
23
|
+
list(status?: SprintPlan["status"]): SprintPlan[];
|
|
24
|
+
/**
|
|
25
|
+
* Approve a plan: create a sprint and tasks via the API.
|
|
26
|
+
* Returns the created sprint and tasks.
|
|
27
|
+
*/
|
|
28
|
+
approve(idOrSlug: string, client: LocusClient, workspaceId: string): Promise<{
|
|
29
|
+
sprint: Sprint;
|
|
30
|
+
tasks: Task[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Reject a plan with feedback. The plan is marked as rejected
|
|
34
|
+
* and the feedback is stored for re-planning.
|
|
35
|
+
*/
|
|
36
|
+
reject(idOrSlug: string, feedback: string): SprintPlan;
|
|
37
|
+
/**
|
|
38
|
+
* Cancel a plan. Removes it from the pending list.
|
|
39
|
+
*/
|
|
40
|
+
cancel(idOrSlug: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Delete a plan's files entirely.
|
|
43
|
+
*/
|
|
44
|
+
delete(idOrSlug: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get the markdown content of a plan for display.
|
|
47
|
+
*/
|
|
48
|
+
getMarkdown(idOrSlug: string): string | null;
|
|
49
|
+
private ensurePlansDir;
|
|
50
|
+
private slugify;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=plan-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-manager.d.ts","sourceRoot":"","sources":["../../src/planning/plan-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,WAAW;IAF/B,OAAO,CAAC,QAAQ,CAAS;gBAEL,WAAW,EAAE,MAAM;IAIvC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAa9B;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoBzC;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,EAAE;IA4BjD;;;OAGG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IA4C7C;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAmBtD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAW9B;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IA6B9B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM5C,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,OAAO;CAMhB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AiRunner } from "../ai/runner.js";
|
|
2
|
+
import { type SprintPlan } from "./sprint-plan.js";
|
|
3
|
+
export type PlanningPhase = "tech-lead" | "architect" | "sprint-organizer" | "complete";
|
|
4
|
+
export interface PlanningMeetingConfig {
|
|
5
|
+
projectPath: string;
|
|
6
|
+
aiRunner: AiRunner;
|
|
7
|
+
log?: (message: string, level?: "info" | "success" | "warn" | "error") => void;
|
|
8
|
+
}
|
|
9
|
+
export interface PlanningMeetingResult {
|
|
10
|
+
plan: SprintPlan;
|
|
11
|
+
/** Raw outputs from each phase for debugging/transparency */
|
|
12
|
+
phaseOutputs: {
|
|
13
|
+
techLead: string;
|
|
14
|
+
architect: string;
|
|
15
|
+
sprintOrganizer: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Orchestrates a multi-phase planning meeting where AI agent personas
|
|
20
|
+
* collaborate to produce a sprint plan.
|
|
21
|
+
*
|
|
22
|
+
* Flow: CEO Directive → Tech Lead → Architect → Sprint Organizer → Sprint Plan
|
|
23
|
+
*/
|
|
24
|
+
export declare class PlanningMeeting {
|
|
25
|
+
private projectPath;
|
|
26
|
+
private aiRunner;
|
|
27
|
+
private log;
|
|
28
|
+
constructor(config: PlanningMeetingConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Run the full planning meeting pipeline.
|
|
31
|
+
*/
|
|
32
|
+
run(directive: string, feedback?: string): Promise<PlanningMeetingResult>;
|
|
33
|
+
private getProjectContext;
|
|
34
|
+
private getCodebaseIndex;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=planning-meeting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-meeting.d.ts","sourceRoot":"","sources":["../../src/planning/planning-meeting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAMhD,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,UAAU,CAAC;AAEf,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,CACJ,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,KAC1C,IAAI,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,6DAA6D;IAC7D,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAGD;gBAEE,MAAM,EAAE,qBAAqB;IAMzC;;OAEG;IACG,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAuDjC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;CA8BzB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type AssigneeRole, type CreateTask, type TaskPriority } from "@locusai/shared";
|
|
2
|
+
export interface PlannedTask {
|
|
3
|
+
/** Sequential index within the plan (1-based) */
|
|
4
|
+
index: number;
|
|
5
|
+
title: string;
|
|
6
|
+
description: string;
|
|
7
|
+
assigneeRole: AssigneeRole;
|
|
8
|
+
priority: TaskPriority;
|
|
9
|
+
/** Relative complexity: 1 (trivial) to 5 (very complex) */
|
|
10
|
+
complexity: number;
|
|
11
|
+
acceptanceCriteria: string[];
|
|
12
|
+
labels: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface SprintPlanRisk {
|
|
15
|
+
description: string;
|
|
16
|
+
mitigation: string;
|
|
17
|
+
severity: "low" | "medium" | "high";
|
|
18
|
+
}
|
|
19
|
+
export interface SprintPlan {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
goal: string;
|
|
23
|
+
directive: string;
|
|
24
|
+
tasks: PlannedTask[];
|
|
25
|
+
risks: SprintPlanRisk[];
|
|
26
|
+
estimatedDays: number;
|
|
27
|
+
status: "pending" | "approved" | "rejected" | "cancelled";
|
|
28
|
+
feedback?: string;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
updatedAt: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Render a sprint plan as readable markdown for CEO review.
|
|
34
|
+
*/
|
|
35
|
+
export declare function sprintPlanToMarkdown(plan: SprintPlan): string;
|
|
36
|
+
/**
|
|
37
|
+
* Convert planned tasks to API-ready CreateTask payloads.
|
|
38
|
+
* Sets the `order` field based on plan index so dispatch respects the planned ordering.
|
|
39
|
+
*/
|
|
40
|
+
export declare function plannedTasksToCreatePayloads(plan: SprintPlan, sprintId: string): CreateTask[];
|
|
41
|
+
/**
|
|
42
|
+
* Parse a sprint plan from a JSON string (as returned by AI).
|
|
43
|
+
* Validates required fields, assigns defaults, and ensures tasks
|
|
44
|
+
* are topologically sorted by their dependencies.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseSprintPlanFromAI(raw: string, directive: string): SprintPlan;
|
|
47
|
+
//# sourceMappingURL=sprint-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint-plan.d.ts","sourceRoot":"","sources":["../../src/planning/sprint-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA+D7D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,UAAU,EAAE,CAgBd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,UAAU,CA0CZ"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ProjectInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
mission: string;
|
|
4
|
+
techStack: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface ProgressEvent {
|
|
7
|
+
type: "task_completed" | "sprint_started" | "sprint_completed" | "blocker" | "pr_opened" | "pr_reviewed" | "pr_merged" | "exec_completed";
|
|
8
|
+
title: string;
|
|
9
|
+
details?: string;
|
|
10
|
+
timestamp?: Date;
|
|
11
|
+
}
|
|
12
|
+
export declare class KnowledgeBase {
|
|
13
|
+
private contextPath;
|
|
14
|
+
private progressPath;
|
|
15
|
+
constructor(projectPath: string);
|
|
16
|
+
readContext(): string;
|
|
17
|
+
readProgress(): string;
|
|
18
|
+
updateContext(content: string): void;
|
|
19
|
+
updateProgress(event: ProgressEvent): void;
|
|
20
|
+
getFullContext(): string;
|
|
21
|
+
initialize(info: ProjectInfo): void;
|
|
22
|
+
get exists(): boolean;
|
|
23
|
+
private ensureDir;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=knowledge-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-base.d.ts","sourceRoot":"","sources":["../../src/project/knowledge-base.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EACA,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,WAAW,GACX,aAAa,GACb,WAAW,GACX,gBAAgB,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAEjB,WAAW,EAAE,MAAM;IAK/B,WAAW,IAAI,MAAM;IAOrB,YAAY,IAAI,MAAM;IAOtB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA2C1C,cAAc,IAAI,MAAM;IAiBxB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAiCnC,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { type CreateWorktreeOptions, type CreateWorktreeResult, DEFAULT_WORKTREE_CONFIG, WORKTREE_BRANCH_PREFIX, WORKTREE_ROOT_DIR, type WorktreeCleanupPolicy, type WorktreeConfig, type WorktreeInfo, } from "./worktree-config.js";
|
|
2
|
+
export { WorktreeManager } from "./worktree-manager.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worktree/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|