@syntero/orca-cli 1.2.17-next.3 → 1.2.17-next.4

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.
@@ -0,0 +1,60 @@
1
+ import { type ConversationMeta } from '../../conversations/index.js';
2
+ import { Settings } from '../../settings.js';
3
+ import type { SyncMenuResult } from '../SyncMenu.js';
4
+ import type { UploadMenuResult } from '../UploadMenu.js';
5
+ import type { InputState } from './useInputLines.js';
6
+ export interface UseMenusParams {
7
+ settings: Settings | undefined;
8
+ onSubmit: (value: string) => void;
9
+ onResumeConversation?: (conversationId: string) => void;
10
+ onSettingsChange?: (settings: Settings) => void;
11
+ updateInputState: (updates: Partial<InputState>) => void;
12
+ }
13
+ export interface UseMenusReturn {
14
+ confirmationMessage: string | null;
15
+ setConfirmationMessage: React.Dispatch<React.SetStateAction<string | null>>;
16
+ currentSettings: Settings | undefined;
17
+ setCurrentSettings: React.Dispatch<React.SetStateAction<Settings | undefined>>;
18
+ showModelMenu: boolean;
19
+ setShowModelMenu: React.Dispatch<React.SetStateAction<boolean>>;
20
+ closeModelMenu: () => void;
21
+ handleModelSelect: (provider: string, modelId: string) => void;
22
+ handleModelCancel: () => void;
23
+ showStreamingMenu: boolean;
24
+ setShowStreamingMenu: React.Dispatch<React.SetStateAction<boolean>>;
25
+ closeStreamingMenu: () => void;
26
+ handleStreamingSelect: (streaming: boolean) => void;
27
+ handleStreamingCancel: () => void;
28
+ showConfigWizard: boolean;
29
+ setShowConfigWizard: React.Dispatch<React.SetStateAction<boolean>>;
30
+ closeConfigWizard: () => void;
31
+ handleConfigComplete: (newSettings: Settings) => void;
32
+ handleConfigCancel: () => void;
33
+ showTokenInput: boolean;
34
+ setShowTokenInput: React.Dispatch<React.SetStateAction<boolean>>;
35
+ closeTokenInput: () => void;
36
+ handleTokenSubmit: (token: string) => void;
37
+ handleTokenCancel: () => void;
38
+ showSyncMenu: boolean;
39
+ setShowSyncMenu: React.Dispatch<React.SetStateAction<boolean>>;
40
+ closeSyncMenu: () => void;
41
+ handleSyncSelect: (result: SyncMenuResult) => Promise<void>;
42
+ handleSyncCancel: () => void;
43
+ showUploadMenu: boolean;
44
+ setShowUploadMenu: React.Dispatch<React.SetStateAction<boolean>>;
45
+ closeUploadMenu: () => void;
46
+ handleUploadSelect: (result: UploadMenuResult) => void;
47
+ handleUploadCancel: () => void;
48
+ showResumeMenu: boolean;
49
+ setShowResumeMenu: React.Dispatch<React.SetStateAction<boolean>>;
50
+ closeResumeMenu: () => void;
51
+ handleResumeSelect: (conversationId: string) => void;
52
+ handleResumeCancel: () => void;
53
+ handleResumeDelete: (conversationId: string) => void;
54
+ resumeConversations: ConversationMeta[];
55
+ setResumeConversations: React.Dispatch<React.SetStateAction<ConversationMeta[]>>;
56
+ /** True when any sub-menu is open (used to suppress key handling) */
57
+ isAnyMenuOpen: boolean;
58
+ }
59
+ export declare function useMenus({ settings, onSubmit, onResumeConversation, onSettingsChange, updateInputState, }: UseMenusParams): UseMenusReturn;
60
+ //# sourceMappingURL=useMenus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenus.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useMenus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { useState, useCallback, useEffect } from 'react';
2
+ import { listConversations, deleteConversation } from '../../conversations/index.js';
3
+ import { Settings, Provider, saveSettings, debugLog as settingsDebugLog } from '../../settings.js';
4
+ import { isAuthenticated, setSelectedCloudProvider } from '../../auth.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Hook
7
+ // ---------------------------------------------------------------------------
8
+ export function useMenus({ settings, onSubmit, onResumeConversation, onSettingsChange, updateInputState, }) {
9
+ // ---- Confirmation message ----
10
+ const [confirmationMessage, setConfirmationMessage] = useState(null);
11
+ useEffect(() => {
12
+ if (confirmationMessage) {
13
+ const timer = setTimeout(() => {
14
+ setConfirmationMessage(null);
15
+ }, 2000);
16
+ return () => clearTimeout(timer);
17
+ }
18
+ }, [confirmationMessage]);
19
+ // ---- Settings ----
20
+ const [currentSettings, setCurrentSettings] = useState(settings);
21
+ useEffect(() => {
22
+ if (settings) {
23
+ setCurrentSettings(settings);
24
+ }
25
+ }, [settings]);
26
+ // ---- Model menu ----
27
+ const [showModelMenu, setShowModelMenu] = useState(false);
28
+ const closeModelMenu = useCallback(() => {
29
+ setShowModelMenu(false);
30
+ updateInputState({ lines: [''], cursorPos: 0 });
31
+ }, [updateInputState]);
32
+ const handleModelSelect = useCallback((provider, modelId) => {
33
+ if (!currentSettings) {
34
+ settingsDebugLog('[handleModelSelect] No currentSettings, aborting');
35
+ closeModelMenu();
36
+ return;
37
+ }
38
+ settingsDebugLog(`[handleModelSelect] Changing to provider=${provider}, model=${modelId}`);
39
+ settingsDebugLog(`[handleModelSelect] Before: provider=${currentSettings.provider}, isAuthenticated=${isAuthenticated()}`);
40
+ const updatedSettings = Settings.fromDict(currentSettings.toDict());
41
+ updatedSettings.provider = provider;
42
+ if (provider === Provider.ANTHROPIC || provider === 'anthropic') {
43
+ updatedSettings.anthropic.model = modelId;
44
+ }
45
+ else if (provider === Provider.OPENAI || provider === 'openai') {
46
+ updatedSettings.openai.model = modelId;
47
+ }
48
+ else if (provider === Provider.AZURE || provider === 'azure') {
49
+ updatedSettings.azure.deployment = modelId;
50
+ }
51
+ settingsDebugLog(`[handleModelSelect] Saving settings: provider=${updatedSettings.provider}`);
52
+ saveSettings(updatedSettings);
53
+ if (isAuthenticated()) {
54
+ settingsDebugLog(`[handleModelSelect] Cloud authenticated, calling setSelectedCloudProvider(${provider})`);
55
+ const cloudProviderSet = setSelectedCloudProvider(provider);
56
+ if (!cloudProviderSet) {
57
+ settingsDebugLog(`[handleModelSelect] WARNING: setSelectedCloudProvider returned false - provider ${provider} may not be available in cloud config`);
58
+ }
59
+ else {
60
+ settingsDebugLog(`[handleModelSelect] Cloud provider selection saved successfully`);
61
+ }
62
+ }
63
+ setCurrentSettings(updatedSettings);
64
+ const providerName = provider.charAt(0).toUpperCase() + provider.slice(1);
65
+ setConfirmationMessage(`Provider changed to ${providerName}, model: ${modelId}`);
66
+ closeModelMenu();
67
+ settingsDebugLog(`[handleModelSelect] Triggering reconnect via __CONFIG_SAVED__`);
68
+ setTimeout(() => {
69
+ onSubmit('__CONFIG_SAVED__');
70
+ }, 100);
71
+ }, [currentSettings, closeModelMenu, onSubmit]);
72
+ const handleModelCancel = useCallback(() => {
73
+ setConfirmationMessage('Model selection cancelled');
74
+ closeModelMenu();
75
+ }, [closeModelMenu]);
76
+ // ---- Streaming menu ----
77
+ const [showStreamingMenu, setShowStreamingMenu] = useState(false);
78
+ const closeStreamingMenu = useCallback(() => {
79
+ setShowStreamingMenu(false);
80
+ updateInputState({ lines: [''], cursorPos: 0 });
81
+ }, [updateInputState]);
82
+ const handleStreamingSelect = useCallback((streaming) => {
83
+ if (!currentSettings) {
84
+ closeStreamingMenu();
85
+ return;
86
+ }
87
+ const updatedSettings = Settings.fromDict({ ...currentSettings.toDict(), streaming });
88
+ saveSettings(updatedSettings);
89
+ setCurrentSettings(updatedSettings);
90
+ onSettingsChange?.(updatedSettings);
91
+ const statusText = streaming ? 'enabled' : 'disabled';
92
+ setConfirmationMessage(`Response streaming ${statusText}`);
93
+ closeStreamingMenu();
94
+ }, [currentSettings, closeStreamingMenu, onSettingsChange]);
95
+ const handleStreamingCancel = useCallback(() => {
96
+ setConfirmationMessage('Streaming selection cancelled');
97
+ closeStreamingMenu();
98
+ }, [closeStreamingMenu]);
99
+ // ---- Config wizard ----
100
+ const [showConfigWizard, setShowConfigWizard] = useState(false);
101
+ const closeConfigWizard = useCallback(() => {
102
+ setShowConfigWizard(false);
103
+ updateInputState({ lines: [''], cursorPos: 0 });
104
+ }, [updateInputState]);
105
+ const handleConfigComplete = useCallback((newSettings) => {
106
+ saveSettings(newSettings);
107
+ setCurrentSettings(newSettings);
108
+ setConfirmationMessage(`Configuration saved for ${newSettings.provider}`);
109
+ closeConfigWizard();
110
+ setTimeout(() => {
111
+ onSubmit('__CONFIG_SAVED__');
112
+ }, 100);
113
+ }, [closeConfigWizard, onSubmit]);
114
+ const handleConfigCancel = useCallback(() => {
115
+ setConfirmationMessage('Configuration cancelled');
116
+ closeConfigWizard();
117
+ }, [closeConfigWizard]);
118
+ // ---- Token input ----
119
+ const [showTokenInput, setShowTokenInput] = useState(false);
120
+ const closeTokenInput = useCallback(() => {
121
+ setShowTokenInput(false);
122
+ updateInputState({ lines: [''], cursorPos: 0 });
123
+ }, [updateInputState]);
124
+ const handleTokenSubmit = useCallback((token) => {
125
+ closeTokenInput();
126
+ onSubmit(`__TOKEN__:${token}`);
127
+ }, [closeTokenInput, onSubmit]);
128
+ const handleTokenCancel = useCallback(() => {
129
+ setConfirmationMessage('Token entry cancelled');
130
+ closeTokenInput();
131
+ }, [closeTokenInput]);
132
+ // ---- Sync menu ----
133
+ const [showSyncMenu, setShowSyncMenu] = useState(false);
134
+ const closeSyncMenu = useCallback(() => {
135
+ setShowSyncMenu(false);
136
+ updateInputState({ lines: [''], cursorPos: 0 });
137
+ }, [updateInputState]);
138
+ const handleSyncSelect = useCallback(async (result) => {
139
+ closeSyncMenu();
140
+ switch (result.action) {
141
+ case 'sync':
142
+ onSubmit(`__SYNC__:${JSON.stringify({
143
+ scope: result.scope ?? 'all',
144
+ force: result.force ?? false,
145
+ pathFilter: result.pathFilter,
146
+ workspaceUser: result.workspaceUser,
147
+ workspaceFolders: result.workspaceFolders,
148
+ orgId: result.orgId,
149
+ })}`);
150
+ break;
151
+ case 'preview':
152
+ onSubmit('__SYNC__:preview');
153
+ break;
154
+ case 'status':
155
+ onSubmit('__SYNC__:status');
156
+ break;
157
+ case 'resume':
158
+ onSubmit('__SYNC__:resume');
159
+ break;
160
+ case 'cancel':
161
+ break;
162
+ }
163
+ }, [closeSyncMenu, onSubmit]);
164
+ const handleSyncCancel = useCallback(() => {
165
+ setConfirmationMessage('Sync cancelled');
166
+ closeSyncMenu();
167
+ }, [closeSyncMenu]);
168
+ // ---- Upload menu ----
169
+ const [showUploadMenu, setShowUploadMenu] = useState(false);
170
+ const closeUploadMenu = useCallback(() => {
171
+ setShowUploadMenu(false);
172
+ updateInputState({ lines: [''], cursorPos: 0 });
173
+ }, [updateInputState]);
174
+ const handleUploadSelect = useCallback((result) => {
175
+ closeUploadMenu();
176
+ if (result.action === 'upload') {
177
+ onSubmit(`__UPLOAD__:${JSON.stringify({
178
+ scope: result.scope,
179
+ pathFilter: result.pathFilter,
180
+ workspaceUser: result.workspaceUser,
181
+ workspaceFolders: result.workspaceFolders,
182
+ orgId: result.orgId,
183
+ })}`);
184
+ }
185
+ }, [closeUploadMenu, onSubmit]);
186
+ const handleUploadCancel = useCallback(() => {
187
+ setConfirmationMessage('Upload cancelled');
188
+ closeUploadMenu();
189
+ }, [closeUploadMenu]);
190
+ // ---- Resume menu ----
191
+ const [showResumeMenu, setShowResumeMenu] = useState(false);
192
+ const [resumeConversations, setResumeConversations] = useState([]);
193
+ const closeResumeMenu = useCallback(() => {
194
+ setShowResumeMenu(false);
195
+ updateInputState({ lines: [''], cursorPos: 0 });
196
+ }, [updateInputState]);
197
+ const handleResumeSelect = useCallback((conversationId) => {
198
+ closeResumeMenu();
199
+ onResumeConversation?.(conversationId);
200
+ }, [closeResumeMenu, onResumeConversation]);
201
+ const handleResumeCancel = useCallback(() => {
202
+ setConfirmationMessage('Resume cancelled');
203
+ closeResumeMenu();
204
+ }, [closeResumeMenu]);
205
+ const handleResumeDelete = useCallback((conversationId) => {
206
+ const deleted = deleteConversation(conversationId);
207
+ if (deleted) {
208
+ setResumeConversations(listConversations());
209
+ setConfirmationMessage('Conversation deleted');
210
+ }
211
+ }, []);
212
+ // ---- Aggregate helper ----
213
+ const isAnyMenuOpen = showModelMenu ||
214
+ showStreamingMenu ||
215
+ showConfigWizard ||
216
+ showTokenInput ||
217
+ showSyncMenu ||
218
+ showUploadMenu ||
219
+ showResumeMenu;
220
+ return {
221
+ confirmationMessage,
222
+ setConfirmationMessage,
223
+ currentSettings,
224
+ setCurrentSettings,
225
+ showModelMenu,
226
+ setShowModelMenu,
227
+ closeModelMenu,
228
+ handleModelSelect,
229
+ handleModelCancel,
230
+ showStreamingMenu,
231
+ setShowStreamingMenu,
232
+ closeStreamingMenu,
233
+ handleStreamingSelect,
234
+ handleStreamingCancel,
235
+ showConfigWizard,
236
+ setShowConfigWizard,
237
+ closeConfigWizard,
238
+ handleConfigComplete,
239
+ handleConfigCancel,
240
+ showTokenInput,
241
+ setShowTokenInput,
242
+ closeTokenInput,
243
+ handleTokenSubmit,
244
+ handleTokenCancel,
245
+ showSyncMenu,
246
+ setShowSyncMenu,
247
+ closeSyncMenu,
248
+ handleSyncSelect,
249
+ handleSyncCancel,
250
+ showUploadMenu,
251
+ setShowUploadMenu,
252
+ closeUploadMenu,
253
+ handleUploadSelect,
254
+ handleUploadCancel,
255
+ showResumeMenu,
256
+ setShowResumeMenu,
257
+ closeResumeMenu,
258
+ handleResumeSelect,
259
+ handleResumeCancel,
260
+ handleResumeDelete,
261
+ resumeConversations,
262
+ setResumeConversations,
263
+ isAnyMenuOpen,
264
+ };
265
+ }
266
+ //# sourceMappingURL=useMenus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenus.js","sourceRoot":"","sources":["../../../src/components/hooks/useMenus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare const isPasteMarker: (line: string) => boolean;
2
+ export declare const parsePasteMarker: (line: string) => {
3
+ id: number;
4
+ lineCount: number;
5
+ } | null;
6
+ export declare const makePasteMarker: (id: number, lineCount: number) => string;
7
+ export interface UsePasteBlocksReturn {
8
+ pasteBlocksRef: React.MutableRefObject<Map<number, string[]>>;
9
+ pasteCounterRef: React.MutableRefObject<number>;
10
+ expandLines: (linesToExpand: string[]) => string[];
11
+ clearPasteBlocks: () => void;
12
+ }
13
+ export declare function usePasteBlocks(): UsePasteBlocksReturn;
14
+ //# sourceMappingURL=usePasteBlocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePasteBlocks.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/usePasteBlocks.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,YACc,CAAC;AAEzD,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM;;;QAG5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,EAAE,WAAW,MAAM,WACzB,CAAC;AAMrC,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACnD,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,cAAc,IAAI,oBAAoB,CAsBrD"}
@@ -0,0 +1,32 @@
1
+ import { useRef, useCallback } from 'react';
2
+ // ---------------------------------------------------------------------------
3
+ // Paste marker utilities for collapsed large pastes
4
+ // ---------------------------------------------------------------------------
5
+ const PASTE_MARKER_RE = /^\x01PASTE:(\d+):(\d+)\x01$/;
6
+ export const isPasteMarker = (line) => line.charCodeAt(0) === 1 && PASTE_MARKER_RE.test(line);
7
+ export const parsePasteMarker = (line) => {
8
+ const m = line.match(PASTE_MARKER_RE);
9
+ return m ? { id: parseInt(m[1], 10), lineCount: parseInt(m[2], 10) } : null;
10
+ };
11
+ export const makePasteMarker = (id, lineCount) => `\x01PASTE:${id}:${lineCount}\x01`;
12
+ export function usePasteBlocks() {
13
+ const pasteBlocksRef = useRef(new Map());
14
+ const pasteCounterRef = useRef(0);
15
+ // Expand paste markers back into real lines
16
+ const expandLines = useCallback((linesToExpand) => {
17
+ return linesToExpand.flatMap(line => {
18
+ const marker = parsePasteMarker(line);
19
+ if (marker) {
20
+ return pasteBlocksRef.current.get(marker.id) || [];
21
+ }
22
+ return [line];
23
+ });
24
+ }, []);
25
+ // Clear all paste block state
26
+ const clearPasteBlocks = useCallback(() => {
27
+ pasteBlocksRef.current.clear();
28
+ pasteCounterRef.current = 0;
29
+ }, []);
30
+ return { pasteBlocksRef, pasteCounterRef, expandLines, clearPasteBlocks };
31
+ }
32
+ //# sourceMappingURL=usePasteBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePasteBlocks.js","sourceRoot":"","sources":["../../../src/components/hooks/usePasteBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE5C,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAE9E,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAE,EAAE,CAC/D,aAAa,EAAE,IAAI,SAAS,MAAM,CAAC;AAarC,MAAM,UAAU,cAAc;IAC5B,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAElC,4CAA4C;IAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,aAAuB,EAAE,EAAE;QAC1D,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,eAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AAC5E,CAAC"}
package/dist/models.js CHANGED
@@ -12,10 +12,10 @@ export class ModelRegistry {
12
12
  */
13
13
  static ALL_MODELS = {
14
14
  // Anthropic Models
15
- 'claude-opus-4-5': {
16
- id: 'claude-opus-4-5',
17
- name: 'claude-opus-4-5',
18
- displayName: 'Claude Opus 4.5',
15
+ 'claude-opus-4-6': {
16
+ id: 'claude-opus-4-6',
17
+ name: 'claude-opus-4-6',
18
+ displayName: 'Claude Opus 4.6',
19
19
  category: 'large',
20
20
  icon: 'brain',
21
21
  supportsThinking: true,
package/dist/settings.js CHANGED
@@ -52,7 +52,7 @@ export class Settings {
52
52
  provider = Provider.ANTHROPIC;
53
53
  anthropic = {
54
54
  api_key: '',
55
- model: ModelRegistry.getDefaultModel('anthropic'), // claude-opus-4-5
55
+ model: ModelRegistry.getDefaultModel('anthropic'), // claude-opus-4-6
56
56
  };
57
57
  openai = {
58
58
  api_key: '',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntero/orca-cli",
3
- "version": "1.2.17-next.3",
3
+ "version": "1.2.17-next.4",
4
4
  "description": "LLM-powered deployment troubleshooting assistant for Orca",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,11 +37,11 @@
37
37
  "@types/tar": "^6.1.13",
38
38
  "better-sqlite3": "^12.6.2",
39
39
  "chalk": "^5.6.2",
40
- "ink": "^5.2.1",
40
+ "ink": "^6.6.0",
41
41
  "ink-spinner": "^5.0.0",
42
42
  "ink-text-input": "^6.0.0",
43
43
  "openai": "^6.16.0",
44
- "react": "^18.3.1",
44
+ "react": "^19.2.4",
45
45
  "semver": "^7.7.3",
46
46
  "tar": "^7.5.6",
47
47
  "update-notifier": "^7.3.1"
@@ -49,7 +49,7 @@
49
49
  "devDependencies": {
50
50
  "@types/better-sqlite3": "^7.6.12",
51
51
  "@types/node": "^22.10.5",
52
- "@types/react": "^18.3.27",
52
+ "@types/react": "^19.1.2",
53
53
  "@types/semver": "^7.7.1",
54
54
  "@types/update-notifier": "^6.0.8",
55
55
  "tsx": "^4.21.0",