@locusai/cli 0.7.6 → 0.8.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/bin/agent/worker.js +106 -10
- package/bin/locus.js +153 -21
- package/package.json +2 -2
package/bin/agent/worker.js
CHANGED
|
@@ -34981,6 +34981,10 @@ var EventType;
|
|
|
34981
34981
|
EventType2["SPRINT_STATUS_CHANGED"] = "SPRINT_STATUS_CHANGED";
|
|
34982
34982
|
EventType2["SPRINT_DELETED"] = "SPRINT_DELETED";
|
|
34983
34983
|
EventType2["CHECKLIST_INITIALIZED"] = "CHECKLIST_INITIALIZED";
|
|
34984
|
+
EventType2["INTERVIEW_STARTED"] = "INTERVIEW_STARTED";
|
|
34985
|
+
EventType2["INTERVIEW_FIELD_COMPLETED"] = "INTERVIEW_FIELD_COMPLETED";
|
|
34986
|
+
EventType2["INTERVIEW_COMPLETED"] = "INTERVIEW_COMPLETED";
|
|
34987
|
+
EventType2["INTERVIEW_ABANDONED"] = "INTERVIEW_ABANDONED";
|
|
34984
34988
|
})(EventType ||= {});
|
|
34985
34989
|
// ../shared/src/models/activity.ts
|
|
34986
34990
|
var CommentSchema = BaseEntitySchema.extend({
|
|
@@ -35046,6 +35050,25 @@ var CiRanPayloadSchema = exports_external.object({
|
|
|
35046
35050
|
processed: exports_external.boolean(),
|
|
35047
35051
|
commands: exports_external.array(exports_external.object({ cmd: exports_external.string(), exitCode: exports_external.number() }))
|
|
35048
35052
|
});
|
|
35053
|
+
var InterviewStartedPayloadSchema = exports_external.object({
|
|
35054
|
+
workspaceName: exports_external.string(),
|
|
35055
|
+
firstFieldName: exports_external.string()
|
|
35056
|
+
});
|
|
35057
|
+
var InterviewFieldCompletedPayloadSchema = exports_external.object({
|
|
35058
|
+
fieldName: exports_external.string(),
|
|
35059
|
+
completionPercentage: exports_external.number()
|
|
35060
|
+
});
|
|
35061
|
+
var InterviewCompletedPayloadSchema = exports_external.object({
|
|
35062
|
+
workspaceName: exports_external.string(),
|
|
35063
|
+
timeToCompleteMs: exports_external.number(),
|
|
35064
|
+
completedVia: exports_external.enum(["interview", "manual_bypass"])
|
|
35065
|
+
});
|
|
35066
|
+
var InterviewAbandonedPayloadSchema = exports_external.object({
|
|
35067
|
+
workspaceName: exports_external.string(),
|
|
35068
|
+
lastActiveAt: exports_external.union([exports_external.date(), exports_external.string()]),
|
|
35069
|
+
completionPercentage: exports_external.number(),
|
|
35070
|
+
daysInactive: exports_external.number()
|
|
35071
|
+
});
|
|
35049
35072
|
var EventPayloadSchema = exports_external.discriminatedUnion("type", [
|
|
35050
35073
|
exports_external.object({
|
|
35051
35074
|
type: exports_external.literal("TASK_CREATED" /* TASK_CREATED */),
|
|
@@ -35090,6 +35113,22 @@ var EventPayloadSchema = exports_external.discriminatedUnion("type", [
|
|
|
35090
35113
|
exports_external.object({
|
|
35091
35114
|
type: exports_external.literal("CI_RAN" /* CI_RAN */),
|
|
35092
35115
|
payload: CiRanPayloadSchema
|
|
35116
|
+
}),
|
|
35117
|
+
exports_external.object({
|
|
35118
|
+
type: exports_external.literal("INTERVIEW_STARTED" /* INTERVIEW_STARTED */),
|
|
35119
|
+
payload: InterviewStartedPayloadSchema
|
|
35120
|
+
}),
|
|
35121
|
+
exports_external.object({
|
|
35122
|
+
type: exports_external.literal("INTERVIEW_FIELD_COMPLETED" /* INTERVIEW_FIELD_COMPLETED */),
|
|
35123
|
+
payload: InterviewFieldCompletedPayloadSchema
|
|
35124
|
+
}),
|
|
35125
|
+
exports_external.object({
|
|
35126
|
+
type: exports_external.literal("INTERVIEW_COMPLETED" /* INTERVIEW_COMPLETED */),
|
|
35127
|
+
payload: InterviewCompletedPayloadSchema
|
|
35128
|
+
}),
|
|
35129
|
+
exports_external.object({
|
|
35130
|
+
type: exports_external.literal("INTERVIEW_ABANDONED" /* INTERVIEW_ABANDONED */),
|
|
35131
|
+
payload: InterviewAbandonedPayloadSchema
|
|
35093
35132
|
})
|
|
35094
35133
|
]);
|
|
35095
35134
|
var EventSchema = exports_external.object({
|
|
@@ -35159,7 +35198,7 @@ var UnlockSchema = exports_external.object({
|
|
|
35159
35198
|
var AIRoleSchema = exports_external.enum(["user", "assistant", "system"]);
|
|
35160
35199
|
var AIArtifactSchema = exports_external.object({
|
|
35161
35200
|
id: exports_external.string(),
|
|
35162
|
-
type: exports_external.enum(["code", "document"
|
|
35201
|
+
type: exports_external.enum(["code", "document"]),
|
|
35163
35202
|
title: exports_external.string(),
|
|
35164
35203
|
content: exports_external.string(),
|
|
35165
35204
|
language: exports_external.string().optional(),
|
|
@@ -35167,13 +35206,7 @@ var AIArtifactSchema = exports_external.object({
|
|
|
35167
35206
|
});
|
|
35168
35207
|
var SuggestedActionSchema = exports_external.object({
|
|
35169
35208
|
label: exports_external.string(),
|
|
35170
|
-
type: exports_external.enum([
|
|
35171
|
-
"create_task",
|
|
35172
|
-
"create_doc",
|
|
35173
|
-
"chat_suggestion",
|
|
35174
|
-
"start_sprint",
|
|
35175
|
-
"plan_sprint"
|
|
35176
|
-
]),
|
|
35209
|
+
type: exports_external.enum(["chat_suggestion", "create_doc"]),
|
|
35177
35210
|
payload: exports_external.any()
|
|
35178
35211
|
});
|
|
35179
35212
|
var AIMessageSchema = exports_external.object({
|
|
@@ -35436,6 +35469,53 @@ var AcceptInvitationResponseSchema = exports_external.object({
|
|
|
35436
35469
|
createdAt: exports_external.number()
|
|
35437
35470
|
})
|
|
35438
35471
|
});
|
|
35472
|
+
// ../shared/src/models/manifest.ts
|
|
35473
|
+
var ProjectPhaseSchema = exports_external.enum([
|
|
35474
|
+
"PLANNING",
|
|
35475
|
+
"MVP_BUILD",
|
|
35476
|
+
"SCALING",
|
|
35477
|
+
"MAINTENANCE"
|
|
35478
|
+
]);
|
|
35479
|
+
var SprintStatusSchema = exports_external.enum(["PLANNED", "ACTIVE", "COMPLETED"]);
|
|
35480
|
+
var ProjectSprintSchema = exports_external.object({
|
|
35481
|
+
id: exports_external.string(),
|
|
35482
|
+
goal: exports_external.string(),
|
|
35483
|
+
tasks: exports_external.array(exports_external.string()),
|
|
35484
|
+
status: SprintStatusSchema
|
|
35485
|
+
});
|
|
35486
|
+
var MilestoneStatusSchema = exports_external.enum(["PENDING", "COMPLETED"]);
|
|
35487
|
+
var ProjectMilestoneSchema = exports_external.object({
|
|
35488
|
+
title: exports_external.string(),
|
|
35489
|
+
date: exports_external.string().optional(),
|
|
35490
|
+
status: MilestoneStatusSchema
|
|
35491
|
+
});
|
|
35492
|
+
var ProjectTimelineSchema = exports_external.object({
|
|
35493
|
+
sprints: exports_external.array(ProjectSprintSchema),
|
|
35494
|
+
milestones: exports_external.array(ProjectMilestoneSchema)
|
|
35495
|
+
});
|
|
35496
|
+
var RepositoryContextSchema = exports_external.object({
|
|
35497
|
+
summary: exports_external.string(),
|
|
35498
|
+
fileStructure: exports_external.string(),
|
|
35499
|
+
dependencies: exports_external.record(exports_external.string(), exports_external.string()),
|
|
35500
|
+
frameworks: exports_external.array(exports_external.string()),
|
|
35501
|
+
configFiles: exports_external.array(exports_external.string()),
|
|
35502
|
+
lastAnalysis: exports_external.string()
|
|
35503
|
+
});
|
|
35504
|
+
var ProjectManifestSchema = exports_external.object({
|
|
35505
|
+
name: exports_external.string(),
|
|
35506
|
+
mission: exports_external.string(),
|
|
35507
|
+
targetUsers: exports_external.array(exports_external.string()),
|
|
35508
|
+
techStack: exports_external.array(exports_external.string()),
|
|
35509
|
+
phase: ProjectPhaseSchema,
|
|
35510
|
+
features: exports_external.array(exports_external.string()),
|
|
35511
|
+
competitors: exports_external.array(exports_external.string()),
|
|
35512
|
+
brandVoice: exports_external.string().optional(),
|
|
35513
|
+
successMetrics: exports_external.array(exports_external.string()).optional(),
|
|
35514
|
+
completenessScore: exports_external.number().min(0).max(100),
|
|
35515
|
+
timeline: ProjectTimelineSchema.optional(),
|
|
35516
|
+
repositoryState: RepositoryContextSchema.optional()
|
|
35517
|
+
});
|
|
35518
|
+
var PartialProjectManifestSchema = ProjectManifestSchema.partial();
|
|
35439
35519
|
// ../shared/src/models/organization.ts
|
|
35440
35520
|
var OrganizationSchema = BaseEntitySchema.extend({
|
|
35441
35521
|
name: exports_external.string().min(1, "Name is required").max(100),
|
|
@@ -35625,11 +35705,15 @@ var WorkspaceAndUserParamSchema = exports_external.object({
|
|
|
35625
35705
|
workspaceId: exports_external.string().uuid("Invalid Workspace ID"),
|
|
35626
35706
|
userId: exports_external.string().uuid("Invalid User ID")
|
|
35627
35707
|
});
|
|
35708
|
+
var WorkspaceWithManifestInfoSchema = WorkspaceSchema.extend({
|
|
35709
|
+
isManifestComplete: exports_external.boolean(),
|
|
35710
|
+
manifestCompletionPercentage: exports_external.number().min(0).max(100)
|
|
35711
|
+
});
|
|
35628
35712
|
var WorkspaceResponseSchema = exports_external.object({
|
|
35629
|
-
workspace:
|
|
35713
|
+
workspace: WorkspaceWithManifestInfoSchema
|
|
35630
35714
|
});
|
|
35631
35715
|
var WorkspacesResponseSchema = exports_external.object({
|
|
35632
|
-
workspaces: exports_external.array(
|
|
35716
|
+
workspaces: exports_external.array(WorkspaceWithManifestInfoSchema)
|
|
35633
35717
|
});
|
|
35634
35718
|
var WorkspaceStatsSchema = exports_external.object({
|
|
35635
35719
|
workspaceName: exports_external.string(),
|
|
@@ -35639,6 +35723,13 @@ var WorkspaceStatsSchema = exports_external.object({
|
|
|
35639
35723
|
var WorkspaceStatsResponseSchema = exports_external.object({
|
|
35640
35724
|
stats: WorkspaceStatsSchema
|
|
35641
35725
|
});
|
|
35726
|
+
var ManifestStatusResponseSchema = exports_external.object({
|
|
35727
|
+
isComplete: exports_external.boolean(),
|
|
35728
|
+
percentage: exports_external.number().min(0).max(100),
|
|
35729
|
+
missingFields: exports_external.array(exports_external.string()),
|
|
35730
|
+
filledFields: exports_external.array(exports_external.string()),
|
|
35731
|
+
completenessScore: exports_external.number().min(0).max(100).nullable()
|
|
35732
|
+
});
|
|
35642
35733
|
// ../sdk/src/modules/tasks.ts
|
|
35643
35734
|
class TasksModule extends BaseModule {
|
|
35644
35735
|
async list(workspaceId, options) {
|
|
@@ -35728,6 +35819,10 @@ class WorkspacesModule extends BaseModule {
|
|
|
35728
35819
|
const { data } = await this.api.get(`/workspaces/${id}/stats`);
|
|
35729
35820
|
return data;
|
|
35730
35821
|
}
|
|
35822
|
+
async getManifestStatus(workspaceId) {
|
|
35823
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/manifest-status`);
|
|
35824
|
+
return data;
|
|
35825
|
+
}
|
|
35731
35826
|
async getActivity(id, limit) {
|
|
35732
35827
|
const { data } = await this.api.get(`/workspaces/${id}/activity`, {
|
|
35733
35828
|
params: { limit }
|
|
@@ -37220,6 +37315,7 @@ class AgentWorker {
|
|
|
37220
37315
|
}
|
|
37221
37316
|
}
|
|
37222
37317
|
if (process.argv[1]?.includes("agent-worker") || process.argv[1]?.includes("worker")) {
|
|
37318
|
+
process.title = "locus-worker";
|
|
37223
37319
|
const args = process.argv.slice(2);
|
|
37224
37320
|
const config2 = {};
|
|
37225
37321
|
for (let i = 0;i < args.length; i++) {
|
package/bin/locus.js
CHANGED
|
@@ -20414,11 +20414,15 @@ var init_enums = __esm(() => {
|
|
|
20414
20414
|
EventType2["SPRINT_STATUS_CHANGED"] = "SPRINT_STATUS_CHANGED";
|
|
20415
20415
|
EventType2["SPRINT_DELETED"] = "SPRINT_DELETED";
|
|
20416
20416
|
EventType2["CHECKLIST_INITIALIZED"] = "CHECKLIST_INITIALIZED";
|
|
20417
|
+
EventType2["INTERVIEW_STARTED"] = "INTERVIEW_STARTED";
|
|
20418
|
+
EventType2["INTERVIEW_FIELD_COMPLETED"] = "INTERVIEW_FIELD_COMPLETED";
|
|
20419
|
+
EventType2["INTERVIEW_COMPLETED"] = "INTERVIEW_COMPLETED";
|
|
20420
|
+
EventType2["INTERVIEW_ABANDONED"] = "INTERVIEW_ABANDONED";
|
|
20417
20421
|
})(EventType ||= {});
|
|
20418
20422
|
});
|
|
20419
20423
|
|
|
20420
20424
|
// ../shared/src/models/activity.ts
|
|
20421
|
-
var CommentSchema, ArtifactSchema, TaskCreatedPayloadSchema, TaskDeletedPayloadSchema, StatusChangedPayloadSchema, CommentAddedPayloadSchema, WorkspaceCreatedPayloadSchema, MemberAddedPayloadSchema, MemberInvitedPayloadSchema, SprintCreatedPayloadSchema, SprintStatusChangedPayloadSchema, ChecklistInitializedPayloadSchema, CiRanPayloadSchema, EventPayloadSchema, EventSchema, ArtifactParamSchema, TaskIdOnlyParamSchema, EventQuerySchema, EventResponseSchema, EventsResponseSchema, ActivityResponseSchema, CommentResponseSchema, ArtifactResponseSchema, ArtifactsResponseSchema, CreateArtifactSchema, ReportCiResultSchema;
|
|
20425
|
+
var CommentSchema, ArtifactSchema, TaskCreatedPayloadSchema, TaskDeletedPayloadSchema, StatusChangedPayloadSchema, CommentAddedPayloadSchema, WorkspaceCreatedPayloadSchema, MemberAddedPayloadSchema, MemberInvitedPayloadSchema, SprintCreatedPayloadSchema, SprintStatusChangedPayloadSchema, ChecklistInitializedPayloadSchema, CiRanPayloadSchema, InterviewStartedPayloadSchema, InterviewFieldCompletedPayloadSchema, InterviewCompletedPayloadSchema, InterviewAbandonedPayloadSchema, EventPayloadSchema, EventSchema, ArtifactParamSchema, TaskIdOnlyParamSchema, EventQuerySchema, EventResponseSchema, EventsResponseSchema, ActivityResponseSchema, CommentResponseSchema, ArtifactResponseSchema, ArtifactsResponseSchema, CreateArtifactSchema, ReportCiResultSchema;
|
|
20422
20426
|
var init_activity = __esm(() => {
|
|
20423
20427
|
init_zod();
|
|
20424
20428
|
init_common();
|
|
@@ -20486,6 +20490,25 @@ var init_activity = __esm(() => {
|
|
|
20486
20490
|
processed: exports_external.boolean(),
|
|
20487
20491
|
commands: exports_external.array(exports_external.object({ cmd: exports_external.string(), exitCode: exports_external.number() }))
|
|
20488
20492
|
});
|
|
20493
|
+
InterviewStartedPayloadSchema = exports_external.object({
|
|
20494
|
+
workspaceName: exports_external.string(),
|
|
20495
|
+
firstFieldName: exports_external.string()
|
|
20496
|
+
});
|
|
20497
|
+
InterviewFieldCompletedPayloadSchema = exports_external.object({
|
|
20498
|
+
fieldName: exports_external.string(),
|
|
20499
|
+
completionPercentage: exports_external.number()
|
|
20500
|
+
});
|
|
20501
|
+
InterviewCompletedPayloadSchema = exports_external.object({
|
|
20502
|
+
workspaceName: exports_external.string(),
|
|
20503
|
+
timeToCompleteMs: exports_external.number(),
|
|
20504
|
+
completedVia: exports_external.enum(["interview", "manual_bypass"])
|
|
20505
|
+
});
|
|
20506
|
+
InterviewAbandonedPayloadSchema = exports_external.object({
|
|
20507
|
+
workspaceName: exports_external.string(),
|
|
20508
|
+
lastActiveAt: exports_external.union([exports_external.date(), exports_external.string()]),
|
|
20509
|
+
completionPercentage: exports_external.number(),
|
|
20510
|
+
daysInactive: exports_external.number()
|
|
20511
|
+
});
|
|
20489
20512
|
EventPayloadSchema = exports_external.discriminatedUnion("type", [
|
|
20490
20513
|
exports_external.object({
|
|
20491
20514
|
type: exports_external.literal("TASK_CREATED" /* TASK_CREATED */),
|
|
@@ -20530,6 +20553,22 @@ var init_activity = __esm(() => {
|
|
|
20530
20553
|
exports_external.object({
|
|
20531
20554
|
type: exports_external.literal("CI_RAN" /* CI_RAN */),
|
|
20532
20555
|
payload: CiRanPayloadSchema
|
|
20556
|
+
}),
|
|
20557
|
+
exports_external.object({
|
|
20558
|
+
type: exports_external.literal("INTERVIEW_STARTED" /* INTERVIEW_STARTED */),
|
|
20559
|
+
payload: InterviewStartedPayloadSchema
|
|
20560
|
+
}),
|
|
20561
|
+
exports_external.object({
|
|
20562
|
+
type: exports_external.literal("INTERVIEW_FIELD_COMPLETED" /* INTERVIEW_FIELD_COMPLETED */),
|
|
20563
|
+
payload: InterviewFieldCompletedPayloadSchema
|
|
20564
|
+
}),
|
|
20565
|
+
exports_external.object({
|
|
20566
|
+
type: exports_external.literal("INTERVIEW_COMPLETED" /* INTERVIEW_COMPLETED */),
|
|
20567
|
+
payload: InterviewCompletedPayloadSchema
|
|
20568
|
+
}),
|
|
20569
|
+
exports_external.object({
|
|
20570
|
+
type: exports_external.literal("INTERVIEW_ABANDONED" /* INTERVIEW_ABANDONED */),
|
|
20571
|
+
payload: InterviewAbandonedPayloadSchema
|
|
20533
20572
|
})
|
|
20534
20573
|
]);
|
|
20535
20574
|
EventSchema = exports_external.object({
|
|
@@ -20609,7 +20648,7 @@ var init_ai = __esm(() => {
|
|
|
20609
20648
|
AIRoleSchema = exports_external.enum(["user", "assistant", "system"]);
|
|
20610
20649
|
AIArtifactSchema = exports_external.object({
|
|
20611
20650
|
id: exports_external.string(),
|
|
20612
|
-
type: exports_external.enum(["code", "document"
|
|
20651
|
+
type: exports_external.enum(["code", "document"]),
|
|
20613
20652
|
title: exports_external.string(),
|
|
20614
20653
|
content: exports_external.string(),
|
|
20615
20654
|
language: exports_external.string().optional(),
|
|
@@ -20617,13 +20656,7 @@ var init_ai = __esm(() => {
|
|
|
20617
20656
|
});
|
|
20618
20657
|
SuggestedActionSchema = exports_external.object({
|
|
20619
20658
|
label: exports_external.string(),
|
|
20620
|
-
type: exports_external.enum([
|
|
20621
|
-
"create_task",
|
|
20622
|
-
"create_doc",
|
|
20623
|
-
"chat_suggestion",
|
|
20624
|
-
"start_sprint",
|
|
20625
|
-
"plan_sprint"
|
|
20626
|
-
]),
|
|
20659
|
+
type: exports_external.enum(["chat_suggestion", "create_doc"]),
|
|
20627
20660
|
payload: exports_external.any()
|
|
20628
20661
|
});
|
|
20629
20662
|
AIMessageSchema = exports_external.object({
|
|
@@ -20924,6 +20957,58 @@ var init_invitation = __esm(() => {
|
|
|
20924
20957
|
});
|
|
20925
20958
|
});
|
|
20926
20959
|
|
|
20960
|
+
// ../shared/src/models/manifest.ts
|
|
20961
|
+
var ProjectPhaseSchema, SprintStatusSchema, ProjectSprintSchema, MilestoneStatusSchema, ProjectMilestoneSchema, ProjectTimelineSchema, RepositoryContextSchema, ProjectManifestSchema, PartialProjectManifestSchema;
|
|
20962
|
+
var init_manifest = __esm(() => {
|
|
20963
|
+
init_zod();
|
|
20964
|
+
ProjectPhaseSchema = exports_external.enum([
|
|
20965
|
+
"PLANNING",
|
|
20966
|
+
"MVP_BUILD",
|
|
20967
|
+
"SCALING",
|
|
20968
|
+
"MAINTENANCE"
|
|
20969
|
+
]);
|
|
20970
|
+
SprintStatusSchema = exports_external.enum(["PLANNED", "ACTIVE", "COMPLETED"]);
|
|
20971
|
+
ProjectSprintSchema = exports_external.object({
|
|
20972
|
+
id: exports_external.string(),
|
|
20973
|
+
goal: exports_external.string(),
|
|
20974
|
+
tasks: exports_external.array(exports_external.string()),
|
|
20975
|
+
status: SprintStatusSchema
|
|
20976
|
+
});
|
|
20977
|
+
MilestoneStatusSchema = exports_external.enum(["PENDING", "COMPLETED"]);
|
|
20978
|
+
ProjectMilestoneSchema = exports_external.object({
|
|
20979
|
+
title: exports_external.string(),
|
|
20980
|
+
date: exports_external.string().optional(),
|
|
20981
|
+
status: MilestoneStatusSchema
|
|
20982
|
+
});
|
|
20983
|
+
ProjectTimelineSchema = exports_external.object({
|
|
20984
|
+
sprints: exports_external.array(ProjectSprintSchema),
|
|
20985
|
+
milestones: exports_external.array(ProjectMilestoneSchema)
|
|
20986
|
+
});
|
|
20987
|
+
RepositoryContextSchema = exports_external.object({
|
|
20988
|
+
summary: exports_external.string(),
|
|
20989
|
+
fileStructure: exports_external.string(),
|
|
20990
|
+
dependencies: exports_external.record(exports_external.string(), exports_external.string()),
|
|
20991
|
+
frameworks: exports_external.array(exports_external.string()),
|
|
20992
|
+
configFiles: exports_external.array(exports_external.string()),
|
|
20993
|
+
lastAnalysis: exports_external.string()
|
|
20994
|
+
});
|
|
20995
|
+
ProjectManifestSchema = exports_external.object({
|
|
20996
|
+
name: exports_external.string(),
|
|
20997
|
+
mission: exports_external.string(),
|
|
20998
|
+
targetUsers: exports_external.array(exports_external.string()),
|
|
20999
|
+
techStack: exports_external.array(exports_external.string()),
|
|
21000
|
+
phase: ProjectPhaseSchema,
|
|
21001
|
+
features: exports_external.array(exports_external.string()),
|
|
21002
|
+
competitors: exports_external.array(exports_external.string()),
|
|
21003
|
+
brandVoice: exports_external.string().optional(),
|
|
21004
|
+
successMetrics: exports_external.array(exports_external.string()).optional(),
|
|
21005
|
+
completenessScore: exports_external.number().min(0).max(100),
|
|
21006
|
+
timeline: ProjectTimelineSchema.optional(),
|
|
21007
|
+
repositoryState: RepositoryContextSchema.optional()
|
|
21008
|
+
});
|
|
21009
|
+
PartialProjectManifestSchema = ProjectManifestSchema.partial();
|
|
21010
|
+
});
|
|
21011
|
+
|
|
20927
21012
|
// ../shared/src/models/organization.ts
|
|
20928
21013
|
var OrganizationSchema, CreateOrganizationSchema, UpdateOrganizationSchema, AddMemberSchema, MembershipWithUserSchema, OrgIdParamSchema, MembershipIdParamSchema, OrganizationResponseSchema, OrganizationsResponseSchema, MembersResponseSchema, MembershipResponseSchema;
|
|
20929
21014
|
var init_organization = __esm(() => {
|
|
@@ -21105,7 +21190,7 @@ var init_task = __esm(() => {
|
|
|
21105
21190
|
});
|
|
21106
21191
|
|
|
21107
21192
|
// ../shared/src/models/workspace.ts
|
|
21108
|
-
var ChecklistItemSchema, WorkspaceSchema, CreateWorkspaceSchema, UpdateWorkspaceSchema, AddWorkspaceMemberSchema, WorkspaceIdParamSchema, WorkspaceAndUserParamSchema, WorkspaceResponseSchema, WorkspacesResponseSchema, WorkspaceStatsSchema, WorkspaceStatsResponseSchema;
|
|
21193
|
+
var ChecklistItemSchema, WorkspaceSchema, CreateWorkspaceSchema, UpdateWorkspaceSchema, AddWorkspaceMemberSchema, WorkspaceIdParamSchema, WorkspaceAndUserParamSchema, WorkspaceWithManifestInfoSchema, WorkspaceResponseSchema, WorkspacesResponseSchema, WorkspaceStatsSchema, WorkspaceStatsResponseSchema, ManifestStatusResponseSchema;
|
|
21109
21194
|
var init_workspace = __esm(() => {
|
|
21110
21195
|
init_zod();
|
|
21111
21196
|
init_common();
|
|
@@ -21139,11 +21224,15 @@ var init_workspace = __esm(() => {
|
|
|
21139
21224
|
workspaceId: exports_external.string().uuid("Invalid Workspace ID"),
|
|
21140
21225
|
userId: exports_external.string().uuid("Invalid User ID")
|
|
21141
21226
|
});
|
|
21227
|
+
WorkspaceWithManifestInfoSchema = WorkspaceSchema.extend({
|
|
21228
|
+
isManifestComplete: exports_external.boolean(),
|
|
21229
|
+
manifestCompletionPercentage: exports_external.number().min(0).max(100)
|
|
21230
|
+
});
|
|
21142
21231
|
WorkspaceResponseSchema = exports_external.object({
|
|
21143
|
-
workspace:
|
|
21232
|
+
workspace: WorkspaceWithManifestInfoSchema
|
|
21144
21233
|
});
|
|
21145
21234
|
WorkspacesResponseSchema = exports_external.object({
|
|
21146
|
-
workspaces: exports_external.array(
|
|
21235
|
+
workspaces: exports_external.array(WorkspaceWithManifestInfoSchema)
|
|
21147
21236
|
});
|
|
21148
21237
|
WorkspaceStatsSchema = exports_external.object({
|
|
21149
21238
|
workspaceName: exports_external.string(),
|
|
@@ -21153,6 +21242,13 @@ var init_workspace = __esm(() => {
|
|
|
21153
21242
|
WorkspaceStatsResponseSchema = exports_external.object({
|
|
21154
21243
|
stats: WorkspaceStatsSchema
|
|
21155
21244
|
});
|
|
21245
|
+
ManifestStatusResponseSchema = exports_external.object({
|
|
21246
|
+
isComplete: exports_external.boolean(),
|
|
21247
|
+
percentage: exports_external.number().min(0).max(100),
|
|
21248
|
+
missingFields: exports_external.array(exports_external.string()),
|
|
21249
|
+
filledFields: exports_external.array(exports_external.string()),
|
|
21250
|
+
completenessScore: exports_external.number().min(0).max(100).nullable()
|
|
21251
|
+
});
|
|
21156
21252
|
});
|
|
21157
21253
|
|
|
21158
21254
|
// ../shared/src/models/index.ts
|
|
@@ -21165,6 +21261,7 @@ var init_models = __esm(() => {
|
|
|
21165
21261
|
init_doc();
|
|
21166
21262
|
init_doc_group();
|
|
21167
21263
|
init_invitation();
|
|
21264
|
+
init_manifest();
|
|
21168
21265
|
init_organization();
|
|
21169
21266
|
init_sprint();
|
|
21170
21267
|
init_task();
|
|
@@ -37612,6 +37709,10 @@ var init_workspaces = __esm(() => {
|
|
|
37612
37709
|
const { data } = await this.api.get(`/workspaces/${id}/stats`);
|
|
37613
37710
|
return data;
|
|
37614
37711
|
}
|
|
37712
|
+
async getManifestStatus(workspaceId) {
|
|
37713
|
+
const { data } = await this.api.get(`/workspaces/${workspaceId}/manifest-status`);
|
|
37714
|
+
return data;
|
|
37715
|
+
}
|
|
37615
37716
|
async getActivity(id, limit) {
|
|
37616
37717
|
const { data } = await this.api.get(`/workspaces/${id}/activity`, {
|
|
37617
37718
|
params: { limit }
|
|
@@ -37925,6 +38026,7 @@ var init_worker = __esm(() => {
|
|
|
37925
38026
|
init_document_fetcher();
|
|
37926
38027
|
init_task_executor();
|
|
37927
38028
|
if (process.argv[1]?.includes("agent-worker") || process.argv[1]?.includes("worker")) {
|
|
38029
|
+
process.title = "locus-worker";
|
|
37928
38030
|
const args = process.argv.slice(2);
|
|
37929
38031
|
const config2 = {};
|
|
37930
38032
|
for (let i = 0;i < args.length; i++) {
|
|
@@ -38963,7 +39065,9 @@ ${c.success("✅ Orchestrator finished")}`);
|
|
|
38963
39065
|
env: {
|
|
38964
39066
|
...process.env,
|
|
38965
39067
|
FORCE_COLOR: "1",
|
|
38966
|
-
TERM: "xterm-256color"
|
|
39068
|
+
TERM: "xterm-256color",
|
|
39069
|
+
LOCUS_WORKER: agentId,
|
|
39070
|
+
LOCUS_WORKSPACE: this.config.workspaceId
|
|
38967
39071
|
}
|
|
38968
39072
|
});
|
|
38969
39073
|
agentState.process = agentProcess;
|
|
@@ -39946,6 +40050,9 @@ class InteractiveSession {
|
|
|
39946
40050
|
projectPath;
|
|
39947
40051
|
model;
|
|
39948
40052
|
provider;
|
|
40053
|
+
inputBuffer = [];
|
|
40054
|
+
inputDebounceTimer = null;
|
|
40055
|
+
static PASTE_DEBOUNCE_MS = 50;
|
|
39949
40056
|
constructor(options) {
|
|
39950
40057
|
this.aiRunner = createAiRunner(options.provider, {
|
|
39951
40058
|
projectPath: options.projectPath,
|
|
@@ -39985,6 +40092,11 @@ class InteractiveSession {
|
|
|
39985
40092
|
this.readline.on("line", (input) => this.handleLine(input));
|
|
39986
40093
|
this.readline.on("close", () => this.shutdown());
|
|
39987
40094
|
process.on("SIGINT", () => {
|
|
40095
|
+
if (this.inputDebounceTimer) {
|
|
40096
|
+
clearTimeout(this.inputDebounceTimer);
|
|
40097
|
+
this.inputDebounceTimer = null;
|
|
40098
|
+
}
|
|
40099
|
+
this.inputBuffer = [];
|
|
39988
40100
|
if (this.isProcessing) {
|
|
39989
40101
|
this.renderer.stopThinkingAnimation();
|
|
39990
40102
|
console.log(c.dim(`
|
|
@@ -39996,18 +40108,34 @@ class InteractiveSession {
|
|
|
39996
40108
|
}
|
|
39997
40109
|
});
|
|
39998
40110
|
}
|
|
39999
|
-
|
|
40000
|
-
|
|
40111
|
+
handleLine(input) {
|
|
40112
|
+
this.inputBuffer.push(input);
|
|
40113
|
+
if (this.inputDebounceTimer) {
|
|
40114
|
+
clearTimeout(this.inputDebounceTimer);
|
|
40115
|
+
}
|
|
40116
|
+
this.inputDebounceTimer = setTimeout(() => {
|
|
40117
|
+
this.processBufferedInput();
|
|
40118
|
+
}, InteractiveSession.PASTE_DEBOUNCE_MS);
|
|
40119
|
+
}
|
|
40120
|
+
async processBufferedInput() {
|
|
40121
|
+
const fullInput = this.inputBuffer.join(`
|
|
40122
|
+
`);
|
|
40123
|
+
this.inputBuffer = [];
|
|
40124
|
+
this.inputDebounceTimer = null;
|
|
40125
|
+
const trimmed = fullInput.trim();
|
|
40001
40126
|
if (trimmed === "") {
|
|
40002
40127
|
this.readline?.prompt();
|
|
40003
40128
|
return;
|
|
40004
40129
|
}
|
|
40005
|
-
|
|
40006
|
-
|
|
40007
|
-
|
|
40008
|
-
if (
|
|
40009
|
-
this.
|
|
40010
|
-
|
|
40130
|
+
if (!trimmed.includes(`
|
|
40131
|
+
`)) {
|
|
40132
|
+
const command = parseCommand(trimmed);
|
|
40133
|
+
if (command) {
|
|
40134
|
+
await command.execute(this, trimmed.slice(command.name.length).trim());
|
|
40135
|
+
if (this.readline)
|
|
40136
|
+
this.readline.prompt();
|
|
40137
|
+
return;
|
|
40138
|
+
}
|
|
40011
40139
|
}
|
|
40012
40140
|
await this.executePrompt(trimmed);
|
|
40013
40141
|
this.readline?.prompt();
|
|
@@ -40114,6 +40242,10 @@ ${userInput}`;
|
|
|
40114
40242
|
this.historyManager.pruneSessions();
|
|
40115
40243
|
}
|
|
40116
40244
|
shutdown() {
|
|
40245
|
+
if (this.inputDebounceTimer) {
|
|
40246
|
+
clearTimeout(this.inputDebounceTimer);
|
|
40247
|
+
this.inputDebounceTimer = null;
|
|
40248
|
+
}
|
|
40117
40249
|
this.renderer.stopThinkingAnimation();
|
|
40118
40250
|
console.log(c.dim(`
|
|
40119
40251
|
Goodbye!`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@locusai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "CLI for Locus - AI-native project management platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"author": "",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@locusai/sdk": "^0.
|
|
35
|
+
"@locusai/sdk": "^0.8.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {}
|
|
38
38
|
}
|