dmux 5.9.0 → 5.11.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.ja.md +1 -1
- package/README.md +5 -2
- package/dist/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +32 -6
- package/dist/DmuxApp.js.map +1 -1
- package/dist/actions/implementations/renameAction.d.ts.map +1 -1
- package/dist/actions/implementations/renameAction.js +11 -2
- package/dist/actions/implementations/renameAction.js.map +1 -1
- package/dist/components/panes/MergePane.d.ts.map +1 -1
- package/dist/components/panes/MergePane.js +3 -22
- package/dist/components/panes/MergePane.js.map +1 -1
- package/dist/components/panes/PaneCard.d.ts.map +1 -1
- package/dist/components/panes/PaneCard.js +13 -5
- package/dist/components/panes/PaneCard.js.map +1 -1
- package/dist/components/popups/inferenceSetupPopup.d.ts +21 -0
- package/dist/components/popups/inferenceSetupPopup.d.ts.map +1 -0
- package/dist/components/popups/inferenceSetupPopup.js +939 -0
- package/dist/components/popups/inferenceSetupPopup.js.map +1 -0
- package/dist/components/popups/kebabMenuPopup.d.ts +7 -0
- package/dist/components/popups/kebabMenuPopup.d.ts.map +1 -1
- package/dist/components/popups/kebabMenuPopup.js +48 -4
- package/dist/components/popups/kebabMenuPopup.js.map +1 -1
- package/dist/components/popups/settingsPopup.js +4 -0
- package/dist/components/popups/settingsPopup.js.map +1 -1
- package/dist/dashboard.js +2 -2
- package/dist/hooks/useAgentStatus.d.ts.map +1 -1
- package/dist/hooks/useAgentStatus.js +9 -2
- package/dist/hooks/useAgentStatus.js.map +1 -1
- package/dist/hooks/useInputHandling.d.ts +3 -1
- package/dist/hooks/useInputHandling.d.ts.map +1 -1
- package/dist/hooks/useInputHandling.js +30 -0
- package/dist/hooks/useInputHandling.js.map +1 -1
- package/dist/hooks/usePaneLoading.d.ts +8 -5
- package/dist/hooks/usePaneLoading.d.ts.map +1 -1
- package/dist/hooks/usePaneLoading.js +115 -68
- package/dist/hooks/usePaneLoading.js.map +1 -1
- package/dist/hooks/usePaneSync.d.ts +4 -7
- package/dist/hooks/usePaneSync.d.ts.map +1 -1
- package/dist/hooks/usePaneSync.js +12 -30
- package/dist/hooks/usePaneSync.js.map +1 -1
- package/dist/hooks/usePanes.d.ts.map +1 -1
- package/dist/hooks/usePanes.js +69 -30
- package/dist/hooks/usePanes.js.map +1 -1
- package/dist/hooks/useSidebarMouse.d.ts +24 -0
- package/dist/hooks/useSidebarMouse.d.ts.map +1 -0
- package/dist/hooks/useSidebarMouse.js +50 -0
- package/dist/hooks/useSidebarMouse.js.map +1 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +2 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +2 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/index.js +25 -2
- package/dist/index.js.map +1 -1
- package/dist/services/CodexAppServerClient.d.ts +58 -0
- package/dist/services/CodexAppServerClient.d.ts.map +1 -0
- package/dist/services/CodexAppServerClient.js +263 -0
- package/dist/services/CodexAppServerClient.js.map +1 -0
- package/dist/services/GrokBuildClient.d.ts +17 -0
- package/dist/services/GrokBuildClient.d.ts.map +1 -0
- package/dist/services/GrokBuildClient.js +150 -0
- package/dist/services/GrokBuildClient.js.map +1 -0
- package/dist/services/InferenceService.d.ts +22 -0
- package/dist/services/InferenceService.d.ts.map +1 -0
- package/dist/services/InferenceService.js +342 -0
- package/dist/services/InferenceService.js.map +1 -0
- package/dist/services/PaneAnalyzer.d.ts +1 -16
- package/dist/services/PaneAnalyzer.d.ts.map +1 -1
- package/dist/services/PaneAnalyzer.js +17 -101
- package/dist/services/PaneAnalyzer.js.map +1 -1
- package/dist/services/PaneWorkerManager.d.ts +1 -1
- package/dist/services/PaneWorkerManager.d.ts.map +1 -1
- package/dist/services/PaneWorkerManager.js +9 -5
- package/dist/services/PaneWorkerManager.js.map +1 -1
- package/dist/services/PopupManager.d.ts +6 -1
- package/dist/services/PopupManager.d.ts.map +1 -1
- package/dist/services/PopupManager.js +30 -0
- package/dist/services/PopupManager.js.map +1 -1
- package/dist/services/StatusDetector.d.ts.map +1 -1
- package/dist/services/StatusDetector.js +15 -8
- package/dist/services/StatusDetector.js.map +1 -1
- package/dist/services/TerminalPaneNamingService.d.ts +44 -0
- package/dist/services/TerminalPaneNamingService.d.ts.map +1 -0
- package/dist/services/TerminalPaneNamingService.js +273 -0
- package/dist/services/TerminalPaneNamingService.js.map +1 -0
- package/dist/services/TmuxService.d.ts +5 -0
- package/dist/services/TmuxService.d.ts.map +1 -1
- package/dist/services/TmuxService.js +10 -3
- package/dist/services/TmuxService.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/agentLaunch.d.ts +3 -2
- package/dist/utils/agentLaunch.d.ts.map +1 -1
- package/dist/utils/agentLaunch.js +9 -4
- package/dist/utils/agentLaunch.js.map +1 -1
- package/dist/utils/aiMerge.d.ts +4 -2
- package/dist/utils/aiMerge.d.ts.map +1 -1
- package/dist/utils/aiMerge.js +14 -59
- package/dist/utils/aiMerge.js.map +1 -1
- package/dist/utils/envKeySetup.d.ts +10 -0
- package/dist/utils/envKeySetup.d.ts.map +1 -0
- package/dist/utils/envKeySetup.js +58 -0
- package/dist/utils/envKeySetup.js.map +1 -0
- package/dist/utils/generated-agents-doc.d.ts +1 -1
- package/dist/utils/generated-agents-doc.js +1 -1
- package/dist/utils/inferenceProviders.d.ts +34 -0
- package/dist/utils/inferenceProviders.d.ts.map +1 -0
- package/dist/utils/inferenceProviders.js +265 -0
- package/dist/utils/inferenceProviders.js.map +1 -0
- package/dist/utils/inferenceSetup.d.ts +19 -0
- package/dist/utils/inferenceSetup.d.ts.map +1 -0
- package/dist/utils/inferenceSetup.js +37 -0
- package/dist/utils/inferenceSetup.js.map +1 -0
- package/dist/utils/inferenceWizard.d.ts +61 -0
- package/dist/utils/inferenceWizard.d.ts.map +1 -0
- package/dist/utils/inferenceWizard.js +175 -0
- package/dist/utils/inferenceWizard.js.map +1 -0
- package/dist/utils/onboarding.d.ts +4 -2
- package/dist/utils/onboarding.d.ts.map +1 -1
- package/dist/utils/onboarding.js +26 -53
- package/dist/utils/onboarding.js.map +1 -1
- package/dist/utils/openRouterApiKeySetup.d.ts +7 -0
- package/dist/utils/openRouterApiKeySetup.d.ts.map +1 -1
- package/dist/utils/openRouterApiKeySetup.js +21 -0
- package/dist/utils/openRouterApiKeySetup.js.map +1 -1
- package/dist/utils/paneAgentTracking.d.ts +31 -0
- package/dist/utils/paneAgentTracking.d.ts.map +1 -0
- package/dist/utils/paneAgentTracking.js +261 -0
- package/dist/utils/paneAgentTracking.js.map +1 -0
- package/dist/utils/popup.d.ts.map +1 -1
- package/dist/utils/popup.js +17 -5
- package/dist/utils/popup.js.map +1 -1
- package/dist/utils/prSummary.d.ts +1 -1
- package/dist/utils/prSummary.js +3 -3
- package/dist/utils/prSummary.js.map +1 -1
- package/dist/utils/settingsManager.d.ts.map +1 -1
- package/dist/utils/settingsManager.js +43 -0
- package/dist/utils/settingsManager.js.map +1 -1
- package/dist/utils/shellPaneDetection.d.ts.map +1 -1
- package/dist/utils/shellPaneDetection.js +2 -0
- package/dist/utils/shellPaneDetection.js.map +1 -1
- package/dist/utils/sidebarClickMap.d.ts +28 -0
- package/dist/utils/sidebarClickMap.d.ts.map +1 -0
- package/dist/utils/sidebarClickMap.js +91 -0
- package/dist/utils/sidebarClickMap.js.map +1 -0
- package/dist/utils/sidebarMouse.d.ts +55 -0
- package/dist/utils/sidebarMouse.d.ts.map +1 -0
- package/dist/utils/sidebarMouse.js +101 -0
- package/dist/utils/sidebarMouse.js.map +1 -0
- package/dist/utils/sidebarScrollOffset.d.ts +9 -0
- package/dist/utils/sidebarScrollOffset.d.ts.map +1 -0
- package/dist/utils/sidebarScrollOffset.js +23 -0
- package/dist/utils/sidebarScrollOffset.js.map +1 -0
- package/dist/utils/slug.d.ts.map +1 -1
- package/dist/utils/slug.js +9 -41
- package/dist/utils/slug.js.map +1 -1
- package/native/macos/prebuilt/dmux-helper.app/Contents/MacOS/dmux-helper +0 -0
- package/package.json +3 -3
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { getInferenceApiKey, INFERENCE_PROVIDERS, } from './inferenceProviders.js';
|
|
2
|
+
import { getCodexAppServerClient, } from '../services/CodexAppServerClient.js';
|
|
3
|
+
import { getGrokBuildStatus, } from '../services/GrokBuildClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pure helpers backing the Ink inference-setup wizard. Everything here is
|
|
6
|
+
* side-effect free (except the credential probes at the bottom) so the popup
|
|
7
|
+
* UI stays a thin rendering layer.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Score how well `query` matches `text`. Higher is better; null means no
|
|
11
|
+
* match. Exact > prefix > substring (word boundaries beat mid-word) >
|
|
12
|
+
* scattered subsequence, so search-as-you-type surfaces the obvious pick
|
|
13
|
+
* first while still tolerating abbreviations like "grq" for Groq.
|
|
14
|
+
*/
|
|
15
|
+
export function fuzzyMatchScore(query, text) {
|
|
16
|
+
const q = query.toLowerCase();
|
|
17
|
+
const t = text.toLowerCase();
|
|
18
|
+
if (!q)
|
|
19
|
+
return 0;
|
|
20
|
+
const index = t.indexOf(q);
|
|
21
|
+
if (index >= 0) {
|
|
22
|
+
if (t === q)
|
|
23
|
+
return 100;
|
|
24
|
+
if (index === 0)
|
|
25
|
+
return 90;
|
|
26
|
+
const boundaryBonus = /[\s\-_./(]/.test(t[index - 1]) ? 10 : 0;
|
|
27
|
+
return 70 + boundaryBonus - Math.min(index, 20) * 0.5;
|
|
28
|
+
}
|
|
29
|
+
let searchFrom = 0;
|
|
30
|
+
let gaps = 0;
|
|
31
|
+
let lastFound = -2;
|
|
32
|
+
for (const char of q) {
|
|
33
|
+
const found = t.indexOf(char, searchFrom);
|
|
34
|
+
if (found === -1)
|
|
35
|
+
return null;
|
|
36
|
+
if (found !== lastFound + 1)
|
|
37
|
+
gaps++;
|
|
38
|
+
lastFound = found;
|
|
39
|
+
searchFrom = found + 1;
|
|
40
|
+
}
|
|
41
|
+
return Math.max(1, 40 - gaps * 4 - Math.max(0, t.length - q.length) * 0.1);
|
|
42
|
+
}
|
|
43
|
+
/** Drop control characters (stray escape bytes, etc.) that can sneak into a terminal input buffer. */
|
|
44
|
+
export function sanitizeSearchQuery(query) {
|
|
45
|
+
// eslint-disable-next-line no-control-regex
|
|
46
|
+
return query.replace(/[\x00-\x1f\x7f]/g, ' ').trim();
|
|
47
|
+
}
|
|
48
|
+
function rankByFields(items, query, fields) {
|
|
49
|
+
const words = sanitizeSearchQuery(query).split(/\s+/).filter(Boolean);
|
|
50
|
+
if (words.length === 0)
|
|
51
|
+
return [...items];
|
|
52
|
+
const scored = [];
|
|
53
|
+
outer: for (let index = 0; index < items.length; index++) {
|
|
54
|
+
const item = items[index];
|
|
55
|
+
const itemFields = fields(item);
|
|
56
|
+
let total = 0;
|
|
57
|
+
for (const word of words) {
|
|
58
|
+
let best = null;
|
|
59
|
+
for (const field of itemFields) {
|
|
60
|
+
const score = fuzzyMatchScore(word, field.text);
|
|
61
|
+
if (score !== null) {
|
|
62
|
+
const weighted = score * field.weight;
|
|
63
|
+
if (best === null || weighted > best)
|
|
64
|
+
best = weighted;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (best === null)
|
|
68
|
+
continue outer;
|
|
69
|
+
total += best;
|
|
70
|
+
}
|
|
71
|
+
scored.push({ item, score: total, index });
|
|
72
|
+
}
|
|
73
|
+
return scored
|
|
74
|
+
.sort((left, right) => right.score - left.score || left.index - right.index)
|
|
75
|
+
.map((entry) => entry.item);
|
|
76
|
+
}
|
|
77
|
+
export function rankInferenceProviders(query, providers = INFERENCE_PROVIDERS) {
|
|
78
|
+
return rankByFields(providers, query, (provider) => [
|
|
79
|
+
{ text: provider.name, weight: 1 },
|
|
80
|
+
{ text: provider.id, weight: 0.9 },
|
|
81
|
+
...provider.envKeys.map((envKey) => ({ text: envKey, weight: 0.8 })),
|
|
82
|
+
{ text: provider.description, weight: 0.5 },
|
|
83
|
+
]);
|
|
84
|
+
}
|
|
85
|
+
export function rankInferenceModels(models, query) {
|
|
86
|
+
return rankByFields(models, query, (model) => [
|
|
87
|
+
{ text: model.name, weight: 1 },
|
|
88
|
+
{ text: model.id, weight: 0.9 },
|
|
89
|
+
{ text: model.description || '', weight: 0.5 },
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Compute the [start, end) slice of a list that keeps the selection visible
|
|
94
|
+
* inside a fixed-height viewport, centering it once the list scrolls.
|
|
95
|
+
*/
|
|
96
|
+
export function getVisibleWindow(selectedIndex, total, maxVisible) {
|
|
97
|
+
if (total <= maxVisible)
|
|
98
|
+
return { start: 0, end: total };
|
|
99
|
+
const clamped = Math.max(0, Math.min(selectedIndex, total - 1));
|
|
100
|
+
let start = clamped - Math.floor(maxVisible / 2);
|
|
101
|
+
start = Math.max(0, Math.min(start, total - maxVisible));
|
|
102
|
+
return { start, end: start + maxVisible };
|
|
103
|
+
}
|
|
104
|
+
export function clampSelection(index, total) {
|
|
105
|
+
if (total <= 0)
|
|
106
|
+
return 0;
|
|
107
|
+
return Math.max(0, Math.min(index, total - 1));
|
|
108
|
+
}
|
|
109
|
+
export function normalizeCustomBaseUrl(input) {
|
|
110
|
+
return input.trim().replace(/\/+$/, '');
|
|
111
|
+
}
|
|
112
|
+
export function isValidCustomBaseUrl(input) {
|
|
113
|
+
return /^https?:\/\/\S+$/.test(normalizeCustomBaseUrl(input));
|
|
114
|
+
}
|
|
115
|
+
export function normalizeEnvKeyName(input) {
|
|
116
|
+
return input.trim().toUpperCase().replace(/[\s-]+/g, '_');
|
|
117
|
+
}
|
|
118
|
+
export function isValidEnvKeyName(input) {
|
|
119
|
+
return /^[A-Z_][A-Z0-9_]*$/.test(normalizeEnvKeyName(input));
|
|
120
|
+
}
|
|
121
|
+
export function buildCustomPartialTarget(fields) {
|
|
122
|
+
return {
|
|
123
|
+
providerId: 'custom',
|
|
124
|
+
providerName: fields.name.trim() || 'Custom provider',
|
|
125
|
+
baseUrl: normalizeCustomBaseUrl(fields.baseUrl),
|
|
126
|
+
envKey: normalizeEnvKeyName(fields.envKey),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Probe every registry provider for an existing credential (environment or
|
|
131
|
+
* dmux credential store) so the picker can show a "key detected" badge.
|
|
132
|
+
*/
|
|
133
|
+
export async function detectProviderCredentials(providers = INFERENCE_PROVIDERS) {
|
|
134
|
+
const badges = new Map();
|
|
135
|
+
await Promise.all(providers
|
|
136
|
+
.filter((provider) => provider.envKeys.length > 0)
|
|
137
|
+
.map(async (provider) => {
|
|
138
|
+
try {
|
|
139
|
+
const found = await getInferenceApiKey(provider);
|
|
140
|
+
if (found)
|
|
141
|
+
badges.set(provider.id, { kind: 'api-key', envKey: found.envKey });
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Detection is best-effort; missing badges are fine.
|
|
145
|
+
}
|
|
146
|
+
}));
|
|
147
|
+
return badges;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Best-effort check for an existing ChatGPT (Codex) login. Bounded by a
|
|
151
|
+
* timeout because it spawns the Codex app-server.
|
|
152
|
+
*/
|
|
153
|
+
export async function detectChatGptAccount(timeoutMs = 4000) {
|
|
154
|
+
try {
|
|
155
|
+
const account = await Promise.race([
|
|
156
|
+
getCodexAppServerClient().getAccount(),
|
|
157
|
+
new Promise((resolve) => setTimeout(resolve, timeoutMs, null)),
|
|
158
|
+
]);
|
|
159
|
+
return account?.type === 'chatgpt' ? account : null;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** Best-effort check for a cached Grok Build subscription login. */
|
|
166
|
+
export async function detectGrokBuildAccount(timeoutMs = 4000) {
|
|
167
|
+
try {
|
|
168
|
+
const status = await getGrokBuildStatus(timeoutMs);
|
|
169
|
+
return status.authenticated ? status : null;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=inferenceWizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferenceWizard.js","sourceRoot":"","sources":["../../src/utils/inferenceWizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function runInferenceProviderOnboardingIfNeeded(): Promise<void>;
|
|
2
|
+
/** @deprecated Kept for API compatibility with older integrations. */
|
|
3
|
+
export declare const runOpenRouterApiKeyOnboardingIfNeeded: typeof runInferenceProviderOnboardingIfNeeded;
|
|
2
4
|
/**
|
|
3
5
|
* Run all first-run onboarding checks in one place.
|
|
4
6
|
* This currently includes:
|
|
5
7
|
* - tmux config suggestion/setup
|
|
6
|
-
* -
|
|
8
|
+
* - inference provider/model setup
|
|
7
9
|
*/
|
|
8
10
|
export declare function runFirstRunOnboardingIfNeeded(): Promise<void>;
|
|
9
11
|
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/utils/onboarding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/utils/onboarding.ts"],"names":[],"mappings":"AA+BA,wBAAsB,sCAAsC,IAAI,OAAO,CAAC,IAAI,CAAC,CA2D5E;AAED,sEAAsE;AACtE,eAAO,MAAM,qCAAqC,+CAAyC,CAAC;AAE5F;;;;;GAKG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnE"}
|
package/dist/utils/onboarding.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import os from 'os';
|
|
3
3
|
import { createInterface } from 'node:readline/promises';
|
|
4
|
-
import { Writable } from 'stream';
|
|
5
4
|
import { LogService } from '../services/LogService.js';
|
|
6
5
|
import { runTmuxConfigOnboardingIfNeeded } from './tmuxConfigOnboarding.js';
|
|
7
|
-
import {
|
|
6
|
+
import { hasCompletedInferenceProviderOnboarding, writeInferenceProviderOnboardingState, } from './openRouterApiKeySetup.js';
|
|
7
|
+
import { runInferenceSetup } from './inferenceSetup.js';
|
|
8
|
+
import { SettingsManager } from './settingsManager.js';
|
|
8
9
|
async function promptYesNo(question, defaultYes = true) {
|
|
9
10
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
10
11
|
return false;
|
|
@@ -25,86 +26,58 @@ async function promptYesNo(question, defaultYes = true) {
|
|
|
25
26
|
rl.close();
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
async function
|
|
29
|
-
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
30
|
-
return '';
|
|
31
|
-
}
|
|
32
|
-
let muted = false;
|
|
33
|
-
const output = new Writable({
|
|
34
|
-
write(chunk, _encoding, callback) {
|
|
35
|
-
if (!muted) {
|
|
36
|
-
process.stdout.write(typeof chunk === 'string' ? chunk : chunk.toString());
|
|
37
|
-
}
|
|
38
|
-
callback();
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
const rl = createInterface({ input: process.stdin, output, terminal: true });
|
|
42
|
-
try {
|
|
43
|
-
muted = false;
|
|
44
|
-
const answerPromise = rl.question(`${question} `);
|
|
45
|
-
muted = true;
|
|
46
|
-
const answer = await answerPromise;
|
|
47
|
-
muted = false;
|
|
48
|
-
process.stdout.write('\n');
|
|
49
|
-
return answer.trim();
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
muted = false;
|
|
53
|
-
rl.close();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export async function runOpenRouterApiKeyOnboardingIfNeeded() {
|
|
29
|
+
export async function runInferenceProviderOnboardingIfNeeded() {
|
|
57
30
|
const logger = LogService.getInstance();
|
|
58
31
|
try {
|
|
59
32
|
const homeDir = process.env.HOME || os.homedir();
|
|
60
33
|
if (!homeDir) {
|
|
61
34
|
return;
|
|
62
35
|
}
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
await
|
|
36
|
+
const settingsManager = new SettingsManager(process.cwd());
|
|
37
|
+
if (settingsManager.getSettings().inferencePrimary) {
|
|
38
|
+
await writeInferenceProviderOnboardingState(homeDir, 'configured');
|
|
66
39
|
return;
|
|
67
40
|
}
|
|
68
|
-
const completed = await
|
|
41
|
+
const completed = await hasCompletedInferenceProviderOnboarding(homeDir);
|
|
69
42
|
if (completed) {
|
|
70
43
|
return;
|
|
71
44
|
}
|
|
72
45
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
73
|
-
logger.debug('Skipping
|
|
46
|
+
logger.debug('Skipping inference provider onboarding because terminal is non-interactive', 'onboarding');
|
|
74
47
|
return;
|
|
75
48
|
}
|
|
76
|
-
const shouldConfigure = await promptYesNo('
|
|
49
|
+
const shouldConfigure = await promptYesNo('Configure an inference provider for AI-powered dmux features?', true);
|
|
77
50
|
if (!shouldConfigure) {
|
|
78
|
-
await
|
|
51
|
+
await writeInferenceProviderOnboardingState(homeDir, 'skip');
|
|
79
52
|
return;
|
|
80
53
|
}
|
|
81
|
-
const
|
|
82
|
-
if (!
|
|
83
|
-
console.log(chalk.yellow('Skipping
|
|
84
|
-
await
|
|
54
|
+
const configured = await runInferenceSetup();
|
|
55
|
+
if (!configured) {
|
|
56
|
+
console.log(chalk.yellow('Skipping inference setup.'));
|
|
57
|
+
await writeInferenceProviderOnboardingState(homeDir, 'skip');
|
|
85
58
|
return;
|
|
86
59
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
console.log(chalk.green(`Saved OPENROUTER_API_KEY to ${shellConfigPath}`));
|
|
94
|
-
console.log(chalk.yellow(`Run 'source ${shellConfigPath}' or open a new shell to load it globally.`));
|
|
60
|
+
settingsManager.updateSettings({
|
|
61
|
+
inferencePrimary: configured.primary,
|
|
62
|
+
inferenceBackup: configured.backup,
|
|
63
|
+
}, 'global');
|
|
64
|
+
await writeInferenceProviderOnboardingState(homeDir, 'configured');
|
|
65
|
+
console.log(chalk.green('Saved inference provider settings.'));
|
|
95
66
|
}
|
|
96
67
|
catch (error) {
|
|
97
|
-
logger.warn(`
|
|
68
|
+
logger.warn(`Inference provider onboarding failed: ${error instanceof Error ? error.message : String(error)}`, 'onboarding');
|
|
98
69
|
}
|
|
99
70
|
}
|
|
71
|
+
/** @deprecated Kept for API compatibility with older integrations. */
|
|
72
|
+
export const runOpenRouterApiKeyOnboardingIfNeeded = runInferenceProviderOnboardingIfNeeded;
|
|
100
73
|
/**
|
|
101
74
|
* Run all first-run onboarding checks in one place.
|
|
102
75
|
* This currently includes:
|
|
103
76
|
* - tmux config suggestion/setup
|
|
104
|
-
* -
|
|
77
|
+
* - inference provider/model setup
|
|
105
78
|
*/
|
|
106
79
|
export async function runFirstRunOnboardingIfNeeded() {
|
|
107
80
|
await runTmuxConfigOnboardingIfNeeded();
|
|
108
|
-
await
|
|
81
|
+
await runInferenceProviderOnboardingIfNeeded();
|
|
109
82
|
}
|
|
110
83
|
//# sourceMappingURL=onboarding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/utils/onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/utils/onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,11 @@ interface OpenRouterOnboardingEntry {
|
|
|
7
7
|
}
|
|
8
8
|
interface OnboardingState {
|
|
9
9
|
openRouterApiKeyOnboarding?: OpenRouterOnboardingEntry;
|
|
10
|
+
inferenceProviderOnboarding?: {
|
|
11
|
+
completed: boolean;
|
|
12
|
+
completedAt: string;
|
|
13
|
+
outcome: 'configured' | 'skip';
|
|
14
|
+
};
|
|
10
15
|
[key: string]: unknown;
|
|
11
16
|
}
|
|
12
17
|
export declare function getShellConfigCandidates(shellPath: string | undefined, homeDir: string): string[];
|
|
@@ -24,5 +29,7 @@ export declare function getOnboardingStatePath(homeDir: string): string;
|
|
|
24
29
|
export declare function readOnboardingState(homeDir: string): Promise<OnboardingState>;
|
|
25
30
|
export declare function hasCompletedOpenRouterOnboarding(homeDir: string): Promise<boolean>;
|
|
26
31
|
export declare function writeOpenRouterOnboardingState(homeDir: string, outcome: OpenRouterOnboardingOutcome, shellConfigPath?: string): Promise<void>;
|
|
32
|
+
export declare function hasCompletedInferenceProviderOnboarding(homeDir: string): Promise<boolean>;
|
|
33
|
+
export declare function writeInferenceProviderOnboardingState(homeDir: string, outcome: 'configured' | 'skip'): Promise<void>;
|
|
27
34
|
export {};
|
|
28
35
|
//# sourceMappingURL=openRouterApiKeySetup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterApiKeySetup.d.ts","sourceRoot":"","sources":["../../src/utils/openRouterApiKeySetup.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,2BAA2B,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAEjF,UAAU,yBAAyB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,eAAe;IACvB,0BAA0B,CAAC,EAAE,yBAAyB,CAAC;IACvD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAoCD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBjG;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5G;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOpF;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAsB5F;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAanF;AAED,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2BAA2B,EACpC,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
1
|
+
{"version":3,"file":"openRouterApiKeySetup.d.ts","sourceRoot":"","sources":["../../src/utils/openRouterApiKeySetup.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,2BAA2B,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAEjF,UAAU,yBAAyB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,eAAe;IACvB,0BAA0B,CAAC,EAAE,yBAAyB,CAAC;IACvD,2BAA2B,CAAC,EAAE;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC;KAChC,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAoCD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBjG;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5G;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOpF;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAsB5F;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAanF;AAED,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2BAA2B,EACpC,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,uCAAuC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/F;AAED,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GAAG,MAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -140,4 +140,25 @@ export async function writeOpenRouterOnboardingState(homeDir, outcome, shellConf
|
|
|
140
140
|
await fs.mkdir(path.dirname(statePath), { recursive: true });
|
|
141
141
|
await fs.writeFile(statePath, JSON.stringify(nextState, null, 2), 'utf-8');
|
|
142
142
|
}
|
|
143
|
+
export async function hasCompletedInferenceProviderOnboarding(homeDir) {
|
|
144
|
+
const state = await readOnboardingState(homeDir);
|
|
145
|
+
// Existing users already answered the OpenRouter-era onboarding prompt.
|
|
146
|
+
// Preserve that choice; they can opt into the provider picker from Settings.
|
|
147
|
+
return (state.inferenceProviderOnboarding?.completed === true
|
|
148
|
+
|| state.openRouterApiKeyOnboarding?.completed === true);
|
|
149
|
+
}
|
|
150
|
+
export async function writeInferenceProviderOnboardingState(homeDir, outcome) {
|
|
151
|
+
const statePath = getOnboardingStatePath(homeDir);
|
|
152
|
+
const currentState = await readOnboardingState(homeDir);
|
|
153
|
+
const nextState = {
|
|
154
|
+
...currentState,
|
|
155
|
+
inferenceProviderOnboarding: {
|
|
156
|
+
completed: true,
|
|
157
|
+
completedAt: new Date().toISOString(),
|
|
158
|
+
outcome,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
await fs.mkdir(path.dirname(statePath), { recursive: true });
|
|
162
|
+
await fs.writeFile(statePath, JSON.stringify(nextState, null, 2), 'utf-8');
|
|
163
|
+
}
|
|
143
164
|
//# sourceMappingURL=openRouterApiKeySetup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterApiKeySetup.js","sourceRoot":"","sources":["../../src/utils/openRouterApiKeySetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"openRouterApiKeySetup.js","sourceRoot":"","sources":["../../src/utils/openRouterApiKeySetup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DmuxPane } from '../types.js';
|
|
2
|
+
import { type AgentName } from './agentLaunch.js';
|
|
3
|
+
export interface ProcessSnapshot {
|
|
4
|
+
pid: number;
|
|
5
|
+
parentPid: number;
|
|
6
|
+
command: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PaneProcessSnapshot {
|
|
9
|
+
paneId: string;
|
|
10
|
+
rootPid: number;
|
|
11
|
+
currentCommand: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ActivePaneAgent {
|
|
14
|
+
agent: AgentName;
|
|
15
|
+
processId: number;
|
|
16
|
+
sessionId?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PaneAgentObservationResult {
|
|
19
|
+
observations: Map<string, ActivePaneAgent | null>;
|
|
20
|
+
}
|
|
21
|
+
export declare function identifyAgentCommand(command: string): AgentName | undefined;
|
|
22
|
+
export declare function parseProcessSnapshots(output: string): ProcessSnapshot[];
|
|
23
|
+
export declare function parsePaneProcessSnapshots(output: string): PaneProcessSnapshot[];
|
|
24
|
+
export declare function detectAgentProcesses(paneProcesses: PaneProcessSnapshot[], processes: ProcessSnapshot[]): Map<string, Omit<ActivePaneAgent, 'sessionId'> | null>;
|
|
25
|
+
export declare function extractAgentSessionId(agent: AgentName, openFilesOutput: string): string | undefined;
|
|
26
|
+
export declare function observePaneAgents(panes: DmuxPane[]): Promise<PaneAgentObservationResult>;
|
|
27
|
+
export declare function syncPaneAgentMetadata(panes: DmuxPane[], observations: Map<string, ActivePaneAgent | null>, observedAt?: number): {
|
|
28
|
+
panes: DmuxPane[];
|
|
29
|
+
changed: boolean;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=paneAgentTracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paneAgentTracking.d.ts","sourceRoot":"","sources":["../../src/utils/paneAgentTracking.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAc1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IAEzC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;CACnD;AAwBD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CA0B3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAUvE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAS/E;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,mBAAmB,EAAE,EACpC,SAAS,EAAE,eAAe,EAAE,GAC3B,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,CAkDxD;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAwBpB;AA2CD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,0BAA0B,CAAC,CAmDrC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,EACjD,UAAU,SAAa,GACtB;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA2CzC"}
|