@ashx-j/lunr 0.2.8 → 0.2.9
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/builtin-extensions/ashxj-spinners.d.ts +7 -0
- package/dist/builtin-extensions/ashxj-spinners.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-spinners.js +40 -3
- package/dist/builtin-extensions/ashxj-spinners.js.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts +4 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +44 -0
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/lunr-behavior.d.ts +2 -1
- package/dist/builtin-extensions/lunr-behavior.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-behavior.js +26 -14
- package/dist/builtin-extensions/lunr-behavior.js.map +1 -1
- package/dist/builtin-extensions/lunr-todos.d.ts +4 -7
- package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-todos.js +18 -10
- package/dist/builtin-extensions/lunr-todos.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +3 -4
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +6 -18
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +13 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/lunr-child-context.d.ts +21 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/lunr-child-context.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/lunr-child-context.js +22 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/lunr-child-context.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +2 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +10 -18
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/render-search-error.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/render-search-error.js +1 -1
- package/dist/builtin-extensions/pi-web-access/render-search-error.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/cli/update-cli.d.ts +16 -0
- package/dist/cli/update-cli.d.ts.map +1 -0
- package/dist/cli/update-cli.js +83 -0
- package/dist/cli/update-cli.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/behavior-preset.d.ts +60 -0
- package/dist/core/behavior-preset.d.ts.map +1 -0
- package/dist/core/behavior-preset.js +257 -0
- package/dist/core/behavior-preset.js.map +1 -0
- package/dist/core/customize.d.ts +3 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +9 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +12 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +70 -5
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-tiers.d.ts +9 -0
- package/dist/core/model-tiers.d.ts.map +1 -1
- package/dist/core/model-tiers.js +16 -0
- package/dist/core/model-tiers.js.map +1 -1
- package/dist/core/settings-manager.d.ts +23 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +66 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +1 -3
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/update-check.d.ts +32 -0
- package/dist/core/update-check.d.ts.map +1 -0
- package/dist/core/update-check.js +112 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/core/usage-service.d.ts +24 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +91 -14
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +5 -1
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +5 -1
- package/dist/gateway/cron.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +13 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +4 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +68 -10
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +13 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +157 -10
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +9 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +82 -3
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/keybindings.md +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Container, getCapabilities, getKeybindings, Input, SelectList, SettingsList, Spacer, Text, } from "@ashx-j/lunr-tui";
|
|
2
|
+
import { detectBehaviorPreset, readBehaviorFile } from "../../../core/behavior-preset.js";
|
|
2
3
|
import { getCustomizeBridge } from "../../../core/customize.js";
|
|
3
4
|
import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.js";
|
|
4
5
|
import { MEMORY_CHAR_CAP_DEFAULT, MEMORY_CHAR_CAP_MAX, MEMORY_CHAR_CAP_MIN } from "../../../core/memory-cap.js";
|
|
@@ -55,7 +56,11 @@ class ModelTiersSubmenu extends Container {
|
|
|
55
56
|
light: modelTiers.light,
|
|
56
57
|
standard: modelTiers.standard,
|
|
57
58
|
heavy: modelTiers.heavy,
|
|
59
|
+
lightThinking: modelTiers.lightThinking,
|
|
60
|
+
standardThinking: modelTiers.standardThinking,
|
|
61
|
+
heavyThinking: modelTiers.heavyThinking,
|
|
58
62
|
};
|
|
63
|
+
const thinkingKey = (tier) => tier === "light" ? "lightThinking" : tier === "standard" ? "standardThinking" : "heavyThinking";
|
|
59
64
|
const items = [
|
|
60
65
|
{
|
|
61
66
|
id: "enabled",
|
|
@@ -64,16 +69,37 @@ class ModelTiersSubmenu extends Container {
|
|
|
64
69
|
currentValue: this.state.enabled ? "on" : "off",
|
|
65
70
|
values: ["on", "off"],
|
|
66
71
|
},
|
|
67
|
-
...MODEL_TIER_ROWS.
|
|
72
|
+
...MODEL_TIER_ROWS.flatMap((row) => {
|
|
68
73
|
const tier = row.tier;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
const tKey = thinkingKey(tier);
|
|
75
|
+
return [
|
|
76
|
+
{
|
|
77
|
+
id: tier,
|
|
78
|
+
label: row.label,
|
|
79
|
+
description: row.description,
|
|
80
|
+
currentValue: this.state[tier] ?? "not set",
|
|
81
|
+
disabled: () => !this.state.enabled,
|
|
82
|
+
submenu: (_currentValue, done) => callbacks.createModelTierPicker(tier, this.state[tier], done),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: `${tier}-thinking`,
|
|
86
|
+
label: `${row.label.replace(" model", "")} thinking`,
|
|
87
|
+
description: "Reasoning depth for this tier. Inherit uses the parent session level.",
|
|
88
|
+
currentValue: this.state[tKey] ?? "inherit",
|
|
89
|
+
disabled: () => !this.state.enabled,
|
|
90
|
+
submenu: (_currentValue, done) => new SelectSubmenu(`${row.label} thinking`, "Unset inherits the parent session thinking level.", [
|
|
91
|
+
{ value: "inherit", label: "inherit", description: "Use the parent session thinking level" },
|
|
92
|
+
...callbacks.getTierThinkingLevels(tier).map((level) => ({
|
|
93
|
+
value: level,
|
|
94
|
+
label: level,
|
|
95
|
+
description: THINKING_DESCRIPTIONS[level],
|
|
96
|
+
})),
|
|
97
|
+
], this.state[tKey] ?? "inherit", (value) => {
|
|
98
|
+
callbacks.onModelTierThinkingChange(tier, value === "inherit" ? undefined : value);
|
|
99
|
+
done(value);
|
|
100
|
+
}, () => done()),
|
|
101
|
+
},
|
|
102
|
+
];
|
|
77
103
|
}),
|
|
78
104
|
];
|
|
79
105
|
this.settingsList = new SettingsList(items, Math.min(items.length, 10), getSettingsListTheme(), (id, newValue) => {
|
|
@@ -82,6 +108,12 @@ class ModelTiersSubmenu extends Container {
|
|
|
82
108
|
callbacks.onModelTiersEnabledChange(this.state.enabled);
|
|
83
109
|
return;
|
|
84
110
|
}
|
|
111
|
+
if (id.endsWith("-thinking")) {
|
|
112
|
+
const tier = id.slice(0, -"-thinking".length);
|
|
113
|
+
const tKey = thinkingKey(tier);
|
|
114
|
+
this.state[tKey] = newValue === "inherit" ? undefined : newValue;
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
85
117
|
const tier = id;
|
|
86
118
|
this.state[tier] = newValue;
|
|
87
119
|
callbacks.onModelTierModelChange(tier, newValue);
|
|
@@ -126,6 +158,71 @@ class MemoryCharCapSubmenu extends Container {
|
|
|
126
158
|
}
|
|
127
159
|
}
|
|
128
160
|
const SEARCH_CURATOR_VALUES = ["off", "on", "auto-summary"];
|
|
161
|
+
const BEHAVIOR_PRESET_ITEMS = [
|
|
162
|
+
{
|
|
163
|
+
value: "default",
|
|
164
|
+
label: "default",
|
|
165
|
+
description: "Empty built-in. Selecting this writes a blank behavior.md.",
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
value: "humanizer",
|
|
169
|
+
label: "humanizer",
|
|
170
|
+
description: "Write like a person. Strip AI tells. Skips the character cap.",
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
value: "concise",
|
|
174
|
+
label: "concise",
|
|
175
|
+
description: "Fragments, tables, numbered next steps last. Skips the character cap.",
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
value: "custom",
|
|
179
|
+
label: "custom",
|
|
180
|
+
description: "Keep the current behavior.md. Edit the file or use the behavior tools.",
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
/**
|
|
184
|
+
* Built-in vs custom behavior.md picker.
|
|
185
|
+
* Selecting a built-in while the file no longer matches a template asks before overwrite.
|
|
186
|
+
* Custom never writes. No in-app editor; the file is the source of truth.
|
|
187
|
+
*/
|
|
188
|
+
class BehaviorPresetSubmenu extends Container {
|
|
189
|
+
inner;
|
|
190
|
+
constructor(currentValue, done) {
|
|
191
|
+
super();
|
|
192
|
+
this.inner = this.buildList(currentValue, done);
|
|
193
|
+
this.addChild(this.inner);
|
|
194
|
+
}
|
|
195
|
+
buildList(currentValue, done) {
|
|
196
|
+
return new SelectSubmenu("Behavior preset", "Built-in options replace ~/.lunr/agent/behavior.md. Custom keeps the file. Cap skipped for built-ins.", BEHAVIOR_PRESET_ITEMS, currentValue, (value) => {
|
|
197
|
+
if (value === currentValue) {
|
|
198
|
+
done();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (value !== "custom" && detectBehaviorPreset(readBehaviorFile()) === "custom") {
|
|
202
|
+
this.showOverwriteConfirm(value, done);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
done(value);
|
|
206
|
+
}, () => done());
|
|
207
|
+
}
|
|
208
|
+
showOverwriteConfirm(preset, done) {
|
|
209
|
+
this.clear();
|
|
210
|
+
this.inner = new SelectSubmenu("Overwrite behavior.md", `Replace the custom behavior file with the ${preset} preset? This cannot be undone from settings.`, [
|
|
211
|
+
{ value: "cancel", label: "Cancel" },
|
|
212
|
+
{ value: "overwrite", label: `Overwrite with ${preset}` },
|
|
213
|
+
], "cancel", (value) => {
|
|
214
|
+
if (value === "overwrite") {
|
|
215
|
+
done(preset);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
done();
|
|
219
|
+
}, () => done());
|
|
220
|
+
this.addChild(this.inner);
|
|
221
|
+
}
|
|
222
|
+
handleInput(data) {
|
|
223
|
+
this.inner.handleInput?.(data);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
129
226
|
// lunr: Customize submenu — toggles for the lunR TUI customize settings.
|
|
130
227
|
class CustomizeSubmenu extends Container {
|
|
131
228
|
settingsList;
|
|
@@ -184,6 +281,27 @@ class CustomizeSubmenu extends Container {
|
|
|
184
281
|
currentValue: (bridge?.getFooterStatuses() ?? true) ? "on" : "off",
|
|
185
282
|
values: ["on", "off"],
|
|
186
283
|
},
|
|
284
|
+
{
|
|
285
|
+
id: "footer-git",
|
|
286
|
+
label: "Footer: git branch",
|
|
287
|
+
description: "Show the current git branch and added/removed line counts in the footer stats line.",
|
|
288
|
+
currentValue: (bridge?.getFooterGit() ?? true) ? "on" : "off",
|
|
289
|
+
values: ["on", "off"],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
id: "footer-plan",
|
|
293
|
+
label: "Footer: plan usage",
|
|
294
|
+
description: "Show the live subscription usage percent when the current model is on a plan.",
|
|
295
|
+
currentValue: (bridge?.getFooterPlan() ?? true) ? "on" : "off",
|
|
296
|
+
values: ["on", "off"],
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
id: "footer-plan-bar",
|
|
300
|
+
label: "Footer: plan bar",
|
|
301
|
+
description: "Show the filled █░ bar next to the plan percent. Off keeps the percent only.",
|
|
302
|
+
currentValue: (bridge?.getFooterPlanBar() ?? true) ? "on" : "off",
|
|
303
|
+
values: ["on", "off"],
|
|
304
|
+
},
|
|
187
305
|
];
|
|
188
306
|
this.settingsList = new SettingsList(items, Math.min(items.length, 10), getSettingsListTheme(), (id, newValue) => {
|
|
189
307
|
switch (id) {
|
|
@@ -208,6 +326,15 @@ class CustomizeSubmenu extends Container {
|
|
|
208
326
|
case "footer-statuses":
|
|
209
327
|
callbacks.onFooterStatusesChange(newValue === "on");
|
|
210
328
|
break;
|
|
329
|
+
case "footer-git":
|
|
330
|
+
callbacks.onFooterGitChange(newValue === "on");
|
|
331
|
+
break;
|
|
332
|
+
case "footer-plan":
|
|
333
|
+
callbacks.onFooterPlanChange(newValue === "on");
|
|
334
|
+
break;
|
|
335
|
+
case "footer-plan-bar":
|
|
336
|
+
callbacks.onFooterPlanBarChange(newValue === "on");
|
|
337
|
+
break;
|
|
211
338
|
}
|
|
212
339
|
}, () => done());
|
|
213
340
|
this.addChild(this.settingsList);
|
|
@@ -827,10 +954,17 @@ export class SettingsSelectorComponent extends Container {
|
|
|
827
954
|
{
|
|
828
955
|
id: "memory-char-cap",
|
|
829
956
|
label: "Memory character cap",
|
|
830
|
-
description: `Max characters in the simple-pi-memory memory file AND
|
|
957
|
+
description: `Max characters in the simple-pi-memory memory file AND a custom behavior file (${MEMORY_CHAR_CAP_MIN}-${MEMORY_CHAR_CAP_MAX}, default ${MEMORY_CHAR_CAP_DEFAULT}). Built-in behavior presets skip the cap. Also settable via /memory-char-cap.`,
|
|
831
958
|
currentValue: String(config.memoryCharCap),
|
|
832
959
|
submenu: (currentValue, submenuDone) => new MemoryCharCapSubmenu(currentValue, submenuDone),
|
|
833
960
|
},
|
|
961
|
+
{
|
|
962
|
+
id: "behavior-preset",
|
|
963
|
+
label: "Behavior preset",
|
|
964
|
+
description: "Built-in options replace ~/.lunr/agent/behavior.md (default / humanizer / concise). Custom keeps the file. Built-ins skip the character cap.",
|
|
965
|
+
currentValue: config.behaviorPreset,
|
|
966
|
+
submenu: (currentValue, submenuDone) => new BehaviorPresetSubmenu(currentValue, submenuDone),
|
|
967
|
+
},
|
|
834
968
|
{
|
|
835
969
|
id: "search-curator",
|
|
836
970
|
label: "Search curator",
|
|
@@ -903,6 +1037,13 @@ export class SettingsSelectorComponent extends Container {
|
|
|
903
1037
|
currentValue: config.modelTiers.enabled ? "on" : "off",
|
|
904
1038
|
submenu: (currentValue, done) => new ModelTiersSubmenu(currentValue, config.modelTiers, callbacks, done),
|
|
905
1039
|
},
|
|
1040
|
+
{
|
|
1041
|
+
id: "plan-usage-window",
|
|
1042
|
+
label: "Plan usage window",
|
|
1043
|
+
description: "Preferred subscription window for the footer bar. Missing 5h falls back to weekly.",
|
|
1044
|
+
currentValue: config.planUsageWindow,
|
|
1045
|
+
values: ["5h", "weekly"],
|
|
1046
|
+
},
|
|
906
1047
|
// lunr: Customize submenu — lunR TUI toggles (rail, prompt symbol, footer segments)
|
|
907
1048
|
{
|
|
908
1049
|
id: "customize",
|
|
@@ -1095,9 +1236,15 @@ export class SettingsSelectorComponent extends Container {
|
|
|
1095
1236
|
case "smooth-streaming":
|
|
1096
1237
|
callbacks.onSmoothStreamingChange(newValue === "true");
|
|
1097
1238
|
break;
|
|
1239
|
+
case "plan-usage-window":
|
|
1240
|
+
callbacks.onPlanUsageWindowChange(newValue === "5h" ? "5h" : "weekly");
|
|
1241
|
+
break;
|
|
1098
1242
|
case "memory-char-cap":
|
|
1099
1243
|
callbacks.onMemoryCharCapChange(parseInt(newValue, 10));
|
|
1100
1244
|
break;
|
|
1245
|
+
case "behavior-preset":
|
|
1246
|
+
callbacks.onBehaviorPresetChange(newValue);
|
|
1247
|
+
break;
|
|
1101
1248
|
case "search-curator":
|
|
1102
1249
|
callbacks.onSearchCuratorChange(newValue);
|
|
1103
1250
|
break;
|