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.
Files changed (159) hide show
  1. package/README.ja.md +1 -1
  2. package/README.md +5 -2
  3. package/dist/DmuxApp.d.ts.map +1 -1
  4. package/dist/DmuxApp.js +32 -6
  5. package/dist/DmuxApp.js.map +1 -1
  6. package/dist/actions/implementations/renameAction.d.ts.map +1 -1
  7. package/dist/actions/implementations/renameAction.js +11 -2
  8. package/dist/actions/implementations/renameAction.js.map +1 -1
  9. package/dist/components/panes/MergePane.d.ts.map +1 -1
  10. package/dist/components/panes/MergePane.js +3 -22
  11. package/dist/components/panes/MergePane.js.map +1 -1
  12. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  13. package/dist/components/panes/PaneCard.js +13 -5
  14. package/dist/components/panes/PaneCard.js.map +1 -1
  15. package/dist/components/popups/inferenceSetupPopup.d.ts +21 -0
  16. package/dist/components/popups/inferenceSetupPopup.d.ts.map +1 -0
  17. package/dist/components/popups/inferenceSetupPopup.js +939 -0
  18. package/dist/components/popups/inferenceSetupPopup.js.map +1 -0
  19. package/dist/components/popups/kebabMenuPopup.d.ts +7 -0
  20. package/dist/components/popups/kebabMenuPopup.d.ts.map +1 -1
  21. package/dist/components/popups/kebabMenuPopup.js +48 -4
  22. package/dist/components/popups/kebabMenuPopup.js.map +1 -1
  23. package/dist/components/popups/settingsPopup.js +4 -0
  24. package/dist/components/popups/settingsPopup.js.map +1 -1
  25. package/dist/dashboard.js +2 -2
  26. package/dist/hooks/useAgentStatus.d.ts.map +1 -1
  27. package/dist/hooks/useAgentStatus.js +9 -2
  28. package/dist/hooks/useAgentStatus.js.map +1 -1
  29. package/dist/hooks/useInputHandling.d.ts +3 -1
  30. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  31. package/dist/hooks/useInputHandling.js +30 -0
  32. package/dist/hooks/useInputHandling.js.map +1 -1
  33. package/dist/hooks/usePaneLoading.d.ts +8 -5
  34. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  35. package/dist/hooks/usePaneLoading.js +115 -68
  36. package/dist/hooks/usePaneLoading.js.map +1 -1
  37. package/dist/hooks/usePaneSync.d.ts +4 -7
  38. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  39. package/dist/hooks/usePaneSync.js +12 -30
  40. package/dist/hooks/usePaneSync.js.map +1 -1
  41. package/dist/hooks/usePanes.d.ts.map +1 -1
  42. package/dist/hooks/usePanes.js +69 -30
  43. package/dist/hooks/usePanes.js.map +1 -1
  44. package/dist/hooks/useSidebarMouse.d.ts +24 -0
  45. package/dist/hooks/useSidebarMouse.d.ts.map +1 -0
  46. package/dist/hooks/useSidebarMouse.js +50 -0
  47. package/dist/hooks/useSidebarMouse.js.map +1 -0
  48. package/dist/i18n/locales/en.d.ts.map +1 -1
  49. package/dist/i18n/locales/en.js +2 -0
  50. package/dist/i18n/locales/en.js.map +1 -1
  51. package/dist/i18n/locales/ja.d.ts.map +1 -1
  52. package/dist/i18n/locales/ja.js +2 -0
  53. package/dist/i18n/locales/ja.js.map +1 -1
  54. package/dist/index.js +25 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/services/CodexAppServerClient.d.ts +58 -0
  57. package/dist/services/CodexAppServerClient.d.ts.map +1 -0
  58. package/dist/services/CodexAppServerClient.js +263 -0
  59. package/dist/services/CodexAppServerClient.js.map +1 -0
  60. package/dist/services/GrokBuildClient.d.ts +17 -0
  61. package/dist/services/GrokBuildClient.d.ts.map +1 -0
  62. package/dist/services/GrokBuildClient.js +150 -0
  63. package/dist/services/GrokBuildClient.js.map +1 -0
  64. package/dist/services/InferenceService.d.ts +22 -0
  65. package/dist/services/InferenceService.d.ts.map +1 -0
  66. package/dist/services/InferenceService.js +342 -0
  67. package/dist/services/InferenceService.js.map +1 -0
  68. package/dist/services/PaneAnalyzer.d.ts +1 -16
  69. package/dist/services/PaneAnalyzer.d.ts.map +1 -1
  70. package/dist/services/PaneAnalyzer.js +17 -101
  71. package/dist/services/PaneAnalyzer.js.map +1 -1
  72. package/dist/services/PaneWorkerManager.d.ts +1 -1
  73. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  74. package/dist/services/PaneWorkerManager.js +9 -5
  75. package/dist/services/PaneWorkerManager.js.map +1 -1
  76. package/dist/services/PopupManager.d.ts +6 -1
  77. package/dist/services/PopupManager.d.ts.map +1 -1
  78. package/dist/services/PopupManager.js +30 -0
  79. package/dist/services/PopupManager.js.map +1 -1
  80. package/dist/services/StatusDetector.d.ts.map +1 -1
  81. package/dist/services/StatusDetector.js +15 -8
  82. package/dist/services/StatusDetector.js.map +1 -1
  83. package/dist/services/TerminalPaneNamingService.d.ts +44 -0
  84. package/dist/services/TerminalPaneNamingService.d.ts.map +1 -0
  85. package/dist/services/TerminalPaneNamingService.js +273 -0
  86. package/dist/services/TerminalPaneNamingService.js.map +1 -0
  87. package/dist/services/TmuxService.d.ts +5 -0
  88. package/dist/services/TmuxService.d.ts.map +1 -1
  89. package/dist/services/TmuxService.js +10 -3
  90. package/dist/services/TmuxService.js.map +1 -1
  91. package/dist/types.d.ts +21 -0
  92. package/dist/types.d.ts.map +1 -1
  93. package/dist/utils/agentLaunch.d.ts +3 -2
  94. package/dist/utils/agentLaunch.d.ts.map +1 -1
  95. package/dist/utils/agentLaunch.js +9 -4
  96. package/dist/utils/agentLaunch.js.map +1 -1
  97. package/dist/utils/aiMerge.d.ts +4 -2
  98. package/dist/utils/aiMerge.d.ts.map +1 -1
  99. package/dist/utils/aiMerge.js +14 -59
  100. package/dist/utils/aiMerge.js.map +1 -1
  101. package/dist/utils/envKeySetup.d.ts +10 -0
  102. package/dist/utils/envKeySetup.d.ts.map +1 -0
  103. package/dist/utils/envKeySetup.js +58 -0
  104. package/dist/utils/envKeySetup.js.map +1 -0
  105. package/dist/utils/generated-agents-doc.d.ts +1 -1
  106. package/dist/utils/generated-agents-doc.js +1 -1
  107. package/dist/utils/inferenceProviders.d.ts +34 -0
  108. package/dist/utils/inferenceProviders.d.ts.map +1 -0
  109. package/dist/utils/inferenceProviders.js +265 -0
  110. package/dist/utils/inferenceProviders.js.map +1 -0
  111. package/dist/utils/inferenceSetup.d.ts +19 -0
  112. package/dist/utils/inferenceSetup.d.ts.map +1 -0
  113. package/dist/utils/inferenceSetup.js +37 -0
  114. package/dist/utils/inferenceSetup.js.map +1 -0
  115. package/dist/utils/inferenceWizard.d.ts +61 -0
  116. package/dist/utils/inferenceWizard.d.ts.map +1 -0
  117. package/dist/utils/inferenceWizard.js +175 -0
  118. package/dist/utils/inferenceWizard.js.map +1 -0
  119. package/dist/utils/onboarding.d.ts +4 -2
  120. package/dist/utils/onboarding.d.ts.map +1 -1
  121. package/dist/utils/onboarding.js +26 -53
  122. package/dist/utils/onboarding.js.map +1 -1
  123. package/dist/utils/openRouterApiKeySetup.d.ts +7 -0
  124. package/dist/utils/openRouterApiKeySetup.d.ts.map +1 -1
  125. package/dist/utils/openRouterApiKeySetup.js +21 -0
  126. package/dist/utils/openRouterApiKeySetup.js.map +1 -1
  127. package/dist/utils/paneAgentTracking.d.ts +31 -0
  128. package/dist/utils/paneAgentTracking.d.ts.map +1 -0
  129. package/dist/utils/paneAgentTracking.js +261 -0
  130. package/dist/utils/paneAgentTracking.js.map +1 -0
  131. package/dist/utils/popup.d.ts.map +1 -1
  132. package/dist/utils/popup.js +17 -5
  133. package/dist/utils/popup.js.map +1 -1
  134. package/dist/utils/prSummary.d.ts +1 -1
  135. package/dist/utils/prSummary.js +3 -3
  136. package/dist/utils/prSummary.js.map +1 -1
  137. package/dist/utils/settingsManager.d.ts.map +1 -1
  138. package/dist/utils/settingsManager.js +43 -0
  139. package/dist/utils/settingsManager.js.map +1 -1
  140. package/dist/utils/shellPaneDetection.d.ts.map +1 -1
  141. package/dist/utils/shellPaneDetection.js +2 -0
  142. package/dist/utils/shellPaneDetection.js.map +1 -1
  143. package/dist/utils/sidebarClickMap.d.ts +28 -0
  144. package/dist/utils/sidebarClickMap.d.ts.map +1 -0
  145. package/dist/utils/sidebarClickMap.js +91 -0
  146. package/dist/utils/sidebarClickMap.js.map +1 -0
  147. package/dist/utils/sidebarMouse.d.ts +55 -0
  148. package/dist/utils/sidebarMouse.d.ts.map +1 -0
  149. package/dist/utils/sidebarMouse.js +101 -0
  150. package/dist/utils/sidebarMouse.js.map +1 -0
  151. package/dist/utils/sidebarScrollOffset.d.ts +9 -0
  152. package/dist/utils/sidebarScrollOffset.d.ts.map +1 -0
  153. package/dist/utils/sidebarScrollOffset.js +23 -0
  154. package/dist/utils/sidebarScrollOffset.js.map +1 -0
  155. package/dist/utils/slug.d.ts.map +1 -1
  156. package/dist/utils/slug.js +9 -41
  157. package/dist/utils/slug.js.map +1 -1
  158. package/native/macos/prebuilt/dmux-helper.app/Contents/MacOS/dmux-helper +0 -0
  159. 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 runOpenRouterApiKeyOnboardingIfNeeded(): Promise<void>;
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
- * - OpenRouter API key setup
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":"AA6DA,wBAAsB,qCAAqC,IAAI,OAAO,CAAC,IAAI,CAAC,CA6D3E;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnE"}
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"}
@@ -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 { hasCompletedOpenRouterOnboarding, persistOpenRouterApiKeyToShell, writeOpenRouterOnboardingState, } from './openRouterApiKeySetup.js';
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 promptHiddenInput(question) {
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 existingApiKey = process.env.OPENROUTER_API_KEY?.trim();
64
- if (existingApiKey) {
65
- await writeOpenRouterOnboardingState(homeDir, 'existing-env');
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 hasCompletedOpenRouterOnboarding(homeDir);
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 OpenRouter API key onboarding because terminal is non-interactive', 'onboarding');
46
+ logger.debug('Skipping inference provider onboarding because terminal is non-interactive', 'onboarding');
74
47
  return;
75
48
  }
76
- const shouldConfigure = await promptYesNo('OPENROUTER_API_KEY is not set. Configure it now to enable AI-powered features?', true);
49
+ const shouldConfigure = await promptYesNo('Configure an inference provider for AI-powered dmux features?', true);
77
50
  if (!shouldConfigure) {
78
- await writeOpenRouterOnboardingState(homeDir, 'skip');
51
+ await writeInferenceProviderOnboardingState(homeDir, 'skip');
79
52
  return;
80
53
  }
81
- const apiKey = await promptHiddenInput('Enter your OpenRouter API key:');
82
- if (!apiKey) {
83
- console.log(chalk.yellow('Skipping OpenRouter setup (no API key entered).'));
84
- await writeOpenRouterOnboardingState(homeDir, 'skip');
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
- const { shellConfigPath } = await persistOpenRouterApiKeyToShell(apiKey, {
88
- shellPath: process.env.SHELL,
89
- homeDir,
90
- });
91
- process.env.OPENROUTER_API_KEY = apiKey;
92
- await writeOpenRouterOnboardingState(homeDir, 'configured', shellConfigPath);
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(`OpenRouter onboarding failed: ${error instanceof Error ? error.message : String(error)}`, 'onboarding');
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
- * - OpenRouter API key setup
77
+ * - inference provider/model setup
105
78
  */
106
79
  export async function runFirstRunOnboardingIfNeeded() {
107
80
  await runTmuxConfigOnboardingIfNeeded();
108
- await runOpenRouterApiKeyOnboardingIfNeeded();
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,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AAEpC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,aAAsB,IAAI;IACrE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAClF,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACpD,OAAO,UAAU,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,KAAK,GAAG,KAAK,CAAC;QACd,MAAM,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QAClD,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,KAAK,GAAG,KAAK,CAAC;QACd,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC9D,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,8BAA8B,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CACV,4EAA4E,EAC5E,YAAY,CACb,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,WAAW,CACvC,gFAAgF,EAChF,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,MAAM,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,8BAA8B,CAAC,MAAM,EAAE;YACvE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK;YAC5B,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACxC,MAAM,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAE7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,eAAe,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,eAAe,4CAA4C,CAAC,CAAC,CAAC;IACxG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF,YAAY,CACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B;IACjD,MAAM,+BAA+B,EAAE,CAAC;IACxC,MAAM,qCAAqC,EAAE,CAAC;AAChD,CAAC"}
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":"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"}
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;AAqBxB,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAC3D,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAEzD,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,OAAO,IAAI,OAAO,GAAG,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,SAAkB;IACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAA6B,EAAE,OAAe;IACrF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE/D,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAA6B,EAAE,OAAe;IACzF,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,SAAkB;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,8BAA8B,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,6BAA6B,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,eAAuB,EAAE,UAAkB;IAClF,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,GAAG,sBAAsB,KAAK,UAAU,KAAK,oBAAoB,EAAE,CAAC;IAClF,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,GAAG,WAAW,CAAC,sBAAsB,CAAC,aAAa,WAAW,CAAC,oBAAoB,CAAC,MAAM,EAC1F,GAAG,CACJ,CAAC;IAEF,IAAI,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1D,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,GAAG,iBAAiB,IAAI,CAAC;IAE7B,OAAO,GAAG,mBAAmB,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAAc,EACd,OAAkD;IAElD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACrE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1D,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,wBAAwB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAE7E,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAE7D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACvD,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;QAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,OAAe;IACpE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,0BAA0B,EAAE,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAe,EACf,OAAoC,EACpC,eAAwB;IAExB,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAExD,MAAM,SAAS,GAAoB;QACjC,GAAG,YAAY;QACf,0BAA0B,EAAE;YAC1B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,OAAO;YACP,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;KACF,CAAC;IAEF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAAC,OAAe;IAC3E,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,wEAAwE;IACxE,6EAA6E;IAC7E,OAAO,CACL,KAAK,CAAC,2BAA2B,EAAE,SAAS,KAAK,IAAI;WAClD,KAAK,CAAC,0BAA0B,EAAE,SAAS,KAAK,IAAI,CACxD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAe,EACf,OAA8B;IAE9B,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAoB;QACjC,GAAG,YAAY;QACf,2BAA2B,EAAE;YAC3B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,OAAO;SACR;KACF,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC"}
@@ -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"}