@mastra/memory 1.28.0 → 1.28.1-alpha.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE.md +6 -4
  3. package/dist/docs/SKILL.md +1 -1
  4. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  5. package/dist/docs/references/docs-agents-human-in-the-loop.md +2 -0
  6. package/dist/docs/references/docs-agents-networks.md +2 -0
  7. package/dist/docs/references/docs-evals-evals-with-memory.md +2 -0
  8. package/dist/docs/references/docs-guides-context-engineering.md +2 -0
  9. package/dist/docs/references/docs-harness-background-tasks.md +2 -0
  10. package/dist/docs/references/docs-harness-goals.md +2 -0
  11. package/dist/docs/references/docs-memory-memory-processors.md +2 -0
  12. package/dist/docs/references/docs-memory-message-history.md +2 -0
  13. package/dist/docs/references/docs-memory-multi-user-threads.md +2 -0
  14. package/dist/docs/references/docs-memory-observational-memory.md +2 -0
  15. package/dist/docs/references/docs-memory-overview.md +2 -0
  16. package/dist/docs/references/docs-memory-semantic-recall.md +2 -0
  17. package/dist/docs/references/docs-memory-working-memory.md +2 -0
  18. package/dist/docs/references/docs-storage.md +2 -0
  19. package/dist/docs/references/docs-subagents.md +2 -0
  20. package/dist/docs/references/integrations-channels-github.md +2 -0
  21. package/dist/docs/references/integrations-databases-aurora-dsql.md +2 -0
  22. package/dist/docs/references/integrations-databases-dynamodb.md +2 -0
  23. package/dist/docs/references/integrations-databases-elasticsearch.md +2 -0
  24. package/dist/docs/references/integrations-databases-libsql.md +2 -0
  25. package/dist/docs/references/integrations-databases-mongodb.md +2 -0
  26. package/dist/docs/references/integrations-databases-oracledb.md +2 -0
  27. package/dist/docs/references/integrations-databases-postgresql.md +2 -0
  28. package/dist/docs/references/integrations-databases-redis.md +2 -0
  29. package/dist/docs/references/integrations-databases-upstash.md +2 -0
  30. package/dist/docs/references/integrations-databases-valkey.md +2 -0
  31. package/dist/docs/references/reference-core-getMemory.md +2 -0
  32. package/dist/docs/references/reference-core-listMemory.md +2 -0
  33. package/dist/docs/references/reference-file-based-agents-memory.md +2 -0
  34. package/dist/docs/references/reference-memory-clone-utilities.md +2 -0
  35. package/dist/docs/references/reference-memory-cloneThread.md +2 -0
  36. package/dist/docs/references/reference-memory-createThread.md +2 -0
  37. package/dist/docs/references/reference-memory-getThreadById.md +2 -0
  38. package/dist/docs/references/reference-memory-listThreads.md +2 -0
  39. package/dist/docs/references/reference-memory-memory-class.md +2 -0
  40. package/dist/docs/references/reference-memory-observational-memory.md +2 -0
  41. package/dist/docs/references/reference-memory-settled.md +2 -0
  42. package/dist/docs/references/reference-memory-summarizeConversation.md +2 -0
  43. package/dist/docs/references/reference-memory-summarizeThread.md +2 -0
  44. package/dist/docs/references/reference-migrations-agentnetwork.md +2 -0
  45. package/dist/docs/references/reference-migrations-upgrade-to-v1-memory.md +2 -0
  46. package/dist/docs/references/reference-processors-token-limiter-processor.md +2 -0
  47. package/dist/docs/references/reference-vectors-libsql.md +2 -0
  48. package/dist/docs/references/reference-vectors-mongodb.md +2 -0
  49. package/dist/docs/references/reference-vectors-oracledb.md +2 -0
  50. package/dist/docs/references/reference-vectors-pg.md +2 -0
  51. package/dist/docs/references/reference-vectors-upstash.md +2 -0
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/processors/index.cjs +1 -1
  55. package/dist/processors/index.js +1 -1
  56. package/dist/processors/observational-memory/subconscious/curate.d.ts.map +1 -1
  57. package/dist/processors/observational-memory/subconscious/index.d.ts.map +1 -1
  58. package/dist/processors/observational-memory/subconscious/knowledge-write-tools.d.ts.map +1 -1
  59. package/dist/processors/observational-memory/subconscious/learn.d.ts.map +1 -1
  60. package/dist/{src-C7Ozl6Pf.cjs → src-BWo0fcaP.cjs} +24 -9
  61. package/dist/src-BWo0fcaP.cjs.map +1 -0
  62. package/dist/{src-BATJenuZ.js → src-BsEVZAdq.js} +24 -9
  63. package/dist/src-BsEVZAdq.js.map +1 -0
  64. package/package.json +7 -7
  65. package/dist/src-BATJenuZ.js.map +0 -1
  66. package/dist/src-C7Ozl6Pf.cjs.map +0 -1
@@ -16144,7 +16144,7 @@ function createKnowledgeWriteTools(memory, options) {
16144
16144
  }),
16145
16145
  knowledge_update_node: createTool({
16146
16146
  id: "knowledge_update_node",
16147
- description: "Update a visible node name or kind using optimistic concurrency.",
16147
+ description: "Update a visible node name or kind using optimistic concurrency. Provide at least one of name or kind.",
16148
16148
  inputSchema: {
16149
16149
  type: "object",
16150
16150
  properties: {
@@ -16166,11 +16166,11 @@ function createKnowledgeWriteTools(memory, options) {
16166
16166
  }
16167
16167
  },
16168
16168
  required: ["node", "expectedVersion"],
16169
- anyOf: [{ required: ["name"] }, { required: ["kind"] }],
16170
16169
  additionalProperties: false
16171
16170
  },
16172
16171
  execute: async (input) => {
16173
16172
  const value = input;
16173
+ if (value.name === void 0 && value.kind === void 0) throw new Error("knowledge_update_node requires at least one of: name, kind.");
16174
16174
  const store = await getStore(memory);
16175
16175
  const node = await store.getNode(value.node);
16176
16176
  if (!node || node.mergedInto) throw new Error(`Knowledge node not found: ${value.node}`);
@@ -16526,7 +16526,14 @@ var subconscious_exports = /* @__PURE__ */ __exportAll({
16526
16526
  });
16527
16527
  const BUILT_IN_OBSERVATION = /* @__PURE__ */ new Set(["capture", "remind"]);
16528
16528
  const BUILT_IN_REFLECTION = /* @__PURE__ */ new Set(["curate", "learn"]);
16529
- const DEFAULT_MAX_STEPS = 5;
16529
+ const DEFAULT_MAX_STEPS = 50;
16530
+ /**
16531
+ * Curation walks a worklist that can reach hundreds of records, and its completion marker is
16532
+ * fail-closed: a curator that runs out of steps advances no cursor at all. It gets a much larger
16533
+ * default budget than the other agents, which each handle a single bounded prompt.
16534
+ */
16535
+ const DEFAULT_MAX_STEPS_BY_AGENT = { curate: 200 };
16536
+ const MAX_MAX_STEPS = 500;
16530
16537
  const DEFAULT_RECENT_UPDATES = 10;
16531
16538
  const MAX_RECENT_UPDATES = 100;
16532
16539
  function entryName(entry) {
@@ -16543,7 +16550,7 @@ function assertUniqueNames(entries, phase) {
16543
16550
  }
16544
16551
  function boundedSteps(entry, fallback) {
16545
16552
  const steps = entry?.maxSteps ?? fallback;
16546
- if (!Number.isInteger(steps) || steps < 1 || steps > 25) throw new Error("Subconscious maxSteps must be an integer between 1 and 25.");
16553
+ if (!Number.isInteger(steps) || steps < 1 || steps > MAX_MAX_STEPS) throw new Error(`Subconscious maxSteps must be an integer between 1 and ${MAX_MAX_STEPS}.`);
16547
16554
  return steps;
16548
16555
  }
16549
16556
  function resolveExtractor(entry) {
@@ -16558,12 +16565,13 @@ function resolveExtractor(entry) {
16558
16565
  function resolveAgent(entry, builtIns, globalModel, globalMaxSteps) {
16559
16566
  const config = typeof entry === "string" ? void 0 : entry;
16560
16567
  const name = entryName(entry);
16568
+ const fallbackMaxSteps = globalMaxSteps ?? DEFAULT_MAX_STEPS_BY_AGENT[name] ?? DEFAULT_MAX_STEPS;
16561
16569
  return {
16562
16570
  name,
16563
16571
  instructions: config?.instructions,
16564
16572
  model: config?.model ?? globalModel,
16565
16573
  agent: config?.agent,
16566
- maxSteps: boundedSteps(config, globalMaxSteps),
16574
+ maxSteps: boundedSteps(config, fallbackMaxSteps),
16567
16575
  builtIn: builtIns.has(name)
16568
16576
  };
16569
16577
  }
@@ -16580,7 +16588,7 @@ var Subconscious = class {
16580
16588
  const reflection = config.reflection ?? ["curate", "learn"];
16581
16589
  assertUniqueNames(observation, "observation");
16582
16590
  assertUniqueNames(reflection, "reflection");
16583
- const maxSteps = boundedSteps(config, DEFAULT_MAX_STEPS);
16591
+ const maxSteps = config.maxSteps === void 0 ? void 0 : boundedSteps(config, DEFAULT_MAX_STEPS);
16584
16592
  for (const entry of observation) this.#validateObservationEntry(entry);
16585
16593
  for (const entry of reflection) this.#validateReflectionEntry(entry);
16586
16594
  const recentUpdates = config.activity === false ? false : config.activity?.recentUpdates ?? DEFAULT_RECENT_UPDATES;
@@ -16685,6 +16693,11 @@ function resolveScope$1(context) {
16685
16693
  `thread:${context.parentThreadId}`
16686
16694
  ]);
16687
16695
  }
16696
+ /**
16697
+ * Upper bound on records pulled into a single reflection prompt. `hasMore` tells the agent the
16698
+ * worklist was truncated; the cursor it advances lets the next cycle pick up the remainder.
16699
+ */
16700
+ const MAX_WORKLIST_RECORDS$1 = 1e3;
16688
16701
  async function readWorklist$1(store, sourceThreadId, scope, after) {
16689
16702
  const records = [];
16690
16703
  let cursor = after;
@@ -16698,7 +16711,7 @@ async function readWorklist$1(store, sourceThreadId, scope, after) {
16698
16711
  });
16699
16712
  records.push(...page.records);
16700
16713
  cursor = page.nextCursor;
16701
- } while (cursor && records.length < 500);
16714
+ } while (cursor && records.length < MAX_WORKLIST_RECORDS$1);
16702
16715
  return {
16703
16716
  records,
16704
16717
  hasMore: Boolean(cursor)
@@ -16820,6 +16833,8 @@ function resolveScope(context) {
16820
16833
  `thread:${context.parentThreadId}`
16821
16834
  ]);
16822
16835
  }
16836
+ /** Upper bound on records pulled into a single reflection prompt; `hasMore` signals truncation. */
16837
+ const MAX_WORKLIST_RECORDS = 1e3;
16823
16838
  async function readWorklist(store, sourceThreadId, scope, after) {
16824
16839
  const records = [];
16825
16840
  let cursor = after;
@@ -16832,7 +16847,7 @@ async function readWorklist(store, sourceThreadId, scope, after) {
16832
16847
  });
16833
16848
  records.push(...page.records);
16834
16849
  cursor = page.nextCursor;
16835
- } while (cursor && records.length < 500);
16850
+ } while (cursor && records.length < MAX_WORKLIST_RECORDS);
16836
16851
  return {
16837
16852
  records,
16838
16853
  hasMore: Boolean(cursor)
@@ -31495,4 +31510,4 @@ Notes:
31495
31510
  //#endregion
31496
31511
  export { formatMessagesForObserver as A, OBSERVATION_CONTINUATION_HINT as B, SUMMARIZE_THREAD_DEFAULTS as C, buildObserverPrompt as D, OBSERVER_SYSTEM_PROMPT as E, parseAnchorId as F, ModelByInputTokens as G, KnowledgeSemanticIndexCoordinator as H, stripEphemeralAnchorIds as I, SUBCONSCIOUS_ACTIVITY_STATE_ID as J, SubconsciousCaptureExtractor as K, OBSERVATIONAL_MEMORY_DEFAULTS as L, optimizeObservationsForContext as M, parseObserverOutput as N, buildObserverSystemPrompt as O, injectAnchorIds as P, Extractor as Q, OBSERVATION_CONTEXT_INSTRUCTIONS as R, WorkingMemoryExtractor as S, TokenCounter as T, StaleKnowledgeSemanticIndexError as U, Subconscious as V, SubconsciousRemindExtractor as W, publishSubconsciousActivity as X, buildSubconsciousActivitySnapshot as Y, renderSubconsciousActivity as Z, wrapInObservationGroup as _, extractWorkingMemoryContent as a, WorkingMemoryStateProcessor as b, getObservationsAsOf as c, combineObservationGroupRanges as d, deriveObservationGroupProvenance as f, stripObservationGroups as g, renderObservationGroupsForReflection as h, WorkingMemory as i, hasCurrentTaskSection as j, extractCurrentTask as k, ObservationalMemoryProcessor as l, reconcileObservationGroupsFromReflection as m, MessageHistory$1 as n, extractWorkingMemoryTags as o, parseObservationGroups as p, subconsciousCaptureSchema as q, SemanticRecall as r, removeWorkingMemoryTags as s, Memory as t, ObservationalMemory as u, WORKING_MEMORY_STATE_ID as v, summarizeConversation as w, deepMergeWorkingMemory as x, WORKING_MEMORY_STATE_PROCESSOR_ID as y, OBSERVATION_CONTEXT_PROMPT as z };
31497
31512
 
31498
- //# sourceMappingURL=src-BATJenuZ.js.map
31513
+ //# sourceMappingURL=src-BsEVZAdq.js.map