agentfootprint 9.1.0 → 9.3.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 (151) hide show
  1. package/README.md +15 -0
  2. package/dist/adapters/memory/pgVector.js +731 -0
  3. package/dist/adapters/memory/pgVector.js.map +1 -0
  4. package/dist/adapters/memory/s3Vectors.js +628 -0
  5. package/dist/adapters/memory/s3Vectors.js.map +1 -0
  6. package/dist/adapters/memory/sqliteVector.js +16 -79
  7. package/dist/adapters/memory/sqliteVector.js.map +1 -1
  8. package/dist/core/Agent.js +344 -18
  9. package/dist/core/Agent.js.map +1 -1
  10. package/dist/core/LLMCall.js +17 -0
  11. package/dist/core/LLMCall.js.map +1 -1
  12. package/dist/core/RunnerBase.js +22 -6
  13. package/dist/core/RunnerBase.js.map +1 -1
  14. package/dist/core/agent/AgentBuilder.js +20 -0
  15. package/dist/core/agent/AgentBuilder.js.map +1 -1
  16. package/dist/core/conversation.js +139 -0
  17. package/dist/core/conversation.js.map +1 -0
  18. package/dist/core/runCheckpoint.js +60 -2
  19. package/dist/core/runCheckpoint.js.map +1 -1
  20. package/dist/embedders/index.js +240 -76
  21. package/dist/embedders/index.js.map +1 -1
  22. package/dist/esm/adapters/memory/pgVector.d.ts +243 -0
  23. package/dist/esm/adapters/memory/pgVector.js +726 -0
  24. package/dist/esm/adapters/memory/pgVector.js.map +1 -0
  25. package/dist/esm/adapters/memory/s3Vectors.d.ts +208 -0
  26. package/dist/esm/adapters/memory/s3Vectors.js +624 -0
  27. package/dist/esm/adapters/memory/s3Vectors.js.map +1 -0
  28. package/dist/esm/adapters/memory/sqliteVector.d.ts +5 -27
  29. package/dist/esm/adapters/memory/sqliteVector.js +10 -73
  30. package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
  31. package/dist/esm/core/Agent.d.ts +218 -3
  32. package/dist/esm/core/Agent.js +345 -19
  33. package/dist/esm/core/Agent.js.map +1 -1
  34. package/dist/esm/core/LLMCall.d.ts +9 -0
  35. package/dist/esm/core/LLMCall.js +17 -0
  36. package/dist/esm/core/LLMCall.js.map +1 -1
  37. package/dist/esm/core/RunnerBase.d.ts +22 -6
  38. package/dist/esm/core/RunnerBase.js +22 -6
  39. package/dist/esm/core/RunnerBase.js.map +1 -1
  40. package/dist/esm/core/agent/AgentBuilder.d.ts +5 -0
  41. package/dist/esm/core/agent/AgentBuilder.js +20 -0
  42. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  43. package/dist/esm/core/agent/types.d.ts +45 -3
  44. package/dist/esm/core/conversation.d.ts +96 -0
  45. package/dist/esm/core/conversation.js +133 -0
  46. package/dist/esm/core/conversation.js.map +1 -0
  47. package/dist/esm/core/runCheckpoint.d.ts +85 -1
  48. package/dist/esm/core/runCheckpoint.js +57 -1
  49. package/dist/esm/core/runCheckpoint.js.map +1 -1
  50. package/dist/esm/embedders/index.d.ts +99 -19
  51. package/dist/esm/embedders/index.js +240 -76
  52. package/dist/esm/embedders/index.js.map +1 -1
  53. package/dist/esm/hosting/standingAgent.d.ts +6 -2
  54. package/dist/esm/hosting/standingAgent.js +36 -27
  55. package/dist/esm/hosting/standingAgent.js.map +1 -1
  56. package/dist/esm/index.d.ts +2 -1
  57. package/dist/esm/index.js +5 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/lib/embedderMismatch.d.ts +67 -0
  60. package/dist/esm/lib/embedderMismatch.js +96 -0
  61. package/dist/esm/lib/embedderMismatch.js.map +1 -0
  62. package/dist/esm/lib/rag/defineRAG.d.ts +28 -6
  63. package/dist/esm/lib/rag/defineRAG.js +39 -5
  64. package/dist/esm/lib/rag/defineRAG.js.map +1 -1
  65. package/dist/esm/memory/define.js +31 -1
  66. package/dist/esm/memory/define.js.map +1 -1
  67. package/dist/esm/memory/define.types.d.ts +13 -2
  68. package/dist/esm/memory/define.types.js.map +1 -1
  69. package/dist/esm/memory/embedding/loadRelevant.d.ts +10 -2
  70. package/dist/esm/memory/embedding/loadRelevant.js +36 -18
  71. package/dist/esm/memory/embedding/loadRelevant.js.map +1 -1
  72. package/dist/esm/memory/pipeline/semantic.d.ts +13 -2
  73. package/dist/esm/memory/pipeline/semantic.js +11 -5
  74. package/dist/esm/memory/pipeline/semantic.js.map +1 -1
  75. package/dist/esm/memory/store/capability.d.ts +25 -6
  76. package/dist/esm/memory/store/capability.js +68 -3
  77. package/dist/esm/memory/store/capability.js.map +1 -1
  78. package/dist/esm/memory/store/index.d.ts +1 -0
  79. package/dist/esm/memory/store/index.js +4 -0
  80. package/dist/esm/memory/store/index.js.map +1 -1
  81. package/dist/esm/memory/store/types.d.ts +40 -0
  82. package/dist/esm/memory-providers.d.ts +7 -4
  83. package/dist/esm/memory-providers.js +18 -4
  84. package/dist/esm/memory-providers.js.map +1 -1
  85. package/dist/hosting/standingAgent.js +36 -27
  86. package/dist/hosting/standingAgent.js.map +1 -1
  87. package/dist/index.js +9 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/lib/embedderMismatch.js +103 -0
  90. package/dist/lib/embedderMismatch.js.map +1 -0
  91. package/dist/lib/rag/defineRAG.js +39 -5
  92. package/dist/lib/rag/defineRAG.js.map +1 -1
  93. package/dist/memory/define.js +31 -1
  94. package/dist/memory/define.js.map +1 -1
  95. package/dist/memory/define.types.js.map +1 -1
  96. package/dist/memory/embedding/loadRelevant.js +36 -18
  97. package/dist/memory/embedding/loadRelevant.js.map +1 -1
  98. package/dist/memory/pipeline/semantic.js +11 -5
  99. package/dist/memory/pipeline/semantic.js.map +1 -1
  100. package/dist/memory/store/capability.js +70 -4
  101. package/dist/memory/store/capability.js.map +1 -1
  102. package/dist/memory/store/index.js +7 -1
  103. package/dist/memory/store/index.js.map +1 -1
  104. package/dist/memory-providers.js +22 -5
  105. package/dist/memory-providers.js.map +1 -1
  106. package/dist/types/adapters/memory/pgVector.d.ts +244 -0
  107. package/dist/types/adapters/memory/pgVector.d.ts.map +1 -0
  108. package/dist/types/adapters/memory/s3Vectors.d.ts +209 -0
  109. package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -0
  110. package/dist/types/adapters/memory/sqliteVector.d.ts +5 -27
  111. package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
  112. package/dist/types/core/Agent.d.ts +218 -3
  113. package/dist/types/core/Agent.d.ts.map +1 -1
  114. package/dist/types/core/LLMCall.d.ts +9 -0
  115. package/dist/types/core/LLMCall.d.ts.map +1 -1
  116. package/dist/types/core/RunnerBase.d.ts +22 -6
  117. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  118. package/dist/types/core/agent/AgentBuilder.d.ts +5 -0
  119. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  120. package/dist/types/core/agent/types.d.ts +45 -3
  121. package/dist/types/core/agent/types.d.ts.map +1 -1
  122. package/dist/types/core/conversation.d.ts +97 -0
  123. package/dist/types/core/conversation.d.ts.map +1 -0
  124. package/dist/types/core/runCheckpoint.d.ts +85 -1
  125. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  126. package/dist/types/embedders/index.d.ts +99 -19
  127. package/dist/types/embedders/index.d.ts.map +1 -1
  128. package/dist/types/hosting/standingAgent.d.ts +6 -2
  129. package/dist/types/hosting/standingAgent.d.ts.map +1 -1
  130. package/dist/types/index.d.ts +2 -1
  131. package/dist/types/index.d.ts.map +1 -1
  132. package/dist/types/lib/embedderMismatch.d.ts +68 -0
  133. package/dist/types/lib/embedderMismatch.d.ts.map +1 -0
  134. package/dist/types/lib/rag/defineRAG.d.ts +28 -6
  135. package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
  136. package/dist/types/memory/define.d.ts.map +1 -1
  137. package/dist/types/memory/define.types.d.ts +13 -2
  138. package/dist/types/memory/define.types.d.ts.map +1 -1
  139. package/dist/types/memory/embedding/loadRelevant.d.ts +10 -2
  140. package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
  141. package/dist/types/memory/pipeline/semantic.d.ts +13 -2
  142. package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
  143. package/dist/types/memory/store/capability.d.ts +25 -6
  144. package/dist/types/memory/store/capability.d.ts.map +1 -1
  145. package/dist/types/memory/store/index.d.ts +1 -0
  146. package/dist/types/memory/store/index.d.ts.map +1 -1
  147. package/dist/types/memory/store/types.d.ts +40 -0
  148. package/dist/types/memory/store/types.d.ts.map +1 -1
  149. package/dist/types/memory-providers.d.ts +7 -4
  150. package/dist/types/memory-providers.d.ts.map +1 -1
  151. package/package.json +9 -1
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * conversation — the refusals that guard a runner's per-instance state.
4
+ *
5
+ * Pattern: teaching refusal at a boundary (the shape `runInput` uses for a
6
+ * caller's message, applied to a caller's TIMING).
7
+ * Role: core/ layer. An `Agent` keeps the last run's executor, run context,
8
+ * answer and pause on ITSELF — that is what makes `checkpoint()`,
9
+ * `getLastSnapshot()` and `followUp()` possible at all. Those fields
10
+ * have exactly one owner at a time, and until 9.2.0 nothing said so.
11
+ * Emits: N/A — these fire before a run starts.
12
+ *
13
+ * ## Why these are refusals and not warnings
14
+ *
15
+ * Both shapes below used to SUCCEED, which is the entire problem. Two `run()`
16
+ * calls overlapping on one Agent both resolved with plausible answers, and the
17
+ * per-instance state afterwards belonged to whichever finished last: the
18
+ * conversation `checkpoint()` handed back was the other run's, the snapshot
19
+ * `getLastSnapshot()` served was the other run's, and every event carried the
20
+ * other run's meta. That is not concurrency, it is corruption — and nothing in
21
+ * the recording said so, because each run's own trace looked perfect.
22
+ *
23
+ * A message sent while a person still owes the agent an answer used to start a
24
+ * fresh run and silently abandon the pending question. A consent gate that can
25
+ * be walked around by sending another message is not a consent gate.
26
+ *
27
+ * Neither refusal is new policy. `standingAgent` has refused both since it
28
+ * existed (it serializes runs globally and calls that "a correctness
29
+ * requirement rather than a tuning choice", and answers a message that arrives
30
+ * mid-question with `AwaitingDecisionError`), and `recordedChat.send` refuses
31
+ * an overlapping turn in the same words. 9.2.0 moves the guarantee from the
32
+ * compositions down to the primitive, so it holds however you drive it.
33
+ *
34
+ * The names are deliberately NOT the hosting ones. `hosting/errors.ts` already
35
+ * owns `ConcurrentRunError` and `AwaitingDecisionError`, both of which carry a
36
+ * `sessionId` and speak about a session; core has no sessions, and two classes
37
+ * sharing one name across two doors is the duplicate-type hazard this codebase
38
+ * has fixed before.
39
+ */
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.NoConversationError = exports.PendingQuestionError = exports.RunInFlightError = void 0;
42
+ /**
43
+ * Thrown when `run()` / `resume()` is called on a runner that is already
44
+ * running.
45
+ *
46
+ * One instance answers one turn at a time. To run two turns at once, build two
47
+ * agents — a chart is built once per instance and instances are cheap — or put
48
+ * the turns behind `standingAgent({ onConcurrentInvoke: 'enqueue' })`, which
49
+ * queues them.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * // Refused: both would write the same instance's last-run state.
54
+ * await Promise.all([agent.run({ message: 'a' }), agent.run({ message: 'b' })]);
55
+ *
56
+ * // Fine: two instances, two sets of state.
57
+ * await Promise.all([agentA.run({ message: 'a' }), agentB.run({ message: 'b' })]);
58
+ * ```
59
+ */
60
+ class RunInFlightError extends Error {
61
+ code = 'ERR_RUN_IN_FLIGHT';
62
+ /** The runner that is busy, by its configured id. */
63
+ agentId;
64
+ /** The run already in flight, so a log line can be joined to its trace. */
65
+ activeRunId;
66
+ constructor(door, agentId, activeRunId) {
67
+ super(`${door}: this agent is already running (run '${activeRunId}'). One instance answers one ` +
68
+ `turn at a time — its last executor, run context, answer and pause all live on the ` +
69
+ `instance, so two overlapping runs would each finish having overwritten the other's. ` +
70
+ `Both would return a plausible answer and checkpoint() would then hand back whichever ` +
71
+ `finished last, which is why this is refused rather than left to look like it worked. ` +
72
+ `Await the run in flight, build a second Agent for the second turn (charts are ` +
73
+ `built per instance and instances are cheap), or serve the agent through ` +
74
+ `standingAgent({ onConcurrentInvoke: 'enqueue' }) to queue turns behind each other.`);
75
+ this.name = 'RunInFlightError';
76
+ this.agentId = agentId;
77
+ this.activeRunId = activeRunId;
78
+ }
79
+ }
80
+ exports.RunInFlightError = RunInFlightError;
81
+ /**
82
+ * Thrown when a new message is sent to an agent whose last run PAUSED to ask a
83
+ * person something, and that question has not been answered.
84
+ *
85
+ * The pause is not a failure and not a stale flag — it is unfinished work with
86
+ * a person on the other end. Answer it with `resume(checkpoint, decision)`, or
87
+ * say plainly that it is being dropped with `abandonPause()`; both are visible
88
+ * in the record, and silently starting a fresh run was not.
89
+ */
90
+ class PendingQuestionError extends Error {
91
+ code = 'ERR_PENDING_QUESTION';
92
+ /** The tool that asked, when the pause named one. */
93
+ toolName;
94
+ /** The id of the tool call that asked, for joining back to the trace. */
95
+ toolCallId;
96
+ constructor(door, pending) {
97
+ const asked = pending.toolName !== undefined
98
+ ? `'${pending.toolName}'${pending.toolCallId ? ` (call ${pending.toolCallId})` : ''}`
99
+ : 'a tool';
100
+ const quoted = pending.question !== undefined ? ` It asked: "${pending.question}"` : '';
101
+ super(`${door}: this agent's last run paused to ask a person something and is still waiting. ` +
102
+ `${asked} raised the question and nothing has answered it.${quoted} Answer it with ` +
103
+ `agent.resume(outcome.checkpoint, decision) — that continues the paused run from where ` +
104
+ `it stopped, with no earlier tool re-executed. If the question really is being dropped, ` +
105
+ `call agent.abandonPause() first and then run() again: a pending question that a later ` +
106
+ `message silently discards is a consent gate anyone can walk around.`);
107
+ this.name = 'PendingQuestionError';
108
+ if (pending.toolName !== undefined)
109
+ this.toolName = pending.toolName;
110
+ if (pending.toolCallId !== undefined)
111
+ this.toolCallId = pending.toolCallId;
112
+ }
113
+ }
114
+ exports.PendingQuestionError = PendingQuestionError;
115
+ /**
116
+ * Thrown by `followUp()` when there is no conversation to follow up on.
117
+ *
118
+ * `followUp()` continues THIS agent's own last completed run. Before the first
119
+ * one there is nothing to continue, and a "follow-up" that quietly became a
120
+ * first turn would be the very confusion the door exists to remove.
121
+ */
122
+ class NoConversationError extends Error {
123
+ code = 'ERR_NO_CONVERSATION';
124
+ constructor(door, reason) {
125
+ super(reason === 'never-run'
126
+ ? `${door}: this agent has not completed a run, so there is no conversation to ` +
127
+ `continue. Start it with agent.run({ message }) — the first turn is a run; every ` +
128
+ `turn after it is a followUp(). To continue a conversation this PROCESS did not ` +
129
+ `have (a stored one, or one from another instance), pass it explicitly: ` +
130
+ `agent.run({ message, continueFrom: storedConversation }).`
131
+ : `${door}: this agent's last run did not finish with an answer, so there is no ` +
132
+ `conversation to continue yet. A failed run's conversation is carried by ` +
133
+ `RunCheckpointError.checkpoint — catch it and pass that to ` +
134
+ `run({ message, continueFrom }) or resumeOnError(checkpoint).`);
135
+ this.name = 'NoConversationError';
136
+ }
137
+ }
138
+ exports.NoConversationError = NoConversationError;
139
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/core/conversation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,GAAG,mBAA4B,CAAC;IAC7C,qDAAqD;IAC5C,OAAO,CAAS;IACzB,2EAA2E;IAClE,WAAW,CAAS;IAE7B,YAAY,IAAY,EAAE,OAAe,EAAE,WAAmB;QAC5D,KAAK,CACH,GAAG,IAAI,yCAAyC,WAAW,+BAA+B;YACxF,oFAAoF;YACpF,sFAAsF;YACtF,uFAAuF;YACvF,uFAAuF;YACvF,gFAAgF;YAChF,0EAA0E;YAC1E,oFAAoF,CACvF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAtBD,4CAsBC;AAED;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,KAAK;IACpC,IAAI,GAAG,sBAA+B,CAAC;IAChD,qDAAqD;IAC5C,QAAQ,CAAU;IAC3B,yEAAyE;IAChE,UAAU,CAAU;IAE7B,YACE,IAAY,EACZ,OAAsE;QAEtE,MAAM,KAAK,GACT,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC5B,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrF,CAAC,CAAC,QAAQ,CAAC;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,KAAK,CACH,GAAG,IAAI,iFAAiF;YACtF,GAAG,KAAK,oDAAoD,MAAM,kBAAkB;YACpF,wFAAwF;YACxF,yFAAyF;YACzF,wFAAwF;YACxF,qEAAqE,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACrE,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC7E,CAAC;CACF;AA5BD,oDA4BC;AAED;;;;;;GAMG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,qBAA8B,CAAC;IAE/C,YAAY,IAAY,EAAE,MAA2C;QACnE,KAAK,CACH,MAAM,KAAK,WAAW;YACpB,CAAC,CAAC,GAAG,IAAI,uEAAuE;gBAC5E,kFAAkF;gBAClF,iFAAiF;gBACjF,yEAAyE;gBACzE,2DAA2D;YAC/D,CAAC,CAAC,GAAG,IAAI,wEAAwE;gBAC7E,0EAA0E;gBAC1E,4DAA4D;gBAC5D,8DAA8D,CACrE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAlBD,kDAkBC"}
@@ -55,7 +55,7 @@
55
55
  * DFS stage).
56
56
  */
57
57
  Object.defineProperty(exports, "__esModule", { value: true });
58
- exports.classifyFailurePhase = exports.validateCheckpoint = exports.buildCheckpoint = exports.RunCheckpointError = void 0;
58
+ exports.classifyFailurePhase = exports.validateCheckpoint = exports.buildCheckpoint = exports.assertContinuable = exports.ConversationMismatchError = exports.RunCheckpointError = void 0;
59
59
  /**
60
60
  * Thrown by `agent.run()` when a fault occurs mid-run. Carries the
61
61
  * underlying error AND the last-known-good checkpoint. Catch this
@@ -101,6 +101,55 @@ class RunCheckpointError extends Error {
101
101
  }
102
102
  }
103
103
  exports.RunCheckpointError = RunCheckpointError;
104
+ /**
105
+ * Thrown when a stored conversation is handed to an agent that is provably
106
+ * not the one that recorded it (9.2.0).
107
+ *
108
+ * Raised only when BOTH sides named themselves with an explicit
109
+ * `Agent.create({ id })` and the two names differ — see
110
+ * {@link AgentRunCheckpoint.agent} for why that is the whole of the rule.
111
+ * An agent that gained a tool, changed its prompt or moved to a new model
112
+ * since the conversation was stored is NOT this error; continuing across a
113
+ * deploy is the ordinary case and must keep working.
114
+ */
115
+ class ConversationMismatchError extends Error {
116
+ code = 'ERR_CONVERSATION_MISMATCH';
117
+ /** The id stamped on the stored conversation. */
118
+ storedAgentId;
119
+ /** The id of the agent it was handed to. */
120
+ agentId;
121
+ constructor(door, storedAgentId, agentId) {
122
+ super(`${door}: this conversation was recorded by agent '${storedAgentId}' and was handed to ` +
123
+ `agent '${agentId}'. Both agents named themselves with Agent.create({ id }), and the ` +
124
+ `names differ — so this is one agent answering another one's conversation, not a ` +
125
+ `deploy that changed. Continue it on the agent whose id is '${storedAgentId}', or, if ` +
126
+ `handing conversations between these two really is intended, give them the same id. ` +
127
+ `(An agent that merely gained a tool, changed its prompt or moved model since the ` +
128
+ `conversation was stored keeps the same id and is never refused here.)`);
129
+ this.name = 'ConversationMismatchError';
130
+ this.storedAgentId = storedAgentId;
131
+ this.agentId = agentId;
132
+ }
133
+ }
134
+ exports.ConversationMismatchError = ConversationMismatchError;
135
+ /**
136
+ * Refuse a stored conversation that provably belongs to a different agent.
137
+ *
138
+ * Both-sides-named-themselves, or nothing happens. `storedId` is absent on
139
+ * every conversation written before 9.2.0 and on every agent that never chose
140
+ * an id; `agentId` is undefined for the same reason on the reading side.
141
+ *
142
+ * @internal
143
+ */
144
+ function assertContinuable(checkpoint, agentId, door) {
145
+ const storedId = checkpoint.agent?.id;
146
+ if (storedId === undefined || agentId === undefined)
147
+ return;
148
+ if (storedId === agentId)
149
+ return;
150
+ throw new ConversationMismatchError(door, storedId, agentId);
151
+ }
152
+ exports.assertContinuable = assertContinuable;
104
153
  /**
105
154
  * The human half of `failurePoint`, as one clause.
106
155
  *
@@ -135,7 +184,14 @@ function buildCheckpoint(tracker, failurePoint,
135
184
  * and a fold's span is committed state — and because the same reader then
136
185
  * serves both checkpoint carriers, so neither can lose what the other keeps.
137
186
  */
138
- folded) {
187
+ folded,
188
+ /**
189
+ * Who the run was for and which agent ran it — the two fields that make a
190
+ * stored conversation continuable rather than merely readable (9.2.0).
191
+ * Both are absent unless the caller chose them explicitly; see
192
+ * {@link AgentRunCheckpoint.identity} and {@link AgentRunCheckpoint.agent}.
193
+ */
194
+ owner) {
139
195
  return {
140
196
  version: 1,
141
197
  runId: tracker.runId,
@@ -145,6 +201,8 @@ folded) {
145
201
  checkpointedAt: Date.now(),
146
202
  ...(failurePoint && { failurePoint }),
147
203
  ...(folded !== undefined && folded.length > 0 && { folded }),
204
+ ...(owner?.identity !== undefined && { identity: owner.identity }),
205
+ ...(owner?.agentId !== undefined && { agent: { id: owner.agentId } }),
148
206
  };
149
207
  }
150
208
  exports.buildCheckpoint = buildCheckpoint;
@@ -1 +1 @@
1
- {"version":3,"file":"runCheckpoint.js","sourceRoot":"","sources":["../../src/core/runCheckpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runCheckpoint.js","sourceRoot":"","sources":["../../src/core/runCheckpoint.ts"],"names":[],"mappings":"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"}