@tutti-os/agent-gui 0.0.101 → 0.0.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -98,6 +98,37 @@ pnpm check:agent-activity-runtime-boundaries
98
98
  `hostCapabilities`, `hostActions`, and `renderSlots`. Extend the owning object;
99
99
  do not restore flat compatibility props.
100
100
 
101
+ ## Reference Provenance Filtering
102
+
103
+ Reference provenance filtering is disabled by default. Collaboration hosts can
104
+ opt in by injecting the complete catalog through
105
+ `hostCapabilities.referenceProvenanceFilterCatalog`:
106
+
107
+ ```tsx
108
+ <AgentGUI
109
+ {...props}
110
+ hostCapabilities={{
111
+ referenceProvenanceFilterCatalog: {
112
+ enabledDimensions: ["agent", "member"],
113
+ agentOptions: [{ id: "agent-1", label: "Agent 1" }],
114
+ memberOptions: [{ id: "member-1", label: "Member 1" }]
115
+ }
116
+ }}
117
+ />
118
+ ```
119
+
120
+ The catalog is host-owned: option IDs must be durable identities understood by
121
+ the host's injected reference/search providers. Active dimensions are passed
122
+ to those providers as query metadata and must be enforced before pagination.
123
+ Sources that cannot enforce an active dimension must fail closed instead of
124
+ returning unfiltered results.
125
+
126
+ `referenceProvenanceFilterEnabled` remains as the legacy Tutti personal-edition
127
+ switch. When enabled without an explicit catalog, AgentGUI derives only the
128
+ Agent options from the Agent directory and keeps `memberOptions` empty. Omitting
129
+ both properties keeps the filter off. An explicitly supplied catalog (including
130
+ `null`) takes precedence over the legacy switch.
131
+
101
132
  ## Home Suggestions
102
133
 
103
134
  The five starter entries below the empty new-session composer are enabled by
@@ -4,7 +4,7 @@ import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core';
5
5
  import { u as AgentHostAgentSessionComposerSettings, y as AgentHostUnactivateAgentSessionResult, h as AgentGUIAgentTarget, n as AgentGUIProvider, z as AgentPromptContentBlock, m as AgentGUINodeData, P as Point, o as AgentGUIProviderRailAllPresentation, p as AgentGUIProviderRailMode, q as AgentGUIProviderReadinessGate, l as AgentGUIHomeSuggestionId, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, k as AgentGUIAllAgentsPresentation } from './types-CnT8rNUI.js';
6
6
  import { A as AgentComposerDraft, q as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, l as AgentMessageMarkdownWorkspaceAppIcon, r as AgentSlashCommandCapability, c as AgentGUINodeViewModel, n as AgentProbeSnapshot, a as AgentComposerDraftFile, i as AgentHostInputApi } from './agentGuiNodeTypes-BH3lz6gn.js';
7
- import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter } from '@tutti-os/workspace-file-reference/contracts';
7
+ import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-58IjMU-u.js';
9
9
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
10
10
  import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
@@ -983,6 +983,14 @@ interface AgentGUINodeRuntimeRequests {
983
983
  onProbeRefreshRequest?: WorkspaceDesktopAgentProbeRefreshRequest;
984
984
  }
985
985
  interface AgentGUINodeHostCapabilities {
986
+ /**
987
+ * Complete host-owned catalog for reference provenance filtering. Supplying
988
+ * it explicitly opts the host into the dimensions declared by the catalog.
989
+ * Omit it to keep filtering disabled unless the legacy Agent-only flag is
990
+ * enabled.
991
+ */
992
+ referenceProvenanceFilterCatalog?: ReferenceProvenanceCatalog | null;
993
+ /** Legacy Tutti Agent-only opt-in. Prefer an explicit catalog in new hosts. */
986
994
  referenceProvenanceFilterEnabled?: boolean;
987
995
  capabilityMenuState?: AgentComposerCapabilityMenuState;
988
996
  accountMenuState?: AgentGUIAccountMenuState | null;
@@ -1,11 +1,11 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-FECh2x1p.js';
3
+ export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-BJ3As1gI.js';
4
4
  import './agentGuiNodeTypes-BH3lz6gn.js';
5
5
  export { l as AgentGUIHomeSuggestionId } from './types-CnT8rNUI.js';
6
6
  import './runtime-BBNdWgDU.js';
7
+ export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
7
8
  import '@tutti-os/agent-activity-core';
8
- import '@tutti-os/workspace-file-reference/contracts';
9
9
  import './agentFileMentionContracts-58IjMU-u.js';
10
10
  import '@tutti-os/workspace-file-manager/services';
11
11
  import '@tutti-os/workspace-file-reference/core';
package/dist/agent-gui.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-VQOPBBBI.js";
3
+ } from "./chunk-LHKBR77G.js";
4
4
  import "./chunk-D7HMQLBO.js";
5
5
  import "./chunk-KAV2WHTG.js";
6
6
  import "./chunk-4YVKAPKW.js";
@@ -9,11 +9,11 @@ import "./chunk-L3GMMGRS.js";
9
9
  import "./chunk-UHBCM6RO.js";
10
10
  import "./chunk-ZPKPIHMZ.js";
11
11
  import "./chunk-7BXWPI4F.js";
12
- import "./chunk-FAE7CXZO.js";
12
+ import "./chunk-W4RYNKWO.js";
13
13
  import "./chunk-C35SNDVZ.js";
14
14
  import "./chunk-FGLQZ6I4.js";
15
15
  import "./chunk-4YG7YK7S.js";
16
- import "./chunk-EUW6VPIK.js";
16
+ import "./chunk-YYE35EZ5.js";
17
17
  import "./chunk-4YCCATI4.js";
18
18
  import "./chunk-GCW57WYQ.js";
19
19
  import "./chunk-F5UR6EJG.js";
@@ -72,7 +72,7 @@ import {
72
72
  import {
73
73
  AgentFileMentionPalette,
74
74
  agentMentionItemKey
75
- } from "./chunk-FAE7CXZO.js";
75
+ } from "./chunk-W4RYNKWO.js";
76
76
  import {
77
77
  normalizeAgentGUIAgents,
78
78
  projectAgentGUIAgentsToInternalTargets
@@ -83,7 +83,7 @@ import {
83
83
  DEFAULT_AGENT_MENTION_FILTER,
84
84
  agentGuiScheduler,
85
85
  buildWorkspaceAgentActivityListViewModel
86
- } from "./chunk-EUW6VPIK.js";
86
+ } from "./chunk-YYE35EZ5.js";
87
87
  import {
88
88
  AGENT_RICH_TEXT_CARET_ANCHOR,
89
89
  createAgentSessionMarkdownLink,
@@ -32414,6 +32414,31 @@ function AgentProbeInfoPopover({
32414
32414
  );
32415
32415
  }
32416
32416
 
32417
+ // agent-gui/agentGuiNode/model/agentReferenceProvenanceCatalog.ts
32418
+ function resolveAgentGUIReferenceProvenanceFilterCatalog(input) {
32419
+ if (input.injectedCatalog !== void 0) {
32420
+ return input.injectedCatalog;
32421
+ }
32422
+ if (!input.legacyAgentFilterEnabled) {
32423
+ return null;
32424
+ }
32425
+ return {
32426
+ enabledDimensions: ["agent"],
32427
+ agentOptions: (input.agentTargets ?? []).flatMap((target) => {
32428
+ const agentTargetId = target.agentTargetId?.trim();
32429
+ return agentTargetId ? [
32430
+ {
32431
+ disabled: target.disabled,
32432
+ iconUrl: target.iconUrl,
32433
+ id: agentTargetId,
32434
+ label: target.label
32435
+ }
32436
+ ] : [];
32437
+ }),
32438
+ memberOptions: []
32439
+ };
32440
+ }
32441
+
32417
32442
  // agent-gui/agentGuiNode/AgentGUINode.types.ts
32418
32443
  function agentGuiStateEquals(left, right) {
32419
32444
  return left === right || left.provider === right.provider && (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && left.conversationRailWidthPx === right.conversationRailWidthPx && left.conversationRailCollapsed === right.conversationRailCollapsed && (left.composerOverrides?.model ?? null) === (right.composerOverrides?.model ?? null) && (left.composerOverrides?.reasoningEffort ?? null) === (right.composerOverrides?.reasoningEffort ?? null) && (left.composerOverrides?.planMode ?? null) === (right.composerOverrides?.planMode ?? null) && (left.composerOverrides?.permissionModeId ?? null) === (right.composerOverrides?.permissionModeId ?? null) && composerOverridesByProviderEqual(
@@ -32461,7 +32486,7 @@ function areAgentGUINodePropsEqual(previous, next) {
32461
32486
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
32462
32487
  const pa = previous.hostActions, na = next.hostActions;
32463
32488
  const ps = previous.renderSlots, ns = next.renderSlots;
32464
- return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.contextMentionProviders === nc.contextMentionProviders && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
32489
+ return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.contextMentionProviders === nc.contextMentionProviders && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
32465
32490
  }
32466
32491
 
32467
32492
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -33309,6 +33334,11 @@ function resolveAgentGUIRailStatusProvider(input) {
33309
33334
  // agent-gui/agentGuiNode/AgentGUINode.tsx
33310
33335
  import { jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
33311
33336
  var EMPTY_SLASH_STATUS_QUOTAS = [];
33337
+ var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
33338
+ enabledDimensions: [],
33339
+ agentOptions: [],
33340
+ memberOptions: []
33341
+ };
33312
33342
  var AgentGUINode = memo14(function AgentGUINode2({
33313
33343
  identity,
33314
33344
  workspace,
@@ -33371,24 +33401,18 @@ var AgentGUINode = memo14(function AgentGUINode2({
33371
33401
  contextMentionProviders,
33372
33402
  workspaceAppIcons,
33373
33403
  disabledHomeSuggestions,
33404
+ referenceProvenanceFilterCatalog: injectedReferenceProvenanceFilterCatalog,
33374
33405
  referenceProvenanceFilterEnabled = false
33375
33406
  } = hostCapabilities;
33376
- const referenceProvenanceFilterBinding = useReferenceProvenanceFilterCatalog({
33377
- enabledDimensions: referenceProvenanceFilterEnabled ? ["agent"] : [],
33378
- agentOptions: referenceProvenanceFilterEnabled ? (agentTargets ?? []).flatMap((target) => {
33379
- const agentTargetId = target.agentTargetId?.trim();
33380
- return agentTargetId ? [
33381
- {
33382
- disabled: target.disabled,
33383
- iconUrl: target.iconUrl,
33384
- id: agentTargetId,
33385
- label: target.label
33386
- }
33387
- ] : [];
33388
- }) : [],
33389
- memberOptions: []
33407
+ const referenceProvenanceFilterCatalog = resolveAgentGUIReferenceProvenanceFilterCatalog({
33408
+ agentTargets,
33409
+ injectedCatalog: injectedReferenceProvenanceFilterCatalog,
33410
+ legacyAgentFilterEnabled: referenceProvenanceFilterEnabled
33390
33411
  });
33391
- const referenceProvenanceFilter = referenceProvenanceFilterEnabled ? referenceProvenanceFilterBinding : null;
33412
+ const referenceProvenanceFilterBinding = useReferenceProvenanceFilterCatalog(
33413
+ referenceProvenanceFilterCatalog ?? DISABLED_REFERENCE_PROVENANCE_CATALOG
33414
+ );
33415
+ const referenceProvenanceFilter = referenceProvenanceFilterBinding.snapshot.catalog.enabledDimensions.length > 0 ? referenceProvenanceFilterBinding : null;
33392
33416
  const {
33393
33417
  onLinkAction,
33394
33418
  onHandoffConversation,
@@ -33895,4 +33919,4 @@ export {
33895
33919
  resolveAgentGUIAgentTarget,
33896
33920
  AgentGUI
33897
33921
  };
33898
- //# sourceMappingURL=chunk-VQOPBBBI.js.map
33922
+ //# sourceMappingURL=chunk-LHKBR77G.js.map