@locusai/sdk 0.14.5 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/worker.js +67 -4
- package/dist/ai/claude-runner.d.ts +1 -0
- package/dist/ai/claude-runner.d.ts.map +1 -1
- package/dist/ai/codex-runner.d.ts +1 -0
- package/dist/ai/codex-runner.d.ts.map +1 -1
- package/dist/events.d.ts +2 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/index-node.d.ts +1 -0
- package/dist/index-node.d.ts.map +1 -1
- package/dist/index-node.js +2130 -204
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -0
- package/dist/jobs/__tests__/job-runner.test.d.ts +2 -0
- package/dist/jobs/__tests__/job-runner.test.d.ts.map +1 -0
- package/dist/jobs/__tests__/lint-scan.test.d.ts +2 -0
- package/dist/jobs/__tests__/lint-scan.test.d.ts.map +1 -0
- package/dist/jobs/__tests__/scheduler.test.d.ts +2 -0
- package/dist/jobs/__tests__/scheduler.test.d.ts.map +1 -0
- package/dist/jobs/base-job.d.ts +29 -0
- package/dist/jobs/base-job.d.ts.map +1 -0
- package/dist/jobs/default-registry.d.ts +3 -0
- package/dist/jobs/default-registry.d.ts.map +1 -0
- package/dist/jobs/index.d.ts +12 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/job-registry.d.ts +10 -0
- package/dist/jobs/job-registry.d.ts.map +1 -0
- package/dist/jobs/job-runner.d.ts +33 -0
- package/dist/jobs/job-runner.d.ts.map +1 -0
- package/dist/jobs/proposals/context-gatherer.d.ts +35 -0
- package/dist/jobs/proposals/context-gatherer.d.ts.map +1 -0
- package/dist/jobs/proposals/index.d.ts +4 -0
- package/dist/jobs/proposals/index.d.ts.map +1 -0
- package/dist/jobs/proposals/proposal-engine.d.ts +21 -0
- package/dist/jobs/proposals/proposal-engine.d.ts.map +1 -0
- package/dist/jobs/scans/dependency-scan.d.ts +28 -0
- package/dist/jobs/scans/dependency-scan.d.ts.map +1 -0
- package/dist/jobs/scans/index.d.ts +5 -0
- package/dist/jobs/scans/index.d.ts.map +1 -0
- package/dist/jobs/scans/lint-scan.d.ts +20 -0
- package/dist/jobs/scans/lint-scan.d.ts.map +1 -0
- package/dist/jobs/scans/test-scan.d.ts +20 -0
- package/dist/jobs/scans/test-scan.d.ts.map +1 -0
- package/dist/jobs/scans/todo-scan.d.ts +15 -0
- package/dist/jobs/scans/todo-scan.d.ts.map +1 -0
- package/dist/jobs/scheduler.d.ts +80 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/modules/jobs.d.ts +14 -0
- package/dist/modules/jobs.d.ts.map +1 -0
- package/dist/modules/suggestions.d.ts +12 -0
- package/dist/modules/suggestions.d.ts.map +1 -0
- package/package.json +7 -5
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,10 @@ import { CiModule } from "./modules/ci.js";
|
|
|
4
4
|
import { DocsModule } from "./modules/docs.js";
|
|
5
5
|
import { InstancesModule } from "./modules/instances.js";
|
|
6
6
|
import { InvitationsModule } from "./modules/invitations.js";
|
|
7
|
+
import { JobsModule } from "./modules/jobs.js";
|
|
7
8
|
import { OrganizationsModule } from "./modules/organizations.js";
|
|
8
9
|
import { SprintsModule } from "./modules/sprints.js";
|
|
10
|
+
import { SuggestionsModule } from "./modules/suggestions.js";
|
|
9
11
|
import { TasksModule } from "./modules/tasks.js";
|
|
10
12
|
import { WorkspacesModule } from "./modules/workspaces.js";
|
|
11
13
|
export type { Discussion, DiscussionInsight, DiscussionMessage, } from "./discussion/discussion-types.js";
|
|
@@ -16,8 +18,10 @@ export * from "./modules/ci.js";
|
|
|
16
18
|
export * from "./modules/docs.js";
|
|
17
19
|
export * from "./modules/instances.js";
|
|
18
20
|
export * from "./modules/invitations.js";
|
|
21
|
+
export * from "./modules/jobs.js";
|
|
19
22
|
export * from "./modules/organizations.js";
|
|
20
23
|
export * from "./modules/sprints.js";
|
|
24
|
+
export * from "./modules/suggestions.js";
|
|
21
25
|
export * from "./modules/tasks.js";
|
|
22
26
|
export * from "./modules/workspaces.js";
|
|
23
27
|
export declare class LocusClient {
|
|
@@ -32,6 +36,8 @@ export declare class LocusClient {
|
|
|
32
36
|
readonly docs: DocsModule;
|
|
33
37
|
readonly ci: CiModule;
|
|
34
38
|
readonly instances: InstancesModule;
|
|
39
|
+
readonly jobs: JobsModule;
|
|
40
|
+
readonly suggestions: SuggestionsModule;
|
|
35
41
|
constructor(config: LocusConfig);
|
|
36
42
|
private setupRetryInterceptor;
|
|
37
43
|
private setupInterceptors;
|
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,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,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,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,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAE1C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,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;IAC7B,SAAgB,SAAS,EAAE,eAAe,CAAC;
|
|
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,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAE1C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,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;IAC7B,SAAgB,SAAS,EAAE,eAAe,CAAC;IAC3C,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,WAAW,EAAE,iBAAiB,CAAC;gBAEnC,MAAM,EAAE,WAAW;IAgC/B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,iBAAiB;IAmDlB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAOrC"}
|
package/dist/index.js
CHANGED
|
@@ -225,6 +225,29 @@ var init_invitations = __esm(() => {
|
|
|
225
225
|
};
|
|
226
226
|
});
|
|
227
227
|
|
|
228
|
+
// src/modules/jobs.ts
|
|
229
|
+
var JobsModule;
|
|
230
|
+
var init_jobs = __esm(() => {
|
|
231
|
+
JobsModule = class JobsModule extends BaseModule {
|
|
232
|
+
async create(workspaceId, data) {
|
|
233
|
+
const { data: res } = await this.api.post(`/workspaces/${workspaceId}/job-runs`, data);
|
|
234
|
+
return res.jobRun;
|
|
235
|
+
}
|
|
236
|
+
async list(workspaceId, params) {
|
|
237
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/job-runs`, { params });
|
|
238
|
+
return data.jobRuns;
|
|
239
|
+
}
|
|
240
|
+
async get(workspaceId, id) {
|
|
241
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/job-runs/${id}`);
|
|
242
|
+
return data.jobRun;
|
|
243
|
+
}
|
|
244
|
+
async update(workspaceId, id, data) {
|
|
245
|
+
const { data: res } = await this.api.patch(`/workspaces/${workspaceId}/job-runs/${id}`, data);
|
|
246
|
+
return res.jobRun;
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
});
|
|
250
|
+
|
|
228
251
|
// src/modules/organizations.ts
|
|
229
252
|
var OrganizationsModule;
|
|
230
253
|
var init_organizations = __esm(() => {
|
|
@@ -307,6 +330,29 @@ var init_sprints = __esm(() => {
|
|
|
307
330
|
};
|
|
308
331
|
});
|
|
309
332
|
|
|
333
|
+
// src/modules/suggestions.ts
|
|
334
|
+
var SuggestionsModule;
|
|
335
|
+
var init_suggestions = __esm(() => {
|
|
336
|
+
SuggestionsModule = class SuggestionsModule extends BaseModule {
|
|
337
|
+
async create(workspaceId, data) {
|
|
338
|
+
const { data: res } = await this.api.post(`/workspaces/${workspaceId}/suggestions`, data);
|
|
339
|
+
return res.suggestion;
|
|
340
|
+
}
|
|
341
|
+
async list(workspaceId, params) {
|
|
342
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/suggestions`, { params });
|
|
343
|
+
return data.suggestions;
|
|
344
|
+
}
|
|
345
|
+
async get(workspaceId, id) {
|
|
346
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/suggestions/${id}`);
|
|
347
|
+
return data.suggestion;
|
|
348
|
+
}
|
|
349
|
+
async updateStatus(workspaceId, id, status) {
|
|
350
|
+
const { data } = await this.api.patch(`/workspaces/${workspaceId}/suggestions/${id}/status`, status);
|
|
351
|
+
return data.suggestion;
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
});
|
|
355
|
+
|
|
310
356
|
// src/modules/tasks.ts
|
|
311
357
|
var import_shared, TasksModule;
|
|
312
358
|
var init_tasks = __esm(() => {
|
|
@@ -483,11 +529,13 @@ var exports_src = {};
|
|
|
483
529
|
__export(exports_src, {
|
|
484
530
|
WorkspacesModule: () => WorkspacesModule,
|
|
485
531
|
TasksModule: () => TasksModule,
|
|
532
|
+
SuggestionsModule: () => SuggestionsModule,
|
|
486
533
|
SprintsModule: () => SprintsModule,
|
|
487
534
|
OrganizationsModule: () => OrganizationsModule,
|
|
488
535
|
LocusEvent: () => LocusEvent,
|
|
489
536
|
LocusEmitter: () => LocusEmitter,
|
|
490
537
|
LocusClient: () => LocusClient,
|
|
538
|
+
JobsModule: () => JobsModule,
|
|
491
539
|
InvitationsModule: () => InvitationsModule,
|
|
492
540
|
InstancesModule: () => InstancesModule,
|
|
493
541
|
DocsModule: () => DocsModule,
|
|
@@ -511,6 +559,8 @@ class LocusClient {
|
|
|
511
559
|
docs;
|
|
512
560
|
ci;
|
|
513
561
|
instances;
|
|
562
|
+
jobs;
|
|
563
|
+
suggestions;
|
|
514
564
|
constructor(config) {
|
|
515
565
|
this.emitter = new LocusEmitter;
|
|
516
566
|
this.api = import_axios.default.create({
|
|
@@ -531,6 +581,8 @@ class LocusClient {
|
|
|
531
581
|
this.docs = new DocsModule(this.api, this.emitter);
|
|
532
582
|
this.ci = new CiModule(this.api, this.emitter);
|
|
533
583
|
this.instances = new InstancesModule(this.api, this.emitter);
|
|
584
|
+
this.jobs = new JobsModule(this.api, this.emitter);
|
|
585
|
+
this.suggestions = new SuggestionsModule(this.api, this.emitter);
|
|
534
586
|
if (config.retryOptions) {
|
|
535
587
|
this.setupRetryInterceptor(config.retryOptions);
|
|
536
588
|
}
|
|
@@ -598,8 +650,10 @@ var init_src = __esm(() => {
|
|
|
598
650
|
init_docs();
|
|
599
651
|
init_instances();
|
|
600
652
|
init_invitations();
|
|
653
|
+
init_jobs();
|
|
601
654
|
init_organizations();
|
|
602
655
|
init_sprints();
|
|
656
|
+
init_suggestions();
|
|
603
657
|
init_tasks();
|
|
604
658
|
init_workspaces();
|
|
605
659
|
init_discussion_types();
|
|
@@ -610,8 +664,10 @@ var init_src = __esm(() => {
|
|
|
610
664
|
init_docs();
|
|
611
665
|
init_instances();
|
|
612
666
|
init_invitations();
|
|
667
|
+
init_jobs();
|
|
613
668
|
init_organizations();
|
|
614
669
|
init_sprints();
|
|
670
|
+
init_suggestions();
|
|
615
671
|
init_tasks();
|
|
616
672
|
init_workspaces();
|
|
617
673
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-runner.test.d.ts","sourceRoot":"","sources":["../../../src/jobs/__tests__/job-runner.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-scan.test.d.ts","sourceRoot":"","sources":["../../../src/jobs/__tests__/lint-scan.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.test.d.ts","sourceRoot":"","sources":["../../../src/jobs/__tests__/scheduler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AutonomyRule, ChangeCategory, JobConfig, JobType, SuggestionType } from "@locusai/shared";
|
|
2
|
+
import type { LocusClient } from "../index.js";
|
|
3
|
+
export interface JobContext {
|
|
4
|
+
workspaceId: string;
|
|
5
|
+
projectPath: string;
|
|
6
|
+
config: JobConfig;
|
|
7
|
+
autonomyRules: AutonomyRule[];
|
|
8
|
+
client: LocusClient;
|
|
9
|
+
}
|
|
10
|
+
export interface JobSuggestion {
|
|
11
|
+
type: SuggestionType;
|
|
12
|
+
title: string;
|
|
13
|
+
description: string;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface JobResult {
|
|
17
|
+
summary: string;
|
|
18
|
+
suggestions: JobSuggestion[];
|
|
19
|
+
filesChanged: number;
|
|
20
|
+
prUrl?: string;
|
|
21
|
+
errors?: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class BaseJob {
|
|
24
|
+
abstract readonly type: JobType;
|
|
25
|
+
abstract readonly name: string;
|
|
26
|
+
abstract run(context: JobContext): Promise<JobResult>;
|
|
27
|
+
protected shouldAutoExecute(category: ChangeCategory, rules: AutonomyRule[]): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=base-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-job.d.ts","sourceRoot":"","sources":["../../src/jobs/base-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAErD,SAAS,CAAC,iBAAiB,CACzB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,YAAY,EAAE,GACpB,OAAO;CAIX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-registry.d.ts","sourceRoot":"","sources":["../../src/jobs/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,wBAAgB,qBAAqB,IAAI,WAAW,CAOnD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { JobContext, JobResult, JobSuggestion } from "./base-job.js";
|
|
2
|
+
export { BaseJob } from "./base-job.js";
|
|
3
|
+
export { createDefaultRegistry } from "./default-registry.js";
|
|
4
|
+
export { JobRegistry } from "./job-registry.js";
|
|
5
|
+
export type { JobCompletedPayload, JobFailedPayload, JobStartedPayload, } from "./job-runner.js";
|
|
6
|
+
export { JobEvent, JobRunner } from "./job-runner.js";
|
|
7
|
+
export type { ArtifactFile, ProposalContext } from "./proposals/index.js";
|
|
8
|
+
export { ContextGatherer, ProposalEngine } from "./proposals/index.js";
|
|
9
|
+
export { DependencyScanJob, LintScanJob, TestScanJob, TodoScanJob, } from "./scans/index.js";
|
|
10
|
+
export type { ConfigLoader, ConfigReloadedPayload, JobScheduledPayload, JobSkippedPayload, JobTriggeredPayload, ProposalSchedulerConfig, ProposalsGeneratedPayload, SchedulerConfig, SchedulerStartedPayload, } from "./scheduler.js";
|
|
11
|
+
export { JobScheduler, SchedulerEvent } from "./scheduler.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { JobType } from "@locusai/shared";
|
|
2
|
+
import type { BaseJob } from "./base-job.js";
|
|
3
|
+
export declare class JobRegistry {
|
|
4
|
+
private jobs;
|
|
5
|
+
register(job: BaseJob): void;
|
|
6
|
+
get(type: JobType): BaseJob | undefined;
|
|
7
|
+
getAll(): BaseJob[];
|
|
8
|
+
has(type: JobType): boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=job-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-registry.d.ts","sourceRoot":"","sources":["../../src/jobs/job-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA+B;IAE3C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI5B,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAIvC,MAAM,IAAI,OAAO,EAAE;IAInB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;CAG5B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AutonomyRule, type JobConfig, type JobType } from "@locusai/shared";
|
|
2
|
+
import type { LocusClient } from "../index.js";
|
|
3
|
+
import type { JobResult } from "./base-job.js";
|
|
4
|
+
import type { JobRegistry } from "./job-registry.js";
|
|
5
|
+
export declare enum JobEvent {
|
|
6
|
+
JOB_STARTED = "JOB_STARTED",
|
|
7
|
+
JOB_COMPLETED = "JOB_COMPLETED",
|
|
8
|
+
JOB_FAILED = "JOB_FAILED"
|
|
9
|
+
}
|
|
10
|
+
export interface JobStartedPayload {
|
|
11
|
+
jobType: JobType;
|
|
12
|
+
jobRunId: string;
|
|
13
|
+
}
|
|
14
|
+
export interface JobCompletedPayload {
|
|
15
|
+
jobType: JobType;
|
|
16
|
+
jobRunId: string;
|
|
17
|
+
result: JobResult;
|
|
18
|
+
}
|
|
19
|
+
export interface JobFailedPayload {
|
|
20
|
+
jobType: JobType;
|
|
21
|
+
jobRunId: string;
|
|
22
|
+
error: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class JobRunner {
|
|
25
|
+
private readonly registry;
|
|
26
|
+
private readonly client;
|
|
27
|
+
private readonly projectPath;
|
|
28
|
+
private readonly workspaceId;
|
|
29
|
+
constructor(registry: JobRegistry, client: LocusClient, projectPath: string, workspaceId: string);
|
|
30
|
+
runJob(jobType: JobType, config: JobConfig, autonomyRules: AutonomyRule[]): Promise<JobResult>;
|
|
31
|
+
runAllEnabled(configs: JobConfig[], autonomyRules: AutonomyRule[]): Promise<Map<JobType, JobResult>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=job-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-runner.d.ts","sourceRoot":"","sources":["../../src/jobs/job-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,OAAO,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM;IAGhC,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,YAAY,EAAE,GAC5B,OAAO,CAAC,SAAS,CAAC;IAmFf,aAAa,CACjB,OAAO,EAAE,SAAS,EAAE,EACpB,aAAa,EAAE,YAAY,EAAE,GAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;CAoBpC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { JobRun, Sprint, Suggestion, Task } from "@locusai/shared";
|
|
2
|
+
import type { LocusClient } from "../../index.js";
|
|
3
|
+
export interface ProposalContext {
|
|
4
|
+
/** Recent job run results (up to 10) */
|
|
5
|
+
jobRuns: JobRun[];
|
|
6
|
+
/** Active sprint, if any */
|
|
7
|
+
activeSprint: Sprint | null;
|
|
8
|
+
/** Tasks in the current sprint */
|
|
9
|
+
sprintTasks: Task[];
|
|
10
|
+
/** Backlog tasks not yet assigned to a sprint */
|
|
11
|
+
backlogTasks: Task[];
|
|
12
|
+
/** Recent git commit log (last 20 commits) */
|
|
13
|
+
gitLog: string;
|
|
14
|
+
/** Product context from .locus/artifacts/ */
|
|
15
|
+
artifactContents: ArtifactFile[];
|
|
16
|
+
/** Project-specific instructions from .locus/LOCUS.md */
|
|
17
|
+
locusInstructions: string | null;
|
|
18
|
+
/** Previously skipped suggestions (for deduplication) */
|
|
19
|
+
skippedSuggestions: Suggestion[];
|
|
20
|
+
}
|
|
21
|
+
export interface ArtifactFile {
|
|
22
|
+
name: string;
|
|
23
|
+
content: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class ContextGatherer {
|
|
26
|
+
gather(projectPath: string, client: LocusClient, workspaceId: string): Promise<ProposalContext>;
|
|
27
|
+
private fetchJobRuns;
|
|
28
|
+
private fetchActiveSprint;
|
|
29
|
+
private fetchTasks;
|
|
30
|
+
private fetchSkippedSuggestions;
|
|
31
|
+
private readGitLog;
|
|
32
|
+
private readArtifacts;
|
|
33
|
+
private readLocusInstructions;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=context-gatherer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-gatherer.d.ts","sourceRoot":"","sources":["../../../src/jobs/proposals/context-gatherer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kCAAkC;IAClC,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,iDAAiD;IACjD,YAAY,EAAE,IAAI,EAAE,CAAC;IACrB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,yDAAyD;IACzD,kBAAkB,EAAE,UAAU,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,eAAe;IACpB,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;YAqCb,YAAY;YAWZ,iBAAiB;YAWjB,UAAU;YAWV,uBAAuB;IAerC,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,qBAAqB;CAU9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jobs/proposals/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Suggestion } from "@locusai/shared";
|
|
2
|
+
import type { LocusClient } from "../../index.js";
|
|
3
|
+
import { ContextGatherer, type ProposalContext } from "./context-gatherer.js";
|
|
4
|
+
export declare class ProposalEngine {
|
|
5
|
+
private readonly contextGatherer;
|
|
6
|
+
constructor(contextGatherer?: ContextGatherer);
|
|
7
|
+
/**
|
|
8
|
+
* Full proposal cycle: gather context → generate proposals → create suggestions.
|
|
9
|
+
*/
|
|
10
|
+
runProposalCycle(projectPath: string, client: LocusClient, workspaceId: string): Promise<Suggestion[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Generate proposals from gathered context, deduplicate, and create suggestions.
|
|
13
|
+
*/
|
|
14
|
+
generateProposals(context: ProposalContext, projectPath: string, client: LocusClient, workspaceId: string): Promise<Suggestion[]>;
|
|
15
|
+
private buildPrompt;
|
|
16
|
+
private parseResponse;
|
|
17
|
+
private extractField;
|
|
18
|
+
private isDuplicate;
|
|
19
|
+
private groupTasksByStatus;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=proposal-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-engine.d.ts","sourceRoot":"","sources":["../../../src/jobs/proposals/proposal-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiB9E,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,eAAe,CAAC,EAAE,eAAe;IAI7C;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,EAAE,CAAC;IASxB;;OAEG;IACG,iBAAiB,CACrB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,EAAE,CAAC;IAiDxB,OAAO,CAAC,WAAW;IA+FnB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { JobType } from "@locusai/shared";
|
|
2
|
+
import type { JobContext, JobResult } from "../base-job.js";
|
|
3
|
+
import { BaseJob } from "../base-job.js";
|
|
4
|
+
export declare class DependencyScanJob extends BaseJob {
|
|
5
|
+
readonly type = JobType.DEPENDENCY_CHECK;
|
|
6
|
+
readonly name = "Dependency Check";
|
|
7
|
+
run(context: JobContext): Promise<JobResult>;
|
|
8
|
+
private detectPackageManager;
|
|
9
|
+
private getOutdatedPackages;
|
|
10
|
+
private runOutdatedCommand;
|
|
11
|
+
private parseBunOutdated;
|
|
12
|
+
private parseJsonOutdated;
|
|
13
|
+
private parseYarnOutdated;
|
|
14
|
+
private runSecurityAudit;
|
|
15
|
+
private parseNpmAudit;
|
|
16
|
+
private parseGenericAudit;
|
|
17
|
+
private autoUpdate;
|
|
18
|
+
private runUpdateCommand;
|
|
19
|
+
private runInstallCommand;
|
|
20
|
+
private commitAndPush;
|
|
21
|
+
private buildSuggestions;
|
|
22
|
+
private classifyRisk;
|
|
23
|
+
private parseSemver;
|
|
24
|
+
private getUpdateHint;
|
|
25
|
+
private exec;
|
|
26
|
+
private gitExec;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=dependency-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-scan.d.ts","sourceRoot":"","sources":["../../../src/jobs/scans/dependency-scan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAM1E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAmCzC,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,IAAI,sBAAsB;IAE7B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA8FlD,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,iBAAiB;IAwCzB,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;IA6FrB,OAAO,CAAC,gBAAgB;IA+DxB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,OAAO;CAOhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jobs/scans/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { JobType } from "@locusai/shared";
|
|
2
|
+
import type { JobContext, JobResult } from "../base-job.js";
|
|
3
|
+
import { BaseJob } from "../base-job.js";
|
|
4
|
+
export declare class LintScanJob extends BaseJob {
|
|
5
|
+
readonly type = JobType.LINT_SCAN;
|
|
6
|
+
readonly name = "Linting Scan";
|
|
7
|
+
run(context: JobContext): Promise<JobResult>;
|
|
8
|
+
private detectLinter;
|
|
9
|
+
private runLinter;
|
|
10
|
+
private parseLintOutput;
|
|
11
|
+
private parseBiomeOutput;
|
|
12
|
+
private parseEslintOutput;
|
|
13
|
+
private autoFix;
|
|
14
|
+
private commitAndPush;
|
|
15
|
+
private buildSuggestionResult;
|
|
16
|
+
private buildIssueSuggestions;
|
|
17
|
+
private issueCountSummary;
|
|
18
|
+
private gitExec;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=lint-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-scan.d.ts","sourceRoot":"","sources":["../../../src/jobs/scans/lint-scan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAM1E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA8BzC,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,IAAI,kBAAkB;IAEzB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAyDlD,OAAO,CAAC,YAAY;IA0DpB,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,OAAO;IAwDf,OAAO,CAAC,aAAa;IA0FrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,OAAO;CAOhB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { JobType } from "@locusai/shared";
|
|
2
|
+
import type { JobContext, JobResult } from "../base-job.js";
|
|
3
|
+
import { BaseJob } from "../base-job.js";
|
|
4
|
+
export declare class TestScanJob extends BaseJob {
|
|
5
|
+
readonly type = JobType.FLAKY_TEST_DETECTION;
|
|
6
|
+
readonly name = "Flaky Test Detection";
|
|
7
|
+
run(context: JobContext): Promise<JobResult>;
|
|
8
|
+
private detectTestRunner;
|
|
9
|
+
private runTests;
|
|
10
|
+
private parseJestOutput;
|
|
11
|
+
private parseVitestOutput;
|
|
12
|
+
private parseMochaOutput;
|
|
13
|
+
private parseFallbackOutput;
|
|
14
|
+
private classifyTests;
|
|
15
|
+
private testKey;
|
|
16
|
+
private indexByKey;
|
|
17
|
+
private extractJson;
|
|
18
|
+
private exec;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=test-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-scan.d.ts","sourceRoot":"","sources":["../../../src/jobs/scans/test-scan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA2CzC,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,0BAA0B;IAEjC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAkIlD,OAAO,CAAC,gBAAgB;IA2FxB,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,eAAe;IAqDvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IA2DxB,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,aAAa;IA6ErB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,IAAI;CAsBb"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { JobType } from "@locusai/shared";
|
|
2
|
+
import type { JobContext, JobResult } from "../base-job.js";
|
|
3
|
+
import { BaseJob } from "../base-job.js";
|
|
4
|
+
export declare class TodoScanJob extends BaseJob {
|
|
5
|
+
readonly type = JobType.TODO_CLEANUP;
|
|
6
|
+
readonly name = "TODO Cleanup";
|
|
7
|
+
run(context: JobContext): Promise<JobResult>;
|
|
8
|
+
private scanForTodos;
|
|
9
|
+
private parseGrepOutput;
|
|
10
|
+
private groupByType;
|
|
11
|
+
private buildSuggestions;
|
|
12
|
+
private buildSummary;
|
|
13
|
+
private exec;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=todo-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-scan.d.ts","sourceRoot":"","sources":["../../../src/jobs/scans/todo-scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAyBzC,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,IAAI,kBAAkB;IAEzB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAiDlD,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,IAAI;CAqBb"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { AutonomyRule, JobConfig, JobType, Suggestion } from "@locusai/shared";
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
import type { LocusClient } from "../index.js";
|
|
4
|
+
import type { JobRunner } from "./job-runner.js";
|
|
5
|
+
import type { ProposalEngine } from "./proposals/proposal-engine.js";
|
|
6
|
+
export declare enum SchedulerEvent {
|
|
7
|
+
SCHEDULER_STARTED = "SCHEDULER_STARTED",
|
|
8
|
+
SCHEDULER_STOPPED = "SCHEDULER_STOPPED",
|
|
9
|
+
JOB_SCHEDULED = "JOB_SCHEDULED",
|
|
10
|
+
JOB_TRIGGERED = "JOB_TRIGGERED",
|
|
11
|
+
JOB_SKIPPED = "JOB_SKIPPED",
|
|
12
|
+
CONFIG_RELOADED = "CONFIG_RELOADED",
|
|
13
|
+
PROPOSALS_GENERATED = "PROPOSALS_GENERATED"
|
|
14
|
+
}
|
|
15
|
+
export interface SchedulerStartedPayload {
|
|
16
|
+
jobCount: number;
|
|
17
|
+
jobs: Array<{
|
|
18
|
+
type: JobType;
|
|
19
|
+
cronExpression: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export interface JobScheduledPayload {
|
|
23
|
+
jobType: JobType;
|
|
24
|
+
cronExpression: string;
|
|
25
|
+
}
|
|
26
|
+
export interface JobTriggeredPayload {
|
|
27
|
+
jobType: JobType;
|
|
28
|
+
}
|
|
29
|
+
export interface JobSkippedPayload {
|
|
30
|
+
jobType: JobType;
|
|
31
|
+
reason: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ConfigReloadedPayload {
|
|
34
|
+
previousJobCount: number;
|
|
35
|
+
newJobCount: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ProposalsGeneratedPayload {
|
|
38
|
+
suggestions: Suggestion[];
|
|
39
|
+
}
|
|
40
|
+
export interface ProposalSchedulerConfig {
|
|
41
|
+
engine: ProposalEngine;
|
|
42
|
+
projectPath: string;
|
|
43
|
+
client: LocusClient;
|
|
44
|
+
workspaceId: string;
|
|
45
|
+
}
|
|
46
|
+
export interface SchedulerConfig {
|
|
47
|
+
jobConfigs: JobConfig[];
|
|
48
|
+
autonomyRules: AutonomyRule[];
|
|
49
|
+
}
|
|
50
|
+
export type ConfigLoader = () => SchedulerConfig;
|
|
51
|
+
export declare class JobScheduler {
|
|
52
|
+
private readonly runner;
|
|
53
|
+
private readonly configLoader;
|
|
54
|
+
private readonly emitter;
|
|
55
|
+
private readonly proposalConfig?;
|
|
56
|
+
private tasks;
|
|
57
|
+
private runningJobs;
|
|
58
|
+
private currentConfigs;
|
|
59
|
+
private currentAutonomyRules;
|
|
60
|
+
private proposalRunning;
|
|
61
|
+
private proposalDebounceTimer;
|
|
62
|
+
constructor(runner: JobRunner, configLoader: ConfigLoader, emitter: EventEmitter, proposalConfig?: ProposalSchedulerConfig | undefined);
|
|
63
|
+
start(): void;
|
|
64
|
+
stop(): void;
|
|
65
|
+
reload(): void;
|
|
66
|
+
getScheduledJobs(): Array<{
|
|
67
|
+
type: JobType;
|
|
68
|
+
cronExpression: string;
|
|
69
|
+
}>;
|
|
70
|
+
isRunning(jobType: JobType): boolean;
|
|
71
|
+
private scheduleJob;
|
|
72
|
+
private triggerJob;
|
|
73
|
+
/**
|
|
74
|
+
* Debounced check: wait 30s after the last job completes. If no more
|
|
75
|
+
* jobs are running, trigger the proposal engine.
|
|
76
|
+
*/
|
|
77
|
+
private scheduleProposalCycle;
|
|
78
|
+
private runProposalCycle;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/jobs/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAMrE,oBAAY,cAAc;IACxB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;CAC5C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAMD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAMjD,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAXlC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,qBAAqB,CAA8C;gBAGxD,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,uBAAuB,YAAA;IAG3D,KAAK,IAAI,IAAI;IAsBb,IAAI,IAAI,IAAI;IAaZ,MAAM,IAAI,IAAI;IA4Bd,gBAAgB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAapE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIpC,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,UAAU;IAgClB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;YAef,gBAAgB;CAwB/B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreateJobRun, JobRun, UpdateJobRun } from "@locusai/shared";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
|
+
export interface JobRunListOptions {
|
|
4
|
+
type?: string;
|
|
5
|
+
status?: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class JobsModule extends BaseModule {
|
|
9
|
+
create(workspaceId: string, data: CreateJobRun): Promise<JobRun>;
|
|
10
|
+
list(workspaceId: string, params?: JobRunListOptions): Promise<JobRun[]>;
|
|
11
|
+
get(workspaceId: string, id: string): Promise<JobRun>;
|
|
12
|
+
update(workspaceId: string, id: string, data: UpdateJobRun): Promise<JobRun>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/modules/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAUvC,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAW,SAAQ,UAAU;IAClC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhE,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC;IAQd,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC;CAOnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CreateSuggestion, Suggestion, UpdateSuggestionStatus } from "@locusai/shared";
|
|
2
|
+
import { BaseModule } from "./base.js";
|
|
3
|
+
export interface SuggestionListOptions {
|
|
4
|
+
status?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SuggestionsModule extends BaseModule {
|
|
7
|
+
create(workspaceId: string, data: CreateSuggestion): Promise<Suggestion>;
|
|
8
|
+
list(workspaceId: string, params?: SuggestionListOptions): Promise<Suggestion[]>;
|
|
9
|
+
get(workspaceId: string, id: string): Promise<Suggestion>;
|
|
10
|
+
updateStatus(workspaceId: string, id: string, status: UpdateSuggestionStatus): Promise<Suggestion>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=suggestions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../src/modules/suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAUvC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC;IAQhB,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;IAQlB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzD,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,UAAU,CAAC;CAOvB"}
|