@locusai/sdk 0.4.4 → 0.4.6
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/artifact-syncer.d.ts +1 -1
- package/dist/agent/artifact-syncer.d.ts.map +1 -1
- package/dist/agent/artifact-syncer.js +1 -1
- package/dist/agent/codebase-indexer-service.d.ts +2 -2
- package/dist/agent/codebase-indexer-service.d.ts.map +1 -1
- package/dist/agent/codebase-indexer-service.js +1 -1
- package/dist/agent/index.d.ts +5 -5
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +5 -5
- package/dist/agent/sprint-planner.d.ts +2 -2
- package/dist/agent/sprint-planner.d.ts.map +1 -1
- package/dist/agent/sprint-planner.js +25 -19
- package/dist/agent/task-executor.d.ts +2 -2
- package/dist/agent/task-executor.d.ts.map +1 -1
- package/dist/agent/task-executor.js +12 -8
- package/dist/agent/worker.d.ts.map +1 -1
- package/dist/agent/worker.js +32 -25
- package/dist/ai/anthropic-client.js +1 -1
- package/dist/ai/claude-runner.d.ts +1 -0
- package/dist/ai/claude-runner.d.ts.map +1 -1
- package/dist/ai/claude-runner.js +25 -4
- package/dist/ai/index.d.ts +2 -2
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -2
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/prompt-builder.d.ts +1 -1
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +24 -28
- package/dist/events.d.ts +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/index-node.d.ts +6 -6
- package/dist/index-node.d.ts.map +1 -1
- package/dist/index-node.js +6 -6
- package/dist/index.d.ts +18 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -18
- package/dist/modules/auth.d.ts +1 -1
- package/dist/modules/auth.d.ts.map +1 -1
- package/dist/modules/auth.js +1 -1
- package/dist/modules/base.d.ts +1 -1
- package/dist/modules/base.d.ts.map +1 -1
- package/dist/modules/ci.d.ts +1 -1
- package/dist/modules/ci.d.ts.map +1 -1
- package/dist/modules/ci.js +1 -1
- package/dist/modules/docs.d.ts +1 -1
- package/dist/modules/docs.d.ts.map +1 -1
- package/dist/modules/docs.js +1 -1
- package/dist/modules/invitations.d.ts +1 -1
- package/dist/modules/invitations.d.ts.map +1 -1
- package/dist/modules/invitations.js +1 -1
- package/dist/modules/organizations.d.ts +1 -1
- package/dist/modules/organizations.d.ts.map +1 -1
- package/dist/modules/organizations.js +1 -1
- package/dist/modules/sprints.d.ts +1 -1
- package/dist/modules/sprints.d.ts.map +1 -1
- package/dist/modules/sprints.js +1 -1
- package/dist/modules/tasks.d.ts +1 -1
- package/dist/modules/tasks.d.ts.map +1 -1
- package/dist/modules/tasks.js +1 -1
- package/dist/modules/workspaces.d.ts +1 -1
- package/dist/modules/workspaces.d.ts.map +1 -1
- package/dist/modules/workspaces.js +1 -1
- package/dist/orchestrator.js +2 -2
- package/package.json +2 -2
- package/src/agent/artifact-syncer.ts +2 -2
- package/src/agent/codebase-indexer-service.ts +3 -3
- package/src/agent/index.ts +5 -5
- package/src/agent/sprint-planner.ts +31 -23
- package/src/agent/task-executor.ts +18 -10
- package/src/agent/worker.ts +41 -32
- package/src/ai/anthropic-client.ts +1 -1
- package/src/ai/claude-runner.ts +30 -4
- package/src/ai/index.ts +2 -2
- package/src/core/index.ts +3 -3
- package/src/core/prompt-builder.ts +24 -33
- package/src/events.ts +1 -1
- package/src/index-node.ts +6 -6
- package/src/index.ts +19 -19
- package/src/modules/auth.ts +1 -1
- package/src/modules/base.ts +1 -1
- package/src/modules/ci.ts +1 -1
- package/src/modules/docs.ts +1 -1
- package/src/modules/invitations.ts +1 -1
- package/src/modules/organizations.ts +1 -1
- package/src/modules/sprints.ts +1 -1
- package/src/modules/tasks.ts +1 -1
- package/src/modules/workspaces.ts +1 -1
- package/src/orchestrator.ts +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { LocusConfig, LocusEmitter } from "./events";
|
|
2
|
-
import { AuthModule } from "./modules/auth";
|
|
3
|
-
import { CiModule } from "./modules/ci";
|
|
4
|
-
import { DocsModule } from "./modules/docs";
|
|
5
|
-
import { InvitationsModule } from "./modules/invitations";
|
|
6
|
-
import { OrganizationsModule } from "./modules/organizations";
|
|
7
|
-
import { SprintsModule } from "./modules/sprints";
|
|
8
|
-
import { TasksModule } from "./modules/tasks";
|
|
9
|
-
import { WorkspacesModule } from "./modules/workspaces";
|
|
10
|
-
export * from "./events";
|
|
11
|
-
export * from "./modules/auth";
|
|
12
|
-
export * from "./modules/ci";
|
|
13
|
-
export * from "./modules/docs";
|
|
14
|
-
export * from "./modules/invitations";
|
|
15
|
-
export * from "./modules/organizations";
|
|
16
|
-
export * from "./modules/sprints";
|
|
17
|
-
export * from "./modules/tasks";
|
|
18
|
-
export * from "./modules/workspaces";
|
|
1
|
+
import { LocusConfig, LocusEmitter } from "./events.js";
|
|
2
|
+
import { AuthModule } from "./modules/auth.js";
|
|
3
|
+
import { CiModule } from "./modules/ci.js";
|
|
4
|
+
import { DocsModule } from "./modules/docs.js";
|
|
5
|
+
import { InvitationsModule } from "./modules/invitations.js";
|
|
6
|
+
import { OrganizationsModule } from "./modules/organizations.js";
|
|
7
|
+
import { SprintsModule } from "./modules/sprints.js";
|
|
8
|
+
import { TasksModule } from "./modules/tasks.js";
|
|
9
|
+
import { WorkspacesModule } from "./modules/workspaces.js";
|
|
10
|
+
export * from "./events.js";
|
|
11
|
+
export * from "./modules/auth.js";
|
|
12
|
+
export * from "./modules/ci.js";
|
|
13
|
+
export * from "./modules/docs.js";
|
|
14
|
+
export * from "./modules/invitations.js";
|
|
15
|
+
export * from "./modules/organizations.js";
|
|
16
|
+
export * from "./modules/sprints.js";
|
|
17
|
+
export * from "./modules/tasks.js";
|
|
18
|
+
export * from "./modules/workspaces.js";
|
|
19
19
|
export declare class LocusClient {
|
|
20
20
|
private readonly api;
|
|
21
21
|
readonly emitter: LocusEmitter;
|
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,
|
|
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
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
-
import { LocusEmitter, LocusEvent } from "./events";
|
|
3
|
-
import { AuthModule } from "./modules/auth";
|
|
4
|
-
import { CiModule } from "./modules/ci";
|
|
5
|
-
import { DocsModule } from "./modules/docs";
|
|
6
|
-
import { InvitationsModule } from "./modules/invitations";
|
|
7
|
-
import { OrganizationsModule } from "./modules/organizations";
|
|
8
|
-
import { SprintsModule } from "./modules/sprints";
|
|
9
|
-
import { TasksModule } from "./modules/tasks";
|
|
10
|
-
import { WorkspacesModule } from "./modules/workspaces";
|
|
2
|
+
import { LocusEmitter, LocusEvent } from "./events.js";
|
|
3
|
+
import { AuthModule } from "./modules/auth.js";
|
|
4
|
+
import { CiModule } from "./modules/ci.js";
|
|
5
|
+
import { DocsModule } from "./modules/docs.js";
|
|
6
|
+
import { InvitationsModule } from "./modules/invitations.js";
|
|
7
|
+
import { OrganizationsModule } from "./modules/organizations.js";
|
|
8
|
+
import { SprintsModule } from "./modules/sprints.js";
|
|
9
|
+
import { TasksModule } from "./modules/tasks.js";
|
|
10
|
+
import { WorkspacesModule } from "./modules/workspaces.js";
|
|
11
11
|
// Browser-safe exports only
|
|
12
|
-
export * from "./events";
|
|
13
|
-
export * from "./modules/auth";
|
|
14
|
-
export * from "./modules/ci";
|
|
15
|
-
export * from "./modules/docs";
|
|
16
|
-
export * from "./modules/invitations";
|
|
17
|
-
export * from "./modules/organizations";
|
|
18
|
-
export * from "./modules/sprints";
|
|
19
|
-
export * from "./modules/tasks";
|
|
20
|
-
export * from "./modules/workspaces";
|
|
12
|
+
export * from "./events.js";
|
|
13
|
+
export * from "./modules/auth.js";
|
|
14
|
+
export * from "./modules/ci.js";
|
|
15
|
+
export * from "./modules/docs.js";
|
|
16
|
+
export * from "./modules/invitations.js";
|
|
17
|
+
export * from "./modules/organizations.js";
|
|
18
|
+
export * from "./modules/sprints.js";
|
|
19
|
+
export * from "./modules/tasks.js";
|
|
20
|
+
export * from "./modules/workspaces.js";
|
|
21
21
|
export class LocusClient {
|
|
22
22
|
api;
|
|
23
23
|
emitter;
|
package/dist/modules/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompleteRegistration, LoginResponse, User, VerifyOtp } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class AuthModule extends BaseModule {
|
|
4
4
|
getMe(): Promise<User>;
|
|
5
5
|
requestRegisterOtp(email: string): Promise<{
|
|
@@ -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,
|
|
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,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,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;CAO1B"}
|
package/dist/modules/auth.js
CHANGED
package/dist/modules/base.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/modules/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/modules/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,8BAAsB,UAAU;IAE5B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY;gBADrB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,YAAY;CAE3C"}
|
package/dist/modules/ci.d.ts
CHANGED
package/dist/modules/ci.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/modules/ci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/modules/ci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,QAAS,SAAQ,UAAU;IAChC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAOlE"}
|
package/dist/modules/ci.js
CHANGED
package/dist/modules/docs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateDoc, CreateDocGroup, Doc, DocGroup, UpdateDoc, UpdateDocGroup } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class DocsModule extends BaseModule {
|
|
4
4
|
create(workspaceId: string, body: CreateDoc): Promise<Doc>;
|
|
5
5
|
list(workspaceId: string): Promise<Doc[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/modules/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,cAAc,EACd,GAAG,EACH,QAAQ,EAKR,SAAS,EACT,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/modules/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,cAAc,EACd,GAAG,EACH,QAAQ,EAKR,SAAS,EACT,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,UAAW,SAAQ,UAAU;IAClC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ1D,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAOzC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAOtD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAQtE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOpD,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,QAAQ,CAAC;IAQd,WAAW,CACf,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,QAAQ,CAAC;IAQd,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlE"}
|
package/dist/modules/docs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AcceptInvitation, AcceptInvitationResponse, CreateInvitation, Invitation, InvitationResponse } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class InvitationsModule extends BaseModule {
|
|
4
4
|
create(orgId: string, body: CreateInvitation): Promise<Invitation>;
|
|
5
5
|
list(orgId: string): Promise<Invitation[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../../src/modules/invitations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../../src/modules/invitations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAQlE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO1C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOlD,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAQjE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/modules/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,kBAAkB,EAElB,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/modules/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,kBAAkB,EAElB,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,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;AAUD,qBAAa,mBAAoB,SAAQ,UAAU;IAC3C,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO1C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOtD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQnE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO7C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateSprint, Sprint, UpdateSprint } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class SprintsModule extends BaseModule {
|
|
4
4
|
list(workspaceId: string): Promise<Sprint[]>;
|
|
5
5
|
getActive(workspaceId: string): Promise<Sprint>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/modules/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,MAAM,EAGN,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/modules/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,MAAM,EAGN,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,aAAc,SAAQ,UAAU;IACrC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO5C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC;IAQZ,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMjE"}
|
package/dist/modules/sprints.js
CHANGED
package/dist/modules/tasks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AddComment, Comment, CreateTask, Task, TaskStatus, UpdateTask } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export interface TaskListOptions {
|
|
4
4
|
sprintId?: string;
|
|
5
5
|
status?: TaskStatus | TaskStatus[];
|
|
@@ -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,
|
|
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;CAOpB"}
|
package/dist/modules/tasks.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateWorkspace, Event, Task, UpdateWorkspace, Workspace, WorkspaceStats } from "@locusai/shared";
|
|
2
|
-
import { BaseModule } from "./base";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
3
|
export declare class WorkspacesModule extends BaseModule {
|
|
4
4
|
listAll(): Promise<Workspace[]>;
|
|
5
5
|
listByOrg(orgId: string): Promise<Workspace[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/modules/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,KAAK,EACL,IAAI,EAEJ,eAAe,EACf,SAAS,EAET,cAAc,EAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/modules/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,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;CAOjB"}
|
package/dist/orchestrator.js
CHANGED
|
@@ -3,8 +3,8 @@ import { existsSync } from "node:fs";
|
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { TaskPriority, TaskStatus } from "@locusai/shared";
|
|
5
5
|
import { EventEmitter } from "events";
|
|
6
|
-
import { LocusClient } from "./index";
|
|
7
|
-
import { c } from "./utils/colors";
|
|
6
|
+
import { LocusClient } from "./index.js";
|
|
7
|
+
import { c } from "./utils/colors.js";
|
|
8
8
|
export class AgentOrchestrator extends EventEmitter {
|
|
9
9
|
client;
|
|
10
10
|
config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@locusai/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
44
|
-
"@locusai/shared": "^0.4.
|
|
44
|
+
"@locusai/shared": "^0.4.6",
|
|
45
45
|
"axios": "^1.13.2",
|
|
46
46
|
"events": "^3.3.0",
|
|
47
47
|
"globby": "^14.0.2"
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
statSync,
|
|
7
7
|
} from "node:fs";
|
|
8
8
|
import { join } from "node:path";
|
|
9
|
-
import { getLocusPath } from "../core/config";
|
|
10
|
-
import type { LocusClient } from "../index";
|
|
9
|
+
import { getLocusPath } from "../core/config.js";
|
|
10
|
+
import type { LocusClient } from "../index.js";
|
|
11
11
|
|
|
12
12
|
export interface ArtifactSyncerDeps {
|
|
13
13
|
client: LocusClient;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AnthropicClient } from "../ai/anthropic-client";
|
|
2
|
-
import type { ClaudeRunner } from "../ai/claude-runner";
|
|
3
|
-
import { CodebaseIndexer } from "../core/indexer";
|
|
1
|
+
import type { AnthropicClient } from "../ai/anthropic-client.js";
|
|
2
|
+
import type { ClaudeRunner } from "../ai/claude-runner.js";
|
|
3
|
+
import { CodebaseIndexer } from "../core/indexer.js";
|
|
4
4
|
|
|
5
5
|
export interface CodebaseIndexerServiceDeps {
|
|
6
6
|
anthropicClient: AnthropicClient | null;
|
package/src/agent/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { ArtifactSyncer } from "./artifact-syncer";
|
|
2
|
-
export { CodebaseIndexerService } from "./codebase-indexer-service";
|
|
3
|
-
export { SprintPlanner } from "./sprint-planner";
|
|
4
|
-
export { TaskExecutor } from "./task-executor";
|
|
5
|
-
export { AgentWorker, type WorkerConfig } from "./worker";
|
|
1
|
+
export { ArtifactSyncer } from "./artifact-syncer.js";
|
|
2
|
+
export { CodebaseIndexerService } from "./codebase-indexer-service.js";
|
|
3
|
+
export { SprintPlanner } from "./sprint-planner.js";
|
|
4
|
+
export { TaskExecutor } from "./task-executor.js";
|
|
5
|
+
export { AgentWorker, type WorkerConfig } from "./worker.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Sprint, Task } from "@locusai/shared";
|
|
2
|
-
import type { AnthropicClient } from "../ai/anthropic-client";
|
|
3
|
-
import type { ClaudeRunner } from "../ai/claude-runner";
|
|
2
|
+
import type { AnthropicClient } from "../ai/anthropic-client.js";
|
|
3
|
+
import type { ClaudeRunner } from "../ai/claude-runner.js";
|
|
4
4
|
|
|
5
5
|
export interface SprintPlannerDeps {
|
|
6
6
|
anthropicClient: AnthropicClient | null;
|
|
@@ -17,19 +17,20 @@ export class SprintPlanner {
|
|
|
17
17
|
async planSprint(sprint: Sprint, tasks: Task[]): Promise<string> {
|
|
18
18
|
this.deps.log(`Planning sprint: ${sprint.name}`, "info");
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
try {
|
|
21
|
+
const taskList = tasks
|
|
22
|
+
.map(
|
|
23
|
+
(t) => `- [${t.id}] ${t.title}: ${t.description || "No description"}`
|
|
24
|
+
)
|
|
25
|
+
.join("\n");
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
let plan: string;
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
if (this.deps.anthropicClient) {
|
|
30
|
+
// Use Anthropic SDK with caching for faster planning
|
|
31
|
+
const systemPrompt = `You are an expert project manager and lead engineer specialized in sprint planning and task prioritization.`;
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
const userPrompt = `# Sprint Planning: ${sprint.name}
|
|
33
34
|
|
|
34
35
|
## Tasks
|
|
35
36
|
${taskList}
|
|
@@ -45,13 +46,13 @@ ${taskList}
|
|
|
45
46
|
- Avoid using absolute local paths (e.g., /Users/...) in your output. Use relative paths starting from the project root if necessary.
|
|
46
47
|
- Your output will be saved as the official sprint mindmap on the server.`;
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
plan = await this.deps.anthropicClient.run({
|
|
50
|
+
systemPrompt,
|
|
51
|
+
userPrompt,
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
// Fallback to Claude CLI
|
|
55
|
+
const planningPrompt = `# Sprint Planning: ${sprint.name}
|
|
55
56
|
|
|
56
57
|
You are an expert project manager and lead engineer. You need to create a mindmap and execution plan for the following tasks in this sprint.
|
|
57
58
|
|
|
@@ -69,10 +70,17 @@ ${taskList}
|
|
|
69
70
|
- Avoid using absolute local paths (e.g., /Users/...) in your output. Use relative paths starting from the project root if necessary.
|
|
70
71
|
- Your output will be saved as the official sprint mindmap on the server.`;
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
plan = await this.deps.claudeRunner.run(planningPrompt, true);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
this.deps.log(
|
|
77
|
+
"Sprint mindmap generated and posted to server.",
|
|
78
|
+
"success"
|
|
79
|
+
);
|
|
80
|
+
return plan;
|
|
81
|
+
} catch (error) {
|
|
82
|
+
this.deps.log(`Sprint planning failed: ${error}`, "error");
|
|
83
|
+
return sprint.mindmap || "";
|
|
73
84
|
}
|
|
74
|
-
|
|
75
|
-
this.deps.log("Sprint mindmap generated and posted to server.", "success");
|
|
76
|
-
return plan;
|
|
77
85
|
}
|
|
78
86
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Task } from "@locusai/shared";
|
|
2
|
-
import type { AnthropicClient } from "../ai/anthropic-client";
|
|
3
|
-
import type { ClaudeRunner } from "../ai/claude-runner";
|
|
4
|
-
import { PromptBuilder } from "../core/prompt-builder";
|
|
2
|
+
import type { AnthropicClient } from "../ai/anthropic-client.js";
|
|
3
|
+
import type { ClaudeRunner } from "../ai/claude-runner.js";
|
|
4
|
+
import { PromptBuilder } from "../core/prompt-builder.js";
|
|
5
5
|
|
|
6
6
|
export interface TaskExecutorDeps {
|
|
7
7
|
anthropicClient: AnthropicClient | null;
|
|
@@ -34,7 +34,7 @@ export class TaskExecutor {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
try {
|
|
37
|
-
let plan: string;
|
|
37
|
+
let plan: string = "";
|
|
38
38
|
|
|
39
39
|
if (this.deps.anthropicClient) {
|
|
40
40
|
// Phase 1: Planning (using Anthropic SDK with caching)
|
|
@@ -51,15 +51,23 @@ export class TaskExecutor {
|
|
|
51
51
|
"## Phase 1: Planning\nAnalyze and create a detailed plan for THIS SPECIFIC TASK. Do NOT execute changes yet.",
|
|
52
52
|
});
|
|
53
53
|
} else {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
this.deps.log(
|
|
55
|
+
"Skipping Phase 1: Planning (No Anthropic API Key)...",
|
|
56
|
+
"info"
|
|
57
|
+
);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
// Phase 2: Execution (always using Claude CLI for agentic tools)
|
|
61
|
-
this.deps.log("
|
|
62
|
-
|
|
61
|
+
this.deps.log("Starting Execution...", "info");
|
|
62
|
+
|
|
63
|
+
let executionPrompt = basePrompt;
|
|
64
|
+
if (plan) {
|
|
65
|
+
executionPrompt += `\n\n## Phase 2: Execution\nBased on the plan, execute the task:\n\n${plan}`;
|
|
66
|
+
} else {
|
|
67
|
+
executionPrompt += `\n\n## Execution\nExecute the task directly.`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
executionPrompt += `\n\nWhen finished, output: <promise>COMPLETE</promise>`;
|
|
63
71
|
const output = await this.deps.claudeRunner.run(executionPrompt);
|
|
64
72
|
|
|
65
73
|
const success = output.includes("<promise>COMPLETE</promise>");
|
package/src/agent/worker.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Sprint, Task, TaskStatus } from "@locusai/shared";
|
|
2
|
-
import { AnthropicClient } from "../ai/anthropic-client";
|
|
3
|
-
import { ClaudeRunner } from "../ai/claude-runner";
|
|
4
|
-
import { LocusClient } from "../index";
|
|
5
|
-
import { c } from "../utils/colors";
|
|
6
|
-
import { ArtifactSyncer } from "./artifact-syncer";
|
|
7
|
-
import { CodebaseIndexerService } from "./codebase-indexer-service";
|
|
8
|
-
import { SprintPlanner } from "./sprint-planner";
|
|
9
|
-
import { TaskExecutor } from "./task-executor";
|
|
2
|
+
import { AnthropicClient } from "../ai/anthropic-client.js";
|
|
3
|
+
import { ClaudeRunner } from "../ai/claude-runner.js";
|
|
4
|
+
import { LocusClient } from "../index.js";
|
|
5
|
+
import { c } from "../utils/colors.js";
|
|
6
|
+
import { ArtifactSyncer } from "./artifact-syncer.js";
|
|
7
|
+
import { CodebaseIndexerService } from "./codebase-indexer-service.js";
|
|
8
|
+
import { SprintPlanner } from "./sprint-planner.js";
|
|
9
|
+
import { TaskExecutor } from "./task-executor.js";
|
|
10
10
|
|
|
11
11
|
export interface WorkerConfig {
|
|
12
12
|
agentId: string;
|
|
@@ -160,9 +160,6 @@ export class AgentWorker {
|
|
|
160
160
|
private async executeTask(
|
|
161
161
|
task: Task
|
|
162
162
|
): Promise<{ success: boolean; summary: string }> {
|
|
163
|
-
// Reindex codebase before execution to ensure fresh context
|
|
164
|
-
await this.indexerService.reindex();
|
|
165
|
-
|
|
166
163
|
// Fetch full task details to get comments/feedback
|
|
167
164
|
const fullTask = await this.client.tasks.getById(
|
|
168
165
|
task.id,
|
|
@@ -175,6 +172,9 @@ export class AgentWorker {
|
|
|
175
172
|
// Execute the task
|
|
176
173
|
const result = await this.taskExecutor.execute(fullTask);
|
|
177
174
|
|
|
175
|
+
// Reindex codebase after execution to ensure fresh context
|
|
176
|
+
await this.indexerService.reindex();
|
|
177
|
+
|
|
178
178
|
return result;
|
|
179
179
|
}
|
|
180
180
|
|
|
@@ -203,28 +203,37 @@ export class AgentWorker {
|
|
|
203
203
|
? new Date(sprint.mindmapUpdatedAt)
|
|
204
204
|
: new Date(0);
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
this.log(
|
|
214
|
-
"New tasks have been added to the sprint since last mindmap. Regenerating...",
|
|
215
|
-
"warn"
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
this.sprintPlan = await this.sprintPlanner.planSprint(sprint, tasks);
|
|
219
|
-
|
|
220
|
-
// Save mindmap to server
|
|
221
|
-
await this.client.sprints.update(sprint.id, this.config.workspaceId, {
|
|
222
|
-
mindmap: this.sprintPlan,
|
|
223
|
-
mindmapUpdatedAt: new Date(),
|
|
224
|
-
});
|
|
206
|
+
// Skip mindmap generation if there's only one task
|
|
207
|
+
if (tasks.length <= 1) {
|
|
208
|
+
this.log(
|
|
209
|
+
"Skipping mindmap generation (only one task in sprint).",
|
|
210
|
+
"info"
|
|
211
|
+
);
|
|
212
|
+
this.sprintPlan = null;
|
|
225
213
|
} else {
|
|
226
|
-
|
|
227
|
-
|
|
214
|
+
const needsPlanning =
|
|
215
|
+
!sprint.mindmap ||
|
|
216
|
+
sprint.mindmap.trim() === "" ||
|
|
217
|
+
latestTaskCreation > mindmapDate;
|
|
218
|
+
|
|
219
|
+
if (needsPlanning) {
|
|
220
|
+
if (sprint.mindmap && latestTaskCreation > mindmapDate) {
|
|
221
|
+
this.log(
|
|
222
|
+
"New tasks have been added to the sprint since last mindmap. Regenerating...",
|
|
223
|
+
"warn"
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
this.sprintPlan = await this.sprintPlanner.planSprint(sprint, tasks);
|
|
227
|
+
|
|
228
|
+
// Save mindmap to server
|
|
229
|
+
await this.client.sprints.update(sprint.id, this.config.workspaceId, {
|
|
230
|
+
mindmap: this.sprintPlan,
|
|
231
|
+
mindmapUpdatedAt: new Date(),
|
|
232
|
+
});
|
|
233
|
+
} else {
|
|
234
|
+
this.log("Using existing sprint mindmap.", "info");
|
|
235
|
+
this.sprintPlan = sprint.mindmap ?? null;
|
|
236
|
+
}
|
|
228
237
|
}
|
|
229
238
|
} else {
|
|
230
239
|
this.log("No active sprint found for planning.", "warn");
|