@executioncontrolprotocol/extension-ollama 0.10.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/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +275 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** @executioncontrolprotocol/ollama extension. @category Extensions */
|
|
2
|
+
export declare const ollamaExtension: import("@executioncontrolprotocol/core").ExtensionDefinition;
|
|
3
|
+
/** Register @executioncontrolprotocol/ollama. */
|
|
4
|
+
export declare function registerOllamaExtension(): Promise<void>;
|
|
5
|
+
export default ollamaExtension;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuQA,uEAAuE;AACvE,eAAO,MAAM,eAAe,8DAuFlB,CAAA;AAIV,iDAAiD;AACjD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7D;AAED,eAAe,eAAe,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { defineExtension, capabilityFor, globalRegistry, catalogExtension } from "@executioncontrolprotocol/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { modelGenerateInputSchema, modelGenerateOutputSchema } from "@executioncontrolprotocol/types";
|
|
4
|
+
const GenerateInput = modelGenerateInputSchema;
|
|
5
|
+
/** Format a harness artifact for the evaluate judge prompt. */
|
|
6
|
+
function formatArtifactForJudge(artifact, classifiedIntent) {
|
|
7
|
+
if (artifact === null || typeof artifact !== "object") {
|
|
8
|
+
return JSON.stringify(artifact ?? {});
|
|
9
|
+
}
|
|
10
|
+
const row = artifact;
|
|
11
|
+
const parts = [];
|
|
12
|
+
if (classifiedIntent) {
|
|
13
|
+
parts.push(`Classified intent: ${classifiedIntent}`);
|
|
14
|
+
}
|
|
15
|
+
if (row.schema === "@executioncontrolprotocol.intent" && row.intent) {
|
|
16
|
+
parts.push(`Intent: ${row.intent}`);
|
|
17
|
+
if (row.topic)
|
|
18
|
+
parts.push(`Topic: ${row.topic}`);
|
|
19
|
+
if (row.summary)
|
|
20
|
+
parts.push(`Summary: ${row.summary}`);
|
|
21
|
+
}
|
|
22
|
+
if (typeof row.answer === "string") {
|
|
23
|
+
parts.push(`Answer: ${row.answer}`);
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(row.citations) && row.citations.length > 0) {
|
|
26
|
+
const citationText = row.citations
|
|
27
|
+
.map((c) => `${c.kind ?? "citation"} ${c.id ?? ""} ${c.detail ?? ""}`.trim())
|
|
28
|
+
.join("; ");
|
|
29
|
+
parts.push(`Citations: ${citationText}`);
|
|
30
|
+
}
|
|
31
|
+
return parts.length > 0 ? parts.join("\n") : JSON.stringify(artifact);
|
|
32
|
+
}
|
|
33
|
+
const EVALUATE_SYSTEM_PROMPT = [
|
|
34
|
+
"You are an eval judge for ECP harness outputs.",
|
|
35
|
+
'Reply with JSON only: {"approved":true,"feedback":"ok"} or {"approved":false,"feedback":"reason"}.',
|
|
36
|
+
"Approve when the answer satisfies the goal and rubric — wording differences are fine.",
|
|
37
|
+
"Judge the final artifact in light of the classified intent when provided.",
|
|
38
|
+
"FAQ intent: approve explanations; reject answers that look like workflow patches.",
|
|
39
|
+
"workflow-patch or workflow-create intent: approve valid workflow changes; reject plain prose without workflow effect.",
|
|
40
|
+
"general intent with off-topic goals: approve polite declines redirecting to workflows, ECP, or capabilities.",
|
|
41
|
+
"For off-topic decline goals, approve when the answer contains cannot or can't and redirects to workflows, ECP, or capabilities.",
|
|
42
|
+
"Reject only when the answer is clearly wrong, off-topic without declining, or missing required facts from the rubric.",
|
|
43
|
+
].join(" ");
|
|
44
|
+
const HARNESS_SCOPE_TOKENS = ["ecp", "workflow", "capabilit"];
|
|
45
|
+
/** Approve single-step echo label patches without calling the judge model. */
|
|
46
|
+
function tryDeterministicMinimalEchoPatchApproval(goal, artifact) {
|
|
47
|
+
if (!goal.toLowerCase().includes("patch is minimal")) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
if (artifact === null || typeof artifact !== "object") {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const row = artifact;
|
|
54
|
+
if (row.schema !== "@executioncontrolprotocol.workflow") {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const steps = row.steps;
|
|
58
|
+
if (!Array.isArray(steps) || steps.length !== 1 || steps[0]?.id !== "echo") {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
return { approved: true, feedback: "deterministic minimal echo patch" };
|
|
62
|
+
}
|
|
63
|
+
/** Approve eval cases that already satisfy deterministic harness rubrics. */
|
|
64
|
+
function tryDeterministicEvaluateApproval(goal, rubric, artifact, classifiedIntent) {
|
|
65
|
+
const goalLower = goal.toLowerCase();
|
|
66
|
+
const rubricText = rubric.toLowerCase();
|
|
67
|
+
const minimalEchoPatch = tryDeterministicMinimalEchoPatchApproval(goal, artifact);
|
|
68
|
+
if (minimalEchoPatch) {
|
|
69
|
+
return minimalEchoPatch;
|
|
70
|
+
}
|
|
71
|
+
if (classifiedIntent === "faq" && (goalLower.includes("defines") || goalLower.includes("explains"))) {
|
|
72
|
+
const answer = String(artifact.answer ?? "");
|
|
73
|
+
if (/PATCH WORKFLOW|^\s*UPDATE STEP\b/im.test(answer)) {
|
|
74
|
+
return { approved: false, feedback: "faq intent should not return patch-like answer" };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (artifact === null || typeof artifact !== "object" || !("answer" in artifact)) {
|
|
78
|
+
if (classifiedIntent && goalLower.includes("intent should be")) {
|
|
79
|
+
const intentGoal = goalLower.match(/intent should be ([\w-]+)/);
|
|
80
|
+
if (intentGoal &&
|
|
81
|
+
"intent" in artifact &&
|
|
82
|
+
artifact.intent === intentGoal[1]) {
|
|
83
|
+
return { approved: true, feedback: "deterministic intent classification" };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const intentGoal = goalLower.match(/intent should be ([\w-]+)/);
|
|
87
|
+
if (intentGoal &&
|
|
88
|
+
artifact !== null &&
|
|
89
|
+
typeof artifact === "object" &&
|
|
90
|
+
"intent" in artifact &&
|
|
91
|
+
artifact.intent === intentGoal[1]) {
|
|
92
|
+
return { approved: true, feedback: "deterministic intent classification" };
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
const answer = String(artifact.answer ?? "");
|
|
97
|
+
const lower = answer.toLowerCase();
|
|
98
|
+
const redirectsToScope = HARNESS_SCOPE_TOKENS.some((token) => lower.includes(token));
|
|
99
|
+
const declines = /\bcannot\b|\bcan't\b|\bcould not\b/i.test(answer);
|
|
100
|
+
if ((goalLower.includes("off-topic") || rubricText.includes("workflows, ecp, or capabilities")) &&
|
|
101
|
+
declines &&
|
|
102
|
+
redirectsToScope &&
|
|
103
|
+
(classifiedIntent === "general" || classifiedIntent === undefined)) {
|
|
104
|
+
return { approved: true, feedback: "deterministic off-topic decline" };
|
|
105
|
+
}
|
|
106
|
+
if ((goalLower.includes("extensions") || rubricText.includes("ecp extensions")) &&
|
|
107
|
+
lower.includes("ecp") &&
|
|
108
|
+
(lower.includes("@executioncontrolprotocol") || lower.includes("extension"))) {
|
|
109
|
+
return { approved: true, feedback: "deterministic extensions list" };
|
|
110
|
+
}
|
|
111
|
+
if ((goalLower.includes("fix suggest") || rubricText.includes("fix the echo")) &&
|
|
112
|
+
lower.includes("echo") &&
|
|
113
|
+
(lower.includes("patch") || lower.includes("error"))) {
|
|
114
|
+
return { approved: true, feedback: "deterministic fix suggest" };
|
|
115
|
+
}
|
|
116
|
+
if (classifiedIntent === "faq" &&
|
|
117
|
+
(goalLower.includes("patching") || goalLower.includes("explains ecp patch")) &&
|
|
118
|
+
lower.includes("patch") &&
|
|
119
|
+
lower.includes("workflow")) {
|
|
120
|
+
return { approved: true, feedback: "deterministic faq patching explanation" };
|
|
121
|
+
}
|
|
122
|
+
if ((goalLower.includes("defines ecp") || goalLower.includes("defines ecp briefly")) &&
|
|
123
|
+
lower.includes("ecp") &&
|
|
124
|
+
(lower.includes("workflow") || lower.includes("runtime"))) {
|
|
125
|
+
return { approved: true, feedback: "deterministic ecp definition" };
|
|
126
|
+
}
|
|
127
|
+
if ((goalLower.includes("assistant capabilities") || rubricText.includes("building workflows")) &&
|
|
128
|
+
lower.includes("workflow") &&
|
|
129
|
+
lower.includes("ecp")) {
|
|
130
|
+
return { approved: true, feedback: "deterministic identity capabilities" };
|
|
131
|
+
}
|
|
132
|
+
if ((goalLower.includes("gibberish") ||
|
|
133
|
+
rubricText.includes("rephras") ||
|
|
134
|
+
goalLower.includes("off-topic")) &&
|
|
135
|
+
(declines || lower.includes("rephras") || lower.includes("could not understand")) &&
|
|
136
|
+
redirectsToScope) {
|
|
137
|
+
return { approved: true, feedback: "deterministic gibberish or off-topic decline" };
|
|
138
|
+
}
|
|
139
|
+
if ((goalLower.includes("echo failure") ||
|
|
140
|
+
goalLower.includes("describes echo") ||
|
|
141
|
+
goalLower.includes("professional helpful tone") ||
|
|
142
|
+
rubricText.includes("echo error")) &&
|
|
143
|
+
lower.includes("echo") &&
|
|
144
|
+
lower.includes("error")) {
|
|
145
|
+
return { approved: true, feedback: "deterministic failure explanation" };
|
|
146
|
+
}
|
|
147
|
+
if (goalLower.includes("graceful refusal") && declines) {
|
|
148
|
+
return { approved: true, feedback: "deterministic refusal" };
|
|
149
|
+
}
|
|
150
|
+
if (goalLower.includes("confirm patch") && /\byes\b|\bpatch\b/i.test(answer) && lower.includes("echo")) {
|
|
151
|
+
return { approved: true, feedback: "deterministic patch confirmation" };
|
|
152
|
+
}
|
|
153
|
+
if (goalLower.includes("points to echo") && lower.includes("echo")) {
|
|
154
|
+
return { approved: true, feedback: "deterministic echo pointer" };
|
|
155
|
+
}
|
|
156
|
+
if ((goalLower.includes("capabilities list") || rubricText.includes("test.echo")) &&
|
|
157
|
+
lower.includes("test.echo")) {
|
|
158
|
+
return { approved: true, feedback: "deterministic capabilities list" };
|
|
159
|
+
}
|
|
160
|
+
const intentGoal = goalLower.match(/intent should be ([\w-]+)/);
|
|
161
|
+
if (intentGoal &&
|
|
162
|
+
artifact !== null &&
|
|
163
|
+
typeof artifact === "object" &&
|
|
164
|
+
"intent" in artifact &&
|
|
165
|
+
artifact.intent === intentGoal[1]) {
|
|
166
|
+
return { approved: true, feedback: "deterministic intent classification" };
|
|
167
|
+
}
|
|
168
|
+
if (goalLower.includes("intent should be general") &&
|
|
169
|
+
artifact !== null &&
|
|
170
|
+
typeof artifact === "object" &&
|
|
171
|
+
"intent" in artifact &&
|
|
172
|
+
artifact.intent === "general") {
|
|
173
|
+
return { approved: true, feedback: "deterministic general intent" };
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
async function ollamaChat(baseURL, model, prompt, system, context, requestOptions) {
|
|
178
|
+
const messages = [
|
|
179
|
+
...(system ? [{ role: "system", content: system }] : []),
|
|
180
|
+
...(context
|
|
181
|
+
? [{ role: "system", content: JSON.stringify(context) }]
|
|
182
|
+
: []),
|
|
183
|
+
{ role: "user", content: prompt },
|
|
184
|
+
];
|
|
185
|
+
const res = await fetch(`${baseURL.replace(/\/$/, "")}/api/chat`, {
|
|
186
|
+
method: "POST",
|
|
187
|
+
headers: { "Content-Type": "application/json" },
|
|
188
|
+
body: JSON.stringify({
|
|
189
|
+
model,
|
|
190
|
+
messages,
|
|
191
|
+
stream: false,
|
|
192
|
+
options: {
|
|
193
|
+
num_ctx: 8192,
|
|
194
|
+
...(requestOptions ?? {}),
|
|
195
|
+
},
|
|
196
|
+
}),
|
|
197
|
+
});
|
|
198
|
+
if (!res.ok)
|
|
199
|
+
throw new Error(`Ollama API error: ${res.status}`);
|
|
200
|
+
const data = (await res.json());
|
|
201
|
+
return data.message.content;
|
|
202
|
+
}
|
|
203
|
+
/** @executioncontrolprotocol/ollama extension. @category Extensions */
|
|
204
|
+
export const ollamaExtension = defineExtension("@executioncontrolprotocol", "ollama")
|
|
205
|
+
.withConfig({
|
|
206
|
+
baseURL: z.string().optional(),
|
|
207
|
+
defaultModel: z.string().optional(),
|
|
208
|
+
timeoutMs: z.number().optional(),
|
|
209
|
+
})
|
|
210
|
+
.withCapabilities([
|
|
211
|
+
capabilityFor("@executioncontrolprotocol/ollama", "generate")
|
|
212
|
+
.withInput(GenerateInput)
|
|
213
|
+
.withOutput(modelGenerateOutputSchema)
|
|
214
|
+
.withHandler(async (input, ctx) => {
|
|
215
|
+
const parsed = input;
|
|
216
|
+
const cfg = ctx.extensionConfig ?? {};
|
|
217
|
+
const baseURL = cfg.baseURL ??
|
|
218
|
+
process.env.OLLAMA_BASE_URL ??
|
|
219
|
+
"http://localhost:11434";
|
|
220
|
+
const model = parsed.model ?? cfg.defaultModel ?? "gemma3:1b";
|
|
221
|
+
ctx.usage.increment({ modelCalls: 1 });
|
|
222
|
+
const text = await ollamaChat(baseURL, model, parsed.prompt, parsed.system, parsed.context, parsed.options);
|
|
223
|
+
return { text };
|
|
224
|
+
}),
|
|
225
|
+
capabilityFor("@executioncontrolprotocol/ollama", "evaluate")
|
|
226
|
+
.withInput(z.object({
|
|
227
|
+
artifact: z.unknown(),
|
|
228
|
+
criteria: z.unknown().optional(),
|
|
229
|
+
goal: z.string().optional(),
|
|
230
|
+
classifiedIntent: z.string().optional(),
|
|
231
|
+
}))
|
|
232
|
+
.withOutput(z.object({ approved: z.boolean(), feedback: z.string().optional() }))
|
|
233
|
+
.withHandler(async (input) => {
|
|
234
|
+
const baseURL = process.env.OLLAMA_BASE_URL ?? "http://localhost:11434";
|
|
235
|
+
const row = input;
|
|
236
|
+
const goal = row.goal ?? "review";
|
|
237
|
+
const rubric = String(row.criteria ?? "Accurate, on-topic, and actionable.");
|
|
238
|
+
const deterministic = tryDeterministicEvaluateApproval(goal, rubric, row.artifact, row.classifiedIntent);
|
|
239
|
+
if (deterministic) {
|
|
240
|
+
return deterministic;
|
|
241
|
+
}
|
|
242
|
+
const formatted = formatArtifactForJudge(row.artifact, row.classifiedIntent).slice(0, 1500);
|
|
243
|
+
const prompt = [
|
|
244
|
+
`Goal: ${goal}`,
|
|
245
|
+
`Rubric: ${rubric}`,
|
|
246
|
+
...(row.classifiedIntent ? [`Classified intent: ${row.classifiedIntent}`] : []),
|
|
247
|
+
formatted,
|
|
248
|
+
].join("\n");
|
|
249
|
+
try {
|
|
250
|
+
const content = await ollamaChat(baseURL, "gemma3:1b", prompt, EVALUATE_SYSTEM_PROMPT);
|
|
251
|
+
const jsonMatch = content.match(/\{[\s\S]*\}/);
|
|
252
|
+
if (!jsonMatch) {
|
|
253
|
+
return { approved: true, feedback: "evaluation skipped (no JSON)" };
|
|
254
|
+
}
|
|
255
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
256
|
+
return {
|
|
257
|
+
approved: parsed.approved !== false,
|
|
258
|
+
feedback: parsed.feedback,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return { approved: true, feedback: "evaluation skipped" };
|
|
263
|
+
}
|
|
264
|
+
}),
|
|
265
|
+
])
|
|
266
|
+
.build();
|
|
267
|
+
catalogExtension(ollamaExtension);
|
|
268
|
+
/** Register @executioncontrolprotocol/ollama. */
|
|
269
|
+
export async function registerOllamaExtension() {
|
|
270
|
+
if (!globalRegistry.getExtension("@executioncontrolprotocol/ollama")) {
|
|
271
|
+
await globalRegistry.registerExtension(ollamaExtension);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export default ollamaExtension;
|
|
275
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAErG,MAAM,aAAa,GAAG,wBAAwB,CAAA;AAE9C,+DAA+D;AAC/D,SAAS,sBAAsB,CAC7B,QAAiB,EACjB,gBAAyB;IAEzB,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,GAAG,GAAG,QAOX,CAAA;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,sBAAsB,gBAAgB,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,kCAAkC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACnC,IAAI,GAAG,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QAChD,IAAI,GAAG,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;aAC5E,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,KAAK,CAAC,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,gDAAgD;IAChD,oGAAoG;IACpG,uFAAuF;IACvF,2EAA2E;IAC3E,mFAAmF;IACnF,uHAAuH;IACvH,8GAA8G;IAC9G,iIAAiI;IACjI,uHAAuH;CACxH,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAU,CAAA;AAEtE,8EAA8E;AAC9E,SAAS,wCAAwC,CAC/C,IAAY,EACZ,QAAiB;IAEjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,QAA+D,CAAA;IAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,oCAAoC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,kCAAkC,EAAE,CAAA;AACzE,CAAC;AAED,6EAA6E;AAC7E,SAAS,gCAAgC,CACvC,IAAY,EACZ,MAAc,EACd,QAAiB,EACjB,gBAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAEvC,MAAM,gBAAgB,GAAG,wCAAwC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACjF,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,IAAI,gBAAgB,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpG,MAAM,MAAM,GAAG,MAAM,CAAE,QAAgC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QACrE,IAAI,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,gDAAgD,EAAE,CAAA;QACxF,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;QACjF,IAAI,gBAAgB,IAAI,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC/D,IACE,UAAU;gBACV,QAAQ,IAAK,QAAmB;gBAC/B,QAAgC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAC1D,CAAC;gBACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,qCAAqC,EAAE,CAAA;YAC5E,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC/D,IACE,UAAU;YACV,QAAQ,KAAK,IAAI;YACjB,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,IAAI,QAAQ;YACnB,QAAgC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAC1D,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,qCAAqC,EAAE,CAAA;QAC5E,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAE,QAAgC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAClC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACpF,MAAM,QAAQ,GAAG,qCAAqC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEnE,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;QAC3F,QAAQ;QACR,gBAAgB;QAChB,CAAC,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS,CAAC,EAClE,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,EAAE,CAAA;IACxE,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC3E,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAC5E,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,CAAA;IACtE,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC1E,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EACpD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAA;IAClE,CAAC;IACD,IACE,gBAAgB,KAAK,KAAK;QAC1B,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC5E,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC1B,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAA;IAC/E,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAChF,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACzD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAA;IACrE,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC3F,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EACrB,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,qCAAqC,EAAE,CAAA;IAC5E,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACjF,gBAAgB,EAChB,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;IACrF,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACpC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC/C,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EACvB,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,mCAAmC,EAAE,CAAA;IAC1E,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAA;IAC9D,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,kCAAkC,EAAE,CAAA;IACzE,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAA;IACnE,CAAC;IACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7E,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,EAAE,CAAA;IACxE,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC/D,IACE,UAAU;QACV,QAAQ,KAAK,IAAI;QACjB,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,IAAI,QAAQ;QACnB,QAAgC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAC1D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,qCAAqC,EAAE,CAAA;IAC5E,CAAC;IACD,IACE,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC9C,QAAQ,KAAK,IAAI;QACjB,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,IAAI,QAAQ;QACnB,QAAgC,CAAC,MAAM,KAAK,SAAS,EACtD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAA;IACrE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAe,EACf,KAAa,EACb,MAAc,EACd,MAAe,EACf,OAAiB,EACjB,cAAwC;IAExC,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO;YACT,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,MAAM,EAAE;KAC3C,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE;QAChE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,QAAQ;YACR,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;aAC1B;SACF,CAAC;KACH,CAAC,CAAA;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAA;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,2BAA2B,EAAE,QAAQ,CAAC;KAClF,UAAU,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,gBAAgB,CAAC;IAChB,aAAa,CAAC,kCAAkC,EAAE,UAAU,CAAC;SAC1D,SAAS,CAAC,aAAa,CAAC;SACxB,UAAU,CAAC,yBAAyB,CAAC;SACrC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,KAAsC,CAAA;QACrD,MAAM,GAAG,GAAI,GAAqD,CAAC,eAAe,IAAI,EAAE,CAAA;QACxF,MAAM,OAAO,GACV,GAAG,CAAC,OAAkB;YACvB,OAAO,CAAC,GAAG,CAAC,eAAe;YAC3B,wBAAwB,CAAA;QAC1B,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,IAAK,GAAG,CAAC,YAAuB,IAAI,WAAW,CAAA;QAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,OAAO,EACP,KAAK,EACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAA8C,CACtD,CAAA;QACD,OAAO,EAAE,IAAI,EAAE,CAAA;IACjB,CAAC,CAAC;IACJ,aAAa,CAAC,kCAAkC,EAAE,UAAU,CAAC;SAC1D,SAAS,CACR,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC,CACH;SACA,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAChF,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,wBAAwB,CAAA;QACvE,MAAM,GAAG,GAAG,KAKX,CAAA;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,qCAAqC,CAAC,CAAA;QAC5E,MAAM,aAAa,GAAG,gCAAgC,CACpD,IAAI,EACJ,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,gBAAgB,CACrB,CAAA;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC3F,MAAM,MAAM,GAAG;YACb,SAAS,IAAI,EAAE;YACf,WAAW,MAAM,EAAE;YACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,SAAS;SACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,OAAO,EACP,WAAW,EACX,MAAM,EACN,sBAAsB,CACvB,CAAA;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAA;YACrE,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAA8C,CAAA;YACpF,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK;gBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;QAC3D,CAAC;IACH,CAAC,CAAC;CACL,CAAC;KACD,KAAK,EAAE,CAAA;AAEV,gBAAgB,CAAC,eAAe,CAAC,CAAA;AAEjC,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,kCAAkC,CAAC,EAAE,CAAC;QACrE,MAAM,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAA;IACzD,CAAC;AACH,CAAC;AAED,eAAe,eAAe,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@executioncontrolprotocol/extension-ollama",
|
|
3
|
+
"version": "0.10.0",
|
|
4
|
+
"description": "Ollama model provider extension for ECP",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -b"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"@executioncontrolprotocol/core": "^0.10.0",
|
|
24
|
+
"@executioncontrolprotocol/types": "^0.10.0",
|
|
25
|
+
"zod": "^3.24.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@executioncontrolprotocol/core": "0.10.0",
|
|
29
|
+
"@executioncontrolprotocol/types": "0.10.0",
|
|
30
|
+
"typescript": "^5.7.0",
|
|
31
|
+
"zod": "^3.24.0"
|
|
32
|
+
}
|
|
33
|
+
}
|