@skillstate/opencode 2.2.2 → 3.0.1
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/README.md +194 -142
- package/dist/feedback.d.ts +178 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +235 -0
- package/dist/feedback.js.map +1 -0
- package/dist/index.d.ts +58 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- package/dist/mode.d.ts +97 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +111 -0
- package/dist/mode.js.map +1 -0
- package/dist/opencode-adapter.d.ts +10 -46
- package/dist/opencode-adapter.d.ts.map +1 -1
- package/dist/opencode-adapter.js +1 -64
- package/dist/opencode-adapter.js.map +1 -1
- package/dist/paper-mode.d.ts +421 -0
- package/dist/paper-mode.d.ts.map +1 -0
- package/dist/paper-mode.js +445 -0
- package/dist/paper-mode.js.map +1 -0
- package/dist/plugin.d.ts +218 -76
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +867 -232
- package/dist/plugin.js.map +1 -1
- package/dist/response-sink.d.ts +208 -0
- package/dist/response-sink.d.ts.map +1 -0
- package/dist/response-sink.js +243 -0
- package/dist/response-sink.js.map +1 -0
- package/dist/runtime.d.ts +203 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +332 -0
- package/dist/runtime.js.map +1 -0
- package/dist/session-registry.d.ts +148 -0
- package/dist/session-registry.d.ts.map +1 -0
- package/dist/session-registry.js +236 -0
- package/dist/session-registry.js.map +1 -0
- package/dist/spec-loader.d.ts +81 -0
- package/dist/spec-loader.d.ts.map +1 -0
- package/dist/spec-loader.js +163 -0
- package/dist/spec-loader.js.map +1 -0
- package/dist/state-store.d.ts +126 -0
- package/dist/state-store.d.ts.map +1 -0
- package/dist/state-store.js +186 -0
- package/dist/state-store.js.map +1 -0
- package/dist/step-boundary.d.ts +91 -0
- package/dist/step-boundary.d.ts.map +1 -0
- package/dist/step-boundary.js +109 -0
- package/dist/step-boundary.js.map +1 -0
- package/dist/system-hint.d.ts +129 -0
- package/dist/system-hint.d.ts.map +1 -0
- package/dist/system-hint.js +166 -0
- package/dist/system-hint.js.map +1 -0
- package/dist/tools.d.ts +148 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +350 -0
- package/dist/tools.js.map +1 -0
- package/package.json +3 -2
- package/dist/plugin-types.d.ts +0 -71
- package/dist/plugin-types.d.ts.map +0 -1
- package/dist/plugin-types.js +0 -8
- package/dist/plugin-types.js.map +0 -1
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write side of the paper transition, for the OpenCode host.
|
|
3
|
+
*
|
|
4
|
+
* ── The problem this solves ───────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* A.4 ends the prompt with a directive the model must obey:
|
|
7
|
+
*
|
|
8
|
+
* > 2. A JSON block fenced with json … containing both your State Patch and
|
|
9
|
+
* > your Action. The JSON block MUST have exactly these two keys:
|
|
10
|
+
* > `{ "state_patch": { … }, "action": "…" }`
|
|
11
|
+
*
|
|
12
|
+
* If nothing reads that block, Σₜ is frozen at whatever it held when paper
|
|
13
|
+
* mode was switched on, and every later step re-reads a state that stopped
|
|
14
|
+
* moving. On a long-horizon task — the entire reason the paper exists — that
|
|
15
|
+
* is silent, total failure that looks like the model "refusing to work".
|
|
16
|
+
*
|
|
17
|
+
* The v2 session API has no response hook: `SessionHooks` offers `prompt`,
|
|
18
|
+
* `context`, `compaction`, `generate`, `title`, the request/response HTTP
|
|
19
|
+
* hooks, the WebSocket hooks and `retry` — all of which run BEFORE or AROUND
|
|
20
|
+
* the model call. None of them see the completed assistant text.
|
|
21
|
+
*
|
|
22
|
+
* ── The surface that does carry it ────────────────────────────────────────
|
|
23
|
+
*
|
|
24
|
+
* The server's durable event stream does. `session.text.ended` publishes one
|
|
25
|
+
* finished assistant text block:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* { type: "session.text.ended",
|
|
29
|
+
* data: { sessionID, assistantMessageID, ordinal, text } }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* That is a public, documented, durable event — the same stream the plugin
|
|
33
|
+
* already subscribes to for the session tree. Parsing it with the core's own
|
|
34
|
+
* {@link PromptTransformer.parseResponse} means the A.4 prompt, the parser
|
|
35
|
+
* and the merge are the SAME code the benchmark measures, rather than a
|
|
36
|
+
* second implementation that can drift from the paper.
|
|
37
|
+
*
|
|
38
|
+
* ── What the sink guarantees ──────────────────────────────────────────────
|
|
39
|
+
*
|
|
40
|
+
* - **A rejected response never touches Σₜ** (the paper's Limitations). A
|
|
41
|
+
* missing block, malformed JSON, a missing `state_patch` or a missing
|
|
42
|
+
* `action` returns a result and changes nothing on disk.
|
|
43
|
+
* - **The patch is validated against P's schema** (§3.2) before it is
|
|
44
|
+
* merged, so a hallucinated key or a wrong-typed value is rejected rather
|
|
45
|
+
* than written.
|
|
46
|
+
* - **At most once per block.** Durable events can be replayed after a
|
|
47
|
+
* reconnect, and a replayed block must not apply its patch twice. Blocks
|
|
48
|
+
* are keyed by `assistantMessageID:ordinal` and remembered in a bounded
|
|
49
|
+
* set.
|
|
50
|
+
* - **Failures are values.** Every rejection is a typed
|
|
51
|
+
* {@link SinkOutcome}; nothing here throws into the event loop, and a
|
|
52
|
+
* state-write failure is reported rather than becoming an unhandled
|
|
53
|
+
* rejection that would take the plugin's subscription down.
|
|
54
|
+
*/
|
|
55
|
+
import type { ProceduralSpec, StatePatch } from '@skillstate/core';
|
|
56
|
+
import type { StateChanges } from './state-store.js';
|
|
57
|
+
/** Why a text block did not become a state update. */
|
|
58
|
+
export type SinkRejection =
|
|
59
|
+
/** Not a `session.text.ended` payload, or it had no text. */
|
|
60
|
+
'not_a_text_block'
|
|
61
|
+
/** This exact block was already processed (durable-event replay). */
|
|
62
|
+
| 'duplicate'
|
|
63
|
+
/** The text carried no ```json fence. */
|
|
64
|
+
| 'no_block'
|
|
65
|
+
/** The fence did not contain valid JSON. */
|
|
66
|
+
| 'malformed_json'
|
|
67
|
+
/** Valid JSON, but no `state_patch` object. */
|
|
68
|
+
| 'missing_state_patch'
|
|
69
|
+
/** Valid JSON, but `action` was not a string. */
|
|
70
|
+
| 'missing_action'
|
|
71
|
+
/** The patch failed P's schema (§3.2). */
|
|
72
|
+
| 'schema_invalid'
|
|
73
|
+
/** `state_patch` was an empty object — nothing to write. */
|
|
74
|
+
| 'empty_patch'
|
|
75
|
+
/** The write itself failed; Σₜ is unchanged. */
|
|
76
|
+
| 'write_failed';
|
|
77
|
+
/** The result of feeding one event to the sink. */
|
|
78
|
+
export interface SinkOutcome {
|
|
79
|
+
/** True when Σₜ was updated. */
|
|
80
|
+
readonly applied: boolean;
|
|
81
|
+
/** Set when nothing was written. */
|
|
82
|
+
readonly rejection?: SinkRejection;
|
|
83
|
+
/** The parser's or validator's message, for diagnostics. */
|
|
84
|
+
readonly detail?: string;
|
|
85
|
+
/** The keys the merge changed. Present only when `applied`. */
|
|
86
|
+
readonly changes?: StateChanges;
|
|
87
|
+
/** The action the model asked for. Present only when `applied`. */
|
|
88
|
+
readonly action?: string;
|
|
89
|
+
}
|
|
90
|
+
/** The `{ sessionID, assistantMessageID, ordinal, text }` payload. */
|
|
91
|
+
interface TextEndedEvent {
|
|
92
|
+
readonly type: 'session.text.ended';
|
|
93
|
+
readonly data: {
|
|
94
|
+
readonly sessionID: string;
|
|
95
|
+
readonly assistantMessageID: string;
|
|
96
|
+
readonly ordinal: number;
|
|
97
|
+
readonly text: string;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Whether an event is a completed assistant text block.
|
|
102
|
+
*
|
|
103
|
+
* Exported so a consumer that needs the session id from the same event does
|
|
104
|
+
* not re-implement this shape check — a second copy of the guard would be a
|
|
105
|
+
* second thing to keep in step with the event's actual fields.
|
|
106
|
+
*/
|
|
107
|
+
export declare function isTextEnded(event: unknown): event is TextEndedEvent;
|
|
108
|
+
/**
|
|
109
|
+
* How many processed blocks are remembered for replay suppression.
|
|
110
|
+
*
|
|
111
|
+
* Bounded on purpose: the set lives for the process's lifetime, and an
|
|
112
|
+
* unbounded one would grow with every step of every session a long-lived
|
|
113
|
+
* OpenCode server ever runs. 4096 blocks is far more than the replay window
|
|
114
|
+
* a reconnect can produce, and eviction only costs a redundant write in the
|
|
115
|
+
* pathological case.
|
|
116
|
+
*/
|
|
117
|
+
export declare const DEFAULT_DEDUPE_CAPACITY = 4096;
|
|
118
|
+
/** Dependencies for {@link PaperStateSink}. */
|
|
119
|
+
export interface PaperStateSinkOptions {
|
|
120
|
+
/** Where the patch is written. Runs its own lock + atomic write. */
|
|
121
|
+
readonly store: {
|
|
122
|
+
patch(scope: string, patch: StatePatch): Promise<{
|
|
123
|
+
state: Record<string, unknown>;
|
|
124
|
+
changes: StateChanges;
|
|
125
|
+
}>;
|
|
126
|
+
};
|
|
127
|
+
/** The spec P, for §3.2 validation. */
|
|
128
|
+
readonly spec: ProceduralSpec;
|
|
129
|
+
/** Maps a host session id to its on-disk scope. */
|
|
130
|
+
readonly scopeFor: (sessionID: string) => string;
|
|
131
|
+
/** How many block keys to remember. Defaults to 4096. */
|
|
132
|
+
readonly dedupeCapacity?: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Applies A.4 state patches emitted by the model to a session's Σₜ.
|
|
136
|
+
*
|
|
137
|
+
* One instance per plugin setup. The transformer is the core's, so the parse
|
|
138
|
+
* that runs here is the parse the paper's benchmark measures.
|
|
139
|
+
*/
|
|
140
|
+
export declare class PaperStateSink {
|
|
141
|
+
private readonly store;
|
|
142
|
+
private readonly spec;
|
|
143
|
+
private readonly scopeFor;
|
|
144
|
+
private readonly capacity;
|
|
145
|
+
private readonly transformer;
|
|
146
|
+
private readonly seen;
|
|
147
|
+
constructor(options: PaperStateSinkOptions);
|
|
148
|
+
/**
|
|
149
|
+
* Fold one server event into Σₜ. Returns what happened.
|
|
150
|
+
*
|
|
151
|
+
* Never throws. Events that are not completed assistant text blocks, and
|
|
152
|
+
* every rejected block, come back as an outcome; only a state write that
|
|
153
|
+
* itself fails is reported as `write_failed`, still without throwing.
|
|
154
|
+
*/
|
|
155
|
+
/**
|
|
156
|
+
* Apply a patch the transcript is already carrying, before the next request.
|
|
157
|
+
*
|
|
158
|
+
* ── Why this exists: a read-after-write race with the host ──────────────
|
|
159
|
+
*
|
|
160
|
+
* {@link ingest} learns of a patch from `session.text.ended`, delivered on
|
|
161
|
+
* an async iterator. The host does not wait for this plugin's loop: it
|
|
162
|
+
* starts the next model request as soon as its own agent loop turns, and
|
|
163
|
+
* that request re-enters the `context` hook — which reads Σ — before the
|
|
164
|
+
* event has been processed.
|
|
165
|
+
*
|
|
166
|
+
* Measured on a four-file task: the patch reached disk, and the very next
|
|
167
|
+
* request was served `{"total": 0}` while the file said 11. The model, shown
|
|
168
|
+
* a state that had not moved, re-read files it had already read and
|
|
169
|
+
* overwrote its own total. That reads exactly like a model that cannot
|
|
170
|
+
* accumulate, and it took a diagnostic to tell the two apart.
|
|
171
|
+
*
|
|
172
|
+
* The transcript handed to the context hook already contains the assistant
|
|
173
|
+
* text the model just emitted, so the patch is available here and now, with
|
|
174
|
+
* no dependence on event timing. The durable path is unchanged: the event
|
|
175
|
+
* still arrives and {@link ingest} still applies it — it simply finds the
|
|
176
|
+
* message already marked and declines, so the same patch is never applied
|
|
177
|
+
* twice.
|
|
178
|
+
*/
|
|
179
|
+
recover(sessionID: string, messages: ReadonlyArray<{
|
|
180
|
+
id: string;
|
|
181
|
+
role: string;
|
|
182
|
+
content: unknown;
|
|
183
|
+
}>): Promise<SinkOutcome>;
|
|
184
|
+
ingest(event: unknown): Promise<SinkOutcome>;
|
|
185
|
+
/**
|
|
186
|
+
* Parse, validate and merge one response. Shared by both entry points so the
|
|
187
|
+
* durable path and the recovery path cannot drift on what counts as a valid
|
|
188
|
+
* patch — a second copy of this is a second set of rules to keep in step.
|
|
189
|
+
*/
|
|
190
|
+
private apply;
|
|
191
|
+
/** Forget every remembered block (test isolation, and a clean reload). */
|
|
192
|
+
reset(): void;
|
|
193
|
+
/** How many block keys are currently remembered. */
|
|
194
|
+
get size(): number;
|
|
195
|
+
/**
|
|
196
|
+
* Record a processed block, evicting the oldest while over capacity.
|
|
197
|
+
*
|
|
198
|
+
* `Set` preserves insertion order, so the first key is the oldest. The
|
|
199
|
+
* iterator cannot report exhaustion here: the loop condition requires
|
|
200
|
+
* `size > capacity` and `capacity` is never negative, so the set always
|
|
201
|
+
* holds at least one key and the deletion always makes progress. A
|
|
202
|
+
* `capacity` of 0 is therefore legal and means "remember nothing", which
|
|
203
|
+
* degrades replay suppression to a no-op rather than to an error.
|
|
204
|
+
*/
|
|
205
|
+
private remember;
|
|
206
|
+
}
|
|
207
|
+
export {};
|
|
208
|
+
//# sourceMappingURL=response-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-sink.d.ts","sourceRoot":"","sources":["../src/response-sink.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write side of the paper transition, for the OpenCode host.
|
|
3
|
+
*
|
|
4
|
+
* ── The problem this solves ───────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* A.4 ends the prompt with a directive the model must obey:
|
|
7
|
+
*
|
|
8
|
+
* > 2. A JSON block fenced with json … containing both your State Patch and
|
|
9
|
+
* > your Action. The JSON block MUST have exactly these two keys:
|
|
10
|
+
* > `{ "state_patch": { … }, "action": "…" }`
|
|
11
|
+
*
|
|
12
|
+
* If nothing reads that block, Σₜ is frozen at whatever it held when paper
|
|
13
|
+
* mode was switched on, and every later step re-reads a state that stopped
|
|
14
|
+
* moving. On a long-horizon task — the entire reason the paper exists — that
|
|
15
|
+
* is silent, total failure that looks like the model "refusing to work".
|
|
16
|
+
*
|
|
17
|
+
* The v2 session API has no response hook: `SessionHooks` offers `prompt`,
|
|
18
|
+
* `context`, `compaction`, `generate`, `title`, the request/response HTTP
|
|
19
|
+
* hooks, the WebSocket hooks and `retry` — all of which run BEFORE or AROUND
|
|
20
|
+
* the model call. None of them see the completed assistant text.
|
|
21
|
+
*
|
|
22
|
+
* ── The surface that does carry it ────────────────────────────────────────
|
|
23
|
+
*
|
|
24
|
+
* The server's durable event stream does. `session.text.ended` publishes one
|
|
25
|
+
* finished assistant text block:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* { type: "session.text.ended",
|
|
29
|
+
* data: { sessionID, assistantMessageID, ordinal, text } }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* That is a public, documented, durable event — the same stream the plugin
|
|
33
|
+
* already subscribes to for the session tree. Parsing it with the core's own
|
|
34
|
+
* {@link PromptTransformer.parseResponse} means the A.4 prompt, the parser
|
|
35
|
+
* and the merge are the SAME code the benchmark measures, rather than a
|
|
36
|
+
* second implementation that can drift from the paper.
|
|
37
|
+
*
|
|
38
|
+
* ── What the sink guarantees ──────────────────────────────────────────────
|
|
39
|
+
*
|
|
40
|
+
* - **A rejected response never touches Σₜ** (the paper's Limitations). A
|
|
41
|
+
* missing block, malformed JSON, a missing `state_patch` or a missing
|
|
42
|
+
* `action` returns a result and changes nothing on disk.
|
|
43
|
+
* - **The patch is validated against P's schema** (§3.2) before it is
|
|
44
|
+
* merged, so a hallucinated key or a wrong-typed value is rejected rather
|
|
45
|
+
* than written.
|
|
46
|
+
* - **At most once per block.** Durable events can be replayed after a
|
|
47
|
+
* reconnect, and a replayed block must not apply its patch twice. Blocks
|
|
48
|
+
* are keyed by `assistantMessageID:ordinal` and remembered in a bounded
|
|
49
|
+
* set.
|
|
50
|
+
* - **Failures are values.** Every rejection is a typed
|
|
51
|
+
* {@link SinkOutcome}; nothing here throws into the event loop, and a
|
|
52
|
+
* state-write failure is reported rather than becoming an unhandled
|
|
53
|
+
* rejection that would take the plugin's subscription down.
|
|
54
|
+
*/
|
|
55
|
+
import { PromptTransformer, validatePatch } from '@skillstate/core';
|
|
56
|
+
/**
|
|
57
|
+
* Whether an event is a completed assistant text block.
|
|
58
|
+
*
|
|
59
|
+
* Exported so a consumer that needs the session id from the same event does
|
|
60
|
+
* not re-implement this shape check — a second copy of the guard would be a
|
|
61
|
+
* second thing to keep in step with the event's actual fields.
|
|
62
|
+
*/
|
|
63
|
+
export function isTextEnded(event) {
|
|
64
|
+
if (typeof event !== 'object' || event === null)
|
|
65
|
+
return false;
|
|
66
|
+
const type = event.type;
|
|
67
|
+
if (type !== 'session.text.ended')
|
|
68
|
+
return false;
|
|
69
|
+
const data = event.data;
|
|
70
|
+
if (typeof data !== 'object' || data === null)
|
|
71
|
+
return false;
|
|
72
|
+
const record = data;
|
|
73
|
+
return (typeof record['sessionID'] === 'string' &&
|
|
74
|
+
typeof record['assistantMessageID'] === 'string' &&
|
|
75
|
+
typeof record['ordinal'] === 'number' &&
|
|
76
|
+
typeof record['text'] === 'string');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* How many processed blocks are remembered for replay suppression.
|
|
80
|
+
*
|
|
81
|
+
* Bounded on purpose: the set lives for the process's lifetime, and an
|
|
82
|
+
* unbounded one would grow with every step of every session a long-lived
|
|
83
|
+
* OpenCode server ever runs. 4096 blocks is far more than the replay window
|
|
84
|
+
* a reconnect can produce, and eviction only costs a redundant write in the
|
|
85
|
+
* pathological case.
|
|
86
|
+
*/
|
|
87
|
+
export const DEFAULT_DEDUPE_CAPACITY = 4096;
|
|
88
|
+
const NOT_A_TEXT_BLOCK = { applied: false, rejection: 'not_a_text_block' };
|
|
89
|
+
/** The key the recovery path claims a message under, shared with `ingest`. */
|
|
90
|
+
function recoveredKey(messageID) {
|
|
91
|
+
return `${messageID}:recovered`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The most recent assistant text in a transcript, or `undefined`.
|
|
95
|
+
*
|
|
96
|
+
* Scans backwards because the newest is the one being recovered, and because
|
|
97
|
+
* a transcript can hold several assistant messages whose earlier patches are
|
|
98
|
+
* long since applied. Only text parts count: a reasoning or tool-call part
|
|
99
|
+
* carries no patch, and treating one as a response would reject a message that
|
|
100
|
+
* was never a rejection.
|
|
101
|
+
*/
|
|
102
|
+
function lastAssistantText(messages) {
|
|
103
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
104
|
+
const message = messages[i];
|
|
105
|
+
if (message.role !== 'assistant' || !Array.isArray(message.content))
|
|
106
|
+
continue;
|
|
107
|
+
for (const part of message.content) {
|
|
108
|
+
if (part?.type === 'text' && typeof part.text === 'string' && part.text.length > 0) {
|
|
109
|
+
return { id: message.id, text: part.text };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
function reject(rejection, detail) {
|
|
116
|
+
return detail === undefined ? { applied: false, rejection } : { applied: false, rejection, detail };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Applies A.4 state patches emitted by the model to a session's Σₜ.
|
|
120
|
+
*
|
|
121
|
+
* One instance per plugin setup. The transformer is the core's, so the parse
|
|
122
|
+
* that runs here is the parse the paper's benchmark measures.
|
|
123
|
+
*/
|
|
124
|
+
export class PaperStateSink {
|
|
125
|
+
store;
|
|
126
|
+
spec;
|
|
127
|
+
scopeFor;
|
|
128
|
+
capacity;
|
|
129
|
+
transformer = new PromptTransformer();
|
|
130
|
+
seen = new Set();
|
|
131
|
+
constructor(options) {
|
|
132
|
+
this.store = options.store;
|
|
133
|
+
this.spec = options.spec;
|
|
134
|
+
this.scopeFor = options.scopeFor;
|
|
135
|
+
this.capacity = options.dedupeCapacity ?? DEFAULT_DEDUPE_CAPACITY;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Fold one server event into Σₜ. Returns what happened.
|
|
139
|
+
*
|
|
140
|
+
* Never throws. Events that are not completed assistant text blocks, and
|
|
141
|
+
* every rejected block, come back as an outcome; only a state write that
|
|
142
|
+
* itself fails is reported as `write_failed`, still without throwing.
|
|
143
|
+
*/
|
|
144
|
+
/**
|
|
145
|
+
* Apply a patch the transcript is already carrying, before the next request.
|
|
146
|
+
*
|
|
147
|
+
* ── Why this exists: a read-after-write race with the host ──────────────
|
|
148
|
+
*
|
|
149
|
+
* {@link ingest} learns of a patch from `session.text.ended`, delivered on
|
|
150
|
+
* an async iterator. The host does not wait for this plugin's loop: it
|
|
151
|
+
* starts the next model request as soon as its own agent loop turns, and
|
|
152
|
+
* that request re-enters the `context` hook — which reads Σ — before the
|
|
153
|
+
* event has been processed.
|
|
154
|
+
*
|
|
155
|
+
* Measured on a four-file task: the patch reached disk, and the very next
|
|
156
|
+
* request was served `{"total": 0}` while the file said 11. The model, shown
|
|
157
|
+
* a state that had not moved, re-read files it had already read and
|
|
158
|
+
* overwrote its own total. That reads exactly like a model that cannot
|
|
159
|
+
* accumulate, and it took a diagnostic to tell the two apart.
|
|
160
|
+
*
|
|
161
|
+
* The transcript handed to the context hook already contains the assistant
|
|
162
|
+
* text the model just emitted, so the patch is available here and now, with
|
|
163
|
+
* no dependence on event timing. The durable path is unchanged: the event
|
|
164
|
+
* still arrives and {@link ingest} still applies it — it simply finds the
|
|
165
|
+
* message already marked and declines, so the same patch is never applied
|
|
166
|
+
* twice.
|
|
167
|
+
*/
|
|
168
|
+
async recover(sessionID, messages) {
|
|
169
|
+
const latest = lastAssistantText(messages);
|
|
170
|
+
if (latest === undefined)
|
|
171
|
+
return NOT_A_TEXT_BLOCK;
|
|
172
|
+
const key = recoveredKey(latest.id);
|
|
173
|
+
if (this.seen.has(key))
|
|
174
|
+
return reject('duplicate');
|
|
175
|
+
return this.apply(key, sessionID, latest.text);
|
|
176
|
+
}
|
|
177
|
+
async ingest(event) {
|
|
178
|
+
if (!isTextEnded(event))
|
|
179
|
+
return NOT_A_TEXT_BLOCK;
|
|
180
|
+
const { sessionID, assistantMessageID, ordinal, text } = event.data;
|
|
181
|
+
const key = `${assistantMessageID}:${ordinal}`;
|
|
182
|
+
// The recovery path marks the same message under a different suffix, and
|
|
183
|
+
// it runs first. Without this check the patch would be merged twice, which
|
|
184
|
+
// is worse than the race it fixes: an accumulator would double its own
|
|
185
|
+
// total.
|
|
186
|
+
if (this.seen.has(key) || this.seen.has(recoveredKey(assistantMessageID))) {
|
|
187
|
+
return reject('duplicate');
|
|
188
|
+
}
|
|
189
|
+
return this.apply(key, sessionID, text);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Parse, validate and merge one response. Shared by both entry points so the
|
|
193
|
+
* durable path and the recovery path cannot drift on what counts as a valid
|
|
194
|
+
* patch — a second copy of this is a second set of rules to keep in step.
|
|
195
|
+
*/
|
|
196
|
+
async apply(key, sessionID, text) {
|
|
197
|
+
this.remember(key);
|
|
198
|
+
const parsed = this.transformer.parseResponse(text);
|
|
199
|
+
if (!parsed.ok)
|
|
200
|
+
return reject(parsed.reason, parsed.detail);
|
|
201
|
+
const patch = parsed.patch;
|
|
202
|
+
if (Object.keys(patch).length === 0)
|
|
203
|
+
return reject('empty_patch');
|
|
204
|
+
// §3.2 — an unknown key or a wrong type is rejected before the merge,
|
|
205
|
+
// so a malformed patch can never reach disk.
|
|
206
|
+
const validation = validatePatch(this.spec.schema, patch);
|
|
207
|
+
if (!validation.valid)
|
|
208
|
+
return reject('schema_invalid', validation.error);
|
|
209
|
+
try {
|
|
210
|
+
const { changes } = await this.store.patch(this.scopeFor(sessionID), patch);
|
|
211
|
+
return { applied: true, changes, action: parsed.action };
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
return reject('write_failed', String(error));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** Forget every remembered block (test isolation, and a clean reload). */
|
|
218
|
+
reset() {
|
|
219
|
+
this.seen.clear();
|
|
220
|
+
}
|
|
221
|
+
/** How many block keys are currently remembered. */
|
|
222
|
+
get size() {
|
|
223
|
+
return this.seen.size;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Record a processed block, evicting the oldest while over capacity.
|
|
227
|
+
*
|
|
228
|
+
* `Set` preserves insertion order, so the first key is the oldest. The
|
|
229
|
+
* iterator cannot report exhaustion here: the loop condition requires
|
|
230
|
+
* `size > capacity` and `capacity` is never negative, so the set always
|
|
231
|
+
* holds at least one key and the deletion always makes progress. A
|
|
232
|
+
* `capacity` of 0 is therefore legal and means "remember nothing", which
|
|
233
|
+
* degrades replay suppression to a no-op rather than to an error.
|
|
234
|
+
*/
|
|
235
|
+
remember(key) {
|
|
236
|
+
this.seen.add(key);
|
|
237
|
+
while (this.seen.size > this.capacity) {
|
|
238
|
+
const [oldest] = this.seen;
|
|
239
|
+
this.seen.delete(oldest);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=response-sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-sink.js","sourceRoot":"","sources":["../src/response-sink.ts"],"names":[],"mappings":"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"}
|