@codingame/monaco-vscode-katex-common 32.0.2 → 33.0.9

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 (142) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  3. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +30 -0
  4. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.js +8 -0
  5. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +32 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +13 -0
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +56 -36
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +45 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +114 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +87 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +502 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +45 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +188 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +153 -0
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
  26. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +52 -52
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +4 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.d.ts +1 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +23 -20
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +13 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +40 -13
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +4 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +217 -13
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +10 -10
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +2 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +36 -23
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -9
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -3
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +8 -13
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +16 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +24 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +6 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +72 -23
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +2 -4
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +7 -22
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +3 -3
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/media/toolRiskBadge.css +3 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +1 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +25 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +9 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +41 -27
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +31 -25
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +4 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +89 -27
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +4 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +203 -107
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +6 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +18 -18
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +32 -81
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +4 -4
  112. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
  114. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  115. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  116. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  117. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
  119. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  120. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  122. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  123. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  125. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  126. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  127. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  128. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  129. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  130. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  131. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  132. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  133. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +4 -0
  134. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  136. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +29 -7
  138. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +27 -8
  139. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +17 -8
  140. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -69
  141. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -2
  142. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +9 -14
@@ -0,0 +1,502 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import * as agentHostChatInputPicker from './media/agentHostChatInputPicker.css';
5
+ import { append, $, EventType, addDisposableListener, EventHelper, clearNode } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
+ import { Gesture, EventType as EventType$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/touch';
7
+ import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
8
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
9
+ import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
10
+ import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
11
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
12
+ import { Disposable, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
13
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
14
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
15
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
16
+ import { IAgentHostService } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentService.service';
17
+ import { SessionConfigKey, KNOWN_AUTO_APPROVE_VALUES } from '../../../../../../platform/agentHost/common/sessionConfigKeys.js';
18
+ import { ClaudeSessionConfigKey } from '../../../../../../platform/agentHost/common/claudeSessionConfigKeys.js';
19
+ import { ActionType } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/actions';
20
+ import { StateComponents } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionState';
21
+ import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
22
+ import { IActionWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service';
23
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
24
+ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
25
+ import { isUntitledChatSession } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
26
+ import { IAgentHostSessionWorkingDirectoryResolver } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.service';
27
+ import { IAgentHostUntitledProvisionalSessionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.service';
28
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
29
+
30
+ registerCss(agentHostChatInputPicker);
31
+ const FILTER_THRESHOLD = 10;
32
+ const LEARN_MORE_VALUE = "__agentHostChatInputPicker.learnMore__";
33
+ const PERMISSION_MODE_LEARN_MORE_URL = "https://code.visualstudio.com/docs/copilot/agents/agent-tools#_permission-levels";
34
+ function getConfigIcon(property, value) {
35
+ if (property === SessionConfigKey.Isolation) {
36
+ if (value === "folder") {
37
+ return Codicon.folder;
38
+ }
39
+ if (value === "worktree") {
40
+ return Codicon.worktree;
41
+ }
42
+ return undefined;
43
+ }
44
+ if (property === SessionConfigKey.Branch) {
45
+ return Codicon.gitBranch;
46
+ }
47
+ if (property === SessionConfigKey.Mode) {
48
+ switch (value) {
49
+ case "plan":
50
+ return Codicon.checklist;
51
+ case "autopilot":
52
+ return Codicon.rocket;
53
+ case "interactive":
54
+ return Codicon.comment;
55
+ }
56
+ }
57
+ if (property === SessionConfigKey.AutoApprove) {
58
+ if (value === "autopilot") {
59
+ return Codicon.rocket;
60
+ }
61
+ if (value === "autoApprove") {
62
+ return Codicon.warning;
63
+ }
64
+ return Codicon.shield;
65
+ }
66
+ return undefined;
67
+ }
68
+ function toActionItems(property, items, currentValue) {
69
+ return (items.map(item => ({
70
+ kind: ActionListItemKind.Action,
71
+ label: item.label,
72
+ description: item.description,
73
+ group: {
74
+ title: "",
75
+ icon: getConfigIcon(property, item.value)
76
+ },
77
+ item: {
78
+ ...item,
79
+ label: item.value === currentValue ? `${item.label} ${( localize(5207, "(Selected)"))}` : item.label
80
+ }
81
+ })));
82
+ }
83
+ function renderPickerTrigger(slot, disabled, disposables, onOpen) {
84
+ const trigger = append(slot, disabled ? $("span.action-label") : $("a.action-label"));
85
+ if (disabled) {
86
+ trigger.setAttribute("aria-readonly", "true");
87
+ } else {
88
+ trigger.role = "button";
89
+ trigger.tabIndex = 0;
90
+ trigger.setAttribute("aria-haspopup", "listbox");
91
+ disposables.add(Gesture.addTarget(trigger));
92
+ for (const eventType of [EventType.CLICK, EventType$1.Tap]) {
93
+ disposables.add(addDisposableListener(trigger, eventType, e => {
94
+ EventHelper.stop(e, true);
95
+ onOpen();
96
+ }));
97
+ }
98
+ disposables.add(addDisposableListener(trigger, EventType.KEY_DOWN, e => {
99
+ if (e.key === "Enter" || e.key === " ") {
100
+ EventHelper.stop(e, true);
101
+ onOpen();
102
+ }
103
+ }));
104
+ }
105
+ slot.classList.toggle("disabled", disabled);
106
+ return trigger;
107
+ }
108
+ function toBackendSessionUri(sessionResource) {
109
+ const scheme = sessionResource.scheme;
110
+ const prefix = "agent-host-";
111
+ if (!scheme.startsWith(prefix)) {
112
+ return undefined;
113
+ }
114
+ const provider = scheme.substring(prefix.length);
115
+ if (!provider) {
116
+ return undefined;
117
+ }
118
+ const rawId = sessionResource.path.replace(/^\//, "");
119
+ return ( URI.from({
120
+ scheme: provider,
121
+ path: `/${rawId}`
122
+ }));
123
+ }
124
+ function isWellKnownAutoApproveSchema(schema) {
125
+ if (schema.type !== "string" || !Array.isArray(schema.enum) || schema.enum.length === 0) {
126
+ return false;
127
+ }
128
+ if (!schema.enum.includes("default")) {
129
+ return false;
130
+ }
131
+ return schema.enum.every(value => ( KNOWN_AUTO_APPROVE_VALUES.has(value)));
132
+ }
133
+ const WELL_KNOWN_PICKER_PROPERTIES = ( new Set([
134
+ SessionConfigKey.Mode,
135
+ SessionConfigKey.AutoApprove,
136
+ SessionConfigKey.Permissions,
137
+ ClaudeSessionConfigKey.PermissionMode
138
+ ]));
139
+ function isClaimedByDedicatedPicker(property, schema) {
140
+ if (property === SessionConfigKey.AutoApprove) {
141
+ return isWellKnownAutoApproveSchema(schema);
142
+ }
143
+ return ( WELL_KNOWN_PICKER_PROPERTIES.has(property));
144
+ }
145
+ let AgentHostChatInputPicker = class AgentHostChatInputPicker extends Disposable {
146
+ constructor(
147
+ _widget,
148
+ _property,
149
+ _pickerOptions,
150
+ _agentHostService,
151
+ _actionWidgetService,
152
+ _openerService,
153
+ _workingDirectoryResolver,
154
+ _workspaceContextService,
155
+ _provisional
156
+ ) {
157
+ super();
158
+ this._widget = _widget;
159
+ this._property = _property;
160
+ this._pickerOptions = _pickerOptions;
161
+ this._agentHostService = _agentHostService;
162
+ this._actionWidgetService = _actionWidgetService;
163
+ this._openerService = _openerService;
164
+ this._workingDirectoryResolver = _workingDirectoryResolver;
165
+ this._workspaceContextService = _workspaceContextService;
166
+ this._provisional = _provisional;
167
+ this._renderDisposables = this._register(( new DisposableStore()));
168
+ this._filterDelayer = this._register(( new Delayer(200)));
169
+ this._subRef = this._register(( new MutableDisposable()));
170
+ this._initialResolveCts = this._register(( new MutableDisposable()));
171
+ this._register(this._widget.onDidChangeViewModel(() => {
172
+ this._reattach();
173
+ }));
174
+ const opts = this._pickerOptions;
175
+ if (opts) {
176
+ this._register(autorun(reader => {
177
+ opts.hideChevrons.read(reader);
178
+ this._renderChip();
179
+ }));
180
+ }
181
+ this._register(this._provisional.onDidChange(sessionResource => {
182
+ const current = this._widget.viewModel?.sessionResource;
183
+ if (current && ( current.toString()) === ( sessionResource.toString())) {
184
+ this._reattach();
185
+ }
186
+ }));
187
+ this._reattach();
188
+ }
189
+ render(container) {
190
+ this._container = container;
191
+ container.classList.add("agent-host-chat-input-picker-host");
192
+ container.classList.add(`agent-host-chat-input-picker-host-${this._property}`);
193
+ this._renderChip();
194
+ }
195
+ _reattach() {
196
+ const sessionResource = this._widget.viewModel?.sessionResource;
197
+ const provisionalBackend = sessionResource ? this._provisional.get(sessionResource) : undefined;
198
+ const backendSession = provisionalBackend ?? (sessionResource ? toBackendSessionUri(sessionResource) : undefined);
199
+ if (!sessionResource || !backendSession) {
200
+ this._subRef.clear();
201
+ this._initialResolved = undefined;
202
+ this._cancelInitialResolve();
203
+ this._renderChip();
204
+ return;
205
+ }
206
+ if (isUntitledChatSession(sessionResource) && !provisionalBackend) {
207
+ this._subRef.clear();
208
+ if (!this._initialResolved || ( this._initialResolved.sessionResource.toString()) !== ( sessionResource.toString())) {
209
+ this._initialResolved = undefined;
210
+ void this._refreshInitialResolved(sessionResource, backendSession);
211
+ }
212
+ void this._provisional.getOrCreate(sessionResource, backendSession.scheme, this._readWorkingDirectory());
213
+ this._renderChip();
214
+ return;
215
+ }
216
+ this._initialResolved = undefined;
217
+ this._cancelInitialResolve();
218
+ const ref = this._agentHostService.getSubscription(StateComponents.Session, backendSession);
219
+ const sub = ref.object;
220
+ const listener = sub.onDidChange(() => this._renderChip());
221
+ this._subRef.value = {
222
+ sub,
223
+ backendSession,
224
+ dispose: () => {
225
+ listener.dispose();
226
+ ref.dispose();
227
+ }
228
+ };
229
+ this._renderChip();
230
+ }
231
+ _cancelInitialResolve() {
232
+ this._initialResolveCts.value?.cancel();
233
+ this._initialResolveCts.clear();
234
+ }
235
+ async _refreshInitialResolved(sessionResource, backendSession) {
236
+ this._initialResolveCts.value?.cancel();
237
+ const cts = ( new CancellationTokenSource());
238
+ this._initialResolveCts.value = cts;
239
+ try {
240
+ const result = await this._agentHostService.resolveSessionConfig({
241
+ provider: backendSession.scheme,
242
+ workingDirectory: this._readWorkingDirectory()
243
+ });
244
+ if (cts.token.isCancellationRequested || this._widget.viewModel?.sessionResource?.toString() !== ( sessionResource.toString())) {
245
+ return;
246
+ }
247
+ this._initialResolved = {
248
+ sessionResource,
249
+ result
250
+ };
251
+ this._renderChip();
252
+ } catch {}
253
+ }
254
+ _renderChip() {
255
+ if (!this._container) {
256
+ return;
257
+ }
258
+ this._renderDisposables.clear();
259
+ clearNode(this._container);
260
+ const ctx = this._readContext();
261
+ const sessionResource = this._widget.viewModel?.sessionResource;
262
+ const isStartedSession = !!sessionResource && !isUntitledChatSession(sessionResource);
263
+ if (!ctx || (isStartedSession && ctx.schema.sessionMutable === false)) {
264
+ this._container.style.display = "none";
265
+ this._container.classList.add("agent-host-chat-input-picker-host-hidden");
266
+ return;
267
+ }
268
+ if (this._property === SessionConfigKey.AutoApprove && !isWellKnownAutoApproveSchema(ctx.schema)) {
269
+ this._container.style.display = "none";
270
+ this._container.classList.add("agent-host-chat-input-picker-host-hidden");
271
+ return;
272
+ }
273
+ this._container.style.display = "";
274
+ this._container.classList.remove("agent-host-chat-input-picker-host-hidden");
275
+ const slot = append(this._container, $(".agent-host-chat-input-picker-slot"));
276
+ this._renderDisposables.add({
277
+ dispose: () => slot.remove()
278
+ });
279
+ const isReadOnly = !!ctx.schema.readOnly || (isStartedSession && ctx.schema.sessionMutable === false);
280
+ const trigger = renderPickerTrigger(slot, isReadOnly, this._renderDisposables, () => this._showPicker(trigger));
281
+ this._renderTrigger(trigger, ctx.schema, ctx.value, isReadOnly);
282
+ }
283
+ _renderTrigger(trigger, schema, value, isReadOnly) {
284
+ clearNode(trigger);
285
+ const compact = this._pickerOptions?.hideChevrons.get() ?? false;
286
+ const icon = getConfigIcon(this._property, value);
287
+ if (icon) {
288
+ append(trigger, renderIcon(icon));
289
+ }
290
+ if (this._property === SessionConfigKey.AutoApprove) {
291
+ trigger.classList.toggle("warning", value === "autopilot");
292
+ trigger.classList.toggle("info", value === "autoApprove");
293
+ }
294
+ const label = this._labelFor(schema, value);
295
+ if (!compact) {
296
+ const labelSpan = append(trigger, $("span.agent-host-chat-input-picker-label"));
297
+ labelSpan.textContent = label;
298
+ }
299
+ trigger.setAttribute("aria-label", isReadOnly ? ( localize(5208, "{0}: {1}, Read-Only", schema.title, label)) : ( localize(5209, "{0}: {1}", schema.title, label)));
300
+ if (!isReadOnly && !compact) {
301
+ append(trigger, renderIcon(Codicon.chevronDown));
302
+ }
303
+ }
304
+ _labelFor(schema, value) {
305
+ if (typeof value === "string") {
306
+ const index = schema.enum?.indexOf(value) ?? -1;
307
+ return index >= 0 ? schema.enumLabels?.[index] ?? value : value;
308
+ }
309
+ return schema.title;
310
+ }
311
+ _readContext() {
312
+ const sessionResource = this._widget.viewModel?.sessionResource;
313
+ if (!sessionResource) {
314
+ return undefined;
315
+ }
316
+ if (this._subRef.value) {
317
+ const state = this._subRef.value.sub.value;
318
+ if (!state || state instanceof Error) {
319
+ return undefined;
320
+ }
321
+ const overlay = this._provisional.getResolvedConfig(sessionResource);
322
+ const schemaSource = overlay?.schema ?? state.config?.schema;
323
+ const schema = schemaSource?.properties[this._property];
324
+ if (!schema) {
325
+ return undefined;
326
+ }
327
+ const value = overlay?.values?.[this._property] ?? state.config?.values?.[this._property] ?? schema.default;
328
+ return {
329
+ backendSession: this._subRef.value.backendSession,
330
+ schema,
331
+ value
332
+ };
333
+ }
334
+ if (this._initialResolved && ( this._initialResolved.sessionResource.toString()) === ( sessionResource.toString())) {
335
+ const schema = this._initialResolved.result.schema.properties[this._property];
336
+ if (!schema) {
337
+ return undefined;
338
+ }
339
+ const backendSession = toBackendSessionUri(sessionResource);
340
+ if (!backendSession) {
341
+ return undefined;
342
+ }
343
+ const value = this._initialResolved.result.values?.[this._property] ?? schema.default;
344
+ return {
345
+ backendSession,
346
+ schema,
347
+ value
348
+ };
349
+ }
350
+ return undefined;
351
+ }
352
+ async _showPicker(trigger) {
353
+ if (this._actionWidgetService.isVisible) {
354
+ return;
355
+ }
356
+ const ctx = this._readContext();
357
+ if (!ctx || ctx.schema.readOnly) {
358
+ return;
359
+ }
360
+ const items = await this._getItems(ctx.schema);
361
+ if (items.length === 0) {
362
+ return;
363
+ }
364
+ const currentValue = ctx.value;
365
+ const actionItems = toActionItems(this._property, items, currentValue);
366
+ if (this._property === ClaudeSessionConfigKey.PermissionMode || this._property === SessionConfigKey.AutoApprove) {
367
+ actionItems.push({
368
+ kind: ActionListItemKind.Action,
369
+ label: ( localize(5210, "Learn more about permissions")),
370
+ group: {
371
+ title: "",
372
+ icon: Codicon.blank
373
+ },
374
+ item: {
375
+ value: LEARN_MORE_VALUE,
376
+ label: ( localize(5210, "Learn more about permissions"))
377
+ }
378
+ });
379
+ }
380
+ const delegate = {
381
+ onSelect: item => {
382
+ this._actionWidgetService.hide();
383
+ if (item.value === LEARN_MORE_VALUE) {
384
+ void this._openerService.open(( URI.parse(PERMISSION_MODE_LEARN_MORE_URL)));
385
+ return;
386
+ }
387
+ void this._setValue(ctx.backendSession, item.value);
388
+ },
389
+ onFilter: ctx.schema.enumDynamic ? query => this._filterDelayer.trigger(async () => {
390
+ const refreshed = this._readContext();
391
+ if (!refreshed) {
392
+ return [];
393
+ }
394
+ return toActionItems(
395
+ this._property,
396
+ await this._getItems(refreshed.schema, query),
397
+ refreshed.value
398
+ );
399
+ }) : undefined,
400
+ onHide: () => trigger.focus()
401
+ };
402
+ this._actionWidgetService.show(
403
+ `agentHostChatInputPicker.${this._property}`,
404
+ false,
405
+ actionItems,
406
+ delegate,
407
+ trigger,
408
+ undefined,
409
+ [],
410
+ {
411
+ getAriaLabel: item => item.label ?? "",
412
+ getWidgetAriaLabel: () => ( localize(5211, "{0} Picker", ctx.schema.title))
413
+ },
414
+ actionItems.length > FILTER_THRESHOLD || ctx.schema.enumDynamic ? {
415
+ showFilter: true,
416
+ filterPlaceholder: ( localize(5212, "Filter..."))
417
+ } : undefined
418
+ );
419
+ }
420
+ async _getItems(schema, query) {
421
+ const sessionResource = this._widget.viewModel?.sessionResource;
422
+ const backendSession = this._subRef.value?.backendSession ?? (sessionResource ? toBackendSessionUri(sessionResource) : undefined);
423
+ if (schema.enumDynamic && backendSession) {
424
+ try {
425
+ const result = await this._agentHostService.sessionConfigCompletions({
426
+ provider: backendSession.scheme,
427
+ property: this._property,
428
+ query,
429
+ workingDirectory: this._readWorkingDirectory(),
430
+ config: this._readCurrentValues()
431
+ });
432
+ return ( result.items.map(item => this._fromCompletion(item)));
433
+ } catch {}
434
+ }
435
+ return ( (schema.enum ?? []).map((value, index) => ({
436
+ value,
437
+ label: schema.enumLabels?.[index] ?? value,
438
+ description: schema.enumDescriptions?.[index]
439
+ })));
440
+ }
441
+ _fromCompletion(item) {
442
+ return {
443
+ value: item.value,
444
+ label: item.label,
445
+ description: item.description
446
+ };
447
+ }
448
+ _readWorkingDirectory() {
449
+ const state = this._subRef.value?.sub.value;
450
+ if (state && !(state instanceof Error)) {
451
+ const cwd = state.summary.workingDirectory;
452
+ return typeof cwd === "string" ? ( URI.parse(cwd)) : cwd;
453
+ }
454
+ const sessionResource = this._widget.viewModel?.sessionResource;
455
+ return (sessionResource && this._workingDirectoryResolver.resolve(sessionResource)) ?? this._workspaceContextService.getWorkspace().folders[0]?.uri;
456
+ }
457
+ _readCurrentValues() {
458
+ const state = this._subRef.value?.sub.value;
459
+ if (state && !(state instanceof Error)) {
460
+ return state.config?.values;
461
+ }
462
+ return this._initialResolved?.result.values;
463
+ }
464
+ async _setValue(backendSession, value) {
465
+ const sessionResource = this._widget.viewModel?.sessionResource;
466
+ if (!sessionResource) {
467
+ return;
468
+ }
469
+ const partial = {
470
+ [this._property]: value
471
+ };
472
+ if (isUntitledChatSession(sessionResource)) {
473
+ const provider = backendSession.scheme;
474
+ const created = await this._provisional.applyConfigChange(sessionResource, provider, this._readWorkingDirectory(), partial);
475
+ if (!created) {
476
+ return;
477
+ }
478
+ if (!this._subRef.value || ( this._subRef.value.backendSession.toString()) !== ( created.toString())) {
479
+ this._reattach();
480
+ }
481
+ return;
482
+ }
483
+ this._agentHostService.dispatch({
484
+ type: ActionType.SessionConfigChanged,
485
+ session: ( backendSession.toString()),
486
+ config: partial
487
+ });
488
+ }
489
+ };
490
+ AgentHostChatInputPicker = ( __decorate([( __param(3, IAgentHostService)), ( __param(4, IActionWidgetService)), ( __param(5, IOpenerService)), ( __param(6, IAgentHostSessionWorkingDirectoryResolver)), ( __param(7, IWorkspaceContextService)), ( __param(8, IAgentHostUntitledProvisionalSessionService))], AgentHostChatInputPicker));
491
+ class AgentHostChatInputPickerActionViewItem extends BaseActionViewItem {
492
+ constructor(action, _picker) {
493
+ super(undefined, action);
494
+ this._picker = _picker;
495
+ this._register(this._picker);
496
+ }
497
+ render(container) {
498
+ this._picker.render(container);
499
+ }
500
+ }
501
+
502
+ export { AgentHostChatInputPicker, AgentHostChatInputPickerActionViewItem, WELL_KNOWN_PICKER_PROPERTIES, isClaimedByDedicatedPicker, isWellKnownAutoApproveSchema };
@@ -0,0 +1,45 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
3
+ import { IAgentHostService } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentService.service";
4
+ import type { IChatWidget } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
5
+ import type { IChatInputPickerOptions } from "../../widget/input/chatInputPickerActionItem.js";
6
+ import { IAgentHostSessionWorkingDirectoryResolver } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.service";
7
+ import { IAgentHostUntitledProvisionalSessionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.service";
8
+ import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
9
+ /**
10
+ * Direct-render chip lane for agent-host session-config properties that are
11
+ * advertised by the agent's schema but are NOT handled by a dedicated
12
+ * well-known picker (e.g. Claude's custom approval-mode property).
13
+ *
14
+ * Unlike the dedicated chips, this lane is not registered with
15
+ * `MenuId.ChatInputSecondary`. It owns its own DOM container and creates
16
+ * one {@link AgentHostChatInputPicker} per generic property, syncing the
17
+ * set of chips whenever the active session's schema changes.
18
+ */
19
+ export declare class AgentHostGenericConfigChips extends Disposable {
20
+ private readonly _widget;
21
+ private readonly _pickerOptions;
22
+ private readonly _instantiationService;
23
+ private readonly _agentHostService;
24
+ private readonly _provisional;
25
+ private readonly _workingDirectoryResolver;
26
+ private readonly _workspaceContextService;
27
+ private _container;
28
+ private readonly _chips;
29
+ /**
30
+ * Subscription to the active session's backend state. Maintained for the
31
+ * lifetime of any one (sessionResource, backendSession) pair; replaced
32
+ * via {@link _reattach} when the active session changes.
33
+ */
34
+ private readonly _subRef;
35
+ private _initialResolved;
36
+ private readonly _initialResolveCts;
37
+ constructor(_widget: IChatWidget, _pickerOptions: IChatInputPickerOptions | undefined, _instantiationService: IInstantiationService, _agentHostService: IAgentHostService, _provisional: IAgentHostUntitledProvisionalSessionService, _workingDirectoryResolver: IAgentHostSessionWorkingDirectoryResolver, _workspaceContextService: IWorkspaceContextService);
38
+ render(container: HTMLElement): void;
39
+ private _reattach;
40
+ private _cancelInitialResolve;
41
+ private _refreshInitialResolved;
42
+ private _readWorkingDirectory;
43
+ private _readSchemaProperties;
44
+ private _sync;
45
+ }