@entelligentsia/forgecli 0.9.4 → 0.10.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/CHANGELOG.md +53 -0
- package/README.md +38 -0
- package/dist/bin/config.js +7 -2
- package/dist/bin/config.js.map +1 -1
- package/dist/extensions/forgecli/config-command.js +1 -0
- package/dist/extensions/forgecli/config-command.js.map +1 -1
- package/dist/extensions/forgecli/config-layer.js +3 -4
- package/dist/extensions/forgecli/config-layer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/component.js +6 -0
- package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/handler.d.ts +4 -0
- package/dist/extensions/forgecli/config-tui/handler.js +17 -9
- package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js +114 -47
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +73 -50
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +32 -0
- package/dist/extensions/forgecli/config-tui/screens/shared.js +74 -1
- package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +69 -28
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/model.d.ts +8 -0
- package/dist/extensions/forgecli/config-tui/state/reducer.js +18 -1
- package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
- package/dist/extensions/forgecli/config-writer.js +7 -6
- package/dist/extensions/forgecli/config-writer.js.map +1 -1
- package/dist/extensions/forgecli/forge-update-command.js +2 -3
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/foundry-collision.js +5 -3
- package/dist/extensions/forgecli/foundry-collision.js.map +1 -1
- package/dist/extensions/forgecli/index.js +16 -9
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/paths/migrator.d.ts +24 -0
- package/dist/extensions/forgecli/paths/migrator.js +150 -0
- package/dist/extensions/forgecli/paths/migrator.js.map +1 -0
- package/dist/extensions/forgecli/paths/paths.d.ts +36 -0
- package/dist/extensions/forgecli/paths/paths.js +144 -0
- package/dist/extensions/forgecli/paths/paths.js.map +1 -0
- package/dist/extensions/forgecli/subagent/agents.d.ts +9 -0
- package/dist/extensions/forgecli/subagent/agents.js +12 -2
- package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
- package/dist/extensions/forgecli/subagent/index.d.ts +9 -0
- package/dist/extensions/forgecli/subagent/index.js +12 -4
- package/dist/extensions/forgecli/subagent/index.js.map +1 -1
- package/dist/extensions/forgecli/update-check.js +2 -3
- package/dist/extensions/forgecli/update-check.js.map +1 -1
- package/dist/extensions/forgecli/whats-new-widget.js +2 -3
- package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
- package/dist/extensions/forgecli/whats-new.js +7 -6
- package/dist/extensions/forgecli/whats-new.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// Shared screen rendering utilities — windowList, formatOverride, and themed helpers.
|
|
1
|
+
// Shared screen rendering utilities — windowList, formatOverride, search helpers, and themed helpers.
|
|
2
2
|
// Split from screens.ts (Phase 1). Phase 3: theming applied to all visible strings.
|
|
3
|
+
import { fuzzyFilter, Key, matchesKey } from "@earendil-works/pi-tui";
|
|
3
4
|
import { authBadge, muted, rule as themedRule, error as themedError, truncateLines } from "../theme.js";
|
|
4
5
|
/** Themed horizontal rule spanning the full width. */
|
|
5
6
|
export function rule(width, theme) {
|
|
@@ -97,4 +98,76 @@ export function tierBadge(tier, theme) {
|
|
|
97
98
|
export function safeLines(lines, width) {
|
|
98
99
|
return truncateLines(lines, width);
|
|
99
100
|
}
|
|
101
|
+
// ── Search / filter helpers ──────────────────────────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* Filter a list of items using fuzzy search.
|
|
104
|
+
* When `query` is empty, returns items unfiltered (original order).
|
|
105
|
+
* When non-empty, returns items matching the fuzzy query (best matches first).
|
|
106
|
+
*/
|
|
107
|
+
export function filterWithSearch(items, query, getText) {
|
|
108
|
+
if (!query)
|
|
109
|
+
return items;
|
|
110
|
+
return fuzzyFilter(items, query, getText);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Render the search/filter input line.
|
|
114
|
+
* Shows a prompt, the current query, a block cursor, and a hint when empty.
|
|
115
|
+
*/
|
|
116
|
+
export function renderFilterLine(query, theme) {
|
|
117
|
+
const prompt = theme.fg("accent", " Filter: ");
|
|
118
|
+
const display = query || "";
|
|
119
|
+
const cursor = theme.fg("accent", "▏");
|
|
120
|
+
const hint = query ? "" : theme.fg("muted", " type to search…");
|
|
121
|
+
return `${prompt}${display}${cursor}${hint}`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Render search result count line.
|
|
125
|
+
*/
|
|
126
|
+
export function renderResultCount(shown, total, theme) {
|
|
127
|
+
if (shown === total)
|
|
128
|
+
return "";
|
|
129
|
+
return theme.fg("muted", ` Showing ${shown} of ${total}`);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Determine if a raw key event represents a printable character suitable for
|
|
133
|
+
* appending to a search query. Excludes control sequences, ESC sequences,
|
|
134
|
+
* and other non-printable input.
|
|
135
|
+
*/
|
|
136
|
+
export function isPrintableInput(data) {
|
|
137
|
+
if (data.length === 0)
|
|
138
|
+
return false;
|
|
139
|
+
if (data.length === 1) {
|
|
140
|
+
const code = data.charCodeAt(0);
|
|
141
|
+
// Printable ASCII: space (0x20) through tilde (0x7e), excluding DEL (0x7f)
|
|
142
|
+
return code >= 0x20 && code <= 0x7e;
|
|
143
|
+
}
|
|
144
|
+
// Multi-byte sequences that don't start with ESC are likely UTF-8 printable chars
|
|
145
|
+
return data.charCodeAt(0) !== 0x1b;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Process a search key event and return the updated query, or undefined if
|
|
149
|
+
* the key is not search-related.
|
|
150
|
+
*
|
|
151
|
+
* - Printable characters: append to query
|
|
152
|
+
* - Backspace: remove last character
|
|
153
|
+
* - Ctrl+U / Ctrl+W: clear entire query
|
|
154
|
+
*
|
|
155
|
+
* Returns the new query string, or `undefined` if the key isn't a search action.
|
|
156
|
+
*/
|
|
157
|
+
export function handleSearchKey(currentQuery, data) {
|
|
158
|
+
// Backspace: delete last char
|
|
159
|
+
if (matchesKey(data, Key.backspace)) {
|
|
160
|
+
return currentQuery.length > 0 ? currentQuery.slice(0, -1) : "";
|
|
161
|
+
}
|
|
162
|
+
// Ctrl+U: clear entire query
|
|
163
|
+
if (matchesKey(data, "ctrl+u") || matchesKey(data, "ctrl+w")) {
|
|
164
|
+
return "";
|
|
165
|
+
}
|
|
166
|
+
// Printable character: append to query
|
|
167
|
+
if (isPrintableInput(data)) {
|
|
168
|
+
return currentQuery + data;
|
|
169
|
+
}
|
|
170
|
+
// Not a search key
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
100
173
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/screens/shared.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/screens/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Tier-picker screen — provider + model picker for a workload tier.
|
|
2
2
|
// Phase A: minimal placeholder. Phase B adds full provider/model picking flow.
|
|
3
3
|
// Reuses the same UX patterns as persona-editor but scoped to a tier.
|
|
4
|
+
// Search/filter: type to fuzzy-search providers or models, like pi /model.
|
|
4
5
|
import { Key, matchesKey } from "@earendil-works/pi-tui";
|
|
5
6
|
import { getActiveView, uniqueProviders } from "../state/selectors.js";
|
|
6
7
|
import { TIER_LABELS, tierPersonaLine } from "../tier-meta.js";
|
|
7
|
-
import { rule, authBadgeFor, windowList, safeLines } from "./shared.js";
|
|
8
|
+
import { rule, authBadgeFor, windowList, safeLines, filterWithSearch, renderFilterLine, renderResultCount, handleSearchKey } from "./shared.js";
|
|
8
9
|
import { padRight, cursor, accentBold, muted, dirtyMarker } from "../theme.js";
|
|
9
10
|
export class TierPickerScreen {
|
|
10
11
|
render(state, width, theme) {
|
|
@@ -20,21 +21,31 @@ export class TierPickerScreen {
|
|
|
20
21
|
lines.push(muted(` This will run for: ${tierPersonaLine(view.tier)}`, theme));
|
|
21
22
|
lines.push("");
|
|
22
23
|
const providers = uniqueProviders(state);
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
const filtered = filterWithSearch(providers, view.searchQuery, (p) => p);
|
|
25
|
+
lines.push(renderFilterLine(view.searchQuery, theme));
|
|
26
|
+
if (filtered.length === 0) {
|
|
27
|
+
lines.push(muted(" No matching providers.", theme));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const win = windowList(filtered, view.cursor);
|
|
31
|
+
if (win.aboveCount > 0)
|
|
32
|
+
lines.push(muted(` ↑ ${win.aboveCount} more above`, theme));
|
|
33
|
+
win.visible.forEach((p, i) => {
|
|
34
|
+
const absoluteIdx = win.start + i;
|
|
35
|
+
const cur = cursor(absoluteIdx === view.cursor, theme);
|
|
36
|
+
const auth = authBadgeFor(state, p, theme);
|
|
37
|
+
const modelCount = state.availableModels.filter((m) => m.provider === p).length;
|
|
38
|
+
const countLabel = `${modelCount} model${modelCount === 1 ? "" : "s"}`;
|
|
39
|
+
lines.push(` ${cur} ${padRight(p, 18)} ${auth} ${muted(countLabel, theme)}`);
|
|
40
|
+
});
|
|
41
|
+
if (win.belowCount > 0)
|
|
42
|
+
lines.push(muted(` ↓ ${win.belowCount} more below`, theme));
|
|
43
|
+
}
|
|
44
|
+
const countLine = renderResultCount(filtered.length, providers.length, theme);
|
|
45
|
+
if (countLine)
|
|
46
|
+
lines.push(countLine);
|
|
36
47
|
lines.push("");
|
|
37
|
-
lines.push(muted(" ↑↓
|
|
48
|
+
lines.push(muted(" ↑↓ navigate enter select type to filter esc back/clear", theme));
|
|
38
49
|
}
|
|
39
50
|
else if (view.step === "pick-model") {
|
|
40
51
|
lines.push(accentBold(`forge config › ${tierLabel} › pick model`, theme));
|
|
@@ -43,12 +54,13 @@ export class TierPickerScreen {
|
|
|
43
54
|
lines.push(muted(` This will run for: ${tierPersonaLine(view.tier)}`, theme));
|
|
44
55
|
lines.push("");
|
|
45
56
|
const models = state.availableModels.filter((m) => m.provider === view.provider);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
57
|
+
const filtered = filterWithSearch(models, view.searchQuery, (m) => `${m.id} ${m.provider}/${m.id}`);
|
|
58
|
+
lines.push(renderFilterLine(view.searchQuery, theme));
|
|
59
|
+
if (filtered.length === 0) {
|
|
60
|
+
lines.push(muted(" No matching models.", theme));
|
|
49
61
|
}
|
|
50
62
|
else {
|
|
51
|
-
const win = windowList(
|
|
63
|
+
const win = windowList(filtered, view.cursor);
|
|
52
64
|
if (win.aboveCount > 0)
|
|
53
65
|
lines.push(muted(` ↑ ${win.aboveCount} more above`, theme));
|
|
54
66
|
win.visible.forEach((m, i) => {
|
|
@@ -59,8 +71,11 @@ export class TierPickerScreen {
|
|
|
59
71
|
if (win.belowCount > 0)
|
|
60
72
|
lines.push(muted(` ↓ ${win.belowCount} more below`, theme));
|
|
61
73
|
}
|
|
74
|
+
const countLine = renderResultCount(filtered.length, models.length, theme);
|
|
75
|
+
if (countLine)
|
|
76
|
+
lines.push(countLine);
|
|
62
77
|
lines.push("");
|
|
63
|
-
lines.push(muted(" ↑↓
|
|
78
|
+
lines.push(muted(" ↑↓ navigate enter select type to filter esc back/clear", theme));
|
|
64
79
|
}
|
|
65
80
|
if (state.dirty)
|
|
66
81
|
lines.push(` ${dirtyMarker(theme)}`);
|
|
@@ -80,17 +95,30 @@ export class TierPickerScreen {
|
|
|
80
95
|
}
|
|
81
96
|
handlePickProviderInput(data, state, view) {
|
|
82
97
|
const providers = uniqueProviders(state);
|
|
83
|
-
|
|
98
|
+
const filtered = filterWithSearch(providers, view.searchQuery, (p) => p);
|
|
99
|
+
// Search input: backspace, ctrl+u/w, printable chars
|
|
100
|
+
const searchResult = handleSearchKey(view.searchQuery, data);
|
|
101
|
+
if (searchResult !== undefined) {
|
|
102
|
+
return { kind: "dispatch", action: { kind: "set-search", query: searchResult } };
|
|
103
|
+
}
|
|
104
|
+
// Escape: clear filter if present, otherwise go back
|
|
105
|
+
if (matchesKey(data, Key.escape)) {
|
|
106
|
+
if (view.searchQuery) {
|
|
107
|
+
return { kind: "dispatch", action: { kind: "set-search", query: "" } };
|
|
108
|
+
}
|
|
109
|
+
return { kind: "pop" };
|
|
110
|
+
}
|
|
111
|
+
if (matchesKey(data, Key.up)) {
|
|
84
112
|
return { kind: "dispatch", action: { kind: "cursor-move", delta: -1 } };
|
|
85
113
|
}
|
|
86
|
-
if (matchesKey(data, Key.down)
|
|
87
|
-
if (view.cursor <
|
|
114
|
+
if (matchesKey(data, Key.down)) {
|
|
115
|
+
if (view.cursor < filtered.length - 1) {
|
|
88
116
|
return { kind: "dispatch", action: { kind: "cursor-move", delta: 1 } };
|
|
89
117
|
}
|
|
90
118
|
return { kind: "consumed" };
|
|
91
119
|
}
|
|
92
120
|
if (matchesKey(data, Key.enter)) {
|
|
93
|
-
const provider =
|
|
121
|
+
const provider = filtered[view.cursor];
|
|
94
122
|
if (provider) {
|
|
95
123
|
return { kind: "dispatch", action: { kind: "set-tier-provider", tier: view.tier, provider } };
|
|
96
124
|
}
|
|
@@ -100,17 +128,30 @@ export class TierPickerScreen {
|
|
|
100
128
|
}
|
|
101
129
|
handlePickModelInput(data, state, view) {
|
|
102
130
|
const models = state.availableModels.filter((m) => m.provider === view.provider);
|
|
103
|
-
|
|
131
|
+
const filtered = filterWithSearch(models, view.searchQuery, (m) => `${m.id} ${m.provider}/${m.id}`);
|
|
132
|
+
// Search input: backspace, ctrl+u/w, printable chars
|
|
133
|
+
const searchResult = handleSearchKey(view.searchQuery, data);
|
|
134
|
+
if (searchResult !== undefined) {
|
|
135
|
+
return { kind: "dispatch", action: { kind: "set-search", query: searchResult } };
|
|
136
|
+
}
|
|
137
|
+
// Escape: clear filter if present, otherwise go back
|
|
138
|
+
if (matchesKey(data, Key.escape)) {
|
|
139
|
+
if (view.searchQuery) {
|
|
140
|
+
return { kind: "dispatch", action: { kind: "set-search", query: "" } };
|
|
141
|
+
}
|
|
142
|
+
return { kind: "pop" };
|
|
143
|
+
}
|
|
144
|
+
if (matchesKey(data, Key.up)) {
|
|
104
145
|
return { kind: "dispatch", action: { kind: "cursor-move", delta: -1 } };
|
|
105
146
|
}
|
|
106
|
-
if (matchesKey(data, Key.down)
|
|
107
|
-
if (view.cursor <
|
|
147
|
+
if (matchesKey(data, Key.down)) {
|
|
148
|
+
if (view.cursor < filtered.length - 1) {
|
|
108
149
|
return { kind: "dispatch", action: { kind: "cursor-move", delta: 1 } };
|
|
109
150
|
}
|
|
110
151
|
return { kind: "consumed" };
|
|
111
152
|
}
|
|
112
153
|
if (matchesKey(data, Key.enter)) {
|
|
113
|
-
const target =
|
|
154
|
+
const target = filtered[view.cursor];
|
|
114
155
|
if (target && view.provider) {
|
|
115
156
|
return { kind: "dispatch", action: { kind: "commit-tier-model", tier: view.tier, provider: view.provider, model: target.id, layer: state.scope } };
|
|
116
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tier-picker.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/screens/tier-picker.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,+EAA+E;AAC/E,sEAAsE;
|
|
1
|
+
{"version":3,"file":"tier-picker.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/screens/tier-picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export type View = {
|
|
|
11
11
|
step: "pick-provider" | "pick-model";
|
|
12
12
|
provider: string | undefined;
|
|
13
13
|
cursor: number;
|
|
14
|
+
searchQuery: string;
|
|
14
15
|
} | {
|
|
15
16
|
kind: "advanced-menu";
|
|
16
17
|
cursor: number;
|
|
@@ -28,6 +29,8 @@ export type View = {
|
|
|
28
29
|
model: string | undefined;
|
|
29
30
|
/** Cursor index inside the active step's list (provider/model/layer). */
|
|
30
31
|
cursor: number;
|
|
32
|
+
/** Current search/filter string for the list (cleared on step transitions). */
|
|
33
|
+
searchQuery: string;
|
|
31
34
|
} | {
|
|
32
35
|
kind: "show-resolved";
|
|
33
36
|
cursor: number;
|
|
@@ -46,6 +49,8 @@ export type View = {
|
|
|
46
49
|
/** For the inline path: chosen provider before the model picker. */
|
|
47
50
|
provider: string | undefined;
|
|
48
51
|
cursor: number;
|
|
52
|
+
/** Current search/filter string for the list (cleared on step transitions). */
|
|
53
|
+
searchQuery: string;
|
|
49
54
|
};
|
|
50
55
|
export type TierAssignment = {
|
|
51
56
|
status: "set";
|
|
@@ -139,6 +144,9 @@ export type ConfigTuiAction = {
|
|
|
139
144
|
} | {
|
|
140
145
|
kind: "cursor-move";
|
|
141
146
|
delta: number;
|
|
147
|
+
} | {
|
|
148
|
+
kind: "set-search";
|
|
149
|
+
query: string;
|
|
142
150
|
} | {
|
|
143
151
|
kind: "begin-persona-edit";
|
|
144
152
|
persona: string;
|
|
@@ -29,6 +29,16 @@ export function reducer(state, action) {
|
|
|
29
29
|
}
|
|
30
30
|
return state;
|
|
31
31
|
}
|
|
32
|
+
case "set-search": {
|
|
33
|
+
const top = state.view[state.view.length - 1];
|
|
34
|
+
if (top.kind === "tier-picker" ||
|
|
35
|
+
top.kind === "persona-editor" ||
|
|
36
|
+
top.kind === "override-editor") {
|
|
37
|
+
const replaced = { ...top, searchQuery: action.query, cursor: 0 };
|
|
38
|
+
return { ...state, view: [...state.view.slice(0, -1), replaced] };
|
|
39
|
+
}
|
|
40
|
+
return state;
|
|
41
|
+
}
|
|
32
42
|
case "begin-persona-edit": {
|
|
33
43
|
const editor = {
|
|
34
44
|
kind: "persona-editor",
|
|
@@ -37,6 +47,7 @@ export function reducer(state, action) {
|
|
|
37
47
|
provider: undefined,
|
|
38
48
|
model: undefined,
|
|
39
49
|
cursor: 0,
|
|
50
|
+
searchQuery: "",
|
|
40
51
|
};
|
|
41
52
|
return { ...state, view: [...state.view, editor] };
|
|
42
53
|
}
|
|
@@ -50,6 +61,7 @@ export function reducer(state, action) {
|
|
|
50
61
|
model: undefined,
|
|
51
62
|
step: "pick-model",
|
|
52
63
|
cursor: 0,
|
|
64
|
+
searchQuery: "",
|
|
53
65
|
};
|
|
54
66
|
return { ...state, view: [...state.view.slice(0, -1), updated] };
|
|
55
67
|
}
|
|
@@ -62,6 +74,7 @@ export function reducer(state, action) {
|
|
|
62
74
|
model: action.model,
|
|
63
75
|
step: "pick-layer",
|
|
64
76
|
cursor: 0,
|
|
77
|
+
searchQuery: "",
|
|
65
78
|
};
|
|
66
79
|
return { ...state, view: [...state.view.slice(0, -1), updated] };
|
|
67
80
|
}
|
|
@@ -73,6 +86,7 @@ export function reducer(state, action) {
|
|
|
73
86
|
step: "pick-provider",
|
|
74
87
|
provider: undefined,
|
|
75
88
|
cursor: 0,
|
|
89
|
+
searchQuery: "",
|
|
76
90
|
};
|
|
77
91
|
return { ...state, view: [...state.view, tierPicker] };
|
|
78
92
|
}
|
|
@@ -85,6 +99,7 @@ export function reducer(state, action) {
|
|
|
85
99
|
provider: action.provider,
|
|
86
100
|
step: "pick-model",
|
|
87
101
|
cursor: 0,
|
|
102
|
+
searchQuery: "",
|
|
88
103
|
};
|
|
89
104
|
return { ...state, view: [...state.view.slice(0, -1), updated] };
|
|
90
105
|
}
|
|
@@ -133,6 +148,7 @@ export function reducer(state, action) {
|
|
|
133
148
|
step: "pick-type",
|
|
134
149
|
provider: undefined,
|
|
135
150
|
cursor: 0,
|
|
151
|
+
searchQuery: "",
|
|
136
152
|
};
|
|
137
153
|
return { ...state, view: [...state.view, editor] };
|
|
138
154
|
}
|
|
@@ -140,7 +156,7 @@ export function reducer(state, action) {
|
|
|
140
156
|
const top = state.view[state.view.length - 1];
|
|
141
157
|
if (top.kind !== "override-editor")
|
|
142
158
|
return state;
|
|
143
|
-
const updated = { ...top, step: action.step, cursor: 0 };
|
|
159
|
+
const updated = { ...top, step: action.step, cursor: 0, searchQuery: "" };
|
|
144
160
|
return { ...state, view: [...state.view.slice(0, -1), updated] };
|
|
145
161
|
}
|
|
146
162
|
case "set-override-provider": {
|
|
@@ -152,6 +168,7 @@ export function reducer(state, action) {
|
|
|
152
168
|
provider: action.provider,
|
|
153
169
|
step: "pick-model",
|
|
154
170
|
cursor: 0,
|
|
171
|
+
searchQuery: "",
|
|
155
172
|
};
|
|
156
173
|
return { ...state, view: [...state.view.slice(0, -1), updated] };
|
|
157
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/state/reducer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAKjC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjI,MAAM,UAAU,OAAO,CAAC,KAAqB,EAAE,MAAuB;IACpE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAE1D,KAAK,UAAU;YACb,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzC,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAErD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,mEAAmE;YACnE,kEAAkE;YAClE,IACE,GAAG,CAAC,IAAI,KAAK,WAAW;gBACxB,GAAG,CAAC,IAAI,KAAK,aAAa;gBAC1B,GAAG,CAAC,IAAI,KAAK,eAAe;gBAC5B,GAAG,CAAC,IAAI,KAAK,eAAe;gBAC5B,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBAC7B,GAAG,CAAC,IAAI,KAAK,eAAe;gBAC5B,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBAC7B,GAAG,CAAC,IAAI,KAAK,0BAA0B;gBACvC,GAAG,CAAC,IAAI,KAAK,uBAAuB;gBACpC,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAC9B,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAS,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACrD,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YACpE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAS;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/config-tui/state/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Atomic, schema-validated writer for forge-cli routing config files.
|
|
2
2
|
//
|
|
3
|
-
// Plan 16, Slice 4a. Writes ONLY to:
|
|
4
|
-
// - global layer (L1) →
|
|
5
|
-
// - project layer (L2/L3/L4) →
|
|
3
|
+
// Plan 16, Slice 4a. Writes ONLY to (paths resolved via paths/paths.ts):
|
|
4
|
+
// - global layer (L1) → getGlobalConfigPath() → ~/.pi/forge-cli/config.json
|
|
5
|
+
// - project layer (L2/L3/L4) → getProjectConfigPath(cwd) →
|
|
6
|
+
// <cwd>/.pi/forge-cli/config.json
|
|
6
7
|
//
|
|
7
8
|
// Never writes to .forge/config.json — that's the plugin's pipeline catalogue,
|
|
8
9
|
// read-only from this TUI.
|
|
@@ -13,16 +14,16 @@
|
|
|
13
14
|
// 3. Otherwise: write to <target>.tmp, fsync, rename atomically to <target>.
|
|
14
15
|
import * as fs from "node:fs";
|
|
15
16
|
import * as path from "node:path";
|
|
16
|
-
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
17
17
|
import { Ajv } from "ajv";
|
|
18
|
+
import { getGlobalConfigPath, getProjectConfigPath } from "./paths/paths.js";
|
|
18
19
|
import schema from "./forge-cli-schema.json" with { type: "json" };
|
|
19
20
|
const ajv = new Ajv({ allErrors: true });
|
|
20
21
|
const validate = ajv.compile(schema);
|
|
21
22
|
export function resolveTargetPath(opts) {
|
|
22
23
|
if (opts.layer === "global") {
|
|
23
|
-
return
|
|
24
|
+
return getGlobalConfigPath();
|
|
24
25
|
}
|
|
25
|
-
return
|
|
26
|
+
return getProjectConfigPath(opts.cwd);
|
|
26
27
|
}
|
|
27
28
|
function isEmpty(buffer) {
|
|
28
29
|
const personaCount = Object.keys(buffer["persona-models"] ?? {}).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/config-writer.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/config-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
// used only for the changelog body via a tag-specific URL.
|
|
12
12
|
import { execFile } from "node:child_process";
|
|
13
13
|
import { promises as fs } from "node:fs";
|
|
14
|
-
import * as os from "node:os";
|
|
15
14
|
import * as path from "node:path";
|
|
16
15
|
import { promisify } from "node:util";
|
|
16
|
+
import { getUserCacheDir } from "./paths/paths.js";
|
|
17
17
|
const execFileAsync = promisify(execFile);
|
|
18
18
|
const PKG_NAME = "@entelligentsia/forgecli";
|
|
19
19
|
const NPM_DIST_TAGS_URL = "https://registry.npmjs.org/@entelligentsia/forgecli";
|
|
@@ -157,8 +157,7 @@ function truncate(s, max) {
|
|
|
157
157
|
// happens after another change.
|
|
158
158
|
const DRIFT_CACHE_FILE = "drift-seen.json";
|
|
159
159
|
function defaultCacheDir() {
|
|
160
|
-
|
|
161
|
-
return path.join(root, "forgecli");
|
|
160
|
+
return getUserCacheDir();
|
|
162
161
|
}
|
|
163
162
|
function driftCachePath(dir) {
|
|
164
163
|
return path.join(dir, DRIFT_CACHE_FILE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-update-command.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-update-command.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,iDAAiD;AACjD,EAAE;AACF,+EAA+E;AAC/E,2DAA2D;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"forge-update-command.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-update-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// Foundry collision detection — Q17 (FORGE-S16-T02).
|
|
2
2
|
//
|
|
3
3
|
// Detects whether another `forge` binary is shadowing our own and provides
|
|
4
|
-
// a one-time dismissal cache at ~/.cache/
|
|
4
|
+
// a one-time dismissal cache at ~/.pi/forge-cli/cache/seen.json (resolved
|
|
5
|
+
// via the central path resolver). Migrated from the pre-v0.10.0 location
|
|
6
|
+
// at ~/.cache/forgecli/seen.json by the path-resolver migrator.
|
|
5
7
|
//
|
|
6
8
|
// All file I/O is silently no-op on any error (never throws to caller).
|
|
7
9
|
import { spawnSync } from "node:child_process";
|
|
8
10
|
import * as fs from "node:fs";
|
|
9
|
-
import * as os from "node:os";
|
|
10
11
|
import * as path from "node:path";
|
|
12
|
+
import { getUserCacheDir } from "./paths/paths.js";
|
|
11
13
|
/**
|
|
12
14
|
* Detect whether a `forge` binary other than ourselves is on PATH.
|
|
13
15
|
*
|
|
@@ -52,7 +54,7 @@ export function detectFoundryCollision() {
|
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
function seenJsonPath() {
|
|
55
|
-
return path.join(
|
|
57
|
+
return path.join(getUserCacheDir(), "seen.json");
|
|
56
58
|
}
|
|
57
59
|
function readSeenJson() {
|
|
58
60
|
try {
|