@buoy-gg/agent-core 7.0.34 → 7.0.35

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 (48) hide show
  1. package/lib/commonjs/blocks/receipts.js +26 -23
  2. package/lib/commonjs/blocks/receipts.js.map +1 -1
  3. package/lib/commonjs/blocks/runId.js +31 -0
  4. package/lib/commonjs/blocks/runId.js.map +1 -0
  5. package/lib/commonjs/blocks/uiTool.js +3 -2
  6. package/lib/commonjs/blocks/uiTool.js.map +1 -1
  7. package/lib/commonjs/engine/runAgentTurn.js +37 -8
  8. package/lib/commonjs/engine/runAgentTurn.js.map +1 -1
  9. package/lib/commonjs/engine/systemPrompt.js +1 -1
  10. package/lib/commonjs/engine/systemPrompt.js.map +1 -1
  11. package/lib/commonjs/index.js +23 -1
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/providers/anthropic.js +44 -1
  14. package/lib/commonjs/providers/anthropic.js.map +1 -1
  15. package/lib/commonjs/session.js +36 -0
  16. package/lib/commonjs/session.js.map +1 -1
  17. package/lib/module/blocks/receipts.js +26 -23
  18. package/lib/module/blocks/receipts.js.map +1 -1
  19. package/lib/module/blocks/runId.js +26 -0
  20. package/lib/module/blocks/runId.js.map +1 -0
  21. package/lib/module/blocks/uiTool.js +3 -2
  22. package/lib/module/blocks/uiTool.js.map +1 -1
  23. package/lib/module/engine/runAgentTurn.js +37 -8
  24. package/lib/module/engine/runAgentTurn.js.map +1 -1
  25. package/lib/module/engine/systemPrompt.js +1 -1
  26. package/lib/module/engine/systemPrompt.js.map +1 -1
  27. package/lib/module/index.js +2 -1
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/providers/anthropic.js +44 -1
  30. package/lib/module/providers/anthropic.js.map +1 -1
  31. package/lib/module/session.js +35 -0
  32. package/lib/module/session.js.map +1 -1
  33. package/lib/typescript/blocks/receipts.d.ts +0 -10
  34. package/lib/typescript/blocks/receipts.d.ts.map +1 -1
  35. package/lib/typescript/blocks/runId.d.ts +20 -0
  36. package/lib/typescript/blocks/runId.d.ts.map +1 -0
  37. package/lib/typescript/blocks/uiTool.d.ts.map +1 -1
  38. package/lib/typescript/engine/runAgentTurn.d.ts +32 -0
  39. package/lib/typescript/engine/runAgentTurn.d.ts.map +1 -1
  40. package/lib/typescript/index.d.ts +3 -2
  41. package/lib/typescript/index.d.ts.map +1 -1
  42. package/lib/typescript/providers/anthropic.d.ts +5 -0
  43. package/lib/typescript/providers/anthropic.d.ts.map +1 -1
  44. package/lib/typescript/providers/types.d.ts +25 -0
  45. package/lib/typescript/providers/types.d.ts.map +1 -1
  46. package/lib/typescript/session.d.ts +23 -0
  47. package/lib/typescript/session.d.ts.map +1 -1
  48. package/package.json +1 -1
@@ -18,6 +18,11 @@
18
18
  * user content array with any text after, and that user message must
19
19
  * immediately follow the assistant turn. "Here are the results:" placed
20
20
  * before the blocks is an instant 400.
21
+ * 5. Every current Claude model thinks by DEFAULT, and a `thinking` block must
22
+ * be replayed VERBATIM (signature and all) at the FRONT of the assistant
23
+ * turn it came from whenever that turn's tool results are sent back. An
24
+ * adapter that keeps only text and tool_use 400s on the second request of
25
+ * every tool-using turn — which is every turn Ask Buoy actually makes.
21
26
  */
22
27
 
23
28
  import { errorBody, readSse } from "./sse";
@@ -35,6 +40,8 @@ function toWireMessages(messages) {
35
40
  });
36
41
  } else if (m.role === "assistant") {
37
42
  const content = [];
43
+ // Thinking FIRST — see note 5. Signatures are opaque; never edit them.
44
+ for (const t of m.thinking ?? []) content.push(t);
38
45
  if (m.text) content.push({
39
46
  type: "text",
40
47
  text: m.text
@@ -132,6 +139,11 @@ export function createAnthropicProvider(config) {
132
139
 
133
140
  // Partial tool_use args accumulate here, keyed by content-block index.
134
141
  const pending = new Map();
142
+ // Partial thinking blocks, same keying. `thinking_delta` carries the
143
+ // text and `signature_delta` the signature, and the signature usually
144
+ // arrives in ONE delta right at the end — a reader that stops at
145
+ // thinking_delta replays an unsigned block, which the API rejects.
146
+ const thinking = new Map();
135
147
  let stopReason;
136
148
  let usage;
137
149
  for await (const ev of readSse(response)) {
@@ -146,7 +158,21 @@ export function createAnthropicProvider(config) {
146
158
  case "content_block_start":
147
159
  {
148
160
  const block = payload.content_block;
149
- if (block?.type === "tool_use") {
161
+ if (block?.type === "thinking") {
162
+ thinking.set(payload.index, {
163
+ thinking: block.thinking ?? "",
164
+ signature: block.signature ?? ""
165
+ });
166
+ } else if (block?.type === "redacted_thinking") {
167
+ // No deltas for these — the whole (encrypted) payload is here.
168
+ yield {
169
+ type: "thinking",
170
+ block: {
171
+ type: "redacted_thinking",
172
+ data: block.data
173
+ }
174
+ };
175
+ } else if (block?.type === "tool_use") {
150
176
  // NOT block.input — see note 1.
151
177
  pending.set(payload.index, {
152
178
  id: block.id,
@@ -167,11 +193,28 @@ export function createAnthropicProvider(config) {
167
193
  } else if (delta?.type === "input_json_delta") {
168
194
  const slot = pending.get(payload.index);
169
195
  if (slot) slot.json += delta.partial_json ?? "";
196
+ } else if (delta?.type === "thinking_delta") {
197
+ const slot = thinking.get(payload.index);
198
+ if (slot) slot.thinking += delta.thinking ?? "";
199
+ } else if (delta?.type === "signature_delta") {
200
+ const slot = thinking.get(payload.index);
201
+ if (slot) slot.signature += delta.signature ?? "";
170
202
  }
171
203
  break;
172
204
  }
173
205
  case "content_block_stop":
174
206
  {
207
+ const thought = thinking.get(payload.index);
208
+ if (thought) {
209
+ thinking.delete(payload.index);
210
+ yield {
211
+ type: "thinking",
212
+ block: {
213
+ type: "thinking",
214
+ ...thought
215
+ }
216
+ };
217
+ }
175
218
  const slot = pending.get(payload.index);
176
219
  if (slot) {
177
220
  pending.delete(payload.index);
@@ -1 +1 @@
1
- {"version":3,"names":["errorBody","readSse","DEFAULT_VERSION","toWireMessages","messages","out","m","role","push","content","type","text","c","toolCalls","id","name","input","length","results","map","r","tool_use_id","toolCallId","isError","is_error","createAnthropicProvider","config","protocol","send","req","headers","anthropicVersion","apiKey","Authorization","response","fetch","endpoint","method","signal","body","JSON","stringify","model","max_tokens","maxTokens","stream","system","cache","cache_control","tools","t","description","input_schema","inputSchema","requestOverrides","ok","message","pending","Map","stopReason","usage","ev","payload","parse","data","kind","event","block","content_block","set","index","json","delta","slot","get","partial_json","delete","call","u","input_tokens","output","output_tokens","cache_read_input_tokens","undefined","cacheRead","cache_creation_input_tokens","cacheWrite","stop_reason","err","error"],"sourceRoot":"../../../src","sources":["providers/anthropic.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["errorBody","readSse","DEFAULT_VERSION","toWireMessages","messages","out","m","role","push","content","type","text","t","thinking","c","toolCalls","id","name","input","length","results","map","r","tool_use_id","toolCallId","isError","is_error","createAnthropicProvider","config","protocol","send","req","headers","anthropicVersion","apiKey","Authorization","response","fetch","endpoint","method","signal","body","JSON","stringify","model","max_tokens","maxTokens","stream","system","cache","cache_control","tools","description","input_schema","inputSchema","requestOverrides","ok","message","pending","Map","stopReason","usage","ev","payload","parse","data","kind","event","block","content_block","set","index","signature","json","delta","slot","get","partial_json","thought","delete","call","u","input_tokens","output","output_tokens","cache_read_input_tokens","undefined","cacheRead","cache_creation_input_tokens","cacheWrite","stop_reason","err","error"],"sourceRoot":"../../../src","sources":["providers/anthropic.ts"],"mappings":"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","ignoreList":[]}
@@ -50,6 +50,35 @@ function trimHistory(messages) {
50
50
  }
51
51
  return out;
52
52
  }
53
+
54
+ /**
55
+ * A stored history, made safe to send as the start of a new request.
56
+ *
57
+ * Two things make a saved conversation unusable as-is.
58
+ *
59
+ * A history captured mid-turn ends with an assistant message whose `tool_use`
60
+ * blocks were never answered, or with the `tool_result`s and no reply after
61
+ * them. Every provider rejects both: the blocks must pair up. So this rewinds
62
+ * to the last COMPLETE round — an assistant message that made no tool calls,
63
+ * which is where a conversation is always safe to resume from.
64
+ *
65
+ * And thinking blocks are dropped. Anthropic needs them replayed only when the
66
+ * very next thing sent is that turn's `tool_result`s; a restored conversation
67
+ * always resumes with a fresh user message instead, so their signatures are
68
+ * dead weight at best and a stale-signature 400 at worst.
69
+ */
70
+ export function resumableHistory(history) {
71
+ let end = history.length;
72
+ while (end > 0) {
73
+ const m = history[end - 1];
74
+ if (m.role === "assistant" && !m.toolCalls?.length) break;
75
+ end -= 1;
76
+ }
77
+ return history.slice(0, end).map(m => m.role === "assistant" && m.thinking ? {
78
+ ...m,
79
+ thinking: undefined
80
+ } : m);
81
+ }
53
82
  export function createAskBuoySession(config) {
54
83
  const catalog = config.catalog ?? CATALOG;
55
84
  const ledger = new EffectLedger();
@@ -122,6 +151,12 @@ export function createAskBuoySession(config) {
122
151
  availableActions = actions;
123
152
  availableToolIds = Object.keys(actions);
124
153
  },
154
+ restore(history) {
155
+ // Only into a session that has not been talked to. Restoring over a live
156
+ // conversation would drop whatever was said since the app started.
157
+ if (messages.length > 0) return;
158
+ messages = trimHistory(resumableHistory(history));
159
+ },
125
160
  async *send(text, signal) {
126
161
  await prime();
127
162
  messages.push({
@@ -1 +1 @@
1
- {"version":3,"names":["CATALOG","buildContextDigest","runAgentTurn","buildSystemPrompt","EffectLedger","createAnthropicProvider","createOpenAIProvider","resolveRequireApproval","registerSelfEndpoint","MAX_HISTORY_CHARS","MIN_KEEP_MESSAGES","messageSize","m","JSON","stringify","length","trimHistory","messages","total","out","shift","role","createAskBuoySession","config","catalog","ledger","policy","system","primed","storeKeyOwners","endpoint","provider","protocol","availableActions","availableToolIds","Object","keys","prime","digest","dispatch","readSnapshot","raw","zustandStores","store","persistsTo","name","context","isRelease","readOnly","requireApproval","appName","platform","setAvailableActions","actions","send","text","signal","push","gen","model","maxTokens","requestApproval","next","done","value","reset","clear"],"sourceRoot":"../../src","sources":["session.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CATALOG","buildContextDigest","runAgentTurn","buildSystemPrompt","EffectLedger","createAnthropicProvider","createOpenAIProvider","resolveRequireApproval","registerSelfEndpoint","MAX_HISTORY_CHARS","MIN_KEEP_MESSAGES","messageSize","m","JSON","stringify","length","trimHistory","messages","total","out","shift","role","resumableHistory","history","end","toolCalls","slice","map","thinking","undefined","createAskBuoySession","config","catalog","ledger","policy","system","primed","storeKeyOwners","endpoint","provider","protocol","availableActions","availableToolIds","Object","keys","prime","digest","dispatch","readSnapshot","raw","zustandStores","store","persistsTo","name","context","isRelease","readOnly","requireApproval","appName","platform","setAvailableActions","actions","restore","send","text","signal","push","gen","model","maxTokens","requestApproval","next","done","value","reset","clear"],"sourceRoot":"../../src","sources":["session.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,3 @@
1
- /**
2
- * Receipts — blocks the engine builds from tool results, deterministically.
3
- *
4
- * The model never authors these, so they cannot hallucinate, and a weak model
5
- * cannot fail to produce them. They render the SAME redacted result the model
6
- * gets, so what the user sees and what the model reasons about are one thing.
7
- *
8
- * Every projector is small and honest about caps: it truncates and records
9
- * `total` so the renderer can say "+38 more" truthfully.
10
- */
11
1
  import { type Block } from "./types";
12
2
  /** Shallow diff of two plain objects: top-level keys that differ. */
13
3
  export declare function shallowDiff(before: unknown, after: unknown): {
@@ -1 +1 @@
1
- {"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../../src/blocks/receipts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAQ,KAAK,KAAK,EAAwC,MAAM,SAAS,CAAC;AAqCjF,qEAAqE;AACrE,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,CAYvD;AAiCD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,CA8frE"}
1
+ {"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../../src/blocks/receipts.ts"],"names":[],"mappings":"AAcA,OAAO,EAAQ,KAAK,KAAK,EAAwC,MAAM,SAAS,CAAC;AAoCjF,qEAAqE;AACrE,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,CAYvD;AAiCD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,CA2frE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A token unique to this launch of the app, stamped into every generated id.
3
+ *
4
+ * Every id counter here restarts at 1 when the process does, which was
5
+ * harmless for as long as nothing outlived a reload. Ask Buoy's transcript now
6
+ * does: a restored conversation comes back carrying `rc1`, `ui1` and `m1`, the
7
+ * next turn generates `rc1` again, and React sees two children with the same
8
+ * key — it renders one of them twice and drops the other. That is both halves
9
+ * of the report this fixes: the "two children with the same key `rc1`" warning,
10
+ * and the bag card appearing twice after a reload.
11
+ *
12
+ * Seeding the counters from the restored data instead would not work. A saved
13
+ * transcript is trimmed from the oldest end and its ids are not contiguous, so
14
+ * the highest id present is not the highest id ever issued — and blocks that
15
+ * were dropped by the cap would hand their ids straight back out.
16
+ */
17
+ export declare const RUN_ID: string;
18
+ /** `<prefix><run>-<n>`: unique within a run by the counter, across runs by the token. */
19
+ export declare function idFactory(prefix: string): () => string;
20
+ //# sourceMappingURL=runId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runId.d.ts","sourceRoot":"","sources":["../../../src/blocks/runId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM,QAAyC,CAAC;AAE7D,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,MAAM,CAGtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"uiTool.d.ts","sourceRoot":"","sources":["../../../src/blocks/uiTool.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAqB,KAAK,KAAK,EAAkB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAExF,eAAO,MAAM,YAAY,YAAY,CAAC;AAsCtC,mFAAmF;AACnF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAyVnD,CAAC;AAgCF,2CAA2C;AAC3C,wBAAgB,cAAc,IAAI,YAAY,CAiB7C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAoCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAsCzE"}
1
+ {"version":3,"file":"uiTool.d.ts","sourceRoot":"","sources":["../../../src/blocks/uiTool.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAqB,KAAK,KAAK,EAAkB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAExF,eAAO,MAAM,YAAY,YAAY,CAAC;AAsCtC,mFAAmF;AACnF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAyVnD,CAAC;AAgCF,2CAA2C;AAC3C,wBAAgB,cAAc,IAAI,YAAY,CAiB7C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAoCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAsCzE"}
@@ -24,6 +24,18 @@ import { type Block } from "../blocks/types";
24
24
  export type TurnEvent = {
25
25
  type: "text";
26
26
  delta: string;
27
+ }
28
+ /**
29
+ * The model's own reasoning for this turn, when the provider reports any.
30
+ *
31
+ * Only some models produce it: Claude emits thinking blocks by default, and
32
+ * an OpenAI reasoning model reports a summary; gpt-4.1 and friends produce
33
+ * nothing here at all. So a UI showing this must be honest about it being
34
+ * absent rather than looking broken.
35
+ */
36
+ | {
37
+ type: "reasoning";
38
+ text: string;
27
39
  } | {
28
40
  type: "tool-start";
29
41
  id: string;
@@ -33,11 +45,31 @@ export type TurnEvent = {
33
45
  label: string;
34
46
  /** The catalog sentence, for a row the user expands. */
35
47
  description: string;
48
+ /**
49
+ * What the model actually asked for, post-validation. The label says
50
+ * "Open /bag"; this says which path, which key, which value — the
51
+ * difference between "a step ran" and "here is what it did".
52
+ */
53
+ params: Record<string, unknown>;
54
+ /** read / write / destructive, from the catalog. */
55
+ effect: "read" | "write" | "destructive";
36
56
  } | {
37
57
  type: "tool-end";
38
58
  id: string;
39
59
  ok: boolean;
40
60
  summary: string;
61
+ /** Wall time for the dispatch, so a slow step is findable. */
62
+ durationMs: number;
63
+ /**
64
+ * The redacted result the MODEL was given, capped. Present only for a
65
+ * step that succeeded.
66
+ *
67
+ * This is what turns a trace into a debugging artefact: "the write
68
+ * succeeded" and "the write returned `{ok:false}`" look identical
69
+ * without it, and the second is usually the bug. It is the same
70
+ * redacted string the receipt is built from — never the raw value.
71
+ */
72
+ result?: string;
41
73
  }
42
74
  /** A block to render — a receipt from a tool result, or a model-authored block. */
43
75
  | {
@@ -1 +1 @@
1
- {"version":3,"file":"runAgentTurn.d.ts","sourceRoot":"","sources":["../../../src/engine/runAgentTurn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runAgentTurn.d.ts","sourceRoot":"","sources":["../../../src/engine/runAgentTurn.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export { applyDefaults, validateParams, type ValidationResult, } from "./catalog
14
14
  export { projectSnapshot, SNAPSHOT_ACTION } from "./catalog/snapshotReads";
15
15
  export { createAnthropicProvider } from "./providers/anthropic";
16
16
  export { createOpenAIProvider } from "./providers/openai";
17
- export type { AgentMessage, Provider, ProviderConfig, ProviderRequest, StreamEvent, TokenUsage, ToolCall, ToolResult, } from "./providers/types";
17
+ export type { AgentMessage, Provider, ProviderConfig, ProviderRequest, StreamEvent, ThinkingBlock, TokenUsage, ToolCall, ToolResult, } from "./providers/types";
18
18
  export { runAgentTurn, runGatedAction, type GatedActionInput, type GatedActionOutcome, type RunTurnInput, type TurnEvent, } from "./engine/runAgentTurn";
19
19
  export { buildSystemPrompt, type ContextPack, type SystemPromptInput, } from "./engine/systemPrompt";
20
20
  export { buildContextDigest, type BuildContextInput } from "./context/buildContextPack";
@@ -25,5 +25,6 @@ export { UI_TOOL_NAME, UI_PARAMS, uiProviderTool, buildUiBlock } from "./blocks/
25
25
  export { projectReceipt, shallowDiff, type ReceiptInput } from "./blocks/receipts";
26
26
  export { decide, describeCall, DEFAULT_REQUIRE_APPROVAL, resolveRequireApproval, type AllowRule, type AskBuoyPolicy, type Decision, } from "./policy/policy";
27
27
  export { redact, registerSelfEndpoint, isSelfTraffic, stripSelfTraffic, } from "./policy/redact";
28
- export { createAskBuoySession, type AskBuoySession, type AskBuoySessionConfig } from "./session";
28
+ export { idFactory, RUN_ID } from "./blocks/runId";
29
+ export { createAskBuoySession, resumableHistory, type AskBuoySession, type AskBuoySessionConfig, } from "./session";
29
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,QAAQ,GACT,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,QAAQ,GACT,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC"}
@@ -16,6 +16,11 @@
16
16
  * user content array with any text after, and that user message must
17
17
  * immediately follow the assistant turn. "Here are the results:" placed
18
18
  * before the blocks is an instant 400.
19
+ * 5. Every current Claude model thinks by DEFAULT, and a `thinking` block must
20
+ * be replayed VERBATIM (signature and all) at the FRONT of the assistant
21
+ * turn it came from whenever that turn's tool results are sent back. An
22
+ * adapter that keeps only text and tool_use 400s on the second request of
23
+ * every tool-using turn — which is every turn Ask Buoy actually makes.
19
24
  */
20
25
  import type { Provider, ProviderConfig } from "./types";
21
26
  export declare function createAnthropicProvider(config: ProviderConfig): Provider;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EAKf,MAAM,SAAS,CAAC;AAsCjB,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAkLxE"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EAMf,MAAM,SAAS,CAAC;AAyCjB,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CA0MxE"}
@@ -24,6 +24,25 @@ export interface ToolResult {
24
24
  content: string;
25
25
  isError?: boolean;
26
26
  }
27
+ /**
28
+ * An Anthropic thinking block, kept verbatim.
29
+ *
30
+ * Every current Claude model thinks by DEFAULT, and the API requires the
31
+ * thinking blocks of the assistant turn that made a tool call to come back
32
+ * unchanged with the tool results — signature included. Drop them and the
33
+ * next request is a 400 ("Expected `thinking` or `redacted_thinking`"), which
34
+ * is every tool-using turn, i.e. all of them. So the adapter captures these
35
+ * and replays them; nothing else in the engine reads them, and the OpenAI
36
+ * adapter ignores the field.
37
+ */
38
+ export type ThinkingBlock = {
39
+ type: "thinking";
40
+ thinking: string;
41
+ signature: string;
42
+ } | {
43
+ type: "redacted_thinking";
44
+ data: string;
45
+ };
27
46
  export type AgentMessage = {
28
47
  role: "user";
29
48
  text: string;
@@ -31,6 +50,7 @@ export type AgentMessage = {
31
50
  role: "assistant";
32
51
  text: string;
33
52
  toolCalls?: ToolCall[];
53
+ thinking?: ThinkingBlock[];
34
54
  } | {
35
55
  role: "tool-results";
36
56
  results: ToolResult[];
@@ -43,6 +63,11 @@ export type StreamEvent = {
43
63
  type: "tool-call";
44
64
  call: ToolCall;
45
65
  }
66
+ /** A completed thinking block, to be replayed on the next request. */
67
+ | {
68
+ type: "thinking";
69
+ block: ThinkingBlock;
70
+ }
46
71
  /** Mid-stream provider error. Anthropic can emit these on a committed 200. */
47
72
  | {
48
73
  type: "error";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IACvB,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AAEpD,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AACvC,8EAA8E;GAC5E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC1C;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACrE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,12 @@ type RunApproval = (input: {
38
38
  export interface AskBuoySession {
39
39
  readonly ledger: EffectLedger;
40
40
  readonly messages: AgentMessage[];
41
+ /**
42
+ * Reinstate a conversation from a previous run of the app, so the model
43
+ * remembers what was said before a reload or a crash. The history is
44
+ * sanitised first — see `resumableHistory`.
45
+ */
46
+ restore(history: AgentMessage[]): void;
41
47
  /** Probe the app for grounding. Safe to call more than once. */
42
48
  prime(): Promise<void>;
43
49
  /**
@@ -53,6 +59,23 @@ export interface AskBuoySession {
53
59
  send(text: string, signal?: AbortSignal): AsyncGenerator<TurnEvent, void, void>;
54
60
  reset(): void;
55
61
  }
62
+ /**
63
+ * A stored history, made safe to send as the start of a new request.
64
+ *
65
+ * Two things make a saved conversation unusable as-is.
66
+ *
67
+ * A history captured mid-turn ends with an assistant message whose `tool_use`
68
+ * blocks were never answered, or with the `tool_result`s and no reply after
69
+ * them. Every provider rejects both: the blocks must pair up. So this rewinds
70
+ * to the last COMPLETE round — an assistant message that made no tool calls,
71
+ * which is where a conversation is always safe to resume from.
72
+ *
73
+ * And thinking blocks are dropped. Anthropic needs them replayed only when the
74
+ * very next thing sent is that turn's `tool_result`s; a restored conversation
75
+ * always resumes with a fresh user message instead, so their signatures are
76
+ * dead weight at best and a stale-signature 400 at worst.
77
+ */
78
+ export declare function resumableHistory(history: AgentMessage[]): AgentMessage[];
56
79
  export declare function createAskBuoySession(config: AskBuoySessionConfig): AskBuoySession;
57
80
  export {};
58
81
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAWA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAY,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEtE,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC,QAAQ,EAAE,UAAU,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;IAClC,gEAAgE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChF,KAAK,IAAI,IAAI,CAAC;CACf;AAsCD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAqHjF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAWA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAY,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEtE,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC,QAAQ,EAAE,UAAU,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;IAClC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACvC,gEAAgE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChF,KAAK,IAAI,IAAI,CAAC;CACf;AAsCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAUxE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CA4HjF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/agent-core",
3
- "version": "7.0.34",
3
+ "version": "7.0.35",
4
4
  "description": "Headless agent core for Ask Buoy - the tool catalog, BYO-model providers, turn loop and effect ledger that let an LLM drive Buoy devtools",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",