@tutti-os/agent-gui 0.0.39 → 0.0.41

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 (61) hide show
  1. package/README.md +40 -0
  2. package/dist/{AgentMessageMarkdown-BVeh06AJ.d.ts → AgentMessageMarkdown-Cts0dAIm.d.ts} +4 -156
  3. package/dist/agent-conversation/index.d.ts +2 -1
  4. package/dist/agent-conversation/index.js +5 -5
  5. package/dist/agent-message-center/index.js +7 -7
  6. package/dist/agent-message-center/index.js.map +1 -1
  7. package/dist/app/renderer/agentactivity.css +298 -21
  8. package/dist/{chunk-46IYJEZX.js → chunk-3PVSIL3H.js} +5 -5
  9. package/dist/{chunk-RE3AHBX6.js → chunk-3WZWZHAJ.js} +2 -2
  10. package/dist/{chunk-Y2DQJPTL.js → chunk-42WP3P5C.js} +2 -2
  11. package/dist/chunk-4K22O34C.js +123 -0
  12. package/dist/chunk-4K22O34C.js.map +1 -0
  13. package/dist/{chunk-Y5SE2XMU.js → chunk-5LVFYNIP.js} +5 -2
  14. package/dist/{chunk-Y5SE2XMU.js.map → chunk-5LVFYNIP.js.map} +1 -1
  15. package/dist/{chunk-C7ZZZXKB.js → chunk-5U4SXENC.js} +5 -5
  16. package/dist/{chunk-ZWJBG2JM.js → chunk-EFDGMXTB.js} +62 -7
  17. package/dist/chunk-EFDGMXTB.js.map +1 -0
  18. package/dist/{chunk-JNGYJ7GM.js → chunk-EU7RWKHE.js} +2 -2
  19. package/dist/{chunk-IXIGWLQY.js → chunk-F5DYXCY3.js} +1 -1
  20. package/dist/{chunk-IXIGWLQY.js.map → chunk-F5DYXCY3.js.map} +1 -1
  21. package/dist/{chunk-WJPEKD3F.js → chunk-LKOPLDPM.js} +5 -1
  22. package/dist/chunk-LKOPLDPM.js.map +1 -0
  23. package/dist/{chunk-3AXEEQMV.js → chunk-MUJYJDZH.js} +12 -11
  24. package/dist/chunk-MUJYJDZH.js.map +1 -0
  25. package/dist/{chunk-5HQDW73P.js → chunk-OLZP2EFK.js} +231 -46
  26. package/dist/chunk-OLZP2EFK.js.map +1 -0
  27. package/dist/{chunk-XL2EKJTQ.js → chunk-QIPMH6XO.js} +137 -37
  28. package/dist/chunk-QIPMH6XO.js.map +1 -0
  29. package/dist/{chunk-B2JKDZSR.js → chunk-TXXWUG2J.js} +1 -1
  30. package/dist/chunk-TXXWUG2J.js.map +1 -0
  31. package/dist/context-mention-palette/index.js +6 -6
  32. package/dist/i18n/index.d.ts +4 -0
  33. package/dist/i18n/index.js +1 -1
  34. package/dist/index.d.ts +134 -102
  35. package/dist/index.js +374 -154
  36. package/dist/index.js.map +1 -1
  37. package/dist/types-xMz0lJWt.d.ts +173 -0
  38. package/dist/workbench/contribution.d.ts +5 -0
  39. package/dist/workbench/contribution.js +5 -4
  40. package/dist/workbench/index.d.ts +11 -3
  41. package/dist/workbench/index.js +5 -4
  42. package/dist/workbench/launch.d.ts +1 -0
  43. package/dist/workbench/launch.js +2 -2
  44. package/dist/workbench/providerCatalog.d.ts +1 -0
  45. package/dist/workbench/state.d.ts +1 -0
  46. package/dist/workbench/state.js +2 -1
  47. package/dist/workbench/types.d.ts +6 -0
  48. package/dist/workbench/types.js +1 -1
  49. package/dist/workspace-agent-generated-files.js +2 -2
  50. package/package.json +12 -12
  51. package/dist/chunk-3AXEEQMV.js.map +0 -1
  52. package/dist/chunk-5HQDW73P.js.map +0 -1
  53. package/dist/chunk-B2JKDZSR.js.map +0 -1
  54. package/dist/chunk-WJPEKD3F.js.map +0 -1
  55. package/dist/chunk-XL2EKJTQ.js.map +0 -1
  56. package/dist/chunk-ZWJBG2JM.js.map +0 -1
  57. /package/dist/{chunk-46IYJEZX.js.map → chunk-3PVSIL3H.js.map} +0 -0
  58. /package/dist/{chunk-RE3AHBX6.js.map → chunk-3WZWZHAJ.js.map} +0 -0
  59. /package/dist/{chunk-Y2DQJPTL.js.map → chunk-42WP3P5C.js.map} +0 -0
  60. /package/dist/{chunk-C7ZZZXKB.js.map → chunk-5U4SXENC.js.map} +0 -0
  61. /package/dist/{chunk-JNGYJ7GM.js.map → chunk-EU7RWKHE.js.map} +0 -0
package/README.md CHANGED
@@ -59,3 +59,43 @@ Run this boundary check after changing AgentGUI data flow:
59
59
  ```sh
60
60
  pnpm check:agent-activity-runtime-boundaries
61
61
  ```
62
+
63
+ ## Provider Targets
64
+
65
+ `provider` remains the real provider identity, such as `codex`,
66
+ `claude-code`, or `nexight`. AgentGUI uses that identity for composer options,
67
+ settings, icons, probes, status, and provider-specific UI policy.
68
+
69
+ Hosts may pass `providerTargets` when a real provider has multiple launch
70
+ targets. A target has display metadata plus an opaque `ref`:
71
+
72
+ ```ts
73
+ export interface AgentGUIProviderTargetRef {
74
+ kind: string;
75
+ provider: AgentGUIProvider;
76
+ [key: string]: unknown;
77
+ }
78
+
79
+ export interface AgentGUIProviderTarget {
80
+ targetId: string;
81
+ provider: AgentGUIProvider;
82
+ ref: AgentGUIProviderTargetRef;
83
+ label: string;
84
+ description?: string;
85
+ ownerLabel?: string;
86
+ disabled?: boolean;
87
+ unavailableReason?: string;
88
+ }
89
+ ```
90
+
91
+ AgentGUI does not interpret `ref.kind` and does not treat `targetId` or `ref`
92
+ as authority. It displays `target.label`, keeps provider logic keyed by the
93
+ real `target.provider`, and passes `providerTargetRef` through activation.
94
+ Trusted host code must re-authenticate the current user/workspace and resolve
95
+ any invocation plan before launching.
96
+
97
+ If `providerTargets` is omitted or empty, AgentGUI creates local targets such as
98
+ `local:codex` and `local:claude-code` from the static provider catalog for
99
+ display/backward compatibility. Those fallback local targets are not persisted
100
+ or sent as `providerTargetRef`; legacy hosts continue to receive only the real
101
+ `provider`.
@@ -1,4 +1,5 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
+ import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, A as AgentGUINodeData, b as AgentGUIProviderTarget, m as AgentPromptContentBlock } from './types-xMz0lJWt.js';
2
3
  import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-DLnMBMoh.js';
3
4
  import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-1QgRwvwZ.js';
4
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
@@ -13,134 +14,6 @@ interface AppErrorDescriptor {
13
14
  debugMessage?: string;
14
15
  }
15
16
 
16
- type AgentHostAgentSessionProvider = "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw";
17
- type AgentHostAgentSessionPermissionModeSemantic = "ask-before-write" | "accept-edits" | "locked-down" | "auto" | "full-access" | "unconfigurable";
18
- type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
19
- type AgentHostAgentSessionSpeed = "standard" | "fast" | string;
20
- interface AgentHostAgentSessionPermissionModeOption {
21
- id: string;
22
- label?: string;
23
- description?: string;
24
- semantic: AgentHostAgentSessionPermissionModeSemantic;
25
- }
26
- interface AgentHostAgentSessionPermissionConfig {
27
- configurable: boolean;
28
- defaultValue?: string | null;
29
- modes: AgentHostAgentSessionPermissionModeOption[];
30
- }
31
- interface AgentHostAgentSessionComposerSettings {
32
- model?: string | null;
33
- reasoningEffort?: AgentHostAgentSessionReasoningEffort | null;
34
- speed?: AgentHostAgentSessionSpeed | null;
35
- planMode?: boolean;
36
- browserUse?: boolean;
37
- computerUse?: boolean;
38
- permissionModeId?: string | null;
39
- }
40
- interface AgentHostAgentSession {
41
- workspaceId: string;
42
- agentSessionId: string;
43
- provider: AgentHostAgentSessionProvider;
44
- providerSessionId: string;
45
- resumable?: boolean;
46
- cwd?: string;
47
- status: "ready" | "working" | "canceled" | "failed" | "completed" | string;
48
- title?: string;
49
- pinnedAtUnixMs?: number | null;
50
- visible?: boolean;
51
- permissionModeId?: string;
52
- permissionConfig?: AgentHostAgentSessionPermissionConfig;
53
- settings?: AgentHostAgentSessionComposerSettings;
54
- createdAtUnixMs: number;
55
- updatedAtUnixMs: number;
56
- }
57
- interface AgentHostAgentSessionInteractivePrompt {
58
- kind: string;
59
- requestId?: string;
60
- toolName?: string;
61
- status?: string;
62
- input?: Record<string, unknown>;
63
- output?: Record<string, unknown>;
64
- error?: Record<string, unknown>;
65
- metadata?: Record<string, unknown>;
66
- }
67
- interface AgentHostAgentSessionState {
68
- workspaceId: string;
69
- agentSessionId: string;
70
- provider: AgentHostAgentSessionProvider;
71
- providerSessionId?: string;
72
- resumable?: boolean;
73
- status: AgentHostAgentSession["status"];
74
- turnLifecycle?: AgentHostAgentActivityTurnLifecycle | null;
75
- submitAvailability?: AgentHostAgentActivitySubmitAvailability | null;
76
- permissionModeId?: string;
77
- permissionConfig?: AgentHostAgentSessionPermissionConfig;
78
- settings?: AgentHostAgentSessionComposerSettings;
79
- authState?: string;
80
- runtimeContext?: Record<string, unknown>;
81
- pinnedAtUnixMs?: number | null;
82
- pendingInteractive?: AgentHostAgentSessionInteractivePrompt | null;
83
- updatedAtUnixMs: number;
84
- }
85
- interface AgentHostAgentActivityCompletedCommand {
86
- kind: string;
87
- status: string;
88
- }
89
- interface AgentHostAgentActivityTurnLifecycle {
90
- activeTurnId: string | null;
91
- phase: string;
92
- settling?: boolean;
93
- outcome?: string | null;
94
- completedCommand?: AgentHostAgentActivityCompletedCommand | null;
95
- }
96
- interface AgentHostAgentActivitySubmitAvailability {
97
- state: string;
98
- reason?: string;
99
- }
100
- type AgentHostAgentSessionActivationMode = "new" | "existing";
101
- type AgentHostAgentSessionActivationStatus = "attached" | "already_attached" | "failed";
102
- interface AgentHostActivateAgentSessionResult {
103
- session: AgentHostAgentSession;
104
- activation: {
105
- mode: AgentHostAgentSessionActivationMode;
106
- status: AgentHostAgentSessionActivationStatus;
107
- };
108
- error?: {
109
- code: string;
110
- message: string;
111
- debugMessage?: string;
112
- };
113
- }
114
- interface AgentHostUnactivateAgentSessionResult {
115
- agentSessionId: string;
116
- buffered: boolean;
117
- }
118
- interface AgentPromptContentBlock {
119
- type: "text" | "image" | "file" | "skill" | "mention";
120
- text?: string;
121
- mimeType?: "image/png" | "image/jpeg" | "image/webp" | string;
122
- data?: string;
123
- url?: string;
124
- attachmentId?: string;
125
- name?: string;
126
- path?: string;
127
- uri?: string;
128
- hostPath?: string;
129
- uploadStatus?: string;
130
- assetId?: string;
131
- kind?: string;
132
- sizeBytes?: number;
133
- }
134
- interface AgentHostUpdateAgentSessionSettingsResult {
135
- agentSessionId: string;
136
- settings: AgentHostAgentSessionComposerSettings;
137
- }
138
- interface AgentHostAgentSessionCommand {
139
- name: string;
140
- description?: string;
141
- inputHint?: string;
142
- }
143
-
144
17
  type AgentAvailabilityStatus = "available" | "unavailable" | "unknown";
145
18
  type AgentQuotaType = "session" | "weekly" | "monthly" | "daily" | "model" | "cost";
146
19
  interface AgentAvailabilityCheck {
@@ -481,33 +354,6 @@ interface AgentHostRuntimeApi {
481
354
  workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;
482
355
  }
483
356
 
484
- declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "nexight", "opencode", "gemini", "openclaw", "hermes"];
485
- type AgentProvider = (typeof AGENT_PROVIDERS)[number];
486
-
487
- interface AgentGUINodeData {
488
- provider: AgentGUIProvider;
489
- lastActiveAgentSessionId: string | null;
490
- lastActiveConversationTitle?: string | null;
491
- conversationCount?: number | null;
492
- conversationRailWidthPx?: number | null;
493
- conversationRailCollapsed?: boolean | null;
494
- composerOverrides?: AgentHostAgentSessionComposerSettings | null;
495
- composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
496
- }
497
- type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw">;
498
- interface Size {
499
- width: number;
500
- height: number;
501
- }
502
- interface Point {
503
- x: number;
504
- y: number;
505
- }
506
- interface NodeFrame {
507
- position: Point;
508
- size: Size;
509
- }
510
-
511
357
  type AgentSessionCommand = AgentHostAgentSessionCommand;
512
358
  type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
513
359
  type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
@@ -544,6 +390,7 @@ interface AgentGUIConversationSummary {
544
390
  updatedAtUnixMs: number;
545
391
  hasUnreadCompletion?: boolean;
546
392
  unreadCompletionKey?: string | null;
393
+ isImported?: boolean;
547
394
  syncState?: WorkspaceAgentActivitySyncState;
548
395
  }
549
396
  type AgentGUIConversationStatus = "working" | "waiting" | "ready" | "completed" | "failed" | "canceled";
@@ -679,6 +526,7 @@ interface AgentGUINodeViewModel {
679
526
  workspacePath?: string | null;
680
527
  currentUserId?: string | null;
681
528
  data: AgentGUINodeData;
529
+ selectedProviderTarget: AgentGUIProviderTarget;
682
530
  conversations: AgentGUIConversationSummary[];
683
531
  userProjects: AgentGUIConversationUserProject[];
684
532
  activeConversation: AgentGUIConversationSummary | null;
@@ -729,4 +577,4 @@ interface AgentMessageMarkdownWorkspaceAppIcon {
729
577
  workspaceId?: string | null;
730
578
  }
731
579
 
732
- export type { AgentGUINodeData as A, NodeFrame as N, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUINodeViewModel as a, AgentGUIProviderSkillOption as b, AgentHostActivateAgentSessionResult as c, AgentHostAgentSessionComposerSettings as d, AgentHostAgentSessionState as e, AgentHostApi as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentHostUnactivateAgentSessionResult as j, AgentHostUpdateAgentSessionSettingsResult as k, AgentMessageMarkdownWorkspaceAppIcon as l, AgentProbeProvider as m, AgentProbeSnapshot as n, AgentProvider as o, AgentProviderProbeListInput as p, AgentProviderProbeListResult as q, AgentUsageQuota as r, AgentUsageSnapshot as s, Point as t, WriteWorkspaceAgentReadStateInput as u };
580
+ export type { AgentGUINodeViewModel as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIProviderSkillOption as a, AgentHostApi as b, AgentHostInputApi as c, AgentHostRuntimeApi as d, AgentHostSelectFilesInput as e, AgentMessageMarkdownWorkspaceAppIcon as f, AgentProbeProvider as g, AgentProbeSnapshot as h, AgentProviderProbeListInput as i, AgentProviderProbeListResult as j, AgentUsageQuota as k, AgentUsageSnapshot as l, WriteWorkspaceAgentReadStateInput as m };
@@ -1,12 +1,13 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
4
- import { b as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-BVeh06AJ.js';
4
+ import { a as AgentGUIProviderSkillOption, f as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-Cts0dAIm.js';
5
5
  import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
6
6
  export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
7
7
  export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, q as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-DLnMBMoh.js';
8
8
  import '@tutti-os/workspace-issue-manager/core';
9
9
  import '@tutti-os/agent-activity-core';
10
+ import '../types-xMz0lJWt.js';
10
11
  import '@tutti-os/workspace-user-project/contracts';
11
12
 
12
13
  interface AgentConversationFlowProps {
@@ -6,15 +6,15 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-3AXEEQMV.js";
10
- import "../chunk-5HQDW73P.js";
11
- import "../chunk-RE3AHBX6.js";
9
+ } from "../chunk-MUJYJDZH.js";
10
+ import "../chunk-OLZP2EFK.js";
11
+ import "../chunk-3WZWZHAJ.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
- import "../chunk-B2JKDZSR.js";
13
+ import "../chunk-TXXWUG2J.js";
14
14
  import "../chunk-TYGL25EL.js";
15
15
  import {
16
16
  translate
17
- } from "../chunk-WJPEKD3F.js";
17
+ } from "../chunk-LKOPLDPM.js";
18
18
  import "../chunk-LUGELG5V.js";
19
19
  import "../chunk-PJP5BUU6.js";
20
20
 
@@ -4,7 +4,7 @@ import {
4
4
  formatAgentSessionMentionText,
5
5
  getPromptToolDetails,
6
6
  isPromptRequestIdTitle
7
- } from "../chunk-46IYJEZX.js";
7
+ } from "../chunk-3PVSIL3H.js";
8
8
  import {
9
9
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
10
10
  PLAN_IMPLEMENTATION_PROMPT,
@@ -17,17 +17,17 @@ import {
17
17
  cn,
18
18
  extractAgentMcpToolTarget,
19
19
  normalizeAskUserQuestions
20
- } from "../chunk-5HQDW73P.js";
20
+ } from "../chunk-OLZP2EFK.js";
21
21
  import {
22
22
  managedAgentRoundedIconUrl,
23
23
  userAvatarPlaceholderUrl,
24
24
  workspaceAgentActivityStatusLabel
25
- } from "../chunk-Y2DQJPTL.js";
25
+ } from "../chunk-42WP3P5C.js";
26
26
  import "../chunk-MTFSQWZ6.js";
27
27
  import {
28
28
  resolveWorkspaceAgentSessionSortTimeUnixMs
29
29
  } from "../chunk-IBIMGLCD.js";
30
- import "../chunk-B2JKDZSR.js";
30
+ import "../chunk-TXXWUG2J.js";
31
31
  import {
32
32
  workspaceAgentProviderLabel
33
33
  } from "../chunk-TYGL25EL.js";
@@ -38,7 +38,7 @@ import {
38
38
  AgentGuiI18nProvider,
39
39
  getActiveUiLanguage,
40
40
  useTranslation
41
- } from "../chunk-WJPEKD3F.js";
41
+ } from "../chunk-LKOPLDPM.js";
42
42
  import "../chunk-PJP5BUU6.js";
43
43
 
44
44
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
@@ -203,7 +203,7 @@ function isAgentMessageRole(role) {
203
203
  function meaningfulMessageSummary(message) {
204
204
  const payload = recordValue(message.payload);
205
205
  const isToolMessage = isToolLikeMessage(message, payload);
206
- const candidates = messageSummaryCandidates(message, payload, isToolMessage);
206
+ const candidates = messageSummaryCandidates(payload, isToolMessage);
207
207
  const structuralLabelTokens = isToolMessage ? structuralToolLabelTokens(message, payload) : null;
208
208
  const hasToolDigestSignal = isToolMessage && candidates.some(isToolDigestSignalCandidate);
209
209
  for (const candidate of candidates) {
@@ -217,7 +217,7 @@ function meaningfulMessageSummary(message) {
217
217
  }
218
218
  return "";
219
219
  }
220
- function messageSummaryCandidates(message, payload, isToolMessage) {
220
+ function messageSummaryCandidates(payload, isToolMessage) {
221
221
  const explicitCandidates = [
222
222
  summaryCandidate("payload.summary", payload.summary),
223
223
  summaryCandidate("payload.displayPrompt", payload.displayPrompt),