@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.
Files changed (90) hide show
  1. package/dist/agent/artifact-syncer.d.ts +1 -1
  2. package/dist/agent/artifact-syncer.d.ts.map +1 -1
  3. package/dist/agent/artifact-syncer.js +1 -1
  4. package/dist/agent/codebase-indexer-service.d.ts +2 -2
  5. package/dist/agent/codebase-indexer-service.d.ts.map +1 -1
  6. package/dist/agent/codebase-indexer-service.js +1 -1
  7. package/dist/agent/index.d.ts +5 -5
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +5 -5
  10. package/dist/agent/sprint-planner.d.ts +2 -2
  11. package/dist/agent/sprint-planner.d.ts.map +1 -1
  12. package/dist/agent/sprint-planner.js +25 -19
  13. package/dist/agent/task-executor.d.ts +2 -2
  14. package/dist/agent/task-executor.d.ts.map +1 -1
  15. package/dist/agent/task-executor.js +12 -8
  16. package/dist/agent/worker.d.ts.map +1 -1
  17. package/dist/agent/worker.js +32 -25
  18. package/dist/ai/anthropic-client.js +1 -1
  19. package/dist/ai/claude-runner.d.ts +1 -0
  20. package/dist/ai/claude-runner.d.ts.map +1 -1
  21. package/dist/ai/claude-runner.js +25 -4
  22. package/dist/ai/index.d.ts +2 -2
  23. package/dist/ai/index.d.ts.map +1 -1
  24. package/dist/ai/index.js +2 -2
  25. package/dist/core/index.d.ts +3 -3
  26. package/dist/core/index.d.ts.map +1 -1
  27. package/dist/core/index.js +3 -3
  28. package/dist/core/prompt-builder.d.ts +1 -1
  29. package/dist/core/prompt-builder.d.ts.map +1 -1
  30. package/dist/core/prompt-builder.js +24 -28
  31. package/dist/events.d.ts +1 -1
  32. package/dist/events.d.ts.map +1 -1
  33. package/dist/index-node.d.ts +6 -6
  34. package/dist/index-node.d.ts.map +1 -1
  35. package/dist/index-node.js +6 -6
  36. package/dist/index.d.ts +18 -18
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +18 -18
  39. package/dist/modules/auth.d.ts +1 -1
  40. package/dist/modules/auth.d.ts.map +1 -1
  41. package/dist/modules/auth.js +1 -1
  42. package/dist/modules/base.d.ts +1 -1
  43. package/dist/modules/base.d.ts.map +1 -1
  44. package/dist/modules/ci.d.ts +1 -1
  45. package/dist/modules/ci.d.ts.map +1 -1
  46. package/dist/modules/ci.js +1 -1
  47. package/dist/modules/docs.d.ts +1 -1
  48. package/dist/modules/docs.d.ts.map +1 -1
  49. package/dist/modules/docs.js +1 -1
  50. package/dist/modules/invitations.d.ts +1 -1
  51. package/dist/modules/invitations.d.ts.map +1 -1
  52. package/dist/modules/invitations.js +1 -1
  53. package/dist/modules/organizations.d.ts +1 -1
  54. package/dist/modules/organizations.d.ts.map +1 -1
  55. package/dist/modules/organizations.js +1 -1
  56. package/dist/modules/sprints.d.ts +1 -1
  57. package/dist/modules/sprints.d.ts.map +1 -1
  58. package/dist/modules/sprints.js +1 -1
  59. package/dist/modules/tasks.d.ts +1 -1
  60. package/dist/modules/tasks.d.ts.map +1 -1
  61. package/dist/modules/tasks.js +1 -1
  62. package/dist/modules/workspaces.d.ts +1 -1
  63. package/dist/modules/workspaces.d.ts.map +1 -1
  64. package/dist/modules/workspaces.js +1 -1
  65. package/dist/orchestrator.js +2 -2
  66. package/package.json +2 -2
  67. package/src/agent/artifact-syncer.ts +2 -2
  68. package/src/agent/codebase-indexer-service.ts +3 -3
  69. package/src/agent/index.ts +5 -5
  70. package/src/agent/sprint-planner.ts +31 -23
  71. package/src/agent/task-executor.ts +18 -10
  72. package/src/agent/worker.ts +41 -32
  73. package/src/ai/anthropic-client.ts +1 -1
  74. package/src/ai/claude-runner.ts +30 -4
  75. package/src/ai/index.ts +2 -2
  76. package/src/core/index.ts +3 -3
  77. package/src/core/prompt-builder.ts +24 -33
  78. package/src/events.ts +1 -1
  79. package/src/index-node.ts +6 -6
  80. package/src/index.ts +19 -19
  81. package/src/modules/auth.ts +1 -1
  82. package/src/modules/base.ts +1 -1
  83. package/src/modules/ci.ts +1 -1
  84. package/src/modules/docs.ts +1 -1
  85. package/src/modules/invitations.ts +1 -1
  86. package/src/modules/organizations.ts +1 -1
  87. package/src/modules/sprints.ts +1 -1
  88. package/src/modules/tasks.ts +1 -1
  89. package/src/modules/workspaces.ts +1 -1
  90. 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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC,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"}
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;
@@ -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,QAAQ,CAAC;AAEpC,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class AuthModule extends BaseModule {
3
3
  async getMe() {
4
4
  const { data } = await this.api.get("/auth/me");
@@ -1,5 +1,5 @@
1
1
  import { AxiosInstance } from "axios";
2
- import { LocusEmitter } from "../events";
2
+ import { LocusEmitter } from "../events.js";
3
3
  export declare abstract class BaseModule {
4
4
  protected readonly api: AxiosInstance;
5
5
  protected readonly emitter: LocusEmitter;
@@ -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,WAAW,CAAC;AAEzC,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"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { ReportCiResult } from "@locusai/shared";
2
- import { BaseModule } from "./base";
2
+ import { BaseModule } from "./base.js";
3
3
  export declare class CiModule extends BaseModule {
4
4
  report(body: ReportCiResult): Promise<{
5
5
  success: boolean;
@@ -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,QAAQ,CAAC;AAEpC,qBAAa,QAAS,SAAQ,UAAU;IAChC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAOlE"}
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"}
@@ -1,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class CiModule extends BaseModule {
3
3
  async report(body) {
4
4
  const { data } = await this.api.post("/ci/report", body);
@@ -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,QAAQ,CAAC;AAEpC,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class DocsModule extends BaseModule {
3
3
  async create(workspaceId, body) {
4
4
  const { data } = await this.api.post(`/workspaces/${workspaceId}/docs`, body);
@@ -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,QAAQ,CAAC;AAEpC,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
+ {"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,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class InvitationsModule extends BaseModule {
3
3
  async create(orgId, body) {
4
4
  const { data } = await this.api.post(`/org/${orgId}/invitations`, body);
@@ -1,5 +1,5 @@
1
1
  import { AddMember, MembershipWithUser, Organization } from "@locusai/shared";
2
- import { BaseModule } from "./base";
2
+ import { BaseModule } from "./base.js";
3
3
  export interface ApiKey {
4
4
  id: string;
5
5
  organizationId: string;
@@ -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,QAAQ,CAAC;AAEpC,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
+ {"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,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class OrganizationsModule extends BaseModule {
3
3
  async list() {
4
4
  const { data } = await this.api.get("/organizations");
@@ -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,QAAQ,CAAC;AAEpC,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class SprintsModule extends BaseModule {
3
3
  async list(workspaceId) {
4
4
  const { data } = await this.api.get(`/workspaces/${workspaceId}/sprints`);
@@ -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,QAAQ,CAAC;AAEpC,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"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { TaskStatus, } from "@locusai/shared";
2
- import { BaseModule } from "./base";
2
+ import { BaseModule } from "./base.js";
3
3
  export class TasksModule extends BaseModule {
4
4
  /**
5
5
  * List all tasks in a workspace, optionally filtered
@@ -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,QAAQ,CAAC;AAEpC,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { BaseModule } from "./base";
1
+ import { BaseModule } from "./base.js";
2
2
  export class WorkspacesModule extends BaseModule {
3
3
  async listAll() {
4
4
  const { data } = await this.api.get("/workspaces");
@@ -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.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.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;
@@ -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
- const taskList = tasks
21
- .map(
22
- (t) => `- [${t.id}] ${t.title}: ${t.description || "No description"}`
23
- )
24
- .join("\n");
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
- let plan: string;
27
+ let plan: string;
27
28
 
28
- if (this.deps.anthropicClient) {
29
- // Use Anthropic SDK with caching for faster planning
30
- const systemPrompt = `You are an expert project manager and lead engineer specialized in sprint planning and task prioritization.`;
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
- const userPrompt = `# Sprint Planning: ${sprint.name}
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
- plan = await this.deps.anthropicClient.run({
49
- systemPrompt,
50
- userPrompt,
51
- });
52
- } else {
53
- // Fallback to Claude CLI
54
- const planningPrompt = `# Sprint Planning: ${sprint.name}
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
- plan = await this.deps.claudeRunner.run(planningPrompt, true);
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
- // Phase 1: Planning (using Claude CLI)
55
- this.deps.log("Phase 1: Planning (Claude CLI)...", "info");
56
- const planningPrompt = `${basePrompt}\n\n## Phase 1: Planning\nAnalyze and create a detailed plan for THIS SPECIFIC TASK. Do NOT execute changes yet.`;
57
- plan = await this.deps.claudeRunner.run(planningPrompt, true);
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("Plan generated. Starting Phase 2: Execution...", "info");
62
- const executionPrompt = `${basePrompt}\n\n## Phase 2: Execution\nBased on the plan, execute the task:\n\n${plan}\n\nWhen finished, output: <promise>COMPLETE</promise>`;
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>");
@@ -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
- const needsPlanning =
207
- !sprint.mindmap ||
208
- sprint.mindmap.trim() === "" ||
209
- latestTaskCreation > mindmapDate;
210
-
211
- if (needsPlanning) {
212
- if (sprint.mindmap && latestTaskCreation > mindmapDate) {
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
- this.log("Using existing sprint mindmap.", "info");
227
- this.sprintPlan = sprint.mindmap ?? null;
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");
@@ -1,5 +1,5 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
- import { DEFAULT_MODEL } from "../core/config";
2
+ import { DEFAULT_MODEL } from "../core/config.js";
3
3
 
4
4
  export interface AnthropicClientConfig {
5
5
  apiKey: string;