@ottocode/web-sdk 0.1.298 → 0.1.300
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/dist/components/agents/AgentEditor.d.ts +9 -0
- package/dist/components/agents/AgentEditor.d.ts.map +1 -0
- package/dist/components/agents/AgentList.d.ts +10 -0
- package/dist/components/agents/AgentList.d.ts.map +1 -0
- package/dist/components/agents/AgentProviderModelFields.d.ts +10 -0
- package/dist/components/agents/AgentProviderModelFields.d.ts.map +1 -0
- package/dist/components/agents/AgentToolList.d.ts +14 -0
- package/dist/components/agents/AgentToolList.d.ts.map +1 -0
- package/dist/components/agents/AgentsManagerModal.d.ts +2 -0
- package/dist/components/agents/AgentsManagerModal.d.ts.map +1 -0
- package/dist/components/agents/AgentsSidebar.d.ts +3 -0
- package/dist/components/agents/AgentsSidebar.d.ts.map +1 -0
- package/dist/components/agents/AgentsSidebarToggle.d.ts +2 -0
- package/dist/components/agents/AgentsSidebarToggle.d.ts.map +1 -0
- package/dist/components/agents/CreateAgentModal.d.ts +8 -0
- package/dist/components/agents/CreateAgentModal.d.ts.map +1 -0
- package/dist/components/agents/agentConstants.d.ts +50 -0
- package/dist/components/agents/agentConstants.d.ts.map +1 -0
- package/dist/components/agents/index.d.ts +10 -0
- package/dist/components/agents/index.d.ts.map +1 -0
- package/dist/components/chat/UnifiedModelSelector.d.ts +2 -1
- package/dist/components/chat/UnifiedModelSelector.d.ts.map +1 -1
- package/dist/components/common/UsageModal.d.ts.map +1 -1
- package/dist/components/common/UsageRing.d.ts.map +1 -1
- package/dist/components/file-browser/FileViewerPanel.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3355 -1313
- package/dist/components/index.js.map +26 -17
- package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
- package/dist/components/ui/Modal.d.ts +1 -1
- package/dist/components/ui/Modal.d.ts.map +1 -1
- package/dist/components/workspace/ToolPreviewPanel.d.ts.map +1 -1
- package/dist/components/workspace/ViewerTabs.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +344 -20
- package/dist/hooks/index.js.map +10 -8
- package/dist/hooks/useAgents.d.ts +156 -0
- package/dist/hooks/useAgents.d.ts.map +1 -0
- package/dist/hooks/useConfig.d.ts.map +1 -1
- package/dist/hooks/useProviderUsage.d.ts.map +1 -1
- package/dist/hooks/useSessionStream.d.ts.map +1 -1
- package/dist/index.js +3406 -1356
- package/dist/index.js.map +26 -17
- package/dist/lib/api-client/config.d.ts +14 -0
- package/dist/lib/api-client/config.d.ts.map +1 -1
- package/dist/lib/api-client/index.d.ts +5 -0
- package/dist/lib/api-client/index.d.ts.map +1 -1
- package/dist/lib/index.js +48 -2
- package/dist/lib/index.js.map +4 -4
- package/dist/stores/agentsStore.d.ts +28 -0
- package/dist/stores/agentsStore.d.ts.map +1 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +74 -10
- package/dist/stores/index.js.map +5 -4
- package/dist/stores/viewerTabsStore.d.ts +4 -3
- package/dist/stores/viewerTabsStore.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAS/C,UAAU,qBAAqB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAS/C,UAAU,qBAAqB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;AAkBD,eAAO,MAAM,gBAAgB,6DAsV5B,CAAC"}
|
|
@@ -7,7 +7,7 @@ interface ModalProps {
|
|
|
7
7
|
showCloseButton?: boolean;
|
|
8
8
|
closeOnBackdropClick?: boolean;
|
|
9
9
|
closeOnEscape?: boolean;
|
|
10
|
-
maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl';
|
|
10
|
+
maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl' | '5xl';
|
|
11
11
|
position?: 'fixed' | 'absolute';
|
|
12
12
|
}
|
|
13
13
|
export declare function Modal({ isOpen, onClose, title, children, showCloseButton, closeOnBackdropClick, closeOnEscape, maxWidth, position, }: ModalProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,UAAU,UAAU;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,UAAU,UAAU;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChC;AAYD,wBAAgB,KAAK,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,eAAsB,EACtB,oBAA2B,EAC3B,aAAoB,EACpB,QAAe,EACf,QAAkB,GAClB,EAAE,UAAU,+BA4GZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolPreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/ToolPreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,SAAS,EAEd,MAAM,8BAA8B,CAAC;AAUtC,UAAU,qBAAqB;IAC9B,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CAClD;AAOD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"ToolPreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/ToolPreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,SAAS,EAEd,MAAM,8BAA8B,CAAC;AAUtC,UAAU,qBAAqB;IAC9B,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CAClD;AAOD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAukBD,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,MAAM,GAChB,gBAAgB,GAAG,IAAI,CAsGzB;AAwFD,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,EAAE,qBAAqB,+BAgR9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewerTabs.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/ViewerTabs.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ViewerTabs.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/ViewerTabs.tsx"],"names":[],"mappings":"AA2PA,eAAO,MAAM,UAAU,8CA+LrB,CAAC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export * from './useProviderUsage';
|
|
|
26
26
|
export * from './useFileBrowser';
|
|
27
27
|
export * from './useMCP';
|
|
28
28
|
export * from './useSkills';
|
|
29
|
+
export * from './useAgents';
|
|
29
30
|
export * from './useContainerWidth';
|
|
30
31
|
export * from './useVoiceInput';
|
|
31
32
|
export * from './useDictationModels';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -560,6 +560,11 @@ import {
|
|
|
560
560
|
getConfig as apiGetConfig,
|
|
561
561
|
getProviderModels as apiGetProviderModels,
|
|
562
562
|
getAllModels as apiGetAllModels,
|
|
563
|
+
getAgentDetails as apiGetAgentDetails,
|
|
564
|
+
getAgent as apiGetAgent,
|
|
565
|
+
getConfigTools as apiGetConfigTools,
|
|
566
|
+
upsertAgent as apiUpsertAgent,
|
|
567
|
+
deleteAgent as apiDeleteAgent,
|
|
563
568
|
discoverProviderModels as apiDiscoverProviderModels,
|
|
564
569
|
updateDefaults as apiUpdateDefaults,
|
|
565
570
|
updateProviderSettings as apiUpdateProviderSettings,
|
|
@@ -572,6 +577,42 @@ var configMixin = {
|
|
|
572
577
|
throw new Error(extractErrorMessage(response.error));
|
|
573
578
|
return response.data;
|
|
574
579
|
},
|
|
580
|
+
async getAgentDetails() {
|
|
581
|
+
const response = await apiGetAgentDetails();
|
|
582
|
+
if (response.error)
|
|
583
|
+
throw new Error(extractErrorMessage(response.error));
|
|
584
|
+
return response.data;
|
|
585
|
+
},
|
|
586
|
+
async getAgent(name) {
|
|
587
|
+
const response = await apiGetAgent({ path: { agent: name } });
|
|
588
|
+
if (response.error)
|
|
589
|
+
throw new Error(extractErrorMessage(response.error));
|
|
590
|
+
return response.data;
|
|
591
|
+
},
|
|
592
|
+
async getConfigTools() {
|
|
593
|
+
const response = await apiGetConfigTools();
|
|
594
|
+
if (response.error)
|
|
595
|
+
throw new Error(extractErrorMessage(response.error));
|
|
596
|
+
return response.data;
|
|
597
|
+
},
|
|
598
|
+
async updateAgent(name, input) {
|
|
599
|
+
const response = await apiUpsertAgent({
|
|
600
|
+
path: { agent: name },
|
|
601
|
+
body: input
|
|
602
|
+
});
|
|
603
|
+
if (response.error)
|
|
604
|
+
throw new Error(extractErrorMessage(response.error));
|
|
605
|
+
return response.data;
|
|
606
|
+
},
|
|
607
|
+
async deleteAgent(name, scope = "local") {
|
|
608
|
+
const response = await apiDeleteAgent({
|
|
609
|
+
path: { agent: name },
|
|
610
|
+
query: { scope }
|
|
611
|
+
});
|
|
612
|
+
if (response.error)
|
|
613
|
+
throw new Error(extractErrorMessage(response.error));
|
|
614
|
+
return response.data;
|
|
615
|
+
},
|
|
575
616
|
async getModels(providerId) {
|
|
576
617
|
const response = await apiGetProviderModels({
|
|
577
618
|
path: { provider: providerId }
|
|
@@ -613,7 +654,7 @@ var configMixin = {
|
|
|
613
654
|
},
|
|
614
655
|
async updateDefaults(data) {
|
|
615
656
|
const response = await apiUpdateDefaults({
|
|
616
|
-
body: data
|
|
657
|
+
body: { scope: "global", ...data }
|
|
617
658
|
});
|
|
618
659
|
if (response.error)
|
|
619
660
|
throw new Error(extractErrorMessage(response.error));
|
|
@@ -1250,6 +1291,11 @@ class ApiClient {
|
|
|
1250
1291
|
checkoutBranch = gitMixin.checkoutBranch;
|
|
1251
1292
|
createGitBranch = gitMixin.createGitBranch;
|
|
1252
1293
|
getConfig = configMixin.getConfig;
|
|
1294
|
+
getAgentDetails = configMixin.getAgentDetails;
|
|
1295
|
+
getAgent = configMixin.getAgent;
|
|
1296
|
+
getConfigTools = configMixin.getConfigTools;
|
|
1297
|
+
updateAgent = configMixin.updateAgent;
|
|
1298
|
+
deleteAgent = configMixin.deleteAgent;
|
|
1253
1299
|
getModels = configMixin.getModels;
|
|
1254
1300
|
getAllModels = configMixin.getAllModels;
|
|
1255
1301
|
discoverProviderModels = configMixin.discoverProviderModels;
|
|
@@ -1535,6 +1581,9 @@ function upsertTab(tabs, tab) {
|
|
|
1535
1581
|
next[existingIndex] = tab;
|
|
1536
1582
|
return next;
|
|
1537
1583
|
}
|
|
1584
|
+
function isPatchPreviewTool(toolName) {
|
|
1585
|
+
return toolName === "apply_patch" || toolName === "edit" || toolName === "multiedit";
|
|
1586
|
+
}
|
|
1538
1587
|
function isSamePatchCall(existing, preview) {
|
|
1539
1588
|
if (!existing)
|
|
1540
1589
|
return false;
|
|
@@ -1707,8 +1756,8 @@ var useViewerTabsStore = create((set) => ({
|
|
|
1707
1756
|
const targetPath = existingFile?.path ?? preview.path;
|
|
1708
1757
|
const existing = state.tabs.find((tab) => tab.type === "tool-preview" && viewerPathsMatch(tab.path, preview.path));
|
|
1709
1758
|
const tabs = state.tabs.filter((tab) => !((tab.type === "tool-preview" || tab.type === "file") && tab.id !== targetId && (viewerPathsMatch(tab.path, preview.path) || Boolean(preview.callId && "toolName" in tab && tab.callId === preview.callId))));
|
|
1710
|
-
if (preview.toolName
|
|
1711
|
-
const existingPatchPreview = existingFile?.patchPreview ?? (existing
|
|
1759
|
+
if (isPatchPreviewTool(preview.toolName)) {
|
|
1760
|
+
const existingPatchPreview = existingFile?.patchPreview ?? (existing && isPatchPreviewTool(existing.toolName) ? existing : undefined);
|
|
1712
1761
|
const samePatchCall = isSamePatchCall(existingPatchPreview, preview);
|
|
1713
1762
|
const baseContent = preview.baseContent ?? (samePatchCall ? existingPatchPreview?.baseContent : existingPatchPreview?.resultContent ?? existingPatchPreview?.baseContent);
|
|
1714
1763
|
const changedLines = samePatchCall ? preview.changedLines ?? existingPatchPreview?.changedLines : mergeChangedLines(existingPatchPreview?.changedLines, preview.changedLines);
|
|
@@ -1729,7 +1778,7 @@ var useViewerTabsStore = create((set) => ({
|
|
|
1729
1778
|
writePreview: undefined,
|
|
1730
1779
|
patchPreview: {
|
|
1731
1780
|
path: targetPath,
|
|
1732
|
-
toolName:
|
|
1781
|
+
toolName: preview.toolName,
|
|
1733
1782
|
callId: preview.callId ?? existingPatchPreview?.callId,
|
|
1734
1783
|
baseContent,
|
|
1735
1784
|
patch: preview.patch ?? existingPatchPreview?.patch,
|
|
@@ -3170,7 +3219,13 @@ ${argPatch.slice(-STREAMING_PATCH_PREVIEW_TAIL_CHARS)}`;
|
|
|
3170
3219
|
${bestEffortUnescapeJsonString(rawTail)}`;
|
|
3171
3220
|
};
|
|
3172
3221
|
const getResultRecord = (payload) => payload?.result && typeof payload.result === "object" && !Array.isArray(payload.result) ? payload.result : null;
|
|
3173
|
-
const getArtifactRecord = (payload) =>
|
|
3222
|
+
const getArtifactRecord = (payload) => {
|
|
3223
|
+
if (payload?.artifact && typeof payload.artifact === "object" && !Array.isArray(payload.artifact)) {
|
|
3224
|
+
return payload.artifact;
|
|
3225
|
+
}
|
|
3226
|
+
const result = getResultRecord(payload);
|
|
3227
|
+
return result?.artifact && typeof result.artifact === "object" && !Array.isArray(result.artifact) ? result.artifact : null;
|
|
3228
|
+
};
|
|
3174
3229
|
const extractErrorMessage2 = (payload) => {
|
|
3175
3230
|
const result = getResultRecord(payload);
|
|
3176
3231
|
if (typeof payload?.error === "string")
|
|
@@ -3307,6 +3362,56 @@ ${bestEffortUnescapeJsonString(rawTail)}`;
|
|
|
3307
3362
|
}
|
|
3308
3363
|
return lines.size > 0 ? [...lines] : undefined;
|
|
3309
3364
|
};
|
|
3365
|
+
const getPatchTextLines = (value) => {
|
|
3366
|
+
if (value.length === 0)
|
|
3367
|
+
return [];
|
|
3368
|
+
const lines = value.split(`
|
|
3369
|
+
`);
|
|
3370
|
+
if (value.endsWith(`
|
|
3371
|
+
`))
|
|
3372
|
+
lines.pop();
|
|
3373
|
+
return lines;
|
|
3374
|
+
};
|
|
3375
|
+
const appendStringEditPatchHunk = (lines, edit) => {
|
|
3376
|
+
lines.push("@@");
|
|
3377
|
+
for (const line of getPatchTextLines(edit.oldString)) {
|
|
3378
|
+
lines.push(`-${line}`);
|
|
3379
|
+
}
|
|
3380
|
+
for (const line of getPatchTextLines(edit.newString)) {
|
|
3381
|
+
lines.push(`+${line}`);
|
|
3382
|
+
}
|
|
3383
|
+
};
|
|
3384
|
+
const buildStringEditPatchPreview = (path, edits) => {
|
|
3385
|
+
const validEdits = edits.filter((edit) => edit.oldString.length > 0 || edit.newString.length > 0);
|
|
3386
|
+
if (validEdits.length === 0)
|
|
3387
|
+
return;
|
|
3388
|
+
const lines = ["*** Begin Patch", `*** Update File: ${path}`];
|
|
3389
|
+
for (const edit of validEdits)
|
|
3390
|
+
appendStringEditPatchHunk(lines, edit);
|
|
3391
|
+
lines.push("*** End Patch", "");
|
|
3392
|
+
return lines.join(`
|
|
3393
|
+
`);
|
|
3394
|
+
};
|
|
3395
|
+
const getMultiEditPreviewEdits = (args) => {
|
|
3396
|
+
const edits = Array.isArray(args?.edits) ? args.edits : [];
|
|
3397
|
+
return edits.flatMap((edit) => {
|
|
3398
|
+
if (!edit || typeof edit !== "object" || Array.isArray(edit))
|
|
3399
|
+
return [];
|
|
3400
|
+
const record = edit;
|
|
3401
|
+
return typeof record.oldString === "string" && typeof record.newString === "string" ? [{ oldString: record.oldString, newString: record.newString }] : [];
|
|
3402
|
+
});
|
|
3403
|
+
};
|
|
3404
|
+
const getEditPreviewPatch = (toolName, path, args, buffer, artifact) => {
|
|
3405
|
+
if (typeof artifact?.patch === "string")
|
|
3406
|
+
return artifact.patch;
|
|
3407
|
+
if (toolName === "edit") {
|
|
3408
|
+
const oldString = getStringArg(args, buffer, "oldString");
|
|
3409
|
+
const newString = getStringArg(args, buffer, "newString");
|
|
3410
|
+
return oldString !== undefined && newString !== undefined ? buildStringEditPatchPreview(path, [{ oldString, newString }]) : undefined;
|
|
3411
|
+
}
|
|
3412
|
+
const edits = getMultiEditPreviewEdits(args);
|
|
3413
|
+
return buildStringEditPatchPreview(path, edits);
|
|
3414
|
+
};
|
|
3310
3415
|
const handleReadToolActivity = (eventType, payload, delta) => {
|
|
3311
3416
|
const name = getToolEventName(payload);
|
|
3312
3417
|
if (name !== "read")
|
|
@@ -3441,6 +3546,51 @@ ${bestEffortUnescapeJsonString(rawTail)}`;
|
|
|
3441
3546
|
});
|
|
3442
3547
|
}
|
|
3443
3548
|
};
|
|
3549
|
+
const handleEditToolActivity = (eventType, payload, delta) => {
|
|
3550
|
+
const name = getToolEventName(payload);
|
|
3551
|
+
if (name !== "edit" && name !== "multiedit")
|
|
3552
|
+
return;
|
|
3553
|
+
const args = getToolArgsForViewer(payload, delta);
|
|
3554
|
+
const buffer = getBufferedToolInput(payload);
|
|
3555
|
+
const artifact = getArtifactRecord(payload);
|
|
3556
|
+
const result = getResultRecord(payload);
|
|
3557
|
+
const path = (typeof result?.path === "string" ? result.path : undefined) ?? getStringArg(args, buffer, "path", true);
|
|
3558
|
+
if (!path)
|
|
3559
|
+
return;
|
|
3560
|
+
const failed = result?.ok === false || eventType === "error";
|
|
3561
|
+
const status = failed ? "error" : eventType === "tool.result" ? "success" : "streaming";
|
|
3562
|
+
const callId = getToolEventCallId(payload) ?? undefined;
|
|
3563
|
+
const patch = getEditPreviewPatch(name, path, args, buffer, artifact);
|
|
3564
|
+
if (status === "success")
|
|
3565
|
+
invalidateFileContentCache(path);
|
|
3566
|
+
if (!patch)
|
|
3567
|
+
return;
|
|
3568
|
+
const previewKey = callId ?? `${name}:${path}`;
|
|
3569
|
+
const lineSignature = status === "streaming" ? getCompletedPatchChangeLineSignature(patch) : undefined;
|
|
3570
|
+
if (status === "streaming") {
|
|
3571
|
+
const last = toolPreviewEmitRef.current.get(previewKey);
|
|
3572
|
+
if (last?.lineSignature === lineSignature)
|
|
3573
|
+
return;
|
|
3574
|
+
}
|
|
3575
|
+
const viewerStore = useViewerTabsStore.getState();
|
|
3576
|
+
if (!viewerStore.followToolActivity)
|
|
3577
|
+
return;
|
|
3578
|
+
viewerStore.openToolPreviewTab({
|
|
3579
|
+
path,
|
|
3580
|
+
toolName: name,
|
|
3581
|
+
callId,
|
|
3582
|
+
patch,
|
|
3583
|
+
status,
|
|
3584
|
+
error: extractErrorMessage2(payload)
|
|
3585
|
+
});
|
|
3586
|
+
if (status === "streaming") {
|
|
3587
|
+
toolPreviewEmitRef.current.set(previewKey, {
|
|
3588
|
+
emittedAt: Date.now(),
|
|
3589
|
+
contentLength: buffer.length,
|
|
3590
|
+
lineSignature
|
|
3591
|
+
});
|
|
3592
|
+
}
|
|
3593
|
+
};
|
|
3444
3594
|
const handleSimulatorToolActivity = (eventType, payload) => {
|
|
3445
3595
|
if (eventType !== "tool.result")
|
|
3446
3596
|
return;
|
|
@@ -3471,6 +3621,9 @@ ${bestEffortUnescapeJsonString(rawTail)}`;
|
|
|
3471
3621
|
handleReadToolActivity(eventType, payload, delta);
|
|
3472
3622
|
if (name === "write")
|
|
3473
3623
|
handleWriteToolActivity(eventType, payload, delta);
|
|
3624
|
+
if (name === "edit" || name === "multiedit") {
|
|
3625
|
+
handleEditToolActivity(eventType, payload, delta);
|
|
3626
|
+
}
|
|
3474
3627
|
if (name === "apply_patch") {
|
|
3475
3628
|
handleApplyPatchToolActivity(eventType, payload, delta);
|
|
3476
3629
|
}
|
|
@@ -6787,7 +6940,7 @@ function useProviderUsage(provider, authType) {
|
|
|
6787
6940
|
const isModalOpen = useUsageStore((s) => s.isModalOpen);
|
|
6788
6941
|
const modalProvider = useUsageStore((s) => s.modalProvider);
|
|
6789
6942
|
const usage = useUsageStore((s) => provider ? s.usage[provider] : undefined);
|
|
6790
|
-
const isOAuthProvider = authType === "oauth" && (provider === "anthropic" || provider === "openai");
|
|
6943
|
+
const isOAuthProvider = authType === "oauth" && (provider === "anthropic" || provider === "openai" || provider === "xai");
|
|
6791
6944
|
const fetchUsage = useCallback10(async (force = false) => {
|
|
6792
6945
|
if (!provider || !isOAuthProvider)
|
|
6793
6946
|
return;
|
|
@@ -7141,11 +7294,175 @@ function useSkillFileContent(name, filePath) {
|
|
|
7141
7294
|
enabled: !!name && !!filePath
|
|
7142
7295
|
});
|
|
7143
7296
|
}
|
|
7297
|
+
// src/hooks/useAgents.ts
|
|
7298
|
+
import { useEffect as useEffect18 } from "react";
|
|
7299
|
+
import { useMutation as useMutation10, useQuery as useQuery14, useQueryClient as useQueryClient13 } from "@tanstack/react-query";
|
|
7300
|
+
|
|
7301
|
+
// src/stores/agentsStore.ts
|
|
7302
|
+
import { create as create22 } from "zustand";
|
|
7303
|
+
function collapseOtherRightPanels() {
|
|
7304
|
+
useGitStore.getState().collapseSidebar();
|
|
7305
|
+
useSessionFilesStore.getState().collapseSidebar();
|
|
7306
|
+
useResearchStore.getState().collapseSidebar();
|
|
7307
|
+
useSettingsStore.getState().collapseSidebar();
|
|
7308
|
+
useTunnelStore.getState().collapseSidebar();
|
|
7309
|
+
useFileBrowserStore.getState().collapseSidebar();
|
|
7310
|
+
useMCPStore.getState().collapseSidebar();
|
|
7311
|
+
useSkillsStore.getState().collapseSidebar();
|
|
7312
|
+
}
|
|
7313
|
+
var useAgentsStore = create22((set) => ({
|
|
7314
|
+
isExpanded: false,
|
|
7315
|
+
isManagerOpen: false,
|
|
7316
|
+
managerMode: "library",
|
|
7317
|
+
editorPage: "overview",
|
|
7318
|
+
agents: [],
|
|
7319
|
+
defaultAgent: null,
|
|
7320
|
+
selectedAgent: null,
|
|
7321
|
+
isCreateModalOpen: false,
|
|
7322
|
+
setManagerMode: (mode) => set({ managerMode: mode }),
|
|
7323
|
+
openManager: () => {
|
|
7324
|
+
collapseOtherRightPanels();
|
|
7325
|
+
set({ isManagerOpen: true, isExpanded: true, managerMode: "library" });
|
|
7326
|
+
},
|
|
7327
|
+
closeManager: () => set({
|
|
7328
|
+
isManagerOpen: false,
|
|
7329
|
+
isExpanded: false,
|
|
7330
|
+
isCreateModalOpen: false,
|
|
7331
|
+
managerMode: "library",
|
|
7332
|
+
editorPage: "overview"
|
|
7333
|
+
}),
|
|
7334
|
+
toggleManager: () => {
|
|
7335
|
+
const open = useAgentsStore.getState().isManagerOpen;
|
|
7336
|
+
if (open) {
|
|
7337
|
+
useAgentsStore.getState().closeManager();
|
|
7338
|
+
} else {
|
|
7339
|
+
useAgentsStore.getState().openManager();
|
|
7340
|
+
}
|
|
7341
|
+
},
|
|
7342
|
+
setAgents: (agents, defaultAgent) => set((state) => ({
|
|
7343
|
+
agents,
|
|
7344
|
+
defaultAgent,
|
|
7345
|
+
selectedAgent: state.selectedAgent && agents.some((a) => a.name === state.selectedAgent) ? state.selectedAgent : agents.find((a) => a.name === defaultAgent)?.name ?? agents[0]?.name ?? null
|
|
7346
|
+
})),
|
|
7347
|
+
selectAgent: (agent) => set({ selectedAgent: agent }),
|
|
7348
|
+
backToList: () => set({ selectedAgent: null, editorPage: "overview" }),
|
|
7349
|
+
openAgentInManager: (agent) => set({
|
|
7350
|
+
isManagerOpen: true,
|
|
7351
|
+
isExpanded: true,
|
|
7352
|
+
managerMode: "workspace",
|
|
7353
|
+
selectedAgent: agent,
|
|
7354
|
+
editorPage: "overview",
|
|
7355
|
+
isCreateModalOpen: false
|
|
7356
|
+
}),
|
|
7357
|
+
setEditorPage: (page) => set({ editorPage: page }),
|
|
7358
|
+
openCreateModal: () => set({ isManagerOpen: true, isExpanded: true, isCreateModalOpen: true }),
|
|
7359
|
+
closeCreateModal: () => set({ isCreateModalOpen: false })
|
|
7360
|
+
}));
|
|
7361
|
+
|
|
7362
|
+
// src/hooks/useAgents.ts
|
|
7363
|
+
function useAgentDetails(options = {}) {
|
|
7364
|
+
const managerOpen = useAgentsStore((s) => s.isManagerOpen);
|
|
7365
|
+
const createOpen = useAgentsStore((s) => s.isCreateModalOpen);
|
|
7366
|
+
const enabled = options.enabled ?? (managerOpen || createOpen);
|
|
7367
|
+
const setAgents = useAgentsStore((s) => s.setAgents);
|
|
7368
|
+
const selectedAgent = useAgentsStore((s) => s.selectedAgent);
|
|
7369
|
+
const selectAgent = useAgentsStore((s) => s.selectAgent);
|
|
7370
|
+
const query = useQuery14({
|
|
7371
|
+
queryKey: ["config", "agents"],
|
|
7372
|
+
queryFn: () => apiClient.getAgentDetails(),
|
|
7373
|
+
enabled,
|
|
7374
|
+
staleTime: 15000
|
|
7375
|
+
});
|
|
7376
|
+
useEffect18(() => {
|
|
7377
|
+
if (!query.data)
|
|
7378
|
+
return;
|
|
7379
|
+
setAgents(query.data.agents, query.data.default);
|
|
7380
|
+
if (!selectedAgent && query.data.agents.length > 0) {
|
|
7381
|
+
const defaultAgent = query.data.agents.find((agent) => agent.name === query.data.default);
|
|
7382
|
+
selectAgent(defaultAgent?.name ?? query.data.agents[0].name);
|
|
7383
|
+
}
|
|
7384
|
+
}, [query.data, selectAgent, selectedAgent, setAgents]);
|
|
7385
|
+
return query;
|
|
7386
|
+
}
|
|
7387
|
+
function useAgent(agentName) {
|
|
7388
|
+
return useQuery14({
|
|
7389
|
+
queryKey: ["config", "agents", agentName],
|
|
7390
|
+
queryFn: async () => {
|
|
7391
|
+
if (!agentName)
|
|
7392
|
+
return null;
|
|
7393
|
+
return apiClient.getAgent(agentName);
|
|
7394
|
+
},
|
|
7395
|
+
enabled: Boolean(agentName),
|
|
7396
|
+
staleTime: 15000
|
|
7397
|
+
});
|
|
7398
|
+
}
|
|
7399
|
+
function useConfigTools(options = {}) {
|
|
7400
|
+
const managerOpen = useAgentsStore((s) => s.isManagerOpen);
|
|
7401
|
+
const createOpen = useAgentsStore((s) => s.isCreateModalOpen);
|
|
7402
|
+
const enabled = options.enabled ?? (managerOpen || createOpen);
|
|
7403
|
+
return useQuery14({
|
|
7404
|
+
queryKey: ["config", "tools"],
|
|
7405
|
+
queryFn: () => apiClient.getConfigTools(),
|
|
7406
|
+
enabled,
|
|
7407
|
+
staleTime: 30000
|
|
7408
|
+
});
|
|
7409
|
+
}
|
|
7410
|
+
function useUpdateAgent() {
|
|
7411
|
+
const queryClient = useQueryClient13();
|
|
7412
|
+
return useMutation10({
|
|
7413
|
+
mutationFn: ({ name, input }) => apiClient.updateAgent(name, input),
|
|
7414
|
+
onSuccess: (data, variables) => {
|
|
7415
|
+
queryClient.setQueryData(["config", "agents", variables.name], data);
|
|
7416
|
+
queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
|
|
7417
|
+
}
|
|
7418
|
+
});
|
|
7419
|
+
}
|
|
7420
|
+
function useDeleteAgent() {
|
|
7421
|
+
const queryClient = useQueryClient13();
|
|
7422
|
+
const setAgents = useAgentsStore((s) => s.setAgents);
|
|
7423
|
+
const selectAgent = useAgentsStore((s) => s.selectAgent);
|
|
7424
|
+
return useMutation10({
|
|
7425
|
+
mutationFn: ({
|
|
7426
|
+
name,
|
|
7427
|
+
scope = "local"
|
|
7428
|
+
}) => apiClient.deleteAgent(name, scope),
|
|
7429
|
+
onSuccess: async (_data, variables) => {
|
|
7430
|
+
await queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
|
|
7431
|
+
const refreshed = await queryClient.fetchQuery({
|
|
7432
|
+
queryKey: ["config", "agents"],
|
|
7433
|
+
queryFn: () => apiClient.getAgentDetails()
|
|
7434
|
+
});
|
|
7435
|
+
setAgents(refreshed.agents, refreshed.default);
|
|
7436
|
+
if (variables.name === useAgentsStore.getState().selectedAgent) {
|
|
7437
|
+
const next = refreshed.agents.find((a) => a.name === refreshed.default)?.name ?? refreshed.agents[0]?.name ?? null;
|
|
7438
|
+
selectAgent(next);
|
|
7439
|
+
}
|
|
7440
|
+
}
|
|
7441
|
+
});
|
|
7442
|
+
}
|
|
7443
|
+
function useSetDefaultAgent() {
|
|
7444
|
+
const queryClient = useQueryClient13();
|
|
7445
|
+
return useMutation10({
|
|
7446
|
+
mutationFn: (name) => apiClient.updateDefaults({ agent: name, scope: "global" }),
|
|
7447
|
+
onSuccess: () => {
|
|
7448
|
+
queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
|
|
7449
|
+
queryClient.invalidateQueries({ queryKey: ["config"] });
|
|
7450
|
+
}
|
|
7451
|
+
});
|
|
7452
|
+
}
|
|
7453
|
+
function getAgentToolCount(agent) {
|
|
7454
|
+
if (!agent)
|
|
7455
|
+
return 0;
|
|
7456
|
+
return Array.from(new Set([
|
|
7457
|
+
...agent.toolConfig.firstClass ?? [],
|
|
7458
|
+
...agent.toolConfig.loadable ?? []
|
|
7459
|
+
])).length;
|
|
7460
|
+
}
|
|
7144
7461
|
// src/hooks/useContainerWidth.ts
|
|
7145
|
-
import { useEffect as
|
|
7462
|
+
import { useEffect as useEffect19, useState as useState6 } from "react";
|
|
7146
7463
|
function useContainerWidth(ref) {
|
|
7147
7464
|
const [width, setWidth] = useState6(0);
|
|
7148
|
-
|
|
7465
|
+
useEffect19(() => {
|
|
7149
7466
|
const el = ref.current;
|
|
7150
7467
|
if (!el)
|
|
7151
7468
|
return;
|
|
@@ -7158,7 +7475,7 @@ function useContainerWidth(ref) {
|
|
|
7158
7475
|
return width;
|
|
7159
7476
|
}
|
|
7160
7477
|
// src/hooks/useVoiceInput.ts
|
|
7161
|
-
import { useCallback as useCallback12, useEffect as
|
|
7478
|
+
import { useCallback as useCallback12, useEffect as useEffect20, useRef as useRef9, useState as useState7 } from "react";
|
|
7162
7479
|
var TARGET_SAMPLE_RATE = 16000;
|
|
7163
7480
|
var PCM_FRAME_BYTES = 3200;
|
|
7164
7481
|
function getAudioContextConstructor() {
|
|
@@ -7230,7 +7547,7 @@ function useVoiceInput({
|
|
|
7230
7547
|
const onTranscriptRef = useRef9(onTranscript);
|
|
7231
7548
|
const onErrorRef = useRef9(onError);
|
|
7232
7549
|
const onNeedsInstallRef = useRef9(onNeedsInstall);
|
|
7233
|
-
|
|
7550
|
+
useEffect20(() => {
|
|
7234
7551
|
onTranscriptRef.current = onTranscript;
|
|
7235
7552
|
onErrorRef.current = onError;
|
|
7236
7553
|
onNeedsInstallRef.current = onNeedsInstall;
|
|
@@ -7441,7 +7758,7 @@ function useVoiceInput({
|
|
|
7441
7758
|
isSupported,
|
|
7442
7759
|
lang
|
|
7443
7760
|
]);
|
|
7444
|
-
|
|
7761
|
+
useEffect20(() => cleanup, [cleanup]);
|
|
7445
7762
|
return {
|
|
7446
7763
|
isListening,
|
|
7447
7764
|
isTranscribing,
|
|
@@ -7453,8 +7770,8 @@ function useVoiceInput({
|
|
|
7453
7770
|
};
|
|
7454
7771
|
}
|
|
7455
7772
|
// src/hooks/useDictationModels.ts
|
|
7456
|
-
import { useCallback as useCallback13, useEffect as
|
|
7457
|
-
import { useMutation as
|
|
7773
|
+
import { useCallback as useCallback13, useEffect as useEffect21, useRef as useRef10, useState as useState8 } from "react";
|
|
7774
|
+
import { useMutation as useMutation11, useQuery as useQuery15, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
|
|
7458
7775
|
var DICTATION_STATUS_QUERY_KEY = ["dictation", "status"];
|
|
7459
7776
|
function mergeModelState(current, model) {
|
|
7460
7777
|
if (!current)
|
|
@@ -7475,12 +7792,12 @@ function parseInstallEvent(raw) {
|
|
|
7475
7792
|
}
|
|
7476
7793
|
}
|
|
7477
7794
|
function useDictationModels() {
|
|
7478
|
-
const queryClient =
|
|
7795
|
+
const queryClient = useQueryClient14();
|
|
7479
7796
|
const eventSourceRef = useRef10(null);
|
|
7480
7797
|
const [activeInstallModelId, setActiveInstallModelId] = useState8(null);
|
|
7481
7798
|
const [installProgress, setInstallProgress] = useState8(null);
|
|
7482
7799
|
const [installStreamError, setInstallStreamError] = useState8(null);
|
|
7483
|
-
const statusQuery =
|
|
7800
|
+
const statusQuery = useQuery15({
|
|
7484
7801
|
queryKey: DICTATION_STATUS_QUERY_KEY,
|
|
7485
7802
|
queryFn: () => apiClient.getDictationStatus(),
|
|
7486
7803
|
refetchInterval: (query) => query.state.data?.models.some((model) => model.installing) ? 1000 : 30000
|
|
@@ -7522,8 +7839,8 @@ function useDictationModels() {
|
|
|
7522
7839
|
});
|
|
7523
7840
|
};
|
|
7524
7841
|
}, [closeInstallStream, queryClient]);
|
|
7525
|
-
|
|
7526
|
-
const installMutation =
|
|
7842
|
+
useEffect21(() => closeInstallStream, [closeInstallStream]);
|
|
7843
|
+
const installMutation = useMutation11({
|
|
7527
7844
|
mutationFn: (input) => apiClient.installDictationModel(input),
|
|
7528
7845
|
onSuccess: (data) => {
|
|
7529
7846
|
setInstallProgress(data.model);
|
|
@@ -7539,7 +7856,7 @@ function useDictationModels() {
|
|
|
7539
7856
|
}
|
|
7540
7857
|
}
|
|
7541
7858
|
});
|
|
7542
|
-
const removeMutation =
|
|
7859
|
+
const removeMutation = useMutation11({
|
|
7543
7860
|
mutationFn: (model) => apiClient.removeDictationModel(model),
|
|
7544
7861
|
onSuccess: (data) => {
|
|
7545
7862
|
queryClient.setQueryData(DICTATION_STATUS_QUERY_KEY, (current) => mergeModelState(current, data.model));
|
|
@@ -7573,6 +7890,7 @@ export {
|
|
|
7573
7890
|
useUpdateSkillsConfig,
|
|
7574
7891
|
useUpdateSession,
|
|
7575
7892
|
useUpdateDefaults,
|
|
7893
|
+
useUpdateAgent,
|
|
7576
7894
|
useUnstageFiles,
|
|
7577
7895
|
useTunnelStream,
|
|
7578
7896
|
useTunnelStatus,
|
|
@@ -7591,6 +7909,7 @@ export {
|
|
|
7591
7909
|
useSkillDetail,
|
|
7592
7910
|
useShareStatus,
|
|
7593
7911
|
useSetSessionPinned,
|
|
7912
|
+
useSetDefaultAgent,
|
|
7594
7913
|
useSessionsInfinite,
|
|
7595
7914
|
useSessions,
|
|
7596
7915
|
useSessionStream,
|
|
@@ -7637,12 +7956,14 @@ export {
|
|
|
7637
7956
|
useDeleteSession,
|
|
7638
7957
|
useDeleteResearchSession,
|
|
7639
7958
|
useDeleteFiles,
|
|
7959
|
+
useDeleteAgent,
|
|
7640
7960
|
useCreateSession,
|
|
7641
7961
|
useCreateResearchSession,
|
|
7642
7962
|
useCreateGitBranch,
|
|
7643
7963
|
useCreateBranch,
|
|
7644
7964
|
useCopilotDevicePoller,
|
|
7645
7965
|
useContainerWidth,
|
|
7966
|
+
useConfigTools,
|
|
7646
7967
|
useConfig,
|
|
7647
7968
|
useCommitChanges,
|
|
7648
7969
|
useClientEvents,
|
|
@@ -7651,11 +7972,14 @@ export {
|
|
|
7651
7972
|
useAuthenticateMCPServer,
|
|
7652
7973
|
useAuthStatus,
|
|
7653
7974
|
useAllModels,
|
|
7975
|
+
useAgentDetails,
|
|
7976
|
+
useAgent,
|
|
7654
7977
|
useAddRemote,
|
|
7655
7978
|
useAddMCPServer,
|
|
7656
7979
|
sessionsQueryKey,
|
|
7657
7980
|
optimisticallyQueueMessage,
|
|
7658
|
-
normalizeQueueState
|
|
7981
|
+
normalizeQueueState,
|
|
7982
|
+
getAgentToolCount
|
|
7659
7983
|
};
|
|
7660
7984
|
|
|
7661
|
-
//# debugId=
|
|
7985
|
+
//# debugId=B5B999D9CC12251A64756E2164756E21
|