@locusai/cli 0.7.0 → 0.7.1

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.
@@ -17065,7 +17065,15 @@ var colors = {
17065
17065
  brightBlue: `${ESC}94m`,
17066
17066
  brightMagenta: `${ESC}95m`,
17067
17067
  brightCyan: `${ESC}96m`,
17068
- brightWhite: `${ESC}97m`
17068
+ brightWhite: `${ESC}97m`,
17069
+ bgBlack: `${ESC}40m`,
17070
+ bgRed: `${ESC}41m`,
17071
+ bgGreen: `${ESC}42m`,
17072
+ bgYellow: `${ESC}43m`,
17073
+ bgBlue: `${ESC}44m`,
17074
+ bgMagenta: `${ESC}45m`,
17075
+ bgCyan: `${ESC}46m`,
17076
+ bgWhite: `${ESC}47m`
17069
17077
  };
17070
17078
  var c = {
17071
17079
  text: (text, ...colorNames) => {
@@ -17081,11 +17089,17 @@ var c = {
17081
17089
  magenta: (t) => c.text(t, "magenta"),
17082
17090
  cyan: (t) => c.text(t, "cyan"),
17083
17091
  gray: (t) => c.text(t, "gray"),
17092
+ white: (t) => c.text(t, "white"),
17093
+ brightBlue: (t) => c.text(t, "brightBlue"),
17094
+ bgBlue: (t) => c.text(t, "bgBlue", "white", "bold"),
17084
17095
  success: (t) => c.text(t, "green", "bold"),
17085
17096
  error: (t) => c.text(t, "red", "bold"),
17086
17097
  warning: (t) => c.text(t, "yellow", "bold"),
17087
17098
  info: (t) => c.text(t, "cyan", "bold"),
17088
17099
  primary: (t) => c.text(t, "blue", "bold"),
17100
+ secondary: (t) => c.text(t, "magenta", "bold"),
17101
+ header: (t) => c.text(` ${t} `, "bgBlue", "white", "bold"),
17102
+ step: (t) => c.text(` ${t} `, "bgCyan", "black", "bold"),
17089
17103
  underline: (t) => c.text(t, "underline")
17090
17104
  };
17091
17105
 
@@ -20814,6 +20828,13 @@ class AIModule extends BaseModule {
20814
20828
  async deleteSession(workspaceId, sessionId) {
20815
20829
  await this.api.delete(`/ai/${workspaceId}/session/${sessionId}`);
20816
20830
  }
20831
+ async shareSession(workspaceId, sessionId, body) {
20832
+ await this.api.post(`/ai/${workspaceId}/session/${sessionId}/share`, body);
20833
+ }
20834
+ async getSharedSession(sessionId) {
20835
+ const { data } = await this.api.get(`/ai/shared/${sessionId}`);
20836
+ return data;
20837
+ }
20817
20838
  }
20818
20839
 
20819
20840
  // ../sdk/src/modules/auth.ts
@@ -34834,6 +34855,9 @@ var ChatResponseSchema = exports_external.object({
34834
34855
  sessionId: exports_external.string(),
34835
34856
  history: exports_external.array(AIMessageSchema).optional()
34836
34857
  });
34858
+ var ShareChatRequestSchema = exports_external.object({
34859
+ isShared: exports_external.boolean()
34860
+ });
34837
34861
  // ../shared/src/models/user.ts
34838
34862
  var UserSchema = BaseEntitySchema.extend({
34839
34863
  email: exports_external.string().email(),
@@ -36110,13 +36134,10 @@ class CodebaseIndexer {
36110
36134
  `);
36111
36135
  const newTreeHash = this.hashTree(treeString);
36112
36136
  const existingIndex = this.loadIndex();
36113
- if (!force && existingIndex?.treeHash === newTreeHash) {
36114
- onProgress?.("No file changes detected, skipping reindex");
36115
- return null;
36116
- }
36117
36137
  const currentHashes = this.computeFileHashes(currentFiles);
36118
36138
  const existingHashes = existingIndex?.fileHashes;
36119
- const canIncremental = !force && existingIndex && existingHashes;
36139
+ const hasExistingContent = existingIndex && (Object.keys(existingIndex.symbols).length > 0 || Object.keys(existingIndex.responsibilities).length > 0);
36140
+ const canIncremental = !force && existingIndex && existingHashes && hasExistingContent;
36120
36141
  if (canIncremental) {
36121
36142
  onProgress?.("Performing incremental update");
36122
36143
  const { added, deleted, modified } = this.diffFiles(currentHashes, existingHashes);
@@ -36149,8 +36170,12 @@ class CodebaseIndexer {
36149
36170
  }
36150
36171
  }
36151
36172
  onProgress?.("AI is analyzing codebase structure...");
36152
- const index = await treeSummarizer(treeString);
36153
- return this.applyIndexMetadata(index, currentHashes, newTreeHash);
36173
+ try {
36174
+ const index = await treeSummarizer(treeString);
36175
+ return this.applyIndexMetadata(index, currentHashes, newTreeHash);
36176
+ } catch (error48) {
36177
+ throw new Error(`AI analysis failed: ${error48 instanceof Error ? error48.message : String(error48)}`);
36178
+ }
36154
36179
  }
36155
36180
  async getFileTree() {
36156
36181
  const gitmodulesPath = join4(this.projectPath, ".gitmodules");
@@ -36642,16 +36667,12 @@ class TaskExecutor {
36642
36667
  });
36643
36668
  try {
36644
36669
  let plan = null;
36645
- if (this.deps.skipPlanning) {
36646
- this.deps.log("Skipping Phase 1: Planning (CLI)...", "info");
36647
- } else {
36648
- this.deps.log("Phase 1: Planning (CLI)...", "info");
36649
- const planningPrompt = `${basePrompt}
36670
+ this.deps.log("Phase 1: Planning (CLI)...", "info");
36671
+ const planningPrompt = `${basePrompt}
36650
36672
 
36651
36673
  ## Phase 1: Planning
36652
36674
  Analyze and create a detailed plan for THIS SPECIFIC TASK. Do NOT execute changes yet.`;
36653
- plan = await this.deps.aiRunner.run(planningPrompt, true);
36654
- }
36675
+ plan = await this.deps.aiRunner.run(planningPrompt, true);
36655
36676
  this.deps.log("Starting Execution...", "info");
36656
36677
  let executionPrompt = basePrompt;
36657
36678
  if (plan != null) {
@@ -36740,7 +36761,6 @@ class AgentWorker {
36740
36761
  this.taskExecutor = new TaskExecutor({
36741
36762
  aiRunner: this.aiRunner,
36742
36763
  projectPath,
36743
- skipPlanning: config2.skipPlanning,
36744
36764
  log
36745
36765
  });
36746
36766
  const providerLabel = provider === "codex" ? "Codex" : "Claude";
@@ -36871,8 +36891,7 @@ if (process.argv[1]?.includes("agent-worker") || process.argv[1]?.includes("work
36871
36891
  if (value && !value.startsWith("--"))
36872
36892
  i++;
36873
36893
  config2.provider = resolveProvider(value);
36874
- } else if (arg === "--skip-planning")
36875
- config2.skipPlanning = true;
36894
+ }
36876
36895
  }
36877
36896
  if (!config2.agentId || !config2.workspaceId || !config2.apiBase || !config2.apiKey || !config2.projectPath) {
36878
36897
  console.error("Missing required arguments");
package/bin/locus.js CHANGED
@@ -30874,6 +30874,9 @@ var ChatResponseSchema = exports_external.object({
30874
30874
  sessionId: exports_external.string(),
30875
30875
  history: exports_external.array(AIMessageSchema).optional()
30876
30876
  });
30877
+ var ShareChatRequestSchema = exports_external.object({
30878
+ isShared: exports_external.boolean()
30879
+ });
30877
30880
  // ../shared/src/models/user.ts
30878
30881
  var UserSchema = BaseEntitySchema.extend({
30879
30882
  email: exports_external.string().email(),
@@ -31961,13 +31964,10 @@ class CodebaseIndexer {
31961
31964
  `);
31962
31965
  const newTreeHash = this.hashTree(treeString);
31963
31966
  const existingIndex = this.loadIndex();
31964
- if (!force && existingIndex?.treeHash === newTreeHash) {
31965
- onProgress?.("No file changes detected, skipping reindex");
31966
- return null;
31967
- }
31968
31967
  const currentHashes = this.computeFileHashes(currentFiles);
31969
31968
  const existingHashes = existingIndex?.fileHashes;
31970
- const canIncremental = !force && existingIndex && existingHashes;
31969
+ const hasExistingContent = existingIndex && (Object.keys(existingIndex.symbols).length > 0 || Object.keys(existingIndex.responsibilities).length > 0);
31970
+ const canIncremental = !force && existingIndex && existingHashes && hasExistingContent;
31971
31971
  if (canIncremental) {
31972
31972
  onProgress?.("Performing incremental update");
31973
31973
  const { added, deleted, modified } = this.diffFiles(currentHashes, existingHashes);
@@ -32000,8 +32000,12 @@ class CodebaseIndexer {
32000
32000
  }
32001
32001
  }
32002
32002
  onProgress?.("AI is analyzing codebase structure...");
32003
- const index = await treeSummarizer(treeString);
32004
- return this.applyIndexMetadata(index, currentHashes, newTreeHash);
32003
+ try {
32004
+ const index = await treeSummarizer(treeString);
32005
+ return this.applyIndexMetadata(index, currentHashes, newTreeHash);
32006
+ } catch (error48) {
32007
+ throw new Error(`AI analysis failed: ${error48 instanceof Error ? error48.message : String(error48)}`);
32008
+ }
32005
32009
  }
32006
32010
  async getFileTree() {
32007
32011
  const gitmodulesPath = join3(this.projectPath, ".gitmodules");
@@ -32492,16 +32496,12 @@ class TaskExecutor {
32492
32496
  });
32493
32497
  try {
32494
32498
  let plan = null;
32495
- if (this.deps.skipPlanning) {
32496
- this.deps.log("Skipping Phase 1: Planning (CLI)...", "info");
32497
- } else {
32498
- this.deps.log("Phase 1: Planning (CLI)...", "info");
32499
- const planningPrompt = `${basePrompt}
32499
+ this.deps.log("Phase 1: Planning (CLI)...", "info");
32500
+ const planningPrompt = `${basePrompt}
32500
32501
 
32501
32502
  ## Phase 1: Planning
32502
32503
  Analyze and create a detailed plan for THIS SPECIFIC TASK. Do NOT execute changes yet.`;
32503
- plan = await this.deps.aiRunner.run(planningPrompt, true);
32504
- }
32504
+ plan = await this.deps.aiRunner.run(planningPrompt, true);
32505
32505
  this.deps.log("Starting Execution...", "info");
32506
32506
  let executionPrompt = basePrompt;
32507
32507
  if (plan != null) {
@@ -32559,7 +32559,15 @@ var colors = {
32559
32559
  brightBlue: `${ESC}94m`,
32560
32560
  brightMagenta: `${ESC}95m`,
32561
32561
  brightCyan: `${ESC}96m`,
32562
- brightWhite: `${ESC}97m`
32562
+ brightWhite: `${ESC}97m`,
32563
+ bgBlack: `${ESC}40m`,
32564
+ bgRed: `${ESC}41m`,
32565
+ bgGreen: `${ESC}42m`,
32566
+ bgYellow: `${ESC}43m`,
32567
+ bgBlue: `${ESC}44m`,
32568
+ bgMagenta: `${ESC}45m`,
32569
+ bgCyan: `${ESC}46m`,
32570
+ bgWhite: `${ESC}47m`
32563
32571
  };
32564
32572
  var c = {
32565
32573
  text: (text, ...colorNames) => {
@@ -32575,11 +32583,17 @@ var c = {
32575
32583
  magenta: (t) => c.text(t, "magenta"),
32576
32584
  cyan: (t) => c.text(t, "cyan"),
32577
32585
  gray: (t) => c.text(t, "gray"),
32586
+ white: (t) => c.text(t, "white"),
32587
+ brightBlue: (t) => c.text(t, "brightBlue"),
32588
+ bgBlue: (t) => c.text(t, "bgBlue", "white", "bold"),
32578
32589
  success: (t) => c.text(t, "green", "bold"),
32579
32590
  error: (t) => c.text(t, "red", "bold"),
32580
32591
  warning: (t) => c.text(t, "yellow", "bold"),
32581
32592
  info: (t) => c.text(t, "cyan", "bold"),
32582
32593
  primary: (t) => c.text(t, "blue", "bold"),
32594
+ secondary: (t) => c.text(t, "magenta", "bold"),
32595
+ header: (t) => c.text(` ${t} `, "bgBlue", "white", "bold"),
32596
+ step: (t) => c.text(` ${t} `, "bgCyan", "black", "bold"),
32583
32597
  underline: (t) => c.text(t, "underline")
32584
32598
  };
32585
32599
 
@@ -36308,6 +36322,13 @@ class AIModule extends BaseModule {
36308
36322
  async deleteSession(workspaceId, sessionId) {
36309
36323
  await this.api.delete(`/ai/${workspaceId}/session/${sessionId}`);
36310
36324
  }
36325
+ async shareSession(workspaceId, sessionId, body) {
36326
+ await this.api.post(`/ai/${workspaceId}/session/${sessionId}/share`, body);
36327
+ }
36328
+ async getSharedSession(sessionId) {
36329
+ const { data } = await this.api.get(`/ai/shared/${sessionId}`);
36330
+ return data;
36331
+ }
36311
36332
  }
36312
36333
 
36313
36334
  // ../sdk/src/modules/auth.ts
@@ -36746,7 +36767,6 @@ class AgentWorker {
36746
36767
  this.taskExecutor = new TaskExecutor({
36747
36768
  aiRunner: this.aiRunner,
36748
36769
  projectPath,
36749
- skipPlanning: config2.skipPlanning,
36750
36770
  log
36751
36771
  });
36752
36772
  const providerLabel = provider === "codex" ? "Codex" : "Claude";
@@ -36877,8 +36897,7 @@ if (process.argv[1]?.includes("agent-worker") || process.argv[1]?.includes("work
36877
36897
  if (value && !value.startsWith("--"))
36878
36898
  i++;
36879
36899
  config2.provider = resolveProvider(value);
36880
- } else if (arg === "--skip-planning")
36881
- config2.skipPlanning = true;
36900
+ }
36882
36901
  }
36883
36902
  if (!config2.agentId || !config2.workspaceId || !config2.apiBase || !config2.apiKey || !config2.projectPath) {
36884
36903
  console.error("Missing required arguments");
@@ -37012,9 +37031,6 @@ ${c.success("✅ Orchestrator finished")}`);
37012
37031
  if (this.config.provider) {
37013
37032
  workerArgs.push("--provider", this.config.provider);
37014
37033
  }
37015
- if (this.config.skipPlanning) {
37016
- workerArgs.push("--skip-planning");
37017
- }
37018
37034
  if (this.resolvedSprintId) {
37019
37035
  workerArgs.push("--sprint-id", this.resolvedSprintId);
37020
37036
  }
@@ -37613,12 +37629,12 @@ function getVersion() {
37613
37629
  var VERSION2 = getVersion();
37614
37630
  function printBanner() {
37615
37631
  console.log(c.primary(`
37616
- ## ###### ###### ## ## ######
37617
- ## ## ## ## ## ## ##
37618
- ## ## ## ## ## ## ######
37619
- ## ## ## ## ## ## ##
37620
- ####### ###### ###### ###### ###### v${VERSION2}
37621
- `));
37632
+ _ ____ ____ _ _ ____
37633
+ | | / __ \\ / ___| | | |/ ___|
37634
+ | | | | | | | | | | |\\___ \\
37635
+ | |___| |__| | |___| |_| |___) |
37636
+ |_____|\\____/ \\____|\\___/|____/ ${c.dim(`v${VERSION2}`)}
37637
+ `));
37622
37638
  }
37623
37639
  function isProjectInitialized(projectPath) {
37624
37640
  const locusDir = join8(projectPath, LOCUS_CONFIG.dir);
@@ -37628,14 +37644,14 @@ function isProjectInitialized(projectPath) {
37628
37644
  function requireInitialization(projectPath, command) {
37629
37645
  if (!isProjectInitialized(projectPath)) {
37630
37646
  console.error(`
37631
- ${c.error(" Error: Locus is not initialized in this directory.")}
37647
+ ${c.error(" Error")} ${c.red(`Locus is not initialized in this directory.`)}
37632
37648
 
37633
- The '${c.bold(command)}' command requires a Locus project to be initialized.
37649
+ The '${c.bold(command)}' command requires a Locus project to be initialized.
37634
37650
 
37635
- To initialize Locus in this directory, run:
37636
- ${c.primary("locus init")}
37651
+ To initialize Locus in this directory, run:
37652
+ ${c.primary("locus init")}
37637
37653
 
37638
- This will create a .locus directory with the necessary configuration.
37654
+ This will create a ${c.dim(".locus")} directory with the necessary configuration.
37639
37655
  `);
37640
37656
  process.exit(1);
37641
37657
  }
@@ -37696,12 +37712,11 @@ async function runCommand(args) {
37696
37712
  apiBase,
37697
37713
  maxIterations: 100,
37698
37714
  projectPath,
37699
- apiKey,
37700
- skipPlanning: Boolean(values["skip-planning"])
37715
+ apiKey
37701
37716
  });
37702
- orchestrator.on("task:assigned", (data) => console.log(`ℹ [CLAIMED] ${data.title}`));
37703
- orchestrator.on("task:completed", (data) => console.log(`✓ [COMPLETED] ${data.taskId}`));
37704
- orchestrator.on("task:failed", (data) => console.log(`✗ [FAILED] ${data.taskId}: ${data.error}`));
37717
+ orchestrator.on("task:assigned", (data) => console.log(` ${c.info("●")} ${c.bold("Claimed:")} ${data.title}`));
37718
+ orchestrator.on("task:completed", (data) => console.log(` ${c.success("✔")} ${c.success("Completed:")} ${c.dim(data.taskId)}`));
37719
+ orchestrator.on("task:failed", (data) => console.log(` ${c.error("✖")} ${c.error("Failed:")} ${c.bold(data.taskId)}: ${data.error}`));
37705
37720
  const handleSignal = async (signal) => {
37706
37721
  console.log(`
37707
37722
  ${c.info(`Received ${signal}. Stopping agents...`)}`);
@@ -37710,7 +37725,8 @@ ${c.info(`Received ${signal}. Stopping agents...`)}`);
37710
37725
  };
37711
37726
  process.on("SIGINT", () => handleSignal("SIGINT"));
37712
37727
  process.on("SIGTERM", () => handleSignal("SIGTERM"));
37713
- console.log(`${c.primary("\uD83D\uDE80 Starting agent in")} ${c.bold(projectPath)}...`);
37728
+ console.log(`
37729
+ ${c.primary("\uD83D\uDE80")} ${c.bold("Starting Locus agent in")} ${c.primary(projectPath)}...`);
37714
37730
  await orchestrator.start();
37715
37731
  }
37716
37732
  async function indexCommand(args) {
@@ -37734,12 +37750,22 @@ async function indexCommand(args) {
37734
37750
  });
37735
37751
  const summarizer = new TreeSummarizer(aiRunner);
37736
37752
  const indexer = new CodebaseIndexer(projectPath);
37737
- console.log(`${c.primary("\uD83D\uDD0D Indexing codebase in")} ${c.bold(projectPath)}...`);
37738
- const index = await indexer.index((msg) => console.log(` ${c.dim(msg)}`), (tree) => summarizer.summarize(tree));
37739
- if (index) {
37740
- indexer.saveIndex(index);
37753
+ console.log(`
37754
+ ${c.step(" INDEX ")} ${c.primary("Analyzing codebase in")} ${c.bold(projectPath)}...`);
37755
+ try {
37756
+ const index = await indexer.index((msg) => console.log(` ${c.dim(msg)}`), (tree) => summarizer.summarize(tree));
37757
+ if (index) {
37758
+ indexer.saveIndex(index);
37759
+ }
37760
+ } catch (error48) {
37761
+ console.error(`
37762
+ ${c.error("✖")} ${c.error("Indexing failed:")} ${c.red(error48 instanceof Error ? error48.message : String(error48))}`);
37763
+ console.error(c.dim(` The agent might have limited context until indexing succeeds.
37764
+ `));
37741
37765
  }
37742
- console.log(c.success("✅ Indexing complete!"));
37766
+ console.log(`
37767
+ ${c.success("✔")} ${c.success("Indexing complete!")}
37768
+ `);
37743
37769
  }
37744
37770
  async function initCommand() {
37745
37771
  const projectPath = process.cwd();
@@ -37755,19 +37781,19 @@ If you want to reinitialize, please remove the .locus directory first.
37755
37781
  }
37756
37782
  await new ConfigManager(projectPath).init(VERSION2);
37757
37783
  console.log(`
37758
- ${c.success("✨ Locus initialized successfully!")}
37784
+ ${c.success("✨ Locus initialized successfully!")}
37759
37785
 
37760
- Created:
37761
- \uD83D\uDCC1 ${c.dim(".locus/")} - Locus configuration directory
37762
- \uD83D\uDCC4 ${c.dim(".locus/config.json")} - Project configuration
37763
- \uD83D\uDCDD ${c.dim("CLAUDE.md")} - AI context file
37764
- \uD83D\uDCC1 ${c.dim(".agent/skills/")} - Agent skills (Frontend, Backend, DevOps, etc.)
37786
+ ${c.bold("Created:")}
37787
+ ${c.primary("\uD83D\uDCC1")} ${c.bold(".locus/")} ${c.dim("Configuration directory")}
37788
+ ${c.primary("\uD83D\uDCC4")} ${c.bold(".locus/config.json")} ${c.dim("Project settings")}
37789
+ ${c.primary("\uD83D\uDCDD")} ${c.bold("CLAUDE.md")} ${c.dim("AI instructions & context")}
37790
+ ${c.primary("\uD83D\uDCC1")} ${c.bold(".agent/skills/")} ${c.dim("Domain-specific agent skills")}
37765
37791
 
37766
- Next steps:
37767
- 1. Run '${c.primary("locus index")}' to index your codebase
37768
- 2. Run '${c.primary("locus run")}' to start an agent (requires --api-key)
37792
+ ${c.bold("Next steps:")}
37793
+ 1. Run '${c.primary("locus index")}' to index your codebase
37794
+ 2. Run '${c.primary("locus run")}' to start an agent (requires --api-key)
37769
37795
 
37770
- For more information, visit: ${c.underline("https://locusai.dev/docs")}
37796
+ For more information, visit: ${c.underline("https://locusai.dev/docs")}
37771
37797
  `);
37772
37798
  }
37773
37799
  async function main() {
@@ -37786,28 +37812,29 @@ async function main() {
37786
37812
  break;
37787
37813
  default:
37788
37814
  console.log(`
37789
- Usage: locus <command>
37815
+ ${c.header(" USAGE ")}
37816
+ ${c.primary("locus")} ${c.dim("<command> [options]")}
37790
37817
 
37791
- Commands:
37792
- init Initialize Locus in the current directory
37793
- index Index the codebase for AI context
37794
- run Start an agent to work on tasks
37818
+ ${c.header(" COMMANDS ")}
37819
+ ${c.success("init")} Initialize Locus in the current directory
37820
+ ${c.success("index")} Index the codebase for AI context
37821
+ ${c.success("run")} Start an agent to work on tasks
37795
37822
 
37796
- Options:
37797
- --help Show this help message
37798
- --provider <name> AI provider: claude or codex (default: claude)
37799
- --skip-planning Skip the planning phase (CLI planning)
37823
+ ${c.header(" OPTIONS ")}
37824
+ ${c.secondary("--help")} Show this help message
37825
+ ${c.secondary("--provider")} <name> AI provider: ${c.dim("claude")} or ${c.dim("codex")} (default: ${c.dim("claude")})
37800
37826
 
37801
- Examples:
37802
- locus init
37803
- locus index
37804
- locus run --api-key YOUR_KEY
37827
+ ${c.header(" EXAMPLES ")}
37828
+ ${c.dim("$")} ${c.primary("locus init")}
37829
+ ${c.dim("$")} ${c.primary("locus index")}
37830
+ ${c.dim("$")} ${c.primary("locus run --api-key YOUR_KEY")}
37805
37831
 
37806
- For more information, visit: https://locusai.dev/docs
37832
+ For more information, visit: ${c.underline("https://locusai.dev/docs")}
37807
37833
  `);
37808
37834
  }
37809
37835
  }
37810
37836
  main().catch((err) => {
37811
- console.error(`Fatal error: ${err.message}`);
37837
+ console.error(`
37838
+ ${c.error("✖ Fatal Error")} ${c.red(err.message)}`);
37812
37839
  process.exit(1);
37813
37840
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@locusai/cli",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
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.0"
35
+ "@locusai/sdk": "^0.7.1"
36
36
  },
37
37
  "devDependencies": {}
38
38
  }