@buoy-gg/agent-core 7.0.33 → 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.
- package/lib/commonjs/blocks/receipts.js +26 -23
- package/lib/commonjs/blocks/receipts.js.map +1 -1
- package/lib/commonjs/blocks/runId.js +31 -0
- package/lib/commonjs/blocks/runId.js.map +1 -0
- package/lib/commonjs/blocks/uiTool.js +3 -2
- package/lib/commonjs/blocks/uiTool.js.map +1 -1
- package/lib/commonjs/engine/runAgentTurn.js +37 -8
- package/lib/commonjs/engine/runAgentTurn.js.map +1 -1
- package/lib/commonjs/engine/systemPrompt.js +1 -1
- package/lib/commonjs/engine/systemPrompt.js.map +1 -1
- package/lib/commonjs/index.js +23 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/providers/anthropic.js +44 -1
- package/lib/commonjs/providers/anthropic.js.map +1 -1
- package/lib/commonjs/session.js +36 -0
- package/lib/commonjs/session.js.map +1 -1
- package/lib/module/blocks/receipts.js +26 -23
- package/lib/module/blocks/receipts.js.map +1 -1
- package/lib/module/blocks/runId.js +26 -0
- package/lib/module/blocks/runId.js.map +1 -0
- package/lib/module/blocks/uiTool.js +3 -2
- package/lib/module/blocks/uiTool.js.map +1 -1
- package/lib/module/engine/runAgentTurn.js +37 -8
- package/lib/module/engine/runAgentTurn.js.map +1 -1
- package/lib/module/engine/systemPrompt.js +1 -1
- package/lib/module/engine/systemPrompt.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/providers/anthropic.js +44 -1
- package/lib/module/providers/anthropic.js.map +1 -1
- package/lib/module/session.js +35 -0
- package/lib/module/session.js.map +1 -1
- package/lib/typescript/blocks/receipts.d.ts +0 -10
- package/lib/typescript/blocks/receipts.d.ts.map +1 -1
- package/lib/typescript/blocks/runId.d.ts +20 -0
- package/lib/typescript/blocks/runId.d.ts.map +1 -0
- package/lib/typescript/blocks/uiTool.d.ts.map +1 -1
- package/lib/typescript/engine/runAgentTurn.d.ts +32 -0
- package/lib/typescript/engine/runAgentTurn.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/providers/anthropic.d.ts +5 -0
- package/lib/typescript/providers/anthropic.d.ts.map +1 -1
- package/lib/typescript/providers/types.d.ts +25 -0
- package/lib/typescript/providers/types.d.ts.map +1 -1
- package/lib/typescript/session.d.ts +23 -0
- package/lib/typescript/session.d.ts.map +1 -1
- 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 === "
|
|
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","
|
|
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":[]}
|
package/lib/module/session.js
CHANGED
|
@@ -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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,kBAAkB,QAAQ,4BAA4B;AAC/D,SAASC,YAAY,QAAwB,uBAAuB;AACpE,SAASC,iBAAiB,QAA0B,uBAAuB;AAC3E,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,uBAAuB,QAAQ,uBAAuB;AAC/D,SAASC,oBAAoB,QAAQ,oBAAoB;AAEzD,SAASC,sBAAsB,QAA4B,iBAAiB;AAC5E,SAASC,oBAAoB,QAAQ,iBAAiB;
|
|
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":"
|
|
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;
|
|
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAoB,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAKzF,OAAO,KAAK,
|
|
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 {
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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.
|
|
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",
|