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.
Files changed (62) hide show
  1. package/README.md +52 -13
  2. package/package.json +3 -3
  3. package/src/api/client.ts +59 -22
  4. package/src/constants.ts +5 -0
  5. package/src/enums/mode.ts +1 -0
  6. package/src/index.ts +2 -1
  7. package/src/interfaces/endpoints/models.ts +6 -0
  8. package/src/interfaces/endpoints/props.ts +14 -0
  9. package/src/interfaces/settings.ts +6 -0
  10. package/src/managers/command/models.ts +12 -6
  11. package/src/managers/command.ts +6 -1
  12. package/src/managers/server.ts +30 -38
  13. package/src/managers/settings.ts +23 -3
  14. package/src/models/legacyModel.ts +3 -3
  15. package/src/models/llamaSwapModel.ts +90 -0
  16. package/src/models/routerModel.ts +2 -2
  17. package/src/models/singleModel.ts +2 -2
  18. package/src/server.ts +42 -15
  19. package/src/sse/manager.ts +2 -2
  20. package/src/ui/dialog/confirm.ts +1 -1
  21. package/src/ui/dialog/input.ts +1 -1
  22. package/src/ui/editors/editorOptions.ts +8 -1
  23. package/src/ui/editors/itemBuilder.ts +2 -6
  24. package/src/ui/editors/listEditor.ts +24 -15
  25. package/src/ui/editors/override/entryEditor.ts +105 -23
  26. package/src/ui/editors/override/fields/base.ts +53 -0
  27. package/src/ui/editors/override/fields/capabilities.ts +36 -0
  28. package/src/ui/editors/override/fields/cost.ts +64 -0
  29. package/src/ui/editors/override/fields/index.ts +68 -0
  30. package/src/ui/editors/override/fields/numeric.ts +55 -0
  31. package/src/ui/editors/override/fields/pattern.ts +24 -0
  32. package/src/ui/editors/override/fields/reasoning.ts +33 -0
  33. package/src/ui/editors/override/itemBuilder.ts +4 -4
  34. package/src/ui/editors/server/fields.ts +2 -2
  35. package/src/ui/editors/server/itemBuilder.ts +2 -3
  36. package/src/ui/editors/server/serverEditor.ts +58 -22
  37. package/src/ui/editors/server/utils.ts +50 -0
  38. package/src/ui/settings/index.ts +11 -0
  39. package/src/ui/strings.ts +17 -0
  40. package/src/utils/credentialResolver.ts +110 -0
  41. package/src/utils/health.ts +2 -2
  42. package/src/utils/urlResolver.ts +1 -1
  43. package/tests/{commandManager.test.ts → command/commandManager.test.ts} +80 -9
  44. package/tests/{events.test.ts → events/events.test.ts} +6 -6
  45. package/tests/mocks.ts +4 -0
  46. package/tests/{legacyModel.test.ts → models/legacyModel.test.ts} +5 -5
  47. package/tests/models/llamaSwapModel.test.ts +327 -0
  48. package/tests/{routerModel.test.ts → models/routerModel.test.ts} +5 -5
  49. package/tests/{singleModel.test.ts → models/singleModel.test.ts} +5 -5
  50. package/tests/{health.test.ts → server/health.test.ts} +4 -4
  51. package/tests/{server.test.ts → server/server.test.ts} +57 -7
  52. package/tests/{serverManager.test.ts → server/serverManager.test.ts} +4 -4
  53. package/tests/{settings.test.ts → settings/settings.test.ts} +198 -355
  54. package/tests/{settingsStore.test.ts → settings/settingsStore.test.ts} +1 -1
  55. package/tests/{sseManager.test.ts → sse/sseManager.test.ts} +2 -2
  56. package/tests/{dialog.test.ts → ui/dialog.test.ts} +5 -4
  57. package/tests/{overrides.test.ts → ui/overrides.test.ts} +9 -42
  58. package/tests/utils/credentialResolver.test.ts +66 -0
  59. package/tests/utils/urlResolver.test.ts +116 -0
  60. package/src/ui/editors/override/fields.ts +0 -294
  61. package/src/ui/editors/override/handlers.ts +0 -118
  62. 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
- }