@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.
- package/dist/agent-presets.js +32 -5
- package/dist/agent-presets.js.map +2 -2
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/types/types/teleport-protocol.d.ts +1 -0
- package/dist/types/types/teleport-protocol.d.ts.map +1 -1
- package/letta.js +46 -17
- package/package.json +1 -1
|
@@ -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;
|
|
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.
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
467924
|
+
currentTeleportId: teleportId
|
|
467896
467925
|
});
|
|
467897
467926
|
const scopedRuntime2 = getOrCreateScopedRuntime2(runtime, parsed.runtime.agent_id, parsed.runtime.conversation_id);
|
|
467898
|
-
const acceptedKey = `teleport:${
|
|
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:
|
|
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.
|
|
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=
|
|
563966
|
+
//# debugId=5766FF824191732664756E2164756E21
|
package/package.json
CHANGED