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.
Files changed (84) hide show
  1. package/dist/client.cjs +78 -8
  2. package/dist/dsh/agenticreplay-libraries.d.ts +1 -0
  3. package/dist/dsh/agenticreplay-libraries.d.ts.map +1 -1
  4. package/dist/dsh/agenticreplay-libraries.js.map +1 -1
  5. package/dist/dsh/agenticreplay-recorder.d.ts +1 -0
  6. package/dist/dsh/agenticreplay-recorder.d.ts.map +1 -1
  7. package/dist/dsh/agenticreplay-recorder.js +3 -1
  8. package/dist/dsh/agenticreplay-recorder.js.map +1 -1
  9. package/dist/dsh/agenticreplay-security.d.ts +2 -0
  10. package/dist/dsh/agenticreplay-security.d.ts.map +1 -1
  11. package/dist/dsh/agenticreplay-security.js +60 -4
  12. package/dist/dsh/agenticreplay-security.js.map +1 -1
  13. package/dist/dsh/agenticreplay-status-presentation.d.ts.map +1 -1
  14. package/dist/dsh/agenticreplay-status-presentation.js +3 -1
  15. package/dist/dsh/agenticreplay-status-presentation.js.map +1 -1
  16. package/dist/dsh/execution-selection.d.ts +13 -0
  17. package/dist/dsh/execution-selection.d.ts.map +1 -1
  18. package/dist/dsh/execution-selection.js +11 -0
  19. package/dist/dsh/execution-selection.js.map +1 -1
  20. package/dist/dsh/head-worker-configuration.d.ts +27 -0
  21. package/dist/dsh/head-worker-configuration.d.ts.map +1 -0
  22. package/dist/dsh/head-worker-configuration.js +69 -0
  23. package/dist/dsh/head-worker-configuration.js.map +1 -0
  24. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  25. package/dist/dsh/host-adapter/admission.js +3 -0
  26. package/dist/dsh/host-adapter/admission.js.map +1 -1
  27. package/dist/dsh/host-adapter/routing.d.ts +3 -1
  28. package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
  29. package/dist/dsh/host-adapter/routing.js +11 -6
  30. package/dist/dsh/host-adapter/routing.js.map +1 -1
  31. package/dist/dsh/host-adapter.d.ts.map +1 -1
  32. package/dist/dsh/host-adapter.js +146 -1
  33. package/dist/dsh/host-adapter.js.map +1 -1
  34. package/dist/dsh/index.d.ts +2 -0
  35. package/dist/dsh/index.d.ts.map +1 -1
  36. package/dist/dsh/index.js +2 -0
  37. package/dist/dsh/index.js.map +1 -1
  38. package/dist/dsh/model-selection-ui.d.ts +2 -0
  39. package/dist/dsh/model-selection-ui.d.ts.map +1 -1
  40. package/dist/dsh/model-selection-ui.js +69 -5
  41. package/dist/dsh/model-selection-ui.js.map +1 -1
  42. package/dist/dsh/models/contracts.d.ts +30 -2
  43. package/dist/dsh/models/contracts.d.ts.map +1 -1
  44. package/dist/dsh/models/contracts.js +6 -0
  45. package/dist/dsh/models/contracts.js.map +1 -1
  46. package/dist/dsh/models/profiles.d.ts +2 -0
  47. package/dist/dsh/models/profiles.d.ts.map +1 -1
  48. package/dist/dsh/models/profiles.js +7 -3
  49. package/dist/dsh/models/profiles.js.map +1 -1
  50. package/dist/dsh/models/service.d.ts +58 -3
  51. package/dist/dsh/models/service.d.ts.map +1 -1
  52. package/dist/dsh/models/service.js +159 -18
  53. package/dist/dsh/models/service.js.map +1 -1
  54. package/dist/dsh/models/session-selection.d.ts +25 -0
  55. package/dist/dsh/models/session-selection.d.ts.map +1 -0
  56. package/dist/dsh/models/session-selection.js +16 -0
  57. package/dist/dsh/models/session-selection.js.map +1 -0
  58. package/dist/dsh/models/surface.d.ts +1 -0
  59. package/dist/dsh/models/surface.d.ts.map +1 -1
  60. package/dist/dsh/models/surface.js +24 -4
  61. package/dist/dsh/models/surface.js.map +1 -1
  62. package/dist/dsh/native-worker-routing.d.ts +69 -0
  63. package/dist/dsh/native-worker-routing.d.ts.map +1 -0
  64. package/dist/dsh/native-worker-routing.js +147 -0
  65. package/dist/dsh/native-worker-routing.js.map +1 -0
  66. package/dist/dsh/skill-prompts.json +1 -1
  67. package/dist/index.js +2 -0
  68. package/dist/locale/en.json +1 -1
  69. package/dist/locale/ja.json +1 -1
  70. package/dist/locale/ko.json +1 -1
  71. package/dist/locale/zh-CN.json +1 -1
  72. package/dist/models-client.cjs +78 -8
  73. package/dist/models-client.d.ts.map +1 -1
  74. package/dist/models-client.js +76 -8
  75. package/dist/models-client.js.map +1 -1
  76. package/docs/kiokuko-models.md +47 -0
  77. package/docs/verification.md +112 -0
  78. package/migrations/037_native_worker_routing.sql +8 -0
  79. package/package.json +7 -3
  80. package/scripts/evaluate-answer-review.mjs +3 -0
  81. package/scripts/verification-completion.mjs +12 -0
  82. package/scripts/verify-lisp-vendor.mjs +3 -0
  83. package/skills/coding-ideal-routine-skill/SKILL.md +12 -0
  84. 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;AACxB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAY9B,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
+ {"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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CACL,CAAC,CAAC,CAAC,QAAQ;YACX,CAAC,CAAC,CAAC,QAAQ;YACX,CAAC,CAAC,CAAC,MAAM;YACT,CAAC,CAAC,CAAC,IAAI;YACP,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBACtB,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO;oBACrB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC,EAAE,yEAAyE,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzD,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACtB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,kBAAkB;QAC1D,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,kCAAkC;SAC5C,CAAC,CAAC;IACL,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;QAClD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAChD,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;IAChD,KAAK,CAAC,WAAW,CAAC,MAAM,EAC1B,+BAA+B,CAChC,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC,YAAY,EAAE,2BAA2B,EAAE,WAAW,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,uCAAuC,EAAE,WAAW,CAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,CAAC;IAC3D,GAAG,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,CAAC;IACvD,QAAQ,EAAE,CAAC,UAAU,EAAE,6BAA6B,EAAE,kBAAkB,CAAC;IACzE,QAAQ,EAAE,CAAC,cAAc,EAAE,4BAA4B,EAAE,kBAAkB,CAAC;IAC5E,aAAa,EAAE;QACb,aAAa;QACb,+BAA+B;QAC/B,kBAAkB;KACnB;IACD,UAAU,EAAE;QACV,YAAY;QACZ,8BAA8B;QAC9B,kBAAkB;KACnB;IACD,IAAI,EAAE;QACJ,eAAe;QACf,2CAA2C;QAC3C,kBAAkB;KACnB;IACD,MAAM,EAAE,CAAC,QAAQ,EAAE,8BAA8B,EAAE,kBAAkB,CAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,EAAE,2BAA2B,EAAE,kBAAkB,CAAC;IACnE,MAAM,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,kBAAkB,CAAC;CACrE,CAAC;AACX,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,OAAO,UAAU,CAAC,IAAI,KAAK,OAAO;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;gBAC5B,CAAC,CAAC,UAAU,CAAC,EAAE;gBACf,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/models/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CACL,CAAC,CAAC,CAAC,QAAQ;YACX,CAAC,CAAC,CAAC,QAAQ;YACX,CAAC,CAAC,CAAC,MAAM;YACT,CAAC,CAAC,CAAC,IAAI;YACP,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBACtB,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO;oBACrB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC,EAAE,yEAAyE,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzD,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACtB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,kBAAkB;QAC1D,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,kCAAkC;SAC5C,CAAC,CAAC;IACL,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;QAClD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/C,iBAAiB,EAAE,6BAA6B,CAAC,QAAQ,EAAE;IAC3D,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACtE,8EAA8E;IAC9E,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7G,0BAA0B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5G,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;IAChD,KAAK,CAAC,WAAW,CAAC,MAAM,EAC1B,+BAA+B,CAChC,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC,YAAY,EAAE,2BAA2B,EAAE,WAAW,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,uCAAuC,EAAE,WAAW,CAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,CAAC;IAC3D,GAAG,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,CAAC;IACvD,QAAQ,EAAE,CAAC,UAAU,EAAE,6BAA6B,EAAE,kBAAkB,CAAC;IACzE,QAAQ,EAAE,CAAC,cAAc,EAAE,4BAA4B,EAAE,kBAAkB,CAAC;IAC5E,aAAa,EAAE;QACb,aAAa;QACb,+BAA+B;QAC/B,kBAAkB;KACnB;IACD,UAAU,EAAE;QACV,YAAY;QACZ,8BAA8B;QAC9B,kBAAkB;KACnB;IACD,IAAI,EAAE;QACJ,eAAe;QACf,2CAA2C;QAC3C,kBAAkB;KACnB;IACD,MAAM,EAAE,CAAC,QAAQ,EAAE,8BAA8B,EAAE,kBAAkB,CAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,EAAE,2BAA2B,EAAE,kBAAkB,CAAC;IACnE,MAAM,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,kBAAkB,CAAC;CACrE,CAAC;AACX,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,OAAO,UAAU,CAAC,IAAI,KAAK,OAAO;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;gBAC5B,CAAC,CAAC,UAAU,CAAC,EAAE;gBACf,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,CAAC"}
@@ -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;AAQD,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"}
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
- /** The output cap one request may ask for; the margin lives in the stored value. */
30
- function requestMaxTokens(maxTokens, contextWindow) {
31
- return Math.max(1, Math.min(maxTokens, contextWindow, REQUEST_OUTPUT_TOKENS));
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":"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"}
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 { ModelRoute } from "../model-configuration.js";
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
- list(): Promise<{
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" | "opencode" | "claude" | "xai" | "nous" | "infron";
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":"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"}
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
- async list() {
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
- version: 1,
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
- async select(id, model, scope, sessionId) {
480
- const c = this.require(id);
481
- if (!(await this.models(id)).some((m) => m.id === model))
482
- throw new Error("Model is not available; connect and refresh first");
483
- const binding = { provider: c.id, model };
484
- await this.options.llm.resolveCallConfig(binding);
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 (!this.options.saveDefault)
487
- throw new Error("Saving the default is unavailable");
488
- await this.options.saveDefault(binding);
489
- }
490
- else {
491
- if (!sessionId || !this.options.selectCurrent)
492
- throw new Error("Open a chat before selecting its model");
493
- await this.options.selectCurrent(sessionId, binding);
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);