@tutti-os/agent-gui 0.0.74 → 0.0.75

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 (83) hide show
  1. package/README.md +17 -0
  2. package/dist/agent-conversation/index.d.ts +4 -4
  3. package/dist/agent-conversation/index.js +8 -8
  4. package/dist/agent-message-center/index.d.ts +2 -2
  5. package/dist/agent-message-center/index.js +170 -12
  6. package/dist/agent-message-center/index.js.map +1 -1
  7. package/dist/{agentConversationVM-DPAgUJlR.d.ts → agentConversationVM-BgoqFyE9.d.ts} +1 -1
  8. package/dist/{agentGuiNodeTypes-C0WUHQzu.d.ts → agentGuiNodeTypes-CmuJ7VDZ.d.ts} +15 -5
  9. package/dist/app/renderer/agentactivity.css +52 -24
  10. package/dist/app/renderer/assets/icons/agents/cursor-colorful.png +0 -0
  11. package/dist/app/renderer/assets/icons/agents/opencode-rounded.png +0 -0
  12. package/dist/app/renderer/assets/icons/agents/provider-rail-opencode-colorful.png +0 -0
  13. package/dist/{chunk-GLMDAZSQ.js → chunk-3FYA2K4P.js} +76 -7
  14. package/dist/chunk-3FYA2K4P.js.map +1 -0
  15. package/dist/{chunk-RA3OUR64.js → chunk-4HP6V2YA.js} +16 -2
  16. package/dist/chunk-4HP6V2YA.js.map +1 -0
  17. package/dist/{chunk-W5AJTBA7.js → chunk-4TNM6ZEC.js} +3 -100
  18. package/dist/chunk-4TNM6ZEC.js.map +1 -0
  19. package/dist/{chunk-6EREXANR.js → chunk-52GTPN7X.js} +3 -14
  20. package/dist/chunk-52GTPN7X.js.map +1 -0
  21. package/dist/{chunk-ZSYDFQ4N.js → chunk-7GSBP5CN.js} +36 -15
  22. package/dist/chunk-7GSBP5CN.js.map +1 -0
  23. package/dist/{chunk-T5CEU7WH.js → chunk-BEM3KDOJ.js} +3 -3
  24. package/dist/chunk-BEM3KDOJ.js.map +1 -0
  25. package/dist/{chunk-VERGPY42.js → chunk-GZX2SGAG.js} +2 -2
  26. package/dist/{chunk-NO7WDGST.js → chunk-KELYWKTC.js} +28 -6
  27. package/dist/chunk-KELYWKTC.js.map +1 -0
  28. package/dist/{chunk-FPODKSSV.js → chunk-L2ZMLLYL.js} +12 -5
  29. package/dist/chunk-L2ZMLLYL.js.map +1 -0
  30. package/dist/{chunk-LWFV4PS5.js → chunk-M6FZ2YIR.js} +3 -3
  31. package/dist/chunk-M6FZ2YIR.js.map +1 -0
  32. package/dist/{chunk-D2Z2QZVE.js → chunk-MNESUMOS.js} +2 -2
  33. package/dist/{chunk-KVS7J7BJ.js → chunk-QDKD6RNC.js} +15 -6
  34. package/dist/{chunk-KVS7J7BJ.js.map → chunk-QDKD6RNC.js.map} +1 -1
  35. package/dist/{chunk-FHWE5SUF.js → chunk-RIRFNGPB.js} +7 -3
  36. package/dist/chunk-RIRFNGPB.js.map +1 -0
  37. package/dist/{chunk-SL2QSEIE.js → chunk-SYWMKIRW.js} +4 -4
  38. package/dist/{chunk-RF7GK4SM.js → chunk-U6AZ3XQS.js} +25 -6
  39. package/dist/chunk-U6AZ3XQS.js.map +1 -0
  40. package/dist/{chunk-Z72JKSAY.js → chunk-U6EDUTUO.js} +4 -4
  41. package/dist/{chunk-MYD37I32.js → chunk-VAKFNNKT.js} +1 -15
  42. package/dist/chunk-VAKFNNKT.js.map +1 -0
  43. package/dist/{chunk-BTUOROCD.js → chunk-XW4CVBUH.js} +2 -2
  44. package/dist/chunk-XW4CVBUH.js.map +1 -0
  45. package/dist/{chunk-4XIHKCWC.js → chunk-YWQHNFYA.js} +2 -2
  46. package/dist/context-mention-palette/index.js +9 -9
  47. package/dist/i18n/index.d.ts +2 -96
  48. package/dist/i18n/index.js +2 -2
  49. package/dist/index.d.ts +49 -7
  50. package/dist/index.js +1008 -598
  51. package/dist/index.js.map +1 -1
  52. package/dist/plan-decision-ops.d.ts +2 -2
  53. package/dist/queued-prompt-runtime.d.ts +3 -5
  54. package/dist/queued-prompt-runtime.js +1 -1
  55. package/dist/workbench/contribution.js +5 -5
  56. package/dist/workbench/index.js +8 -8
  57. package/dist/workbench/launch.d.ts +1 -1
  58. package/dist/workbench/launch.js +2 -2
  59. package/dist/workbench/providerCatalog.js +1 -1
  60. package/dist/workbench/sessionTitle.js +3 -3
  61. package/dist/workbench/state.js +2 -2
  62. package/dist/workspace-agent-generated-files.d.ts +1 -1
  63. package/dist/workspace-agent-generated-files.js +4 -4
  64. package/dist/{workspaceAgentActivityListViewModel-DJvAqZso.d.ts → workspaceAgentActivityListViewModel-TXH1VXrk.d.ts} +0 -10
  65. package/package.json +12 -12
  66. package/dist/chunk-6EREXANR.js.map +0 -1
  67. package/dist/chunk-BTUOROCD.js.map +0 -1
  68. package/dist/chunk-FHWE5SUF.js.map +0 -1
  69. package/dist/chunk-FPODKSSV.js.map +0 -1
  70. package/dist/chunk-GLMDAZSQ.js.map +0 -1
  71. package/dist/chunk-LWFV4PS5.js.map +0 -1
  72. package/dist/chunk-MYD37I32.js.map +0 -1
  73. package/dist/chunk-NO7WDGST.js.map +0 -1
  74. package/dist/chunk-RA3OUR64.js.map +0 -1
  75. package/dist/chunk-RF7GK4SM.js.map +0 -1
  76. package/dist/chunk-T5CEU7WH.js.map +0 -1
  77. package/dist/chunk-W5AJTBA7.js.map +0 -1
  78. package/dist/chunk-ZSYDFQ4N.js.map +0 -1
  79. /package/dist/{chunk-VERGPY42.js.map → chunk-GZX2SGAG.js.map} +0 -0
  80. /package/dist/{chunk-D2Z2QZVE.js.map → chunk-MNESUMOS.js.map} +0 -0
  81. /package/dist/{chunk-SL2QSEIE.js.map → chunk-SYWMKIRW.js.map} +0 -0
  82. /package/dist/{chunk-Z72JKSAY.js.map → chunk-U6EDUTUO.js.map} +0 -0
  83. /package/dist/{chunk-4XIHKCWC.js.map → chunk-YWQHNFYA.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../shared/workspaceAgentProviderLabel.ts","../shared/workspaceAgentActivityTypes.ts"],"sourcesContent":["export function workspaceAgentProviderLabel(provider: string): string {\n const normalized = provider.trim().toLowerCase();\n switch (normalized) {\n case \"codex\":\n return \"Codex\";\n case \"claude-code\":\n return \"Claude Code\";\n case \"openclaw\":\n return \"OpenClaw\";\n case \"opencode\":\n return \"Open Code\";\n case \"hermes\":\n return \"Hermes\";\n case \"nexight\":\n return \"Nexight\";\n case \"unknown\":\n return \"Unknown\";\n default:\n return titleCase(provider);\n }\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n","import {\n mergeAgentActivityMessages,\n AgentActivityMessage,\n AgentActivityMessageSemantics,\n AgentActivityPresence,\n AgentActivitySession,\n AgentActivitySnapshot,\n AgentActivitySubmitAvailability,\n AgentActivityTurnLifecycle\n} from \"@tutti-os/agent-activity-core\";\n\nexport type WorkspaceAgentActivityProvider = \"codex\" | \"claude-code\" | string;\n\nexport interface WorkspaceAgentActivityComposerSettings {\n model?: string | null;\n reasoningEffort?: string | null;\n speed?: string | null;\n planMode?: boolean;\n browserUse?: boolean;\n computerUse?: boolean;\n permissionModeId?: string | null;\n}\n\nexport const WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN =\n \"WORKSPACE_AGENT_SESSION_ORIGIN_RUNTIME\";\n\nexport type WorkspaceAgentActivitySessionOrigin =\n | typeof WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n | string;\n\nexport function isWorkspaceAgentActivityRuntimeSessionOrigin(\n sessionOrigin: string | null | undefined\n): boolean {\n const normalized = sessionOrigin?.trim() ?? \"\";\n // Core-native AgentActivitySession does not carry the legacy host origin DTO.\n return (\n normalized === \"\" ||\n normalized === WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n );\n}\n\nexport function createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(\n clientSubmitId: string\n): string | null {\n const normalized = clientSubmitId.trim();\n return normalized ? `client-submit:user:${normalized}` : null;\n}\n\nexport type WorkspaceAgentActivitySyncStatus =\n | \"pending\"\n | \"synced\"\n | \"failed\"\n | string;\n\nexport interface WorkspaceAgentActivitySyncState {\n workspaceId?: string;\n agentSessionId?: string;\n status: WorkspaceAgentActivitySyncStatus;\n pendingTimelineItemCount?: number;\n pendingStatePatchCount?: number;\n attemptCount?: number;\n failedReportCount?: number;\n lastError?: string;\n lastAttemptAtUnixMs?: number;\n lastSyncedAtUnixMs?: number;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityPresence extends Omit<\n AgentActivityPresence,\n \"id\" | \"provider\" | \"status\"\n> {\n id: string | number;\n provider: WorkspaceAgentActivityProvider;\n status: string;\n userId?: string | null;\n}\n\nexport interface WorkspaceAgentActivitySession extends Omit<\n AgentActivitySession,\n | \"provider\"\n | \"providerSessionId\"\n | \"pinnedAtUnixMs\"\n | \"status\"\n | \"title\"\n | \"workspaceId\"\n> {\n id?: number;\n workspaceId?: string;\n presenceId?: string | number;\n userId?: string;\n provider?: WorkspaceAgentActivityProvider;\n providerSessionId?: string | null;\n resumable?: boolean;\n sessionOrigin?: WorkspaceAgentActivitySessionOrigin;\n lifecycleStatus?: string;\n turnPhase?: string;\n endedAtUnixMs?: number;\n effectiveStatus?: string;\n status?: string;\n turnLifecycle?: AgentActivityTurnLifecycle | null;\n submitAvailability?: AgentActivitySubmitAvailability | null;\n title?: string;\n pinnedAtUnixMs?: number | null;\n syncState?: WorkspaceAgentActivitySyncState;\n}\n\nexport interface WorkspaceAgentActivityFileChange {\n path: string;\n change?: \"added\" | \"modified\" | \"deleted\" | \"moved\" | string;\n tools?: string[];\n}\n\nexport interface WorkspaceAgentActivityFileChanges {\n coverage?: string;\n files?: WorkspaceAgentActivityFileChange[];\n}\n\nexport interface WorkspaceAgentActivityTimelineItem {\n id: number;\n workspaceId?: string;\n agentSessionId: string;\n seq?: number;\n turnId?: string;\n eventSource?: string;\n eventId: string;\n actorType: string;\n actorId: string;\n itemType: \"message\" | \"call\" | \"event\" | \"error\" | \"lifecycle\" | string;\n role?: string;\n callType?: \"tool\" | \"skill\" | \"subagent\" | \"approval\" | \"workflow\" | string;\n callId?: string;\n name?: string;\n status?: string | null;\n content?: string;\n payload?: Record<string, unknown> & {\n content?: unknown;\n text?: unknown;\n fileChanges?: WorkspaceAgentActivityFileChanges;\n };\n occurredAtUnixMs?: number;\n createdAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityMessage extends Omit<\n AgentActivityMessage,\n \"id\" | \"status\"\n> {\n id?: number;\n status?: string | null;\n semantics?: AgentActivityMessageSemantics;\n}\n\nexport interface WorkspaceAgentActivitySnapshot extends Omit<\n AgentActivitySnapshot,\n \"sessions\" | \"presences\" | \"sessionMessagesById\" | \"workspaceId\"\n> {\n workspaceId?: string;\n presences: WorkspaceAgentActivityPresence[];\n sessions: WorkspaceAgentActivitySession[];\n sessionMessagesById?: Record<string, WorkspaceAgentActivityMessage[]>;\n}\n\nexport interface WorkspaceAgentActivityTurnStatePatch {\n turnId: string;\n phase?: string;\n outcome?: string;\n fileChanges?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n activeTurnId?: string | null;\n settling?: boolean;\n completedCommand?: {\n kind: string;\n status: string;\n } | null;\n submitAvailability?: AgentActivitySubmitAvailability;\n}\n\nexport interface WorkspaceAgentActivityEntityStatePatch {\n callId: string;\n turnId?: string;\n callType?: string;\n name?: string;\n status?: string;\n input?: Record<string, unknown>;\n output?: Record<string, unknown>;\n error?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityStatePatch {\n workspaceId?: string;\n agentSessionId: string;\n provider?: string;\n providerSessionId?: string;\n model?: string;\n permissionModeId?: string;\n settings?: WorkspaceAgentActivityComposerSettings;\n runtimeContext?: Record<string, unknown>;\n pendingInteractive?: AgentActivitySession[\"pendingInteractive\"];\n cwd?: string;\n title?: string;\n lifecycleStatus?: string;\n currentPhase?: string;\n lastError?: string;\n occurredAtUnixMs?: number;\n submitAvailability?: AgentActivitySubmitAvailability;\n turn?: WorkspaceAgentActivityTurnStatePatch;\n entities?: WorkspaceAgentActivityEntityStatePatch[];\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryItem {\n id?: number;\n turnId?: string;\n actorType?: string;\n actorId?: string;\n itemType?: string;\n role?: string;\n content?: string;\n title?: string;\n status?: string;\n callType?: string;\n name?: string;\n payload?: Record<string, unknown>;\n occurredAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryTurn {\n turnId: string;\n userItems?: WorkspaceAgentActivitySessionSummaryItem[];\n agentItems?: WorkspaceAgentActivitySessionSummaryItem[];\n}\n\nexport interface WorkspaceAgentActivitySessionExecutionStatus {\n currentOrFinalStatus?: string;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummary {\n agentSessionId: string;\n latestUserRequirement?: string;\n initialUserRequirement?: string;\n latestTurn?: WorkspaceAgentActivitySessionSummaryTurn;\n recentAgentReplies?: string[];\n recentTurns?: WorkspaceAgentActivitySessionSummaryTurn[];\n currentOrFinalStatus?: string;\n executionStatus?: WorkspaceAgentActivitySessionExecutionStatus;\n}\n\nexport function isWorkspaceAgentActivityOptimisticMessage(\n message: WorkspaceAgentActivityMessage\n): boolean {\n return message.payload?.__agentGuiOptimisticPrompt === true;\n}\n\nexport function isWorkspaceAgentActivityTimelineProjectionMessage(\n message: WorkspaceAgentActivityMessage\n): boolean {\n return message.payload?.__agentGuiTimelineProjection === true;\n}\n\nexport function minFiniteDurableWorkspaceAgentActivityMessageVersion(\n messages: readonly WorkspaceAgentActivityMessage[]\n): number | null {\n let result: number | null = null;\n for (const message of messages) {\n if (\n !Number.isFinite(message.version) ||\n isWorkspaceAgentActivityOptimisticMessage(message) ||\n isWorkspaceAgentActivityTimelineProjectionMessage(message)\n ) {\n continue;\n }\n result =\n result === null ? message.version : Math.min(result, message.version);\n }\n return result;\n}\n\nexport function selectWorkspaceAgentActivityOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const localMessages = input.localMessages ?? [];\n if (localMessages.length === 0) {\n return [];\n }\n const durableIdentities = new Set(\n durableMessages\n .map(workspaceAgentActivityMessageIdentity)\n .filter((identity): identity is string => identity !== null)\n );\n const durableClientSubmitIds = new Set(\n durableMessages\n .map(workspaceAgentActivityClientSubmitId)\n .filter(\n (clientSubmitId): clientSubmitId is string => clientSubmitId !== null\n )\n );\n const durableUserPromptSignatures = new Set(\n durableMessages\n .map(workspaceAgentActivityUserPromptSignature)\n .filter((signature): signature is string => signature !== null)\n );\n return localMessages.filter((message) => {\n const identity = workspaceAgentActivityMessageIdentity(message);\n if (identity !== null && durableIdentities.has(identity)) {\n return false;\n }\n if (isWorkspaceAgentActivityOptimisticMessage(message)) {\n const clientSubmitId = workspaceAgentActivityClientSubmitId(message);\n if (\n clientSubmitId !== null &&\n durableClientSubmitIds.has(clientSubmitId)\n ) {\n return false;\n }\n if (clientSubmitId !== null) {\n return true;\n }\n const signature = workspaceAgentActivityUserPromptSignature(message);\n return signature === null || !durableUserPromptSignatures.has(signature);\n }\n return true;\n });\n}\n\nexport function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);\n if (overlayMessages.length === 0) {\n return [...durableMessages];\n }\n // Optimistic echoes carry version 0 (outside the durable version domain),\n // so they cannot participate in a version sort. Durable-domain overlay rows\n // merge by version as usual; surviving echoes append after all durable\n // rows, ordered among themselves by when the user submitted.\n const overlayDurableMessages = overlayMessages.filter(\n (message) => !isWorkspaceAgentActivityOptimisticMessage(message)\n );\n const optimisticMessages = overlayMessages\n .filter(isWorkspaceAgentActivityOptimisticMessage)\n .slice()\n .sort(\n (left, right) =>\n left.occurredAtUnixMs - right.occurredAtUnixMs ||\n left.messageId.localeCompare(right.messageId)\n );\n const merged =\n overlayDurableMessages.length === 0\n ? [...durableMessages]\n : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);\n return optimisticMessages.length === 0\n ? merged\n : [...merged, ...optimisticMessages];\n}\n\nfunction workspaceAgentActivityMessageIdentity(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const messageId = message.messageId?.trim() ?? \"\";\n if (messageId) {\n return `message:${messageId}`;\n }\n if (typeof message.version === \"number\" && Number.isFinite(message.version)) {\n return `version:${message.version}`;\n }\n return null;\n}\n\nfunction workspaceAgentActivityClientSubmitId(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const clientSubmitId = message.payload?.clientSubmitId;\n return typeof clientSubmitId === \"string\" && clientSubmitId.trim()\n ? `${message.agentSessionId}\\u0000${clientSubmitId.trim()}`\n : null;\n}\n\nfunction workspaceAgentActivityUserPromptSignature(\n message: WorkspaceAgentActivityMessage\n): string | null {\n if (message.role !== \"user\") {\n return null;\n }\n const text = workspaceAgentActivityPayloadText(message.payload).trim();\n const content = workspaceAgentActivityPayloadContentSignature(\n message.payload\n );\n if (!text && content === null) {\n return null;\n }\n return [message.agentSessionId, text, content ?? \"\"].join(\"\\u0000\");\n}\n\nfunction workspaceAgentActivityPayloadText(\n payload: Record<string, unknown> | undefined\n): string {\n const text = payload?.text;\n return typeof text === \"string\" ? text : \"\";\n}\n\nfunction workspaceAgentActivityPayloadContentSignature(\n payload: Record<string, unknown> | undefined\n): string | null {\n if (!payload || !Object.prototype.hasOwnProperty.call(payload, \"content\")) {\n return null;\n }\n const content = payload.content;\n if (!Array.isArray(content)) {\n return null;\n }\n const parts: string[] = [];\n for (const block of content) {\n const signature = workspaceAgentActivityPromptBlockSignature(block);\n if (signature === null) {\n return null;\n }\n parts.push(signature);\n }\n return parts.join(\"\\u0001\");\n}\n\nfunction workspaceAgentActivityPromptBlockSignature(\n block: unknown\n): string | null {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n const record = block as Record<string, unknown>;\n const type = workspaceAgentActivityStringField(record, \"type\");\n if (!type) {\n return null;\n }\n const fields = [\n \"text\",\n \"mimeType\",\n \"data\",\n \"url\",\n \"attachmentId\",\n \"name\",\n \"path\",\n \"uri\",\n \"hostPath\",\n \"uploadStatus\",\n \"assetId\",\n \"kind\"\n ];\n const parts = [`type=${type}`];\n for (const field of fields) {\n const value = workspaceAgentActivityStringField(record, field);\n if (value) {\n parts.push(`${field}=${value}`);\n }\n }\n const sizeBytes = record.sizeBytes;\n if (typeof sizeBytes === \"number\" && Number.isFinite(sizeBytes)) {\n parts.push(`sizeBytes=${sizeBytes}`);\n }\n return parts.join(\"\\u0002\");\n}\n\nfunction workspaceAgentActivityStringField(\n record: Record<string, unknown>,\n field: string\n): string {\n const value = record[field];\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n"],"mappings":"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","names":[]}
@@ -1071,6 +1071,7 @@ var en = {
1071
1071
  mentionEmptyAgentGeneratedFiles: "No files generated by Agent yet",
1072
1072
  mentionAgentGeneratedFolderBack: "Back",
1073
1073
  mentionAgentGeneratedFolderFileCount: "Contains {{count}} files",
1074
+ mentionAgentTargetAvailable: "Available",
1074
1075
  mentionNoMatchingFiles: "No matching files",
1075
1076
  mentionOpenReferences: "View output",
1076
1077
  issueRunPrompt: {
@@ -1565,18 +1566,10 @@ var en = {
1565
1566
  }
1566
1567
  },
1567
1568
  workspaceConnecting: "Preparing your room\u2026",
1568
- /** Shown while entering a room you do not own (shared / invite join). */
1569
- workspaceConnectingOthersSpace: "Entering the room\u2026",
1570
1569
  unknownProvider: "Unknown provider",
1571
1570
  messages: {
1572
- inviteCodeGenerated: "Invite code generated",
1573
- inviteRevoked: "Invite revoked",
1574
1571
  roomOpened: "Room opened",
1575
1572
  roomOpenedIssue: "Room opened. Preparing to focus the task.",
1576
- recognizedSharedRoomNeedInvite: "Recognized a shared room. Enter the invite code to join the canvas.",
1577
- roomJoined: "Joined room",
1578
- roomJoinedIssue: "Joined room. Preparing to focus the task.",
1579
- inviteCodeRequired: "Enter an invite code",
1580
1573
  issueTitleRequired: "Enter a task title first",
1581
1574
  issueCreated: "Task created",
1582
1575
  issueUpdated: "Task updated",
@@ -1597,13 +1590,6 @@ var en = {
1597
1590
  issuePendingUploadAdded: "Added {{count}} pending upload file(s)",
1598
1591
  issueUploaded: "Uploaded {{count}} file(s)",
1599
1592
  issueDirectInstallUnsupported: "Installing Agents is not supported here yet",
1600
- currentInviteMissingCode: "The current invite is missing an invite code. Refresh the share panel and try again.",
1601
- roomShareLinkCopied: "Share link copied",
1602
- visitorShareLinkCopied: "Guest share link copied",
1603
- visitorShareOptionsUpdated: "Guest share settings updated",
1604
- visitorShareDisabled: "Guest sharing is off",
1605
- visitorShareTokenUnavailable: "Guest link already exists and settings were updated. The old raw link cannot be read again.",
1606
- postCreateInviteLinkCopied: "Invite link copied",
1607
1593
  collabCompleted: "This collaboration task is complete",
1608
1594
  githubLoginCompleted: "GitHub sign-in complete",
1609
1595
  googleLoginCompleted: "Google sign-in complete"
@@ -2243,41 +2229,6 @@ var en = {
2243
2229
  noSkillsFound: "No skills found."
2244
2230
  }
2245
2231
  },
2246
- workspaceSharePanel: {
2247
- title: "Share room",
2248
- /** Room top bar — primary 一级, size sm (28px); modal Copy link uses default (32px) */
2249
- topBarAction: "Share",
2250
- subtitle: "You are the room owner. You can invite {{count}} more collaborators.",
2251
- closeAria: "Close share dialog",
2252
- membersSection: "Members",
2253
- ownerRole: "Room owner",
2254
- inviteSlots: "Invites",
2255
- invitedCount: "Invited {{current}}/{{max}}",
2256
- slotLabel: "Invite slot {{n}}",
2257
- slotSubUsedShort: "Invite link used",
2258
- slotSubPending: "Link generated, not yet used",
2259
- slotSubEmpty: "Pending invite",
2260
- statusPending: "Unused",
2261
- statusUsed: "Used",
2262
- statusRevoked: "Revoked",
2263
- statusEmpty: "Empty",
2264
- copyInviteLink: "Copy link",
2265
- revoke: "Revoke",
2266
- emptyStateUsed: "Used; can reissue",
2267
- emptyStatePending: "Pending invite",
2268
- generateLink: "Generate link",
2269
- memberViaInvite: "Joined via invite link",
2270
- memberRole: "Collaborator",
2271
- visitorShareTitle: "Guest sharing",
2272
- visitorShareEnabled: "On",
2273
- visitorShareDisabled: "Off",
2274
- visitorShareContextLabel: "Let guests view messages and file tree",
2275
- visitorShareContextHint: "Guests can only read. They cannot edit, use terminals, or run agents.",
2276
- visitorShareNoLinkHint: "Generate a guest link so anyone with the link can open this room read-only.",
2277
- visitorShareGetLink: "Get share link",
2278
- visitorShareCopyLink: "Copy share link",
2279
- visitorShareDisable: "Turn off sharing"
2280
- },
2281
2232
  settingsPanel: enSettingsPanel,
2282
2233
  websiteNode: enWebsiteNode,
2283
2234
  terminalNode: {
@@ -3596,6 +3547,7 @@ var zhCN = {
3596
3547
  mentionEmptyAgentGeneratedFiles: "\u6682\u65E0 Agent \u751F\u6210\u7684\u6587\u4EF6",
3597
3548
  mentionAgentGeneratedFolderBack: "\u8FD4\u56DE",
3598
3549
  mentionAgentGeneratedFolderFileCount: "\u5305\u542B {{count}} \u4E2A\u6587\u4EF6",
3550
+ mentionAgentTargetAvailable: "\u53EF\u7528",
3599
3551
  mentionNoMatchingFiles: "\u6CA1\u6709\u5339\u914D\u5230\u6587\u4EF6",
3600
3552
  mentionOpenReferences: "\u67E5\u770B\u4EA7\u7269",
3601
3553
  issueRunPrompt: {
@@ -4090,17 +4042,10 @@ var zhCN = {
4090
4042
  secondary: "\u7A0D\u540E\u518D\u5206\u4EAB"
4091
4043
  }
4092
4044
  },
4093
- workspaceConnectingOthersSpace: "\u6B63\u5728\u8FDB\u5165\u623F\u95F4\u2026",
4094
4045
  unknownProvider: "\u672A\u77E5\u63D0\u4F9B\u65B9",
4095
4046
  messages: {
4096
- inviteCodeGenerated: "\u9080\u8BF7\u7801\u5DF2\u751F\u6210",
4097
- inviteRevoked: "\u9080\u8BF7\u5DF2\u4F5C\u5E9F",
4098
4047
  roomOpened: "\u5DF2\u6253\u5F00\u623F\u95F4",
4099
4048
  roomOpenedIssue: "\u5DF2\u6253\u5F00\u623F\u95F4\uFF0C\u51C6\u5907\u5B9A\u4F4D\u5230\u5BF9\u5E94\u4EFB\u52A1",
4100
- recognizedSharedRoomNeedInvite: "\u5DF2\u8BC6\u522B\u5206\u4EAB\u623F\u95F4\uFF0C\u8BF7\u8F93\u5165\u9080\u8BF7\u7801\u52A0\u5165\u753B\u5E03",
4101
- roomJoined: "\u5DF2\u52A0\u5165\u623F\u95F4",
4102
- roomJoinedIssue: "\u5DF2\u52A0\u5165\u623F\u95F4\uFF0C\u51C6\u5907\u5B9A\u4F4D\u5230\u5BF9\u5E94\u4EFB\u52A1",
4103
- inviteCodeRequired: "\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",
4104
4049
  issueTitleRequired: "\u8BF7\u5148\u586B\u5199\u4EFB\u52A1\u6807\u9898",
4105
4050
  issueCreated: "\u4EFB\u52A1\u5DF2\u521B\u5EFA",
4106
4051
  issueUpdated: "\u4EFB\u52A1\u5DF2\u66F4\u65B0",
@@ -4121,13 +4066,6 @@ var zhCN = {
4121
4066
  issuePendingUploadAdded: "\u5DF2\u52A0\u5165 {{count}} \u9879\u5F85\u4E0A\u4F20\u8D44\u6599",
4122
4067
  issueUploaded: "\u5DF2\u4E0A\u4F20 {{count}} \u9879\u8D44\u6599",
4123
4068
  issueDirectInstallUnsupported: "\u5F53\u524D\u4E0D\u652F\u6301\u5728\u8FD9\u91CC\u76F4\u63A5\u5B89\u88C5 Agent",
4124
- currentInviteMissingCode: "\u5F53\u524D\u9080\u8BF7\u7F3A\u5C11\u9080\u8BF7\u7801\uFF0C\u8BF7\u5237\u65B0\u5206\u4EAB\u9762\u677F\u540E\u91CD\u8BD5",
4125
- roomShareLinkCopied: "\u5206\u4EAB\u94FE\u63A5\u5DF2\u590D\u5236",
4126
- visitorShareLinkCopied: "\u8BBF\u5BA2\u5206\u4EAB\u94FE\u63A5\u5DF2\u590D\u5236",
4127
- visitorShareOptionsUpdated: "\u8BBF\u5BA2\u5206\u4EAB\u8BBE\u7F6E\u5DF2\u66F4\u65B0",
4128
- visitorShareDisabled: "\u8BBF\u5BA2\u5206\u4EAB\u5DF2\u5173\u95ED",
4129
- visitorShareTokenUnavailable: "\u8BBF\u5BA2\u94FE\u63A5\u5DF2\u5B58\u5728\uFF0C\u8BBE\u7F6E\u5DF2\u66F4\u65B0\uFF1B\u65E7\u94FE\u63A5\u660E\u6587\u65E0\u6CD5\u518D\u6B21\u8BFB\u53D6",
4130
- postCreateInviteLinkCopied: "\u9080\u8BF7\u94FE\u63A5\u5DF2\u590D\u5236",
4131
4069
  collabCompleted: "\u8BE5\u534F\u4F5C\u4EFB\u52A1\u5DF2\u5B8C\u6210",
4132
4070
  githubLoginCompleted: "GitHub \u767B\u5F55\u5B8C\u6210",
4133
4071
  googleLoginCompleted: "Google \u767B\u5F55\u5B8C\u6210"
@@ -4767,41 +4705,6 @@ var zhCN = {
4767
4705
  noSkillsFound: "\u672A\u627E\u5230 Skill\u3002"
4768
4706
  }
4769
4707
  },
4770
- workspaceSharePanel: {
4771
- title: "\u5206\u4EAB\u623F\u95F4",
4772
- /** Workspace top bar — 一级主按钮 + small(28px);弹窗内「复制链接」为默认档 32px */
4773
- topBarAction: "\u5206\u4EAB",
4774
- subtitle: "\u4F60\u662F\u623F\u95F4 Owner\uFF0C\u53EF\u518D\u9080\u8BF7 {{count}} \u4F4D\u534F\u4F5C\u8005",
4775
- closeAria: "\u5173\u95ED\u5206\u4EAB\u5F39\u7A97",
4776
- membersSection: "\u6210\u5458",
4777
- ownerRole: "\u623F\u95F4 owner",
4778
- inviteSlots: "\u9080\u8BF7",
4779
- invitedCount: "\u5DF2\u9080\u8BF7 {{current}}/{{max}}",
4780
- slotLabel: "\u9080\u8BF7\u540D\u989D {{n}}",
4781
- slotSubUsedShort: "\u9080\u8BF7\u94FE\u63A5\u5DF2\u4F7F\u7528",
4782
- slotSubPending: "\u94FE\u63A5\u5DF2\u751F\u6210\uFF0C\u5C1A\u672A\u4F7F\u7528",
4783
- slotSubEmpty: "\u5F85\u9080\u8BF7",
4784
- statusPending: "\u672A\u4F7F\u7528",
4785
- statusUsed: "\u5DF2\u4F7F\u7528",
4786
- statusRevoked: "\u5DF2\u64A4\u9500",
4787
- statusEmpty: "\u7A7A",
4788
- copyInviteLink: "\u590D\u5236\u94FE\u63A5",
4789
- revoke: "\u64A4\u9500",
4790
- emptyStateUsed: "\u5DF2\u4F7F\u7528\uFF0C\u53EF\u8865\u53D1",
4791
- emptyStatePending: "\u5F85\u9080\u8BF7",
4792
- generateLink: "\u751F\u6210\u94FE\u63A5",
4793
- memberViaInvite: "\u901A\u8FC7\u9080\u8BF7\u94FE\u63A5\u52A0\u5165",
4794
- memberRole: "\u534F\u4F5C\u8005",
4795
- visitorShareTitle: "\u8BBF\u5BA2\u5206\u4EAB",
4796
- visitorShareEnabled: "\u5DF2\u5F00\u542F",
4797
- visitorShareDisabled: "\u672A\u5F00\u542F",
4798
- visitorShareContextLabel: "\u5141\u8BB8\u8BBF\u5BA2\u67E5\u770B\u6D88\u606F\u5217\u8868\u548C\u6587\u4EF6\u6811",
4799
- visitorShareContextHint: "\u8BBF\u5BA2\u53EA\u80FD\u53EA\u8BFB\u67E5\u770B\uFF0C\u4E0D\u4F1A\u83B7\u5F97\u7F16\u8F91\u3001\u7EC8\u7AEF\u6216\u6267\u884C\u6743\u9650\u3002",
4800
- visitorShareNoLinkHint: "\u751F\u6210\u8BBF\u5BA2\u94FE\u63A5\u540E\uFF0C\u4EFB\u4F55\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u53EF\u4EE5\u53EA\u8BFB\u8BBF\u95EE\u8FD9\u4E2A\u623F\u95F4\u3002",
4801
- visitorShareGetLink: "\u83B7\u53D6\u5206\u4EAB\u94FE\u63A5",
4802
- visitorShareCopyLink: "\u590D\u5236\u5206\u4EAB\u94FE\u63A5",
4803
- visitorShareDisable: "\u5173\u95ED\u5206\u4EAB"
4804
- },
4805
4708
  settingsPanel: zhCNSettingsPanel,
4806
4709
  websiteNode: zhCNWebsiteNode,
4807
4710
  terminalNode: {
@@ -5111,4 +5014,4 @@ export {
5111
5014
  translateInUiLanguage,
5112
5015
  getActiveUiLanguage
5113
5016
  };
5114
- //# sourceMappingURL=chunk-W5AJTBA7.js.map
5017
+ //# sourceMappingURL=chunk-4TNM6ZEC.js.map