kiokuko-dsh 0.2.5 → 0.2.7
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.cjs +78 -8
- package/dist/dsh/agenticreplay-libraries.d.ts +1 -0
- package/dist/dsh/agenticreplay-libraries.d.ts.map +1 -1
- package/dist/dsh/agenticreplay-libraries.js.map +1 -1
- package/dist/dsh/agenticreplay-recorder.d.ts +1 -0
- package/dist/dsh/agenticreplay-recorder.d.ts.map +1 -1
- package/dist/dsh/agenticreplay-recorder.js +3 -1
- package/dist/dsh/agenticreplay-recorder.js.map +1 -1
- package/dist/dsh/agenticreplay-security.d.ts +2 -0
- package/dist/dsh/agenticreplay-security.d.ts.map +1 -1
- package/dist/dsh/agenticreplay-security.js +60 -4
- package/dist/dsh/agenticreplay-security.js.map +1 -1
- package/dist/dsh/agenticreplay-status-presentation.d.ts.map +1 -1
- package/dist/dsh/agenticreplay-status-presentation.js +3 -1
- package/dist/dsh/agenticreplay-status-presentation.js.map +1 -1
- package/dist/dsh/execution-selection.d.ts +13 -0
- package/dist/dsh/execution-selection.d.ts.map +1 -1
- package/dist/dsh/execution-selection.js +11 -0
- package/dist/dsh/execution-selection.js.map +1 -1
- package/dist/dsh/head-worker-configuration.d.ts +27 -0
- package/dist/dsh/head-worker-configuration.d.ts.map +1 -0
- package/dist/dsh/head-worker-configuration.js +69 -0
- package/dist/dsh/head-worker-configuration.js.map +1 -0
- package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
- package/dist/dsh/host-adapter/admission.js +3 -0
- package/dist/dsh/host-adapter/admission.js.map +1 -1
- package/dist/dsh/host-adapter/routing.d.ts +3 -1
- package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
- package/dist/dsh/host-adapter/routing.js +11 -6
- package/dist/dsh/host-adapter/routing.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +146 -1
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.d.ts +2 -0
- package/dist/dsh/index.d.ts.map +1 -1
- package/dist/dsh/index.js +2 -0
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/model-selection-ui.d.ts +2 -0
- package/dist/dsh/model-selection-ui.d.ts.map +1 -1
- package/dist/dsh/model-selection-ui.js +69 -5
- package/dist/dsh/model-selection-ui.js.map +1 -1
- package/dist/dsh/models/contracts.d.ts +30 -2
- package/dist/dsh/models/contracts.d.ts.map +1 -1
- package/dist/dsh/models/contracts.js +6 -0
- package/dist/dsh/models/contracts.js.map +1 -1
- package/dist/dsh/models/profiles.d.ts +2 -0
- package/dist/dsh/models/profiles.d.ts.map +1 -1
- package/dist/dsh/models/profiles.js +7 -3
- package/dist/dsh/models/profiles.js.map +1 -1
- package/dist/dsh/models/service.d.ts +58 -3
- package/dist/dsh/models/service.d.ts.map +1 -1
- package/dist/dsh/models/service.js +159 -18
- package/dist/dsh/models/service.js.map +1 -1
- package/dist/dsh/models/session-selection.d.ts +25 -0
- package/dist/dsh/models/session-selection.d.ts.map +1 -0
- package/dist/dsh/models/session-selection.js +16 -0
- package/dist/dsh/models/session-selection.js.map +1 -0
- package/dist/dsh/models/surface.d.ts +1 -0
- package/dist/dsh/models/surface.d.ts.map +1 -1
- package/dist/dsh/models/surface.js +24 -4
- package/dist/dsh/models/surface.js.map +1 -1
- package/dist/dsh/native-worker-routing.d.ts +69 -0
- package/dist/dsh/native-worker-routing.d.ts.map +1 -0
- package/dist/dsh/native-worker-routing.js +147 -0
- package/dist/dsh/native-worker-routing.js.map +1 -0
- package/dist/dsh/skill-prompts.json +1 -1
- package/dist/index.js +2 -0
- package/dist/locale/en.json +1 -1
- package/dist/locale/ja.json +1 -1
- package/dist/locale/ko.json +1 -1
- package/dist/locale/zh-CN.json +1 -1
- package/dist/models-client.cjs +78 -8
- package/dist/models-client.d.ts.map +1 -1
- package/dist/models-client.js +76 -8
- package/dist/models-client.js.map +1 -1
- package/docs/kiokuko-models.md +47 -0
- package/docs/verification.md +112 -0
- package/migrations/037_native_worker_routing.sql +8 -0
- package/package.json +7 -3
- package/scripts/evaluate-answer-review.mjs +3 -0
- package/scripts/verification-completion.mjs +12 -0
- package/scripts/verify-lisp-vendor.mjs +3 -0
- package/skills/coding-ideal-routine-skill/SKILL.md +12 -0
- package/skills/one-shot-software-completion/SKILL.md +13 -0
|
@@ -19,9 +19,9 @@ export declare const ConnectionSchema: z.ZodObject<{
|
|
|
19
19
|
openrouter: "openrouter";
|
|
20
20
|
ollama: "ollama";
|
|
21
21
|
codex: "codex";
|
|
22
|
-
opencode: "opencode";
|
|
23
22
|
claude: "claude";
|
|
24
23
|
xai: "xai";
|
|
24
|
+
opencode: "opencode";
|
|
25
25
|
nous: "nous";
|
|
26
26
|
infron: "infron";
|
|
27
27
|
}>;
|
|
@@ -60,9 +60,9 @@ export declare const ModelsDocumentSchema: z.ZodObject<{
|
|
|
60
60
|
openrouter: "openrouter";
|
|
61
61
|
ollama: "ollama";
|
|
62
62
|
codex: "codex";
|
|
63
|
-
opencode: "opencode";
|
|
64
63
|
claude: "claude";
|
|
65
64
|
xai: "xai";
|
|
65
|
+
opencode: "opencode";
|
|
66
66
|
nous: "nous";
|
|
67
67
|
infron: "infron";
|
|
68
68
|
}>;
|
|
@@ -86,6 +86,34 @@ export declare const ModelsDocumentSchema: z.ZodObject<{
|
|
|
86
86
|
image: z.ZodDefault<z.ZodBoolean>;
|
|
87
87
|
}, z.core.$strict>>>;
|
|
88
88
|
}, z.core.$strict>>;
|
|
89
|
+
defaultHeadWorker: z.ZodOptional<z.ZodObject<{
|
|
90
|
+
preset: z.ZodLiteral<"gpt-6.1-sol-deepseek-v4.1-flash">;
|
|
91
|
+
head: z.ZodObject<{
|
|
92
|
+
provider: z.ZodString;
|
|
93
|
+
model: z.ZodString;
|
|
94
|
+
reasoningEffort: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strict>;
|
|
96
|
+
worker: z.ZodObject<{
|
|
97
|
+
provider: z.ZodString;
|
|
98
|
+
model: z.ZodString;
|
|
99
|
+
reasoningEffort: z.ZodOptional<z.ZodString>;
|
|
100
|
+
}, z.core.$strict>;
|
|
101
|
+
}, z.core.$strict>>;
|
|
102
|
+
defaultHeadWorkerSelectedAt: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
sessionHeadWorkers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodObject<{
|
|
104
|
+
preset: z.ZodLiteral<"gpt-6.1-sol-deepseek-v4.1-flash">;
|
|
105
|
+
head: z.ZodObject<{
|
|
106
|
+
provider: z.ZodString;
|
|
107
|
+
model: z.ZodString;
|
|
108
|
+
reasoningEffort: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$strict>;
|
|
110
|
+
worker: z.ZodObject<{
|
|
111
|
+
provider: z.ZodString;
|
|
112
|
+
model: z.ZodString;
|
|
113
|
+
reasoningEffort: z.ZodOptional<z.ZodString>;
|
|
114
|
+
}, z.core.$strict>;
|
|
115
|
+
}, z.core.$strict>>>>;
|
|
116
|
+
sessionHeadWorkerRevisions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
89
117
|
}, z.core.$strict>;
|
|
90
118
|
export type ModelsDocument = z.infer<typeof ModelsDocumentSchema>;
|
|
91
119
|
export declare const CONNECTION_DEFAULTS: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,0IAanB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC;AACpD,eAAO,MAAM,iBAAiB;;;;;;;kBASnB,CAAC;AACZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkCzB,CAAC;AACL,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiB9B,CAAC;AACJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CAyBtB,CAAC;AACX,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { HeadWorkerConfigurationSchema } from "../head-worker-configuration.js";
|
|
2
3
|
export const CONNECTION_KINDS = [
|
|
3
4
|
"openai",
|
|
4
5
|
"codex",
|
|
@@ -61,6 +62,11 @@ export const ModelsDocumentSchema = z
|
|
|
61
62
|
version: z.literal(1),
|
|
62
63
|
revision: z.number().int().nonnegative(),
|
|
63
64
|
connections: z.array(ConnectionSchema).max(128),
|
|
65
|
+
defaultHeadWorker: HeadWorkerConfigurationSchema.optional(),
|
|
66
|
+
defaultHeadWorkerSelectedAt: z.number().int().nonnegative().optional(),
|
|
67
|
+
// Null is an explicit ordinary-model choice, even when a profile pair exists.
|
|
68
|
+
sessionHeadWorkers: z.record(z.string().min(1).max(256), HeadWorkerConfigurationSchema.nullable()).optional(),
|
|
69
|
+
sessionHeadWorkerRevisions: z.record(z.string().min(1).max(256), z.number().int().nonnegative()).optional(),
|
|
64
70
|
})
|
|
65
71
|
.strict()
|
|
66
72
|
.refine((value) => new Set(value.connections.map((c) => c.id)).size ===
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/models/contracts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/models/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export declare const OUTPUT_TOKEN_MARGIN = 1024;
|
|
|
25
25
|
export declare const REQUEST_OUTPUT_TOKENS = 32768;
|
|
26
26
|
/** The output cap to store for one model: 1K under what the provider advertises, never above its window. */
|
|
27
27
|
export declare function storableMaxTokens(advertised: number, contextWindow: number): number;
|
|
28
|
+
/** Bound every request independently of catalog capacity; never enlarge a caller budget. */
|
|
29
|
+
export declare function requestMaxTokens(maxTokens: unknown, contextWindow: unknown, requested?: number): number;
|
|
28
30
|
/** The wire protocol pi-ai serves for one Kiokuko connection protocol. */
|
|
29
31
|
export declare function protocolApi(protocol: Connection["protocol"]): string;
|
|
30
32
|
/** Compose the public payload hook after any caller hook; the closure freezes tier. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/profiles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAER;
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/profiles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAER;AACD,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOvG;AACD,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAMpE;AACD,uFAAuF;AACvF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,GACrD,YAAY,CA8Bd;AAmDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,SAAS,UAAU,EAAE,GACjC,mBAAmB,CAgBrB;AACD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,GACrD,2BAA2B,CAyF7B"}
|
|
@@ -26,9 +26,13 @@ export const REQUEST_OUTPUT_TOKENS = 32_768;
|
|
|
26
26
|
export function storableMaxTokens(advertised, contextWindow) {
|
|
27
27
|
return Math.max(1, Math.min(advertised, contextWindow) - OUTPUT_TOKEN_MARGIN);
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
function requestMaxTokens(maxTokens, contextWindow) {
|
|
31
|
-
|
|
29
|
+
/** Bound every request independently of catalog capacity; never enlarge a caller budget. */
|
|
30
|
+
export function requestMaxTokens(maxTokens, contextWindow, requested) {
|
|
31
|
+
if (requested !== undefined && (!Number.isSafeInteger(requested) || requested < 1))
|
|
32
|
+
throw new Error("Request maxTokens must be a positive safe integer");
|
|
33
|
+
const capacity = (value) => typeof value === "number" && Number.isSafeInteger(value) && value > 0
|
|
34
|
+
? value : REQUEST_OUTPUT_TOKENS;
|
|
35
|
+
return Math.min(capacity(maxTokens), capacity(contextWindow), requested ?? REQUEST_OUTPUT_TOKENS, REQUEST_OUTPUT_TOKENS);
|
|
32
36
|
}
|
|
33
37
|
/** The wire protocol pi-ai serves for one Kiokuko connection protocol. */
|
|
34
38
|
export function protocolApi(protocol) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/dsh/models/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,uBAAuB,GAGxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,GAGd,MAAM,gBAAgB,CAAC;AAIxB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC5C,4GAA4G;AAC5G,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,aAAqB;IAErB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,mBAAmB,CAAC,CAAC;AAChF,CAAC;AACD,
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/dsh/models/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,15 @@ import { type InfronServiceTier } from "./contracts.js";
|
|
|
3
3
|
import { ModelsConfigStore } from "./config-store.js";
|
|
4
4
|
import { CredentialFile } from "./vendor/credentials.js";
|
|
5
5
|
import type { AuthEvent, AuthPrompt } from "./vendor/auth-contract.js";
|
|
6
|
-
import type
|
|
6
|
+
import { type DshModelCatalog, type ModelRoute } from "../model-configuration.js";
|
|
7
|
+
import { type HeadWorkerConfiguration } from "../head-worker-configuration.js";
|
|
7
8
|
export interface ModelsServiceOptions {
|
|
8
9
|
llm: Pick<LlmRuntime, "registerAdapter" | "resolveCallConfig" | "discoverModels">;
|
|
10
|
+
catalog?: DshModelCatalog;
|
|
11
|
+
sessionCreatedAt?: (sessionId: string) => number | undefined;
|
|
12
|
+
now?: () => number;
|
|
13
|
+
assertCurrent?: (sessionId: string) => void | Promise<void>;
|
|
14
|
+
onCurrentHeadWorkerChange?: (sessionId: string) => void | Promise<void>;
|
|
9
15
|
config: ModelsConfigStore;
|
|
10
16
|
credentials: CredentialFile;
|
|
11
17
|
attachments?: () => any;
|
|
@@ -47,8 +53,45 @@ export declare class KiokukoModelsService {
|
|
|
47
53
|
start(): Promise<void>;
|
|
48
54
|
private require;
|
|
49
55
|
routeMetadata(id: string): ModelRoute | undefined;
|
|
50
|
-
|
|
56
|
+
private catalog;
|
|
57
|
+
private defaultFor;
|
|
58
|
+
private selectionFor;
|
|
59
|
+
list(sessionId?: string): Promise<{
|
|
51
60
|
revision: number;
|
|
61
|
+
headWorker: {
|
|
62
|
+
candidates: {
|
|
63
|
+
heads: import("../model-configuration.js").ModelBinding[];
|
|
64
|
+
workers: import("../model-configuration.js").ModelBinding[];
|
|
65
|
+
problems: string[];
|
|
66
|
+
};
|
|
67
|
+
current: {
|
|
68
|
+
preset: "gpt-6.1-sol-deepseek-v4.1-flash";
|
|
69
|
+
head: {
|
|
70
|
+
provider: string;
|
|
71
|
+
model: string;
|
|
72
|
+
reasoningEffort?: string | undefined;
|
|
73
|
+
};
|
|
74
|
+
worker: {
|
|
75
|
+
provider: string;
|
|
76
|
+
model: string;
|
|
77
|
+
reasoningEffort?: string | undefined;
|
|
78
|
+
};
|
|
79
|
+
} | null;
|
|
80
|
+
default: {
|
|
81
|
+
preset: "gpt-6.1-sol-deepseek-v4.1-flash";
|
|
82
|
+
head: {
|
|
83
|
+
provider: string;
|
|
84
|
+
model: string;
|
|
85
|
+
reasoningEffort?: string | undefined;
|
|
86
|
+
};
|
|
87
|
+
worker: {
|
|
88
|
+
provider: string;
|
|
89
|
+
model: string;
|
|
90
|
+
reasoningEffort?: string | undefined;
|
|
91
|
+
};
|
|
92
|
+
} | null;
|
|
93
|
+
currentAvailable: boolean;
|
|
94
|
+
};
|
|
52
95
|
connections: {
|
|
53
96
|
credentialKey: string;
|
|
54
97
|
connected: boolean;
|
|
@@ -58,7 +101,7 @@ export declare class KiokukoModelsService {
|
|
|
58
101
|
actualTier: "unknown" | InfronServiceTier | undefined;
|
|
59
102
|
lastRequestedTier: InfronServiceTier | undefined;
|
|
60
103
|
id: string;
|
|
61
|
-
kind: "custom" | "openai" | "deepseek" | "opencode-go" | "openrouter" | "ollama" | "codex" | "
|
|
104
|
+
kind: "custom" | "openai" | "deepseek" | "opencode-go" | "openrouter" | "ollama" | "codex" | "claude" | "xai" | "opencode" | "nous" | "infron";
|
|
62
105
|
name: string;
|
|
63
106
|
baseURL: string;
|
|
64
107
|
protocol: "responses" | "chat-completions" | "messages";
|
|
@@ -112,6 +155,18 @@ export declare class KiokukoModelsService {
|
|
|
112
155
|
* failing the whole refresh.
|
|
113
156
|
*/
|
|
114
157
|
private adopt;
|
|
158
|
+
/** Snapshot once, including an ordinary-model choice, so defaults only affect new chats. */
|
|
159
|
+
headWorkerSelection(sessionId: string): Promise<{
|
|
160
|
+
configuration?: HeadWorkerConfiguration;
|
|
161
|
+
revision: number;
|
|
162
|
+
}>;
|
|
163
|
+
private checkSessionId;
|
|
164
|
+
private writeHeadWorker;
|
|
165
|
+
selectHeadWorker(input: unknown, scope: "current" | "default", revision: number, sessionId?: string): Promise<void>;
|
|
166
|
+
/** An explicit native effort change keeps the pair and revokes older worker generations. */
|
|
167
|
+
updateHeadWorkerEffort(sessionId: string, reasoningEffort: string, isCurrent?: () => boolean): Promise<void>;
|
|
168
|
+
/** Native model picker selections explicitly leave pair mode in just this chat. */
|
|
169
|
+
clearHeadWorker(sessionId: string, isCurrent?: () => boolean): Promise<void>;
|
|
115
170
|
select(id: string, model: string, scope: "current" | "default", sessionId?: string): Promise<void>;
|
|
116
171
|
startLogin(id: string): string;
|
|
117
172
|
authStatus(id: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/service.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/dsh/models/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { registerOwnedModels } from "./metadata.js";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { INVALID_CREDENTIAL_CODE, LlmAdapter, } from "@deepseek-ai/dsh-llm";
|
|
3
|
+
import { INVALID_CREDENTIAL_CODE, ReasoningEffortId, LlmAdapter, } from "@deepseek-ai/dsh-llm";
|
|
4
4
|
import { PiAiAdapter } from "@deepseek-ai/dsh-llm-pi-ai";
|
|
5
5
|
import { ConnectionSchema, CONNECTION_DEFAULTS, credentialKey, ManualModelSchema, } from "./contracts.js";
|
|
6
6
|
import { asStoredCredential } from "./vendor/credentials.js";
|
|
7
7
|
import { adapterBuiltinProviders } from "./vendor/pi-ai.js";
|
|
8
8
|
import { loginNous, refreshNous } from "./vendor/nous-oauth.js";
|
|
9
|
-
import { connectionProfile, OUTPUT_TOKEN_MARGIN, protocolApi, sharedCredentialStore, storableMaxTokens, } from "./profiles.js";
|
|
9
|
+
import { connectionProfile, OUTPUT_TOKEN_MARGIN, protocolApi, requestMaxTokens, sharedCredentialStore, storableMaxTokens, } from "./profiles.js";
|
|
10
10
|
import { OpenCodeAdapter } from "./vendor/opencode-adapter.js";
|
|
11
11
|
import { OpenCodeCatalog, } from "./vendor/opencode-catalog.js";
|
|
12
12
|
import { OPEN_CODE_SNAPSHOTS } from "./vendor/opencode-owned.generated.js";
|
|
13
|
+
import { readModelCatalog } from "../model-configuration.js";
|
|
14
|
+
import { HeadWorkerConfigurationSchema, headWorkerCandidates, validateHeadWorker } from "../head-worker-configuration.js";
|
|
13
15
|
/**
|
|
14
16
|
* Capacities for a discovered model whose endpoint and catalog disclose none.
|
|
15
17
|
* These are the pi-ai profile defaults (`defaultContextWindow`,
|
|
@@ -79,6 +81,9 @@ class ModelsAdapter extends LlmAdapter {
|
|
|
79
81
|
throw new Error("Prepared connection identity mismatch");
|
|
80
82
|
return this.run(call, {
|
|
81
83
|
...options,
|
|
84
|
+
// Metadata alone is not enforced by pi-ai's stream API. Preserve the
|
|
85
|
+
// prepared generation while bounding both omitted and explicit budgets.
|
|
86
|
+
maxTokens: requestMaxTokens(call.model.defaultMaxTokens, call.model.context?.contextWindow, options.maxTokens),
|
|
82
87
|
provider: r.underlying,
|
|
83
88
|
signal: AbortSignal.any([
|
|
84
89
|
...(options.signal ? [options.signal] : []),
|
|
@@ -199,10 +204,38 @@ export class KiokukoModelsService {
|
|
|
199
204
|
protocol: c.protocol,
|
|
200
205
|
};
|
|
201
206
|
}
|
|
202
|
-
|
|
207
|
+
catalog() {
|
|
208
|
+
if (this.options.catalog)
|
|
209
|
+
return this.options.catalog;
|
|
210
|
+
const native = this.options.llm;
|
|
211
|
+
return {
|
|
212
|
+
listProviders: () => native.listProviders?.() ?? this.document.connections.map(c => ({ id: c.id, name: c.name, route: this.routeMetadata(c.id) })),
|
|
213
|
+
listModels: id => native.listModels?.(id) ?? this.adapter.listModels(id),
|
|
214
|
+
resolveCallConfig: binding => this.options.llm.resolveCallConfig({ provider: binding.provider, model: binding.model,
|
|
215
|
+
...(binding.reasoningEffort !== undefined ? { reasoningEffort: ReasoningEffortId(binding.reasoningEffort) } : {}) }),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
defaultFor(sessionId) {
|
|
219
|
+
const createdAt = this.options.sessionCreatedAt?.(sessionId), selectedAt = this.document.defaultHeadWorkerSelectedAt;
|
|
220
|
+
// Unseen old chats and unverifiable sessions never silently adopt a new default.
|
|
221
|
+
return createdAt !== undefined && Number.isFinite(createdAt) && selectedAt !== undefined && createdAt >= selectedAt
|
|
222
|
+
? this.document.defaultHeadWorker : undefined;
|
|
223
|
+
}
|
|
224
|
+
selectionFor(sessionId) {
|
|
225
|
+
return sessionId && Object.hasOwn(this.document.sessionHeadWorkers ?? {}, sessionId)
|
|
226
|
+
? this.document.sessionHeadWorkers[sessionId] ?? undefined
|
|
227
|
+
: sessionId ? this.defaultFor(sessionId) : this.document.defaultHeadWorker;
|
|
228
|
+
}
|
|
229
|
+
async list(sessionId) {
|
|
230
|
+
const candidates = await headWorkerCandidates(await readModelCatalog(this.catalog()).catch(() => ({ providers: [], models: [], failures: [] })), []);
|
|
203
231
|
const auth = await this.options.credentials.describe();
|
|
204
232
|
return {
|
|
205
233
|
revision: this.document.revision,
|
|
234
|
+
headWorker: {
|
|
235
|
+
candidates, current: this.selectionFor(sessionId) ?? null, default: this.document.defaultHeadWorker ?? null,
|
|
236
|
+
currentAvailable: !this.selectionFor(sessionId) || (candidates.heads.some(b => b.provider === this.selectionFor(sessionId).head.provider && b.model === this.selectionFor(sessionId).head.model) &&
|
|
237
|
+
candidates.workers.some(b => b.provider === this.selectionFor(sessionId).worker.provider && b.model === this.selectionFor(sessionId).worker.model)),
|
|
238
|
+
},
|
|
206
239
|
connections: this.document.connections.map((c) => {
|
|
207
240
|
const row = auth.find((a) => a.provider === credentialKey(c));
|
|
208
241
|
const run = [...this.logins.values()].find((r) => r.connectionId === c.id && r.status === "pending");
|
|
@@ -246,7 +279,7 @@ export class KiokukoModelsService {
|
|
|
246
279
|
if (previous && previous.kind !== c.kind)
|
|
247
280
|
throw new Error("Connection kind cannot change; add a new connection");
|
|
248
281
|
const next = {
|
|
249
|
-
|
|
282
|
+
...this.document,
|
|
250
283
|
revision: revision + 1,
|
|
251
284
|
connections: [
|
|
252
285
|
...this.document.connections.filter((v) => v.id !== c.id),
|
|
@@ -476,22 +509,130 @@ export class KiokukoModelsService {
|
|
|
476
509
|
return parsed.success ? [parsed.data] : [];
|
|
477
510
|
});
|
|
478
511
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
512
|
+
/** Snapshot once, including an ordinary-model choice, so defaults only affect new chats. */
|
|
513
|
+
async headWorkerSelection(sessionId) {
|
|
514
|
+
this.checkSessionId(sessionId);
|
|
515
|
+
return this.serial(async () => {
|
|
516
|
+
if (!Object.hasOwn(this.document.sessionHeadWorkers ?? {}, sessionId))
|
|
517
|
+
await this.writeHeadWorker(this.defaultFor(sessionId) ?? null, "current", sessionId);
|
|
518
|
+
const configuration = this.document.sessionHeadWorkers[sessionId];
|
|
519
|
+
return {
|
|
520
|
+
...(configuration ? { configuration: structuredClone(configuration) } : {}),
|
|
521
|
+
revision: this.document.sessionHeadWorkerRevisions?.[sessionId] ?? 0,
|
|
522
|
+
};
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
checkSessionId(sessionId) {
|
|
526
|
+
if (typeof sessionId !== "string" || !sessionId || sessionId.length > 256 || /[\p{Cc}\p{Cf}]/u.test(sessionId))
|
|
527
|
+
throw new Error("Open a chat before selecting its model");
|
|
528
|
+
}
|
|
529
|
+
async writeHeadWorker(configuration, scope, sessionId) {
|
|
530
|
+
const revision = this.document.revision + 1;
|
|
531
|
+
const next = scope === "current" ? {
|
|
532
|
+
...this.document, revision,
|
|
533
|
+
sessionHeadWorkers: { ...this.document.sessionHeadWorkers, [sessionId]: configuration },
|
|
534
|
+
sessionHeadWorkerRevisions: { ...this.document.sessionHeadWorkerRevisions, [sessionId]: revision },
|
|
535
|
+
} : { ...this.document, revision };
|
|
485
536
|
if (scope === "default") {
|
|
486
|
-
if (
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
537
|
+
if (configuration) {
|
|
538
|
+
next.defaultHeadWorker = configuration;
|
|
539
|
+
next.defaultHeadWorkerSelectedAt = (this.options.now ?? Date.now)();
|
|
540
|
+
}
|
|
541
|
+
else {
|
|
542
|
+
delete next.defaultHeadWorker;
|
|
543
|
+
delete next.defaultHeadWorkerSelectedAt;
|
|
544
|
+
}
|
|
494
545
|
}
|
|
546
|
+
await this.options.config.write(next, this.document.revision);
|
|
547
|
+
this.document = next;
|
|
548
|
+
}
|
|
549
|
+
async selectHeadWorker(input, scope, revision, sessionId) {
|
|
550
|
+
return this.serial(async () => {
|
|
551
|
+
if (scope !== "current" && scope !== "default")
|
|
552
|
+
throw new Error("Head/worker selection scope is invalid");
|
|
553
|
+
if (revision !== this.document.revision)
|
|
554
|
+
throw new Error("Configuration changed; reload before saving");
|
|
555
|
+
const parsed = input === null ? null : HeadWorkerConfigurationSchema.safeParse(input);
|
|
556
|
+
if (parsed && !parsed.success)
|
|
557
|
+
throw new Error("Head/worker configuration is invalid; choose both exact models");
|
|
558
|
+
const configuration = parsed?.success ? parsed.data : null;
|
|
559
|
+
if (configuration) {
|
|
560
|
+
let available = false;
|
|
561
|
+
try {
|
|
562
|
+
available = !(await validateHeadWorker(configuration, this.catalog())).length;
|
|
563
|
+
}
|
|
564
|
+
catch { /* Do not expose provider diagnostics or credentials. */ }
|
|
565
|
+
if (!available)
|
|
566
|
+
throw new Error("Head/worker unavailable; verify both exact connections and models, then reload");
|
|
567
|
+
}
|
|
568
|
+
if (scope === "current") {
|
|
569
|
+
this.checkSessionId(sessionId);
|
|
570
|
+
if (!this.options.assertCurrent)
|
|
571
|
+
throw new Error("Open a chat before selecting its model");
|
|
572
|
+
await this.options.assertCurrent(sessionId);
|
|
573
|
+
}
|
|
574
|
+
await this.writeHeadWorker(configuration, scope, sessionId);
|
|
575
|
+
if (scope === "current")
|
|
576
|
+
await this.options.onCurrentHeadWorkerChange?.(sessionId);
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
/** An explicit native effort change keeps the pair and revokes older worker generations. */
|
|
580
|
+
async updateHeadWorkerEffort(sessionId, reasoningEffort, isCurrent = () => true) {
|
|
581
|
+
this.checkSessionId(sessionId);
|
|
582
|
+
return this.serial(async () => {
|
|
583
|
+
if (!isCurrent())
|
|
584
|
+
return;
|
|
585
|
+
const current = this.selectionFor(sessionId);
|
|
586
|
+
if (!current || current.head.reasoningEffort === reasoningEffort)
|
|
587
|
+
return;
|
|
588
|
+
const parsed = HeadWorkerConfigurationSchema.safeParse({ ...current, head: { ...current.head, reasoningEffort } });
|
|
589
|
+
if (!parsed.success)
|
|
590
|
+
throw new Error("Head/worker reasoning effort is invalid");
|
|
591
|
+
let available = false;
|
|
592
|
+
try {
|
|
593
|
+
available = !(await validateHeadWorker(parsed.data, this.catalog())).length;
|
|
594
|
+
}
|
|
595
|
+
catch { /* Keep provider details private. */ }
|
|
596
|
+
if (!available)
|
|
597
|
+
throw new Error("Head/worker reasoning effort is unavailable; reload and select an available effort");
|
|
598
|
+
if (!isCurrent())
|
|
599
|
+
return;
|
|
600
|
+
await this.writeHeadWorker(parsed.data, "current", sessionId);
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
/** Native model picker selections explicitly leave pair mode in just this chat. */
|
|
604
|
+
async clearHeadWorker(sessionId, isCurrent = () => true) {
|
|
605
|
+
this.checkSessionId(sessionId);
|
|
606
|
+
return this.serial(async () => {
|
|
607
|
+
if (!isCurrent())
|
|
608
|
+
return;
|
|
609
|
+
await this.writeHeadWorker(null, "current", sessionId);
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
async select(id, model, scope, sessionId) {
|
|
613
|
+
return this.serial(async () => {
|
|
614
|
+
const c = this.require(id);
|
|
615
|
+
if (!(await this.models(id)).some((m) => m.id === model))
|
|
616
|
+
throw new Error("Model is not available; connect and refresh first");
|
|
617
|
+
const binding = { provider: c.id, model };
|
|
618
|
+
await this.options.llm.resolveCallConfig(binding);
|
|
619
|
+
if (scope === "default") {
|
|
620
|
+
if (!this.options.saveDefault)
|
|
621
|
+
throw new Error("Saving the default is unavailable");
|
|
622
|
+
await this.options.saveDefault(binding);
|
|
623
|
+
const pair = this.document.defaultHeadWorker;
|
|
624
|
+
if (pair && (pair.head.provider !== binding.provider || pair.head.model !== binding.model))
|
|
625
|
+
await this.writeHeadWorker(null, "default");
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
if (!sessionId || !this.options.selectCurrent)
|
|
629
|
+
throw new Error("Open a chat before selecting its model");
|
|
630
|
+
const pair = this.selectionFor(sessionId);
|
|
631
|
+
await this.options.selectCurrent(sessionId, binding);
|
|
632
|
+
if (!pair || pair.head.provider !== binding.provider || pair.head.model !== binding.model)
|
|
633
|
+
await this.writeHeadWorker(null, "current", sessionId);
|
|
634
|
+
}
|
|
635
|
+
});
|
|
495
636
|
}
|
|
496
637
|
startLogin(id) {
|
|
497
638
|
const c = this.require(id);
|