@pixelbyte-software/pixcode 1.40.10 → 1.41.1

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 (35) hide show
  1. package/dist/assets/{index-DeZLXqLz.js → index-xttxkI5U.js} +3 -3
  2. package/dist/index.html +1 -1
  3. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js +8 -18
  4. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js.map +1 -1
  5. package/dist-server/server/modules/providers/provider.routes.js +6 -20
  6. package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
  7. package/dist-server/server/routes/agent.js +2 -2
  8. package/dist-server/server/routes/agent.js.map +1 -1
  9. package/dist-server/server/routes/commands.js +20 -14
  10. package/dist-server/server/routes/commands.js.map +1 -1
  11. package/dist-server/server/routes/cursor.js +9 -3
  12. package/dist-server/server/routes/cursor.js.map +1 -1
  13. package/dist-server/server/routes/settings.js +11 -0
  14. package/dist-server/server/routes/settings.js.map +1 -1
  15. package/dist-server/server/services/model-registry.js +119 -0
  16. package/dist-server/server/services/model-registry.js.map +1 -0
  17. package/dist-server/server/services/notification-orchestrator.js +48 -16
  18. package/dist-server/server/services/notification-orchestrator.js.map +1 -1
  19. package/dist-server/server/services/notification-taxonomy.js +177 -0
  20. package/dist-server/server/services/notification-taxonomy.js.map +1 -0
  21. package/dist-server/server/services/telegram/control-center.js +2 -9
  22. package/dist-server/server/services/telegram/control-center.js.map +1 -1
  23. package/package.json +1 -1
  24. package/scripts/smoke/model-registry.mjs +36 -0
  25. package/scripts/smoke/notification-taxonomy.mjs +58 -0
  26. package/server/modules/orchestration/workflows/workflow-runner.ts +12 -30
  27. package/server/modules/providers/provider.routes.ts +9 -28
  28. package/server/routes/agent.js +2 -2
  29. package/server/routes/commands.js +29 -15
  30. package/server/routes/cursor.js +10 -3
  31. package/server/routes/settings.js +11 -0
  32. package/server/services/model-registry.js +144 -0
  33. package/server/services/notification-orchestrator.js +58 -15
  34. package/server/services/notification-taxonomy.js +204 -0
  35. package/server/services/telegram/control-center.js +4 -16
@@ -1,12 +1,7 @@
1
1
  import webPush from 'web-push';
2
2
  import { notificationPreferencesDb, pushSubscriptionsDb, sessionNamesDb } from '../database/db.js';
3
3
  import { notifyUser as notifyTelegramUser } from './telegram/bot.js';
4
- const KIND_TO_PREF_KEY = {
5
- action_required: 'actionRequired',
6
- stop: 'stop',
7
- error: 'error',
8
- update: 'updates'
9
- };
4
+ import { NOTIFICATION_EVENT_TYPES, createNotificationEventContract, getNotificationPreferenceKey, normalizeNotificationEvent } from './notification-taxonomy.js';
10
5
  const PROVIDER_LABELS = {
11
6
  claude: 'Claude',
12
7
  cursor: 'Cursor',
@@ -32,19 +27,19 @@ const cleanupOldEventKeys = () => {
32
27
  };
33
28
  function shouldSendPush(preferences, event) {
34
29
  const webPushEnabled = Boolean(preferences?.channels?.webPush);
35
- const prefEventKey = KIND_TO_PREF_KEY[event.kind];
30
+ const prefEventKey = getNotificationPreferenceKey(event);
36
31
  const eventEnabled = prefEventKey ? Boolean(preferences?.events?.[prefEventKey]) : true;
37
32
  return webPushEnabled && eventEnabled;
38
33
  }
39
34
  function shouldSendInApp(preferences, event) {
40
35
  const inAppEnabled = preferences?.channels?.inApp !== false;
41
- const prefEventKey = KIND_TO_PREF_KEY[event.kind];
36
+ const prefEventKey = getNotificationPreferenceKey(event);
42
37
  const eventEnabled = prefEventKey ? preferences?.events?.[prefEventKey] !== false : true;
43
38
  return inAppEnabled && eventEnabled;
44
39
  }
45
40
  function shouldSendTelegram(preferences, event) {
46
41
  const telegramEnabled = preferences?.channels?.telegram !== false;
47
- const prefEventKey = KIND_TO_PREF_KEY[event.kind];
42
+ const prefEventKey = getNotificationPreferenceKey(event);
48
43
  const eventEnabled = prefEventKey ? preferences?.events?.[prefEventKey] !== false : true;
49
44
  return telegramEnabled && eventEnabled;
50
45
  }
@@ -57,10 +52,11 @@ function isDuplicate(event) {
57
52
  recentEventKeys.set(key, Date.now());
58
53
  return false;
59
54
  }
60
- function createNotificationEvent({ provider, sessionId = null, kind = 'info', code = 'generic.info', meta = {}, severity = 'info', dedupeKey = null, requiresUserAction = false }) {
61
- return {
55
+ function createNotificationEvent({ provider, sessionId = null, eventType = null, kind = 'info', code = 'generic.info', meta = {}, severity = 'info', dedupeKey = null, requiresUserAction = false }) {
56
+ return normalizeNotificationEvent({
62
57
  provider,
63
58
  sessionId,
59
+ eventType,
64
60
  kind,
65
61
  code,
66
62
  meta,
@@ -68,7 +64,7 @@ function createNotificationEvent({ provider, sessionId = null, kind = 'info', co
68
64
  requiresUserAction,
69
65
  dedupeKey,
70
66
  createdAt: new Date().toISOString()
71
- };
67
+ });
72
68
  }
73
69
  function normalizeErrorMessage(error) {
74
70
  if (typeof error === 'string') {
@@ -103,6 +99,16 @@ function resolveSessionName(event) {
103
99
  return normalizeSessionName(sessionNamesDb.getName(event.sessionId, event.provider));
104
100
  }
105
101
  function buildPushBody(event) {
102
+ const EVENT_TYPE_MAP = {
103
+ [NOTIFICATION_EVENT_TYPES.CHAT_DONE]: event.meta?.stopReason || 'Chat run completed',
104
+ [NOTIFICATION_EVENT_TYPES.ORCHESTRATION_DONE]: event.meta?.stopReason || 'Orchestration completed',
105
+ [NOTIFICATION_EVENT_TYPES.APPROVAL_NEEDED]: event.meta?.toolName
106
+ ? `Action Required: Tool "${event.meta.toolName}" needs approval`
107
+ : 'Action Required: A run needs your approval',
108
+ [NOTIFICATION_EVENT_TYPES.ERROR]: event.meta?.error ? `Error: ${event.meta.error}` : 'Pixcode encountered an error',
109
+ [NOTIFICATION_EVENT_TYPES.TEST_FAILED]: event.meta?.error ? `Test Failed: ${event.meta.error}` : 'A verification command failed',
110
+ [NOTIFICATION_EVENT_TYPES.LIVE_VIEW_FAILED]: event.meta?.error ? `Live View Failed: ${event.meta.error}` : 'Live View failed'
111
+ };
106
112
  const CODE_MAP = {
107
113
  'permission.required': event.meta?.toolName
108
114
  ? `Action Required: Tool "${event.meta.toolName}" needs approval`
@@ -120,26 +126,33 @@ function buildPushBody(event) {
120
126
  };
121
127
  const providerLabel = PROVIDER_LABELS[event.provider] || 'Assistant';
122
128
  const sessionName = resolveSessionName(event);
123
- const message = CODE_MAP[event.code] || 'You have a new notification';
129
+ const message = EVENT_TYPE_MAP[event.eventType] || CODE_MAP[event.code] || 'You have a new notification';
124
130
  return {
125
131
  title: sessionName || 'Pixcode',
126
132
  body: `${providerLabel}: ${message}`,
127
133
  data: {
128
134
  sessionId: event.sessionId || null,
135
+ eventType: event.eventType || null,
129
136
  code: event.code,
130
137
  provider: event.provider || null,
131
138
  sessionName,
139
+ category: event.category || null,
140
+ preferenceKey: event.preferenceKey || getNotificationPreferenceKey(event),
132
141
  tag: `${event.provider || 'assistant'}:${event.sessionId || 'none'}:${event.code}`
133
142
  }
134
143
  };
135
144
  }
136
145
  function buildNotificationPayload(event) {
137
146
  const pushBody = buildPushBody(event);
147
+ const contract = createNotificationEventContract(event);
138
148
  const baseId = event.dedupeKey || `${event.provider || 'system'}:${event.kind || 'info'}:${event.code || 'generic'}:${event.sessionId || 'none'}`;
139
149
  return {
140
150
  id: `${baseId}:${event.createdAt}`,
141
151
  title: pushBody.title,
142
152
  body: pushBody.body,
153
+ eventType: contract.eventType,
154
+ category: contract.category,
155
+ preferenceKey: contract.preferenceKey,
143
156
  kind: event.kind || 'info',
144
157
  code: event.code || 'generic.info',
145
158
  severity: event.severity || 'info',
@@ -150,6 +163,23 @@ function buildNotificationPayload(event) {
150
163
  data: pushBody.data
151
164
  };
152
165
  }
166
+ function inferRunStoppedEventType({ provider, stopReason }) {
167
+ const reason = typeof stopReason === 'string' ? stopReason.toLowerCase() : '';
168
+ if (provider === 'system' && reason.includes('orchestration')) {
169
+ return NOTIFICATION_EVENT_TYPES.ORCHESTRATION_DONE;
170
+ }
171
+ return NOTIFICATION_EVENT_TYPES.CHAT_DONE;
172
+ }
173
+ function inferRunFailedEventType({ provider, error }) {
174
+ const message = normalizeErrorMessage(error).toLowerCase();
175
+ if (message.includes('live view')) {
176
+ return NOTIFICATION_EVENT_TYPES.LIVE_VIEW_FAILED;
177
+ }
178
+ if (message.includes('test') || message.includes('typecheck') || message.includes('lint') || message.includes('build')) {
179
+ return NOTIFICATION_EVENT_TYPES.TEST_FAILED;
180
+ }
181
+ return provider === 'system' ? NOTIFICATION_EVENT_TYPES.ERROR : NOTIFICATION_EVENT_TYPES.RUN_FAILED;
182
+ }
153
183
  function broadcastInAppNotification(userId, event) {
154
184
  if (!notificationWebSocketServer || !userId || !event) {
155
185
  return;
@@ -225,12 +255,13 @@ function notifyUserIfEnabled({ userId, event }) {
225
255
  });
226
256
  }
227
257
  }
228
- function notifyRunStopped({ userId, provider, sessionId = null, stopReason = 'completed', sessionName = null }) {
258
+ function notifyRunStopped({ userId, provider, sessionId = null, stopReason = 'completed', sessionName = null, eventType = null }) {
229
259
  notifyUserIfEnabled({
230
260
  userId,
231
261
  event: createNotificationEvent({
232
262
  provider,
233
263
  sessionId,
264
+ eventType: eventType || inferRunStoppedEventType({ provider, stopReason }),
234
265
  kind: 'stop',
235
266
  code: 'run.stopped',
236
267
  meta: { stopReason, sessionName },
@@ -239,13 +270,14 @@ function notifyRunStopped({ userId, provider, sessionId = null, stopReason = 'co
239
270
  })
240
271
  });
241
272
  }
242
- function notifyRunFailed({ userId, provider, sessionId = null, error, sessionName = null }) {
273
+ function notifyRunFailed({ userId, provider, sessionId = null, error, sessionName = null, eventType = null }) {
243
274
  const errorMessage = normalizeErrorMessage(error);
244
275
  notifyUserIfEnabled({
245
276
  userId,
246
277
  event: createNotificationEvent({
247
278
  provider,
248
279
  sessionId,
280
+ eventType: eventType || inferRunFailedEventType({ provider, error }),
249
281
  kind: 'error',
250
282
  code: 'run.failed',
251
283
  meta: { error: errorMessage, sessionName },
@@ -254,5 +286,5 @@ function notifyRunFailed({ userId, provider, sessionId = null, error, sessionNam
254
286
  })
255
287
  });
256
288
  }
257
- export { createNotificationEvent, setNotificationWebSocketServer, broadcastInAppNotification, notifyUserIfEnabled, notifyRunStopped, notifyRunFailed };
289
+ export { createNotificationEvent, createNotificationEventContract, setNotificationWebSocketServer, broadcastInAppNotification, notifyUserIfEnabled, notifyRunStopped, notifyRunFailed };
258
290
  //# sourceMappingURL=notification-orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-orchestrator.js","sourceRoot":"","sources":["../../../server/services/notification-orchestrator.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-orchestrator.js","sourceRoot":"","sources":["../../../server/services/notification-orchestrator.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ const NOTIFICATION_PREFERENCE_KEYS = Object.freeze({
2
+ ACTION_REQUIRED: 'actionRequired',
3
+ STOP: 'stop',
4
+ ERROR: 'error',
5
+ UPDATES: 'updates',
6
+ });
7
+ const NOTIFICATION_EVENT_TYPES = Object.freeze({
8
+ CHAT_DONE: 'chat.done',
9
+ ORCHESTRATION_DONE: 'orchestration.done',
10
+ APPROVAL_NEEDED: 'approval.needed',
11
+ ERROR: 'error',
12
+ TEST_FAILED: 'test.failed',
13
+ LIVE_VIEW_FAILED: 'live_view.failed',
14
+ RUN_STOPPED: 'run.stopped',
15
+ RUN_FAILED: 'run.failed',
16
+ AGENT_NOTIFICATION: 'agent.notification',
17
+ PUSH_ENABLED: 'push.enabled',
18
+ APP_UPDATE_AVAILABLE: 'app.update.available',
19
+ CLI_UPDATE_AVAILABLE: 'cli.update.available',
20
+ });
21
+ const NOTIFICATION_TAXONOMY = Object.freeze({
22
+ [NOTIFICATION_EVENT_TYPES.CHAT_DONE]: {
23
+ category: 'chat',
24
+ kind: 'stop',
25
+ severity: 'info',
26
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.STOP,
27
+ description: 'A chat/provider run completed.',
28
+ },
29
+ [NOTIFICATION_EVENT_TYPES.ORCHESTRATION_DONE]: {
30
+ category: 'orchestration',
31
+ kind: 'stop',
32
+ severity: 'info',
33
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.STOP,
34
+ description: 'An orchestration workflow completed.',
35
+ },
36
+ [NOTIFICATION_EVENT_TYPES.APPROVAL_NEEDED]: {
37
+ category: 'approval',
38
+ kind: 'action_required',
39
+ severity: 'warning',
40
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ACTION_REQUIRED,
41
+ requiresUserAction: true,
42
+ description: 'A run is waiting for human approval.',
43
+ },
44
+ [NOTIFICATION_EVENT_TYPES.ERROR]: {
45
+ category: 'system',
46
+ kind: 'error',
47
+ severity: 'error',
48
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ERROR,
49
+ description: 'A generic Pixcode error occurred.',
50
+ },
51
+ [NOTIFICATION_EVENT_TYPES.TEST_FAILED]: {
52
+ category: 'verification',
53
+ kind: 'error',
54
+ severity: 'error',
55
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ERROR,
56
+ description: 'A build, lint, typecheck, or test command failed.',
57
+ },
58
+ [NOTIFICATION_EVENT_TYPES.LIVE_VIEW_FAILED]: {
59
+ category: 'live_view',
60
+ kind: 'error',
61
+ severity: 'error',
62
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ERROR,
63
+ description: 'A Live View preview failed to start or stay healthy.',
64
+ },
65
+ [NOTIFICATION_EVENT_TYPES.RUN_STOPPED]: {
66
+ category: 'run',
67
+ kind: 'stop',
68
+ severity: 'info',
69
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.STOP,
70
+ description: 'A run stopped without reporting a failure.',
71
+ },
72
+ [NOTIFICATION_EVENT_TYPES.RUN_FAILED]: {
73
+ category: 'run',
74
+ kind: 'error',
75
+ severity: 'error',
76
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ERROR,
77
+ description: 'A run failed.',
78
+ },
79
+ [NOTIFICATION_EVENT_TYPES.AGENT_NOTIFICATION]: {
80
+ category: 'agent',
81
+ kind: 'action_required',
82
+ severity: 'warning',
83
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.ACTION_REQUIRED,
84
+ requiresUserAction: true,
85
+ description: 'An agent emitted a notification for the user.',
86
+ },
87
+ [NOTIFICATION_EVENT_TYPES.PUSH_ENABLED]: {
88
+ category: 'settings',
89
+ kind: 'info',
90
+ severity: 'info',
91
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.UPDATES,
92
+ description: 'Push notifications were enabled.',
93
+ },
94
+ [NOTIFICATION_EVENT_TYPES.APP_UPDATE_AVAILABLE]: {
95
+ category: 'update',
96
+ kind: 'update',
97
+ severity: 'info',
98
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.UPDATES,
99
+ description: 'A Pixcode app update is available.',
100
+ },
101
+ [NOTIFICATION_EVENT_TYPES.CLI_UPDATE_AVAILABLE]: {
102
+ category: 'update',
103
+ kind: 'update',
104
+ severity: 'info',
105
+ preferenceKey: NOTIFICATION_PREFERENCE_KEYS.UPDATES,
106
+ description: 'A CLI update is available.',
107
+ },
108
+ });
109
+ const LEGACY_CODE_TO_EVENT_TYPE = Object.freeze({
110
+ 'permission.required': NOTIFICATION_EVENT_TYPES.APPROVAL_NEEDED,
111
+ 'run.stopped': NOTIFICATION_EVENT_TYPES.RUN_STOPPED,
112
+ 'run.failed': NOTIFICATION_EVENT_TYPES.RUN_FAILED,
113
+ 'agent.notification': NOTIFICATION_EVENT_TYPES.AGENT_NOTIFICATION,
114
+ 'push.enabled': NOTIFICATION_EVENT_TYPES.PUSH_ENABLED,
115
+ 'app.update.available': NOTIFICATION_EVENT_TYPES.APP_UPDATE_AVAILABLE,
116
+ 'cli.update.available': NOTIFICATION_EVENT_TYPES.CLI_UPDATE_AVAILABLE,
117
+ 'chat.done': NOTIFICATION_EVENT_TYPES.CHAT_DONE,
118
+ 'orchestration.done': NOTIFICATION_EVENT_TYPES.ORCHESTRATION_DONE,
119
+ 'test.failed': NOTIFICATION_EVENT_TYPES.TEST_FAILED,
120
+ 'live_view.failed': NOTIFICATION_EVENT_TYPES.LIVE_VIEW_FAILED,
121
+ });
122
+ const KIND_TO_EVENT_TYPE = Object.freeze({
123
+ action_required: NOTIFICATION_EVENT_TYPES.APPROVAL_NEEDED,
124
+ stop: NOTIFICATION_EVENT_TYPES.RUN_STOPPED,
125
+ error: NOTIFICATION_EVENT_TYPES.ERROR,
126
+ update: NOTIFICATION_EVENT_TYPES.APP_UPDATE_AVAILABLE,
127
+ info: NOTIFICATION_EVENT_TYPES.AGENT_NOTIFICATION,
128
+ });
129
+ function resolveNotificationEventType(event = {}) {
130
+ if (typeof event.eventType === 'string' && NOTIFICATION_TAXONOMY[event.eventType]) {
131
+ return event.eventType;
132
+ }
133
+ if (typeof event.code === 'string' && LEGACY_CODE_TO_EVENT_TYPE[event.code]) {
134
+ return LEGACY_CODE_TO_EVENT_TYPE[event.code];
135
+ }
136
+ if (typeof event.kind === 'string' && KIND_TO_EVENT_TYPE[event.kind]) {
137
+ return KIND_TO_EVENT_TYPE[event.kind];
138
+ }
139
+ return NOTIFICATION_EVENT_TYPES.AGENT_NOTIFICATION;
140
+ }
141
+ function getNotificationTaxonomy(event = {}) {
142
+ return NOTIFICATION_TAXONOMY[resolveNotificationEventType(event)];
143
+ }
144
+ function getNotificationPreferenceKey(event = {}) {
145
+ return getNotificationTaxonomy(event)?.preferenceKey || NOTIFICATION_PREFERENCE_KEYS.UPDATES;
146
+ }
147
+ function normalizeNotificationEvent(event = {}) {
148
+ const eventType = resolveNotificationEventType(event);
149
+ const taxonomy = NOTIFICATION_TAXONOMY[eventType];
150
+ return {
151
+ ...event,
152
+ eventType,
153
+ category: taxonomy.category,
154
+ kind: event.kind || taxonomy.kind,
155
+ severity: event.severity || taxonomy.severity,
156
+ preferenceKey: taxonomy.preferenceKey,
157
+ requiresUserAction: Boolean(event.requiresUserAction ?? taxonomy.requiresUserAction),
158
+ };
159
+ }
160
+ function createNotificationEventContract(event = {}) {
161
+ const normalized = normalizeNotificationEvent(event);
162
+ const taxonomy = NOTIFICATION_TAXONOMY[normalized.eventType];
163
+ return {
164
+ eventType: normalized.eventType,
165
+ category: normalized.category,
166
+ kind: normalized.kind,
167
+ severity: normalized.severity,
168
+ preferenceKey: normalized.preferenceKey,
169
+ requiresUserAction: normalized.requiresUserAction,
170
+ description: taxonomy.description,
171
+ };
172
+ }
173
+ function listNotificationTaxonomy() {
174
+ return Object.keys(NOTIFICATION_TAXONOMY).map((eventType) => createNotificationEventContract({ eventType }));
175
+ }
176
+ export { NOTIFICATION_EVENT_TYPES, NOTIFICATION_PREFERENCE_KEYS, NOTIFICATION_TAXONOMY, createNotificationEventContract, getNotificationPreferenceKey, getNotificationTaxonomy, listNotificationTaxonomy, normalizeNotificationEvent, resolveNotificationEventType, };
177
+ //# sourceMappingURL=notification-taxonomy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-taxonomy.js","sourceRoot":"","sources":["../../../server/services/notification-taxonomy.js"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import crypto from 'node:crypto';
2
2
  import { apiKeysDb, telegramLinksDb } from '../../database/db.js';
3
3
  import { getProjects } from '../../projects.js';
4
- import { CLAUDE_MODELS, CODEX_MODELS, CURSOR_MODELS, GEMINI_MODELS, OPENCODE_MODELS, QWEN_MODELS, } from '../../../shared/modelConstants.js';
4
+ import { getStaticProviderModels } from '../model-registry.js';
5
5
  import { SUPPORTED_LANGUAGES, t } from './translations.js';
6
6
  const PROVIDERS = ['claude', 'cursor', 'codex', 'gemini', 'qwen', 'opencode'];
7
7
  const TERMINAL_RUN_STATES = new Set(['completed', 'failed', 'canceled']);
@@ -9,14 +9,7 @@ const CALLBACK_TTL_MS = 10 * 60 * 1000;
9
9
  const MAX_TELEGRAM_TEXT = 3600;
10
10
  const callbackActions = new Map();
11
11
  const runMonitors = new Map();
12
- const MODEL_FALLBACKS = {
13
- claude: CLAUDE_MODELS.OPTIONS,
14
- codex: CODEX_MODELS.OPTIONS,
15
- cursor: CURSOR_MODELS.OPTIONS,
16
- gemini: GEMINI_MODELS.OPTIONS,
17
- qwen: QWEN_MODELS.OPTIONS,
18
- opencode: OPENCODE_MODELS.OPTIONS,
19
- };
12
+ const MODEL_FALLBACKS = Object.fromEntries(PROVIDERS.map((provider) => [provider, getStaticProviderModels(provider)]));
20
13
  const AUTH_HELP = {
21
14
  claude: '`claude login`',
22
15
  cursor: '`cursor-agent login`',