synartesis 0.6.10 → 0.6.12
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/CHANGELOG.md +56 -0
- package/dist/{chunk-DRDKIFD3.js → chunk-FUVEHRJP.js} +18 -1
- package/dist/cli.js +1 -1
- package/dist/proxy.js +1 -1
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
What changed, and why it mattered. Dates are release dates.
|
|
4
4
|
|
|
5
|
+
## 0.6.12 — 2026-09-13
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
|
|
9
|
+
- **Nine advisories, none of them ours, all of them shipped anyway.** Four
|
|
10
|
+
high and five moderate arrived through one dependency's dependencies --
|
|
11
|
+
`fast-uri`, `qs` and `hono`, by way of the MCP SDK. Nothing in the published
|
|
12
|
+
npm package contained them: that bundle imports the SDK rather than inlining
|
|
13
|
+
it, so a fresh install resolves patched versions on its own. The desktop
|
|
14
|
+
application is the opposite -- it bundles everything, so it was carrying
|
|
15
|
+
`fast-uri` 3.1.5 and its four high advisories into every installer. Pinned to
|
|
16
|
+
patched versions; `pnpm audit --prod` now reports nothing.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Two lookups that ran while somebody was waiting were full table scans.**
|
|
21
|
+
Finding a standing approval happens twice on every call that needs one, and
|
|
22
|
+
listing what is held backs both `synartesis gates` and the console. Neither
|
|
23
|
+
had an index, so both read every row in the journal -- including the
|
|
24
|
+
snapshots, which are the largest column there. At fifty thousand actions with
|
|
25
|
+
two-kilobyte snapshots, measured: 61ms and 56ms, on every irreversible call,
|
|
26
|
+
growing with the journal.
|
|
27
|
+
|
|
28
|
+
Both are now indexed: **61ms to 0.01ms, and 56ms to nothing.**
|
|
29
|
+
|
|
30
|
+
Deliberately without a schema version bump. This build refuses to open a
|
|
31
|
+
journal written by a different schema, so bumping would have told everybody
|
|
32
|
+
with history to abandon it in exchange for an index. Adding an index changes
|
|
33
|
+
no row and no meaning, the statement is idempotent, and it runs on every
|
|
34
|
+
open -- so an existing journal gains both the next time it is opened, and an
|
|
35
|
+
older build opening the same file afterwards neither notices nor cares.
|
|
36
|
+
|
|
37
|
+
## 0.6.11 — 2026-09-13
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- **A conversation with Gemini died on the round after its first tool call.**
|
|
42
|
+
Gemini 3 signs the reasoning behind every function call it makes, and
|
|
43
|
+
refuses the next request outright if that signature does not come back on
|
|
44
|
+
the part it arrived on: `Function call is missing a thought_signature in
|
|
45
|
+
functionCall parts`. Nothing here was keeping it. The signature is now
|
|
46
|
+
carried through the loop and handed back untouched -- opaque, unread, and
|
|
47
|
+
never shown to anybody.
|
|
48
|
+
- **The same failure was waiting in the Claude adapter.** Passing thinking
|
|
49
|
+
blocks back is required when tools are in play, and the adapter was
|
|
50
|
+
rebuilding each assistant turn out of its text and its tool calls alone --
|
|
51
|
+
so the first tool call would have worked and the round after it would have
|
|
52
|
+
been a 400. The thinking blocks are kept in the order they were produced,
|
|
53
|
+
signature intact, and go back at the front of the turn they belong to.
|
|
54
|
+
- The loop between the two is what actually lost them, and now has a test of
|
|
55
|
+
its own: the adapters were each correct in isolation.
|
|
56
|
+
|
|
57
|
+
Nothing changes for OpenAI-compatible endpoints -- Mistral, Ollama, LM Studio,
|
|
58
|
+
vLLM, OpenAI itself. That protocol asks for nothing back, and inventing
|
|
59
|
+
something to send would be worse than sending nothing.
|
|
60
|
+
|
|
5
61
|
## 0.6.10 — 2026-09-13
|
|
6
62
|
|
|
7
63
|
### Added
|
|
@@ -240,6 +240,23 @@ CREATE TABLE IF NOT EXISTS actions (
|
|
|
240
240
|
);
|
|
241
241
|
|
|
242
242
|
CREATE INDEX IF NOT EXISTS actions_by_run ON actions(run_id, seq);
|
|
243
|
+
|
|
244
|
+
-- Deliberately not a schema version bump. Adding an index changes no row and
|
|
245
|
+
-- no meaning, IF NOT EXISTS makes it idempotent, and the statement is run on
|
|
246
|
+
-- every open -- so a journal written months ago gains these the next time it
|
|
247
|
+
-- is opened, and an older build opening the same file afterwards neither
|
|
248
|
+
-- notices nor cares. A version bump would have been the opposite: this build
|
|
249
|
+
-- refuses to open a journal from a different schema, and telling somebody to
|
|
250
|
+
-- abandon everything an agent has ever done in order to gain an index would
|
|
251
|
+
-- be a poor trade.
|
|
252
|
+
--
|
|
253
|
+
-- Both of these sit in front of a person waiting. findApproval runs twice on
|
|
254
|
+
-- every gated call and findGated backs the gates command and the console;
|
|
255
|
+
-- without them each is a full scan over rows that carry the snapshots, which
|
|
256
|
+
-- is the largest thing in the table. Measured at fifty thousand actions with
|
|
257
|
+
-- two-kilobyte snapshots: 61ms to 0.01ms, and 56ms to 0.00ms.
|
|
258
|
+
CREATE INDEX IF NOT EXISTS actions_approved ON actions(server, tool, status, approved_at);
|
|
259
|
+
CREATE INDEX IF NOT EXISTS actions_gated ON actions(status, ts);
|
|
243
260
|
`;
|
|
244
261
|
|
|
245
262
|
// src/journal/journal.ts
|
|
@@ -1580,4 +1597,4 @@ export {
|
|
|
1580
1597
|
observeState,
|
|
1581
1598
|
connectStdioUpstream
|
|
1582
1599
|
};
|
|
1583
|
-
//# sourceMappingURL=chunk-
|
|
1600
|
+
//# sourceMappingURL=chunk-FUVEHRJP.js.map
|
package/dist/cli.js
CHANGED
package/dist/proxy.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "synartesis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.12",
|
|
4
4
|
"description": "An undo layer for AI agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -70,7 +70,12 @@
|
|
|
70
70
|
"pnpm": {
|
|
71
71
|
"neverBuiltDependencies": [
|
|
72
72
|
"better-sqlite3"
|
|
73
|
-
]
|
|
73
|
+
],
|
|
74
|
+
"overrides": {
|
|
75
|
+
"fast-uri": "^3.1.7",
|
|
76
|
+
"hono": "^4.13.7",
|
|
77
|
+
"qs": "^6.16.0"
|
|
78
|
+
}
|
|
74
79
|
},
|
|
75
80
|
"devDependencies": {
|
|
76
81
|
"@anthropic-ai/sdk": "^0.125.0",
|