@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.
@@ -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", "sprint", "task_list", "task"]),
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: WorkspaceSchema
35713
+ workspace: WorkspaceWithManifestInfoSchema
35630
35714
  });
35631
35715
  var WorkspacesResponseSchema = exports_external.object({
35632
- workspaces: exports_external.array(WorkspaceSchema)
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", "sprint", "task_list", "task"]),
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: WorkspaceSchema
21232
+ workspace: WorkspaceWithManifestInfoSchema
21144
21233
  });
21145
21234
  WorkspacesResponseSchema = exports_external.object({
21146
- workspaces: exports_external.array(WorkspaceSchema)
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
- async handleLine(input) {
40000
- const trimmed = input.trim();
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
- const command = parseCommand(trimmed);
40006
- if (command) {
40007
- await command.execute(this, trimmed.slice(command.name.length).trim());
40008
- if (this.readline)
40009
- this.readline.prompt();
40010
- return;
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.7.6",
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.7.6"
35
+ "@locusai/sdk": "^0.8.0"
36
36
  },
37
37
  "devDependencies": {}
38
38
  }