@lightining/general.ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +178 -0
- package/README.md +809 -0
- package/dist/defaults.d.ts +7 -0
- package/dist/defaults.js +58 -0
- package/dist/defaults.js.map +1 -0
- package/dist/endpoint-adapters.d.ts +12 -0
- package/dist/endpoint-adapters.js +225 -0
- package/dist/endpoint-adapters.js.map +1 -0
- package/dist/general-ai.d.ts +13 -0
- package/dist/general-ai.js +54 -0
- package/dist/general-ai.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/memory.d.ts +6 -0
- package/dist/memory.js +10 -0
- package/dist/memory.js.map +1 -0
- package/dist/prompts/endpoint-chat-completions.txt +7 -0
- package/dist/prompts/endpoint-responses.txt +7 -0
- package/dist/prompts/identity.txt +17 -0
- package/dist/prompts/memory.txt +9 -0
- package/dist/prompts/personality.txt +9 -0
- package/dist/prompts/protocol.txt +54 -0
- package/dist/prompts/safety.txt +10 -0
- package/dist/prompts/task.txt +7 -0
- package/dist/prompts/thinking.txt +10 -0
- package/dist/prompts/tools-subagents.txt +18 -0
- package/dist/prompts.d.ts +11 -0
- package/dist/prompts.js +126 -0
- package/dist/prompts.js.map +1 -0
- package/dist/protocol.d.ts +15 -0
- package/dist/protocol.js +393 -0
- package/dist/protocol.js.map +1 -0
- package/dist/runtime.d.ts +20 -0
- package/dist/runtime.js +871 -0
- package/dist/runtime.js.map +1 -0
- package/dist/tools.d.ts +21 -0
- package/dist/tools.js +49 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +358 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.js +115 -0
- package/dist/utils.js.map +1 -0
- package/package.json +63 -0
package/dist/prompts.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { access, readFile } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { PROMPT_SECTION_ORDER, PROMPT_SECTION_TITLES, } from "./defaults.js";
|
|
5
|
+
const PROMPT_FILES = {
|
|
6
|
+
identity: "identity.txt",
|
|
7
|
+
endpoint_responses: "endpoint-responses.txt",
|
|
8
|
+
endpoint_chat_completions: "endpoint-chat-completions.txt",
|
|
9
|
+
protocol: "protocol.txt",
|
|
10
|
+
safety: "safety.txt",
|
|
11
|
+
personality: "personality.txt",
|
|
12
|
+
thinking: "thinking.txt",
|
|
13
|
+
tools_subagents: "tools-subagents.txt",
|
|
14
|
+
memory: "memory.txt",
|
|
15
|
+
task: "task.txt",
|
|
16
|
+
};
|
|
17
|
+
const bundledPromptDir = fileURLToPath(new URL("./prompts/", import.meta.url));
|
|
18
|
+
let bundledPromptCache;
|
|
19
|
+
async function fileExists(path) {
|
|
20
|
+
try {
|
|
21
|
+
await access(path);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function readPromptFile(path) {
|
|
29
|
+
return await readFile(path, "utf8");
|
|
30
|
+
}
|
|
31
|
+
async function loadBundledPromptTemplates() {
|
|
32
|
+
bundledPromptCache ??= (async () => {
|
|
33
|
+
const entries = await Promise.all(PROMPT_SECTION_ORDER.map(async (key) => {
|
|
34
|
+
const file = resolve(bundledPromptDir, PROMPT_FILES[key]);
|
|
35
|
+
return [key, await readPromptFile(file)];
|
|
36
|
+
}));
|
|
37
|
+
return Object.fromEntries(entries);
|
|
38
|
+
})();
|
|
39
|
+
return await bundledPromptCache;
|
|
40
|
+
}
|
|
41
|
+
async function loadPromptPackTemplates(promptPack) {
|
|
42
|
+
if (!promptPack?.rootDir) {
|
|
43
|
+
return promptPack?.sections ?? {};
|
|
44
|
+
}
|
|
45
|
+
const entries = await Promise.all(PROMPT_SECTION_ORDER.map(async (key) => {
|
|
46
|
+
const filePath = resolve(promptPack.rootDir, PROMPT_FILES[key]);
|
|
47
|
+
if (!(await fileExists(filePath))) {
|
|
48
|
+
return [key, undefined];
|
|
49
|
+
}
|
|
50
|
+
return [key, await readPromptFile(filePath)];
|
|
51
|
+
}));
|
|
52
|
+
return {
|
|
53
|
+
...Object.fromEntries(entries),
|
|
54
|
+
...promptPack.sections,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function applyPlaceholders(template, context) {
|
|
58
|
+
return template
|
|
59
|
+
.replace(/\{data:([a-zA-Z0-9_.-]+)\}/g, (_match, key) => {
|
|
60
|
+
const value = context.data[key];
|
|
61
|
+
return value === undefined || value === null ? "" : String(value);
|
|
62
|
+
})
|
|
63
|
+
.replace(/\{block:([a-zA-Z0-9_.-]+)\}/g, (_match, key) => {
|
|
64
|
+
return context.blocks[key] ?? "";
|
|
65
|
+
})
|
|
66
|
+
.trim();
|
|
67
|
+
}
|
|
68
|
+
export async function renderPromptSections(options) {
|
|
69
|
+
const bundled = await loadBundledPromptTemplates();
|
|
70
|
+
const fromPack = await loadPromptPackTemplates(options.promptPack);
|
|
71
|
+
const mergedTemplates = {
|
|
72
|
+
...bundled,
|
|
73
|
+
...fromPack,
|
|
74
|
+
...options.constructorOverrides?.sections,
|
|
75
|
+
...options.runtimeOverrides?.sections,
|
|
76
|
+
};
|
|
77
|
+
const context = {
|
|
78
|
+
data: {
|
|
79
|
+
...options.constructorOverrides?.data,
|
|
80
|
+
...options.runtimeOverrides?.data,
|
|
81
|
+
...options.context.data,
|
|
82
|
+
},
|
|
83
|
+
blocks: {
|
|
84
|
+
...options.constructorOverrides?.blocks,
|
|
85
|
+
...options.runtimeOverrides?.blocks,
|
|
86
|
+
...options.context.blocks,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const sections = [];
|
|
90
|
+
for (const key of PROMPT_SECTION_ORDER) {
|
|
91
|
+
const template = mergedTemplates[key];
|
|
92
|
+
if (!template) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const text = applyPlaceholders(template, context);
|
|
96
|
+
if (!text) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
sections.push({
|
|
100
|
+
key,
|
|
101
|
+
title: PROMPT_SECTION_TITLES[key],
|
|
102
|
+
text,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
let fullPrompt = sections
|
|
106
|
+
.map((section) => `## ${section.title}\n${section.text}`)
|
|
107
|
+
.join("\n\n");
|
|
108
|
+
const raw = {
|
|
109
|
+
...options.constructorOverrides?.raw,
|
|
110
|
+
...options.runtimeOverrides?.raw,
|
|
111
|
+
};
|
|
112
|
+
if (raw.replace) {
|
|
113
|
+
fullPrompt = applyPlaceholders(raw.replace, context);
|
|
114
|
+
}
|
|
115
|
+
if (raw.prepend) {
|
|
116
|
+
fullPrompt = `${applyPlaceholders(raw.prepend, context)}\n\n${fullPrompt}`.trim();
|
|
117
|
+
}
|
|
118
|
+
if (raw.append) {
|
|
119
|
+
fullPrompt = `${fullPrompt}\n\n${applyPlaceholders(raw.append, context)}`.trim();
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
sections,
|
|
123
|
+
fullPrompt,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GeneralAIParsedProtocol, GeneralAIProtocolEvent } from "./types.js";
|
|
2
|
+
interface ParseContext {
|
|
3
|
+
step: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class ProtocolStreamParser {
|
|
6
|
+
#private;
|
|
7
|
+
private readonly context;
|
|
8
|
+
constructor(context: ParseContext);
|
|
9
|
+
push(chunk: string): GeneralAIParsedProtocol;
|
|
10
|
+
end(): GeneralAIParsedProtocol;
|
|
11
|
+
snapshot(): GeneralAIParsedProtocol;
|
|
12
|
+
}
|
|
13
|
+
export declare function parseProtocol(text: string, context?: ParseContext): GeneralAIParsedProtocol;
|
|
14
|
+
export declare function validateProtocolSequence(events: GeneralAIProtocolEvent[], safetyEnabled: boolean): string[];
|
|
15
|
+
export {};
|
package/dist/protocol.js
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
const MARKER_PREFIX = "[[[status:";
|
|
2
|
+
const MARKER_SUFFIX = "]]]";
|
|
3
|
+
const LENIENT_MARKER_SUFFIX = "]]";
|
|
4
|
+
function buildMarker(inner, suffix = MARKER_SUFFIX) {
|
|
5
|
+
return `${MARKER_PREFIX}${inner}${suffix}`;
|
|
6
|
+
}
|
|
7
|
+
function normalizeProtocolText(text) {
|
|
8
|
+
return text
|
|
9
|
+
.replace(/([^\n])(\[\[\[status:)/g, "$1\n$2")
|
|
10
|
+
.replace(/(\[\[\[status:[^\n]*?(?:\]\]\]|\]\](?!\])))(?=[^\n])/g, "$1\n");
|
|
11
|
+
}
|
|
12
|
+
function parseJsonPayload(payload, marker) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(payload);
|
|
15
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
16
|
+
throw new Error("JSON payload must decode to an object.");
|
|
17
|
+
}
|
|
18
|
+
return parsed;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new Error(`Invalid JSON payload in protocol marker ${marker}: ${error instanceof Error ? error.message : String(error)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function parseOptionalJsonPayload(payload, marker) {
|
|
25
|
+
const trimmed = payload.trim();
|
|
26
|
+
if (!trimmed) {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
return parseJsonPayload(trimmed, marker);
|
|
30
|
+
}
|
|
31
|
+
function parseMarker(inner, context, rawMarker = buildMarker(inner)) {
|
|
32
|
+
if (inner === "writing") {
|
|
33
|
+
return { openBlock: "writing", rawMarker };
|
|
34
|
+
}
|
|
35
|
+
if (inner === "thinking") {
|
|
36
|
+
return { openBlock: "thinking", rawMarker };
|
|
37
|
+
}
|
|
38
|
+
if (inner === "checkpoint") {
|
|
39
|
+
const event = {
|
|
40
|
+
kind: "checkpoint",
|
|
41
|
+
step: context.step,
|
|
42
|
+
rawMarker,
|
|
43
|
+
};
|
|
44
|
+
return event;
|
|
45
|
+
}
|
|
46
|
+
if (inner === "revise") {
|
|
47
|
+
const event = {
|
|
48
|
+
kind: "revise",
|
|
49
|
+
step: context.step,
|
|
50
|
+
rawMarker,
|
|
51
|
+
};
|
|
52
|
+
return event;
|
|
53
|
+
}
|
|
54
|
+
if (inner === "done") {
|
|
55
|
+
const event = {
|
|
56
|
+
kind: "done",
|
|
57
|
+
step: context.step,
|
|
58
|
+
rawMarker,
|
|
59
|
+
};
|
|
60
|
+
return event;
|
|
61
|
+
}
|
|
62
|
+
if (inner.startsWith("input_safety:")) {
|
|
63
|
+
const payload = parseJsonPayload(inner.slice("input_safety:".length), rawMarker);
|
|
64
|
+
const event = {
|
|
65
|
+
kind: "input_safety",
|
|
66
|
+
payload,
|
|
67
|
+
step: context.step,
|
|
68
|
+
rawMarker,
|
|
69
|
+
};
|
|
70
|
+
return event;
|
|
71
|
+
}
|
|
72
|
+
if (inner === "input_safety") {
|
|
73
|
+
return {
|
|
74
|
+
openBlock: "input_safety",
|
|
75
|
+
rawMarker,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (inner.startsWith("output_safety:")) {
|
|
79
|
+
const payload = parseJsonPayload(inner.slice("output_safety:".length), rawMarker);
|
|
80
|
+
const event = {
|
|
81
|
+
kind: "output_safety",
|
|
82
|
+
payload,
|
|
83
|
+
step: context.step,
|
|
84
|
+
rawMarker,
|
|
85
|
+
};
|
|
86
|
+
return event;
|
|
87
|
+
}
|
|
88
|
+
if (inner === "output_safety") {
|
|
89
|
+
return {
|
|
90
|
+
openBlock: "output_safety",
|
|
91
|
+
rawMarker,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (inner.startsWith("error:")) {
|
|
95
|
+
const payload = parseJsonPayload(inner.slice("error:".length), rawMarker);
|
|
96
|
+
const event = {
|
|
97
|
+
kind: "error",
|
|
98
|
+
payload,
|
|
99
|
+
step: context.step,
|
|
100
|
+
rawMarker,
|
|
101
|
+
};
|
|
102
|
+
return event;
|
|
103
|
+
}
|
|
104
|
+
if (inner === "error") {
|
|
105
|
+
return {
|
|
106
|
+
openBlock: "error",
|
|
107
|
+
rawMarker,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (inner.startsWith('call_tool:"')) {
|
|
111
|
+
const remainder = inner.slice('call_tool:"'.length);
|
|
112
|
+
const splitIndex = remainder.indexOf('":');
|
|
113
|
+
if (splitIndex === -1) {
|
|
114
|
+
return {
|
|
115
|
+
openBlock: "call_tool",
|
|
116
|
+
rawMarker,
|
|
117
|
+
name: remainder.slice(0, -1),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const name = remainder.slice(0, splitIndex);
|
|
121
|
+
const payload = JSON.parse(remainder.slice(splitIndex + 2));
|
|
122
|
+
const event = {
|
|
123
|
+
kind: "call_tool",
|
|
124
|
+
name,
|
|
125
|
+
arguments: payload,
|
|
126
|
+
step: context.step,
|
|
127
|
+
rawMarker,
|
|
128
|
+
};
|
|
129
|
+
return event;
|
|
130
|
+
}
|
|
131
|
+
if (inner.startsWith('call_subagent:"')) {
|
|
132
|
+
const remainder = inner.slice('call_subagent:"'.length);
|
|
133
|
+
const splitIndex = remainder.indexOf('":');
|
|
134
|
+
if (splitIndex === -1) {
|
|
135
|
+
return {
|
|
136
|
+
openBlock: "call_subagent",
|
|
137
|
+
rawMarker,
|
|
138
|
+
name: remainder.slice(0, -1),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const name = remainder.slice(0, splitIndex);
|
|
142
|
+
const payload = JSON.parse(remainder.slice(splitIndex + 2));
|
|
143
|
+
const event = {
|
|
144
|
+
kind: "call_subagent",
|
|
145
|
+
name,
|
|
146
|
+
arguments: payload,
|
|
147
|
+
step: context.step,
|
|
148
|
+
rawMarker,
|
|
149
|
+
};
|
|
150
|
+
return event;
|
|
151
|
+
}
|
|
152
|
+
throw new Error(`Unknown protocol marker: ${rawMarker}`);
|
|
153
|
+
}
|
|
154
|
+
function flushBlock(block, context, events) {
|
|
155
|
+
if (!block) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if ((block.type === "writing" || block.type === "thinking") &&
|
|
159
|
+
!block.content.trim()) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (block.type === "writing") {
|
|
163
|
+
const event = {
|
|
164
|
+
kind: "writing",
|
|
165
|
+
content: block.content,
|
|
166
|
+
step: context.step,
|
|
167
|
+
rawMarker: block.rawMarker,
|
|
168
|
+
};
|
|
169
|
+
events.push(event);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (block.type === "input_safety" ||
|
|
173
|
+
block.type === "output_safety" ||
|
|
174
|
+
block.type === "error" ||
|
|
175
|
+
block.type === "call_tool" ||
|
|
176
|
+
block.type === "call_subagent") {
|
|
177
|
+
flushStructuredBlock(block, context, events);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const event = {
|
|
181
|
+
kind: "thinking",
|
|
182
|
+
content: block.content,
|
|
183
|
+
step: context.step,
|
|
184
|
+
rawMarker: block.rawMarker,
|
|
185
|
+
};
|
|
186
|
+
events.push(event);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
function flushStructuredBlock(block, context, events) {
|
|
190
|
+
if (block.type === "input_safety") {
|
|
191
|
+
events.push({
|
|
192
|
+
kind: "input_safety",
|
|
193
|
+
payload: parseOptionalJsonPayload(block.content, block.rawMarker),
|
|
194
|
+
step: context.step,
|
|
195
|
+
rawMarker: block.rawMarker,
|
|
196
|
+
});
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (block.type === "output_safety") {
|
|
200
|
+
events.push({
|
|
201
|
+
kind: "output_safety",
|
|
202
|
+
payload: parseOptionalJsonPayload(block.content, block.rawMarker),
|
|
203
|
+
step: context.step,
|
|
204
|
+
rawMarker: block.rawMarker,
|
|
205
|
+
});
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (block.type === "error") {
|
|
209
|
+
events.push({
|
|
210
|
+
kind: "error",
|
|
211
|
+
payload: parseOptionalJsonPayload(block.content, block.rawMarker),
|
|
212
|
+
step: context.step,
|
|
213
|
+
rawMarker: block.rawMarker,
|
|
214
|
+
});
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (block.type === "call_tool") {
|
|
218
|
+
events.push({
|
|
219
|
+
kind: "call_tool",
|
|
220
|
+
name: block.name,
|
|
221
|
+
arguments: parseOptionalJsonPayload(block.content, block.rawMarker),
|
|
222
|
+
step: context.step,
|
|
223
|
+
rawMarker: block.rawMarker,
|
|
224
|
+
});
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (block.type === "call_subagent") {
|
|
228
|
+
events.push({
|
|
229
|
+
kind: "call_subagent",
|
|
230
|
+
name: block.name,
|
|
231
|
+
arguments: parseOptionalJsonPayload(block.content, block.rawMarker),
|
|
232
|
+
step: context.step,
|
|
233
|
+
rawMarker: block.rawMarker,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
export class ProtocolStreamParser {
|
|
238
|
+
context;
|
|
239
|
+
#buffer = "";
|
|
240
|
+
#events = [];
|
|
241
|
+
#warnings = [];
|
|
242
|
+
#deltas = [];
|
|
243
|
+
#seenMarker = false;
|
|
244
|
+
#activeBlock = null;
|
|
245
|
+
constructor(context) {
|
|
246
|
+
this.context = context;
|
|
247
|
+
}
|
|
248
|
+
push(chunk) {
|
|
249
|
+
this.#buffer = normalizeProtocolText(this.#buffer + chunk);
|
|
250
|
+
this.#consume(false);
|
|
251
|
+
return this.snapshot();
|
|
252
|
+
}
|
|
253
|
+
end() {
|
|
254
|
+
this.#consume(true);
|
|
255
|
+
return this.snapshot();
|
|
256
|
+
}
|
|
257
|
+
snapshot() {
|
|
258
|
+
return {
|
|
259
|
+
events: [...this.#events],
|
|
260
|
+
deltas: [...this.#deltas],
|
|
261
|
+
warnings: [...this.#warnings],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
#consume(flushPartial) {
|
|
265
|
+
while (this.#buffer.length > 0) {
|
|
266
|
+
if (this.#buffer.startsWith(MARKER_PREFIX)) {
|
|
267
|
+
const newlineIndex = this.#buffer.indexOf("\n");
|
|
268
|
+
if (!flushPartial && newlineIndex === -1) {
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
const line = newlineIndex === -1 ? this.#buffer : this.#buffer.slice(0, newlineIndex);
|
|
272
|
+
const suffix = line.endsWith(MARKER_SUFFIX)
|
|
273
|
+
? MARKER_SUFFIX
|
|
274
|
+
: line.endsWith(LENIENT_MARKER_SUFFIX)
|
|
275
|
+
? LENIENT_MARKER_SUFFIX
|
|
276
|
+
: null;
|
|
277
|
+
if (!suffix) {
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
const marker = line;
|
|
281
|
+
this.#buffer =
|
|
282
|
+
newlineIndex === -1 ? "" : this.#buffer.slice(newlineIndex + 1);
|
|
283
|
+
this.#seenMarker = true;
|
|
284
|
+
flushBlock(this.#activeBlock, this.context, this.#events);
|
|
285
|
+
this.#activeBlock = null;
|
|
286
|
+
const parsed = parseMarker(marker.slice(MARKER_PREFIX.length, -suffix.length), this.context, marker);
|
|
287
|
+
if ("openBlock" in parsed) {
|
|
288
|
+
this.#activeBlock =
|
|
289
|
+
"name" in parsed
|
|
290
|
+
? {
|
|
291
|
+
type: parsed.openBlock,
|
|
292
|
+
rawMarker: parsed.rawMarker,
|
|
293
|
+
content: "",
|
|
294
|
+
name: parsed.name,
|
|
295
|
+
}
|
|
296
|
+
: {
|
|
297
|
+
type: parsed.openBlock,
|
|
298
|
+
rawMarker: parsed.rawMarker,
|
|
299
|
+
content: "",
|
|
300
|
+
};
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
this.#events.push(parsed);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
const nextMarkerIndex = this.#buffer.indexOf(`\n${MARKER_PREFIX}`);
|
|
307
|
+
if (this.#activeBlock) {
|
|
308
|
+
if (nextMarkerIndex !== -1) {
|
|
309
|
+
this.#appendToBlock(this.#buffer.slice(0, nextMarkerIndex + 1));
|
|
310
|
+
this.#buffer = this.#buffer.slice(nextMarkerIndex + 1);
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
if (flushPartial) {
|
|
314
|
+
this.#appendToBlock(this.#buffer);
|
|
315
|
+
this.#buffer = "";
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
const lastNewline = this.#buffer.lastIndexOf("\n");
|
|
319
|
+
if (lastNewline === -1) {
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
this.#appendToBlock(this.#buffer.slice(0, lastNewline + 1));
|
|
323
|
+
this.#buffer = this.#buffer.slice(lastNewline + 1);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
if (flushPartial) {
|
|
327
|
+
if (!this.#seenMarker && this.#buffer.trim()) {
|
|
328
|
+
this.#warnings.push("Model output did not include protocol markers. Falling back to implicit writing block.");
|
|
329
|
+
this.#events.push({
|
|
330
|
+
kind: "writing",
|
|
331
|
+
content: this.#buffer,
|
|
332
|
+
step: this.context.step,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
else if (this.#buffer.trim()) {
|
|
336
|
+
this.#warnings.push(`Ignoring stray text outside protocol blocks: ${this.#buffer.trim()}`);
|
|
337
|
+
}
|
|
338
|
+
this.#buffer = "";
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
if (flushPartial) {
|
|
344
|
+
flushBlock(this.#activeBlock, this.context, this.#events);
|
|
345
|
+
this.#activeBlock = null;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
#appendToBlock(text) {
|
|
349
|
+
if (!this.#activeBlock || !text) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
this.#activeBlock.content += text;
|
|
353
|
+
if (this.#activeBlock.type === "writing" || this.#activeBlock.type === "thinking") {
|
|
354
|
+
this.#deltas.push({
|
|
355
|
+
type: this.#activeBlock.type === "writing" ? "writing_delta" : "thinking_delta",
|
|
356
|
+
block: this.#activeBlock.type,
|
|
357
|
+
text,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
export function parseProtocol(text, context = { step: 1 }) {
|
|
363
|
+
const parser = new ProtocolStreamParser(context);
|
|
364
|
+
parser.push(text);
|
|
365
|
+
return parser.end();
|
|
366
|
+
}
|
|
367
|
+
export function validateProtocolSequence(events, safetyEnabled) {
|
|
368
|
+
const warnings = [];
|
|
369
|
+
const kinds = events.map((event) => event.kind);
|
|
370
|
+
if (events.length === 0) {
|
|
371
|
+
warnings.push("No protocol events were produced.");
|
|
372
|
+
return warnings;
|
|
373
|
+
}
|
|
374
|
+
if (events[0]?.kind !== "thinking") {
|
|
375
|
+
warnings.push("Protocol sequence does not begin with a thinking block.");
|
|
376
|
+
}
|
|
377
|
+
if (safetyEnabled && !kinds.includes("input_safety")) {
|
|
378
|
+
warnings.push("Protocol sequence does not include input_safety.");
|
|
379
|
+
}
|
|
380
|
+
if (safetyEnabled && !kinds.includes("output_safety")) {
|
|
381
|
+
warnings.push("Protocol sequence does not include output_safety.");
|
|
382
|
+
}
|
|
383
|
+
const doneIndex = kinds.lastIndexOf("done");
|
|
384
|
+
if (doneIndex === -1) {
|
|
385
|
+
warnings.push("Protocol sequence does not include done.");
|
|
386
|
+
}
|
|
387
|
+
const outputSafetyIndex = kinds.lastIndexOf("output_safety");
|
|
388
|
+
if (outputSafetyIndex !== -1 && doneIndex !== -1 && outputSafetyIndex > doneIndex) {
|
|
389
|
+
warnings.push("output_safety appears after done.");
|
|
390
|
+
}
|
|
391
|
+
return warnings;
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type OpenAI from "openai";
|
|
2
|
+
import type { GeneralAIAgentParams, GeneralAIAgentResult, GeneralAIAgentStreamEvent, GeneralAILibraryDefaults, GeneralAIMemoryAdapter, GeneralAIPromptPack } from "./types.js";
|
|
3
|
+
interface AgentRuntimeDependencies {
|
|
4
|
+
openai: OpenAI;
|
|
5
|
+
defaults?: GeneralAILibraryDefaults;
|
|
6
|
+
promptPack?: GeneralAIPromptPack;
|
|
7
|
+
memoryAdapter: GeneralAIMemoryAdapter;
|
|
8
|
+
debug: boolean;
|
|
9
|
+
runSubagent(params: GeneralAIAgentParams, depth: number): Promise<GeneralAIAgentResult>;
|
|
10
|
+
}
|
|
11
|
+
export declare class AgentRuntime {
|
|
12
|
+
#private;
|
|
13
|
+
private readonly deps;
|
|
14
|
+
private readonly depth;
|
|
15
|
+
constructor(deps: AgentRuntimeDependencies, params: GeneralAIAgentParams, depth?: number);
|
|
16
|
+
renderPrompts(): Promise<import("./types.js").GeneralAIRenderedPrompts>;
|
|
17
|
+
run(): Promise<GeneralAIAgentResult>;
|
|
18
|
+
stream(): AsyncGenerator<GeneralAIAgentStreamEvent, GeneralAIAgentResult>;
|
|
19
|
+
}
|
|
20
|
+
export {};
|