@pi-unipi/unipi 2.6.0 → 2.6.2
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/CHANGELOG.md +19 -0
- package/package.json +21 -22
- package/packages/ask-user/package.json +2 -2
- package/packages/ask-user/settings-tui.ts +18 -34
- package/packages/autocomplete/package.json +1 -1
- package/packages/autocomplete/src/constants.ts +2 -15
- package/packages/autocomplete/src/provider.ts +3 -17
- package/packages/btw/extensions/btw.ts +18 -45
- package/packages/btw/package.json +2 -2
- package/packages/compactor/README.md +2 -2
- package/packages/compactor/package.json +3 -3
- package/packages/compactor/skills/compactor/SKILL.md +1 -1
- package/packages/compactor/skills/compactor-detail/SKILL.md +3 -5
- package/packages/compactor/skills/compactor-doctor/SKILL.md +1 -1
- package/packages/compactor/skills/compactor-stats/SKILL.md +1 -1
- package/packages/compactor/src/commands/index.ts +47 -78
- package/packages/compactor/src/compaction/brief.ts +161 -90
- package/packages/compactor/src/compaction/build-sections.ts +3 -4
- package/packages/compactor/src/compaction/compact-args.ts +86 -0
- package/packages/compactor/src/compaction/cut.ts +270 -28
- package/packages/compactor/src/compaction/drill-down.ts +261 -0
- package/packages/compactor/src/compaction/format-recall.ts +96 -0
- package/packages/compactor/src/compaction/format.ts +8 -3
- package/packages/compactor/src/compaction/hooks.ts +248 -72
- package/packages/compactor/src/compaction/merge.ts +34 -4
- package/packages/compactor/src/compaction/rank.ts +270 -0
- package/packages/compactor/src/compaction/recall-scope.ts +28 -0
- package/packages/compactor/src/compaction/search-entries.ts +333 -96
- package/packages/compactor/src/compaction/skill-collapse.ts +35 -0
- package/packages/compactor/src/compaction/summarize.ts +37 -6
- package/packages/compactor/src/compaction/token-estimate.ts +104 -0
- package/packages/compactor/src/compaction/touched-files.ts +35 -0
- package/packages/compactor/src/config/manager.ts +2 -27
- package/packages/compactor/src/config/presets.ts +0 -2
- package/packages/compactor/src/config/schema.ts +2 -16
- package/packages/compactor/src/executor/executor.ts +6 -15
- package/packages/compactor/src/executor/runtime.ts +2 -12
- package/packages/compactor/src/index.ts +4 -121
- package/packages/compactor/src/info-screen.ts +3 -10
- package/packages/compactor/src/security/evaluator.ts +0 -53
- package/packages/compactor/src/security/policy.ts +7 -8
- package/packages/compactor/src/session/db.ts +0 -6
- package/packages/compactor/src/tools/ctx-execute-file.ts +0 -5
- package/packages/compactor/src/tools/register.ts +27 -50
- package/packages/compactor/src/tools/vcc-recall.ts +86 -48
- package/packages/compactor/src/tui/settings-overlay.ts +20 -40
- package/packages/compactor/src/types.ts +43 -100
- package/packages/core/constants.ts +1 -28
- package/packages/core/events.ts +1 -83
- package/packages/core/index.ts +1 -0
- package/packages/core/model-cache.ts +18 -12
- package/packages/core/package.json +3 -1
- package/packages/core/tui-overlay.ts +89 -0
- package/packages/core/tui-width.ts +18 -0
- package/packages/core/utils.ts +43 -0
- package/packages/footer/package.json +2 -2
- package/packages/footer/src/help.ts +2 -2
- package/packages/footer/src/index.ts +9 -10
- package/packages/footer/src/presets.ts +1 -27
- package/packages/footer/src/registry/index.ts +0 -23
- package/packages/footer/src/rendering/icons.ts +0 -13
- package/packages/footer/src/rendering/renderer.ts +5 -40
- package/packages/footer/src/rendering/separators.ts +0 -10
- package/packages/footer/src/rendering/theme.ts +1 -15
- package/packages/footer/src/segments/compactor.ts +7 -14
- package/packages/footer/src/segments/core.ts +15 -54
- package/packages/footer/src/segments/kanboard.ts +5 -5
- package/packages/footer/src/segments/mcp.ts +5 -5
- package/packages/footer/src/segments/memory.ts +4 -4
- package/packages/footer/src/segments/notify.ts +2 -2
- package/packages/footer/src/segments/ralph.ts +3 -3
- package/packages/footer/src/segments/status-ext.ts +1 -1
- package/packages/footer/src/segments/workflow.ts +3 -3
- package/packages/footer/src/tps-tracker.ts +0 -8
- package/packages/footer/src/tui/settings-tui.ts +14 -31
- package/packages/footer/src/types.ts +0 -15
- package/packages/image/package.json +2 -2
- package/packages/image/src/register-providers.ts +0 -11
- package/packages/image/src/tools.ts +0 -3
- package/packages/image/src/tui/model-selector.ts +36 -71
- package/packages/info-screen/config.ts +0 -16
- package/packages/info-screen/core-groups.ts +0 -10
- package/packages/info-screen/index.ts +22 -13
- package/packages/info-screen/package.json +2 -2
- package/packages/info-screen/registry.ts +1 -72
- package/packages/info-screen/tui/info-overlay.ts +85 -100
- package/packages/info-screen/usage-parser.ts +12 -47
- package/packages/input-shortcuts/package.json +2 -2
- package/packages/input-shortcuts/src/index.ts +3 -3
- package/packages/input-shortcuts/src/registers.ts +0 -8
- package/packages/input-shortcuts/src/settings-overlay.ts +4 -13
- package/packages/input-shortcuts/src/undo-redo.ts +0 -12
- package/packages/kanboard/package.json +2 -2
- package/packages/mcp/package.json +2 -2
- package/packages/mcp/src/bridge/client.ts +0 -15
- package/packages/mcp/src/config/manager.ts +0 -38
- package/packages/mcp/src/config/schema.ts +0 -27
- package/packages/mcp/src/config/sync.ts +0 -29
- package/packages/mcp/src/index.ts +1 -1
- package/packages/mcp/src/tui/add-overlay.ts +6 -6
- package/packages/mcp/src/types.ts +0 -6
- package/packages/memory/embedding.ts +0 -31
- package/packages/memory/mempalace.ts +0 -16
- package/packages/memory/package.json +4 -8
- package/packages/memory/storage.ts +56 -753
- package/packages/milestone/hooks.ts +1 -6
- package/packages/milestone/milestone.ts +2 -41
- package/packages/milestone/package.json +2 -2
- package/packages/notify/README.md +1 -0
- package/packages/notify/commands.ts +61 -3
- package/packages/notify/events.ts +0 -10
- package/packages/notify/package.json +2 -2
- package/packages/notify/settings.ts +0 -19
- package/packages/notify/tui/gotify-setup.ts +108 -143
- package/packages/notify/tui/ntfy-setup.ts +137 -172
- package/packages/notify/tui/recap-model-selector.ts +107 -101
- package/packages/notify/tui/settings-overlay.ts +94 -117
- package/packages/notify/tui/telegram-setup.ts +48 -79
- package/packages/notify/types.ts +0 -2
- package/packages/ralph/index.ts +11 -35
- package/packages/ralph/package.json +3 -3
- package/packages/ralph/ralph-loop.ts +3 -44
- package/packages/subagents/package.json +2 -1
- package/packages/subagents/src/agent-manager.ts +0 -51
- package/packages/subagents/src/agent-runner.ts +6 -80
- package/packages/subagents/src/conversation-viewer.ts +1 -19
- package/packages/subagents/src/core-compat.ts +8 -25
- package/packages/subagents/src/custom-agents.ts +0 -1
- package/packages/subagents/src/index.ts +3 -48
- package/packages/subagents/src/types.ts +0 -11
- package/packages/subagents/src/widget.ts +5 -5
- package/packages/unipi/bundled.js +4468 -7769
- package/packages/unipi/index.ts +6 -3
- package/packages/updater/package.json +2 -2
- package/packages/updater/src/changelog.ts +1 -16
- package/packages/updater/src/index.ts +0 -5
- package/packages/updater/src/installer.ts +4 -26
- package/packages/updater/src/markdown.ts +6 -152
- package/packages/updater/src/settings.ts +0 -15
- package/packages/updater/src/tui/changelog-overlay.ts +42 -234
- package/packages/updater/src/tui/list-detail-overlay.ts +260 -0
- package/packages/updater/src/tui/readme-overlay.ts +53 -210
- package/packages/updater/src/tui/settings-overlay.ts +13 -26
- package/packages/updater/src/version.ts +2 -31
- package/packages/utility/package.json +2 -4
- package/packages/utility/src/commands.ts +4 -5
- package/packages/utility/src/herdr-sync.ts +136 -0
- package/packages/utility/src/index.ts +11 -68
- package/packages/utility/src/lifecycle/cleanup.ts +2 -16
- package/packages/utility/src/{diff/settings.ts → settings.ts} +42 -80
- package/packages/utility/src/tools/env.ts +0 -0
- package/packages/utility/src/tui/name-badge-state.ts +18 -2
- package/packages/utility/src/tui/name-badge.ts +5 -4
- package/packages/utility/src/tui/util-settings-tui.ts +41 -224
- package/packages/web-api/package.json +2 -6
- package/packages/web-api/src/engine/dependencies.ts +13 -134
- package/packages/web-api/src/engine/extract.ts +9 -99
- package/packages/web-api/src/engine/format.ts +0 -75
- package/packages/web-api/src/engine/types.ts +0 -39
- package/packages/web-api/src/index.ts +1 -2
- package/packages/web-api/src/providers/base.ts +0 -10
- package/packages/web-api/src/providers/duckduckgo.ts +0 -1
- package/packages/web-api/src/providers/firecrawl.ts +0 -9
- package/packages/web-api/src/providers/jina-reader.ts +0 -9
- package/packages/web-api/src/providers/jina-search.ts +0 -9
- package/packages/web-api/src/providers/perplexity.ts +0 -9
- package/packages/web-api/src/providers/registry.ts +0 -80
- package/packages/web-api/src/providers/serpapi.ts +0 -9
- package/packages/web-api/src/providers/tavily.ts +0 -9
- package/packages/web-api/src/providers/wigolo-client.ts +0 -30
- package/packages/web-api/src/providers/wigolo.ts +0 -1
- package/packages/web-api/src/settings.ts +17 -77
- package/packages/web-api/src/tools.ts +21 -24
- package/packages/web-api/src/tui/settings-dialog.ts +0 -1
- package/packages/workflow/commands.ts +38 -122
- package/packages/workflow/index.ts +1 -5
- package/packages/workflow/package.json +2 -2
- package/packages/cocoindex/README.md +0 -94
- package/packages/cocoindex/bridge.ts +0 -842
- package/packages/cocoindex/commands.ts +0 -175
- package/packages/cocoindex/index.ts +0 -48
- package/packages/cocoindex/installer.ts +0 -397
- package/packages/cocoindex/package.json +0 -49
- package/packages/cocoindex/skills/cocoindex/SKILL.md +0 -88
- package/packages/cocoindex/tools.ts +0 -157
- package/packages/compactor/src/display/diff-renderer.ts +0 -281
- package/packages/compactor/src/display/line-width-safety.ts +0 -28
- package/packages/compactor/src/display/render-utils.ts +0 -52
- package/packages/compactor/src/display/thinking-label.ts +0 -18
- package/packages/compactor/src/display/tool-overrides.ts +0 -136
- package/packages/compactor/src/tools/compact.ts +0 -20
- package/packages/subagents/src/file-lock.ts +0 -102
- package/packages/utility/src/cache/ttl-cache.ts +0 -311
- package/packages/utility/src/diff/highlighter.ts +0 -352
- package/packages/utility/src/diff/parser.ts +0 -191
- package/packages/utility/src/diff/renderer.ts +0 -395
- package/packages/utility/src/diff/theme.ts +0 -316
- package/packages/utility/src/diff/wrapper.ts +0 -339
- package/packages/utility/src/display/capabilities.ts +0 -214
- package/packages/utility/src/display/width.ts +0 -226
- package/packages/utility/src/tools/batch.ts +0 -229
- package/packages/utility/src/tui/badge-settings-tui.ts +0 -388
- package/packages/utility/src/tui/badge-settings.ts +0 -67
- package/packages/utility/src/tui/settings-inspector.ts +0 -303
- package/packages/web-api/src/providers/llm-summarize.ts +0 -71
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/utility — Settings Inspector
|
|
3
|
-
*
|
|
4
|
-
* Reusable settings inspector overlay pattern.
|
|
5
|
-
* Split-pane layout: list left, editor right.
|
|
6
|
-
* Search/filter, keyboard navigation, JSON editing.
|
|
7
|
-
*
|
|
8
|
-
* Note: This is a data model and rendering helper. The actual TUI
|
|
9
|
-
* rendering depends on the host environment (pi's TUI API).
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import type {
|
|
13
|
-
SettingSchema,
|
|
14
|
-
SettingsInspectorState,
|
|
15
|
-
} from "../types.js";
|
|
16
|
-
|
|
17
|
-
/** Navigation actions */
|
|
18
|
-
export type InspectorAction =
|
|
19
|
-
| { type: "navigate"; direction: "up" | "down" | "first" | "last" }
|
|
20
|
-
| { type: "search"; query: string }
|
|
21
|
-
| { type: "select"; index: number }
|
|
22
|
-
| { type: "edit"; value: unknown }
|
|
23
|
-
| { type: "toggle_edit" }
|
|
24
|
-
| { type: "save" }
|
|
25
|
-
| { type: "cancel" };
|
|
26
|
-
|
|
27
|
-
/** Result of applying an action */
|
|
28
|
-
export interface InspectorUpdate {
|
|
29
|
-
state: SettingsInspectorState;
|
|
30
|
-
changed: boolean;
|
|
31
|
-
saved: boolean;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Create initial inspector state */
|
|
35
|
-
export function createSettingsInspector(
|
|
36
|
-
schemas: SettingSchema[],
|
|
37
|
-
initialValues?: Record<string, unknown>,
|
|
38
|
-
): SettingsInspectorState {
|
|
39
|
-
const values: Record<string, unknown> = {};
|
|
40
|
-
for (const schema of schemas) {
|
|
41
|
-
values[schema.key] = initialValues?.[schema.key] ?? schema.default;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
schemas,
|
|
46
|
-
values,
|
|
47
|
-
selectedIndex: 0,
|
|
48
|
-
searchQuery: "",
|
|
49
|
-
editMode: false,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** Get filtered schemas based on search query */
|
|
54
|
-
export function getFilteredSchemas(
|
|
55
|
-
state: SettingsInspectorState,
|
|
56
|
-
): SettingSchema[] {
|
|
57
|
-
if (!state.searchQuery.trim()) {
|
|
58
|
-
return state.schemas;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const query = state.searchQuery.toLowerCase();
|
|
62
|
-
return state.schemas.filter(
|
|
63
|
-
(s) =>
|
|
64
|
-
s.key.toLowerCase().includes(query) ||
|
|
65
|
-
s.description.toLowerCase().includes(query),
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** Get the currently selected schema */
|
|
70
|
-
export function getSelectedSchema(
|
|
71
|
-
state: SettingsInspectorState,
|
|
72
|
-
): SettingSchema | undefined {
|
|
73
|
-
const filtered = getFilteredSchemas(state);
|
|
74
|
-
return filtered[state.selectedIndex];
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Get current value for a key */
|
|
78
|
-
export function getValue(
|
|
79
|
-
state: SettingsInspectorState,
|
|
80
|
-
key: string,
|
|
81
|
-
): unknown {
|
|
82
|
-
return state.values[key];
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/** Apply an action to the inspector state */
|
|
86
|
-
export function applyAction(
|
|
87
|
-
state: SettingsInspectorState,
|
|
88
|
-
action: InspectorAction,
|
|
89
|
-
): InspectorUpdate {
|
|
90
|
-
const newState: SettingsInspectorState = {
|
|
91
|
-
...state,
|
|
92
|
-
values: { ...state.values },
|
|
93
|
-
};
|
|
94
|
-
let changed = false;
|
|
95
|
-
let saved = false;
|
|
96
|
-
|
|
97
|
-
const filtered = getFilteredSchemas(newState);
|
|
98
|
-
|
|
99
|
-
switch (action.type) {
|
|
100
|
-
case "navigate": {
|
|
101
|
-
const maxIndex = Math.max(0, filtered.length - 1);
|
|
102
|
-
switch (action.direction) {
|
|
103
|
-
case "up":
|
|
104
|
-
newState.selectedIndex = Math.max(0, newState.selectedIndex - 1);
|
|
105
|
-
break;
|
|
106
|
-
case "down":
|
|
107
|
-
newState.selectedIndex = Math.min(maxIndex, newState.selectedIndex + 1);
|
|
108
|
-
break;
|
|
109
|
-
case "first":
|
|
110
|
-
newState.selectedIndex = 0;
|
|
111
|
-
break;
|
|
112
|
-
case "last":
|
|
113
|
-
newState.selectedIndex = maxIndex;
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
changed = newState.selectedIndex !== state.selectedIndex;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
case "search": {
|
|
121
|
-
newState.searchQuery = action.query;
|
|
122
|
-
newState.selectedIndex = 0;
|
|
123
|
-
changed = true;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
case "select": {
|
|
128
|
-
const maxIndex = Math.max(0, filtered.length - 1);
|
|
129
|
-
newState.selectedIndex = Math.max(0, Math.min(maxIndex, action.index));
|
|
130
|
-
changed = newState.selectedIndex !== state.selectedIndex;
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
case "edit": {
|
|
135
|
-
const selected = getSelectedSchema(newState);
|
|
136
|
-
if (selected) {
|
|
137
|
-
newState.values[selected.key] = action.value;
|
|
138
|
-
changed = true;
|
|
139
|
-
}
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
case "toggle_edit": {
|
|
144
|
-
newState.editMode = !newState.editMode;
|
|
145
|
-
changed = true;
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
case "save": {
|
|
150
|
-
saved = true;
|
|
151
|
-
changed = true;
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
case "cancel": {
|
|
156
|
-
newState.editMode = false;
|
|
157
|
-
changed = true;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
return { state: newState, changed, saved };
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/** Validate a value against its schema */
|
|
166
|
-
export function validateValue(
|
|
167
|
-
schema: SettingSchema,
|
|
168
|
-
value: unknown,
|
|
169
|
-
): string | undefined {
|
|
170
|
-
if (value === undefined || value === null) {
|
|
171
|
-
if (schema.required) {
|
|
172
|
-
return `Required field: ${schema.key}`;
|
|
173
|
-
}
|
|
174
|
-
return undefined;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
switch (schema.type) {
|
|
178
|
-
case "string":
|
|
179
|
-
if (typeof value !== "string") {
|
|
180
|
-
return `Expected string for ${schema.key}`;
|
|
181
|
-
}
|
|
182
|
-
break;
|
|
183
|
-
case "number":
|
|
184
|
-
if (typeof value !== "number" || Number.isNaN(value)) {
|
|
185
|
-
return `Expected number for ${schema.key}`;
|
|
186
|
-
}
|
|
187
|
-
break;
|
|
188
|
-
case "boolean":
|
|
189
|
-
if (typeof value !== "boolean") {
|
|
190
|
-
return `Expected boolean for ${schema.key}`;
|
|
191
|
-
}
|
|
192
|
-
break;
|
|
193
|
-
case "object":
|
|
194
|
-
if (typeof value !== "object" || Array.isArray(value)) {
|
|
195
|
-
return `Expected object for ${schema.key}`;
|
|
196
|
-
}
|
|
197
|
-
break;
|
|
198
|
-
case "array":
|
|
199
|
-
if (!Array.isArray(value)) {
|
|
200
|
-
return `Expected array for ${schema.key}`;
|
|
201
|
-
}
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/** Validate all values against schemas */
|
|
209
|
-
export function validateAll(
|
|
210
|
-
state: SettingsInspectorState,
|
|
211
|
-
): Record<string, string> {
|
|
212
|
-
const errors: Record<string, string> = {};
|
|
213
|
-
for (const schema of state.schemas) {
|
|
214
|
-
const error = validateValue(schema, state.values[schema.key]);
|
|
215
|
-
if (error) {
|
|
216
|
-
errors[schema.key] = error;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return errors;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/** Export state values as JSON */
|
|
223
|
-
export function exportToJSON(state: SettingsInspectorState): string {
|
|
224
|
-
return JSON.stringify(state.values, null, 2);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/** Import values from JSON string */
|
|
228
|
-
export function importFromJSON(
|
|
229
|
-
state: SettingsInspectorState,
|
|
230
|
-
json: string,
|
|
231
|
-
): { state: SettingsInspectorState; errors: Record<string, string> } {
|
|
232
|
-
let parsed: Record<string, unknown>;
|
|
233
|
-
try {
|
|
234
|
-
parsed = JSON.parse(json);
|
|
235
|
-
} catch (err) {
|
|
236
|
-
return {
|
|
237
|
-
state,
|
|
238
|
-
errors: { _parse: `Invalid JSON: ${(err as Error).message}` },
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const newState: SettingsInspectorState = {
|
|
243
|
-
...state,
|
|
244
|
-
values: { ...state.values },
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
const errors: Record<string, string> = {};
|
|
248
|
-
for (const schema of state.schemas) {
|
|
249
|
-
if (parsed[schema.key] !== undefined) {
|
|
250
|
-
const error = validateValue(schema, parsed[schema.key]);
|
|
251
|
-
if (error) {
|
|
252
|
-
errors[schema.key] = error;
|
|
253
|
-
} else {
|
|
254
|
-
newState.values[schema.key] = parsed[schema.key];
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
return { state: newState, errors };
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/** Format a setting for display */
|
|
263
|
-
export function formatSetting(
|
|
264
|
-
schema: SettingSchema,
|
|
265
|
-
value: unknown,
|
|
266
|
-
): string {
|
|
267
|
-
const displayValue = value === undefined ? "(unset)" : JSON.stringify(value);
|
|
268
|
-
const requiredMark = schema.required ? "*" : "";
|
|
269
|
-
return `${schema.key}${requiredMark}: ${displayValue}\n ${schema.description}`;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/** Render the inspector as markdown (for non-TUI environments) */
|
|
273
|
-
export function renderAsMarkdown(
|
|
274
|
-
state: SettingsInspectorState,
|
|
275
|
-
): string {
|
|
276
|
-
const filtered = getFilteredSchemas(state);
|
|
277
|
-
const lines = [
|
|
278
|
-
"## ⚙️ Settings",
|
|
279
|
-
"",
|
|
280
|
-
state.searchQuery ? `*Filter: "${state.searchQuery}"*` : "",
|
|
281
|
-
"",
|
|
282
|
-
];
|
|
283
|
-
|
|
284
|
-
for (let i = 0; i < filtered.length; i++) {
|
|
285
|
-
const schema = filtered[i];
|
|
286
|
-
const value = state.values[schema.key];
|
|
287
|
-
const selected = i === state.selectedIndex ? "> " : " ";
|
|
288
|
-
const required = schema.required ? " **(required)**" : "";
|
|
289
|
-
|
|
290
|
-
lines.push(
|
|
291
|
-
`${selected}**${schema.key}**${required} \`${schema.type}\``,
|
|
292
|
-
` ${schema.description}`,
|
|
293
|
-
` Value: \`${JSON.stringify(value)}\``,
|
|
294
|
-
"",
|
|
295
|
-
);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
if (filtered.length === 0) {
|
|
299
|
-
lines.push("*No settings match your search.*");
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return lines.join("\n");
|
|
303
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @unipi/web-api — LLM Summarize provider
|
|
3
|
-
*
|
|
4
|
-
* Summarization provider using pi's existing LLM.
|
|
5
|
-
* No external API key required - uses the LLM already configured in pi.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type {
|
|
9
|
-
WebProvider,
|
|
10
|
-
SummarizeResult,
|
|
11
|
-
ProviderConfig,
|
|
12
|
-
} from "./base.js";
|
|
13
|
-
import { registry } from "./registry.js";
|
|
14
|
-
|
|
15
|
-
/** Default summarization prompt */
|
|
16
|
-
const DEFAULT_SUMMARY_PROMPT = `Summarize the following web content concisely, highlighting the key points.
|
|
17
|
-
Focus on:
|
|
18
|
-
1. Main topic and purpose
|
|
19
|
-
2. Key facts and findings
|
|
20
|
-
3. Important conclusions or recommendations
|
|
21
|
-
|
|
22
|
-
Provide a clear, well-structured summary.`;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Summarize content using LLM.
|
|
26
|
-
* This provider delegates to pi's built-in LLM for summarization.
|
|
27
|
-
* The actual LLM call happens in the tool execution, not here.
|
|
28
|
-
*/
|
|
29
|
-
function createLLMSummarizeResult(
|
|
30
|
-
url: string,
|
|
31
|
-
content: string,
|
|
32
|
-
prompt?: string
|
|
33
|
-
): SummarizeResult {
|
|
34
|
-
// Return a placeholder - actual LLM call happens in tool execution
|
|
35
|
-
return {
|
|
36
|
-
url: url,
|
|
37
|
-
summary: `[LLM Summary placeholder for ${url}]`,
|
|
38
|
-
prompt: prompt || DEFAULT_SUMMARY_PROMPT,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** LLM Summarize provider implementation */
|
|
43
|
-
const llmSummarizeProvider: WebProvider = {
|
|
44
|
-
id: "llm-summarize",
|
|
45
|
-
name: "LLM Summarize",
|
|
46
|
-
capabilities: ["summarize"],
|
|
47
|
-
requiresApiKey: false,
|
|
48
|
-
ranking: {
|
|
49
|
-
search: 0,
|
|
50
|
-
read: 0,
|
|
51
|
-
summarize: 2,
|
|
52
|
-
},
|
|
53
|
-
config: {
|
|
54
|
-
defaultPrompt: DEFAULT_SUMMARY_PROMPT,
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
async summarize(url: string, prompt?: string, _config?: ProviderConfig): Promise<SummarizeResult> {
|
|
58
|
-
// This is a placeholder - actual implementation will be in the tool
|
|
59
|
-
// The tool will:
|
|
60
|
-
// 1. Fetch content using a read provider
|
|
61
|
-
// 2. Send to LLM with the prompt
|
|
62
|
-
// 3. Return the LLM's summary
|
|
63
|
-
|
|
64
|
-
return createLLMSummarizeResult(url, "", prompt);
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Register provider
|
|
69
|
-
registry.register(llmSummarizeProvider);
|
|
70
|
-
|
|
71
|
-
export { llmSummarizeProvider, DEFAULT_SUMMARY_PROMPT };
|