@letta-ai/letta-code 0.27.26 → 0.27.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/letta.js +308 -88
  2. package/package.json +1 -1
package/letta.js CHANGED
@@ -4672,7 +4672,7 @@ var package_default;
4672
4672
  var init_package = __esm(() => {
4673
4673
  package_default = {
4674
4674
  name: "@letta-ai/letta-code",
4675
- version: "0.27.26",
4675
+ version: "0.27.27",
4676
4676
  description: "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
4677
4677
  type: "module",
4678
4678
  packageManager: "bun@1.3.0",
@@ -424479,6 +424479,19 @@ var init_reflection_threshold_feedback = __esm(() => {
424479
424479
  });
424480
424480
 
424481
424481
  // src/cli/helpers/reflection-launcher.ts
424482
+ var exports_reflection_launcher = {};
424483
+ __export(exports_reflection_launcher, {
424484
+ tryReserveReflectionLaunch: () => tryReserveReflectionLaunch,
424485
+ shouldRunQueuedReflectionLaunch: () => shouldRunQueuedReflectionLaunch,
424486
+ releaseReflectionLaunch: () => releaseReflectionLaunch,
424487
+ queuePendingReflectionWorktreeReminders: () => queuePendingReflectionWorktreeReminders,
424488
+ prepareReflectionMemoryWorktreeLaunch: () => prepareReflectionMemoryWorktreeLaunch,
424489
+ launchReflectionSubagent: () => launchReflectionSubagent,
424490
+ formatReflectionIntegrationReminder: () => formatReflectionIntegrationReminder,
424491
+ finalizeReflectionMemoryWorktreeLaunch: () => finalizeReflectionMemoryWorktreeLaunch,
424492
+ REFLECTION_AGENT_ID_WAIT_MS: () => REFLECTION_AGENT_ID_WAIT_MS,
424493
+ AUTO_REFLECTION_DESCRIPTION: () => AUTO_REFLECTION_DESCRIPTION
424494
+ });
424482
424495
  function drainReflectionTelemetry() {
424483
424496
  telemetry.drain().catch((error54) => {
424484
424497
  debugWarn("telemetry", `Failed to flush reflection telemetry: ${error54 instanceof Error ? error54.message : String(error54)}`);
@@ -444764,6 +444777,37 @@ function trackListenerError3(errorType, error54, context3) {
444764
444777
  context: context3
444765
444778
  });
444766
444779
  }
444780
+ async function awaitMemoryPushBounded(commandName, agentId, memoryRoot) {
444781
+ const { syncPendingMemoryCommitsAfterTurn: syncPendingMemoryCommitsAfterTurn2 } = await Promise.resolve().then(() => (init_memory_git(), exports_memory_git));
444782
+ const syncPromise = syncPendingMemoryCommitsAfterTurn2(agentId, {
444783
+ memoryDir: memoryRoot
444784
+ });
444785
+ const warnOnFailure = (result) => {
444786
+ if (result.status === "push_failed" || result.status === "conflict") {
444787
+ console.warn(`[${commandName}] push failed for ${agentId}: ${result.summary}`);
444788
+ }
444789
+ };
444790
+ let timer;
444791
+ const capPromise = new Promise((resolve31) => {
444792
+ timer = setTimeout(() => resolve31("timed_out"), MEMORY_PUSH_AWAIT_CAP_MS);
444793
+ });
444794
+ try {
444795
+ const result = await Promise.race([syncPromise, capPromise]);
444796
+ if (result === "timed_out") {
444797
+ console.warn(`[${commandName}] push still in flight after ${MEMORY_PUSH_AWAIT_CAP_MS}ms for ${agentId}; responding now, push continues in background`);
444798
+ syncPromise.then(warnOnFailure).catch((err) => {
444799
+ console.warn(`[${commandName}] background push failed for ${agentId}:`, err instanceof Error ? err.message : err);
444800
+ });
444801
+ return;
444802
+ }
444803
+ warnOnFailure(result);
444804
+ } catch (err) {
444805
+ console.warn(`[${commandName}] push failed for ${agentId}:`, err instanceof Error ? err.message : err);
444806
+ } finally {
444807
+ if (timer)
444808
+ clearTimeout(timer);
444809
+ }
444810
+ }
444767
444811
  async function handleListMemoryCommand(parsed, socket, safeSocketSend, overrides = {}) {
444768
444812
  try {
444769
444813
  const {
@@ -445215,12 +445259,7 @@ function handleMemoryProtocolCommand(parsed, context3) {
445215
445259
  ...memorySyncMode ? { syncMode: memorySyncMode } : {}
445216
445260
  });
445217
445261
  if (commitResult.committed && !memorySyncMode) {
445218
- const { syncPendingMemoryCommitsAfterTurn: syncPendingMemoryCommitsAfterTurn2 } = await Promise.resolve().then(() => (init_memory_git(), exports_memory_git));
445219
- syncPendingMemoryCommitsAfterTurn2(parsed.agent_id, {
445220
- memoryDir: memoryRoot
445221
- }).catch((err) => {
445222
- console.warn(`[write_memory_file] background push failed for ${parsed.agent_id}:`, err instanceof Error ? err.message : err);
445223
- });
445262
+ await awaitMemoryPushBounded("write_memory_file", parsed.agent_id, memoryRoot);
445224
445263
  }
445225
445264
  if (commitResult.committed) {
445226
445265
  safeSocketSend(socket, {
@@ -445333,12 +445372,7 @@ function handleMemoryProtocolCommand(parsed, context3) {
445333
445372
  ...memorySyncMode ? { syncMode: memorySyncMode } : {}
445334
445373
  });
445335
445374
  if (commitResult.committed && !memorySyncMode) {
445336
- const { syncPendingMemoryCommitsAfterTurn: syncPendingMemoryCommitsAfterTurn2 } = await Promise.resolve().then(() => (init_memory_git(), exports_memory_git));
445337
- syncPendingMemoryCommitsAfterTurn2(parsed.agent_id, {
445338
- memoryDir: memoryRoot
445339
- }).catch((err) => {
445340
- console.warn(`[delete_memory_file] background push failed for ${parsed.agent_id}:`, err instanceof Error ? err.message : err);
445341
- });
445375
+ await awaitMemoryPushBounded("delete_memory_file", parsed.agent_id, memoryRoot);
445342
445376
  }
445343
445377
  if (commitResult.committed) {
445344
445378
  safeSocketSend(socket, {
@@ -445366,7 +445400,7 @@ function handleMemoryProtocolCommand(parsed, context3) {
445366
445400
  }
445367
445401
  return false;
445368
445402
  }
445369
- var WIKI_LINK_REGEX, IMAGE_MIME_BY_EXTENSION;
445403
+ var WIKI_LINK_REGEX, IMAGE_MIME_BY_EXTENSION, MEMORY_PUSH_AWAIT_CAP_MS = 8000;
445370
445404
  var init_memory6 = __esm(async () => {
445371
445405
  init_error_reporting();
445372
445406
  await init_protocol_inbound();
@@ -485078,7 +485112,7 @@ var init_ToolCallMessageRich = __esm(async () => {
485078
485112
  let shellSemanticKind = null;
485079
485113
  let hasShellDescription = false;
485080
485114
  if (!isQuestionTool(rawName)) {
485081
- const parseArgs14 = () => {
485115
+ const parseArgs15 = () => {
485082
485116
  if (!argsText.trim()) {
485083
485117
  return { formatted: null, parseable: true };
485084
485118
  }
@@ -485092,7 +485126,7 @@ var init_ToolCallMessageRich = __esm(async () => {
485092
485126
  return { formatted: null, parseable: false };
485093
485127
  }
485094
485128
  };
485095
- const { formatted, parseable } = parseArgs14();
485129
+ const { formatted, parseable } = parseArgs15();
485096
485130
  const argsComplete = parseable || line.phase === "running" || line.phase === "finished" || !isStreaming;
485097
485131
  if (!argsComplete) {
485098
485132
  args = "(…)";
@@ -487309,7 +487343,7 @@ function updateCommandResult(buffersRef, refreshDerived, cmdId, input, output, s
487309
487343
  buffersRef.current.byId.set(cmdId, line);
487310
487344
  refreshDerived();
487311
487345
  }
487312
- function parseArgs14(msg) {
487346
+ function parseArgs15(msg) {
487313
487347
  return msg.trim().split(/\s+/).filter(Boolean);
487314
487348
  }
487315
487349
  function formatConnectUsage() {
@@ -487664,7 +487698,7 @@ ${formatBedrockUsage2()}`, false);
487664
487698
  }
487665
487699
  }
487666
487700
  async function handleConnect(ctx, msg) {
487667
- const parts = parseArgs14(msg);
487701
+ const parts = parseArgs15(msg);
487668
487702
  const providerToken = parts[1];
487669
487703
  if (!providerToken) {
487670
487704
  addCommandResult(ctx.buffersRef, ctx.refreshDerived, msg, formatConnectUsage(), false);
@@ -526575,12 +526609,195 @@ async function runCronSubcommand(argv) {
526575
526609
  }
526576
526610
  }
526577
526611
 
526612
+ // src/cli/subcommands/dream.ts
526613
+ init_settings_manager();
526614
+ import { parseArgs as parseArgs7 } from "node:util";
526615
+ function printUsage5() {
526616
+ console.log(`
526617
+ Usage:
526618
+ letta dream [options]
526619
+
526620
+ Run a memory reflection pass for an agent and wait for it to finish.
526621
+
526622
+ Options:
526623
+ --memory <agent-id> Agent whose memory to refine (default:
526624
+ $LETTA_AGENT_ID, then the last-used agent)
526625
+ --from <conv-id> Conversation transcript to reflect on
526626
+ (default: the agent's primary "default" history)
526627
+ --to <spec> Render target (reserved; not yet implemented)
526628
+ --effort <level> Reflection effort (reserved; not yet implemented)
526629
+ --timeout <seconds> Fail if the reflection pass has not completed
526630
+ in this many seconds (default: 1500)
526631
+ -i, --instruction <text> Additional instruction for the reflection pass
526632
+ --json Emit machine-readable JSON output
526633
+ -h, --help Show this help
526634
+
526635
+ Notes:
526636
+ - Requires the memory filesystem to be enabled for the agent.
526637
+ - Processes conversation transcript content recorded since the last
526638
+ successful reflection; exits 0 with no action when nothing is new.
526639
+ `.trim());
526640
+ }
526641
+ var DREAM_OPTIONS = {
526642
+ help: { type: "boolean", short: "h" },
526643
+ memory: { type: "string" },
526644
+ from: { type: "string" },
526645
+ to: { type: "string" },
526646
+ effort: { type: "string" },
526647
+ timeout: { type: "string" },
526648
+ instruction: { type: "string", short: "i" },
526649
+ json: { type: "boolean" }
526650
+ };
526651
+ var DEFAULT_TIMEOUT_SECONDS = 1500;
526652
+ function parseDreamArgs(argv) {
526653
+ return parseArgs7({
526654
+ args: argv,
526655
+ options: DREAM_OPTIONS,
526656
+ strict: true,
526657
+ allowPositionals: true
526658
+ });
526659
+ }
526660
+ function emitJson(payload) {
526661
+ console.log(JSON.stringify(payload));
526662
+ }
526663
+ async function runDreamSubcommand(argv) {
526664
+ let parsed;
526665
+ try {
526666
+ parsed = parseDreamArgs(argv);
526667
+ } catch (error54) {
526668
+ const message = error54 instanceof Error ? error54.message : String(error54);
526669
+ console.error(`Error: ${message}`);
526670
+ printUsage5();
526671
+ return 1;
526672
+ }
526673
+ const [action3] = parsed.positionals;
526674
+ if (parsed.values.help || action3 === "help") {
526675
+ printUsage5();
526676
+ return 0;
526677
+ }
526678
+ if (action3) {
526679
+ console.error(`Unknown argument: ${action3}`);
526680
+ printUsage5();
526681
+ return 1;
526682
+ }
526683
+ const asJson = Boolean(parsed.values.json);
526684
+ if (!asJson && (parsed.values.to || parsed.values.effort)) {
526685
+ console.error("Note: --to and --effort are accepted but not yet implemented; ignoring.");
526686
+ }
526687
+ let timeoutSeconds = DEFAULT_TIMEOUT_SECONDS;
526688
+ if (parsed.values.timeout) {
526689
+ timeoutSeconds = Number.parseInt(parsed.values.timeout, 10);
526690
+ if (!Number.isFinite(timeoutSeconds) || timeoutSeconds <= 0) {
526691
+ console.error(`Error: Invalid --timeout "${parsed.values.timeout}"`);
526692
+ return 1;
526693
+ }
526694
+ }
526695
+ await settingsManager.initialize();
526696
+ const agentId = parsed.values.memory || process.env.LETTA_AGENT_ID || settingsManager.getGlobalLastAgentId() || "";
526697
+ if (!agentId) {
526698
+ console.error("Missing agent id. Pass --memory <agent-id>, set LETTA_AGENT_ID, or run a session first.");
526699
+ return 1;
526700
+ }
526701
+ if (!settingsManager.isMemfsEnabled(agentId)) {
526702
+ if (asJson) {
526703
+ emitJson({ launched: false, reason: "memfs_disabled", agentId });
526704
+ } else {
526705
+ console.error(`Memory filesystem is not enabled for ${agentId}. Nothing to do.`);
526706
+ }
526707
+ return 1;
526708
+ }
526709
+ const conversationId = parsed.values.from || "default";
526710
+ const { launchReflectionSubagent: launchReflectionSubagent2 } = await Promise.resolve().then(() => (init_reflection_launcher(), exports_reflection_launcher));
526711
+ let resolveCompletion;
526712
+ const completion = new Promise((resolve31) => {
526713
+ resolveCompletion = resolve31;
526714
+ });
526715
+ const result = await launchReflectionSubagent2({
526716
+ agentId,
526717
+ conversationId,
526718
+ memfsEnabled: true,
526719
+ triggerSource: "manual",
526720
+ description: "Reflect on recent conversations",
526721
+ instruction: parsed.values.instruction,
526722
+ recompileByConversation: new Map,
526723
+ recompileQueuedByConversation: new Set,
526724
+ onCompletionMessage: (message, completionResult) => {
526725
+ resolveCompletion({
526726
+ success: completionResult.success,
526727
+ error: completionResult.error,
526728
+ message
526729
+ });
526730
+ },
526731
+ feedbackContext: {
526732
+ surface: "letta_code_cli"
526733
+ }
526734
+ });
526735
+ if (!result.launched) {
526736
+ if (asJson) {
526737
+ emitJson({ launched: false, reason: result.reason, agentId });
526738
+ return result.reason === "no_payload" ? 0 : 1;
526739
+ }
526740
+ switch (result.reason) {
526741
+ case "no_payload":
526742
+ console.log("No new transcript content to process.");
526743
+ return 0;
526744
+ case "already_active":
526745
+ console.error("A reflection pass is already running for this agent.");
526746
+ return 1;
526747
+ case "memfs_disabled":
526748
+ console.error(`Memory filesystem is not enabled for ${agentId}.`);
526749
+ return 1;
526750
+ default: {
526751
+ const message = result.error instanceof Error ? result.error.message : String(result.error ?? "Unknown error");
526752
+ console.error(`Failed to start reflection pass: ${message}`);
526753
+ return 1;
526754
+ }
526755
+ }
526756
+ }
526757
+ if (!asJson) {
526758
+ console.log(`Processing transcript: ${result.payloadPath}`);
526759
+ }
526760
+ let timedOut = false;
526761
+ let timeoutHandle;
526762
+ const timeout = new Promise((resolve31) => {
526763
+ timeoutHandle = setTimeout(() => {
526764
+ timedOut = true;
526765
+ resolve31({
526766
+ success: false,
526767
+ error: "timeout",
526768
+ message: `Reflection pass did not complete within ${timeoutSeconds}s.`
526769
+ });
526770
+ }, timeoutSeconds * 1000);
526771
+ });
526772
+ const outcome = await Promise.race([completion, timeout]);
526773
+ if (timeoutHandle !== undefined) {
526774
+ clearTimeout(timeoutHandle);
526775
+ }
526776
+ if (asJson) {
526777
+ emitJson({
526778
+ launched: true,
526779
+ success: outcome.success,
526780
+ message: outcome.message,
526781
+ ...outcome.error ? { error: outcome.error } : {},
526782
+ ...timedOut ? { timedOut: true } : {},
526783
+ agentId,
526784
+ conversationId,
526785
+ transcriptPath: result.payloadPath
526786
+ });
526787
+ } else if (outcome.success) {
526788
+ console.log(outcome.message);
526789
+ } else {
526790
+ console.error(outcome.message);
526791
+ }
526792
+ return outcome.success ? 0 : 1;
526793
+ }
526794
+
526578
526795
  // src/cli/subcommands/environments.ts
526579
526796
  init_environments2();
526580
526797
  init_settings_manager();
526581
526798
  init_version();
526582
- import { parseArgs as parseArgs7 } from "node:util";
526583
- function printUsage5() {
526799
+ import { parseArgs as parseArgs8 } from "node:util";
526800
+ function printUsage6() {
526584
526801
  console.log(`
526585
526802
  Usage:
526586
526803
  letta environments list [options]
@@ -526654,7 +526871,7 @@ var ENVIRONMENTS_OPTIONS = {
526654
526871
  "online-only": { type: "boolean" }
526655
526872
  };
526656
526873
  function parseEnvironmentsArgs(argv) {
526657
- return parseArgs7({
526874
+ return parseArgs8({
526658
526875
  args: argv,
526659
526876
  options: ENVIRONMENTS_OPTIONS,
526660
526877
  strict: true,
@@ -526668,17 +526885,17 @@ async function runEnvironmentsSubcommand(argv, deps = {}) {
526668
526885
  } catch (error54) {
526669
526886
  const message = error54 instanceof Error ? error54.message : String(error54);
526670
526887
  console.error(`Error: ${message}`);
526671
- printUsage5();
526888
+ printUsage6();
526672
526889
  return 1;
526673
526890
  }
526674
526891
  const [action3] = parsed.positionals;
526675
526892
  if (parsed.values.help || !action3 || action3 === "help") {
526676
- printUsage5();
526893
+ printUsage6();
526677
526894
  return 0;
526678
526895
  }
526679
526896
  if (action3 !== "list" && action3 !== "current") {
526680
526897
  console.error(`Unknown action: ${action3}`);
526681
- printUsage5();
526898
+ printUsage6();
526682
526899
  return 1;
526683
526900
  }
526684
526901
  await (deps.initializeSettings ?? (() => settingsManager.initialize()))();
@@ -526737,7 +526954,7 @@ await __promiseAll([
526737
526954
  ]);
526738
526955
  var import_react33 = __toESM(require_react(), 1);
526739
526956
  import { hostname as hostname6 } from "node:os";
526740
- import { parseArgs as parseArgs8 } from "node:util";
526957
+ import { parseArgs as parseArgs9 } from "node:util";
526741
526958
  import { MessageChannel as MessageChannel2 } from "node:worker_threads";
526742
526959
 
526743
526960
  // src/cli/components/ListenerStatusUI.tsx
@@ -527120,7 +527337,7 @@ function printListenUsage() {
527120
527337
  async function runListenSubcommand(argv) {
527121
527338
  let values2;
527122
527339
  try {
527123
- ({ values: values2 } = parseArgs8({
527340
+ ({ values: values2 } = parseArgs9({
527124
527341
  args: argv,
527125
527342
  options: LISTEN_OPTIONS,
527126
527343
  strict: true,
@@ -527480,7 +527697,7 @@ async function runListenSubcommand(argv) {
527480
527697
 
527481
527698
  // src/cli/subcommands/local-backend.ts
527482
527699
  init_paths();
527483
- import { parseArgs as parseArgs9 } from "node:util";
527700
+ import { parseArgs as parseArgs10 } from "node:util";
527484
527701
 
527485
527702
  // src/backend/local/transcript-migration.ts
527486
527703
  init_local_store();
@@ -527890,13 +528107,13 @@ var LOCAL_BACKEND_OPTIONS = {
527890
528107
  "dry-run": { type: "boolean" }
527891
528108
  };
527892
528109
  function parseLocalBackendArgs(argv) {
527893
- return parseArgs9({
528110
+ return parseArgs10({
527894
528111
  args: argv,
527895
528112
  options: LOCAL_BACKEND_OPTIONS,
527896
528113
  strict: true
527897
528114
  });
527898
528115
  }
527899
- function printUsage6() {
528116
+ function printUsage7() {
527900
528117
  console.log(`
527901
528118
  Usage:
527902
528119
  letta local-backend migrate-transcripts [--storage-dir <path>] [--dry-run]
@@ -527909,12 +528126,12 @@ before it is replaced.
527909
528126
  async function runLocalBackendSubcommand(argv) {
527910
528127
  const [command, ...rest3] = argv;
527911
528128
  if (!command || command === "help" || command === "--help" || command === "-h") {
527912
- printUsage6();
528129
+ printUsage7();
527913
528130
  return command ? 0 : 1;
527914
528131
  }
527915
528132
  if (command !== "migrate-transcripts") {
527916
528133
  console.error(`Unknown local-backend command: ${command}`);
527917
- printUsage6();
528134
+ printUsage7();
527918
528135
  return 1;
527919
528136
  }
527920
528137
  let parsed;
@@ -527923,11 +528140,11 @@ async function runLocalBackendSubcommand(argv) {
527923
528140
  } catch (error54) {
527924
528141
  const message = error54 instanceof Error ? error54.message : String(error54);
527925
528142
  console.error(`Error: ${message}`);
527926
- printUsage6();
528143
+ printUsage7();
527927
528144
  return 1;
527928
528145
  }
527929
528146
  if (parsed.values.help) {
527930
- printUsage6();
528147
+ printUsage7();
527931
528148
  return 0;
527932
528149
  }
527933
528150
  const storageDir = parsed.values["storage-dir"] ?? getLocalBackendStorageDir();
@@ -527946,7 +528163,7 @@ init_paths();
527946
528163
  import { cpSync, existsSync as existsSync49, mkdirSync as mkdirSync33, rmSync as rmSync10, statSync as statSync17 } from "node:fs";
527947
528164
  import { readdir as readdir12 } from "node:fs/promises";
527948
528165
  import { dirname as dirname27, join as join53 } from "node:path";
527949
- import { parseArgs as parseArgs10 } from "node:util";
528166
+ import { parseArgs as parseArgs11 } from "node:util";
527950
528167
 
527951
528168
  // src/cli/subcommands/memory-tokens.ts
527952
528169
  init_system_prompt_size();
@@ -528027,7 +528244,7 @@ async function runMemoryTokensAction(options3) {
528027
528244
  }
528028
528245
 
528029
528246
  // src/cli/subcommands/memory.ts
528030
- function printUsage7() {
528247
+ function printUsage8() {
528031
528248
  console.log(`
528032
528249
  Usage:
528033
528250
  letta memory status [--agent <id>]
@@ -528072,7 +528289,7 @@ var MEMORY_OPTIONS = {
528072
528289
  quiet: { type: "boolean" }
528073
528290
  };
528074
528291
  function parseMemoryArgs(argv) {
528075
- return parseArgs10({
528292
+ return parseArgs11({
528076
528293
  args: argv,
528077
528294
  options: MEMORY_OPTIONS,
528078
528295
  strict: true,
@@ -528133,12 +528350,12 @@ async function runMemorySubcommand(argv) {
528133
528350
  } catch (error54) {
528134
528351
  const message = error54 instanceof Error ? error54.message : String(error54);
528135
528352
  console.error(`Error: ${message}`);
528136
- printUsage7();
528353
+ printUsage8();
528137
528354
  return 1;
528138
528355
  }
528139
528356
  const [action3] = parsed.positionals;
528140
528357
  if (parsed.values.help || !action3 || action3 === "help") {
528141
- printUsage7();
528358
+ printUsage8();
528142
528359
  return 0;
528143
528360
  }
528144
528361
  const agentId = getAgentId4(parsed.values.agent, parsed.values["agent-id"]);
@@ -528281,7 +528498,7 @@ async function runMemorySubcommand(argv) {
528281
528498
  return 1;
528282
528499
  }
528283
528500
  console.error(`Unknown action: ${action3}`);
528284
- printUsage7();
528501
+ printUsage8();
528285
528502
  return 1;
528286
528503
  }
528287
528504
 
@@ -528291,8 +528508,8 @@ init_message_search();
528291
528508
  init_settings_manager();
528292
528509
  import { writeFile as writeFile15 } from "node:fs/promises";
528293
528510
  import { resolve as resolve31 } from "node:path";
528294
- import { parseArgs as parseArgs11 } from "node:util";
528295
- function printUsage8() {
528511
+ import { parseArgs as parseArgs12 } from "node:util";
528512
+ function printUsage9() {
528296
528513
  console.log(`
528297
528514
  Usage:
528298
528515
  letta messages search --query <text> [options]
@@ -528396,7 +528613,7 @@ var MESSAGES_OPTIONS = {
528396
528613
  output: { type: "string" }
528397
528614
  };
528398
528615
  function parseMessagesArgs(argv) {
528399
- return parseArgs11({
528616
+ return parseArgs12({
528400
528617
  args: argv,
528401
528618
  options: MESSAGES_OPTIONS,
528402
528619
  strict: true,
@@ -528410,12 +528627,12 @@ async function runMessagesSubcommand(argv, deps = {}) {
528410
528627
  } catch (error54) {
528411
528628
  const message = error54 instanceof Error ? error54.message : String(error54);
528412
528629
  console.error(`Error: ${message}`);
528413
- printUsage8();
528630
+ printUsage9();
528414
528631
  return 1;
528415
528632
  }
528416
528633
  const [action3] = parsed.positionals;
528417
528634
  if (parsed.values.help || !action3 || action3 === "help") {
528418
- printUsage8();
528635
+ printUsage9();
528419
528636
  return 0;
528420
528637
  }
528421
528638
  try {
@@ -528657,7 +528874,7 @@ async function runMessagesSubcommand(argv, deps = {}) {
528657
528874
  return 1;
528658
528875
  }
528659
528876
  console.error(`Unknown action: ${action3}`);
528660
- printUsage8();
528877
+ printUsage9();
528661
528878
  return 1;
528662
528879
  }
528663
528880
 
@@ -528665,7 +528882,7 @@ async function runMessagesSubcommand(argv, deps = {}) {
528665
528882
  init_memory_filesystem2();
528666
528883
  await init_mod_engine();
528667
528884
  import { dirname as dirname28, join as join55 } from "node:path";
528668
- import { parseArgs as parseArgs12 } from "node:util";
528885
+ import { parseArgs as parseArgs13 } from "node:util";
528669
528886
 
528670
528887
  // src/mods/package-installer.ts
528671
528888
  init_file_extensions();
@@ -529680,7 +529897,7 @@ var MODS_PACKAGE_OPTIONS = {
529680
529897
  out: { type: "string" }
529681
529898
  };
529682
529899
  var RELOAD_HINT = "Run /reload in active sessions for changes to take effect.";
529683
- function printUsage9() {
529900
+ function printUsage10() {
529684
529901
  console.log(`
529685
529902
  Usage:
529686
529903
  letta mods list [--agent <id>]
@@ -529697,7 +529914,7 @@ Options:
529697
529914
  `.trim());
529698
529915
  }
529699
529916
  function parseModsArgs(argv) {
529700
- return parseArgs12({
529917
+ return parseArgs13({
529701
529918
  args: argv,
529702
529919
  options: MODS_OPTIONS,
529703
529920
  strict: true,
@@ -529705,7 +529922,7 @@ function parseModsArgs(argv) {
529705
529922
  });
529706
529923
  }
529707
529924
  function parseModsPackageArgs(argv) {
529708
- return parseArgs12({
529925
+ return parseArgs13({
529709
529926
  args: argv,
529710
529927
  options: MODS_PACKAGE_OPTIONS,
529711
529928
  strict: true,
@@ -529803,16 +530020,16 @@ async function runList(argv, options3 = {}) {
529803
530020
  parsed = parseModsArgs(argv);
529804
530021
  } catch (error54) {
529805
530022
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
529806
- printUsage9();
530023
+ printUsage10();
529807
530024
  return 1;
529808
530025
  }
529809
530026
  if (parsed.values.help) {
529810
- printUsage9();
530027
+ printUsage10();
529811
530028
  return 0;
529812
530029
  }
529813
530030
  if (parsed.positionals.length > 0) {
529814
530031
  console.error(`Unexpected argument: ${parsed.positionals[0]}`);
529815
- printUsage9();
530032
+ printUsage10();
529816
530033
  return 1;
529817
530034
  }
529818
530035
  const agentId = getExplicitAgentId(parsed.values);
@@ -529829,27 +530046,27 @@ async function runPackageMutation(action3, argv, options3 = {}) {
529829
530046
  parsed = parseModsArgs(argv);
529830
530047
  } catch (error54) {
529831
530048
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
529832
- printUsage9();
530049
+ printUsage10();
529833
530050
  return 1;
529834
530051
  }
529835
530052
  if (parsed.values.help) {
529836
- printUsage9();
530053
+ printUsage10();
529837
530054
  return 0;
529838
530055
  }
529839
530056
  if (getExplicitAgentId(parsed.values)) {
529840
530057
  console.error(`--agent is only supported for 'letta mods list'.`);
529841
- printUsage9();
530058
+ printUsage10();
529842
530059
  return 1;
529843
530060
  }
529844
530061
  const [specifier, extra] = parsed.positionals;
529845
530062
  if (!specifier) {
529846
530063
  console.error(`Missing package specifier.`);
529847
- printUsage9();
530064
+ printUsage10();
529848
530065
  return 1;
529849
530066
  }
529850
530067
  if (extra) {
529851
530068
  console.error(`Unexpected argument: ${extra}`);
529852
- printUsage9();
530069
+ printUsage10();
529853
530070
  return 1;
529854
530071
  }
529855
530072
  try {
@@ -529875,27 +530092,27 @@ async function runPackageUpdate(argv, options3 = {}) {
529875
530092
  parsed = parseModsArgs(argv);
529876
530093
  } catch (error54) {
529877
530094
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
529878
- printUsage9();
530095
+ printUsage10();
529879
530096
  return 1;
529880
530097
  }
529881
530098
  if (parsed.values.help) {
529882
- printUsage9();
530099
+ printUsage10();
529883
530100
  return 0;
529884
530101
  }
529885
530102
  if (getExplicitAgentId(parsed.values)) {
529886
530103
  console.error(`--agent is not supported for 'letta mods update'.`);
529887
- printUsage9();
530104
+ printUsage10();
529888
530105
  return 1;
529889
530106
  }
529890
530107
  const [specifier, extra] = parsed.positionals;
529891
530108
  if (!specifier) {
529892
530109
  console.error(`Missing package specifier.`);
529893
- printUsage9();
530110
+ printUsage10();
529894
530111
  return 1;
529895
530112
  }
529896
530113
  if (extra) {
529897
530114
  console.error(`Unexpected argument: ${extra}`);
529898
- printUsage9();
530115
+ printUsage10();
529899
530116
  return 1;
529900
530117
  }
529901
530118
  try {
@@ -529917,33 +530134,33 @@ async function runPackageScaffold(argv) {
529917
530134
  parsed = parseModsPackageArgs(argv);
529918
530135
  } catch (error54) {
529919
530136
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
529920
- printUsage9();
530137
+ printUsage10();
529921
530138
  return 1;
529922
530139
  }
529923
530140
  if (parsed.values.help) {
529924
- printUsage9();
530141
+ printUsage10();
529925
530142
  return 0;
529926
530143
  }
529927
530144
  if (getExplicitAgentId(parsed.values)) {
529928
530145
  console.error(`--agent is not supported for 'letta mods package'.`);
529929
- printUsage9();
530146
+ printUsage10();
529930
530147
  return 1;
529931
530148
  }
529932
530149
  const [sourceFile, extra] = parsed.positionals;
529933
530150
  if (!sourceFile) {
529934
530151
  console.error(`Missing mod file.`);
529935
- printUsage9();
530152
+ printUsage10();
529936
530153
  return 1;
529937
530154
  }
529938
530155
  if (extra) {
529939
530156
  console.error(`Unexpected argument: ${extra}`);
529940
- printUsage9();
530157
+ printUsage10();
529941
530158
  return 1;
529942
530159
  }
529943
530160
  const packageName = parsed.values.name;
529944
530161
  if (typeof packageName !== "string" || !packageName.trim()) {
529945
530162
  console.error(`Missing required --name <package-name>.`);
529946
- printUsage9();
530163
+ printUsage10();
529947
530164
  return 1;
529948
530165
  }
529949
530166
  try {
@@ -529965,7 +530182,7 @@ async function runPackageScaffold(argv) {
529965
530182
  async function runModsSubcommand(argv, options3 = {}) {
529966
530183
  const [action3, ...rest3] = argv;
529967
530184
  if (!action3 || action3 === "help" || action3 === "--help" || action3 === "-h") {
529968
- printUsage9();
530185
+ printUsage10();
529969
530186
  return 0;
529970
530187
  }
529971
530188
  switch (action3) {
@@ -529981,7 +530198,7 @@ async function runModsSubcommand(argv, options3 = {}) {
529981
530198
  return runPackageMutation(action3, rest3, options3);
529982
530199
  default:
529983
530200
  console.error(`Unknown mods action: ${action3}`);
529984
- printUsage9();
530201
+ printUsage10();
529985
530202
  return 1;
529986
530203
  }
529987
530204
  }
@@ -530019,7 +530236,7 @@ async function runSetup(options3 = {}) {
530019
530236
 
530020
530237
  // src/cli/subcommands/setup.ts
530021
530238
  init_settings_manager();
530022
- function printUsage10() {
530239
+ function printUsage11() {
530023
530240
  console.log(`
530024
530241
  Usage:
530025
530242
  letta setup
@@ -530030,12 +530247,12 @@ Re-run the interactive setup menu to choose local mode or Login to Constellation
530030
530247
  async function runSetupSubcommand(argv) {
530031
530248
  const [arg, ...rest3] = argv;
530032
530249
  if (arg === "help" || arg === "--help" || arg === "-h") {
530033
- printUsage10();
530250
+ printUsage11();
530034
530251
  return 0;
530035
530252
  }
530036
530253
  if (arg || rest3.length > 0) {
530037
530254
  console.error(`Unexpected arguments: ${[arg, ...rest3].filter(Boolean).join(" ")}`);
530038
- printUsage10();
530255
+ printUsage11();
530039
530256
  return 1;
530040
530257
  }
530041
530258
  await settingsManager.initialize();
@@ -530056,14 +530273,14 @@ import {
530056
530273
  import { mkdir as mkdir13, readdir as readdir13 } from "node:fs/promises";
530057
530274
  import { tmpdir as tmpdir9 } from "node:os";
530058
530275
  import { basename as basename24, dirname as dirname29, join as join56, normalize as normalize5, resolve as resolve32, sep as sep6 } from "node:path";
530059
- import { parseArgs as parseArgs13, TextDecoder as TextDecoder2, TextEncoder as TextEncoder2 } from "node:util";
530276
+ import { parseArgs as parseArgs14, TextDecoder as TextDecoder2, TextEncoder as TextEncoder2 } from "node:util";
530060
530277
  init_paths2();
530061
530278
  var HERMES_REPO_URL = "https://github.com/NousResearch/hermes-agent.git";
530062
530279
  var HERMES_OPTIONAL_SKILLS_DIR = "optional-skills";
530063
530280
  var MAX_DIRECT_SKILL_FILE_BYTES = 1024 * 1024;
530064
530281
  var CLAWHUB_API_BASE_URL = "https://clawhub.ai/api/v1";
530065
530282
  var activeAgentPromptStatus = null;
530066
- function printUsage11() {
530283
+ function printUsage12() {
530067
530284
  console.log(`
530068
530285
  Usage:
530069
530286
  letta install <thing> [--agent <id> | -n <agent name>] [--force]
@@ -530097,7 +530314,7 @@ var SKILLS_OPTIONS = {
530097
530314
  force: { type: "boolean" }
530098
530315
  };
530099
530316
  function parseSkillsArgs(argv) {
530100
- return parseArgs13({
530317
+ return parseArgs14({
530101
530318
  args: argv,
530102
530319
  options: SKILLS_OPTIONS,
530103
530320
  strict: true,
@@ -530745,17 +530962,17 @@ async function runInstall(argv, options3 = {}) {
530745
530962
  parsed = parseSkillsArgs(argv);
530746
530963
  } catch (error54) {
530747
530964
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
530748
- printUsage11();
530965
+ printUsage12();
530749
530966
  return 1;
530750
530967
  }
530751
530968
  const [specifier] = parsed.positionals;
530752
530969
  if (parsed.values.help || !specifier || specifier === "help") {
530753
- printUsage11();
530970
+ printUsage12();
530754
530971
  return 0;
530755
530972
  }
530756
530973
  if (parsed.positionals.length > 1) {
530757
530974
  console.error(`Unexpected argument: ${parsed.positionals[1]}`);
530758
- printUsage11();
530975
+ printUsage12();
530759
530976
  return 1;
530760
530977
  }
530761
530978
  if (specifier.startsWith("npm:")) {
@@ -530846,16 +531063,16 @@ async function runList2(argv) {
530846
531063
  parsed = parseSkillsArgs(argv);
530847
531064
  } catch (error54) {
530848
531065
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
530849
- printUsage11();
531066
+ printUsage12();
530850
531067
  return 1;
530851
531068
  }
530852
531069
  if (parsed.values.help) {
530853
- printUsage11();
531070
+ printUsage12();
530854
531071
  return 0;
530855
531072
  }
530856
531073
  if (parsed.positionals.length > 0) {
530857
531074
  console.error(`Unexpected argument: ${parsed.positionals[0]}`);
530858
- printUsage11();
531075
+ printUsage12();
530859
531076
  return 1;
530860
531077
  }
530861
531078
  try {
@@ -530876,17 +531093,17 @@ async function runDelete(argv) {
530876
531093
  parsed = parseSkillsArgs(argv);
530877
531094
  } catch (error54) {
530878
531095
  console.error(`Error: ${error54 instanceof Error ? error54.message : String(error54)}`);
530879
- printUsage11();
531096
+ printUsage12();
530880
531097
  return 1;
530881
531098
  }
530882
531099
  const [skillName] = parsed.positionals;
530883
531100
  if (parsed.values.help || !skillName || skillName === "help") {
530884
- printUsage11();
531101
+ printUsage12();
530885
531102
  return 0;
530886
531103
  }
530887
531104
  if (parsed.positionals.length > 1) {
530888
531105
  console.error(`Unexpected argument: ${parsed.positionals[1]}`);
530889
- printUsage11();
531106
+ printUsage12();
530890
531107
  return 1;
530891
531108
  }
530892
531109
  const agentId = getExplicitAgentId2(parsed.values);
@@ -530926,11 +531143,11 @@ async function runSkillsSubcommand(argv) {
530926
531143
  case "help":
530927
531144
  case "--help":
530928
531145
  case "-h":
530929
- printUsage11();
531146
+ printUsage12();
530930
531147
  return 0;
530931
531148
  default:
530932
531149
  console.error(`Unknown action: ${action3}`);
530933
- printUsage11();
531150
+ printUsage12();
530934
531151
  return 1;
530935
531152
  }
530936
531153
  }
@@ -530952,6 +531169,7 @@ function subcommandNeedsEarlyBackendMode(command) {
530952
531169
  case "app-server":
530953
531170
  case "agents":
530954
531171
  case "connect":
531172
+ case "dream":
530955
531173
  case "environments":
530956
531174
  case "envs":
530957
531175
  case "install":
@@ -531007,6 +531225,8 @@ async function runSubcommand(argv) {
531007
531225
  return runSkillsSubcommand(rest3);
531008
531226
  case "cron":
531009
531227
  return runCronSubcommand(rest3);
531228
+ case "dream":
531229
+ return runDreamSubcommand(rest3);
531010
531230
  case "channels":
531011
531231
  return runChannelsSubcommand(rest3);
531012
531232
  case "local-backend":
@@ -534387,4 +534607,4 @@ Error during initialization: ${message}`);
534387
534607
  }
534388
534608
  main2();
534389
534609
 
534390
- //# debugId=FC52DBBEC943656E64756E2164756E21
534610
+ //# debugId=03505A9DA7A1B9DB64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.27.26",
3
+ "version": "0.27.27",
4
4
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.0",