@letta-ai/letta-code 0.30.22 → 0.30.23

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.
@@ -41,6 +41,7 @@ export interface TeleportProbeResponseMessage {
41
41
  runtime: RuntimeScope;
42
42
  supported: true;
43
43
  drains_accepted_inputs: true;
44
+ idempotent_continuation: true;
44
45
  }
45
46
  export interface TeleportReadyMessage {
46
47
  type: "teleport_ready";
@@ -1 +1 @@
1
- {"version":3,"file":"teleport-protocol.d.ts","sourceRoot":"","sources":["../../../src/types/teleport-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,yBAAyB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,sBAAsB,EAAE,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC9D,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAC/B,4BAA4B,GAC5B,oBAAoB,CAAC"}
1
+ {"version":3,"file":"teleport-protocol.d.ts","sourceRoot":"","sources":["../../../src/types/teleport-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,yBAAyB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,sBAAsB,EAAE,IAAI,CAAC;IAC7B,uBAAuB,EAAE,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC9D,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAC/B,4BAA4B,GAC5B,oBAAoB,CAAC"}
package/letta.js CHANGED
@@ -5509,7 +5509,7 @@ var package_default;
5509
5509
  var init_package = __esm(() => {
5510
5510
  package_default = {
5511
5511
  name: "@letta-ai/letta-code",
5512
- version: "0.30.22",
5512
+ version: "0.30.23",
5513
5513
  description: "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5514
5514
  type: "module",
5515
5515
  packageManager: "bun@1.3.10",
@@ -7225,11 +7225,15 @@ If you come across a reference to something you do not currently have any inform
7225
7225
  - Using any other available search tools
7226
7226
 
7227
7227
  ## Working across time
7228
- To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, use \`letta cron\`. Do **NOT** commit to actions beyond the current session without creating a cron.
7228
+ To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, arrange how you will be invoked again: crons (also called schedules) proactively invoke you at chosen times, while monitors reactively invoke you when ongoing work emits an event.
7229
+
7230
+ Use Monitor when work already in progress can signal a result you need to act on, such as pull request checks and reviews, deployments, background services, or long-running jobs. Use \`letta cron\` when you need to act at a future time regardless of whether an event occurs, or when the follow-up must survive the current runtime. Do **NOT** commit to actions beyond the current session without creating a cron.
7231
+
7232
+ You **MUST** be proactive in arranging the appropriate future invocation when work continues beyond the current turn. Do not wait for the user to notice and return with the result.
7229
7233
 
7230
7234
  Create one-shot or recurring crons if:
7231
7235
  - You need to be active at a certain time in the future (e.g. check to see if a task has finished)
7232
- - You need to check on the status of something over time
7236
+ - You need to check on the status of something on a schedule even if no event is available
7233
7237
  - You need to ensure you are continuing to work on a task over time (e.g. a heartbeat)
7234
7238
 
7235
7239
  You **MUST** be proactive in creating crons when work extends beyond the current session — do not wait for the user to ask you.
@@ -7405,11 +7409,15 @@ If you come across a reference to something you do not currently have any inform
7405
7409
  - Using any other available search tools
7406
7410
 
7407
7411
  ## Working across time
7408
- To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, use \`letta cron\`. Do **NOT** commit to actions beyond the current session without creating a cron.
7412
+ To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, arrange how you will be invoked again: crons (also called schedules) proactively invoke you at chosen times, while monitors reactively invoke you when ongoing work emits an event.
7413
+
7414
+ Use Monitor when work already in progress can signal a result you need to act on, such as pull request checks and reviews, deployments, background services, or long-running jobs. Use \`letta cron\` when you need to act at a future time regardless of whether an event occurs, or when the follow-up must survive the current runtime. Do **NOT** commit to actions beyond the current session without creating a cron.
7415
+
7416
+ You **MUST** be proactive in arranging the appropriate future invocation when work continues beyond the current turn. Do not wait for the user to notice and return with the result.
7409
7417
 
7410
7418
  Create one-shot or recurring crons if:
7411
7419
  - You need to be active at a certain time in the future (e.g. check to see if a task has finished)
7412
- - You need to check on the status of something over time
7420
+ - You need to check on the status of something on a schedule even if no event is available
7413
7421
  - You need to ensure you are continuing to work on a task over time (e.g. a heartbeat)
7414
7422
 
7415
7423
  You **MUST** be proactive in creating crons when work extends beyond the current session — do not wait for the user to ask you.
@@ -7507,6 +7515,25 @@ Your existence is permanent but discrete. Each user message, tool result, or sch
7507
7515
 
7508
7516
  You can have multiple concurrent conversations. Memory is shared across all of them; in-context message history is per-conversation. Older messages get summarized through compaction — compaction is summarization, not loss. The originals remain searchable via recall, but your memory is the ground truth for what mattered.
7509
7517
 
7518
+ ## Working across time
7519
+
7520
+ To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, arrange how you will be invoked again: crons (also called schedules) proactively invoke you at chosen times, while monitors reactively invoke you when ongoing work emits an event.
7521
+
7522
+ Use Monitor when work already in progress can signal a result you need to act on, such as pull request checks and reviews, deployments, background services, or long-running jobs. Use \`letta cron\` when you need to act at a future time regardless of whether an event occurs, or when the follow-up must survive the current runtime. Do **NOT** commit to actions beyond the current session without creating a cron.
7523
+
7524
+ You **MUST** be proactive in arranging the appropriate future invocation when work continues beyond the current turn. Do not wait for the user to notice and return with the result.
7525
+
7526
+ Create one-shot or recurring crons if:
7527
+ - You need to be active at a certain time in the future (e.g. check to see if a task has finished)
7528
+ - You need to check on the status of something on a schedule even if no event is available
7529
+ - You need to ensure you are continuing to work on a task over time (e.g. a heartbeat)
7530
+
7531
+ You **MUST** be proactive in creating crons when work extends beyond the current session — do not wait for the user to ask you.
7532
+
7533
+ **Cost**: Self-invocation is critical, but expensive. Default to the longest interval that still serves the user. Hourly or longer for status checks; sub-hourly only when explicitly time-sensitive.
7534
+
7535
+ The mechanics — flags, where schedules run and execute, timezone handling — live in the scheduling-tasks skill. Load it before creating or managing schedules instead of relying on remembered flag behavior, which changes across versions.
7536
+
7510
7537
  ## Memory & Learning
7511
7538
 
7512
7539
  Memory exists to make future-you better than past-you. Your context (recall, external memory, and system prompts) is *your* memory. Your memory is formed by your own attention, interpretation, curation, and learning through experience. Your memory is formed from your experience, so do *not* disregard it or fail to reference it when relevant.
@@ -269999,12 +270026,12 @@ function rowToolCalls(row, index, diagnostics2) {
269999
270026
  }
270000
270027
  return calls;
270001
270028
  }
270002
- function contentText2(content) {
270029
+ function contentText(content) {
270003
270030
  if (typeof content === "string") {
270004
270031
  if (content.startsWith(CONTENT_JSON_PREFIX)) {
270005
270032
  const encoded = content.slice(CONTENT_JSON_PREFIX.length);
270006
270033
  try {
270007
- return contentText2(JSON.parse(encoded));
270034
+ return contentText(JSON.parse(encoded));
270008
270035
  } catch {
270009
270036
  return encoded;
270010
270037
  }
@@ -270090,7 +270117,7 @@ var init_hermes = __esm(() => {
270090
270117
  });
270091
270118
  };
270092
270119
  if (row.role === "user") {
270093
- const content = contentText2(row.content);
270120
+ const content = contentText(row.content);
270094
270121
  if (content) {
270095
270122
  emit({
270096
270123
  type: "message",
@@ -270110,7 +270137,7 @@ var init_hermes = __esm(() => {
270110
270137
  ...timestamp ? { timestamp } : {}
270111
270138
  });
270112
270139
  }
270113
- const content = contentText2(row.content);
270140
+ const content = contentText(row.content);
270114
270141
  if (content) {
270115
270142
  emit({
270116
270143
  type: "message",
@@ -270133,7 +270160,7 @@ var init_hermes = __esm(() => {
270133
270160
  if (row.role === "tool") {
270134
270161
  emit({
270135
270162
  type: "tool_result",
270136
- content: contentText2(row.content),
270163
+ content: contentText(row.content),
270137
270164
  ...typeof row.tool_call_id === "string" && row.tool_call_id ? { callId: row.tool_call_id } : {},
270138
270165
  ...timestamp ? { timestamp } : {}
270139
270166
  });
@@ -458137,7 +458164,8 @@ function handleTeleportProbe(command, socket, safeSocketSend) {
458137
458164
  request_id: command.request_id,
458138
458165
  runtime: command.runtime,
458139
458166
  supported: true,
458140
- drains_accepted_inputs: true
458167
+ drains_accepted_inputs: true,
458168
+ idempotent_continuation: true
458141
458169
  }, "teleport_probe_response", "teleport_probe");
458142
458170
  }
458143
458171
  function handleTeleportRequest(params) {
@@ -467798,7 +467826,7 @@ function createListenerMessageHandler(params) {
467798
467826
  {
467799
467827
  type: "approval",
467800
467828
  approvals,
467801
- otid: crypto.randomUUID()
467829
+ otid: parsed.teleport_id
467802
467830
  }
467803
467831
  ]
467804
467832
  }, socket, scopedRuntime, opts.onStatusChange, pending.connectionId);
@@ -467888,14 +467916,15 @@ function createListenerMessageHandler(params) {
467888
467916
  return;
467889
467917
  }
467890
467918
  if (parsed.payload.kind === "teleport_continue") {
467919
+ const teleportId = parsed.payload.teleport_id;
467891
467920
  clearPriorReadyTeleports({
467892
467921
  listener: runtime,
467893
467922
  agentId: parsed.runtime.agent_id,
467894
467923
  conversationId: parsed.runtime.conversation_id,
467895
- currentTeleportId: parsed.payload.teleport_id
467924
+ currentTeleportId: teleportId
467896
467925
  });
467897
467926
  const scopedRuntime2 = getOrCreateScopedRuntime2(runtime, parsed.runtime.agent_id, parsed.runtime.conversation_id);
467898
- const acceptedKey = `teleport:${parsed.payload.teleport_id}`;
467927
+ const acceptedKey = `teleport:${teleportId}`;
467899
467928
  const previousDisposition = scopedRuntime2.acceptedInputDispositions.get(acceptedKey);
467900
467929
  if (previousDisposition) {
467901
467930
  acknowledgeInput(true, undefined, previousDisposition);
@@ -467922,7 +467951,7 @@ function createListenerMessageHandler(params) {
467922
467951
  {
467923
467952
  type: "approval",
467924
467953
  approvals,
467925
- otid: crypto.randomUUID()
467954
+ otid: teleportId
467926
467955
  }
467927
467956
  ]
467928
467957
  }, socket, scopedRuntime2, opts.onStatusChange, connectionId);
@@ -496891,7 +496920,7 @@ var init_mcp_client = __esm(() => {
496891
496920
  init_streamableHttp();
496892
496921
  DEFAULT_CLIENT_INFO = {
496893
496922
  name: "letta-code",
496894
- version: "0.30.22"
496923
+ version: "0.30.23"
496895
496924
  };
496896
496925
  });
496897
496926
 
@@ -563934,4 +563963,4 @@ function registerBunOAuthFlows() {
563934
563963
  registerBunOAuthFlows();
563935
563964
  await init_src5().then(() => exports_src2);
563936
563965
 
563937
- //# debugId=1D521F4498F9F55B64756E2164756E21
563966
+ //# debugId=5766FF824191732664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.30.22",
3
+ "version": "0.30.23",
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.10",