pi-llama-cpp 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -13
- package/package.json +3 -3
- package/src/api/client.ts +59 -22
- package/src/constants.ts +5 -0
- package/src/enums/mode.ts +1 -0
- package/src/index.ts +2 -1
- package/src/interfaces/endpoints/models.ts +6 -0
- package/src/interfaces/endpoints/props.ts +14 -0
- package/src/interfaces/settings.ts +6 -0
- package/src/managers/command/models.ts +12 -6
- package/src/managers/command.ts +6 -1
- package/src/managers/server.ts +30 -38
- package/src/managers/settings.ts +23 -3
- package/src/models/legacyModel.ts +3 -3
- package/src/models/llamaSwapModel.ts +90 -0
- package/src/models/routerModel.ts +2 -2
- package/src/models/singleModel.ts +2 -2
- package/src/server.ts +42 -15
- package/src/sse/manager.ts +2 -2
- package/src/ui/dialog/confirm.ts +1 -1
- package/src/ui/dialog/input.ts +1 -1
- package/src/ui/editors/editorOptions.ts +8 -1
- package/src/ui/editors/itemBuilder.ts +2 -6
- package/src/ui/editors/listEditor.ts +24 -15
- package/src/ui/editors/override/entryEditor.ts +105 -23
- package/src/ui/editors/override/fields/base.ts +53 -0
- package/src/ui/editors/override/fields/capabilities.ts +36 -0
- package/src/ui/editors/override/fields/cost.ts +64 -0
- package/src/ui/editors/override/fields/index.ts +68 -0
- package/src/ui/editors/override/fields/numeric.ts +55 -0
- package/src/ui/editors/override/fields/pattern.ts +24 -0
- package/src/ui/editors/override/fields/reasoning.ts +33 -0
- package/src/ui/editors/override/itemBuilder.ts +4 -4
- package/src/ui/editors/server/fields.ts +2 -2
- package/src/ui/editors/server/itemBuilder.ts +2 -3
- package/src/ui/editors/server/serverEditor.ts +58 -22
- package/src/ui/editors/server/utils.ts +50 -0
- package/src/ui/settings/index.ts +11 -0
- package/src/ui/strings.ts +17 -0
- package/src/utils/credentialResolver.ts +110 -0
- package/src/utils/health.ts +2 -2
- package/src/utils/urlResolver.ts +1 -1
- package/tests/{commandManager.test.ts → command/commandManager.test.ts} +80 -9
- package/tests/{events.test.ts → events/events.test.ts} +6 -6
- package/tests/mocks.ts +4 -0
- package/tests/{legacyModel.test.ts → models/legacyModel.test.ts} +5 -5
- package/tests/models/llamaSwapModel.test.ts +327 -0
- package/tests/{routerModel.test.ts → models/routerModel.test.ts} +5 -5
- package/tests/{singleModel.test.ts → models/singleModel.test.ts} +5 -5
- package/tests/{health.test.ts → server/health.test.ts} +4 -4
- package/tests/{server.test.ts → server/server.test.ts} +57 -7
- package/tests/{serverManager.test.ts → server/serverManager.test.ts} +4 -4
- package/tests/{settings.test.ts → settings/settings.test.ts} +198 -355
- package/tests/{settingsStore.test.ts → settings/settingsStore.test.ts} +1 -1
- package/tests/{sseManager.test.ts → sse/sseManager.test.ts} +2 -2
- package/tests/{dialog.test.ts → ui/dialog.test.ts} +5 -4
- package/tests/{overrides.test.ts → ui/overrides.test.ts} +9 -42
- package/tests/utils/credentialResolver.test.ts +66 -0
- package/tests/utils/urlResolver.test.ts +116 -0
- package/src/ui/editors/override/fields.ts +0 -294
- package/src/ui/editors/override/handlers.ts +0 -118
- package/src/ui/editors/server/handlers.ts +0 -32
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import type { LlamaServer, ModelOverride } from "../../../interfaces/settings";
|
|
2
|
-
import { OverrideEntry } from "./entry";
|
|
3
|
-
import { OverrideFields } from "./fields";
|
|
4
|
-
|
|
5
|
-
/** Result of applying a field change: the next server list and the
|
|
6
|
-
* updated override for UI refresh. `null` when the entry doesn't exist
|
|
7
|
-
* (stale index — a no-op). */
|
|
8
|
-
export interface MutationResult {
|
|
9
|
-
next: LlamaServer[];
|
|
10
|
-
updatedOverride: ModelOverride;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Applies edits (field commits, entry adds/renames/removals) to the
|
|
15
|
-
* override entries of a single server, immutably. Binds the server list
|
|
16
|
-
* and server index once in the constructor so call sites don't juggle
|
|
17
|
-
* long positional lists.
|
|
18
|
-
*
|
|
19
|
-
* Per-field commit behavior lives in the {@link OverrideFields} registry
|
|
20
|
-
* (`apply` on each field instance) — this class only resolves the field
|
|
21
|
-
* and the entry, and handles the pattern rename specially.
|
|
22
|
-
*/
|
|
23
|
-
export class OverrideEntryMutator {
|
|
24
|
-
constructor(
|
|
25
|
-
private readonly servers: LlamaServer[],
|
|
26
|
-
private readonly serverIndex: number,
|
|
27
|
-
) {}
|
|
28
|
-
|
|
29
|
-
/** The server's override entries, in map iteration order. */
|
|
30
|
-
entries(): OverrideEntry[] {
|
|
31
|
-
return OverrideEntry.listFrom(this.servers[this.serverIndex]);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Handles a field commit from an override entry's submenu. Returns
|
|
35
|
-
* `null` when the entry doesn't exist (stale index — no-op). */
|
|
36
|
-
applyFieldChange(
|
|
37
|
-
entryIndex: number,
|
|
38
|
-
field: string,
|
|
39
|
-
value: string,
|
|
40
|
-
): MutationResult | null {
|
|
41
|
-
const entry = this.entries()[entryIndex];
|
|
42
|
-
if (!entry) return null;
|
|
43
|
-
|
|
44
|
-
// Pattern field: rename the pattern key, keep the override object
|
|
45
|
-
if (field === "pattern") {
|
|
46
|
-
return {
|
|
47
|
-
next: this.updateEntry(entryIndex, value, entry.override),
|
|
48
|
-
updatedOverride: entry.override,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Other fields: let the field definition apply itself
|
|
53
|
-
const updatedOverride: ModelOverride = { ...entry.override };
|
|
54
|
-
OverrideFields.byId(field).apply(updatedOverride, value);
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
next: this.updateEntry(entryIndex, entry.pattern, updatedOverride),
|
|
58
|
-
updatedOverride,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** Adds a new override entry with a uniquified pattern. */
|
|
63
|
-
addEntry(pattern: string, override: ModelOverride = {}): LlamaServer[] {
|
|
64
|
-
const server = this.servers[this.serverIndex];
|
|
65
|
-
if (!server) return this.servers;
|
|
66
|
-
|
|
67
|
-
const existing = new Set(Object.keys(server.overrides ?? {}));
|
|
68
|
-
let uniquePattern = pattern;
|
|
69
|
-
let n = 2;
|
|
70
|
-
while (existing.has(uniquePattern)) {
|
|
71
|
-
uniquePattern = `${pattern}-${n++}`;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return this.withServer((s) => ({
|
|
75
|
-
...s,
|
|
76
|
-
overrides: { ...s.overrides, [uniquePattern]: override },
|
|
77
|
-
}));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/** Removes the entry at `entryIndex`. */
|
|
81
|
-
removeEntry(entryIndex: number): LlamaServer[] {
|
|
82
|
-
return this.withServer((s) => ({
|
|
83
|
-
...s,
|
|
84
|
-
overrides: Object.fromEntries(
|
|
85
|
-
Object.entries(s.overrides ?? {}).filter((_, j) => j !== entryIndex),
|
|
86
|
-
),
|
|
87
|
-
}));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// -- internal helpers ------------------------------------------------------
|
|
91
|
-
|
|
92
|
-
/** Returns the servers with the target server replaced by
|
|
93
|
-
* `fn(server)`. Immutable. */
|
|
94
|
-
private withServer(fn: (server: LlamaServer) => LlamaServer): LlamaServer[] {
|
|
95
|
-
return this.servers.map((server, i) =>
|
|
96
|
-
i === this.serverIndex ? fn(server) : server,
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/** Replaces the entry at `entryIndex` with `pattern → override` in a
|
|
101
|
-
* single mutation — used both for renaming the pattern and for editing
|
|
102
|
-
* its fields. The entry keeps its position in the map's iteration
|
|
103
|
-
* order. Immutable. */
|
|
104
|
-
private updateEntry(
|
|
105
|
-
entryIndex: number,
|
|
106
|
-
pattern: string,
|
|
107
|
-
override: ModelOverride,
|
|
108
|
-
): LlamaServer[] {
|
|
109
|
-
return this.withServer((s) => ({
|
|
110
|
-
...s,
|
|
111
|
-
overrides: Object.fromEntries(
|
|
112
|
-
Object.entries(s.overrides ?? {}).map(([k, v], j) =>
|
|
113
|
-
j === entryIndex ? [pattern, override] : [k, v],
|
|
114
|
-
),
|
|
115
|
-
),
|
|
116
|
-
}));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { LlamaServer } from "../../../interfaces/settings";
|
|
2
|
-
import { ServerFields } from "./fields";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Applies field commits to a single server, immutably. Binds the server
|
|
6
|
-
* list and server index once in the constructor so call sites don't
|
|
7
|
-
* juggle long positional lists. Mirrors the override side's
|
|
8
|
-
* `OverrideEntryMutator`.
|
|
9
|
-
*
|
|
10
|
-
* Per-field commit behavior lives in the `ServerFields` registry
|
|
11
|
-
* (`apply` on each field class, backed by `LlamaServerBuilder`) — this
|
|
12
|
-
* class only resolves the field definition and produces the next list.
|
|
13
|
-
*/
|
|
14
|
-
export class ServerEntryMutator {
|
|
15
|
-
constructor(
|
|
16
|
-
private readonly servers: LlamaServer[],
|
|
17
|
-
private readonly serverIndex: number,
|
|
18
|
-
) {}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Handles a field commit from a server row's submenu. Returns the
|
|
22
|
-
* next server list, or the same list when the server is missing
|
|
23
|
-
* (no-op — callers can compare by reference).
|
|
24
|
-
*/
|
|
25
|
-
applyFieldChange(field: string, value: string): LlamaServer[] {
|
|
26
|
-
const server = this.servers[this.serverIndex];
|
|
27
|
-
if (!server) return this.servers;
|
|
28
|
-
|
|
29
|
-
const updated = ServerFields.byId(field).apply(server, value);
|
|
30
|
-
return this.servers.map((s, i) => (i === this.serverIndex ? updated : s));
|
|
31
|
-
}
|
|
32
|
-
}
|