@tutti-os/agent-gui 0.0.125 → 0.0.127

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 (63) hide show
  1. package/dist/{AgentGUI-DMtA0gbf.d.ts → AgentGUI-DprRUk8h.d.ts} +10 -3
  2. package/dist/{AgentRichTextReadonly-G5D73743.js → AgentRichTextReadonly-SPIPM3UM.js} +5 -5
  3. package/dist/agent-conversation/index.d.ts +1 -1
  4. package/dist/agent-conversation/index.js +7 -7
  5. package/dist/agent-gui.d.ts +3 -3
  6. package/dist/agent-gui.js +15 -15
  7. package/dist/agent-message-center/index.js +6 -6
  8. package/dist/{agentFileMentionContracts-DY4Z70CN.d.ts → agentFileMentionContracts-CWAeuL7S.d.ts} +1 -1
  9. package/dist/{agentGuiNodeTypes-DedIWrEI.d.ts → agentGuiNodeTypes-5TL1hyCN.d.ts} +8 -2
  10. package/dist/app/renderer/agentactivity.css +10 -1
  11. package/dist/{chunk-A2B6QKNF.js → chunk-54GR2G3U.js} +10 -9
  12. package/dist/chunk-54GR2G3U.js.map +1 -0
  13. package/dist/{chunk-OKGXHKJ2.js → chunk-D5CIV4IB.js} +2 -2
  14. package/dist/chunk-D5CIV4IB.js.map +1 -0
  15. package/dist/{chunk-WIQHLQFN.js → chunk-EG7IIFNL.js} +3 -3
  16. package/dist/{chunk-XXACYFIR.js → chunk-JE2DXS4U.js} +2 -2
  17. package/dist/{chunk-ZCNZ53CF.js → chunk-JVISXD4K.js} +2 -2
  18. package/dist/{chunk-24TBYDXC.js → chunk-JWB5Z5GS.js} +4 -4
  19. package/dist/{chunk-KRG7EBHG.js → chunk-LWJITLCI.js} +2 -2
  20. package/dist/{chunk-JM24HADP.js → chunk-RMQREVJY.js} +1 -1
  21. package/dist/chunk-RMQREVJY.js.map +1 -0
  22. package/dist/{chunk-KACVD2GZ.js → chunk-T2CHVUXH.js} +11 -5
  23. package/dist/chunk-T2CHVUXH.js.map +1 -0
  24. package/dist/{chunk-UNCXTPFX.js → chunk-WB3KV4VH.js} +3 -3
  25. package/dist/{chunk-ARDFK5NC.js → chunk-WKFMSABH.js} +83 -5
  26. package/dist/chunk-WKFMSABH.js.map +1 -0
  27. package/dist/{chunk-5O42C33J.js → chunk-WKYMLLHT.js} +2 -2
  28. package/dist/{chunk-XJ2U66WG.js → chunk-YJKTYMF4.js} +170 -18
  29. package/dist/chunk-YJKTYMF4.js.map +1 -0
  30. package/dist/{chunk-RN7DI3Y2.js → chunk-YWKS4ESK.js} +2 -2
  31. package/dist/{chunk-HLXQ7BUI.js → chunk-ZXHXR2KT.js} +1049 -818
  32. package/dist/chunk-ZXHXR2KT.js.map +1 -0
  33. package/dist/context-mention-palette/index.d.ts +1 -1
  34. package/dist/context-mention-palette/index.js +8 -8
  35. package/dist/context-mention-provider.d.ts +15 -2
  36. package/dist/context-mention-provider.js +1 -1
  37. package/dist/i18n/index.d.ts +10 -4
  38. package/dist/i18n/index.js +2 -2
  39. package/dist/index.d.ts +5 -5
  40. package/dist/index.js +15 -15
  41. package/dist/index.js.map +1 -1
  42. package/dist/mention-search.d.ts +8 -3
  43. package/dist/mention-search.js +6 -6
  44. package/dist/workbench/contribution.js +3 -3
  45. package/dist/workbench/index.js +3 -3
  46. package/dist/workbench/sessionTitle.js +2 -2
  47. package/package.json +14 -14
  48. package/dist/chunk-A2B6QKNF.js.map +0 -1
  49. package/dist/chunk-ARDFK5NC.js.map +0 -1
  50. package/dist/chunk-HLXQ7BUI.js.map +0 -1
  51. package/dist/chunk-JM24HADP.js.map +0 -1
  52. package/dist/chunk-KACVD2GZ.js.map +0 -1
  53. package/dist/chunk-OKGXHKJ2.js.map +0 -1
  54. package/dist/chunk-XJ2U66WG.js.map +0 -1
  55. /package/dist/{AgentRichTextReadonly-G5D73743.js.map → AgentRichTextReadonly-SPIPM3UM.js.map} +0 -0
  56. /package/dist/{chunk-WIQHLQFN.js.map → chunk-EG7IIFNL.js.map} +0 -0
  57. /package/dist/{chunk-XXACYFIR.js.map → chunk-JE2DXS4U.js.map} +0 -0
  58. /package/dist/{chunk-ZCNZ53CF.js.map → chunk-JVISXD4K.js.map} +0 -0
  59. /package/dist/{chunk-24TBYDXC.js.map → chunk-JWB5Z5GS.js.map} +0 -0
  60. /package/dist/{chunk-KRG7EBHG.js.map → chunk-LWJITLCI.js.map} +0 -0
  61. /package/dist/{chunk-UNCXTPFX.js.map → chunk-WB3KV4VH.js.map} +0 -0
  62. /package/dist/{chunk-5O42C33J.js.map → chunk-WKYMLLHT.js.map} +0 -0
  63. /package/dist/{chunk-RN7DI3Y2.js.map → chunk-YWKS4ESK.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { A as AgentContextMentionItem } from '../agentFileMentionContracts-DY4Z70CN.js';
1
+ import { A as AgentContextMentionItem } from '../agentFileMentionContracts-CWAeuL7S.js';
2
2
  import { AgentMentionSearchState, AgentMentionBrowseCategory, AgentMentionFilterId, AgentMentionGroupId } from '../mention-search.js';
3
3
  export { AgentMentionGroup, AgentMentionSearchController } from '../mention-search.js';
4
4
  import { ReactNode } from 'react';
@@ -3,27 +3,27 @@ import {
3
3
  AgentFileMentionPalette,
4
4
  flattenAgentMentionPaletteEntries,
5
5
  groupStartKeys
6
- } from "../chunk-A2B6QKNF.js";
6
+ } from "../chunk-54GR2G3U.js";
7
7
  import {
8
8
  AgentMentionSearchController
9
- } from "../chunk-XJ2U66WG.js";
9
+ } from "../chunk-YJKTYMF4.js";
10
10
  import "../chunk-USIFGHT3.js";
11
11
  import "../chunk-XJ34OIEQ.js";
12
12
  import "../chunk-R7AXDQCA.js";
13
- import "../chunk-KRG7EBHG.js";
13
+ import "../chunk-LWJITLCI.js";
14
14
  import "../chunk-LUGELG5V.js";
15
15
  import {
16
16
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
17
- } from "../chunk-JM24HADP.js";
18
- import "../chunk-XXACYFIR.js";
17
+ } from "../chunk-RMQREVJY.js";
18
+ import "../chunk-JE2DXS4U.js";
19
19
  import "../chunk-YMXYBG7U.js";
20
- import "../chunk-OKGXHKJ2.js";
20
+ import "../chunk-D5CIV4IB.js";
21
21
  import "../chunk-F5UR6EJG.js";
22
22
  import "../chunk-EDNJMG5T.js";
23
- import "../chunk-ZCNZ53CF.js";
23
+ import "../chunk-JVISXD4K.js";
24
24
  import "../chunk-PJP5BUU6.js";
25
25
  import "../chunk-7KVZPJ3O.js";
26
- import "../chunk-KACVD2GZ.js";
26
+ import "../chunk-T2CHVUXH.js";
27
27
  import "../chunk-MIJXEELH.js";
28
28
  import "../chunk-D2JUDUYY.js";
29
29
  import "../chunk-6CUELYIF.js";
@@ -1,4 +1,4 @@
1
- import { RichTextTriggerProvider, RichTextTriggerInsertResult, RichTextTriggerQueryInput } from '@tutti-os/ui-rich-text/types';
1
+ import { RichTextTriggerProvider, RichTextTriggerQueryInput, RichTextTriggerInsertResult } from '@tutti-os/ui-rich-text/types';
2
2
  import { TuttiExternalAtProviderId } from '@tutti-os/workspace-external-core/contracts';
3
3
 
4
4
  declare const AGENT_CONTEXT_MENTION_PROVIDER_IDS: {
@@ -13,9 +13,22 @@ type AgentContextMentionProviderId = TuttiExternalAtProviderId;
13
13
  type AgentContextMentionQueryInput = RichTextTriggerQueryInput & {
14
14
  trigger: "@";
15
15
  };
16
+ interface AgentContextMentionDirectoryDescriptor {
17
+ /** Canonical provider-owned directory path used for child queries. */
18
+ path: string;
19
+ /** Number of direct children when the provider can determine it. */
20
+ childCount?: number | null;
21
+ }
22
+ type AgentContextMentionDirectoryQueryInput = AgentContextMentionQueryInput & {
23
+ directoryPath: string;
24
+ };
16
25
  type AgentContextMentionInsertResult = RichTextTriggerInsertResult;
17
26
  type AgentContextMentionProvider<TItem = any> = Omit<RichTextTriggerProvider<TItem>, "trigger"> & {
18
27
  trigger: "@";
28
+ /** Optional hierarchy contract for file providers. */
29
+ getItemDirectory?(item: TItem): AgentContextMentionDirectoryDescriptor | null | undefined;
30
+ /** Lists the direct children of one directory without overloading keyword search. */
31
+ queryDirectory?(input: AgentContextMentionDirectoryQueryInput): Promise<readonly TItem[]> | readonly TItem[];
19
32
  };
20
33
 
21
- export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, type AgentContextMentionInsertResult, type AgentContextMentionProvider, type AgentContextMentionProviderId, type AgentContextMentionQueryInput };
34
+ export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, type AgentContextMentionDirectoryDescriptor, type AgentContextMentionDirectoryQueryInput, type AgentContextMentionInsertResult, type AgentContextMentionProvider, type AgentContextMentionProviderId, type AgentContextMentionQueryInput };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
3
- } from "./chunk-JM24HADP.js";
3
+ } from "./chunk-RMQREVJY.js";
4
4
  export {
5
5
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
6
6
  };
@@ -448,8 +448,8 @@ declare const agentGuiI18nResources: {
448
448
  readonly mentionEmptyIssues: "No tasks yet";
449
449
  readonly mentionEmptyDockFiles: "No open files in the dock yet. Type to search workspace files.";
450
450
  readonly mentionEmptyAgentGeneratedFiles: "No files generated by Agent yet";
451
- readonly mentionAgentGeneratedFolderBack: "Back";
452
- readonly mentionAgentGeneratedFolderFileCount: "Contains {{count}} files";
451
+ readonly mentionFolderBack: "Back";
452
+ readonly mentionFolderChildCount: "Contains {{count}} items";
453
453
  readonly mentionAgentTargetAvailable: "Available";
454
454
  readonly mentionAgentTargetUnavailable: "Unavailable";
455
455
  readonly mentionNoMatchingFiles: "No matching files";
@@ -630,6 +630,9 @@ declare const agentGuiI18nResources: {
630
630
  readonly projectSectionEdit: "New session";
631
631
  readonly projectSectionMoreActions: "Project actions";
632
632
  readonly projectSectionViewFiles: "Open folder";
633
+ readonly pinProject: "Pin project";
634
+ readonly unpinProject: "Unpin project";
635
+ readonly pinnedProjectAccessibleName: "Pinned project: {{project}}";
633
636
  readonly projectRailCreateProject: "New project";
634
637
  readonly projectRailLinkExistingProject: "Link existing project folder";
635
638
  readonly removeProject: "Remove";
@@ -3027,8 +3030,8 @@ declare const agentGuiI18nResources: {
3027
3030
  readonly mentionEmptyIssues: "暂无任务";
3028
3031
  readonly mentionEmptyDockFiles: "Dock 栏暂无已打开文件,输入关键词可搜索工作区文件";
3029
3032
  readonly mentionEmptyAgentGeneratedFiles: "暂无 Agent 生成的文件";
3030
- readonly mentionAgentGeneratedFolderBack: "返回";
3031
- readonly mentionAgentGeneratedFolderFileCount: "包含 {{count}} 个文件";
3033
+ readonly mentionFolderBack: "返回";
3034
+ readonly mentionFolderChildCount: "包含 {{count}} 个子项";
3032
3035
  readonly mentionAgentTargetAvailable: "可用";
3033
3036
  readonly mentionAgentTargetUnavailable: "不可用";
3034
3037
  readonly mentionNoMatchingFiles: "没有匹配到文件";
@@ -3209,6 +3212,9 @@ declare const agentGuiI18nResources: {
3209
3212
  readonly projectSectionEdit: "新建会话";
3210
3213
  readonly projectSectionMoreActions: "项目操作";
3211
3214
  readonly projectSectionViewFiles: "打开文件夹";
3215
+ readonly pinProject: "置顶项目";
3216
+ readonly unpinProject: "取消置顶项目";
3217
+ readonly pinnedProjectAccessibleName: "已置顶项目:{{project}}";
3212
3218
  readonly projectRailCreateProject: "新建项目";
3213
3219
  readonly projectRailLinkExistingProject: "关联已有项目文件";
3214
3220
  readonly removeProject: "移除";
@@ -6,8 +6,8 @@ import {
6
6
  translate,
7
7
  translateInUiLanguage,
8
8
  useTranslation
9
- } from "../chunk-ZCNZ53CF.js";
10
- import "../chunk-KACVD2GZ.js";
9
+ } from "../chunk-JVISXD4K.js";
10
+ import "../chunk-T2CHVUXH.js";
11
11
  export {
12
12
  AgentGuiI18nProvider,
13
13
  agentGuiI18nModule,
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { AgentCustomMentionChipContext, AgentCustomMentionIdentity, AgentCustomMentionKindDefinition, AgentCustomMentionPresentation, getAgentCustomMentionKind, registerAgentCustomMentionKind, resetAgentCustomMentionKindsForTests } from './custom-mention.js';
2
2
  export { A as AGENT_PASTED_TEXT_BLOCK_KIND, a as AGENT_PASTED_TEXT_MENTION_KIND } from './pastedTextKinds-D-XuInaS.js';
3
- import { A as AgentActivityRuntime } from './AgentGUI-DMtA0gbf.js';
4
- export { a as AgentActivityRuntimeDeleteSessionsBatchInput, b as AgentActivityRuntimeDeleteSessionsBatchResult, c as AgentActivityRuntimeListSessionMessagesInput, d as AgentActivityRuntimePromptContentBlock, e as AgentActivityRuntimeProvider, f as AgentActivityRuntimeProviderProps, g as AgentActivityRuntimeSessionSectionDeletionCandidates, h as AgentActivityRuntimeSessionSectionScopeInput, i as AgentActivityRuntimeSetSessionPinnedInput, j as AgentActivityRuntimeUpdateSessionSettingsInput, k as AgentActivityRuntimeUpdateSessionSettingsResult, l as AgentActivityRuntimeUploadPromptContentInput, m as AgentActivityRuntimeUploadPromptContentResult, n as AgentGUI, o as AgentGUIAccountMenuState, p as AgentGUIAgentsEmptyRenderer, q as AgentGUIComposerAppendRequest, r as AgentGUIComposerContentType, s as AgentGUIComposerFocusMethod, t as AgentGUIEngagementContext, u as AgentGUIEngagementEvent, v as AgentGUIEngagementEventSink, w as AgentGUIProps, x as AgentGUIProviderUnavailableStateContext, y as AgentGUIProviderUnavailableStateRenderer, z as AgentGUISidebarFooterContext, B as AgentGUISidebarFooterRenderer, C as resetAgentActivityRuntimeForTests, D as setAgentActivityRuntimeForTests, E as useAgentActivityRuntime, F as useAgentActivitySnapshot, G as useOptionalAgentActivityRuntime } from './AgentGUI-DMtA0gbf.js';
5
- import { m as AgentHostInputApi } from './agentGuiNodeTypes-DedIWrEI.js';
6
- export { a as AgentComposerDraftFile, g as AgentHostAgentTargetAuthenticatedAccount, h as AgentHostAgentTargetSetupSnapshot, i as AgentHostAgentTargetSetupState, j as AgentHostAgentTargetSetupWatch, k as AgentHostApi, l as AgentHostApplyWorkspaceGitPatchInput, n as AgentHostRuntimeApi, o as AgentHostSelectFilesInput, q as AgentProbeProvider, r as AgentProbeSnapshot, s as AgentProviderProbeListInput, t as AgentProviderProbeListResult, w as AgentUsageQuota, x as AgentUsageSnapshot, P as PersistWriteResult, R as ReadWorkspaceAgentReadStateInput, W as WorkspaceAgentReadStateSnapshot, y as WriteWorkspaceAgentReadStateInput } from './agentGuiNodeTypes-DedIWrEI.js';
3
+ import { A as AgentActivityRuntime } from './AgentGUI-DprRUk8h.js';
4
+ export { a as AgentActivityRuntimeDeleteSessionsBatchInput, b as AgentActivityRuntimeDeleteSessionsBatchResult, c as AgentActivityRuntimeListSessionMessagesInput, d as AgentActivityRuntimePromptContentBlock, e as AgentActivityRuntimeProvider, f as AgentActivityRuntimeProviderProps, g as AgentActivityRuntimeSessionSectionDeletionCandidates, h as AgentActivityRuntimeSessionSectionScopeInput, i as AgentActivityRuntimeSetSessionPinnedInput, j as AgentActivityRuntimeUpdateSessionSettingsInput, k as AgentActivityRuntimeUpdateSessionSettingsResult, l as AgentActivityRuntimeUploadPromptContentInput, m as AgentActivityRuntimeUploadPromptContentResult, n as AgentGUI, o as AgentGUIAccountMenuState, p as AgentGUIAgentsEmptyRenderer, q as AgentGUIComposerAppendRequest, r as AgentGUIComposerContentType, s as AgentGUIComposerFocusMethod, t as AgentGUIEngagementContext, u as AgentGUIEngagementEvent, v as AgentGUIEngagementEventSink, w as AgentGUIProps, x as AgentGUIProviderUnavailableStateContext, y as AgentGUIProviderUnavailableStateRenderer, z as AgentGUISidebarFooterContext, B as AgentGUISidebarFooterRenderer, C as resetAgentActivityRuntimeForTests, D as setAgentActivityRuntimeForTests, E as useAgentActivityRuntime, F as useAgentActivitySnapshot, G as useOptionalAgentActivityRuntime } from './AgentGUI-DprRUk8h.js';
5
+ import { m as AgentHostInputApi } from './agentGuiNodeTypes-5TL1hyCN.js';
6
+ export { a as AgentComposerDraftFile, g as AgentHostAgentTargetAuthenticatedAccount, h as AgentHostAgentTargetSetupSnapshot, i as AgentHostAgentTargetSetupState, j as AgentHostAgentTargetSetupWatch, k as AgentHostApi, l as AgentHostApplyWorkspaceGitPatchInput, n as AgentHostRuntimeApi, o as AgentHostSelectFilesInput, p as AgentHostUserProject, r as AgentProbeProvider, s as AgentProbeSnapshot, t as AgentProviderProbeListInput, u as AgentProviderProbeListResult, x as AgentUsageQuota, y as AgentUsageSnapshot, P as PersistWriteResult, R as ReadWorkspaceAgentReadStateInput, W as WorkspaceAgentReadStateSnapshot, z as WriteWorkspaceAgentReadStateInput } from './agentGuiNodeTypes-5TL1hyCN.js';
7
7
  export { agentGUIAgentIsReady, normalizeAgentGUIAgents, resolveAgentGUISelectedDirectoryAgent } from './agents.js';
8
8
  import { o as AgentGUIProvider, i as AgentGUIAgentTarget, j as AgentGUIAgentTargetBadge } from './types-BicfRVrV.js';
9
9
  export { A as AgentGUIAgent, a as AgentGUIAgentAvailability, b as AgentGUIAgentAvailabilityAction, c as AgentGUIAgentAvailabilityStatus, d as AgentGUIAgentDirectoryPort, e as AgentGUIAgentDirectorySnapshot, f as AgentGUIAgentDirectoryStatus, g as AgentGUIAgentOwner, h as AgentGUIAgentOwnership, k as AgentGUIAgentTargetRef, l as AgentGUIAllAgentsPresentation, m as AgentGUIHomeSuggestionId, p as AgentGUIProviderRailAllPresentation, q as AgentGUIProviderRailMode, r as AgentGUIProviderReadinessGate, s as AgentGUIProviderReadinessGateAction, t as AgentGUIProviderReadinessGateStatus } from './types-BicfRVrV.js';
@@ -18,7 +18,7 @@ export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog
18
18
  export { A as AgentGuiI18nLocale } from './runtime-BBNdWgDU.js';
19
19
  import '@tutti-os/ui-i18n-runtime';
20
20
  import './workspace-query-cache.js';
21
- import './agentFileMentionContracts-DY4Z70CN.js';
21
+ import './agentFileMentionContracts-CWAeuL7S.js';
22
22
  import '@tutti-os/workspace-file-manager/services';
23
23
  import '@tutti-os/workspace-file-reference/core';
24
24
  import './agentConversationVM-BD0-gg6C.js';
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  localAgentGUIAgentTargetId,
8
8
  normalizeAgentGUIAgentTargets,
9
9
  resolveAgentGUIAgentTarget
10
- } from "./chunk-HLXQ7BUI.js";
10
+ } from "./chunk-ZXHXR2KT.js";
11
11
  import "./chunk-A4WCTHWS.js";
12
12
  import {
13
13
  AGENT_GUI_DETAIL_MIN_WIDTH_PX,
@@ -15,17 +15,17 @@ import {
15
15
  AGENT_GUI_STANDALONE_AUTO_COLLAPSE_WIDTH_PX,
16
16
  resolveAgentGUIExpandedWindowFrame,
17
17
  shouldAutoCollapseAgentGUIConversationRail
18
- } from "./chunk-WIQHLQFN.js";
18
+ } from "./chunk-EG7IIFNL.js";
19
19
  import "./chunk-TUWQV2MC.js";
20
20
  import "./chunk-MHOYBRCY.js";
21
- import "./chunk-RN7DI3Y2.js";
21
+ import "./chunk-YWKS4ESK.js";
22
22
  import "./chunk-5HIF53K5.js";
23
23
  import "./chunk-R2ZADXRB.js";
24
- import "./chunk-ARDFK5NC.js";
25
- import "./chunk-5O42C33J.js";
24
+ import "./chunk-WKFMSABH.js";
25
+ import "./chunk-WKYMLLHT.js";
26
26
  import "./chunk-VMQNG2KI.js";
27
27
  import "./chunk-UP3ZDYTN.js";
28
- import "./chunk-A2B6QKNF.js";
28
+ import "./chunk-54GR2G3U.js";
29
29
  import {
30
30
  agentGUIAgentIsReady,
31
31
  normalizeAgentGUIAgents,
@@ -41,25 +41,25 @@ import {
41
41
  } from "./chunk-DXT4W2SU.js";
42
42
  import {
43
43
  preloadAgentMentionBrowse
44
- } from "./chunk-XJ2U66WG.js";
44
+ } from "./chunk-YJKTYMF4.js";
45
45
  import "./chunk-USIFGHT3.js";
46
46
  import "./chunk-XJ34OIEQ.js";
47
47
  import "./chunk-R7AXDQCA.js";
48
- import "./chunk-KRG7EBHG.js";
48
+ import "./chunk-LWJITLCI.js";
49
49
  import "./chunk-LUGELG5V.js";
50
50
  import {
51
51
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
52
- } from "./chunk-JM24HADP.js";
52
+ } from "./chunk-RMQREVJY.js";
53
53
  import {
54
54
  dispatchAgentPlanPromptAction,
55
55
  selectAgentPlanPromptTurn
56
- } from "./chunk-24TBYDXC.js";
56
+ } from "./chunk-JWB5Z5GS.js";
57
57
  import {
58
58
  useEngineSelector
59
59
  } from "./chunk-2RQM7PJN.js";
60
- import "./chunk-UNCXTPFX.js";
60
+ import "./chunk-WB3KV4VH.js";
61
61
  import "./chunk-KPMQGPYU.js";
62
- import "./chunk-XXACYFIR.js";
62
+ import "./chunk-JE2DXS4U.js";
63
63
  import "./chunk-YMXYBG7U.js";
64
64
  import {
65
65
  AgentActivityHostProvider,
@@ -69,17 +69,17 @@ import {
69
69
  useAgentActivityRuntime,
70
70
  useAgentActivitySnapshot,
71
71
  useOptionalAgentActivityRuntime
72
- } from "./chunk-OKGXHKJ2.js";
72
+ } from "./chunk-D5CIV4IB.js";
73
73
  import "./chunk-F5UR6EJG.js";
74
74
  import "./chunk-EDNJMG5T.js";
75
75
  import {
76
76
  AgentGuiI18nProvider,
77
77
  agentGuiI18nModule,
78
78
  agentGuiI18nResources
79
- } from "./chunk-ZCNZ53CF.js";
79
+ } from "./chunk-JVISXD4K.js";
80
80
  import "./chunk-PJP5BUU6.js";
81
81
  import "./chunk-7KVZPJ3O.js";
82
- import "./chunk-KACVD2GZ.js";
82
+ import "./chunk-T2CHVUXH.js";
83
83
  import "./chunk-MIJXEELH.js";
84
84
  import {
85
85
  getAgentCustomMentionKind,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts"],"sourcesContent":["export {\n getAgentCustomMentionKind,\n registerAgentCustomMentionKind,\n resetAgentCustomMentionKindsForTests,\n type AgentCustomMentionChipContext,\n type AgentCustomMentionIdentity,\n type AgentCustomMentionKindDefinition,\n type AgentCustomMentionPresentation\n} from \"./shared/agentCustomMentionKinds\";\nexport {\n AGENT_PASTED_TEXT_BLOCK_KIND,\n AGENT_PASTED_TEXT_MENTION_KIND\n} from \"./shared/pastedTextKinds\";\nexport { AgentGUI } from \"./AgentGUI\";\nexport type {\n AgentGUIProps,\n AgentGUIReferenceProvenanceFilterCatalog\n} from \"./AgentGUI\";\nexport type { AgentGUIComposerAppendRequest } from \"./agent-gui/agentGuiNode/controller/useAgentGUIComposerAppendRequest\";\nexport type { AgentComposerDraftFile } from \"./agent-gui/agentGuiNode/model/agentGuiNodeTypes\";\nexport type { AgentGUIAccountMenuState } from \"./agent-gui/agentGuiNode/accountMenuState\";\nexport type {\n AgentGUIComposerContentType,\n AgentGUIComposerFocusMethod,\n AgentGUIEngagementContext,\n AgentGUIEngagementEvent,\n AgentGUIEngagementEventSink\n} from \"./agent-gui/agentGuiNode/engagement/agentGUIEngagement.types\";\nexport {\n agentGUIAgentIsReady,\n normalizeAgentGUIAgents,\n resolveAgentGUISelectedDirectoryAgent\n} from \"./agents\";\nexport {\n agentGUIDefaultTargetProviders,\n createLocalAgentGUIAgentTarget,\n createLocalAgentGUIAgentTargets,\n createSharedAgentGUIAgentTarget,\n localAgentGUIAgentTargetId,\n normalizeAgentGUIAgentTargets,\n resolveAgentGUIAgentTarget\n} from \"./agentTargets\";\nexport type {\n AgentGUIAgent,\n AgentGUIAgentDirectoryPort,\n AgentGUIAgentDirectorySnapshot,\n AgentGUIAgentDirectoryStatus,\n AgentGUIAgentAvailability,\n AgentGUIAgentAvailabilityAction,\n AgentGUIAgentAvailabilityStatus,\n AgentGUIAgentOwner,\n AgentGUIAgentOwnership,\n AgentGUIHomeSuggestionId,\n AgentGUIAllAgentsPresentation,\n AgentGUIProvider,\n AgentGUIProviderRailAllPresentation,\n AgentGUIProviderRailMode,\n AgentGUIProviderReadinessGate,\n AgentGUIProviderReadinessGateAction,\n AgentGUIProviderReadinessGateStatus,\n AgentGUIAgentTarget,\n AgentGUIAgentTargetBadge,\n AgentGUIAgentTargetRef\n} from \"./types\";\nexport {\n AgentGuiI18nProvider,\n agentGuiI18nModule,\n agentGuiI18nResources\n} from \"./i18n/index\";\nexport type { AgentGuiI18nLocale } from \"./i18n/index\";\nexport { agentGuiDockIconUrl, agentGuiDockIconUrls } from \"./dockIcons\";\nexport {\n AGENT_GUI_DETAIL_MIN_WIDTH_PX,\n AGENT_GUI_EXPANDED_TARGET_WIDTH_PX,\n AGENT_GUI_STANDALONE_AUTO_COLLAPSE_WIDTH_PX,\n resolveAgentGUIExpandedWindowFrame,\n shouldAutoCollapseAgentGUIConversationRail\n} from \"./agent-gui/agentGuiNode/model/agentGuiRailLayout\";\nexport type {\n AgentGUIAgentsEmptyRenderer,\n AgentGUIProviderUnavailableStateContext,\n AgentGUIProviderUnavailableStateRenderer,\n AgentGUISidebarFooterContext,\n AgentGUISidebarFooterRenderer\n} from \"./agent-gui/agentGuiNode/AgentGUINodeView\";\nexport {\n AGENT_CONTEXT_MENTION_PROVIDER_IDS,\n type AgentContextMentionProviderId,\n type AgentContextMentionProvider\n} from \"./agent-gui/agentGuiNode/agentContextMentionProvider\";\nexport { preloadAgentMentionBrowse } from \"./agent-gui/agentGuiNode/AgentMentionSearchController\";\nexport { AgentActivityHostProvider } from \"./agentActivityHost\";\nexport type { AgentActivityHostProviderProps } from \"./agentActivityHost\";\nexport { useEngineSelector } from \"./shared/engine/useEngineSelector\";\nexport type { EngineStateStore } from \"./shared/engine/useEngineSelector\";\nexport {\n dispatchAgentPlanPromptAction,\n selectAgentPlanPromptTurn\n} from \"./shared/agentConversation/agentPlanPromptDispatch\";\nexport type { AgentPlanPromptAction } from \"./shared/agentConversation/agentPlanPromptDispatch\";\nexport {\n AgentActivityRuntimeProvider,\n resetAgentActivityRuntimeForTests,\n setAgentActivityRuntimeForTests,\n useAgentActivitySnapshot,\n useAgentActivityRuntime,\n useOptionalAgentActivityRuntime\n} from \"./agentActivityRuntime\";\nexport type {\n AgentActivityRuntime,\n AgentActivityRuntimeListSessionMessagesInput,\n AgentActivityRuntimeProviderProps,\n AgentActivityRuntimePromptContentBlock,\n AgentActivityRuntimeDeleteSessionsBatchInput,\n AgentActivityRuntimeDeleteSessionsBatchResult,\n AgentActivityRuntimeSessionSectionDeletionCandidates,\n AgentActivityRuntimeSessionSectionScopeInput,\n AgentActivityRuntimeSetSessionPinnedInput,\n AgentActivityRuntimeUploadPromptContentInput,\n AgentActivityRuntimeUploadPromptContentResult,\n AgentActivityRuntimeUpdateSessionSettingsInput,\n AgentActivityRuntimeUpdateSessionSettingsResult\n} from \"./agentActivityRuntime\";\nexport type {\n AgentHostApi,\n AgentHostAgentTargetAuthenticatedAccount,\n AgentHostAgentTargetSetupSnapshot,\n AgentHostAgentTargetSetupState,\n AgentHostAgentTargetSetupWatch,\n AgentHostApplyWorkspaceGitPatchInput,\n AgentHostInputApi,\n AgentHostSelectFilesInput,\n AgentHostRuntimeApi,\n AgentProviderProbeListInput,\n AgentProviderProbeListResult\n} from \"./host/agentHostApi\";\nexport type {\n AgentProbeProvider,\n AgentProbeSnapshot,\n PersistWriteResult,\n ReadWorkspaceAgentReadStateInput,\n AgentUsageQuota,\n AgentUsageSnapshot,\n WorkspaceAgentReadStateSnapshot,\n WriteWorkspaceAgentReadStateInput\n} from \"./shared/contracts/dto\";\nexport {\n selectNeedsAttentionCount,\n selectNeedsAttentionItems\n} from \"@tutti-os/agent-activity-core\";\nexport type {\n AgentActivityAdapter,\n AgentActivityMessage,\n AgentActivityNeedsAttentionItem,\n AgentActivitySnapshot\n} from \"@tutti-os/agent-activity-core\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA;AAAA,EACE;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../index.ts"],"sourcesContent":["export {\n getAgentCustomMentionKind,\n registerAgentCustomMentionKind,\n resetAgentCustomMentionKindsForTests,\n type AgentCustomMentionChipContext,\n type AgentCustomMentionIdentity,\n type AgentCustomMentionKindDefinition,\n type AgentCustomMentionPresentation\n} from \"./shared/agentCustomMentionKinds\";\nexport {\n AGENT_PASTED_TEXT_BLOCK_KIND,\n AGENT_PASTED_TEXT_MENTION_KIND\n} from \"./shared/pastedTextKinds\";\nexport { AgentGUI } from \"./AgentGUI\";\nexport type {\n AgentGUIProps,\n AgentGUIReferenceProvenanceFilterCatalog\n} from \"./AgentGUI\";\nexport type { AgentGUIComposerAppendRequest } from \"./agent-gui/agentGuiNode/controller/useAgentGUIComposerAppendRequest\";\nexport type { AgentComposerDraftFile } from \"./agent-gui/agentGuiNode/model/agentGuiNodeTypes\";\nexport type { AgentGUIAccountMenuState } from \"./agent-gui/agentGuiNode/accountMenuState\";\nexport type {\n AgentGUIComposerContentType,\n AgentGUIComposerFocusMethod,\n AgentGUIEngagementContext,\n AgentGUIEngagementEvent,\n AgentGUIEngagementEventSink\n} from \"./agent-gui/agentGuiNode/engagement/agentGUIEngagement.types\";\nexport {\n agentGUIAgentIsReady,\n normalizeAgentGUIAgents,\n resolveAgentGUISelectedDirectoryAgent\n} from \"./agents\";\nexport {\n agentGUIDefaultTargetProviders,\n createLocalAgentGUIAgentTarget,\n createLocalAgentGUIAgentTargets,\n createSharedAgentGUIAgentTarget,\n localAgentGUIAgentTargetId,\n normalizeAgentGUIAgentTargets,\n resolveAgentGUIAgentTarget\n} from \"./agentTargets\";\nexport type {\n AgentGUIAgent,\n AgentGUIAgentDirectoryPort,\n AgentGUIAgentDirectorySnapshot,\n AgentGUIAgentDirectoryStatus,\n AgentGUIAgentAvailability,\n AgentGUIAgentAvailabilityAction,\n AgentGUIAgentAvailabilityStatus,\n AgentGUIAgentOwner,\n AgentGUIAgentOwnership,\n AgentGUIHomeSuggestionId,\n AgentGUIAllAgentsPresentation,\n AgentGUIProvider,\n AgentGUIProviderRailAllPresentation,\n AgentGUIProviderRailMode,\n AgentGUIProviderReadinessGate,\n AgentGUIProviderReadinessGateAction,\n AgentGUIProviderReadinessGateStatus,\n AgentGUIAgentTarget,\n AgentGUIAgentTargetBadge,\n AgentGUIAgentTargetRef\n} from \"./types\";\nexport {\n AgentGuiI18nProvider,\n agentGuiI18nModule,\n agentGuiI18nResources\n} from \"./i18n/index\";\nexport type { AgentGuiI18nLocale } from \"./i18n/index\";\nexport { agentGuiDockIconUrl, agentGuiDockIconUrls } from \"./dockIcons\";\nexport {\n AGENT_GUI_DETAIL_MIN_WIDTH_PX,\n AGENT_GUI_EXPANDED_TARGET_WIDTH_PX,\n AGENT_GUI_STANDALONE_AUTO_COLLAPSE_WIDTH_PX,\n resolveAgentGUIExpandedWindowFrame,\n shouldAutoCollapseAgentGUIConversationRail\n} from \"./agent-gui/agentGuiNode/model/agentGuiRailLayout\";\nexport type {\n AgentGUIAgentsEmptyRenderer,\n AgentGUIProviderUnavailableStateContext,\n AgentGUIProviderUnavailableStateRenderer,\n AgentGUISidebarFooterContext,\n AgentGUISidebarFooterRenderer\n} from \"./agent-gui/agentGuiNode/AgentGUINodeView\";\nexport {\n AGENT_CONTEXT_MENTION_PROVIDER_IDS,\n type AgentContextMentionProviderId,\n type AgentContextMentionProvider\n} from \"./agent-gui/agentGuiNode/agentContextMentionProvider\";\nexport { preloadAgentMentionBrowse } from \"./agent-gui/agentGuiNode/AgentMentionSearchController\";\nexport { AgentActivityHostProvider } from \"./agentActivityHost\";\nexport type { AgentActivityHostProviderProps } from \"./agentActivityHost\";\nexport { useEngineSelector } from \"./shared/engine/useEngineSelector\";\nexport type { EngineStateStore } from \"./shared/engine/useEngineSelector\";\nexport {\n dispatchAgentPlanPromptAction,\n selectAgentPlanPromptTurn\n} from \"./shared/agentConversation/agentPlanPromptDispatch\";\nexport type { AgentPlanPromptAction } from \"./shared/agentConversation/agentPlanPromptDispatch\";\nexport {\n AgentActivityRuntimeProvider,\n resetAgentActivityRuntimeForTests,\n setAgentActivityRuntimeForTests,\n useAgentActivitySnapshot,\n useAgentActivityRuntime,\n useOptionalAgentActivityRuntime\n} from \"./agentActivityRuntime\";\nexport type {\n AgentActivityRuntime,\n AgentActivityRuntimeListSessionMessagesInput,\n AgentActivityRuntimeProviderProps,\n AgentActivityRuntimePromptContentBlock,\n AgentActivityRuntimeDeleteSessionsBatchInput,\n AgentActivityRuntimeDeleteSessionsBatchResult,\n AgentActivityRuntimeSessionSectionDeletionCandidates,\n AgentActivityRuntimeSessionSectionScopeInput,\n AgentActivityRuntimeSetSessionPinnedInput,\n AgentActivityRuntimeUploadPromptContentInput,\n AgentActivityRuntimeUploadPromptContentResult,\n AgentActivityRuntimeUpdateSessionSettingsInput,\n AgentActivityRuntimeUpdateSessionSettingsResult\n} from \"./agentActivityRuntime\";\nexport type {\n AgentHostApi,\n AgentHostAgentTargetAuthenticatedAccount,\n AgentHostAgentTargetSetupSnapshot,\n AgentHostAgentTargetSetupState,\n AgentHostAgentTargetSetupWatch,\n AgentHostApplyWorkspaceGitPatchInput,\n AgentHostInputApi,\n AgentHostSelectFilesInput,\n AgentHostRuntimeApi,\n AgentHostUserProject,\n AgentProviderProbeListInput,\n AgentProviderProbeListResult\n} from \"./host/agentHostApi\";\nexport type {\n AgentProbeProvider,\n AgentProbeSnapshot,\n PersistWriteResult,\n ReadWorkspaceAgentReadStateInput,\n AgentUsageQuota,\n AgentUsageSnapshot,\n WorkspaceAgentReadStateSnapshot,\n WriteWorkspaceAgentReadStateInput\n} from \"./shared/contracts/dto\";\nexport {\n selectNeedsAttentionCount,\n selectNeedsAttentionItems\n} from \"@tutti-os/agent-activity-core\";\nexport type {\n AgentActivityAdapter,\n AgentActivityMessage,\n AgentActivityNeedsAttentionItem,\n AgentActivitySnapshot\n} from \"@tutti-os/agent-activity-core\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmJA;AAAA,EACE;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -1,4 +1,4 @@
1
- import { A as AgentContextMentionItem } from './agentFileMentionContracts-DY4Z70CN.js';
1
+ import { A as AgentContextMentionItem } from './agentFileMentionContracts-CWAeuL7S.js';
2
2
  import { AgentContextMentionProvider } from './context-mention-provider.js';
3
3
  import { MentionPaletteGroup, MentionPaletteState } from '@tutti-os/ui-rich-text/at-panel';
4
4
  import { ReferenceProvenanceFilter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
@@ -125,6 +125,7 @@ declare class AgentMentionSearchControllerBase {
125
125
  protected currentFileSearchLimit: number;
126
126
  protected currentIssueSearchLimit: number;
127
127
  protected agentGeneratedBrowsePath: string | null;
128
+ protected workspaceFileBrowsePaths: string[];
128
129
  protected rawGroups: AgentMentionRawGroups;
129
130
  protected issueTopicGroups: AgentMentionIssueTopicGroup[] | null;
130
131
  protected state: AgentMentionSearchState;
@@ -175,6 +176,7 @@ declare class AgentMentionSearchControllerBase {
175
176
  providerId: string;
176
177
  workspaceId: string;
177
178
  currentUserId: string;
179
+ directoryPath?: string;
178
180
  query: string;
179
181
  limit?: number;
180
182
  sessionCwd?: string;
@@ -213,6 +215,7 @@ declare class AgentMentionSearchControllerBase {
213
215
  protected resetSearchLimits(): void;
214
216
  protected resetRawGroups(): void;
215
217
  protected resetAgentGeneratedBrowsePath(): void;
218
+ protected resetWorkspaceFileBrowsePaths(): void;
216
219
  protected resetTotalCounts(): void;
217
220
  protected setState(state: AgentMentionSearchState): void;
218
221
  protected groupsFromRawGroups(): AgentMentionGroup[];
@@ -270,8 +273,10 @@ declare class AgentMentionSearchController extends AgentMentionSearchControllerB
270
273
  private runBrowsePreload;
271
274
  protected cancelPendingPreload(): void;
272
275
  enterCategory(category: AgentMentionFilterId): void;
273
- selectAgentGeneratedMentionItem(item: AgentContextMentionItem): boolean;
274
- exitAgentGeneratedBrowse(): boolean;
276
+ selectFileMentionNavigationItem(item: AgentContextMentionItem): boolean;
277
+ exitFileMentionBrowse(): boolean;
278
+ private exitWorkspaceFileBrowse;
279
+ private loadWorkspaceFileDirectory;
275
280
  expandGroup(groupId: AgentMentionGroupId): void;
276
281
  close(): void;
277
282
  dispose(): void;
@@ -3,21 +3,21 @@ import {
3
3
  MAX_BROWSE_CACHE_ENTRIES,
4
4
  preloadAgentMentionBrowse,
5
5
  resetAgentMentionSearchBrowseCacheForTests
6
- } from "./chunk-XJ2U66WG.js";
6
+ } from "./chunk-YJKTYMF4.js";
7
7
  import "./chunk-USIFGHT3.js";
8
8
  import "./chunk-XJ34OIEQ.js";
9
9
  import "./chunk-R7AXDQCA.js";
10
- import "./chunk-KRG7EBHG.js";
10
+ import "./chunk-LWJITLCI.js";
11
11
  import "./chunk-LUGELG5V.js";
12
- import "./chunk-JM24HADP.js";
12
+ import "./chunk-RMQREVJY.js";
13
13
  import "./chunk-YMXYBG7U.js";
14
- import "./chunk-OKGXHKJ2.js";
14
+ import "./chunk-D5CIV4IB.js";
15
15
  import "./chunk-F5UR6EJG.js";
16
16
  import "./chunk-EDNJMG5T.js";
17
- import "./chunk-ZCNZ53CF.js";
17
+ import "./chunk-JVISXD4K.js";
18
18
  import "./chunk-PJP5BUU6.js";
19
19
  import "./chunk-7KVZPJ3O.js";
20
- import "./chunk-KACVD2GZ.js";
20
+ import "./chunk-T2CHVUXH.js";
21
21
  import "./chunk-MIJXEELH.js";
22
22
  import "./chunk-D2JUDUYY.js";
23
23
  import "./chunk-6CUELYIF.js";
@@ -14,17 +14,17 @@ import {
14
14
  resolveAgentGuiUnifiedDockLaunchPayload,
15
15
  resolveAgentGuiWorkbenchContributionCopy,
16
16
  resolveAgentGuiWorkbenchDefaultLaunchFrame
17
- } from "../chunk-WIQHLQFN.js";
17
+ } from "../chunk-EG7IIFNL.js";
18
18
  import "../chunk-TUWQV2MC.js";
19
19
  import "../chunk-MHOYBRCY.js";
20
- import "../chunk-RN7DI3Y2.js";
20
+ import "../chunk-YWKS4ESK.js";
21
21
  import "../chunk-5HIF53K5.js";
22
22
  import "../chunk-R2ZADXRB.js";
23
23
  import "../chunk-T2NICA5D.js";
24
24
  import "../chunk-DXT4W2SU.js";
25
25
  import "../chunk-2RQM7PJN.js";
26
26
  import "../chunk-7KVZPJ3O.js";
27
- import "../chunk-KACVD2GZ.js";
27
+ import "../chunk-T2CHVUXH.js";
28
28
  import "../chunk-MIJXEELH.js";
29
29
  import "../chunk-6CUELYIF.js";
30
30
  import "../chunk-QMMWKQOT.js";
@@ -10,7 +10,7 @@ import {
10
10
  resolveAgentGuiUnifiedDockLaunchPayload,
11
11
  resolveAgentGuiWorkbenchContributionCopy,
12
12
  resolveAgentGuiWorkbenchConversationIdentity
13
- } from "../chunk-WIQHLQFN.js";
13
+ } from "../chunk-EG7IIFNL.js";
14
14
  import {
15
15
  agentGuiWorkbenchDockEntryId,
16
16
  agentGuiWorkbenchDockIdentityFromIdentifier,
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  resolveAgentGuiWorkbenchHeaderTitle,
32
32
  resolveAgentGuiWorkbenchSessionTitle
33
- } from "../chunk-RN7DI3Y2.js";
33
+ } from "../chunk-YWKS4ESK.js";
34
34
  import {
35
35
  areAgentGuiWorkbenchNodeStatesEqual,
36
36
  areAgentGuiWorkbenchStatesEqual,
@@ -57,7 +57,7 @@ import "../chunk-T2NICA5D.js";
57
57
  import "../chunk-DXT4W2SU.js";
58
58
  import "../chunk-2RQM7PJN.js";
59
59
  import "../chunk-7KVZPJ3O.js";
60
- import "../chunk-KACVD2GZ.js";
60
+ import "../chunk-T2CHVUXH.js";
61
61
  import "../chunk-MIJXEELH.js";
62
62
  import "../chunk-6CUELYIF.js";
63
63
  import "../chunk-QMMWKQOT.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  resolveAgentGuiWorkbenchHeaderTitle,
3
3
  resolveAgentGuiWorkbenchSessionTitle
4
- } from "../chunk-RN7DI3Y2.js";
5
- import "../chunk-KACVD2GZ.js";
4
+ } from "../chunk-YWKS4ESK.js";
5
+ import "../chunk-T2CHVUXH.js";
6
6
  import "../chunk-MIJXEELH.js";
7
7
  import "../chunk-6CUELYIF.js";
8
8
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/agent-gui",
3
- "version": "0.0.125",
3
+ "version": "0.0.127",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -132,17 +132,17 @@
132
132
  "@tiptap/react": "^3.11.1",
133
133
  "@tiptap/starter-kit": "^3.11.1",
134
134
  "@tiptap/suggestion": "^3.11.1",
135
- "@tutti-os/agent-activity-core": "0.0.125",
136
- "@tutti-os/ui-i18n-runtime": "0.0.125",
137
- "@tutti-os/ui-react-hooks": "0.0.125",
138
- "@tutti-os/ui-rich-text": "0.0.125",
139
- "@tutti-os/ui-system": "0.0.125",
140
- "@tutti-os/workbench-surface": "0.0.125",
141
- "@tutti-os/workspace-external-core": "0.0.125",
142
- "@tutti-os/workspace-file-manager": "0.0.125",
143
- "@tutti-os/workspace-file-reference": "0.0.125",
144
- "@tutti-os/workspace-issue-manager": "0.0.125",
145
- "@tutti-os/workspace-user-project": "0.0.125",
135
+ "@tutti-os/agent-activity-core": "0.0.127",
136
+ "@tutti-os/ui-i18n-runtime": "0.0.127",
137
+ "@tutti-os/ui-react-hooks": "0.0.127",
138
+ "@tutti-os/ui-rich-text": "0.0.127",
139
+ "@tutti-os/ui-system": "0.0.127",
140
+ "@tutti-os/workbench-surface": "0.0.127",
141
+ "@tutti-os/workspace-external-core": "0.0.127",
142
+ "@tutti-os/workspace-file-manager": "0.0.127",
143
+ "@tutti-os/workspace-file-reference": "0.0.127",
144
+ "@tutti-os/workspace-issue-manager": "0.0.127",
145
+ "@tutti-os/workspace-user-project": "0.0.127",
146
146
  "clsx": "^2.1.1",
147
147
  "framer-motion": "^12.40.0",
148
148
  "lodash": "^4.17.21",
@@ -170,8 +170,8 @@
170
170
  "typescript": "^5.8.3",
171
171
  "vite": "^6.4.2",
172
172
  "vitest": "^4.0.13",
173
- "@tutti-os/client-tuttid-ts": "0.0.0",
174
- "@tutti-os/config-tsconfig": "0.0.0"
173
+ "@tutti-os/config-tsconfig": "0.0.0",
174
+ "@tutti-os/client-tuttid-ts": "0.0.0"
175
175
  },
176
176
  "peerDependencies": {
177
177
  "react": "^19.1.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../agent-gui/agentGuiNode/AgentFileMentionPalette.tsx","../shared/roomIssueStatusLabel.ts"],"sourcesContent":["import {\n normalizeAgentActivityDisplayStatus,\n type AgentActivityDisplayStatus\n} from \"@tutti-os/agent-activity-core\";\nimport {\n MentionPaletteFromState,\n flattenMentionPaletteEntries,\n renderMentionRow,\n type MentionPaletteEntry,\n type MentionPaletteState,\n type MentionPaletteTheme,\n type MentionRowClassNames,\n type MentionRowItem,\n type MentionRowStatusTag,\n type MentionRowStatusTone\n} from \"@tutti-os/ui-rich-text/at-panel\";\nimport { resolveIssueManagerStatusPresentation } from \"@tutti-os/workspace-issue-manager/ui\";\nimport { userAvatarPlaceholderUrl } from \"../../shared/userAvatarPlaceholder\";\nimport { translate } from \"../../i18n/index\";\nimport { managedAgentRoundedIconUrl } from \"../../shared/managedAgentIcons\";\nimport { workspaceAgentActivityStatusLabel } from \"../../shared/workspaceAgentActivityStatusLabel\";\nimport { roomIssueStatusLabel } from \"../../shared/roomIssueStatusLabel\";\nimport {\n resolveAgentMentionFileThumbnailUrl,\n resolveAgentMentionFileVisualKind\n} from \"../shared/mentionFilePresentation\";\nimport {\n agentMentionEmptyGroupLabel,\n agentMentionFilterLabel,\n agentMentionGroupLabel\n} from \"./AgentMentionLabels\";\nimport {\n AGENT_MENTION_FILTER_TAB_ORDER,\n mentionGroupExpandCount\n} from \"./agentMentionSearchHelpers\";\nimport {\n type AgentMentionGroup,\n type AgentMentionBrowseCategory,\n type AgentMentionFilterId,\n type AgentMentionGroupId,\n type AgentMentionSearchState\n} from \"./AgentMentionSearchController\";\nimport { agentGeneratedMentionItemKey } from \"./agentMentionAgentGeneratedFilesPresentation\";\nimport type { AgentContextMentionItem } from \"./agentRichText/agentFileMentionExtension\";\nimport type { ReactNode } from \"react\";\n\nexport interface AgentMentionPaletteEntry {\n key: string;\n type: \"category\" | \"item\" | \"expand\";\n categoryId?: AgentMentionBrowseCategory[\"id\"];\n groupId?: AgentMentionGroupId;\n item?: AgentContextMentionItem;\n}\n\nexport interface AgentFileMentionPaletteProps {\n state: AgentMentionSearchState;\n highlightedKey: string | null;\n label: string;\n loadingLabel: string;\n emptyLabel: string;\n errorLabel: string;\n tabHintLabel: string;\n maxHeightPx: number;\n shouldCenterHighlightedItem?: boolean;\n onHighlightChange: (key: string) => void;\n onSelectItem: (entry: AgentContextMentionItem) => void;\n onSelectCategory: (categoryId: AgentMentionBrowseCategory[\"id\"]) => void;\n onSelectFilter: (filter: AgentMentionFilterId) => void;\n onExpandGroup: (groupId: AgentMentionGroupId) => void;\n onNavigateHierarchy?: (delta: 1 | -1) => void;\n onNavigateIntoItem?: (item: AgentContextMentionItem) => void;\n /**\n * 可选:点击 issue / app 行末尾的「查看产物」入口时回调(打开引用 picker 并定位)。\n * 仅 workspace-issue / workspace-app 行渲染该入口。\n */\n onOpenReferences?: (item: AgentContextMentionItem) => void;\n /** Controlled provenance filter supplied by the AgentGUI orchestration layer. */\n provenanceFilterControl?: ReactNode;\n}\n\nconst AGENT_MENTION_PALETTE_THEME: MentionPaletteTheme = {\n classNames: {\n palette: \"agent-gui-node__mention-palette\",\n header: \"agent-gui-node__mention-palette-header\",\n footer: \"agent-gui-node__mention-palette-footer\",\n tabs: \"agent-gui-node__mention-palette-tabs\",\n scrollRegion: \"agent-gui-node__mention-palette-scroll-region\",\n scrollbar:\n \"workspace-agents-status-panel__scrollbar agent-gui-node__mention-palette-scrollbar\",\n scrollbarThumb: \"workspace-agents-status-panel__scrollbar-thumb\",\n hint: \"agent-gui-node__mention-palette-hint\",\n hintItem: \"agent-gui-node__mention-palette-hint-item\",\n hintButton: \"agent-gui-node__mention-palette-hint-button\",\n hintSeparator: \"agent-gui-node__mention-palette-hint-separator\",\n shortcut: \"agent-gui-node__mention-palette-shortcut\",\n shortcutArrow: \"agent-gui-node__mention-palette-shortcut--arrow\",\n shortcutButton: \"agent-gui-node__mention-palette-shortcut-button\",\n shortcutGroup: \"agent-gui-node__mention-palette-shortcut-group\"\n },\n testIds: {\n emptyState: \"agent-gui-mention-palette-empty-state\",\n hint: \"agent-gui-mention-palette-hint\",\n scrollbar: \"agent-gui-mention-palette-scrollbar\",\n loadingSpinner: \"agent-mention-loading-spinner\"\n },\n groupDividerAttribute: \"data-agent-mention-group-divider\"\n};\n\n/**\n * The agent composer's existing structural row class names. Passing these to\n * {@link renderMentionRow} keeps the rendered DOM byte-identical to the\n * pre-refactor markup (the agent stylesheet `agentactivity.css` owns these\n * rules and the agent spec greps them), while the shared component defaults to\n * package-owned `rich-text-at-mention-*` names for other surfaces.\n */\nconst AGENT_MENTION_ROW_CLASS_NAMES: MentionRowClassNames = {\n fileIcon: \"agent-gui-node__mention-file-icon\",\n fileThumb: \"agent-gui-node__mention-file-thumb\",\n kindIcon: \"tsh-agent-object-token__kind-icon\",\n avatarImgUserPlaceholder:\n \"workspace-agents-status-panel__avatar-img--user-placeholder\"\n};\n\n/**\n * Stable per-item key suffix. The shared shell composes the full entry key as\n * `${group.id}:${agentMentionItemKey(item)}`, matching the agent's historical\n * `${group.id}:${item.kind}:${...}` format so highlight keys stay compatible.\n */\nexport function agentMentionItemKey(item: AgentContextMentionItem): string {\n return `${item.kind}:${\n item.kind === \"file\" ? agentGeneratedMentionItemKey(item) : item.targetId\n }`;\n}\n\nexport function isAgentMentionItemDisabled(\n item: AgentContextMentionItem\n): boolean {\n return (\n item.kind === \"agent-target\" &&\n item.availabilityStatus !== undefined &&\n item.availabilityStatus !== \"ready\" &&\n item.availabilityStatus !== \"available\"\n );\n}\n\nexport function flattenAgentMentionPaletteEntries(\n state: AgentMentionSearchState\n): AgentMentionPaletteEntry[] {\n return flattenMentionPaletteEntries(\n state,\n (item) => agentMentionItemKey(item),\n isAgentMentionItemDisabled\n ).map((entry: MentionPaletteEntry): AgentMentionPaletteEntry => {\n if (entry.type === \"item\") {\n const item =\n entry.groupId !== undefined && entry.itemIndex !== undefined\n ? state.groups.find((group) => group.id === entry.groupId)?.items[\n entry.itemIndex\n ]\n : undefined;\n return {\n key: entry.key,\n type: \"item\",\n groupId: entry.groupId as AgentMentionGroupId | undefined,\n item\n };\n }\n return {\n key: entry.key,\n type: entry.type,\n categoryId: entry.categoryId as AgentMentionFilterId | undefined,\n groupId: entry.groupId as AgentMentionGroupId | undefined\n };\n });\n}\n\nexport function groupStartKeys(state: AgentMentionSearchState): string[] {\n if (state.mode === \"browse\") {\n return state.categories.map((category) => `category:${category.id}`);\n }\n return state.groups\n .map((group) => {\n const firstItem = group.items.find(\n (item) => !isAgentMentionItemDisabled(item)\n );\n if (firstItem) {\n return `${group.id}:${agentMentionItemKey(firstItem)}`;\n }\n if (group.hasMore) {\n return `expand:${group.id}`;\n }\n return null;\n })\n .filter((key): key is string => key !== null);\n}\n\nexport function AgentFileMentionPalette({\n state,\n highlightedKey,\n label,\n loadingLabel,\n emptyLabel,\n errorLabel,\n tabHintLabel,\n maxHeightPx,\n shouldCenterHighlightedItem = false,\n onHighlightChange,\n onSelectItem,\n onSelectCategory,\n onSelectFilter,\n onExpandGroup,\n onNavigateHierarchy,\n onNavigateIntoItem,\n onOpenReferences,\n provenanceFilterControl\n}: AgentFileMentionPaletteProps): React.JSX.Element {\n \"use memo\";\n const openReferencesLabel = translate(\n \"agentHost.agentGui.mentionOpenReferences\"\n );\n const navigateIntoLabel = translate(\n \"agentHost.agentGui.fileMentionEnterFolder\"\n );\n const filter = state.filter as AgentMentionFilterId;\n const highlightedBrowseCategory = highlightedKey?.startsWith(\"category:\")\n ? highlightedKey.slice(\"category:\".length)\n : null;\n const showBrowseHint = shouldShowBrowseSearchHint({\n browseFilter: filter,\n groups: state.groups,\n highlightedBrowseCategory,\n mode: state.mode\n });\n\n // Browse mode carries its own category list (with labels); results mode tabs\n // are the fixed agent filter order. The shared shell renders a single tab\n // source, so resolve the right one here.\n const categories =\n state.mode === \"browse\"\n ? state.categories\n : AGENT_MENTION_FILTER_TAB_ORDER.map((id) => ({\n id,\n label: agentMentionFilterLabel(id)\n }));\n\n // When the agent wants the single keyboard browse hint we hand the shell an\n // empty group list so it renders its (keyboard-icon) empty state with our\n // computed hint copy. Otherwise we map the real groups, decorating each with\n // the agent-specific label / empty / expand / spacing chrome.\n const shellState: MentionPaletteState<AgentContextMentionItem> =\n showBrowseHint\n ? { ...state, categories, groups: [] }\n : {\n ...state,\n categories,\n groups: state.groups.map((group, index) =>\n decorateMentionGroup(\n group,\n index,\n state.groups,\n filter,\n state.query\n )\n )\n };\n\n const emptyLabelForShell = showBrowseHint\n ? browseHintForFilter(filter)\n : resolveMentionPaletteEmptyLabel({\n emptyLabel,\n filter,\n mode: state.mode,\n query: state.query\n });\n\n return (\n <MentionPaletteFromState<AgentContextMentionItem>\n state={shellState}\n highlightedKey={highlightedKey}\n getItemKey={agentMentionItemKey}\n isItemDisabled={isAgentMentionItemDisabled}\n renderItem={(item, { group }) =>\n renderMentionRow(agentMentionItemToRowItem(item), {\n classNames: AGENT_MENTION_ROW_CLASS_NAMES,\n dataAttributeMode: \"agent\",\n ...(onNavigateIntoItem && canNavigateIntoMentionItem(item, group)\n ? {\n onNavigateInto: () => onNavigateIntoItem(item),\n navigateIntoLabel\n }\n : {}),\n ...(onOpenReferences && isReferenceableMentionItem(item)\n ? {\n onOpenReferences: () => onOpenReferences(item),\n openReferencesLabel\n }\n : {})\n })\n }\n labels={{\n loading: loadingLabel,\n empty: emptyLabelForShell,\n error: errorLabel,\n tabHint: tabHintLabel,\n listbox: label\n }}\n hintLabels={{\n cycleFilter: translate(\"agentHost.agentGui.fileMentionSwitchCategory\"),\n moveSelection: translate(\n \"agentHost.agentGui.fileMentionSwitchSelection\"\n ),\n navigateHierarchy: translate(\n \"agentHost.agentGui.fileMentionNavigateHierarchy\"\n )\n }}\n maxHeightPx={maxHeightPx}\n headerActions={\n filter === \"session\" || filter === \"file\" || filter === \"issue\"\n ? provenanceFilterControl\n : undefined\n }\n scrollHighlightedIntoViewCentered={shouldCenterHighlightedItem}\n theme={AGENT_MENTION_PALETTE_THEME}\n callbacks={{\n onHighlightChange,\n onActiveCategoryIdChange: (categoryId) => {\n onSelectCategory(categoryId as AgentMentionBrowseCategory[\"id\"]);\n onSelectFilter(categoryId as AgentMentionFilterId);\n },\n onExpandGroup: (groupId) =>\n onExpandGroup(groupId as AgentMentionGroupId),\n onSelectItem\n }}\n onNavigateHierarchy={onNavigateHierarchy}\n />\n );\n}\n\nexport const AgentContextMentionPalette = AgentFileMentionPalette;\nexport type AgentContextMentionPaletteProps = AgentFileMentionPaletteProps;\n\n/**\n * Map a controller group onto the shared shell group, layering in the\n * agent-specific chrome the generic shell intentionally omits: translated\n * group / empty / expand labels, file-search chrome suppression, and the extra\n * top margin between the \"my sessions\" and \"collab sessions\" groups.\n */\nfunction decorateMentionGroup(\n group: AgentMentionGroup,\n index: number,\n groups: ReadonlyArray<AgentMentionGroup>,\n filter: AgentMentionFilterId,\n query: string\n): AgentMentionGroup {\n const groupId = group.id as AgentMentionGroupId;\n const suppressChrome = shouldSuppressFileSearchGroupChrome(filter, query);\n const followsMySessions =\n groupId === \"collab_sessions\" &&\n (groups[index - 1]?.id as AgentMentionGroupId) === \"my_sessions\";\n const showLabel = shouldRenderMentionGroupLabel({\n filter,\n groupCount: groups.length,\n groupId,\n groupLabel: group.label,\n query\n });\n const groupLabel = group.label ?? agentMentionGroupLabel(groupId);\n return {\n ...group,\n label: showLabel ? groupLabel : undefined,\n emptyLabel: suppressChrome\n ? undefined\n : (group.emptyLabel ?? agentMentionEmptyGroupLabel(groupId, query)),\n expandLabel: group.hasMore\n ? translate(\"agentHost.agentGui.contextPickerExpandMore\", {\n count: mentionGroupExpandCount(group, filter)\n })\n : undefined,\n expandLoadingLabel: translate(\n \"agentHost.agentGui.contextPickerLoadMoreLoading\"\n ),\n expandErrorLabel: translate(\n \"agentHost.agentGui.contextPickerLoadMoreRetry\"\n ),\n sectionClassName: followsMySessions ? \"mt-2\" : undefined,\n hideTopDivider: suppressChrome\n };\n}\n\nfunction shouldSuppressFileSearchGroupChrome(\n filter: AgentMentionFilterId,\n query: string\n): boolean {\n return filter === \"file\" && query.trim().length > 0;\n}\n\nfunction resolveMentionPaletteEmptyLabel(input: {\n emptyLabel: string;\n filter: AgentMentionFilterId;\n mode: AgentMentionSearchState[\"mode\"];\n query: string;\n}): string {\n if (\n input.mode === \"results\" &&\n input.filter === \"file\" &&\n input.query.trim().length > 0\n ) {\n return translate(\"agentHost.agentGui.mentionNoMatchingFiles\");\n }\n if (input.filter === \"session\") {\n return agentMentionEmptyGroupLabel(\"my_sessions\", input.query);\n }\n if (input.filter === \"app\") {\n return agentMentionEmptyGroupLabel(\"apps\", input.query);\n }\n if (input.filter === \"agent\") {\n return agentMentionEmptyGroupLabel(\"agents\", input.query);\n }\n if (input.filter === \"issue\") {\n return agentMentionEmptyGroupLabel(\"issues\", input.query);\n }\n return input.emptyLabel;\n}\n\nfunction shouldRenderMentionGroupLabel(input: {\n filter: AgentMentionFilterId;\n groupCount: number;\n groupId: AgentMentionGroupId;\n groupLabel?: string;\n query: string;\n}): boolean {\n if (shouldSuppressFileSearchGroupChrome(input.filter, input.query)) {\n return false;\n }\n if (input.groupCount !== 1) {\n return true;\n }\n if (input.groupId.startsWith(\"agent:\")) {\n return true;\n }\n return (\n (input.groupLabel ?? agentMentionGroupLabel(input.groupId)) !==\n agentMentionFilterLabel(input.filter)\n );\n}\n\n/**\n * Resolve an agent mention item into the shared, display-ready\n * {@link MentionRowItem} view-model the generic {@link renderMentionRow}\n * consumes. All agent-specific bits — i18n via {@link translate}, the user\n * avatar placeholder asset, the managed-agent rounded icon, and the activity /\n * issue status labels — are resolved here so the shared renderer stays pure.\n */\nfunction agentMentionItemToRowItem(\n item: AgentContextMentionItem\n): MentionRowItem {\n if (item.kind === \"file\") {\n const visualKind = resolveAgentMentionFileVisualKind({\n entryKind: item.entryKind,\n href: item.href,\n mentionNavigation: item.mentionNavigation,\n name: item.name,\n path: item.path\n });\n const childCountLabel =\n item.mentionNavigation === \"agent-generated-folder\" &&\n typeof item.childCount === \"number\" &&\n item.childCount > 0\n ? translate(\"agentHost.agentGui.mentionAgentGeneratedFolderFileCount\", {\n count: item.childCount\n })\n : null;\n return {\n kind: \"file\",\n name: item.name,\n visualKind,\n thumbnailUrl: resolveAgentMentionFileThumbnailUrl(item) ?? null,\n childCountLabel,\n entryKind: item.entryKind,\n mentionNavigation: item.mentionNavigation\n };\n }\n\n if (item.kind === \"session\") {\n const isMySession = item.scope === \"my_sessions\";\n return {\n kind: \"session\",\n participant: isMySession\n ? item.agentName\n : `${item.initiatorName} & ${item.agentName}`,\n summary: item.title,\n userAvatarUrl: isMySession ? null : (item.initiatorAvatarUrl ?? null),\n userAvatarPlaceholderUrl,\n agentIconUrl:\n item.agentIconUrl?.trim() ||\n managedAgentRoundedIconUrl(\n mentionSessionAgentProvider(item) ?? item.agentName\n ),\n showUserAvatar: !isMySession,\n statusTag: agentSessionStatusTag(item.status)\n };\n }\n\n if (item.kind === \"workspace-app\") {\n return {\n kind: \"app\",\n name: item.name,\n description: mentionDescriptionWithoutTerminalPeriod(item.description),\n iconUrl: item.iconUrl ?? null\n };\n }\n\n if (item.kind === \"agent-target\") {\n return {\n kind: \"app\",\n name: item.name,\n description: mentionDescriptionWithoutTerminalPeriod(item.description),\n iconUrl: item.iconUrl ?? managedAgentRoundedIconUrl(item.agentProviderId),\n statusTag: agentTargetAvailabilityStatusTag(item.availabilityStatus)\n };\n }\n\n if (item.kind === \"workspace-reference\") {\n return {\n kind: \"app\",\n name: item.name,\n description: null,\n iconUrl: item.iconUrl ?? null\n };\n }\n\n if (item.kind === \"workspace-app-factory\") {\n return {\n kind: \"app-factory\",\n name: item.name\n };\n }\n\n if (item.kind === \"custom\") {\n // 自定义 mention 只经 draftPrompt prefill 进入 composer,不出现在 @ 面板候选;\n // 兜底按通用条目展示(label 即注册方给的 name)。\n return {\n kind: \"issue\",\n title: item.name,\n creatorName: null,\n statusTag: null\n };\n }\n\n return {\n kind: \"issue\",\n title: item.title,\n creatorName: item.creatorName ?? null,\n statusTag: agentIssueStatusTag(item.status)\n };\n}\n\nfunction mentionDescriptionWithoutTerminalPeriod(\n description: string | null | undefined\n): string | null {\n const normalizedDescription = description?.trimEnd();\n return normalizedDescription\n ? normalizedDescription.replace(/[。.]+$/u, \"\")\n : null;\n}\n\n/**\n * 仅 workspace-issue 行,以及声明了能够提供产物文件(reference)的 workspace-app 行,\n * 才在行末尾展示「查看产物」入口。应用是否能提供产物文件由其 manifest 的\n * references 能力决定(`referencesListSupported`),而非硬编码应用名单。\n */\nfunction isReferenceableMentionItem(item: AgentContextMentionItem): boolean {\n if (item.kind === \"workspace-issue\") {\n return true;\n }\n if (item.kind === \"workspace-app\") {\n return item.referencesListSupported === true;\n }\n return false;\n}\n\nfunction canNavigateIntoMentionItem(\n item: AgentContextMentionItem,\n group: AgentMentionGroup\n): boolean {\n return (\n group.id === \"agent_generated_files\" &&\n item.kind === \"file\" &&\n item.mentionNavigation === \"agent-generated-folder\"\n );\n}\n\nfunction mentionSessionAgentProvider(\n item: Extract<AgentContextMentionItem, { kind: \"session\" }>\n): string | null {\n const queryStart = item.href.indexOf(\"?\");\n if (queryStart < 0) {\n return null;\n }\n return new URLSearchParams(item.href.slice(queryStart + 1)).get(\"provider\");\n}\n\nfunction agentSessionStatusTag(\n status: string | undefined\n): MentionRowStatusTag | null {\n if (!status) {\n return null;\n }\n const activityStatus = normalizeAgentActivityDisplayStatus(status);\n return {\n label: workspaceAgentActivityStatusLabel(activityStatus),\n tone: mentionStatusTone(activityStatus),\n pulse: activityStatus === \"working\" || activityStatus === \"waiting\",\n variant: \"activity\",\n dataStatus: activityStatus\n };\n}\n\n/**\n * Shared agent targets remain discoverable while their owner is offline. Their\n * availability badge communicates whether the target can currently be invoked.\n */\nfunction agentTargetAvailabilityStatusTag(\n availabilityStatus: string | undefined\n): MentionRowStatusTag {\n const available =\n availabilityStatus === undefined ||\n availabilityStatus === \"ready\" ||\n availabilityStatus === \"available\";\n return {\n label: translate(\n available\n ? \"agentHost.agentGui.mentionAgentTargetAvailable\"\n : \"agentHost.agentGui.mentionAgentTargetUnavailable\"\n ),\n tone: available ? \"green\" : \"neutral\",\n variant: \"activity\",\n dataStatus: available ? \"available\" : \"unavailable\"\n };\n}\n\nfunction agentIssueStatusTag(\n status: string | undefined\n): MentionRowStatusTag | null {\n if (!status) {\n return null;\n }\n const presentation = resolveIssueManagerStatusPresentation(status);\n return {\n label: roomIssueStatusLabel(status),\n tone: presentation.mentionTone,\n variant: \"issue\",\n dataStatus: presentation.dataStatus\n };\n}\n\nfunction mentionStatusTone(\n status: AgentActivityDisplayStatus\n): MentionRowStatusTone {\n if (status === \"working\") {\n return \"blue\";\n }\n if (status === \"waiting\" || status === \"canceled\") {\n return \"amber\";\n }\n if (status === \"completed\" || status === \"idle\") {\n return \"green\";\n }\n if (status === \"failed\") {\n return \"red\";\n }\n return \"neutral\";\n}\n\nfunction browseHintForFilter(filter: AgentMentionFilterId): string {\n switch (filter) {\n case \"agent\":\n return translate(\"agentHost.agentGui.contextPickerBrowseAgentHint\");\n case \"app\":\n return translate(\"agentHost.agentGui.contextPickerBrowseAppHint\");\n case \"file\":\n return translate(\"agentHost.agentGui.contextPickerBrowseFileHint\");\n case \"session\":\n return translate(\"agentHost.agentGui.contextPickerBrowseSessionHint\");\n case \"issue\":\n return translate(\"agentHost.agentGui.contextPickerBrowseIssueHint\");\n }\n}\n\nfunction hasInteractiveGroupEntries(\n groups: ReadonlyArray<AgentMentionGroup>\n): boolean {\n return groups.some((group) => group.items.length > 0 || group.hasMore);\n}\n\nfunction isFileBrowseGroupsOnlyEmpty(\n groups: ReadonlyArray<AgentMentionGroup>\n): boolean {\n const fileGroups = groups.filter(\n (group) =>\n group.id === \"opened_files\" || group.id === \"agent_generated_files\"\n );\n if (fileGroups.length === 0) {\n return false;\n }\n return fileGroups.every(\n (group) => group.items.length === 0 && !group.hasMore\n );\n}\n\nfunction shouldShowBrowseSearchHint(input: {\n browseFilter: AgentMentionFilterId;\n groups: ReadonlyArray<AgentMentionGroup>;\n highlightedBrowseCategory: string | null;\n mode: AgentMentionSearchState[\"mode\"];\n}): boolean {\n if (input.mode !== \"browse\" || hasInteractiveGroupEntries(input.groups)) {\n return false;\n }\n if (input.groups.length === 0) {\n return true;\n }\n if (\n input.highlightedBrowseCategory !== null &&\n input.highlightedBrowseCategory !== input.browseFilter\n ) {\n return true;\n }\n return (\n input.browseFilter === \"file\" && isFileBrowseGroupsOnlyEmpty(input.groups)\n );\n}\n","import { translate, type TranslateFn } from \"../i18n/index\";\n\nexport function roomIssueStatusLabel(status: string, t?: TranslateFn): string {\n const translateFn = t ?? translate;\n switch (status) {\n case \"not_started\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusNotStarted\");\n case \"running\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusRunning\");\n case \"in_progress\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusInProgress\");\n case \"pending_acceptance\":\n return translateFn(\n \"agentHost.roomIssueNode.issueStatusPendingAcceptance\"\n );\n case \"completed\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusCompleted\");\n case \"failed\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusFailed\");\n case \"canceled\":\n return translateFn(\"agentHost.roomIssueNode.issueStatusCanceled\");\n default:\n return (\n status || translateFn(\"agentHost.roomIssueNode.issueStatusUnknown\")\n );\n }\n}\n"],"mappings":"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","names":[]}