@holokai/holo-sdk 1.6.0 → 1.9.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/client/builder.d.ts +36 -3
- package/dist/client/builder.d.ts.map +1 -1
- package/dist/client/builder.js +57 -10
- package/dist/client/builder.js.map +1 -1
- package/dist/client/client.d.ts +15 -3
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +60 -25
- package/dist/client/client.js.map +1 -1
- package/dist/client/errors.d.ts +10 -2
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +15 -3
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/merge.d.ts +5 -0
- package/dist/client/merge.d.ts.map +1 -1
- package/dist/client/merge.js +13 -0
- package/dist/client/merge.js.map +1 -1
- package/dist/client/runner.d.ts +2 -0
- package/dist/client/runner.d.ts.map +1 -1
- package/dist/client/runner.js.map +1 -1
- package/dist/client/sse.d.ts.map +1 -1
- package/dist/client/sse.js +4 -0
- package/dist/client/sse.js.map +1 -1
- package/dist/client/stream.d.ts +11 -1
- package/dist/client/stream.d.ts.map +1 -1
- package/dist/client/stream.js +114 -12
- package/dist/client/stream.js.map +1 -1
- package/dist/client/transport.d.ts +11 -0
- package/dist/client/transport.d.ts.map +1 -1
- package/dist/client/transport.js +25 -9
- package/dist/client/transport.js.map +1 -1
- package/dist/client/types.d.ts +35 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/json-output.d.ts +36 -0
- package/dist/core/json-output.d.ts.map +1 -0
- package/dist/core/json-output.js +108 -0
- package/dist/core/json-output.js.map +1 -0
- package/dist/core/logger.d.ts +2 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/redact-binary.d.ts +6 -0
- package/dist/core/redact-binary.d.ts.map +1 -0
- package/dist/core/redact-binary.js +23 -0
- package/dist/core/redact-binary.js.map +1 -0
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/plugin/base.d.ts +7 -10
- package/dist/plugin/base.d.ts.map +1 -1
- package/dist/plugin/base.js +11 -24
- package/dist/plugin/base.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -0
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/pricing.d.ts +13 -0
- package/dist/plugin/pricing.d.ts.map +1 -0
- package/dist/plugin/pricing.js +70 -0
- package/dist/plugin/pricing.js.map +1 -0
- package/dist/provider/auditor/base.d.ts +10 -5
- package/dist/provider/auditor/base.d.ts.map +1 -1
- package/dist/provider/auditor/base.js +69 -16
- package/dist/provider/auditor/base.js.map +1 -1
- package/dist/provider/auditor/index.d.ts +2 -0
- package/dist/provider/auditor/index.d.ts.map +1 -1
- package/dist/provider/auditor/index.js +2 -0
- package/dist/provider/auditor/index.js.map +1 -1
- package/dist/provider/auditor/payload-shape.d.ts +2 -0
- package/dist/provider/auditor/payload-shape.d.ts.map +1 -0
- package/dist/provider/auditor/payload-shape.js +19 -0
- package/dist/provider/auditor/payload-shape.js.map +1 -0
- package/dist/provider/auditor/token-breakdown.d.ts +14 -0
- package/dist/provider/auditor/token-breakdown.d.ts.map +1 -0
- package/dist/provider/auditor/token-breakdown.js +50 -0
- package/dist/provider/auditor/token-breakdown.js.map +1 -0
- package/dist/provider/base.d.ts.map +1 -1
- package/dist/provider/base.js +39 -15
- package/dist/provider/base.js.map +1 -1
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +2 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/json-output.d.ts +22 -0
- package/dist/provider/json-output.d.ts.map +1 -0
- package/dist/provider/json-output.js +88 -0
- package/dist/provider/json-output.js.map +1 -0
- package/dist/provider/thinking.d.ts +79 -0
- package/dist/provider/thinking.d.ts.map +1 -0
- package/dist/provider/thinking.js +173 -0
- package/dist/provider/thinking.js.map +1 -0
- package/dist/provider/translator/translate-provider-events.d.ts.map +1 -1
- package/dist/provider/translator/translate-provider-events.js +11 -3
- package/dist/provider/translator/translate-provider-events.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/tokenizer.d.ts +0 -2
- package/dist/core/tokenizer.d.ts.map +0 -1
- package/dist/core/tokenizer.js +0 -12
- package/dist/core/tokenizer.js.map +0 -1
package/dist/provider/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { HoloResponseFormat } from '@holokai/holo-types/holo';
|
|
2
|
+
import type { IProviderPlugin } from '@holokai/holo-types/plugin';
|
|
3
|
+
import type { ProviderEvent } from '@holokai/holo-types/provider';
|
|
4
|
+
import type { HoloWorkerRequest } from '@holokai/holo-types/worker';
|
|
5
|
+
export declare function wantsJsonOutput(format: HoloResponseFormat | undefined): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* The response format the client asked for. A Holo-native payload carries it directly; a
|
|
8
|
+
* provider-native one is read by the plugin at its family's native location (for Claude and
|
|
9
|
+
* Bedrock, the system-block marker Holo carries it through).
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveResponseFormat(workerRequest: HoloWorkerRequest, plugin: IProviderPlugin): HoloResponseFormat | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Strips the markdown fences (and, when the whole body is in hand, the prose) a model wraps
|
|
14
|
+
* around the JSON the request asked for, from every body the client will see: native stream
|
|
15
|
+
* chunks (through the plugin that owns their shape), Holo text deltas, and the final `done`
|
|
16
|
+
* message, Holo response and accumulated text. A streaming request applies the fence-only
|
|
17
|
+
* streaming policy to its complete texts too, so snapshots agree with the deltas. The provider's
|
|
18
|
+
* own final body is preserved on `providerMessage` for the audit, and the done event is flagged
|
|
19
|
+
* `jsonUnwrapped` when anything was removed.
|
|
20
|
+
*/
|
|
21
|
+
export declare function unwrapJsonOutputEvents(events: AsyncIterable<ProviderEvent>, plugin: IProviderPlugin, protocolName: string | undefined, isStreaming: boolean): AsyncIterable<ProviderEvent>;
|
|
22
|
+
//# sourceMappingURL=json-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/provider/json-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,eAAe,EAAqB,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAoB,aAAa,EAAC,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAIlE,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,aAAa,EAAE,iBAAiB,EAChC,MAAM,EAAE,eAAe,GACxB,kBAAkB,GAAG,SAAS,CAKhC;AAkBD;;;;;;;;GAQG;AACH,wBAAuB,sBAAsB,CACzC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EACpC,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,OAAO,GACrB,aAAa,CAAC,aAAa,CAAC,CAkB9B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ProtocolCapability } from '@holokai/holo-types/entities';
|
|
2
|
+
import { JsonOutputStreamFilter, stripStreamedFences, unwrapJsonText } from '../core/index.js';
|
|
3
|
+
export function wantsJsonOutput(format) {
|
|
4
|
+
return format?.type === 'json_schema' || format?.type === 'json_object';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The response format the client asked for. A Holo-native payload carries it directly; a
|
|
8
|
+
* provider-native one is read by the plugin at its family's native location (for Claude and
|
|
9
|
+
* Bedrock, the system-block marker Holo carries it through).
|
|
10
|
+
*/
|
|
11
|
+
export function resolveResponseFormat(workerRequest, plugin) {
|
|
12
|
+
const capability = workerRequest.protocol?.capability;
|
|
13
|
+
if (capability !== ProtocolCapability.CHAT && capability !== ProtocolCapability.GENERATE)
|
|
14
|
+
return undefined;
|
|
15
|
+
if (workerRequest.isHoloNative)
|
|
16
|
+
return workerRequest.payload?.response_format;
|
|
17
|
+
return plugin.getResponseFormatFromRequest(workerRequest.payload, workerRequest.protocol?.name);
|
|
18
|
+
}
|
|
19
|
+
function rewriteHoloResponseText(response, rewrite) {
|
|
20
|
+
return {
|
|
21
|
+
...response,
|
|
22
|
+
output: response.output.map(message => {
|
|
23
|
+
if (message.role !== 'assistant')
|
|
24
|
+
return message;
|
|
25
|
+
if (typeof message.content === 'string')
|
|
26
|
+
return { ...message, content: rewrite(message.content) };
|
|
27
|
+
return {
|
|
28
|
+
...message,
|
|
29
|
+
content: message.content.map(block => block.type === 'text' ? { ...block, text: rewrite(block.text) } : block),
|
|
30
|
+
};
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Strips the markdown fences (and, when the whole body is in hand, the prose) a model wraps
|
|
36
|
+
* around the JSON the request asked for, from every body the client will see: native stream
|
|
37
|
+
* chunks (through the plugin that owns their shape), Holo text deltas, and the final `done`
|
|
38
|
+
* message, Holo response and accumulated text. A streaming request applies the fence-only
|
|
39
|
+
* streaming policy to its complete texts too, so snapshots agree with the deltas. The provider's
|
|
40
|
+
* own final body is preserved on `providerMessage` for the audit, and the done event is flagged
|
|
41
|
+
* `jsonUnwrapped` when anything was removed.
|
|
42
|
+
*/
|
|
43
|
+
export async function* unwrapJsonOutputEvents(events, plugin, protocolName, isStreaming) {
|
|
44
|
+
const chunkFilter = new JsonOutputStreamFilter();
|
|
45
|
+
const deltaFilter = new JsonOutputStreamFilter();
|
|
46
|
+
const full = isStreaming ? stripStreamedFences : (text) => unwrapJsonText(text).text;
|
|
47
|
+
const rewriter = { delta: text => chunkFilter.push(text), full };
|
|
48
|
+
for await (const ev of events) {
|
|
49
|
+
if (ev.type === 'stream_event') {
|
|
50
|
+
const event = plugin.rewriteStreamEventText(ev.event, rewriter, protocolName);
|
|
51
|
+
yield event === ev.event ? ev : { ...ev, event };
|
|
52
|
+
}
|
|
53
|
+
else if (ev.type === 'text_delta') {
|
|
54
|
+
yield { ...ev, text: deltaFilter.push(ev.text) };
|
|
55
|
+
}
|
|
56
|
+
else if (ev.type === 'done') {
|
|
57
|
+
yield unwrapDone(ev, plugin, protocolName, full, chunkFilter.fenced || deltaFilter.fenced);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
yield ev;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function unwrapDone(ev, plugin, protocolName, rewrite, streamWasFenced) {
|
|
65
|
+
let changed = false;
|
|
66
|
+
const tracked = (text) => {
|
|
67
|
+
const out = rewrite(text);
|
|
68
|
+
if (out !== text)
|
|
69
|
+
changed = true;
|
|
70
|
+
return out;
|
|
71
|
+
};
|
|
72
|
+
const message = plugin.rewriteResponseText(ev.message, tracked, protocolName);
|
|
73
|
+
const holoResponse = ev.holoResponse ? rewriteHoloResponseText(ev.holoResponse, tracked) : undefined;
|
|
74
|
+
const text = ev.text ? tracked(ev.text) : ev.text;
|
|
75
|
+
if (!changed && !streamWasFenced)
|
|
76
|
+
return ev;
|
|
77
|
+
const done = {
|
|
78
|
+
...ev,
|
|
79
|
+
message,
|
|
80
|
+
text,
|
|
81
|
+
providerMessage: ev.providerMessage ?? ev.message,
|
|
82
|
+
jsonUnwrapped: true,
|
|
83
|
+
};
|
|
84
|
+
if (holoResponse)
|
|
85
|
+
done.holoResponse = holoResponse;
|
|
86
|
+
return done;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=json-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/provider/json-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { HoloEffort, HoloThinking } from '@holokai/holo-types/holo';
|
|
2
|
+
/**
|
|
3
|
+
* Every effort level, ordered least to most.
|
|
4
|
+
*
|
|
5
|
+
* Providers accept different subsets of this. Rather than each translator inventing its own
|
|
6
|
+
* table, a family declares what it supports and {@link clampEffort} maps the canonical value
|
|
7
|
+
* onto it, so the same `HoloRequest` produces comparable depth everywhere.
|
|
8
|
+
*/
|
|
9
|
+
export declare const EFFORT_ORDER: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
10
|
+
/** Lowest budget any provider accepts for a thinking-enabled request (Anthropic's floor). */
|
|
11
|
+
export declare const MIN_THINKING_BUDGET = 1024;
|
|
12
|
+
/**
|
|
13
|
+
* Clamp `effort` to the nearest level in `supported`. Returns `undefined` when nothing is supported.
|
|
14
|
+
*
|
|
15
|
+
* Ties round **down**: a caller asking for a level this family lacks should not be quietly
|
|
16
|
+
* charged for a deeper one than they asked for. The result does not depend on the order of
|
|
17
|
+
* `supported`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function clampEffort(effort: HoloEffort, supported: readonly HoloEffort[]): HoloEffort | undefined;
|
|
20
|
+
export interface BudgetBounds {
|
|
21
|
+
min?: number | undefined;
|
|
22
|
+
max?: number | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Fit a budget into `[min, max]`. The floor wins, so a family's minimum is never undercut. */
|
|
25
|
+
export declare function clampBudget(budget: number, bounds?: BudgetBounds): number;
|
|
26
|
+
/** Token budget for an effort level, clamped into `[min, max]` when the family constrains it. */
|
|
27
|
+
export declare function effortToBudget(effort: HoloEffort, bounds?: BudgetBounds): number;
|
|
28
|
+
/** Inverse of {@link effortToBudget}: the highest level whose budget the caller's fits. */
|
|
29
|
+
export declare function budgetToEffort(budget: number): HoloEffort;
|
|
30
|
+
/** True when the caller asked for no reasoning at all. */
|
|
31
|
+
export declare function isThinkingOff(thinking: HoloThinking | undefined): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether reasoning content should be returned. Defaults to `true` — Claude and Gemini both
|
|
34
|
+
* hide it unless asked, and Holo's reasoning stream exists to surface it.
|
|
35
|
+
*/
|
|
36
|
+
export declare function wantsThoughts(thinking: HoloThinking | undefined): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Effective effort for a request, deriving from `budget_tokens` when only that was supplied
|
|
39
|
+
* and clamping to `supported` when the family constrains the range.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveEffort(thinking: HoloThinking | undefined, supported?: readonly HoloEffort[]): HoloEffort | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Effective token budget for a request, deriving from `effort` when only that was supplied.
|
|
44
|
+
* Returns `undefined` when thinking is off or nothing was configured.
|
|
45
|
+
*
|
|
46
|
+
* @remarks An explicitly supplied `budget_tokens` is passed through, bounds-clamped only. Only a
|
|
47
|
+
* derived budget goes through the ladder — routing the caller's own number through it would snap
|
|
48
|
+
* it to the nearest rung and silently cut the value they asked for.
|
|
49
|
+
*
|
|
50
|
+
* @param effortOverride depth already clamped to what the target accepts. Pass it wherever the
|
|
51
|
+
* family clamps effort, so the budget agrees with the level actually being sent.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveBudget(thinking: HoloThinking | undefined, bounds?: BudgetBounds, effortOverride?: HoloEffort | undefined): number | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Build a {@link HoloThinking} for the `toHolo` direction, dropping undefined fields and
|
|
56
|
+
* collapsing to `undefined` when the native request carried no reasoning configuration.
|
|
57
|
+
*/
|
|
58
|
+
export declare function toHoloThinking(partial: {
|
|
59
|
+
type: HoloThinking['type'];
|
|
60
|
+
effort?: HoloEffort | undefined;
|
|
61
|
+
budget_tokens?: number | undefined;
|
|
62
|
+
include_thoughts?: boolean | undefined;
|
|
63
|
+
}): HoloThinking | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Canonical thinking for a family whose only dial is an effort level (OpenAI, Ollama, and
|
|
66
|
+
* Gemini's `thinkingLevel`). `none` is how those families spell "off", so it maps to
|
|
67
|
+
* `disabled` rather than to an enabled request with zero depth.
|
|
68
|
+
*/
|
|
69
|
+
export declare function thinkingFromEffort(effort: HoloEffort | null | undefined, include_thoughts?: boolean | undefined): HoloThinking | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Effort for a family where the level **is** the on/off switch (OpenAI), rather than a separate
|
|
72
|
+
* field alongside one (Claude).
|
|
73
|
+
*
|
|
74
|
+
* There, `none` is how the API spells "off", so an explicit `disabled` has to collapse onto it.
|
|
75
|
+
* {@link resolveEffort} deliberately preserves a stated depth instead, which on these families
|
|
76
|
+
* would turn reasoning back on for a caller who asked to switch it off.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveEffortDial(thinking: HoloThinking | undefined, supported?: readonly HoloEffort[]): HoloEffort | undefined;
|
|
79
|
+
//# sourceMappingURL=thinking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.d.ts","sourceRoot":"","sources":["../../src/provider/thinking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAGvE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,uEAAwE,CAAC;AAoBlG,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS,CAmBxG;AAED,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,MAAM,CAM7E;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,YAAiB,GAAG,MAAM,CAEpF;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAMzD;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,SAAS,GAAE,SAAS,UAAU,EAAiB,GAChD,UAAU,GAAG,SAAS,CAYxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,MAAM,GAAE,YAAiB,EACzB,cAAc,CAAC,EAAE,UAAU,GAAG,SAAS,GACxC,MAAM,GAAG,SAAS,CAQpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACpC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,GAAG,YAAY,GAAG,SAAS,CAgB3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,GACvC,YAAY,GAAG,SAAS,CAO1B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,SAAS,GAAE,SAAS,UAAU,EAAiB,GAChD,UAAU,GAAG,SAAS,CAGxB"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { pickDefined } from '../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Every effort level, ordered least to most.
|
|
4
|
+
*
|
|
5
|
+
* Providers accept different subsets of this. Rather than each translator inventing its own
|
|
6
|
+
* table, a family declares what it supports and {@link clampEffort} maps the canonical value
|
|
7
|
+
* onto it, so the same `HoloRequest` produces comparable depth everywhere.
|
|
8
|
+
*/
|
|
9
|
+
export const EFFORT_ORDER = ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
|
|
10
|
+
/**
|
|
11
|
+
* Effort → thinking-token budget.
|
|
12
|
+
*
|
|
13
|
+
* The rungs are deliberately shared: a caller who sets only `effort` still drives Gemini and
|
|
14
|
+
* older Claude models, and one who sets only `budget_tokens` still drives OpenAI and Ollama.
|
|
15
|
+
* If each plugin picked its own thresholds the same request would mean different things per
|
|
16
|
+
* family, which is the whole problem this table exists to avoid.
|
|
17
|
+
*/
|
|
18
|
+
const EFFORT_BUDGET = {
|
|
19
|
+
none: 0,
|
|
20
|
+
minimal: 1024,
|
|
21
|
+
low: 4096,
|
|
22
|
+
medium: 8192,
|
|
23
|
+
high: 16384,
|
|
24
|
+
xhigh: 32768,
|
|
25
|
+
max: 65536,
|
|
26
|
+
};
|
|
27
|
+
/** Lowest budget any provider accepts for a thinking-enabled request (Anthropic's floor). */
|
|
28
|
+
export const MIN_THINKING_BUDGET = 1024;
|
|
29
|
+
/**
|
|
30
|
+
* Clamp `effort` to the nearest level in `supported`. Returns `undefined` when nothing is supported.
|
|
31
|
+
*
|
|
32
|
+
* Ties round **down**: a caller asking for a level this family lacks should not be quietly
|
|
33
|
+
* charged for a deeper one than they asked for. The result does not depend on the order of
|
|
34
|
+
* `supported`.
|
|
35
|
+
*/
|
|
36
|
+
export function clampEffort(effort, supported) {
|
|
37
|
+
if (!supported.length)
|
|
38
|
+
return undefined;
|
|
39
|
+
if (supported.includes(effort))
|
|
40
|
+
return effort;
|
|
41
|
+
const target = EFFORT_ORDER.indexOf(effort);
|
|
42
|
+
let best;
|
|
43
|
+
let bestIndex = -1;
|
|
44
|
+
let bestDistance = Number.POSITIVE_INFINITY;
|
|
45
|
+
for (const candidate of supported) {
|
|
46
|
+
const index = EFFORT_ORDER.indexOf(candidate);
|
|
47
|
+
const distance = Math.abs(index - target);
|
|
48
|
+
if (distance < bestDistance || (distance === bestDistance && index < bestIndex)) {
|
|
49
|
+
bestDistance = distance;
|
|
50
|
+
bestIndex = index;
|
|
51
|
+
best = candidate;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return best;
|
|
55
|
+
}
|
|
56
|
+
/** Fit a budget into `[min, max]`. The floor wins, so a family's minimum is never undercut. */
|
|
57
|
+
export function clampBudget(budget, bounds = {}) {
|
|
58
|
+
const { min, max } = bounds;
|
|
59
|
+
let clamped = budget;
|
|
60
|
+
if (max !== undefined)
|
|
61
|
+
clamped = Math.min(clamped, max);
|
|
62
|
+
if (min !== undefined)
|
|
63
|
+
clamped = Math.max(clamped, min);
|
|
64
|
+
return clamped;
|
|
65
|
+
}
|
|
66
|
+
/** Token budget for an effort level, clamped into `[min, max]` when the family constrains it. */
|
|
67
|
+
export function effortToBudget(effort, bounds = {}) {
|
|
68
|
+
return clampBudget(EFFORT_BUDGET[effort], bounds);
|
|
69
|
+
}
|
|
70
|
+
/** Inverse of {@link effortToBudget}: the highest level whose budget the caller's fits. */
|
|
71
|
+
export function budgetToEffort(budget) {
|
|
72
|
+
let resolved = 'none';
|
|
73
|
+
for (const effort of EFFORT_ORDER) {
|
|
74
|
+
if (budget >= EFFORT_BUDGET[effort])
|
|
75
|
+
resolved = effort;
|
|
76
|
+
}
|
|
77
|
+
return resolved;
|
|
78
|
+
}
|
|
79
|
+
/** True when the caller asked for no reasoning at all. */
|
|
80
|
+
export function isThinkingOff(thinking) {
|
|
81
|
+
return thinking?.type === 'disabled' || thinking?.effort === 'none';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Whether reasoning content should be returned. Defaults to `true` — Claude and Gemini both
|
|
85
|
+
* hide it unless asked, and Holo's reasoning stream exists to surface it.
|
|
86
|
+
*/
|
|
87
|
+
export function wantsThoughts(thinking) {
|
|
88
|
+
return thinking?.include_thoughts !== false;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Effective effort for a request, deriving from `budget_tokens` when only that was supplied
|
|
92
|
+
* and clamping to `supported` when the family constrains the range.
|
|
93
|
+
*/
|
|
94
|
+
export function resolveEffort(thinking, supported = EFFORT_ORDER) {
|
|
95
|
+
if (!thinking)
|
|
96
|
+
return undefined;
|
|
97
|
+
// An explicitly stated depth always wins, including on a disabled request. On most families
|
|
98
|
+
// effort *is* the on/off dial, but Claude keeps them as separate fields, so collapsing the
|
|
99
|
+
// two here would silently discard a caller's depth. Deciding what a contradictory pair means
|
|
100
|
+
// belongs to each family's mapper, not to depth resolution.
|
|
101
|
+
const stated = thinking.effort ?? (thinking.budget_tokens !== undefined ? budgetToEffort(thinking.budget_tokens) : undefined);
|
|
102
|
+
const effort = stated ?? (thinking.type === 'disabled' ? 'none' : undefined);
|
|
103
|
+
return effort === undefined ? undefined : clampEffort(effort, supported);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Effective token budget for a request, deriving from `effort` when only that was supplied.
|
|
107
|
+
* Returns `undefined` when thinking is off or nothing was configured.
|
|
108
|
+
*
|
|
109
|
+
* @remarks An explicitly supplied `budget_tokens` is passed through, bounds-clamped only. Only a
|
|
110
|
+
* derived budget goes through the ladder — routing the caller's own number through it would snap
|
|
111
|
+
* it to the nearest rung and silently cut the value they asked for.
|
|
112
|
+
*
|
|
113
|
+
* @param effortOverride depth already clamped to what the target accepts. Pass it wherever the
|
|
114
|
+
* family clamps effort, so the budget agrees with the level actually being sent.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveBudget(thinking, bounds = {}, effortOverride) {
|
|
117
|
+
if (!thinking || isThinkingOff(thinking))
|
|
118
|
+
return undefined;
|
|
119
|
+
if (thinking.budget_tokens !== undefined) {
|
|
120
|
+
return clampBudget(thinking.budget_tokens, bounds);
|
|
121
|
+
}
|
|
122
|
+
const effort = effortOverride ?? thinking.effort;
|
|
123
|
+
if (effort !== undefined)
|
|
124
|
+
return effortToBudget(effort, bounds);
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Build a {@link HoloThinking} for the `toHolo` direction, dropping undefined fields and
|
|
129
|
+
* collapsing to `undefined` when the native request carried no reasoning configuration.
|
|
130
|
+
*/
|
|
131
|
+
export function toHoloThinking(partial) {
|
|
132
|
+
const { effort, budget_tokens, include_thoughts } = partial;
|
|
133
|
+
if (partial.type === 'auto' &&
|
|
134
|
+
effort === undefined &&
|
|
135
|
+
budget_tokens === undefined &&
|
|
136
|
+
include_thoughts === undefined) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
return pickDefined({
|
|
140
|
+
type: partial.type,
|
|
141
|
+
effort,
|
|
142
|
+
budget_tokens,
|
|
143
|
+
include_thoughts,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Canonical thinking for a family whose only dial is an effort level (OpenAI, Ollama, and
|
|
148
|
+
* Gemini's `thinkingLevel`). `none` is how those families spell "off", so it maps to
|
|
149
|
+
* `disabled` rather than to an enabled request with zero depth.
|
|
150
|
+
*/
|
|
151
|
+
export function thinkingFromEffort(effort, include_thoughts) {
|
|
152
|
+
if (effort === null || effort === undefined)
|
|
153
|
+
return undefined;
|
|
154
|
+
return toHoloThinking({
|
|
155
|
+
type: effort === 'none' ? 'disabled' : 'enabled',
|
|
156
|
+
effort,
|
|
157
|
+
include_thoughts,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Effort for a family where the level **is** the on/off switch (OpenAI), rather than a separate
|
|
162
|
+
* field alongside one (Claude).
|
|
163
|
+
*
|
|
164
|
+
* There, `none` is how the API spells "off", so an explicit `disabled` has to collapse onto it.
|
|
165
|
+
* {@link resolveEffort} deliberately preserves a stated depth instead, which on these families
|
|
166
|
+
* would turn reasoning back on for a caller who asked to switch it off.
|
|
167
|
+
*/
|
|
168
|
+
export function resolveEffortDial(thinking, supported = EFFORT_ORDER) {
|
|
169
|
+
if (isThinkingOff(thinking))
|
|
170
|
+
return clampEffort('none', supported);
|
|
171
|
+
return resolveEffort(thinking, supported);
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=thinking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../src/provider/thinking.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAElG;;;;;;;GAOG;AACH,MAAM,aAAa,GAA+B;IAC9C,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;CACb,CAAC;AAEF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,SAAgC;IAC5E,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE9C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,IAA4B,CAAC;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE5C,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,YAAY,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC;YAC9E,YAAY,GAAG,QAAQ,CAAC;YACxB,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,GAAG,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAOD,+FAA+F;AAC/F,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,SAAuB,EAAE;IACjE,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG,MAAM,CAAC;IAC1B,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,SAAuB,EAAE;IACxE,OAAO,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,IAAI,QAAQ,GAAe,MAAM,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;YAAE,QAAQ,GAAG,MAAM,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,QAAkC;IAC5D,OAAO,QAAQ,EAAE,IAAI,KAAK,UAAU,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkC;IAC5D,OAAO,QAAQ,EAAE,gBAAgB,KAAK,KAAK,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CACzB,QAAkC,EAClC,YAAmC,YAAY;IAE/C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,4FAA4F;IAC5F,2FAA2F;IAC3F,6FAA6F;IAC7F,4DAA4D;IAC5D,MAAM,MAAM,GACR,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7E,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,QAAkC,EAClC,SAAuB,EAAE,EACzB,cAAuC;IAEvC,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAK9B;IACG,MAAM,EAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,GAAG,OAAO,CAAC;IAC1D,IACI,OAAO,CAAC,IAAI,KAAK,MAAM;QACvB,MAAM,KAAK,SAAS;QACpB,aAAa,KAAK,SAAS;QAC3B,gBAAgB,KAAK,SAAS,EAChC,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;QACf,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM;QACN,aAAa;QACb,gBAAgB;KACnB,CAAiB,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAC9B,MAAqC,EACrC,gBAAsC;IAEtC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,cAAc,CAAC;QAClB,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAChD,MAAM;QACN,gBAAgB;KACnB,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC7B,QAAkC,EAClC,YAAmC,YAAY;IAE/C,IAAI,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-provider-events.d.ts","sourceRoot":"","sources":["../../../src/provider/translator/translate-provider-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,mBAAmB,EAAE,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAE3G;;;;;;;;;;;GAWG;AACH,wBAAuB,uBAAuB,CAC1C,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EACpC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,mBAAmB,GAC1B,aAAa,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"translate-provider-events.d.ts","sourceRoot":"","sources":["../../../src/provider/translator/translate-provider-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,mBAAmB,EAAE,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAE3G;;;;;;;;;;;GAWG;AACH,wBAAuB,uBAAuB,CAC1C,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EACpC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,mBAAmB,GAC1B,aAAa,CAAC,aAAa,CAAC,CAgI9B"}
|
|
@@ -107,10 +107,18 @@ export async function* translateProviderEvents(events, source, wire) {
|
|
|
107
107
|
holoResp = Object.assign({}, baseResp, { usage: usage });
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
// `message` becomes the wire-family body the client receives; keep the provider's own
|
|
111
|
+
// body so the audit still sees what the provider returned (usage details included).
|
|
112
|
+
yield {
|
|
113
|
+
...done,
|
|
114
|
+
message: await wire.fromHoloResponse(holoResp),
|
|
115
|
+
providerMessage: done.providerMessage ?? done.message,
|
|
116
|
+
chunksForwarded: false,
|
|
117
|
+
};
|
|
111
118
|
}
|
|
112
|
-
catch {
|
|
113
|
-
|
|
119
|
+
catch (e) {
|
|
120
|
+
// The client gets the provider-shaped body; the audit records that the translation failed.
|
|
121
|
+
yield { ...done, translationError: e.message, chunksForwarded: false };
|
|
114
122
|
}
|
|
115
123
|
}
|
|
116
124
|
const err = ctx.pendingError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-provider-events.js","sourceRoot":"","sources":["../../../src/provider/translator/translate-provider-events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"translate-provider-events.js","sourceRoot":"","sources":["../../../src/provider/translator/translate-provider-events.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holokai/holo-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Common SDK for Holo plugin system - contracts, types, and validators",
|
|
6
6
|
"author": "Holokai",
|
|
@@ -86,9 +86,8 @@
|
|
|
86
86
|
],
|
|
87
87
|
"sideEffects": false,
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"tiktoken": "^1.0.0",
|
|
90
89
|
"uuid": "^14.0.1",
|
|
91
|
-
"@holokai/holo-types": "^1.
|
|
90
|
+
"@holokai/holo-types": "^1.9.0"
|
|
92
91
|
},
|
|
93
92
|
"peerDependencies": {
|
|
94
93
|
"express": "^5.0.0",
|
package/dist/core/tokenizer.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
package/dist/core/tokenizer.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { encoding_for_model } from 'tiktoken';
|
|
2
|
-
let encoder;
|
|
3
|
-
function getEncoder() {
|
|
4
|
-
if (!encoder) {
|
|
5
|
-
encoder = encoding_for_model('gpt-4o');
|
|
6
|
-
}
|
|
7
|
-
return encoder;
|
|
8
|
-
}
|
|
9
|
-
export function countTokens(text) {
|
|
10
|
-
return getEncoder().encode(text).length;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAE5C,IAAI,OAA0D,CAAC;AAE/D,SAAS,UAAU;IACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC"}
|