neoctl 0.2.27 → 0.2.28
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 +35 -47
- package/dist/agents/agent-definition.js +1 -1
- package/dist/agents/agent-definition.js.map +1 -1
- package/dist/agents/agent-tool.js +1 -1
- package/dist/agents/agent-tool.js.map +1 -1
- package/dist/agents/smoke-agents.js +2 -2
- package/dist/agents/smoke-agents.js.map +1 -1
- package/dist/context/compaction.js +8 -5
- package/dist/context/compaction.js.map +1 -1
- package/dist/context/context-manager.d.ts +8 -9
- package/dist/context/context-manager.js +33 -41
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/prompts.js +1 -1
- package/dist/context/prompts.js.map +1 -1
- package/dist/context/smoke-context.js +30 -8
- package/dist/context/smoke-context.js.map +1 -1
- package/dist/core/context-metrics.d.ts +1 -1
- package/dist/core/context-metrics.js +5 -3
- package/dist/core/context-metrics.js.map +1 -1
- package/dist/core/message-pipeline.js +13 -21
- package/dist/core/message-pipeline.js.map +1 -1
- package/dist/core/prompt-cache-key.d.ts +10 -0
- package/dist/core/prompt-cache-key.js +34 -0
- package/dist/core/prompt-cache-key.js.map +1 -0
- package/dist/core/prompt-cache-telemetry.d.ts +2 -1
- package/dist/core/prompt-cache-telemetry.js +23 -1
- package/dist/core/prompt-cache-telemetry.js.map +1 -1
- package/dist/core/query-engine.d.ts +6 -5
- package/dist/core/query-engine.js +18 -18
- package/dist/core/query-engine.js.map +1 -1
- package/dist/core/query.d.ts +0 -1
- package/dist/core/query.js +22 -14
- package/dist/core/query.js.map +1 -1
- package/dist/core/run-agent.d.ts +0 -1
- package/dist/core/run-agent.js +0 -1
- package/dist/core/run-agent.js.map +1 -1
- package/dist/core/smoke-core-loop.js +27 -3
- package/dist/core/smoke-core-loop.js.map +1 -1
- package/dist/core/state.d.ts +0 -2
- package/dist/core/state.js +0 -1
- package/dist/core/state.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/model/config.d.ts +2 -9
- package/dist/model/config.js +3 -31
- package/dist/model/config.js.map +1 -1
- package/dist/model/env.js +2 -10
- package/dist/model/env.js.map +1 -1
- package/dist/model/model-gateway.d.ts +0 -6
- package/dist/model/model-gateway.js.map +1 -1
- package/dist/model/model-metadata.json +0 -40
- package/dist/model/openai-adapter.d.ts +2 -1
- package/dist/model/openai-adapter.js +19 -0
- package/dist/model/openai-adapter.js.map +1 -1
- package/dist/model/openai-chat-mapper.d.ts +0 -1
- package/dist/model/openai-chat-mapper.js +13 -9
- package/dist/model/openai-chat-mapper.js.map +1 -1
- package/dist/model/openai-mappers.d.ts +4 -4
- package/dist/model/openai-mappers.js +23 -17
- package/dist/model/openai-mappers.js.map +1 -1
- package/dist/model/openai-responses-mapper.js +76 -35
- package/dist/model/openai-responses-mapper.js.map +1 -1
- package/dist/model/provider-factory.js +1 -22
- package/dist/model/provider-factory.js.map +1 -1
- package/dist/model/smoke-responses-mapper.js +82 -3
- package/dist/model/smoke-responses-mapper.js.map +1 -1
- package/dist/repl/commands.js +5 -2
- package/dist/repl/commands.js.map +1 -1
- package/dist/repl/index.js +85 -129
- package/dist/repl/index.js.map +1 -1
- package/dist/repl/run-command.d.ts +37 -0
- package/dist/repl/run-command.js +167 -0
- package/dist/repl/run-command.js.map +1 -0
- package/dist/repl/smoke-run-command.js +43 -0
- package/dist/repl/smoke-run-command.js.map +1 -0
- package/dist/secrets/smoke-secrets.js +5 -4
- package/dist/secrets/smoke-secrets.js.map +1 -1
- package/dist/session/session-export.d.ts +0 -1
- package/dist/session/session-export.js +0 -1
- package/dist/session/session-export.js.map +1 -1
- package/dist/session/smoke-session.js +6 -2
- package/dist/session/smoke-session.js.map +1 -1
- package/dist/tools/builtins/exec-process-manager.d.ts +78 -0
- package/dist/tools/builtins/exec-process-manager.js +394 -0
- package/dist/tools/builtins/exec-process-manager.js.map +1 -0
- package/dist/tools/builtins/exec-pty-host.d.ts +1 -0
- package/dist/tools/builtins/exec-pty-host.js +70 -0
- package/dist/tools/builtins/exec-pty-host.js.map +1 -0
- package/dist/tools/builtins/exec-tool.d.ts +16 -27
- package/dist/tools/builtins/exec-tool.js +153 -324
- package/dist/tools/builtins/exec-tool.js.map +1 -1
- package/dist/tools/builtins/image-generation-tool.d.ts +0 -4
- package/dist/tools/builtins/image-generation-tool.js +59 -185
- package/dist/tools/builtins/image-generation-tool.js.map +1 -1
- package/dist/tools/smoke-exec-process.d.ts +1 -0
- package/dist/tools/smoke-exec-process.js +42 -0
- package/dist/tools/smoke-exec-process.js.map +1 -0
- package/dist/tools/smoke-tool-system.js +28 -36
- package/dist/tools/smoke-tool-system.js.map +1 -1
- package/dist/types/events.d.ts +8 -0
- package/dist/types/messages.d.ts +5 -0
- package/dist/types/messages.js +14 -0
- package/dist/types/messages.js.map +1 -1
- package/dist/web/html.js +76 -29
- package/dist/web/html.js.map +1 -1
- package/dist/web/index.d.ts +94 -37
- package/dist/web/index.js +345 -117
- package/dist/web/index.js.map +1 -1
- package/dist/web/plan-payload.d.ts +14 -0
- package/dist/web/plan-payload.js +27 -0
- package/dist/web/plan-payload.js.map +1 -0
- package/dist/web/runtime-context-protocol.d.ts +46 -0
- package/dist/web/runtime-context-protocol.js +72 -0
- package/dist/web/runtime-context-protocol.js.map +1 -0
- package/dist/web/smoke-plan-payload.d.ts +1 -0
- package/dist/web/smoke-plan-payload.js +30 -0
- package/dist/web/smoke-plan-payload.js.map +1 -0
- package/dist/web/smoke-runtime-context-protocol.d.ts +1 -0
- package/dist/web/smoke-runtime-context-protocol.js +31 -0
- package/dist/web/smoke-runtime-context-protocol.js.map +1 -0
- package/dist/web/smoke-web-queue.d.ts +1 -0
- package/dist/web/smoke-web-queue.js +7 -0
- package/dist/web/smoke-web-queue.js.map +1 -0
- package/package.json +7 -2
- package/scripts/verify-ripgrep.cjs +8 -8
- package/dist/model/anthropic-adapter.d.ts +0 -30
- package/dist/model/anthropic-adapter.js +0 -106
- package/dist/model/anthropic-adapter.js.map +0 -1
- package/dist/model/anthropic-mapper.d.ts +0 -13
- package/dist/model/anthropic-mapper.js +0 -508
- package/dist/model/anthropic-mapper.js.map +0 -1
- package/dist/model/smoke-anthropic-mapper.js +0 -89
- package/dist/model/smoke-anthropic-mapper.js.map +0 -1
- /package/dist/{model/smoke-anthropic-mapper.d.ts → repl/smoke-run-command.d.ts} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SessionPromptExportSnapshot } from "../session/session-export.js";
|
|
2
|
+
import type { JsonSchema } from "../tools/tool.js";
|
|
3
|
+
export declare const WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION: 1;
|
|
4
|
+
export interface WebRuntimePromptSection {
|
|
5
|
+
name: string;
|
|
6
|
+
content: string;
|
|
7
|
+
cacheStable: boolean;
|
|
8
|
+
chars: number;
|
|
9
|
+
}
|
|
10
|
+
export interface WebRuntimeToolDefinition {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
inputSchema: JsonSchema;
|
|
14
|
+
strict: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface WebRuntimeContextPayload {
|
|
17
|
+
protocolVersion: typeof WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION;
|
|
18
|
+
revision: number;
|
|
19
|
+
generatedAt: string;
|
|
20
|
+
sessionId?: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
reasoning?: unknown;
|
|
23
|
+
prompt: {
|
|
24
|
+
systemPrompt: string;
|
|
25
|
+
chars: number;
|
|
26
|
+
stableSections: number;
|
|
27
|
+
dynamicSections: number;
|
|
28
|
+
sections: WebRuntimePromptSection[];
|
|
29
|
+
appPrompt?: unknown;
|
|
30
|
+
userContext?: unknown;
|
|
31
|
+
systemContext?: unknown;
|
|
32
|
+
userContextPrompt?: string;
|
|
33
|
+
};
|
|
34
|
+
tools: WebRuntimeToolDefinition[];
|
|
35
|
+
capabilities: {
|
|
36
|
+
commands: string[];
|
|
37
|
+
agents: string[];
|
|
38
|
+
skills: string[];
|
|
39
|
+
plugins: string[];
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare function createWebRuntimeContextPayload(snapshot: SessionPromptExportSnapshot, options: {
|
|
43
|
+
revision: number;
|
|
44
|
+
sessionId?: string;
|
|
45
|
+
generatedAt?: string;
|
|
46
|
+
}): WebRuntimeContextPayload;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION = 1;
|
|
2
|
+
export function createWebRuntimeContextPayload(snapshot, options) {
|
|
3
|
+
const sections = normalizePromptSections(snapshot.promptSections);
|
|
4
|
+
const systemPrompt = typeof snapshot.systemPrompt === "string" ? snapshot.systemPrompt : "";
|
|
5
|
+
return {
|
|
6
|
+
protocolVersion: WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION,
|
|
7
|
+
revision: options.revision,
|
|
8
|
+
generatedAt: options.generatedAt ?? new Date().toISOString(),
|
|
9
|
+
sessionId: options.sessionId,
|
|
10
|
+
model: snapshot.model,
|
|
11
|
+
reasoning: snapshot.reasoning,
|
|
12
|
+
prompt: {
|
|
13
|
+
systemPrompt,
|
|
14
|
+
chars: systemPrompt.length,
|
|
15
|
+
stableSections: sections.filter((section) => section.cacheStable).length,
|
|
16
|
+
dynamicSections: sections.filter((section) => !section.cacheStable).length,
|
|
17
|
+
sections,
|
|
18
|
+
appPrompt: snapshot.appPrompt,
|
|
19
|
+
userContext: snapshot.userContext,
|
|
20
|
+
systemContext: snapshot.systemContext,
|
|
21
|
+
userContextPrompt: snapshot.userContextPrompt,
|
|
22
|
+
},
|
|
23
|
+
tools: normalizeToolDefinitions(snapshot.toolDefinitions),
|
|
24
|
+
capabilities: {
|
|
25
|
+
commands: normalizeStringArray(snapshot.commands),
|
|
26
|
+
agents: normalizeStringArray(snapshot.agents),
|
|
27
|
+
skills: normalizeStringArray(snapshot.skills),
|
|
28
|
+
plugins: normalizeStringArray(snapshot.plugins),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function normalizePromptSections(value) {
|
|
33
|
+
if (!Array.isArray(value))
|
|
34
|
+
return [];
|
|
35
|
+
return value.flatMap((section) => {
|
|
36
|
+
if (!isRecord(section) || typeof section.name !== "string" || typeof section.content !== "string")
|
|
37
|
+
return [];
|
|
38
|
+
return [{
|
|
39
|
+
name: section.name,
|
|
40
|
+
content: section.content,
|
|
41
|
+
cacheStable: section.cacheStable !== false,
|
|
42
|
+
chars: section.content.length,
|
|
43
|
+
}];
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function normalizeToolDefinitions(value) {
|
|
47
|
+
if (!Array.isArray(value))
|
|
48
|
+
return [];
|
|
49
|
+
return value.flatMap((tool) => {
|
|
50
|
+
if (!isToolDefinition(tool))
|
|
51
|
+
return [];
|
|
52
|
+
return [{
|
|
53
|
+
name: tool.name,
|
|
54
|
+
description: tool.description,
|
|
55
|
+
inputSchema: tool.inputSchema,
|
|
56
|
+
strict: tool.strict === true,
|
|
57
|
+
}];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function isToolDefinition(value) {
|
|
61
|
+
return isRecord(value)
|
|
62
|
+
&& typeof value.name === "string"
|
|
63
|
+
&& typeof value.description === "string"
|
|
64
|
+
&& isRecord(value.inputSchema);
|
|
65
|
+
}
|
|
66
|
+
function normalizeStringArray(value) {
|
|
67
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
68
|
+
}
|
|
69
|
+
function isRecord(value) {
|
|
70
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=runtime-context-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-context-protocol.js","sourceRoot":"","sources":["../../src/web/runtime-context-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { isWebPlanPayload, serializeWebPlanPayload } from "./plan-payload.js";
|
|
3
|
+
const plan = {
|
|
4
|
+
title: "Nested plan",
|
|
5
|
+
summary: "2/6 completed",
|
|
6
|
+
total: 6,
|
|
7
|
+
completed: 2,
|
|
8
|
+
items: [
|
|
9
|
+
{ description: "Top-level complete", status: "completed" },
|
|
10
|
+
{
|
|
11
|
+
description: "Generate images",
|
|
12
|
+
status: "in_progress",
|
|
13
|
+
subitems: [
|
|
14
|
+
{ description: "Image one", status: "completed" },
|
|
15
|
+
{ description: "Image two", status: "in_progress" },
|
|
16
|
+
{ description: "Image three", status: "pending" },
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{ description: "Publish", status: "pending" },
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
assert.equal(isWebPlanPayload(plan), true);
|
|
23
|
+
if (!isWebPlanPayload(plan))
|
|
24
|
+
throw new Error("nested plan payload was rejected");
|
|
25
|
+
const restored = JSON.parse(serializeWebPlanPayload(plan));
|
|
26
|
+
assert.equal(restored.items.length, 3);
|
|
27
|
+
assert.equal(restored.items[1].subitems.length, 3);
|
|
28
|
+
assert.equal(restored.items[1].subitems[1].description, "Image two");
|
|
29
|
+
console.log("web plan payload smoke ok");
|
|
30
|
+
//# sourceMappingURL=smoke-plan-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smoke-plan-payload.js","sourceRoot":"","sources":["../../src/web/smoke-plan-payload.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE;QACL,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE;QAC1D;YACE,WAAW,EAAE,iBAAiB;YAC9B,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE;gBACR,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;gBACjD,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE;gBACnD,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;aAClD;SACF;QACD,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;KAC9C;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAErE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { createWebRuntimeContextPayload, WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION } from "./runtime-context-protocol.js";
|
|
3
|
+
const payload = createWebRuntimeContextPayload({
|
|
4
|
+
model: "gpt-5.6-sol",
|
|
5
|
+
systemPrompt: "stable\n__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__\ndynamic",
|
|
6
|
+
promptSections: [
|
|
7
|
+
{ name: "Agent Scaffold", content: "stable", cacheStable: true },
|
|
8
|
+
{ name: "Runtime", content: "dynamic", cacheStable: false },
|
|
9
|
+
],
|
|
10
|
+
toolDefinitions: [{
|
|
11
|
+
name: "read",
|
|
12
|
+
description: "Read a file",
|
|
13
|
+
inputSchema: { type: "object", properties: { path: { type: "string" } }, required: ["path"] },
|
|
14
|
+
strict: false,
|
|
15
|
+
}],
|
|
16
|
+
commands: ["/help"],
|
|
17
|
+
agents: [],
|
|
18
|
+
skills: ["documents"],
|
|
19
|
+
plugins: [],
|
|
20
|
+
userContext: { currentDate: "2026-08-31" },
|
|
21
|
+
systemContext: { cwd: "C:/workspace", platform: "win32" },
|
|
22
|
+
}, { revision: 3, sessionId: "session-1", generatedAt: "2026-08-31T00:00:00.000Z" });
|
|
23
|
+
assert.equal(payload.protocolVersion, WEB_RUNTIME_CONTEXT_PROTOCOL_VERSION);
|
|
24
|
+
assert.equal(payload.revision, 3);
|
|
25
|
+
assert.equal(payload.prompt.stableSections, 1);
|
|
26
|
+
assert.equal(payload.prompt.dynamicSections, 1);
|
|
27
|
+
assert.equal(payload.prompt.sections[1].content, "dynamic");
|
|
28
|
+
assert.equal(payload.tools[0].inputSchema.properties?.path.type, "string");
|
|
29
|
+
assert.deepEqual(payload.capabilities.skills, ["documents"]);
|
|
30
|
+
console.log("runtime context protocol smoke ok");
|
|
31
|
+
//# sourceMappingURL=smoke-runtime-context-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smoke-runtime-context-protocol.js","sourceRoot":"","sources":["../../src/web/smoke-runtime-context-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAErH,MAAM,OAAO,GAAG,8BAA8B,CAAC;IAC7C,KAAK,EAAE,aAAa;IACpB,YAAY,EAAE,qDAAqD;IACnE,cAAc,EAAE;QACd,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;QAChE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE;KAC5D;IACD,eAAe,EAAE,CAAC;YAChB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;YAC7F,MAAM,EAAE,KAAK;SACd,CAAC;IACF,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;IAC1C,aAAa,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE;CAC1D,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAErF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,oCAAoC,CAAC,CAAC;AAC5E,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3E,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAE7D,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { mergeWebQueuedInput } from "./index.js";
|
|
3
|
+
assert.equal(mergeWebQueuedInput(undefined, "first"), "first");
|
|
4
|
+
assert.equal(mergeWebQueuedInput("first", "second"), "first\nsecond");
|
|
5
|
+
assert.equal(mergeWebQueuedInput("first\n", " second "), "first\nsecond");
|
|
6
|
+
console.log("web queue smoke ok");
|
|
7
|
+
//# sourceMappingURL=smoke-web-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smoke-web-queue.js","sourceRoot":"","sources":["../../src/web/smoke-web-queue.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AACtE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC;AAE5E,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neoctl",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.28",
|
|
4
4
|
"description": "TypeScript scaffold for a streaming agent runtime with a REPL UI layer.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,13 +43,17 @@
|
|
|
43
43
|
"dev:web": "tsx src/web/index.ts",
|
|
44
44
|
"smoke:core": "tsx src/core/smoke-core-loop.ts",
|
|
45
45
|
"smoke:tools": "tsx src/tools/smoke-tool-system.ts",
|
|
46
|
+
"smoke:exec": "tsx src/tools/smoke-exec-process.ts",
|
|
46
47
|
"smoke:context": "tsx src/context/smoke-context.ts",
|
|
47
48
|
"smoke:session": "tsx src/session/smoke-session.ts",
|
|
48
49
|
"smoke:agents": "tsx src/agents/smoke-agents.ts",
|
|
49
50
|
"smoke:skills": "tsx src/skills/smoke-skills.ts",
|
|
50
51
|
"smoke:secrets": "tsx src/secrets/smoke-secrets.ts",
|
|
51
52
|
"smoke:responses": "tsx src/model/smoke-responses-mapper.ts",
|
|
52
|
-
"smoke:
|
|
53
|
+
"smoke:cli": "tsx src/repl/smoke-run-command.ts",
|
|
54
|
+
"smoke:web-plan": "tsx src/web/smoke-plan-payload.ts",
|
|
55
|
+
"smoke:web-context": "tsx src/web/smoke-runtime-context-protocol.ts",
|
|
56
|
+
"smoke:web-queue": "tsx src/web/smoke-web-queue.ts",
|
|
53
57
|
"smoke:openai": "tsx src/model/smoke-openai.ts"
|
|
54
58
|
},
|
|
55
59
|
"devDependencies": {
|
|
@@ -60,6 +64,7 @@
|
|
|
60
64
|
},
|
|
61
65
|
"dependencies": {
|
|
62
66
|
"@highlightjs/cdn-assets": "^11.11.1",
|
|
67
|
+
"@lydell/node-pty": "^1.2.0-beta.14",
|
|
63
68
|
"@types/react": "^19.2.4",
|
|
64
69
|
"chalk": "^5.6.2",
|
|
65
70
|
"figures": "^6.1.0",
|
|
@@ -28,14 +28,14 @@ for (const [platformKey, executable, format] of TARGETS) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
const executablePath = path.join(VENDOR_ROOT, platformKey, executable);
|
|
31
|
-
// Packages published from Windows can lose POSIX executable mode bits in the
|
|
32
|
-
// generated tarball. Restore them during postinstall before validating.
|
|
33
|
-
if (process.platform !== "win32" && format !== "pe" && (fs.statSync(executablePath).mode & 0o111) === 0) {
|
|
34
|
-
fs.chmodSync(executablePath, fs.statSync(executablePath).mode | 0o755);
|
|
35
|
-
if ((fs.statSync(executablePath).mode & 0o111) === 0) {
|
|
36
|
-
throw new Error(`Required ripgrep binary is not executable: ${path.relative(PROJECT_ROOT, executablePath)}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
31
|
+
// Packages published from Windows can lose POSIX executable mode bits in the
|
|
32
|
+
// generated tarball. Restore them during postinstall before validating.
|
|
33
|
+
if (process.platform !== "win32" && format !== "pe" && (fs.statSync(executablePath).mode & 0o111) === 0) {
|
|
34
|
+
fs.chmodSync(executablePath, fs.statSync(executablePath).mode | 0o755);
|
|
35
|
+
if ((fs.statSync(executablePath).mode & 0o111) === 0) {
|
|
36
|
+
throw new Error(`Required ripgrep binary is not executable: ${path.relative(PROJECT_ROOT, executablePath)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
39
|
assertBinaryFormat(executablePath, format, platformKey);
|
|
40
40
|
const manifestPath = path.join(VENDOR_ROOT, platformKey, "manifest.json");
|
|
41
41
|
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { CredentialProvider } from "./credentials.js";
|
|
2
|
-
import type { ModelGateway, ModelRequest, ModelStreamEvent, ReasoningConfig } from "./model-gateway.js";
|
|
3
|
-
import type { ProviderAdapter, ProviderCapabilities } from "./provider-adapter.js";
|
|
4
|
-
export interface AnthropicAdapterOptions {
|
|
5
|
-
apiKey?: string;
|
|
6
|
-
apiKeyEnvName?: string;
|
|
7
|
-
credentialProvider?: CredentialProvider;
|
|
8
|
-
baseUrl?: string;
|
|
9
|
-
model: string;
|
|
10
|
-
fallbackModel?: string;
|
|
11
|
-
anthropicVersion?: string;
|
|
12
|
-
timeoutMs?: number;
|
|
13
|
-
streamIdleTimeoutMs?: number;
|
|
14
|
-
maxRetries?: number;
|
|
15
|
-
defaultMaxOutputTokens?: number;
|
|
16
|
-
defaultReasoning?: ReasoningConfig | null;
|
|
17
|
-
}
|
|
18
|
-
export declare class AnthropicAdapter implements ProviderAdapter, ModelGateway {
|
|
19
|
-
private readonly options;
|
|
20
|
-
readonly name = "anthropic";
|
|
21
|
-
readonly capabilities: ProviderCapabilities;
|
|
22
|
-
private readonly credentialProvider;
|
|
23
|
-
private readonly transport;
|
|
24
|
-
private readonly baseUrl;
|
|
25
|
-
constructor(options: AnthropicAdapterOptions);
|
|
26
|
-
stream(request: ModelRequest): AsyncIterable<ModelStreamEvent>;
|
|
27
|
-
private streamMessages;
|
|
28
|
-
private assertRequestCapabilities;
|
|
29
|
-
private authHeaders;
|
|
30
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { EnvCredentialProvider, StaticCredentialProvider } from "./credentials.js";
|
|
2
|
-
import { ModelAPIError } from "./errors.js";
|
|
3
|
-
import { HttpTransport } from "./http-transport.js";
|
|
4
|
-
import { supportsImageInput } from "./context-window.js";
|
|
5
|
-
import { streamWithRetry } from "./retry-runner.js";
|
|
6
|
-
import { buildAnthropicRequest, normalizeAnthropicObject, normalizeAnthropicStream } from "./anthropic-mapper.js";
|
|
7
|
-
const DEFAULT_ANTHROPIC_VERSION = "2023-06-01";
|
|
8
|
-
export class AnthropicAdapter {
|
|
9
|
-
options;
|
|
10
|
-
name = "anthropic";
|
|
11
|
-
capabilities = {
|
|
12
|
-
streaming: true,
|
|
13
|
-
functionTools: true,
|
|
14
|
-
parallelToolCalls: false,
|
|
15
|
-
structuredOutput: false,
|
|
16
|
-
previousResponseId: false,
|
|
17
|
-
imageInput: true,
|
|
18
|
-
fileInput: false,
|
|
19
|
-
reasoningConfig: true,
|
|
20
|
-
builtInTools: false,
|
|
21
|
-
};
|
|
22
|
-
credentialProvider;
|
|
23
|
-
transport = new HttpTransport(this.name);
|
|
24
|
-
baseUrl;
|
|
25
|
-
constructor(options) {
|
|
26
|
-
this.options = options;
|
|
27
|
-
this.credentialProvider =
|
|
28
|
-
options.credentialProvider ??
|
|
29
|
-
(options.apiKey ? new StaticCredentialProvider(options.apiKey) : new EnvCredentialProvider(options.apiKeyEnvName ?? "ANTHROPIC_API_KEY"));
|
|
30
|
-
this.baseUrl = stripTrailingSlash(options.baseUrl ?? "https://api.anthropic.com");
|
|
31
|
-
}
|
|
32
|
-
async *stream(request) {
|
|
33
|
-
this.assertRequestCapabilities(request);
|
|
34
|
-
yield* streamWithRetry((attempt) => this.streamMessages(request, attempt), {
|
|
35
|
-
provider: this.name,
|
|
36
|
-
maxRetries: this.options.maxRetries ?? 2,
|
|
37
|
-
delayMs: 3000,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
async *streamMessages(request, attempt) {
|
|
41
|
-
const body = buildAnthropicRequest(request, this.options);
|
|
42
|
-
const headers = await this.authHeaders();
|
|
43
|
-
const timeoutMs = request.timeoutMs ?? this.options.timeoutMs ?? 120000;
|
|
44
|
-
if (attempt > 0)
|
|
45
|
-
yield { type: "provider_event", event: { type: "anthropic_retry_attempt", attempt } };
|
|
46
|
-
if (request.stream !== false) {
|
|
47
|
-
const response = await this.transport.sendStream({
|
|
48
|
-
method: "POST",
|
|
49
|
-
url: `${this.baseUrl}/v1/messages`,
|
|
50
|
-
headers,
|
|
51
|
-
body: { ...body, stream: true },
|
|
52
|
-
timeoutMs,
|
|
53
|
-
signal: request.cancellation,
|
|
54
|
-
});
|
|
55
|
-
yield* normalizeAnthropicStream(response.body, this.options);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const response = await this.transport.sendJson({
|
|
59
|
-
method: "POST",
|
|
60
|
-
url: `${this.baseUrl}/v1/messages`,
|
|
61
|
-
headers,
|
|
62
|
-
body: { ...body, stream: false },
|
|
63
|
-
timeoutMs,
|
|
64
|
-
signal: request.cancellation,
|
|
65
|
-
});
|
|
66
|
-
yield* normalizeAnthropicObject(response);
|
|
67
|
-
}
|
|
68
|
-
assertRequestCapabilities(request) {
|
|
69
|
-
const model = request.model ?? this.options.model;
|
|
70
|
-
const supported = supportsImageInput(model);
|
|
71
|
-
if (supported === false && hasImageInput(request)) {
|
|
72
|
-
throw new ModelAPIError({
|
|
73
|
-
category: "unsupported_image_input",
|
|
74
|
-
provider: this.name,
|
|
75
|
-
message: `Model ${model} does not support image input according to static model metadata`,
|
|
76
|
-
retryable: false,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
async authHeaders() {
|
|
81
|
-
const credential = await this.credentialProvider.getCredential();
|
|
82
|
-
if (!credential) {
|
|
83
|
-
throw new ModelAPIError({
|
|
84
|
-
category: "auth_unavailable",
|
|
85
|
-
provider: this.name,
|
|
86
|
-
message: "Anthropic API key is not configured",
|
|
87
|
-
retryable: false,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return {
|
|
91
|
-
"x-api-key": credential,
|
|
92
|
-
"anthropic-version": this.options.anthropicVersion ?? DEFAULT_ANTHROPIC_VERSION,
|
|
93
|
-
Accept: "application/json, text/event-stream",
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
function hasImageInput(request) {
|
|
98
|
-
return request.messages.some((message) => message.blocks.some((block) => {
|
|
99
|
-
const type = block.type;
|
|
100
|
-
return type === "image" || type === "input_image" || (block.type === "text" && /!\[[^\]]*\]\([^\)]+\)/.test(block.text));
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
function stripTrailingSlash(value) {
|
|
104
|
-
return value.replace(/\/+$/, "");
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=anthropic-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-adapter.js","sourceRoot":"","sources":["../../src/model/anthropic-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAElH,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAiB/C,MAAM,OAAO,gBAAgB;IAkBE;IAjBpB,IAAI,GAAG,WAAW,CAAC;IACnB,YAAY,GAAyB;QAC5C,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,KAAK;QACxB,gBAAgB,EAAE,KAAK;QACvB,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,KAAK;KACpB,CAAC;IAEe,kBAAkB,CAAqB;IACvC,SAAS,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAS;IAEjC,YAA6B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAC3D,IAAI,CAAC,kBAAkB;YACrB,OAAO,CAAC,kBAAkB;gBAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,aAAa,IAAI,mBAAmB,CAAC,CAAC,CAAC;QAC5I,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAqB;QACjC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;YACzE,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC;YACxC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,CAAC,cAAc,CAAC,OAAqB,EAAE,OAAe;QAClE,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAExE,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,EAAE,CAAC;QAEvG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC/C,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,cAAc;gBAClC,OAAO;gBACP,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC/B,SAAS;gBACT,MAAM,EAAE,OAAO,CAAC,YAAY;aAC7B,CAAC,CAAC;YACH,KAAK,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAA0B;YACtE,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,cAAc;YAClC,OAAO;YACP,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;YAChC,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,YAAY;SAC7B,CAAC,CAAC;QACH,KAAK,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,yBAAyB,CAAC,OAAqB;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,aAAa,CAAC;gBACtB,QAAQ,EAAE,yBAAyB;gBACnC,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,OAAO,EAAE,SAAS,KAAK,kEAAkE;gBACzF,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QACjE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CAAC;gBACtB,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,OAAO,EAAE,qCAAqC;gBAC9C,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,yBAAyB;YAC/E,MAAM,EAAE,qCAAqC;SAC9C,CAAC;IACJ,CAAC;CACF;AAED,SAAS,aAAa,CAAC,OAAqB;IAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACvC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAI,KAA0B,CAAC,IAAI,CAAC;QAC9C,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3H,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { HttpJsonResponse } from "./http-transport.js";
|
|
2
|
-
import { ModelAPIError } from "./errors.js";
|
|
3
|
-
import type { ModelRequest, ModelStreamEvent, ReasoningConfig } from "./model-gateway.js";
|
|
4
|
-
export interface AnthropicMapperOptions {
|
|
5
|
-
model: string;
|
|
6
|
-
defaultMaxOutputTokens?: number;
|
|
7
|
-
defaultReasoning?: ReasoningConfig | null;
|
|
8
|
-
streamIdleTimeoutMs?: number;
|
|
9
|
-
}
|
|
10
|
-
export declare function buildAnthropicRequest(request: ModelRequest, options: AnthropicMapperOptions): Record<string, unknown>;
|
|
11
|
-
export declare function normalizeAnthropicStream(stream: ReadableStream<Uint8Array>, options: AnthropicMapperOptions): AsyncGenerator<ModelStreamEvent>;
|
|
12
|
-
export declare function normalizeAnthropicObject(response: HttpJsonResponse<Record<string, unknown>>): Generator<ModelStreamEvent>;
|
|
13
|
-
export declare function normalizeAnthropicStreamError(event: Record<string, unknown>): ModelAPIError;
|