@hyperdreamer/pi-webui 1.11.0-beta.9 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/{CodeViewer-CbMSking.js → CodeViewer-Jy1WSFR_.js} +1 -1
  3. package/dist/client/assets/{UnifiedDiffViewer-CseybZvK.js → UnifiedDiffViewer-iic0AurS.js} +1 -1
  4. package/dist/client/assets/{index-Dd5_xTMQ.js → index-6NlIF1nJ.js} +587 -447
  5. package/dist/client/index.html +1 -1
  6. package/dist/config.js +70 -11
  7. package/dist/config.js.map +1 -1
  8. package/dist/server/app.js +6 -1
  9. package/dist/server/app.js.map +1 -1
  10. package/dist/server/sessiond/sessionProxyRoutes.js +1 -0
  11. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  12. package/dist/server/sessiond.js +38 -5
  13. package/dist/server/sessiond.js.map +1 -1
  14. package/dist/server/sessions/modelPolicySettingsPersistence.js +82 -0
  15. package/dist/server/sessions/modelPolicySettingsPersistence.js.map +1 -0
  16. package/dist/server/sessions/piSessionManagerGateway.js +227 -9
  17. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  18. package/dist/server/sessions/piSessionService.js +678 -242
  19. package/dist/server/sessions/piSessionService.js.map +1 -1
  20. package/dist/server/sessions/rememberCurrentModelPolicy.js +62 -0
  21. package/dist/server/sessions/rememberCurrentModelPolicy.js.map +1 -0
  22. package/dist/server/sessions/sessionArchiveStore.js +6 -0
  23. package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
  24. package/dist/server/sessions/sessionCreationSource.js +101 -0
  25. package/dist/server/sessions/sessionCreationSource.js.map +1 -0
  26. package/dist/server/sessions/sessionDefaultsRoutes.js +7 -1
  27. package/dist/server/sessions/sessionDefaultsRoutes.js.map +1 -1
  28. package/dist/server/sessions/sessionDefaultsService.js +85 -3
  29. package/dist/server/sessions/sessionDefaultsService.js.map +1 -1
  30. package/dist/server/sessions/sessionMetadataStore.js +107 -13
  31. package/dist/server/sessions/sessionMetadataStore.js.map +1 -1
  32. package/dist/server/sessions/sessionModelPolicy.js +23 -0
  33. package/dist/server/sessions/sessionModelPolicy.js.map +1 -1
  34. package/dist/server/sessions/sessionNameGenerator.js +5 -4
  35. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  36. package/dist/server/sessions/sessionReorder.js +117 -0
  37. package/dist/server/sessions/sessionReorder.js.map +1 -0
  38. package/dist/server/sessions/sessionRouteFastifyOptions.js +8 -0
  39. package/dist/server/sessions/sessionRouteFastifyOptions.js.map +1 -0
  40. package/dist/server/sessions/sessionRoutes.js +187 -4
  41. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  42. package/dist/server/sessions/starterModelPolicyPreferenceStore.js +142 -29
  43. package/dist/server/sessions/starterModelPolicyPreferenceStore.js.map +1 -1
  44. package/dist/server/sessions/utilityModelExtension.js +197 -0
  45. package/dist/server/sessions/utilityModelExtension.js.map +1 -0
  46. package/dist/server/sessions/utilityModelResolver.js +93 -0
  47. package/dist/server/sessions/utilityModelResolver.js.map +1 -0
  48. package/dist/server/sessions/utilityModelSettingsRoutes.js +62 -0
  49. package/dist/server/sessions/utilityModelSettingsRoutes.js.map +1 -0
  50. package/dist/server/sessions/utilityModelSettingsService.js +114 -0
  51. package/dist/server/sessions/utilityModelSettingsService.js.map +1 -0
  52. package/dist/shared/apiTypes.d.ts +105 -2
  53. package/dist/shared/apiTypes.js +8 -0
  54. package/dist/shared/apiTypes.js.map +1 -1
  55. package/dist/shared/capabilities.js +9 -0
  56. package/dist/shared/capabilities.js.map +1 -1
  57. package/dist/shared/federatedRoutes.js +4 -0
  58. package/dist/shared/federatedRoutes.js.map +1 -1
  59. package/docs/assets/pi-webui-desktop.png +0 -0
  60. package/docs/config.md +37 -8
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityModelExtension.js","sourceRoot":"","sources":["../../../src/server/sessions/utilityModelExtension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ const taskSlots = {
2
+ lightweight: ["lightweight"],
3
+ context: ["context", "lightweight"],
4
+ };
5
+ export function createUtilityModelResolver(deps) {
6
+ return {
7
+ configuredCandidates: async (task) => {
8
+ try {
9
+ await deps.modelRuntime.refresh({ allowNetwork: false });
10
+ const config = deps.loadConfig();
11
+ if (config.utilityModelsError !== undefined ||
12
+ config.utilityModels === undefined) {
13
+ return [];
14
+ }
15
+ const available = deps.modelRuntime.getAvailableSnapshot();
16
+ const candidates = [];
17
+ const seen = new Set();
18
+ for (const slot of taskSlots[task]) {
19
+ const reference = config.utilityModels[slot];
20
+ if (reference === undefined)
21
+ continue;
22
+ const candidate = available.find((model) => model.provider === reference.provider && model.id === reference.id);
23
+ if (candidate === undefined)
24
+ continue;
25
+ const thinkingLevel = effectiveThinkingLevel(reference, deps.thinkingLevelsForModel(candidate));
26
+ if (thinkingLevel === undefined)
27
+ continue;
28
+ const resolved = { model: candidate, thinkingLevel, slot };
29
+ const key = attemptKey(resolved);
30
+ if (seen.has(key))
31
+ continue;
32
+ seen.add(key);
33
+ candidates.push(resolved);
34
+ }
35
+ return candidates;
36
+ }
37
+ catch (error) {
38
+ logNoThrow(deps.logger, { err: error, task }, "utility model resolution failed");
39
+ return [];
40
+ }
41
+ },
42
+ };
43
+ }
44
+ export async function runWithUtilityModelFallback(resolver, task, activeAttempt, run, onFailure) {
45
+ const configured = await resolver.configuredCandidates(task);
46
+ const candidates = [];
47
+ const seen = new Set();
48
+ for (const attempt of [
49
+ ...configured,
50
+ ...(activeAttempt === undefined ? [] : [activeAttempt]),
51
+ ]) {
52
+ const key = attemptKey(attempt);
53
+ if (seen.has(key))
54
+ continue;
55
+ seen.add(key);
56
+ candidates.push(attempt);
57
+ }
58
+ for (const attempt of candidates) {
59
+ try {
60
+ const result = await run(attempt);
61
+ if (result !== undefined)
62
+ return result;
63
+ }
64
+ catch (error) {
65
+ onFailure?.(attempt, error);
66
+ }
67
+ }
68
+ return undefined;
69
+ }
70
+ function effectiveThinkingLevel(binding, supported) {
71
+ if (binding.thinkingLevel !== undefined) {
72
+ return supported.includes(binding.thinkingLevel)
73
+ ? binding.thinkingLevel
74
+ : undefined;
75
+ }
76
+ return supported.includes("minimal") ? "minimal" : "off";
77
+ }
78
+ function attemptKey(attempt) {
79
+ return JSON.stringify([
80
+ attempt.model.provider,
81
+ attempt.model.id,
82
+ attempt.thinkingLevel,
83
+ ]);
84
+ }
85
+ function logNoThrow(logger, details, message) {
86
+ try {
87
+ logger?.info(details, message);
88
+ }
89
+ catch {
90
+ // Diagnostics must not defeat the active-model fallback.
91
+ }
92
+ }
93
+ //# sourceMappingURL=utilityModelResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityModelResolver.js","sourceRoot":"","sources":["../../../src/server/sessions/utilityModelResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { parseUtilityModelsConfig } from "../../config.js";
2
+ import { UTILITY_MODEL_SLOTS } from "../../shared/apiTypes.js";
3
+ export function registerUtilityModelSettingsRoutes(app, service, prefix = "") {
4
+ app.get(`${prefix}/utility-models`, async (_request, reply) => {
5
+ try {
6
+ return await service.inspect();
7
+ }
8
+ catch (error) {
9
+ return reply.code(400).send({ error: errorMessage(error) });
10
+ }
11
+ });
12
+ app.put(`${prefix}/utility-models`, async (request, reply) => {
13
+ try {
14
+ return await service.update(parseUpdate(request.body));
15
+ }
16
+ catch (error) {
17
+ return reply.code(400).send({ error: errorMessage(error) });
18
+ }
19
+ });
20
+ }
21
+ function parseUpdate(value) {
22
+ if (!isRecord(value))
23
+ throw new Error("Expected object body");
24
+ const unknownField = Object.keys(value).find((key) => key !== "settings");
25
+ if (unknownField !== undefined)
26
+ throw new Error(`unknown field ${JSON.stringify(unknownField)}; expected exactly settings`);
27
+ if (!Object.prototype.hasOwnProperty.call(value, "settings"))
28
+ throw new Error("settings is required");
29
+ return parseSettingsUpdate(value["settings"]);
30
+ }
31
+ function parseSettingsUpdate(value) {
32
+ if (!isRecord(value))
33
+ throw new Error("settings must be an object");
34
+ const unknownSlot = Object.keys(value).find((key) => !isUtilityModelSlot(key));
35
+ if (unknownSlot !== undefined)
36
+ throw new Error(`unknown utility model slot ${JSON.stringify(unknownSlot)}`);
37
+ const update = {};
38
+ for (const slot of UTILITY_MODEL_SLOTS) {
39
+ if (!Object.prototype.hasOwnProperty.call(value, slot))
40
+ continue;
41
+ if (value[slot] === null) {
42
+ update[slot] = null;
43
+ continue;
44
+ }
45
+ const parsed = parseUtilityModelsConfig({ [slot]: value[slot] }, "request body settings");
46
+ const reference = parsed[slot];
47
+ if (reference === undefined)
48
+ throw new Error(`${slot} utility model reference is required`);
49
+ update[slot] = reference;
50
+ }
51
+ return update;
52
+ }
53
+ function isUtilityModelSlot(value) {
54
+ return UTILITY_MODEL_SLOTS.some((slot) => slot === value);
55
+ }
56
+ function isRecord(value) {
57
+ return typeof value === "object" && value !== null && !Array.isArray(value);
58
+ }
59
+ function errorMessage(error) {
60
+ return error instanceof Error ? error.message : String(error);
61
+ }
62
+ //# sourceMappingURL=utilityModelSettingsRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityModelSettingsRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/utilityModelSettingsRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { isKnownThinkingLevel } from "../../shared/thinkingLevels.js";
2
+ import { UTILITY_MODEL_SLOTS, } from "../../shared/apiTypes.js";
3
+ /**
4
+ * Inspect and atomically update machine-global utility model settings against
5
+ * the daemon's latest authenticated model catalog.
6
+ */
7
+ export function createUtilityModelSettingsService(deps) {
8
+ let updateQueue = Promise.resolve();
9
+ const inspect = async () => {
10
+ const models = await refreshedSnapshot();
11
+ return responseFor(deps.loadConfig(), models);
12
+ };
13
+ return {
14
+ inspect,
15
+ update: (patch) => enqueueUpdate(() => updateSettings(patch)),
16
+ };
17
+ function enqueueUpdate(operation) {
18
+ const queuedUpdate = updateQueue.then(operation);
19
+ updateQueue = queuedUpdate.then(() => undefined, () => undefined);
20
+ return queuedUpdate;
21
+ }
22
+ async function updateSettings(patch) {
23
+ const current = deps.loadConfig();
24
+ const next = current.utilityModelsError === undefined
25
+ ? { ...current.utilityModels }
26
+ : {};
27
+ if (Object.prototype.hasOwnProperty.call(patch, "lightweight")) {
28
+ if (patch.lightweight === null)
29
+ delete next.lightweight;
30
+ else if (patch.lightweight !== undefined)
31
+ next.lightweight = patch.lightweight;
32
+ }
33
+ if (Object.prototype.hasOwnProperty.call(patch, "context")) {
34
+ if (patch.context === null)
35
+ delete next.context;
36
+ else if (patch.context !== undefined)
37
+ next.context = patch.context;
38
+ }
39
+ const models = await refreshedSnapshot();
40
+ const slots = validationSlots(next, models);
41
+ const invalidSlots = UTILITY_MODEL_SLOTS.filter((slot) => !slots[slot].valid);
42
+ if (invalidSlots.length > 0) {
43
+ throw new Error(invalidSlots.map((slot) => slots[slot].reason ?? `${slot} utility model is invalid`).join("; "));
44
+ }
45
+ await deps.saveConfig({ utilityModels: next });
46
+ return await inspect();
47
+ }
48
+ async function refreshedSnapshot() {
49
+ await deps.modelRuntime.refresh({ allowNetwork: false });
50
+ return deps.modelRuntime.getAvailableSnapshot();
51
+ }
52
+ function responseFor(config, models) {
53
+ const modelOptions = models.map(modelOptionFor);
54
+ if (config.utilityModelsError !== undefined) {
55
+ return {
56
+ contractVersion: 2,
57
+ configError: config.utilityModelsError,
58
+ settings: {},
59
+ models: modelOptions,
60
+ slots: invalidSlots(config.utilityModelsError),
61
+ valid: false,
62
+ };
63
+ }
64
+ const settings = config.utilityModels ?? {};
65
+ const slots = validationSlots(settings, models);
66
+ return {
67
+ contractVersion: 2,
68
+ settings,
69
+ models: modelOptions,
70
+ slots,
71
+ valid: UTILITY_MODEL_SLOTS.every((slot) => slots[slot].valid),
72
+ };
73
+ }
74
+ function supportedThinkingLevels(model) {
75
+ return deps.thinkingLevelsForModel(model).filter(isKnownThinkingLevel);
76
+ }
77
+ function modelOptionFor(model) {
78
+ return {
79
+ model: { provider: model.provider, id: model.id },
80
+ ...(model.name === undefined ? {} : { name: model.name }),
81
+ thinkingLevels: supportedThinkingLevels(model),
82
+ };
83
+ }
84
+ function validationSlots(settings, models) {
85
+ return {
86
+ lightweight: validationFor("lightweight", settings, models),
87
+ context: validationFor("context", settings, models),
88
+ };
89
+ }
90
+ function validationFor(slot, settings, models) {
91
+ const configured = settings[slot];
92
+ if (configured === undefined)
93
+ return { valid: true };
94
+ const available = models.find((model) => model.provider === configured.provider && model.id === configured.id);
95
+ if (available === undefined) {
96
+ return { valid: false, reason: `${slot} utility model ${configured.provider}/${configured.id} is unavailable` };
97
+ }
98
+ if (configured.thinkingLevel !== undefined &&
99
+ !supportedThinkingLevels(available).includes(configured.thinkingLevel)) {
100
+ return {
101
+ valid: false,
102
+ reason: `${slot} utility model ${configured.provider}/${configured.id} does not support thinking level ${configured.thinkingLevel}`,
103
+ };
104
+ }
105
+ return { valid: true };
106
+ }
107
+ function invalidSlots(reason) {
108
+ return {
109
+ lightweight: { valid: false, reason },
110
+ context: { valid: false, reason },
111
+ };
112
+ }
113
+ }
114
+ //# sourceMappingURL=utilityModelSettingsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityModelSettingsService.js","sourceRoot":"","sources":["../../../src/server/sessions/utilityModelSettingsService.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ThinkingLevel } from "./thinkingLevels.js";
1
2
  export type MachineKind = "local" | "remote";
2
3
  export type MachineStatus = "unknown" | "online" | "offline" | "error";
3
4
  export declare const PI_WEBUI_CAPABILITIES: {
@@ -17,8 +18,11 @@ export declare const PI_WEBUI_CAPABILITIES: {
17
18
  readonly selectedMachineSettings: "settings.selectedMachine";
18
19
  readonly agentProfileConfig: "settings.agentProfile";
19
20
  readonly modelTierSettings: "settings.modelTiers";
21
+ readonly utilityModelSettings: "settings.utilityModels";
20
22
  readonly sessionsModelPolicy: "sessions.modelPolicy";
21
23
  readonly sessionsModelPolicyDefaults: "sessions.modelPolicyDefaults";
24
+ readonly sessionsModelPolicyStarterSelection: "sessions.modelPolicyStarterSelection";
25
+ readonly sessionsReorder: "sessions.reorder";
22
26
  };
23
27
  export type PiWebUiCapability = typeof PI_WEBUI_CAPABILITIES[keyof typeof PI_WEBUI_CAPABILITIES];
24
28
  export interface Machine {
@@ -70,6 +74,43 @@ export interface TierModelRef {
70
74
  provider: string;
71
75
  id: string;
72
76
  }
77
+ export declare const UTILITY_MODEL_SLOTS: readonly ["lightweight", "context"];
78
+ export type UtilityModelSlot = (typeof UTILITY_MODEL_SLOTS)[number];
79
+ export interface UtilityModelBinding extends TierModelRef {
80
+ thinkingLevel?: ThinkingLevel;
81
+ }
82
+ export interface UtilityModelSettings {
83
+ lightweight?: UtilityModelBinding;
84
+ context?: UtilityModelBinding;
85
+ }
86
+ export type UtilityModelSettingsUpdate = Partial<Record<UtilityModelSlot, UtilityModelBinding | null>>;
87
+ export interface UtilityModelOptionV1 {
88
+ model: TierModelRef;
89
+ name?: string;
90
+ }
91
+ export interface UtilityModelOptionV2 extends UtilityModelOptionV1 {
92
+ thinkingLevels: ThinkingLevel[];
93
+ }
94
+ export type UtilityModelOption = UtilityModelOptionV1 | UtilityModelOptionV2;
95
+ export interface UtilityModelSlotValidation {
96
+ valid: boolean;
97
+ reason?: string;
98
+ }
99
+ interface UtilityModelSettingsResponseFields {
100
+ settings: UtilityModelSettings;
101
+ slots: Record<UtilityModelSlot, UtilityModelSlotValidation>;
102
+ valid: boolean;
103
+ configError?: string;
104
+ }
105
+ export interface UtilityModelSettingsResponseV1 extends UtilityModelSettingsResponseFields {
106
+ contractVersion: 1;
107
+ models: UtilityModelOptionV1[];
108
+ }
109
+ export interface UtilityModelSettingsResponseV2 extends UtilityModelSettingsResponseFields {
110
+ contractVersion: 2;
111
+ models: UtilityModelOptionV2[];
112
+ }
113
+ export type UtilityModelSettingsResponse = UtilityModelSettingsResponseV1 | UtilityModelSettingsResponseV2;
73
114
  export interface ModelTierEntry {
74
115
  model: TierModelRef;
75
116
  thinkingLevel: string;
@@ -85,11 +126,32 @@ export interface ExactModelSelection {
85
126
  thinkingLevel: string;
86
127
  }
87
128
  export type SessionModelPolicyMode = "exact" | "tiered";
129
+ /** Version-one shape: no `exact` branch, Pi settings own the starter Exact model and thinking defaults. */
130
+ export interface LegacyStarterModelPolicyPreference {
131
+ mode: SessionModelPolicyMode;
132
+ /** Remembered while Exact is active; required while Tiered is active. */
133
+ tier?: ModelTier;
134
+ }
135
+ /** Complete remembered starter policy: active mode, remembered Exact tuple, and remembered tier. */
88
136
  export interface StarterModelPolicyPreference {
89
137
  mode: SessionModelPolicyMode;
138
+ /** Remembered while Tiered is active; required while Exact is active. */
139
+ exact: ExactModelSelection;
90
140
  /** Remembered while Exact is active; required while Tiered is active. */
91
141
  tier?: ModelTier;
92
142
  }
143
+ export type StarterModelPolicyPreferenceResponse = StarterModelPolicyPreference | LegacyStarterModelPolicyPreference;
144
+ /** SessionCreationSource identifies a top-level root explicitly created by SESSIONS `+`. */
145
+ export type SessionCreationSource = "session-list-plus";
146
+ export type SessionStartOptions = {
147
+ modelPolicy?: SessionModelPolicyUpdate;
148
+ creationSource?: never;
149
+ initialModelPolicy?: never;
150
+ } | {
151
+ creationSource: SessionCreationSource;
152
+ initialModelPolicy: StarterModelPolicyPreference;
153
+ modelPolicy?: never;
154
+ };
93
155
  export interface SessionModelPolicy {
94
156
  mode: SessionModelPolicyMode;
95
157
  exact: ExactModelSelection;
@@ -149,6 +211,8 @@ export interface PiWebUiConfigValues {
149
211
  maxUploadBytes?: number;
150
212
  /** Machine-global exact model and thinking bindings for the six canonical tiers. */
151
213
  modelTiers?: ModelTierLadder;
214
+ /** Machine-global model bindings for utility operations outside active sessions. */
215
+ utilityModels?: UtilityModelSettings;
152
216
  /** When true, LLMs can start new sessions via the spawn_session tool. */
153
217
  spawnSessions?: boolean;
154
218
  /**
@@ -377,6 +441,31 @@ export interface SessionRef {
377
441
  id: string;
378
442
  cwd: string;
379
443
  }
444
+ /** Identifies the sibling group a persisted manual order position belongs to. */
445
+ export type SessionReorderScope = {
446
+ kind: "root";
447
+ cwd: string;
448
+ } | {
449
+ kind: "children";
450
+ parentSessionPath: string;
451
+ };
452
+ export declare const SESSION_REORDER_LIMIT = 1000;
453
+ export declare const SESSION_REORDER_SESSION_ID_MAX_LENGTH = 512;
454
+ export declare const SESSION_REORDER_CWD_MAX_LENGTH: number;
455
+ export declare const SESSION_REORDER_PARENT_PATH_MAX_LENGTH: number;
456
+ export interface SessionReorderRequest {
457
+ cwd: string;
458
+ scope: SessionReorderScope;
459
+ pinned: boolean;
460
+ catalogCwds: string[];
461
+ orderedSessions: SessionRef[];
462
+ }
463
+ export interface SessionOrderEntry extends SessionRef {
464
+ manualOrder: number;
465
+ }
466
+ export interface SessionReorderResponse {
467
+ orderedSessions: SessionOrderEntry[];
468
+ }
380
469
  export declare const SESSION_UNREAD_LIMIT = 1000;
381
470
  export declare const SESSION_UNREAD_SESSION_ID_MAX_LENGTH = 512;
382
471
  export declare const SESSION_UNREAD_CWD_MAX_LENGTH: number;
@@ -501,6 +590,10 @@ export interface SessionInfo extends SessionRef {
501
590
  archivedAt?: string;
502
591
  /** True when the user has pinned this session so it sorts first in lists. */
503
592
  pinned?: boolean;
593
+ /** Present only for a top-level root explicitly created by SESSIONS `+`. */
594
+ creationSource?: SessionCreationSource;
595
+ /** Normalized durable position inside this session's sibling and pin group. */
596
+ manualOrder?: number;
504
597
  }
505
598
  export interface ArchiveSessionsResponse {
506
599
  archived: true;
@@ -685,7 +778,17 @@ export interface SessionDefaultsResponse {
685
778
  thinkingLevel: string;
686
779
  models: SessionModel[];
687
780
  thinkingLevels: string[];
688
- starterModelPolicyPreference?: StarterModelPolicyPreference;
781
+ starterModelPolicyPreference?: LegacyStarterModelPolicyPreference;
782
+ starterModelPolicyPreferenceError?: string;
783
+ }
784
+ /** Negotiated through `starterModelPolicyContract=2` once `sessions.modelPolicyStarterSelection` is effective. */
785
+ export interface SessionDefaultsV2Response {
786
+ starterModelPolicyContractVersion: 2;
787
+ model?: SessionModel;
788
+ thinkingLevel: string;
789
+ models: SessionModel[];
790
+ thinkingLevels: string[];
791
+ starterModelPolicyPreference?: StarterModelPolicyPreferenceResponse;
689
792
  starterModelPolicyPreferenceError?: string;
690
793
  }
691
794
  export type SessionDefaultsUpdate = {
@@ -705,7 +808,7 @@ export type SessionDefaultsUpdate = {
705
808
  } | {
706
809
  model?: never;
707
810
  thinkingLevel?: never;
708
- starterModelPolicyPreference: StarterModelPolicyPreference;
811
+ starterModelPolicyPreference: LegacyStarterModelPolicyPreference;
709
812
  };
710
813
  /** Editable `models.json` document for the active Pi-compatible profile. */
711
814
  export interface ModelsConfigDocument {
@@ -15,10 +15,18 @@ export const PI_WEBUI_CAPABILITIES = {
15
15
  selectedMachineSettings: "settings.selectedMachine",
16
16
  agentProfileConfig: "settings.agentProfile",
17
17
  modelTierSettings: "settings.modelTiers",
18
+ utilityModelSettings: "settings.utilityModels",
18
19
  sessionsModelPolicy: "sessions.modelPolicy",
19
20
  sessionsModelPolicyDefaults: "sessions.modelPolicyDefaults",
21
+ sessionsModelPolicyStarterSelection: "sessions.modelPolicyStarterSelection",
22
+ sessionsReorder: "sessions.reorder",
20
23
  };
21
24
  export const MODEL_TIERS = ["economy", "fast", "standard", "advanced", "capable", "frontier"];
25
+ export const UTILITY_MODEL_SLOTS = ["lightweight", "context"];
26
+ export const SESSION_REORDER_LIMIT = 1_000;
27
+ export const SESSION_REORDER_SESSION_ID_MAX_LENGTH = 512;
28
+ export const SESSION_REORDER_CWD_MAX_LENGTH = 32 * 1024;
29
+ export const SESSION_REORDER_PARENT_PATH_MAX_LENGTH = 32 * 1024;
22
30
  export const SESSION_UNREAD_LIMIT = 1_000;
23
31
  export const SESSION_UNREAD_SESSION_ID_MAX_LENGTH = 512;
24
32
  export const SESSION_UNREAD_CWD_MAX_LENGTH = 32 * 1024;
@@ -1 +1 @@
1
- {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;IAC3C,iBAAiB,EAAE,qBAAqB;IACxC,mBAAmB,EAAE,sBAAsB;IAC3C,2BAA2B,EAAE,8BAA8B;CACnD,CAAC;AAsDX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AA8WvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAkvB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;IAC3C,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,wBAAwB;IAC9C,mBAAmB,EAAE,sBAAsB;IAC3C,2BAA2B,EAAE,8BAA8B;IAC3D,mCAAmC,EAAE,sCAAsC;IAC3E,eAAe,EAAE,kBAAkB;CAC3B,CAAC;AAsDX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAQvG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,SAAS,CAAU,CAAC;AAicvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,GAAG,IAAI,CAAC;AAkBhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAiwB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
@@ -19,8 +19,11 @@ export const WEB_RUNTIME_CAPABILITIES = [
19
19
  PI_WEBUI_CAPABILITIES.selectedMachineSettings,
20
20
  PI_WEBUI_CAPABILITIES.agentProfileConfig,
21
21
  PI_WEBUI_CAPABILITIES.modelTierSettings,
22
+ PI_WEBUI_CAPABILITIES.utilityModelSettings,
22
23
  PI_WEBUI_CAPABILITIES.sessionsModelPolicy,
23
24
  PI_WEBUI_CAPABILITIES.sessionsModelPolicyDefaults,
25
+ PI_WEBUI_CAPABILITIES.sessionsModelPolicyStarterSelection,
26
+ PI_WEBUI_CAPABILITIES.sessionsReorder,
24
27
  ];
25
28
  export const SESSIOND_RUNTIME_CAPABILITIES = [
26
29
  PI_WEBUI_CAPABILITIES.sessionsDeleteArchived,
@@ -35,8 +38,11 @@ export const SESSIOND_RUNTIME_CAPABILITIES = [
35
38
  PI_WEBUI_CAPABILITIES.sessionsUnread,
36
39
  PI_WEBUI_CAPABILITIES.promptAttachments,
37
40
  PI_WEBUI_CAPABILITIES.modelTierSettings,
41
+ PI_WEBUI_CAPABILITIES.utilityModelSettings,
38
42
  PI_WEBUI_CAPABILITIES.sessionsModelPolicy,
39
43
  PI_WEBUI_CAPABILITIES.sessionsModelPolicyDefaults,
44
+ PI_WEBUI_CAPABILITIES.sessionsModelPolicyStarterSelection,
45
+ PI_WEBUI_CAPABILITIES.sessionsReorder,
40
46
  ];
41
47
  const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
42
48
  [PI_WEBUI_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
@@ -55,8 +61,11 @@ const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
55
61
  [PI_WEBUI_CAPABILITIES.selectedMachineSettings]: ["web"],
56
62
  [PI_WEBUI_CAPABILITIES.agentProfileConfig]: ["web"],
57
63
  [PI_WEBUI_CAPABILITIES.modelTierSettings]: ["web", "sessiond"],
64
+ [PI_WEBUI_CAPABILITIES.utilityModelSettings]: ["web", "sessiond"],
58
65
  [PI_WEBUI_CAPABILITIES.sessionsModelPolicy]: ["web", "sessiond"],
59
66
  [PI_WEBUI_CAPABILITIES.sessionsModelPolicyDefaults]: ["web", "sessiond"],
67
+ [PI_WEBUI_CAPABILITIES.sessionsModelPolicyStarterSelection]: ["web", "sessiond"],
68
+ [PI_WEBUI_CAPABILITIES.sessionsReorder]: ["web", "sessiond"],
60
69
  };
61
70
  export function isPiWebUiCapability(value) {
62
71
  return typeof value === "string" && knownPiWebUiCapabilities.has(value);
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ export const FEDERATED_HTTP_ROUTES = [
16
16
  { method: "PUT", path: "/session-defaults" },
17
17
  { method: "GET", path: "/model-tiers" },
18
18
  { method: "PUT", path: "/model-tiers" },
19
+ { method: "GET", path: "/utility-models" },
20
+ { method: "PUT", path: "/utility-models" },
19
21
  { method: "GET", path: "/agent-memory/snapshot" },
20
22
  { method: "GET", path: "/skills" },
21
23
  { method: "PATCH", path: "/skills" },
@@ -76,6 +78,7 @@ export const FEDERATED_HTTP_ROUTES = [
76
78
  { method: "GET", path: "/sessions/:sessionId/models" },
77
79
  { method: "GET", path: "/sessions/:sessionId/model-policy" },
78
80
  { method: "PUT", path: "/sessions/:sessionId/model-policy" },
81
+ { method: "POST", path: "/sessions/:sessionId/model-policy/remember" },
79
82
  { method: "POST", path: "/sessions/:sessionId/model" },
80
83
  { method: "POST", path: "/sessions/:sessionId/model/cycle" },
81
84
  { method: "GET", path: "/sessions/:sessionId/thinking-levels" },
@@ -99,6 +102,7 @@ export const FEDERATED_HTTP_ROUTES = [
99
102
  { method: "POST", path: "/sessions/:sessionId/restore" },
100
103
  { method: "DELETE", path: "/sessions/:sessionId" },
101
104
  { method: "POST", path: "/sessions/:sessionId/reload" },
105
+ { method: "POST", path: "/sessions/:sessionId/reorder" },
102
106
  { method: "POST", path: "/sessions/:sessionId/detach-parent" },
103
107
  { method: "GET", path: "/auth/providers" },
104
108
  { method: "POST", path: "/auth/api-key" },
@@ -1 +1 @@
1
- {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
Binary file