@proposit/proposit-core 1.5.1 → 1.7.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.
Files changed (60) hide show
  1. package/dist/extensions/argument-ingestion/shared/resolve-llm-stage-options.d.ts.map +1 -1
  2. package/dist/extensions/argument-ingestion/shared/resolve-llm-stage-options.js +6 -0
  3. package/dist/extensions/argument-ingestion/shared/resolve-llm-stage-options.js.map +1 -1
  4. package/dist/extensions/argument-ingestion/shared/types.d.ts +18 -7
  5. package/dist/extensions/argument-ingestion/shared/types.d.ts.map +1 -1
  6. package/dist/extensions/argument-ingestion/stages/axiom-indicator-detection.d.ts.map +1 -1
  7. package/dist/extensions/argument-ingestion/stages/axiom-indicator-detection.js +4 -2
  8. package/dist/extensions/argument-ingestion/stages/axiom-indicator-detection.js.map +1 -1
  9. package/dist/extensions/argument-ingestion/stages/citation-source-detection.d.ts.map +1 -1
  10. package/dist/extensions/argument-ingestion/stages/citation-source-detection.js +4 -2
  11. package/dist/extensions/argument-ingestion/stages/citation-source-detection.js.map +1 -1
  12. package/dist/extensions/argument-ingestion/stages/claim-canonicalization.d.ts.map +1 -1
  13. package/dist/extensions/argument-ingestion/stages/claim-canonicalization.js +2 -1
  14. package/dist/extensions/argument-ingestion/stages/claim-canonicalization.js.map +1 -1
  15. package/dist/extensions/argument-ingestion/stages/claim-mention-extraction.d.ts.map +1 -1
  16. package/dist/extensions/argument-ingestion/stages/claim-mention-extraction.js +4 -2
  17. package/dist/extensions/argument-ingestion/stages/claim-mention-extraction.js.map +1 -1
  18. package/dist/extensions/argument-ingestion/stages/claim-type-classification.d.ts.map +1 -1
  19. package/dist/extensions/argument-ingestion/stages/claim-type-classification.js +4 -2
  20. package/dist/extensions/argument-ingestion/stages/claim-type-classification.js.map +1 -1
  21. package/dist/extensions/argument-ingestion/stages/conclusion-selection.d.ts.map +1 -1
  22. package/dist/extensions/argument-ingestion/stages/conclusion-selection.js +2 -1
  23. package/dist/extensions/argument-ingestion/stages/conclusion-selection.js.map +1 -1
  24. package/dist/extensions/argument-ingestion/stages/relation-extraction.d.ts.map +1 -1
  25. package/dist/extensions/argument-ingestion/stages/relation-extraction.js +2 -1
  26. package/dist/extensions/argument-ingestion/stages/relation-extraction.js.map +1 -1
  27. package/dist/extensions/argument-ingestion/stages/segmentation.d.ts.map +1 -1
  28. package/dist/extensions/argument-ingestion/stages/segmentation.js +2 -1
  29. package/dist/extensions/argument-ingestion/stages/segmentation.js.map +1 -1
  30. package/dist/extensions/ollama/errors.d.ts +73 -0
  31. package/dist/extensions/ollama/errors.d.ts.map +1 -0
  32. package/dist/extensions/ollama/errors.js +228 -0
  33. package/dist/extensions/ollama/errors.js.map +1 -0
  34. package/dist/extensions/ollama/index.d.ts +6 -0
  35. package/dist/extensions/ollama/index.d.ts.map +1 -0
  36. package/dist/extensions/ollama/index.js +17 -0
  37. package/dist/extensions/ollama/index.js.map +1 -0
  38. package/dist/extensions/ollama/provider.d.ts +21 -0
  39. package/dist/extensions/ollama/provider.d.ts.map +1 -0
  40. package/dist/extensions/ollama/provider.js +375 -0
  41. package/dist/extensions/ollama/provider.js.map +1 -0
  42. package/dist/extensions/ollama/structured-output.d.ts +18 -0
  43. package/dist/extensions/ollama/structured-output.d.ts.map +1 -0
  44. package/dist/extensions/ollama/structured-output.js +164 -0
  45. package/dist/extensions/ollama/structured-output.js.map +1 -0
  46. package/dist/extensions/ollama/timeout-fetch.d.ts +24 -0
  47. package/dist/extensions/ollama/timeout-fetch.d.ts.map +1 -0
  48. package/dist/extensions/ollama/timeout-fetch.js +76 -0
  49. package/dist/extensions/ollama/timeout-fetch.js.map +1 -0
  50. package/dist/extensions/ollama/types.d.ts +179 -0
  51. package/dist/extensions/ollama/types.d.ts.map +1 -0
  52. package/dist/extensions/ollama/types.js +7 -0
  53. package/dist/extensions/ollama/types.js.map +1 -0
  54. package/dist/extensions/openai/provider.d.ts +26 -0
  55. package/dist/extensions/openai/provider.d.ts.map +1 -1
  56. package/dist/extensions/openai/provider.js +334 -9
  57. package/dist/extensions/openai/provider.js.map +1 -1
  58. package/dist/extensions/openai/types.d.ts +3 -0
  59. package/dist/extensions/openai/types.d.ts.map +1 -1
  60. package/package.json +17 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/extensions/ollama/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { TSchema } from "typebox";
2
+ /**
3
+ * The output shape is intentionally typed as a plain object literal
4
+ * (not a full JSON-Schema TS type). Ollama's `format` accepts this
5
+ * shape and we round-trip it through the SDK request body. Keeping the
6
+ * return type loose avoids dragging a JSON-Schema dependency into the
7
+ * converter.
8
+ */
9
+ export type TOllamaJsonSchema = Record<string, unknown>;
10
+ /**
11
+ * Convert a TypeBox schema into a standard JSON Schema document
12
+ * suitable for Ollama's `format` parameter.
13
+ *
14
+ * Throws `UnsupportedSchemaError` when the source schema contains a
15
+ * TypeBox primitive outside the supported subset.
16
+ */
17
+ export declare function typeboxToJsonSchema(schema: TSchema): TOllamaJsonSchema;
18
+ //# sourceMappingURL=structured-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/extensions/ollama/structured-output.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AA6BvD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CA0BtE"}
@@ -0,0 +1,164 @@
1
+ // TypeBox → standard JSON Schema converter for the Ollama provider.
2
+ //
3
+ // Ollama's `format` parameter accepts a *standard* JSON Schema (the
4
+ // same shape `zodToJsonSchema` would emit). This converter deliberately
5
+ // does NOT apply the OpenAI Responses-API strict-mode folds that
6
+ // `typeboxToOpenAiSchema` (`../openai/structured-output.ts`) applies:
7
+ //
8
+ // * No forced `additionalProperties: false` on objects.
9
+ // * `Type.Optional(T)` → the key is simply OMITTED from `required`
10
+ // (standard JSON-schema optionality), NOT widened to
11
+ // `{ anyOf: [T, { type: "null" }] }` and kept in `required`.
12
+ //
13
+ // Those strict folds are correct for OpenAI strict mode and harmful for
14
+ // a standard `format` consumer, so the Ollama provider gets its own
15
+ // converter rather than reusing/renaming the OpenAI one.
16
+ //
17
+ // Supported TypeBox subset (same primitives the OpenAI converter
18
+ // covers): Object, Array, String, Number, Integer, Boolean, Literal,
19
+ // Union (including Union-of-Literals → enum shorthand, and Union
20
+ // containing Null for the Nullable pattern), Optional (modifier),
21
+ // Record, Null. Unsupported primitives throw a clear
22
+ // `UnsupportedSchemaError` at conversion time.
23
+ //
24
+ // The converter ignores TypeBox `$id` / `description` / other metadata
25
+ // on inner types — only structural fields are projected.
26
+ class UnsupportedSchemaError extends Error {
27
+ constructor(kind) {
28
+ super(`TypeBox primitive "${kind}" is not supported by the Ollama structured-output converter. ` +
29
+ `Supported subset: Object, Array, String, Number, Integer, Boolean, Literal, Union, Optional, Record, Null.`);
30
+ this.name = "UnsupportedSchemaError";
31
+ }
32
+ }
33
+ function kindOf(schema) {
34
+ return schema["~kind"];
35
+ }
36
+ function isOptional(schema) {
37
+ // eslint-disable-next-line @typescript-eslint/naming-convention
38
+ return schema["~optional"] === true;
39
+ }
40
+ /**
41
+ * Convert a TypeBox schema into a standard JSON Schema document
42
+ * suitable for Ollama's `format` parameter.
43
+ *
44
+ * Throws `UnsupportedSchemaError` when the source schema contains a
45
+ * TypeBox primitive outside the supported subset.
46
+ */
47
+ export function typeboxToJsonSchema(schema) {
48
+ const kind = kindOf(schema);
49
+ switch (kind) {
50
+ case "String":
51
+ return { type: "string" };
52
+ case "Number":
53
+ return { type: "number" };
54
+ case "Integer":
55
+ return { type: "integer" };
56
+ case "Boolean":
57
+ return { type: "boolean" };
58
+ case "Null":
59
+ return { type: "null" };
60
+ case "Literal":
61
+ return convertLiteral(schema);
62
+ case "Union":
63
+ return convertUnion(schema);
64
+ case "Array":
65
+ return convertArray(schema);
66
+ case "Object":
67
+ return convertObject(schema);
68
+ case "Record":
69
+ return convertRecord(schema);
70
+ default:
71
+ throw new UnsupportedSchemaError(kind ?? "(unknown)");
72
+ }
73
+ }
74
+ function convertLiteral(schema) {
75
+ const literal = schema;
76
+ const value = literal.const;
77
+ const jsType = literal.type ?? jsonSchemaTypeOf(value);
78
+ return { type: jsType, enum: [value] };
79
+ }
80
+ function jsonSchemaTypeOf(value) {
81
+ if (value === null)
82
+ return "null";
83
+ switch (typeof value) {
84
+ case "string":
85
+ return "string";
86
+ case "number":
87
+ return "number";
88
+ case "bigint":
89
+ return "integer";
90
+ case "boolean":
91
+ return "boolean";
92
+ default:
93
+ throw new Error(`Literal value of type "${typeof value}" cannot be converted to a JSON Schema primitive type.`);
94
+ }
95
+ }
96
+ function convertUnion(schema) {
97
+ const union = schema;
98
+ const branches = union.anyOf;
99
+ if (branches.length === 0) {
100
+ throw new Error("Cannot convert an empty Type.Union.");
101
+ }
102
+ // Shorthand: collapse a union of same-typed literals into a single
103
+ // `enum`. Mixed-type literal unions still convert correctly via the
104
+ // general anyOf branch — we only collapse when every literal shares
105
+ // the same JSON Schema type.
106
+ if (branches.every(isLiteralKind)) {
107
+ const literalTypes = new Set(branches.map((b) => b.type));
108
+ if (literalTypes.size === 1) {
109
+ const literalType = [...literalTypes][0] ?? "string";
110
+ return {
111
+ type: literalType,
112
+ enum: branches.map((b) => b.const),
113
+ };
114
+ }
115
+ }
116
+ return { anyOf: branches.map((b) => typeboxToJsonSchema(b)) };
117
+ }
118
+ function isLiteralKind(schema) {
119
+ return kindOf(schema) === "Literal";
120
+ }
121
+ function convertArray(schema) {
122
+ const array = schema;
123
+ return {
124
+ type: "array",
125
+ items: typeboxToJsonSchema(array.items),
126
+ };
127
+ }
128
+ function convertObject(schema) {
129
+ const object = schema;
130
+ const properties = {};
131
+ const required = [];
132
+ for (const [key, propSchema] of Object.entries(object.properties)) {
133
+ // Standard JSON-schema optionality: an `Type.Optional(T)`
134
+ // property is converted as its inner `T` and simply OMITTED
135
+ // from `required`. No null-widening, no forced
136
+ // `additionalProperties: false` — that is the OpenAI-strict
137
+ // fold the Ollama `format` consumer does not want.
138
+ properties[key] = typeboxToJsonSchema(propSchema);
139
+ if (!isOptional(propSchema)) {
140
+ required.push(key);
141
+ }
142
+ }
143
+ return {
144
+ type: "object",
145
+ properties,
146
+ required,
147
+ };
148
+ }
149
+ function convertRecord(schema) {
150
+ const record = schema;
151
+ // TypeBox encodes Record(Type.String(), V) as
152
+ // { patternProperties: { "^.*$": V } }. We collapse this to the
153
+ // canonical `additionalProperties: <V>` shape.
154
+ const patterns = Object.values(record.patternProperties);
155
+ if (patterns.length !== 1) {
156
+ throw new Error("Type.Record with multiple pattern keys is not supported by the converter.");
157
+ }
158
+ const valueSchema = patterns[0];
159
+ return {
160
+ type: "object",
161
+ additionalProperties: typeboxToJsonSchema(valueSchema),
162
+ };
163
+ }
164
+ //# sourceMappingURL=structured-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../../../src/extensions/ollama/structured-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { TUndiciModule } from "./types.js";
2
+ type TUndiciImporter = () => Promise<TUndiciModule>;
3
+ /**
4
+ * Build a `fetch`-shaped function backed by a per-instance undici `Agent`
5
+ * whose `headersTimeout` and `bodyTimeout` are raised to `requestTimeoutMs`.
6
+ *
7
+ * The returned wrapper delegates to **the imported undici module's own
8
+ * `fetch`** (`mod.fetch`), passing the `Agent` as its `dispatcher`. The base
9
+ * fetch and the dispatcher MUST come from the same undici instance — handing
10
+ * this Agent to Node's bundled-undici global `fetch` is rejected with
11
+ * `UND_ERR_INVALID_ARG`. See the file header.
12
+ *
13
+ * Returns `undefined` when `requestTimeoutMs <= 0` (caller opted out) or
14
+ * when the optional `undici` peer cannot be imported (graceful fallback to
15
+ * the SDK's default fetch — Node's global fetch with no dispatcher, which
16
+ * works; the raised timeout is simply lost and `classifyOllamaError` maps
17
+ * any resulting timeout to a retryable transient error).
18
+ *
19
+ * @param requestTimeoutMs raised headers/body timeout in milliseconds
20
+ * @param importUndici injectable importer (test seam); defaults to `import("undici")`
21
+ */
22
+ export declare function buildTimeoutFetch(requestTimeoutMs: number, importUndici?: TUndiciImporter): Promise<typeof fetch | undefined>;
23
+ export {};
24
+ //# sourceMappingURL=timeout-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-fetch.d.ts","sourceRoot":"","sources":["../../../src/extensions/ollama/timeout-fetch.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;AAKnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CACnC,gBAAgB,EAAE,MAAM,EACxB,YAAY,GAAE,eAAuC,GACtD,OAAO,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,CAqCnC"}
@@ -0,0 +1,76 @@
1
+ // Per-provider request-timeout fetch for the Ollama provider.
2
+ //
3
+ // Local thinking models (e.g. qwen3.6 with thinking on) legitimately take
4
+ // many minutes per structured-extraction stage; undici's 300s default
5
+ // `headersTimeout`/`bodyTimeout` aborts them mid-generation with a
6
+ // `TypeError: fetch failed` whose `.cause.code` is `UND_ERR_HEADERS_TIMEOUT`.
7
+ //
8
+ // This builds a custom `fetch` that routes through a **per-instance** undici
9
+ // `Agent` with raised timeouts, passed to the `ollama` SDK client as its
10
+ // `fetch`. It deliberately does NOT call `setGlobalDispatcher` — a library
11
+ // must not mutate global state. `undici` is an optional peer (same posture
12
+ // as `ollama`); when it is unavailable, this returns `undefined` and the
13
+ // provider falls back to the SDK's default fetch (the `classifyOllamaError`
14
+ // transient-timeout mapping then makes the resulting 300s timeout retryable
15
+ // rather than fatal).
16
+ //
17
+ // CRITICAL — pair the Agent with its OWN fetch. The raised-timeout `Agent`
18
+ // is constructed from the separately-installed `undici` package, so the
19
+ // `dispatcher` must be handed to *that same module's* `fetch` (`mod.fetch`),
20
+ // NOT to Node's bundled-undici global `fetch`. Node's global `fetch` rejects
21
+ // a foreign-undici `Agent` dispatcher with `UND_ERR_INVALID_ARG`
22
+ // (`TypeError: fetch failed`), which would make every Ollama request fail
23
+ // instantly when `undici` is installed. Never mix the two undici instances.
24
+ //
25
+ // Scoped to `src/extensions/ollama/` — `src/lib/` never imports `undici`.
26
+ const defaultUndiciImporter = () => import("undici");
27
+ /**
28
+ * Build a `fetch`-shaped function backed by a per-instance undici `Agent`
29
+ * whose `headersTimeout` and `bodyTimeout` are raised to `requestTimeoutMs`.
30
+ *
31
+ * The returned wrapper delegates to **the imported undici module's own
32
+ * `fetch`** (`mod.fetch`), passing the `Agent` as its `dispatcher`. The base
33
+ * fetch and the dispatcher MUST come from the same undici instance — handing
34
+ * this Agent to Node's bundled-undici global `fetch` is rejected with
35
+ * `UND_ERR_INVALID_ARG`. See the file header.
36
+ *
37
+ * Returns `undefined` when `requestTimeoutMs <= 0` (caller opted out) or
38
+ * when the optional `undici` peer cannot be imported (graceful fallback to
39
+ * the SDK's default fetch — Node's global fetch with no dispatcher, which
40
+ * works; the raised timeout is simply lost and `classifyOllamaError` maps
41
+ * any resulting timeout to a retryable transient error).
42
+ *
43
+ * @param requestTimeoutMs raised headers/body timeout in milliseconds
44
+ * @param importUndici injectable importer (test seam); defaults to `import("undici")`
45
+ */
46
+ export async function buildTimeoutFetch(requestTimeoutMs, importUndici = defaultUndiciImporter) {
47
+ if (!Number.isFinite(requestTimeoutMs) || requestTimeoutMs <= 0) {
48
+ return undefined;
49
+ }
50
+ let mod;
51
+ try {
52
+ mod = await importUndici();
53
+ }
54
+ catch {
55
+ // undici not installed — degrade to the SDK default fetch. The
56
+ // classify-timeout mapping keeps the resulting timeout retryable.
57
+ return undefined;
58
+ }
59
+ const agent = new mod.Agent({
60
+ headersTimeout: requestTimeoutMs,
61
+ bodyTimeout: requestTimeoutMs,
62
+ connectTimeout: requestTimeoutMs,
63
+ });
64
+ // Pair the Agent with undici's OWN fetch — never Node's global fetch,
65
+ // which rejects a foreign-undici Agent dispatcher.
66
+ const undiciFetch = mod.fetch;
67
+ const timeoutFetch = ((input, init) => undiciFetch(input, {
68
+ ...init,
69
+ // `dispatcher` is an undici-specific RequestInit extension that
70
+ // undici's fetch honors; it is not in the lib.dom RequestInit
71
+ // type, hence the structural widening.
72
+ ...{ dispatcher: agent },
73
+ }));
74
+ return timeoutFetch;
75
+ }
76
+ //# sourceMappingURL=timeout-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-fetch.js","sourceRoot":"","sources":["../../../src/extensions/ollama/timeout-fetch.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,mEAAmE;AACnE,8EAA8E;AAC9E,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,sBAAsB;AACtB,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,iEAAiE;AACjE,0EAA0E;AAC1E,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAM1E,MAAM,qBAAqB,GAAoB,GAAG,EAAE,CAChD,MAAM,CAAC,QAAQ,CAAsC,CAAA;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,gBAAwB,EACxB,eAAgC,qBAAqB;IAErD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,GAAkB,CAAA;IACtB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,YAAY,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACL,+DAA+D;QAC/D,kEAAkE;QAClE,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;QACxB,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,gBAAgB;QAC7B,cAAc,EAAE,gBAAgB;KACnC,CAAC,CAAA;IAEF,sEAAsE;IACtE,mDAAmD;IACnD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAA;IAE7B,MAAM,YAAY,GAAG,CAAC,CAClB,KAAkC,EAClC,IAAkC,EACpC,EAAE,CACA,WAAW,CAAC,KAAK,EAAE;QACf,GAAG,IAAI;QACP,gEAAgE;QAChE,8DAA8D;QAC9D,uCAAuC;QACvC,GAAI,EAAE,UAAU,EAAE,KAAK,EAAa;KACvC,CAAC,CAAiB,CAAA;IAEvB,OAAO,YAAY,CAAA;AACvB,CAAC"}
@@ -0,0 +1,179 @@
1
+ import type { TOllamaJsonSchema } from "./structured-output.js";
2
+ /**
3
+ * The minimal subset of the `ollama` SDK's `chat()` response we read.
4
+ * We model only the fields the provider touches so a mock client (and
5
+ * a real `ChatResponse`) both satisfy it without importing the SDK type
6
+ * (which would force the optional peer into the type graph).
7
+ */
8
+ export type TOllamaChatToolCall = {
9
+ function: {
10
+ name: string;
11
+ arguments: Record<string, unknown>;
12
+ };
13
+ };
14
+ export type TOllamaChatMessage = {
15
+ role: string;
16
+ content: string;
17
+ tool_calls?: TOllamaChatToolCall[];
18
+ };
19
+ export type TOllamaChatResponse = {
20
+ message: TOllamaChatMessage;
21
+ done?: boolean;
22
+ prompt_eval_count?: number;
23
+ eval_count?: number;
24
+ };
25
+ /** Tool spec in the `ollama` SDK's `chat({ tools })` wire shape. */
26
+ export type TOllamaToolWire = {
27
+ type: "function";
28
+ function: {
29
+ name: string;
30
+ description: string;
31
+ parameters: TOllamaJsonSchema;
32
+ };
33
+ };
34
+ /** The `chat()` request body subset the provider builds. */
35
+ export type TOllamaChatRequest = {
36
+ model: string;
37
+ messages: TOllamaChatMessage[];
38
+ format?: string | object;
39
+ tools?: TOllamaToolWire[];
40
+ stream?: boolean;
41
+ options?: {
42
+ temperature?: number;
43
+ num_predict?: number;
44
+ num_ctx?: number;
45
+ };
46
+ };
47
+ /**
48
+ * The slice of the `ollama` SDK client surface the provider depends on:
49
+ * a single `chat()` method and an `abort()` to honor `AbortSignal`.
50
+ * Modeling it as a structural type (rather than importing `Ollama`)
51
+ * keeps the optional peer out of the type graph and gives tests a clean
52
+ * injection seam.
53
+ */
54
+ export type TOllamaClient = {
55
+ chat(request: TOllamaChatRequest): Promise<TOllamaChatResponse | AsyncIterable<TOllamaChatResponse>>;
56
+ abort(): void;
57
+ };
58
+ /**
59
+ * The shape of the dynamically-imported `ollama` module. `Ollama` is
60
+ * the SDK's exported class-constructor name (an external symbol), so it
61
+ * is exempt from the in-repo camelCase property-naming rule. The SDK's
62
+ * `Config` accepts an optional `fetch` override (used by the
63
+ * per-provider raised-timeout dispatcher — see `./timeout-fetch.ts`).
64
+ */
65
+ export type TOllamaModule = {
66
+ Ollama: new (config: {
67
+ host: string;
68
+ fetch?: typeof fetch;
69
+ }) => TOllamaClient;
70
+ };
71
+ /**
72
+ * Structural slice of the `undici` module the timeout-fetch helper uses.
73
+ * Modeled (not imported) so the optional `undici` peer stays out of the
74
+ * type graph — same pattern as {@link TOllamaModule} for the `ollama`
75
+ * peer. The undici `Agent` constructor accepts millisecond timeout
76
+ * options; we raise `headersTimeout` + `bodyTimeout` (and `connectTimeout`)
77
+ * so a long local thinking-model generation isn't aborted at undici's
78
+ * 300s default. `Agent` is undici's exported class-constructor name (an
79
+ * external symbol), exempt from the camelCase rule.
80
+ */
81
+ export type TUndiciAgentOptions = {
82
+ headersTimeout?: number;
83
+ bodyTimeout?: number;
84
+ connectTimeout?: number;
85
+ };
86
+ export type TUndiciDispatcher = object;
87
+ export type TUndiciModule = {
88
+ Agent: new (options: TUndiciAgentOptions) => TUndiciDispatcher;
89
+ /**
90
+ * undici's own `fetch`. The raised-timeout `Agent` MUST be passed as
91
+ * a `dispatcher` to *this* fetch — the one from the same undici
92
+ * module the `Agent` was constructed from. Node's bundled-undici
93
+ * global `fetch` rejects a foreign-undici `Agent` dispatcher with
94
+ * `UND_ERR_INVALID_ARG`, so the base fetch and the dispatcher must
95
+ * come from the same undici instance. See `./timeout-fetch.ts`.
96
+ */
97
+ fetch: typeof fetch;
98
+ };
99
+ export type TOllamaProviderConfig = {
100
+ /** Daemon base URL. Defaults to `http://localhost:11434`. */
101
+ baseUrl?: string;
102
+ /**
103
+ * Pre-built SDK client. Primarily a test seam (inject a mock). When
104
+ * omitted, the provider dynamically imports the `ollama` package and
105
+ * constructs an `Ollama({ host: baseUrl })`; a missing package
106
+ * surfaces as an actionable error at construction time.
107
+ */
108
+ client?: TOllamaClient;
109
+ /**
110
+ * Injectable `ollama`-module importer. Test seam — defaults to
111
+ * `import("ollama")`. Lets tests assert the SDK client is constructed
112
+ * with the per-provider timeout-fetch without touching the real
113
+ * package. Ignored when `client` is provided.
114
+ *
115
+ * @internal
116
+ */
117
+ importOllama?: () => Promise<TOllamaModule>;
118
+ /**
119
+ * Injectable `undici`-module importer. Test seam — defaults to
120
+ * `import("undici")`. See {@link requestTimeoutMs}.
121
+ *
122
+ * @internal
123
+ */
124
+ importUndici?: () => Promise<TUndiciModule>;
125
+ /**
126
+ * Per-request HTTP timeout in milliseconds, applied via a
127
+ * **per-provider** undici `Agent` (raised `headersTimeout` +
128
+ * `bodyTimeout`) passed as the `ollama` SDK client's `fetch`
129
+ * dispatcher. Defaults to **1_200_000 (20 min)** — local thinking
130
+ * models legitimately take many minutes per structured-extraction
131
+ * stage, and undici's 300s default aborts them mid-generation with a
132
+ * `UND_ERR_HEADERS_TIMEOUT` `fetch failed`.
133
+ *
134
+ * **No global state is mutated** — the raised timeout is scoped to
135
+ * this provider's client only (never `setGlobalDispatcher`). Requires
136
+ * the optional `undici` peer; if it is not installed the provider
137
+ * falls back to the SDK's default fetch (300s) and relies on
138
+ * `classifyOllamaError` retrying the resulting timeout as transient.
139
+ *
140
+ * Set `0` to disable the custom dispatcher entirely (use the SDK
141
+ * default). A finite positive value is recommended.
142
+ */
143
+ requestTimeoutMs?: number;
144
+ /**
145
+ * Context-window size sent as Ollama's `options.num_ctx`. Defaults
146
+ * to a generous **32768**.
147
+ *
148
+ * **Why this is set, and set generously.** Ollama's per-model
149
+ * default `num_ctx` is small (often ~4096) and Ollama **silently
150
+ * truncates** any prompt longer than `num_ctx` — no error is raised;
151
+ * the model dutifully emits schema-valid JSON from a truncated
152
+ * prompt, which then passes the framework's `Value.Check` and yields
153
+ * a quietly-wrong parse. A real v2 ingestion prompt (segmenting a
154
+ * multi-KB argument) easily exceeds 4096 tokens, so without a
155
+ * generous default the stated goal — running the *whole* pipeline
156
+ * locally on real text — would silently misbehave. Raise this
157
+ * further for very large inputs; lower it only if VRAM-constrained
158
+ * and inputs are known to be small.
159
+ */
160
+ numCtx?: number;
161
+ /**
162
+ * Stream the `chat()` generation and accumulate the chunks inside
163
+ * the provider, returning a single synthesized response. Defaults
164
+ * to **`true`** — streaming is the primary fix for the hardcoded
165
+ * ~300s non-streaming Ollama timeout (ollama/ollama#5081): headers
166
+ * and the first chunk arrive immediately and undici's `bodyTimeout`
167
+ * resets per chunk, so a long local thinking-model generation is no
168
+ * longer aborted mid-flight. Set `false` to restore the legacy
169
+ * single one-shot (`stream: false`) request.
170
+ */
171
+ stream?: boolean;
172
+ /**
173
+ * Cap on function-tool agent-loop round-trips before throwing
174
+ * `ToolLoopExhaustedError`. Defaults to 6, mirroring the OpenAI
175
+ * provider. No ingestion stage uses tools, so this is secondary.
176
+ */
177
+ maxToolCallRounds?: number;
178
+ };
179
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extensions/ollama/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ // Extension-internal types for the Ollama provider.
2
+ //
3
+ // Property names on the SDK request/response shapes are *wire* names
4
+ // dictated by the Ollama HTTP API (snake_case); the in-repo brain-style
5
+ // camelCase rule does not apply to external wire formats.
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/extensions/ollama/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,qEAAqE;AACrE,wEAAwE;AACxE,0DAA0D"}
@@ -17,6 +17,32 @@ export type TCreateOpenAiResponsesProviderOptions = {
17
17
  * count against this cap — they run server-side.
18
18
  */
19
19
  maxToolCallRounds?: number;
20
+ /**
21
+ * Stream the foreground response over SSE and accumulate to the
22
+ * terminal envelope inside the provider. Defaults to **`true`** —
23
+ * gives connection-drop resilience and parity with the Ollama
24
+ * provider. No data-retention implications (unlike `backgroundMode`).
25
+ * Set `false` to restore the blocking `response.json()` path.
26
+ */
27
+ stream?: boolean;
28
+ /**
29
+ * Run long reasoning calls in OpenAI **background mode**
30
+ * (submit-then-poll) so the result does not depend on a
31
+ * continuously-held connection. Defaults to **`false`**.
32
+ *
33
+ * Background mode requires `store: true`, which retains the
34
+ * response server-side (~10 min, for polling) and is **NOT
35
+ * ZDR-compatible**. Enable only where that data-retention posture
36
+ * is acceptable. V1 supports the **no-tools path only**: a request
37
+ * that sets `backgroundMode` and carries `tools` throws
38
+ * `NonRetryableLlmError`.
39
+ */
40
+ backgroundMode?: boolean;
41
+ /**
42
+ * Poll interval (ms) for the background submit-then-poll loop.
43
+ * Defaults to 2000. Ignored unless `backgroundMode` is `true`.
44
+ */
45
+ backgroundPollIntervalMs?: number;
20
46
  };
21
47
  export declare function createOpenAiResponsesProvider(options: TCreateOpenAiResponsesProviderOptions): TLlmProvider;
22
48
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/extensions/openai/provider.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACR,YAAY,EAKf,MAAM,wBAAwB,CAAA;AAe/B,OAAO,KAAK,EACR,YAAY,EAMf,MAAM,YAAY,CAAA;AAOnB,MAAM,MAAM,qCAAqC,GAAG;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,qCAAqC,GAC/C,YAAY,CAmRd"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/extensions/openai/provider.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACR,YAAY,EAKf,MAAM,wBAAwB,CAAA;AAe/B,OAAO,KAAK,EACR,YAAY,EAMf,MAAM,YAAY,CAAA;AAOnB,MAAM,MAAM,qCAAqC,GAAG;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CACpC,CAAA;AAED,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,qCAAqC,GAC/C,YAAY,CAwSd"}