@tutti-os/workspace-issue-manager 0.0.16 → 0.0.17

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createIssueManagerI18nRuntime
3
- } from "./chunk-TER7RTXO.js";
3
+ } from "./chunk-FKBBTRO6.js";
4
4
 
5
5
  // src/core/feature.ts
6
6
  import {
@@ -31,6 +31,7 @@ function createIssueManagerFeature(input) {
31
31
  identityAdapter: input.identityAdapter,
32
32
  mentionActionHandler: input.mentionActionHandler,
33
33
  notifications: input.notifications,
34
+ referenceSourceAggregator: input.referenceSourceAggregator,
34
35
  shareAdapter: input.shareAdapter,
35
36
  ui: {
36
37
  showInviteCollaborator: input.ui?.showInviteCollaborator ?? true
@@ -86,6 +87,44 @@ var extractIssueManagerPlainTextWithoutFilesFromContent = extractPlainTextWithou
86
87
  var createIssueManagerMentionHref = createRichTextMentionHref;
87
88
  var createIssueManagerMentionMarkdown = createRichTextMentionMarkdown;
88
89
  var parseIssueManagerMentionHref = parseRichTextMentionHref;
90
+ function createIssueManagerWorkspaceReferenceMentionMarkdown(input) {
91
+ const id = input.id.trim();
92
+ const displayName = input.displayName.trim();
93
+ if (!id || !displayName) {
94
+ return "";
95
+ }
96
+ const scope = {
97
+ workspaceId: input.workspaceId,
98
+ source: input.source
99
+ };
100
+ const groupId = input.groupId?.trim();
101
+ if (groupId) {
102
+ scope.groupId = groupId;
103
+ }
104
+ const iconUrl = input.iconUrl?.trim();
105
+ if (iconUrl) {
106
+ scope.icon = iconUrl;
107
+ }
108
+ if (input.fileCount != null && input.fileCount > 0) {
109
+ scope.count = String(input.fileCount);
110
+ }
111
+ return createRichTextMentionMarkdown({
112
+ providerId: "workspace-reference",
113
+ entityId: id,
114
+ label: displayName,
115
+ scope
116
+ });
117
+ }
118
+ function appendIssueManagerWorkspaceReferenceMentionsToContent(content, bundles) {
119
+ const base = normalizeRichTextContent(content);
120
+ const rendered = bundles.map(
121
+ (bundle) => createIssueManagerWorkspaceReferenceMentionMarkdown(bundle)
122
+ ).filter((markdown) => markdown.length > 0);
123
+ if (rendered.length === 0) {
124
+ return base;
125
+ }
126
+ return base ? `${base} ${rendered.join(" ")}` : rendered.join(" ");
127
+ }
89
128
  var extractIssueManagerMentionsFromContent = extractRichTextMentionsFromContent;
90
129
  var removeIssueManagerMentionFromContent = removeRichTextMentionFromContent;
91
130
 
@@ -305,6 +344,8 @@ export {
305
344
  createIssueManagerMentionHref,
306
345
  createIssueManagerMentionMarkdown,
307
346
  parseIssueManagerMentionHref,
347
+ createIssueManagerWorkspaceReferenceMentionMarkdown,
348
+ appendIssueManagerWorkspaceReferenceMentionsToContent,
308
349
  extractIssueManagerMentionsFromContent,
309
350
  removeIssueManagerMentionFromContent,
310
351
  issueManagerSidebarDefaultWidth,
@@ -322,4 +363,4 @@ export {
322
363
  buildIssueManagerRunPrompt,
323
364
  buildIssueManagerTaskBreakdownPrompt
324
365
  };
325
- //# sourceMappingURL=chunk-7O62INYA.js.map
366
+ //# sourceMappingURL=chunk-BPNHQNTP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/feature.ts","../src/core/content.ts","../src/core/layout.ts","../src/core/workspaceIssueMention.ts","../src/core/runPrompt.ts"],"sourcesContent":["import type { I18nRuntime } from \"@tutti-os/ui-i18n-runtime\";\nimport type { RichTextMentionAttrs } from \"@tutti-os/ui-rich-text/types\";\nimport {\n createWorkspaceUserProjectI18nRuntime,\n type WorkspaceUserProjectI18nRuntime\n} from \"@tutti-os/workspace-user-project/i18n\";\nimport type { ReferenceSourceAggregator } from \"@tutti-os/workspace-file-reference/core\";\nimport {\n createIssueManagerI18nRuntime,\n type IssueManagerI18nRuntime\n} from \"../i18n/issueManagerI18n.ts\";\nimport type {\n IssueManagerAgentBreakdownLauncher,\n IssueManagerAgentProviderOptionsAdapter,\n IssueManagerAnalyticsAdapter,\n IssueManagerExecutionDirectoryPicker,\n IssueManagerAgentSessionOpener,\n IssueManagerAgentRunner,\n IssueManagerBackend,\n IssueManagerEventSource,\n IssueManagerFileAdapter,\n IssueManagerIdentityAdapter,\n IssueManagerNodeState,\n IssueManagerShareAdapter\n} from \"../contracts/index.ts\";\n\nexport interface IssueManagerNotificationSink {\n tips(title: string): void;\n}\n\nexport interface IssueManagerMentionActionHandler {\n openMention(input: {\n mention: RichTextMentionAttrs;\n workspaceId: string;\n }): Promise<void> | void;\n}\n\nexport interface IssueManagerFeatureUIConfig {\n showInviteCollaborator: boolean;\n}\n\nexport interface IssueManagerFeature {\n agentBreakdownLauncher?: IssueManagerAgentBreakdownLauncher;\n analytics?: IssueManagerAnalyticsAdapter;\n agentProviderOptions?: IssueManagerAgentProviderOptionsAdapter;\n agentSessionOpener?: IssueManagerAgentSessionOpener;\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n eventSource?: IssueManagerEventSource;\n executionDirectoryPicker?: IssueManagerExecutionDirectoryPicker;\n fileAdapter?: IssueManagerFileAdapter;\n i18n: IssueManagerI18nRuntime;\n identityAdapter: IssueManagerIdentityAdapter;\n mentionActionHandler?: IssueManagerMentionActionHandler;\n notifications?: IssueManagerNotificationSink;\n referenceSourceAggregator?: ReferenceSourceAggregator;\n shareAdapter?: IssueManagerShareAdapter;\n ui: IssueManagerFeatureUIConfig;\n workspaceUserProjectI18n: WorkspaceUserProjectI18nRuntime;\n}\n\nexport interface CreateIssueManagerFeatureInput {\n agentBreakdownLauncher?: IssueManagerAgentBreakdownLauncher;\n analytics?: IssueManagerAnalyticsAdapter;\n agentProviderOptions?: IssueManagerAgentProviderOptionsAdapter;\n agentSessionOpener?: IssueManagerAgentSessionOpener;\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n eventSource?: IssueManagerEventSource;\n executionDirectoryPicker?: IssueManagerExecutionDirectoryPicker;\n fileAdapter?: IssueManagerFileAdapter;\n i18n?: I18nRuntime<string>;\n identityAdapter: IssueManagerIdentityAdapter;\n mentionActionHandler?: IssueManagerMentionActionHandler;\n notifications?: IssueManagerNotificationSink;\n referenceSourceAggregator?: ReferenceSourceAggregator;\n shareAdapter?: IssueManagerShareAdapter;\n ui?: Partial<IssueManagerFeatureUIConfig>;\n}\n\nexport const defaultIssueManagerNodeState: IssueManagerNodeState = {\n activeTopicId: null,\n issueSearchQuery: \"\",\n issueStatusFilter: \"all\",\n selectedAgentProvider: \"codex\",\n selectedExecutionDirectory: null,\n selectedIssueId: null,\n selectedTaskId: null,\n taskListCollapsed: false\n};\n\nexport function createIssueManagerFeature(\n input: CreateIssueManagerFeatureInput\n): IssueManagerFeature {\n return {\n agentBreakdownLauncher: input.agentBreakdownLauncher,\n analytics: input.analytics,\n agentProviderOptions: input.agentProviderOptions,\n agentSessionOpener: input.agentSessionOpener,\n agentRunner: input.agentRunner,\n backend: input.backend,\n eventSource: input.eventSource,\n executionDirectoryPicker: input.executionDirectoryPicker,\n fileAdapter: input.fileAdapter,\n i18n: createIssueManagerI18nRuntime(input.i18n),\n identityAdapter: input.identityAdapter,\n mentionActionHandler: input.mentionActionHandler,\n notifications: input.notifications,\n referenceSourceAggregator: input.referenceSourceAggregator,\n shareAdapter: input.shareAdapter,\n ui: {\n showInviteCollaborator: input.ui?.showInviteCollaborator ?? true\n },\n workspaceUserProjectI18n: createWorkspaceUserProjectI18nRuntime(input.i18n)\n };\n}\n\nexport function normalizeIssueManagerNodeState(\n state: Partial<IssueManagerNodeState> | null | undefined\n): IssueManagerNodeState {\n return {\n ...defaultIssueManagerNodeState,\n ...state,\n activeTopicId: normalizeNullableString(state?.activeTopicId),\n issueSearchQuery: state?.issueSearchQuery?.trim() ?? \"\",\n issueStatusFilter: state?.issueStatusFilter ?? \"all\",\n selectedAgentProvider: state?.selectedAgentProvider?.trim() || \"codex\",\n selectedExecutionDirectory: normalizeNullableString(\n state?.selectedExecutionDirectory\n ),\n selectedIssueId: normalizeNullableString(state?.selectedIssueId),\n selectedTaskId: normalizeNullableString(state?.selectedTaskId),\n taskListCollapsed: state?.taskListCollapsed === true\n };\n}\n\nfunction normalizeNullableString(\n value: string | null | undefined\n): string | null {\n const trimmed = value?.trim() ?? \"\";\n return trimmed.length > 0 ? trimmed : null;\n}\n","import {\n appendRichTextLinksToContent,\n createRichTextLinkMarkdown,\n createRichTextMentionHref,\n createRichTextMentionMarkdown,\n extractPlainTextFromContent,\n extractPlainTextWithoutFilesFromContent,\n extractRichTextLinksFromContent,\n extractRichTextMentionsFromContent,\n normalizeRichTextContent,\n normalizeRichTextLinkHref,\n parseRichTextMentionHref,\n removeRichTextLinkFromContent,\n removeRichTextMentionFromContent\n} from \"@tutti-os/ui-rich-text/core\";\nimport type {\n RichTextLinkInput,\n RichTextLinkRef\n} from \"@tutti-os/ui-rich-text/core\";\nimport type { RichTextMentionAttrs } from \"@tutti-os/ui-rich-text/types\";\n\nexport type IssueManagerWorkspaceFileLinkRef = RichTextLinkRef;\nexport type IssueManagerWorkspaceFileLinkInput = RichTextLinkInput;\n\nexport type IssueManagerMentionRef = RichTextMentionAttrs;\nexport type IssueManagerMentionAttrs = RichTextMentionAttrs;\n\nexport const normalizeIssueManagerContent = normalizeRichTextContent;\n\nexport const normalizeIssueManagerWorkspaceFileLinkHref =\n normalizeRichTextLinkHref;\n\nexport const createIssueManagerWorkspaceFileLinkMarkdown =\n createRichTextLinkMarkdown;\n\nexport const appendIssueManagerWorkspaceFileLinksToContent =\n appendRichTextLinksToContent;\n\nexport const extractIssueManagerWorkspaceFileLinksFromContent =\n extractRichTextLinksFromContent;\n\nexport const removeIssueManagerWorkspaceFileLinkFromContent =\n removeRichTextLinkFromContent;\n\nexport const extractIssueManagerPlainTextFromContent =\n extractPlainTextFromContent;\n\nexport const extractIssueManagerPlainTextWithoutFilesFromContent =\n extractPlainTextWithoutFilesFromContent;\n\nexport const createIssueManagerMentionHref = createRichTextMentionHref;\nexport const createIssueManagerMentionMarkdown = createRichTextMentionMarkdown;\nexport const parseIssueManagerMentionHref = parseRichTextMentionHref;\n\nexport interface IssueManagerWorkspaceReferenceMentionInput {\n source: \"app\" | \"task\";\n id: string;\n groupId?: string | null;\n displayName: string;\n iconUrl?: string | null;\n fileCount?: number;\n workspaceId: string;\n}\n\n/**\n * 把一个「项目/分组」折叠成单条 `mention://workspace-reference/...` chip 的 markdown。\n * 句柄(source + id + groupId)随 query 编码,运行时交给 agent 解析;icon/count 仅供展示。\n * 与 agent 端 `buildAgentWorkspaceReferenceMentionHref` 的参数名保持一致。\n */\nexport function createIssueManagerWorkspaceReferenceMentionMarkdown(\n input: IssueManagerWorkspaceReferenceMentionInput\n): string {\n const id = input.id.trim();\n const displayName = input.displayName.trim();\n if (!id || !displayName) {\n return \"\";\n }\n const scope: Record<string, string> = {\n workspaceId: input.workspaceId,\n source: input.source\n };\n const groupId = input.groupId?.trim();\n if (groupId) {\n scope.groupId = groupId;\n }\n const iconUrl = input.iconUrl?.trim();\n if (iconUrl) {\n scope.icon = iconUrl;\n }\n if (input.fileCount != null && input.fileCount > 0) {\n scope.count = String(input.fileCount);\n }\n return createRichTextMentionMarkdown({\n providerId: \"workspace-reference\",\n entityId: id,\n label: displayName,\n scope\n });\n}\n\n/**\n * 把若干项目 chip 追加到内容尾部(以空格分隔,沿用文件链接的拼接形态)。\n */\nexport function appendIssueManagerWorkspaceReferenceMentionsToContent(\n content: string,\n bundles: readonly IssueManagerWorkspaceReferenceMentionInput[]\n): string {\n const base = normalizeRichTextContent(content);\n const rendered = bundles\n .map((bundle) =>\n createIssueManagerWorkspaceReferenceMentionMarkdown(bundle)\n )\n .filter((markdown) => markdown.length > 0);\n if (rendered.length === 0) {\n return base;\n }\n return base ? `${base} ${rendered.join(\" \")}` : rendered.join(\" \");\n}\nexport const extractIssueManagerMentionsFromContent =\n extractRichTextMentionsFromContent;\nexport const removeIssueManagerMentionFromContent =\n removeRichTextMentionFromContent;\n","export const issueManagerSidebarDefaultWidth = 280;\nexport const issueManagerSidebarMinWidth = 248;\nexport const issueManagerSidebarMaxWidth = 520;\nexport const issueManagerMainMinWidth = 420;\nexport const issueManagerDefaultNodeFrameWidth = 860;\nexport const issueManagerExpandedFrameMinWidth =\n issueManagerSidebarMinWidth + issueManagerMainMinWidth;\n\nexport function clampIssueManagerSidebarWidth(\n width: number,\n layoutWidth: number\n): number {\n const maxWidth = Math.max(\n issueManagerSidebarMinWidth,\n Math.min(\n issueManagerSidebarMaxWidth,\n layoutWidth - issueManagerMainMinWidth\n )\n );\n return Math.min(Math.max(width, issueManagerSidebarMinWidth), maxWidth);\n}\n\nexport function shouldAutoCollapseIssueManagerSidebar(\n containerWidth: number\n): boolean {\n return (\n Number.isFinite(containerWidth) &&\n containerWidth > 0 &&\n Math.round(containerWidth) < issueManagerExpandedFrameMinWidth\n );\n}\n\nexport function resolveIssueManagerExpandedFrame<\n TFrame extends { width: number; x: number }\n>(frame: TFrame, surfaceWidth: number): TFrame {\n const preferredWidth = Math.max(\n issueManagerExpandedFrameMinWidth,\n Math.min(\n issueManagerDefaultNodeFrameWidth,\n frame.width + issueManagerSidebarDefaultWidth\n )\n );\n const width = Math.min(\n Math.max(frame.width, preferredWidth),\n Math.max(frame.width, surfaceWidth)\n );\n\n return {\n ...frame,\n width,\n x: Math.max(0, Math.min(frame.x, surfaceWidth - width))\n };\n}\n","export type WorkspaceIssueMentionMode = \"breakdown\" | \"execute\";\n\nexport interface BuildWorkspaceIssueMentionHrefInput {\n issueId: string;\n mode?: WorkspaceIssueMentionMode;\n outputDir?: string | null;\n runId?: string | null;\n taskId?: string | null;\n topicId?: string | null;\n workspaceId: string;\n}\n\nexport interface ParsedWorkspaceIssueMention {\n issueId: string;\n mode?: WorkspaceIssueMentionMode;\n outputDir?: string;\n runId?: string;\n taskId?: string;\n topicId?: string;\n workspaceId: string;\n}\n\nexport function buildWorkspaceIssueMentionHref(\n input: BuildWorkspaceIssueMentionHrefInput\n): string {\n const workspaceId = input.workspaceId.trim();\n const issueId = input.issueId.trim();\n if (!workspaceId || !issueId) {\n return \"\";\n }\n\n const params = new URLSearchParams({\n workspaceId\n });\n appendWorkspaceIssueMentionParam(params, \"topicId\", input.topicId);\n appendWorkspaceIssueMentionParam(\n params,\n \"mode\",\n normalizeMentionMode(input.mode)\n );\n appendWorkspaceIssueMentionParam(params, \"taskId\", input.taskId);\n appendWorkspaceIssueMentionParam(params, \"runId\", input.runId);\n appendWorkspaceIssueMentionParam(params, \"outputDir\", input.outputDir);\n return [\n `mention://workspace-issue/${encodeURIComponent(issueId)}`,\n params.toString()\n ].join(\"?\");\n}\n\nexport function parseWorkspaceIssueMentionHref(\n href: string\n): ParsedWorkspaceIssueMention | null {\n const trimmedHref = href.trim();\n if (!trimmedHref.toLowerCase().startsWith(\"mention://workspace-issue\")) {\n return null;\n }\n\n let url: URL;\n try {\n url = new URL(trimmedHref);\n } catch {\n return null;\n }\n if (url.protocol !== \"mention:\" || url.hostname !== \"workspace-issue\") {\n return null;\n }\n if (hasUnsupportedWorkspaceIssueMentionParam(url.searchParams)) {\n return null;\n }\n\n const workspaceId = url.searchParams.get(\"workspaceId\")?.trim() || \"\";\n const issueId = safeDecodeURIComponent(\n url.pathname.replace(/^\\/+/, \"\")\n ).trim();\n if (!workspaceId || !issueId) {\n return null;\n }\n\n const mode = normalizeMentionMode(url.searchParams.get(\"mode\"));\n const topicId = optionalSearchParam(url.searchParams, \"topicId\");\n const taskId = optionalSearchParam(url.searchParams, \"taskId\");\n const runId = optionalSearchParam(url.searchParams, \"runId\");\n const outputDir = optionalSearchParam(url.searchParams, \"outputDir\");\n\n return {\n issueId,\n ...(mode ? { mode } : {}),\n ...(outputDir ? { outputDir } : {}),\n ...(runId ? { runId } : {}),\n ...(taskId ? { taskId } : {}),\n ...(topicId ? { topicId } : {}),\n workspaceId\n };\n}\n\nfunction appendWorkspaceIssueMentionParam(\n params: URLSearchParams,\n key: string,\n value: string | null | undefined\n): void {\n const normalized = value?.trim() || \"\";\n if (normalized) {\n params.set(key, normalized);\n }\n}\n\nfunction optionalSearchParam(\n params: URLSearchParams,\n key: string\n): string | undefined {\n const value = params.get(key)?.trim() || \"\";\n return value || undefined;\n}\n\nconst workspaceIssueMentionQueryParams = new Set([\n \"workspaceId\",\n \"topicId\",\n \"mode\",\n \"taskId\",\n \"runId\",\n \"outputDir\"\n]);\n\nfunction hasUnsupportedWorkspaceIssueMentionParam(\n params: URLSearchParams\n): boolean {\n return [...params.keys()].some((key) => {\n const normalizedKey = key.trim();\n return (\n !workspaceIssueMentionQueryParams.has(normalizedKey) ||\n normalizedKey.startsWith(\"meta.\")\n );\n });\n}\n\nfunction safeDecodeURIComponent(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return \"\";\n }\n}\n\nfunction normalizeMentionMode(\n value: string | null | undefined\n): WorkspaceIssueMentionMode | undefined {\n return value === \"breakdown\" || value === \"execute\" ? value : undefined;\n}\n","import type {\n IssueManagerContextRef,\n IssueManagerIssueSummary,\n IssueManagerTaskSummary\n} from \"../contracts/index.ts\";\nimport type { IssueManagerI18nRuntime } from \"../i18n/issueManagerI18n.ts\";\nimport { buildWorkspaceIssueMentionHref } from \"./workspaceIssueMention.ts\";\n\ntype IssueManagerPromptCopy = Pick<IssueManagerI18nRuntime, \"t\">;\n\nexport function resolveIssueManagerWorkspaceRuntimePath(\n workspaceRoot: string,\n requestedPath: string\n): string {\n const normalizedWorkspaceRoot = workspaceRoot.trim().replace(/\\/+$/, \"\");\n const normalizedRequestedPath = requestedPath.trim();\n\n if (!normalizedWorkspaceRoot || !normalizedRequestedPath) {\n return normalizedRequestedPath;\n }\n\n if (\n normalizedRequestedPath === normalizedWorkspaceRoot ||\n normalizedRequestedPath.startsWith(`${normalizedWorkspaceRoot}/`)\n ) {\n return normalizedRequestedPath;\n }\n\n if (normalizedRequestedPath === \"/workspace\") {\n return normalizedWorkspaceRoot;\n }\n\n if (normalizedRequestedPath.startsWith(\"/workspace/\")) {\n return `${normalizedWorkspaceRoot}/${normalizedRequestedPath.slice(\"/workspace/\".length)}`;\n }\n\n if (!normalizedRequestedPath.startsWith(\"/\")) {\n return `${normalizedWorkspaceRoot}/${normalizedRequestedPath.replace(/^\\/+/, \"\")}`;\n }\n\n return normalizedRequestedPath;\n}\n\nexport function buildIssueManagerRunPrompt(input: {\n copy?: IssueManagerPromptCopy;\n issue: IssueManagerIssueSummary;\n task?: IssueManagerTaskSummary;\n workspaceRoot: string;\n}): string {\n const mentionMarkdown = buildIssueManagerIssueMention({\n issue: input.issue,\n task: input.task,\n mode: \"execute\"\n });\n return [\n input.copy?.t(\"runPrompts.executeIntro\") ?? \"Handle this task reference.\",\n \"\",\n mentionMarkdown\n ].join(\"\\n\");\n}\n\nexport function buildIssueManagerTaskBreakdownPrompt(input: {\n copy?: IssueManagerPromptCopy;\n issueDetail: {\n contextRefs: readonly IssueManagerContextRef[];\n issue: IssueManagerIssueSummary;\n tasks: readonly IssueManagerTaskSummary[];\n };\n workspaceId: string;\n}): string {\n const issue = input.issueDetail.issue;\n const issueMention = buildIssueManagerIssueMention({\n issue,\n mode: \"breakdown\"\n });\n\n return [\n input.copy?.t(\"runPrompts.breakdownIntro\") ??\n \"Break this task reference down into executable tasks.\",\n \"\",\n issueMention\n ].join(\"\\n\");\n}\n\nfunction buildIssueManagerIssueMention(input: {\n issue: IssueManagerIssueSummary;\n task?: IssueManagerTaskSummary;\n mode: \"breakdown\" | \"execute\";\n outputDir?: string | null;\n runId?: string | null;\n}): string {\n const labelParts = [input.issue.title.trim(), input.task?.title.trim() || \"\"]\n .filter(Boolean)\n .map((value) =>\n escapeIssueManagerMentionLabel(value.replace(/^@+/, \"\").trim())\n );\n const href = buildWorkspaceIssueMentionHref({\n issueId: input.issue.issueId,\n mode: input.mode,\n outputDir: input.outputDir,\n runId: input.runId,\n taskId: input.task?.taskId,\n topicId: input.issue.topicId,\n workspaceId: input.issue.workspaceId\n });\n return `[@${labelParts.join(\" / \")}](${href})`;\n}\n\nfunction escapeIssueManagerMentionLabel(value: string): string {\n return value\n .replaceAll(\"\\\\\", \"\\\\\\\\\")\n .replaceAll(\"[\", \"\\\\[\")\n .replaceAll(\"]\", \"\\\\]\")\n .replaceAll(\"\\r\", \" \")\n .replaceAll(\"\\n\", \" \");\n}\n"],"mappings":"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","names":[]}
@@ -167,17 +167,27 @@ var issueManagerEn = {
167
167
  },
168
168
  referencePicker: {
169
169
  browse: "Browse",
170
+ clearFilter: "Clear filter",
170
171
  confirm: "Use selected references",
171
172
  emptyDirectory: "This folder is empty.",
172
173
  emptyPreview: "Select a file to view details.",
173
174
  emptySearch: "No matching files or folders.",
175
+ fileTypeAll: "All types",
176
+ fileTypeDocument: "Documents",
177
+ fileTypeImage: "Images",
178
+ fileTypeOther: "Other",
179
+ fileTypeSeparator: ", ",
180
+ fileTypeVideo: "Videos",
181
+ fileTypeWebpage: "Web pages",
174
182
  loadMore: "Load more",
183
+ loadMoreGroups: "Load more",
175
184
  loading: "Loading...",
176
185
  previewBinary: "This file looks like binary content.",
177
186
  previewDecodeFailed: "This file couldn't be decoded as UTF-8 text.",
178
187
  previewError: "Couldn't load a preview.",
179
188
  previewFileTooLarge: "This file is larger than {{maxSize}}.",
180
189
  previewFolder: "Folder preview is not available.",
190
+ previewHierarchy: "Location",
181
191
  previewLoading: "Loading preview...",
182
192
  previewModified: "Modified",
183
193
  previewSize: "File size",
@@ -190,7 +200,8 @@ var issueManagerEn = {
190
200
  selectGroupHint: "Select a folder from the sidebar.",
191
201
  selectedCount: "{{count}} selected",
192
202
  sourceColumn: "Category",
193
- title: "Pick workspace references"
203
+ title: "Pick workspace references",
204
+ workspaceRootGroup: "Workspace"
194
205
  },
195
206
  richTextAt: {
196
207
  all: "All",
@@ -380,17 +391,27 @@ var issueManagerZhCN = {
380
391
  },
381
392
  referencePicker: {
382
393
  browse: "\u6D4F\u89C8",
394
+ clearFilter: "\u6E05\u9664\u7B5B\u9009",
383
395
  confirm: "\u4F7F\u7528\u5DF2\u9009\u5F15\u7528",
384
396
  emptyDirectory: "\u5F53\u524D\u76EE\u5F55\u4E3A\u7A7A",
385
397
  emptyPreview: "\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u67E5\u770B\u8BE6\u60C5",
386
398
  emptySearch: "\u6CA1\u6709\u5339\u914D\u7684\u6587\u4EF6\u6216\u6587\u4EF6\u5939",
399
+ fileTypeAll: "\u5168\u90E8\u7C7B\u578B",
400
+ fileTypeDocument: "\u6587\u6863",
401
+ fileTypeImage: "\u56FE\u7247",
402
+ fileTypeOther: "\u5176\u4ED6",
403
+ fileTypeSeparator: "\u3001",
404
+ fileTypeVideo: "\u89C6\u9891",
405
+ fileTypeWebpage: "\u7F51\u9875",
387
406
  loadMore: "\u52A0\u8F7D\u66F4\u591A",
407
+ loadMoreGroups: "\u62C9\u53D6\u66F4\u591A",
388
408
  loading: "\u6B63\u5728\u52A0\u8F7D",
389
409
  previewBinary: "\u8FD9\u4E2A\u6587\u4EF6\u66F4\u50CF\u4E8C\u8FDB\u5236\u5185\u5BB9",
390
410
  previewDecodeFailed: "\u6682\u65F6\u65E0\u6CD5\u6309 UTF-8 \u6587\u672C\u89E3\u7801\u8FD9\u4E2A\u6587\u4EF6",
391
411
  previewError: "\u52A0\u8F7D\u9884\u89C8\u5931\u8D25",
392
412
  previewFileTooLarge: "\u8FD9\u4E2A\u6587\u4EF6\u8D85\u8FC7\u4E86 {{maxSize}}",
393
413
  previewFolder: "\u6682\u4E0D\u652F\u6301\u9884\u89C8\u6587\u4EF6\u5939",
414
+ previewHierarchy: "\u6240\u5C5E\u5C42\u7EA7",
394
415
  previewLoading: "\u6B63\u5728\u52A0\u8F7D\u9884\u89C8",
395
416
  previewModified: "\u4EA7\u51FA\u65F6\u95F4",
396
417
  previewSize: "\u6587\u4EF6\u5927\u5C0F",
@@ -403,7 +424,8 @@ var issueManagerZhCN = {
403
424
  selectGroupHint: "\u4ECE\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u76EE\u5F55",
404
425
  selectedCount: "\u5DF2\u9009\u62E9 {{count}} \u9879",
405
426
  sourceColumn: "\u5206\u7C7B",
406
- title: "\u9009\u62E9\u5DE5\u4F5C\u533A\u5F15\u7528"
427
+ title: "\u9009\u62E9\u5DE5\u4F5C\u533A\u5F15\u7528",
428
+ workspaceRootGroup: "\u5DE5\u4F5C\u533A"
407
429
  },
408
430
  richTextAt: {
409
431
  all: "\u5168\u90E8",
@@ -468,4 +490,4 @@ export {
468
490
  issueManagerI18nResources,
469
491
  createIssueManagerI18nRuntime
470
492
  };
471
- //# sourceMappingURL=chunk-TER7RTXO.js.map
493
+ //# sourceMappingURL=chunk-FKBBTRO6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n/issueManagerI18n.ts"],"sourcesContent":["import {\n createI18nRuntime,\n createScopedI18nRuntime,\n createScopedLocaleObjectsI18nModuleManifest,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype IssueManagerI18nLocale = \"en\" | \"zh-CN\";\n\nexport const issueManagerI18nNamespace = \"issueManager\";\nexport const issueManagerI18nModule =\n createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"issueManagerEn\",\n \"zh-CN\": \"issueManagerZhCN\"\n },\n name: \"workspace-issue-manager\",\n namespace: issueManagerI18nNamespace,\n sourceRoot: \"packages/workspace/issue-manager/src\"\n });\n\nconst issueManagerEn = {\n actions: {\n add: \"Add\",\n addReferences: \"Add references\",\n addSubtask: \"Add subtask\",\n acceptTask: \"Accept\",\n askAgentToBreakdown: \"Agent breaks down tasks\",\n askAgentToRun: \"Send to Agent\",\n cancel: \"Cancel\",\n clearSearch: \"Clear search\",\n closeTaskDetails: \"Back to task details\",\n collapseIssueList: \"Collapse task list\",\n copyShareLink: \"Copy share link\",\n createIssue: \"New task\",\n createTask: \"Create task\",\n createTopic: \"New topic\",\n delete: \"Delete\",\n deleteIssue: \"Delete task\",\n deleteTask: \"Delete task\",\n edit: \"Edit\",\n editIssue: \"Edit task\",\n editTask: \"Edit task\",\n editTopic: \"Edit topic\",\n expandIssueList: \"Expand task list\",\n inviteCollaborator: \"Invite collaborator\",\n insertReferences: \"Insert references\",\n moreActions: \"More actions\",\n openAgentSession: \"Open agent session\",\n openReference: \"Open\",\n refresh: \"Refresh\",\n referenceWorkspaceFiles: \"Reference files\",\n rejectTask: \"Reject\",\n removeReference: \"Remove\",\n runTask: \"Run task\",\n saveIssue: \"Save task\",\n saveSubtask: \"Save subtask\",\n saveTask: \"Save task\",\n pinTopic: \"Pin\",\n saveTopic: \"Save topic\",\n unpinTopic: \"Unpin\",\n uploadFiles: \"Upload files\",\n uploadFolder: \"Upload folder\"\n },\n composer: {\n issueContentPlaceholder: \"Describe the task, goals, or context.\",\n issueTitlePlaceholder: \"Task title\",\n subtaskContentPlaceholder:\n \"Add the subtask goal, execution approach, and acceptance criteria.\",\n subtaskTitlePlaceholder: \"Enter a subtask title\",\n taskContentPlaceholder: \"Describe the executable task and expected result.\",\n taskTitlePlaceholder: \"Task title\"\n },\n confirmations: {\n deleteIssue: \"Delete this task?\",\n deleteTask: \"Delete this task?\",\n deleteTopic: \"Delete this topic?\"\n },\n dockLabel: \"Tasks\",\n emptyState: \"Create a task, add the goal and references, then let Agent run\",\n labels: {\n allStatus: \"All\",\n content: \"Content\",\n contextReferences: \"Context references\",\n createTopicDialogTitle: \"New topic\",\n createdAt: \"Created\",\n creator: \"Creator\",\n customExecutionDirectory: \"Custom directory\",\n description: \"Description\",\n executionOutputs: \"Execution outputs\",\n issueDetails: \"Task details\",\n issueList: \"Tasks\",\n latestRunStatus: \"Latest execution status\",\n outputs: \"Outputs\",\n priority: \"Priority\",\n provider: \"Provider\",\n recentRuns: \"Recent runs\",\n requirementDescription: \"Requirements\",\n resizeIssueList: \"Resize task list\",\n searchIssues: \"Search tasks\",\n scrollStatusTabsLeft: \"Scroll status tabs left\",\n scrollStatusTabsRight: \"Scroll status tabs right\",\n status: \"Status\",\n subtasks: \"Subtasks\",\n taskAcceptance: \"Task pending acceptance\",\n topic: \"Topic\",\n topicDefault: \"Default\",\n topicSummary: \"Topic summary\",\n topicTitle: \"Topic title\",\n editTopicDialogTitle: \"Edit topic\",\n title: \"Title\",\n updatedAt: \"Updated\",\n taskCount: \"{{count}} subtasks\",\n taskDetails: \"Task details\",\n taskList: \"Tasks\",\n temporaryExecutionDirectory: \"Temporary directory\"\n },\n messages: {\n clipboardUnavailable: \"Clipboard is unavailable.\",\n agentSessionOpenFailed: \"Couldn't open the agent session.\",\n breakdownOpenFailed: \"Couldn't open the agent task breakdown.\",\n breakdownUnavailable: \"Agent task breakdown is unavailable.\",\n copyShareLinkFailed: \"Couldn't copy the share link.\",\n copiedShareLink: \"Share link copied.\",\n issueDeleteFailed: \"Couldn't delete the task.\",\n issueRefreshFailed: \"Couldn't refresh tasks.\",\n issueSaveFailed: \"Couldn't save the task.\",\n issueDeleted: \"Task deleted.\",\n issueSaved: \"Task saved.\",\n issueContentEmpty: \"No task description yet\",\n noExecutionOutputs: \"No execution outputs yet\",\n noExecutionStatus: \"No execution records yet\",\n noIssueReferences: \"No task references yet\",\n noIssuesForFilterBody:\n \"Try another filter, or create a new task to get things started\",\n noIssuesForFilterTitle: \"No tasks match the current filter\",\n noIssues: \"No tasks yet\",\n noAgentProviders: \"No available agent providers.\",\n noOutputs: \"No outputs yet\",\n noRecentRuns: \"No runs yet\",\n taskContentEmpty: \"No task description yet\",\n taskAcceptanceHint: \"Accept to complete; reject to return to Todo.\",\n noTaskReferences: \"No task references yet\",\n noTasksForIssueBody:\n \"Create the first subtask for this task and let an agent or yourself execute it\",\n noSubtasksForIssue:\n \"You can continue breaking down this task by adding subtasks\",\n noTasks: \"No tasks yet\",\n refreshingIssues: \"Refreshing tasks...\",\n titleRequired: \"Enter a title before saving.\",\n runExitCode: \"Codex exited with code {{code}}.\",\n runCompleted: \"Run completed.\",\n runFailed: \"Run failed\",\n runStarted: \"Run started.\",\n runStatusMissing:\n \"Terminal exited before the task run produced a status marker.\",\n runTimedOut: \"Task run timed out while waiting for Codex output.\",\n referenceRemoveFailed: \"Couldn't remove the reference.\",\n taskDeleteFailed: \"Couldn't delete the task.\",\n taskSaveFailed: \"Couldn't save the task.\",\n taskDeleted: \"Task deleted.\",\n taskSaved: \"Task saved.\",\n topicCreateFailed: \"Couldn't create the topic.\",\n topicDeleteDefaultForbidden: \"The default topic can't be deleted.\",\n topicDeleteFailed: \"Couldn't delete the topic.\",\n topicDeleteNotEmpty:\n \"Move or delete the tasks in this topic before deleting it.\",\n topicDeleteNotFound: \"This topic no longer exists.\",\n topicListEmpty: \"No task topics are available.\",\n topicUpdateFailed: \"Couldn't update the topic.\",\n uploadTypeConflict: \"Upload target contains conflicting entry types.\",\n workspacePathUnavailable: \"Workspace path is unavailable.\"\n },\n priority: {\n high: \"High\",\n low: \"Low\",\n medium: \"Medium\"\n },\n referencePicker: {\n browse: \"Browse\",\n confirm: \"Use selected references\",\n emptyDirectory: \"This folder is empty.\",\n emptyPreview: \"Select a file to view details.\",\n emptySearch: \"No matching files or folders.\",\n loadMore: \"Load more\",\n loading: \"Loading...\",\n previewBinary: \"This file looks like binary content.\",\n previewDecodeFailed: \"This file couldn't be decoded as UTF-8 text.\",\n previewError: \"Couldn't load a preview.\",\n previewFileTooLarge: \"This file is larger than {{maxSize}}.\",\n previewFolder: \"Folder preview is not available.\",\n previewLoading: \"Loading preview...\",\n previewModified: \"Modified\",\n previewSize: \"File size\",\n previewSource: \"Source\",\n previewTextTooLarge: \"This text file is larger than {{maxSize}}.\",\n previewTooLarge: \"This file is too large to preview.\",\n previewUnavailable: \"Preview is not available in this workspace.\",\n previewUnsupported: \"This file type can't be previewed here.\",\n searchPlaceholder: \"Search files and folders\",\n selectGroupHint: \"Select a folder from the sidebar.\",\n selectedCount: \"{{count}} selected\",\n sourceColumn: \"Category\",\n title: \"Pick workspace references\"\n },\n richTextAt: {\n all: \"All\",\n apps: \"Apps\",\n files: \"Files\",\n issues: \"Tasks\",\n loading: \"Loading...\",\n noMatches: \"No matches\",\n sessions: \"Sessions\",\n showMore: \"Show {{count}} more\",\n switchCategory: \"Switch category\",\n switchSelection: \"Switch selection\"\n },\n run: {\n failedSummaryFallback: \"Run failed\",\n outputDirectory: \"Output directory\",\n requester: \"Requester\",\n status: \"Run status\",\n summary: \"Summary\"\n },\n runPrompts: {\n breakdownIntro: \"Break this task reference down into executable tasks.\",\n executeIntro: \"Handle this task reference.\"\n },\n status: {\n canceled: \"Canceled\",\n completed: \"Done\",\n failed: \"Failed\",\n inProgress: \"Running\",\n notStarted: \"Todo\",\n pendingAcceptance: \"In review\",\n running: \"Running\",\n unknown: \"Unknown\"\n },\n title: \"Tasks\"\n} as const satisfies I18nDictionary;\n\nconst issueManagerZhCN = {\n actions: {\n add: \"添加\",\n addReferences: \"添加引用\",\n addSubtask: \"添加任务\",\n acceptTask: \"验证通过\",\n askAgentToBreakdown: \"Agent 拆解任务\",\n askAgentToRun: \"发送给 Agent\",\n cancel: \"取消\",\n clearSearch: \"清空搜索\",\n closeTaskDetails: \"返回任务详情\",\n collapseIssueList: \"收起任务列表\",\n copyShareLink: \"复制分享链接\",\n createIssue: \"新建任务\",\n createTask: \"新建任务\",\n createTopic: \"新建主题\",\n delete: \"删除\",\n deleteIssue: \"删除任务\",\n deleteTask: \"删除任务\",\n edit: \"编辑\",\n editIssue: \"编辑任务\",\n editTask: \"编辑任务\",\n editTopic: \"编辑主题\",\n expandIssueList: \"展开任务列表\",\n inviteCollaborator: \"邀请协作者\",\n insertReferences: \"插入引用\",\n moreActions: \"更多操作\",\n openAgentSession: \"打开 Agent 会话\",\n openReference: \"打开\",\n refresh: \"刷新\",\n referenceWorkspaceFiles: \"引用文件\",\n rejectTask: \"驳回\",\n removeReference: \"移除\",\n runTask: \"运行任务\",\n saveIssue: \"保存任务\",\n saveSubtask: \"保存任务\",\n saveTask: \"保存任务\",\n pinTopic: \"置顶\",\n saveTopic: \"保存主题\",\n unpinTopic: \"取消置顶\",\n uploadFiles: \"上传文件\",\n uploadFolder: \"上传文件夹\"\n },\n composer: {\n issueContentPlaceholder: \"补充这个任务的背景、目标或上下文\",\n issueTitlePlaceholder: \"任务标题\",\n subtaskContentPlaceholder: \"补充任务目标、执行方式和验收标准\",\n subtaskTitlePlaceholder: \"请输入任务标题\",\n taskContentPlaceholder: \"描述这个任务的执行要求和预期结果。\",\n taskTitlePlaceholder: \"任务标题\"\n },\n confirmations: {\n deleteIssue: \"确定删除这个任务吗?\",\n deleteTask: \"确定删除这个任务吗?\",\n deleteTopic: \"确定删除这个主题吗?\"\n },\n dockLabel: \"任务\",\n emptyState: \"新建任务,补充需求描述和相关文件,即可让 Agent 执行\",\n labels: {\n allStatus: \"全部\",\n content: \"内容\",\n contextReferences: \"上下文引用\",\n createTopicDialogTitle: \"新建主题\",\n createdAt: \"创建时间\",\n creator: \"创建者\",\n customExecutionDirectory: \"自定义目录\",\n description: \"描述\",\n executionOutputs: \"执行产物\",\n issueDetails: \"任务详情\",\n issueList: \"任务\",\n latestRunStatus: \"最新执行状态\",\n outputs: \"输出产物\",\n priority: \"优先级\",\n provider: \"Provider\",\n recentRuns: \"最近运行\",\n requirementDescription: \"需求描述\",\n resizeIssueList: \"调整任务列表宽度\",\n searchIssues: \"搜索任务\",\n scrollStatusTabsLeft: \"向左滚动状态标签\",\n scrollStatusTabsRight: \"向右滚动状态标签\",\n status: \"状态\",\n subtasks: \"任务\",\n taskAcceptance: \"任务待验收\",\n topic: \"主题\",\n topicDefault: \"默认\",\n topicSummary: \"主题概要\",\n topicTitle: \"主题标题\",\n editTopicDialogTitle: \"编辑主题\",\n title: \"标题\",\n updatedAt: \"更新时间\",\n taskCount: \"{{count}}子任务\",\n taskDetails: \"任务详情\",\n taskList: \"任务\",\n temporaryExecutionDirectory: \"临时目录\"\n },\n messages: {\n clipboardUnavailable: \"当前环境无法访问剪贴板。\",\n agentSessionOpenFailed: \"打开 Agent 会话失败。\",\n breakdownOpenFailed: \"打开 Agent 任务拆解失败。\",\n breakdownUnavailable: \"当前环境暂不支持 Agent 任务拆解。\",\n copyShareLinkFailed: \"复制分享链接失败。\",\n copiedShareLink: \"已复制分享链接。\",\n issueDeleteFailed: \"删除任务失败。\",\n issueRefreshFailed: \"刷新任务列表失败。\",\n issueSaveFailed: \"保存任务失败。\",\n issueDeleted: \"任务已删除。\",\n issueSaved: \"任务已保存。\",\n issueContentEmpty: \"这个任务还没有描述\",\n noExecutionOutputs: \"暂无执行产物\",\n noExecutionStatus: \"暂无执行记录\",\n noIssueReferences: \"这个任务还没有引用\",\n noIssuesForFilterBody: \"试试切换筛选条件,或者新建一个任务\",\n noIssuesForFilterTitle: \"当前筛选条件下暂无任务\",\n noIssues: \"还没有任务\",\n noAgentProviders: \"暂无可用的 Agent Provider。\",\n noOutputs: \"还没有输出产物\",\n noRecentRuns: \"还没有运行记录\",\n taskContentEmpty: \"这个任务还没有描述\",\n taskAcceptanceHint: \"验证后完成,驳回后回到待开始。\",\n noTaskReferences: \"这个任务还没有引用\",\n noTasksForIssueBody:\n \"为这个任务创建第一个子任务,然后交给 Agent 或你自己执行\",\n noSubtasksForIssue: \"你可以围绕当前任务继续添加子任务\",\n noTasks: \"还没有任务\",\n refreshingIssues: \"正在刷新任务列表...\",\n titleRequired: \"请先填写标题后再保存。\",\n runExitCode: \"Codex 以退出码 {{code}} 结束。\",\n runCompleted: \"运行已完成。\",\n runFailed: \"运行失败\",\n runStarted: \"运行已开始。\",\n runStatusMissing: \"终端在写入运行状态前就退出了。\",\n runTimedOut: \"等待 Codex 输出超时。\",\n referenceRemoveFailed: \"移除引用失败。\",\n taskDeleteFailed: \"删除任务失败。\",\n taskSaveFailed: \"保存任务失败。\",\n taskDeleted: \"任务已删除。\",\n taskSaved: \"任务已保存。\",\n topicCreateFailed: \"新建主题失败。\",\n topicDeleteDefaultForbidden: \"默认主题不能删除。\",\n topicDeleteFailed: \"删除主题失败。\",\n topicDeleteNotEmpty: \"这个主题下还有任务,不能删除。\",\n topicDeleteNotFound: \"这个主题已不存在。\",\n topicListEmpty: \"没有可用的主题。\",\n topicUpdateFailed: \"更新主题失败。\",\n uploadTypeConflict: \"上传目标中存在类型冲突的同名条目。\",\n workspacePathUnavailable: \"当前工作区路径不可用。\"\n },\n priority: {\n high: \"高\",\n low: \"低\",\n medium: \"中\"\n },\n referencePicker: {\n browse: \"浏览\",\n confirm: \"使用已选引用\",\n emptyDirectory: \"当前目录为空\",\n emptyPreview: \"选择一个文件查看详情\",\n emptySearch: \"没有匹配的文件或文件夹\",\n loadMore: \"加载更多\",\n loading: \"正在加载\",\n previewBinary: \"这个文件更像二进制内容\",\n previewDecodeFailed: \"暂时无法按 UTF-8 文本解码这个文件\",\n previewError: \"加载预览失败\",\n previewFileTooLarge: \"这个文件超过了 {{maxSize}}\",\n previewFolder: \"暂不支持预览文件夹\",\n previewLoading: \"正在加载预览\",\n previewModified: \"产出时间\",\n previewSize: \"文件大小\",\n previewSource: \"产出来源\",\n previewTextTooLarge: \"这个文本文件超过了 {{maxSize}}\",\n previewTooLarge: \"文件过大,无法预览\",\n previewUnavailable: \"当前工作区无法预览文件\",\n previewUnsupported: \"暂不支持预览这种文件类型\",\n searchPlaceholder: \"搜索文件和文件夹\",\n selectGroupHint: \"从左侧选择一个目录\",\n selectedCount: \"已选择 {{count}} 项\",\n sourceColumn: \"分类\",\n title: \"选择工作区引用\"\n },\n richTextAt: {\n all: \"全部\",\n apps: \"应用\",\n files: \"文件\",\n issues: \"任务\",\n loading: \"正在加载...\",\n noMatches: \"没有匹配项\",\n sessions: \"会话\",\n showMore: \"再显示 {{count}} 项\",\n switchCategory: \"切换分类\",\n switchSelection: \"切换选中\"\n },\n run: {\n failedSummaryFallback: \"运行失败\",\n outputDirectory: \"输出目录\",\n requester: \"发起人\",\n status: \"运行状态\",\n summary: \"摘要\"\n },\n runPrompts: {\n breakdownIntro: \"请基于这个任务引用做任务拆解。\",\n executeIntro: \"请处理这个任务引用。\"\n },\n status: {\n canceled: \"已取消\",\n completed: \"已完成\",\n failed: \"失败\",\n inProgress: \"执行中\",\n notStarted: \"待开始\",\n pendingAcceptance: \"待验收\",\n running: \"执行中\",\n unknown: \"未知\"\n },\n title: \"任务\"\n} as const satisfies I18nDictionary;\n\nexport type IssueManagerI18nKey = string;\n\nexport type IssueManagerI18nRuntime = I18nRuntime<IssueManagerI18nKey>;\n\nconst issueManagerDefaults: Record<IssueManagerI18nLocale, I18nDictionary> = {\n en: issueManagerEn,\n \"zh-CN\": issueManagerZhCN\n};\n\nexport const issueManagerI18nResources = {\n en: {\n [issueManagerI18nNamespace]: issueManagerDefaults.en\n },\n \"zh-CN\": {\n [issueManagerI18nNamespace]: issueManagerDefaults[\"zh-CN\"]\n }\n} as const satisfies Record<IssueManagerI18nLocale, I18nDictionary>;\n\nconst defaultIssueManagerI18n = createI18nRuntime({\n dictionaries: [issueManagerI18nResources.en]\n});\n\nexport function createIssueManagerI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): IssueManagerI18nRuntime {\n return createScopedI18nRuntime<IssueManagerI18nKey>(\n runtime ?? defaultIssueManagerI18n,\n issueManagerI18nNamespace\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/i18n/issueManagerI18n.ts"],"sourcesContent":["import {\n createI18nRuntime,\n createScopedI18nRuntime,\n createScopedLocaleObjectsI18nModuleManifest,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype IssueManagerI18nLocale = \"en\" | \"zh-CN\";\n\nexport const issueManagerI18nNamespace = \"issueManager\";\nexport const issueManagerI18nModule =\n createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"issueManagerEn\",\n \"zh-CN\": \"issueManagerZhCN\"\n },\n name: \"workspace-issue-manager\",\n namespace: issueManagerI18nNamespace,\n sourceRoot: \"packages/workspace/issue-manager/src\"\n });\n\nconst issueManagerEn = {\n actions: {\n add: \"Add\",\n addReferences: \"Add references\",\n addSubtask: \"Add subtask\",\n acceptTask: \"Accept\",\n askAgentToBreakdown: \"Agent breaks down tasks\",\n askAgentToRun: \"Send to Agent\",\n cancel: \"Cancel\",\n clearSearch: \"Clear search\",\n closeTaskDetails: \"Back to task details\",\n collapseIssueList: \"Collapse task list\",\n copyShareLink: \"Copy share link\",\n createIssue: \"New task\",\n createTask: \"Create task\",\n createTopic: \"New topic\",\n delete: \"Delete\",\n deleteIssue: \"Delete task\",\n deleteTask: \"Delete task\",\n edit: \"Edit\",\n editIssue: \"Edit task\",\n editTask: \"Edit task\",\n editTopic: \"Edit topic\",\n expandIssueList: \"Expand task list\",\n inviteCollaborator: \"Invite collaborator\",\n insertReferences: \"Insert references\",\n moreActions: \"More actions\",\n openAgentSession: \"Open agent session\",\n openReference: \"Open\",\n refresh: \"Refresh\",\n referenceWorkspaceFiles: \"Reference files\",\n rejectTask: \"Reject\",\n removeReference: \"Remove\",\n runTask: \"Run task\",\n saveIssue: \"Save task\",\n saveSubtask: \"Save subtask\",\n saveTask: \"Save task\",\n pinTopic: \"Pin\",\n saveTopic: \"Save topic\",\n unpinTopic: \"Unpin\",\n uploadFiles: \"Upload files\",\n uploadFolder: \"Upload folder\"\n },\n composer: {\n issueContentPlaceholder: \"Describe the task, goals, or context.\",\n issueTitlePlaceholder: \"Task title\",\n subtaskContentPlaceholder:\n \"Add the subtask goal, execution approach, and acceptance criteria.\",\n subtaskTitlePlaceholder: \"Enter a subtask title\",\n taskContentPlaceholder: \"Describe the executable task and expected result.\",\n taskTitlePlaceholder: \"Task title\"\n },\n confirmations: {\n deleteIssue: \"Delete this task?\",\n deleteTask: \"Delete this task?\",\n deleteTopic: \"Delete this topic?\"\n },\n dockLabel: \"Tasks\",\n emptyState: \"Create a task, add the goal and references, then let Agent run\",\n labels: {\n allStatus: \"All\",\n content: \"Content\",\n contextReferences: \"Context references\",\n createTopicDialogTitle: \"New topic\",\n createdAt: \"Created\",\n creator: \"Creator\",\n customExecutionDirectory: \"Custom directory\",\n description: \"Description\",\n executionOutputs: \"Execution outputs\",\n issueDetails: \"Task details\",\n issueList: \"Tasks\",\n latestRunStatus: \"Latest execution status\",\n outputs: \"Outputs\",\n priority: \"Priority\",\n provider: \"Provider\",\n recentRuns: \"Recent runs\",\n requirementDescription: \"Requirements\",\n resizeIssueList: \"Resize task list\",\n searchIssues: \"Search tasks\",\n scrollStatusTabsLeft: \"Scroll status tabs left\",\n scrollStatusTabsRight: \"Scroll status tabs right\",\n status: \"Status\",\n subtasks: \"Subtasks\",\n taskAcceptance: \"Task pending acceptance\",\n topic: \"Topic\",\n topicDefault: \"Default\",\n topicSummary: \"Topic summary\",\n topicTitle: \"Topic title\",\n editTopicDialogTitle: \"Edit topic\",\n title: \"Title\",\n updatedAt: \"Updated\",\n taskCount: \"{{count}} subtasks\",\n taskDetails: \"Task details\",\n taskList: \"Tasks\",\n temporaryExecutionDirectory: \"Temporary directory\"\n },\n messages: {\n clipboardUnavailable: \"Clipboard is unavailable.\",\n agentSessionOpenFailed: \"Couldn't open the agent session.\",\n breakdownOpenFailed: \"Couldn't open the agent task breakdown.\",\n breakdownUnavailable: \"Agent task breakdown is unavailable.\",\n copyShareLinkFailed: \"Couldn't copy the share link.\",\n copiedShareLink: \"Share link copied.\",\n issueDeleteFailed: \"Couldn't delete the task.\",\n issueRefreshFailed: \"Couldn't refresh tasks.\",\n issueSaveFailed: \"Couldn't save the task.\",\n issueDeleted: \"Task deleted.\",\n issueSaved: \"Task saved.\",\n issueContentEmpty: \"No task description yet\",\n noExecutionOutputs: \"No execution outputs yet\",\n noExecutionStatus: \"No execution records yet\",\n noIssueReferences: \"No task references yet\",\n noIssuesForFilterBody:\n \"Try another filter, or create a new task to get things started\",\n noIssuesForFilterTitle: \"No tasks match the current filter\",\n noIssues: \"No tasks yet\",\n noAgentProviders: \"No available agent providers.\",\n noOutputs: \"No outputs yet\",\n noRecentRuns: \"No runs yet\",\n taskContentEmpty: \"No task description yet\",\n taskAcceptanceHint: \"Accept to complete; reject to return to Todo.\",\n noTaskReferences: \"No task references yet\",\n noTasksForIssueBody:\n \"Create the first subtask for this task and let an agent or yourself execute it\",\n noSubtasksForIssue:\n \"You can continue breaking down this task by adding subtasks\",\n noTasks: \"No tasks yet\",\n refreshingIssues: \"Refreshing tasks...\",\n titleRequired: \"Enter a title before saving.\",\n runExitCode: \"Codex exited with code {{code}}.\",\n runCompleted: \"Run completed.\",\n runFailed: \"Run failed\",\n runStarted: \"Run started.\",\n runStatusMissing:\n \"Terminal exited before the task run produced a status marker.\",\n runTimedOut: \"Task run timed out while waiting for Codex output.\",\n referenceRemoveFailed: \"Couldn't remove the reference.\",\n taskDeleteFailed: \"Couldn't delete the task.\",\n taskSaveFailed: \"Couldn't save the task.\",\n taskDeleted: \"Task deleted.\",\n taskSaved: \"Task saved.\",\n topicCreateFailed: \"Couldn't create the topic.\",\n topicDeleteDefaultForbidden: \"The default topic can't be deleted.\",\n topicDeleteFailed: \"Couldn't delete the topic.\",\n topicDeleteNotEmpty:\n \"Move or delete the tasks in this topic before deleting it.\",\n topicDeleteNotFound: \"This topic no longer exists.\",\n topicListEmpty: \"No task topics are available.\",\n topicUpdateFailed: \"Couldn't update the topic.\",\n uploadTypeConflict: \"Upload target contains conflicting entry types.\",\n workspacePathUnavailable: \"Workspace path is unavailable.\"\n },\n priority: {\n high: \"High\",\n low: \"Low\",\n medium: \"Medium\"\n },\n referencePicker: {\n browse: \"Browse\",\n clearFilter: \"Clear filter\",\n confirm: \"Use selected references\",\n emptyDirectory: \"This folder is empty.\",\n emptyPreview: \"Select a file to view details.\",\n emptySearch: \"No matching files or folders.\",\n fileTypeAll: \"All types\",\n fileTypeDocument: \"Documents\",\n fileTypeImage: \"Images\",\n fileTypeOther: \"Other\",\n fileTypeSeparator: \", \",\n fileTypeVideo: \"Videos\",\n fileTypeWebpage: \"Web pages\",\n loadMore: \"Load more\",\n loadMoreGroups: \"Load more\",\n loading: \"Loading...\",\n previewBinary: \"This file looks like binary content.\",\n previewDecodeFailed: \"This file couldn't be decoded as UTF-8 text.\",\n previewError: \"Couldn't load a preview.\",\n previewFileTooLarge: \"This file is larger than {{maxSize}}.\",\n previewFolder: \"Folder preview is not available.\",\n previewHierarchy: \"Location\",\n previewLoading: \"Loading preview...\",\n previewModified: \"Modified\",\n previewSize: \"File size\",\n previewSource: \"Source\",\n previewTextTooLarge: \"This text file is larger than {{maxSize}}.\",\n previewTooLarge: \"This file is too large to preview.\",\n previewUnavailable: \"Preview is not available in this workspace.\",\n previewUnsupported: \"This file type can't be previewed here.\",\n searchPlaceholder: \"Search files and folders\",\n selectGroupHint: \"Select a folder from the sidebar.\",\n selectedCount: \"{{count}} selected\",\n sourceColumn: \"Category\",\n title: \"Pick workspace references\",\n workspaceRootGroup: \"Workspace\"\n },\n richTextAt: {\n all: \"All\",\n apps: \"Apps\",\n files: \"Files\",\n issues: \"Tasks\",\n loading: \"Loading...\",\n noMatches: \"No matches\",\n sessions: \"Sessions\",\n showMore: \"Show {{count}} more\",\n switchCategory: \"Switch category\",\n switchSelection: \"Switch selection\"\n },\n run: {\n failedSummaryFallback: \"Run failed\",\n outputDirectory: \"Output directory\",\n requester: \"Requester\",\n status: \"Run status\",\n summary: \"Summary\"\n },\n runPrompts: {\n breakdownIntro: \"Break this task reference down into executable tasks.\",\n executeIntro: \"Handle this task reference.\"\n },\n status: {\n canceled: \"Canceled\",\n completed: \"Done\",\n failed: \"Failed\",\n inProgress: \"Running\",\n notStarted: \"Todo\",\n pendingAcceptance: \"In review\",\n running: \"Running\",\n unknown: \"Unknown\"\n },\n title: \"Tasks\"\n} as const satisfies I18nDictionary;\n\nconst issueManagerZhCN = {\n actions: {\n add: \"添加\",\n addReferences: \"添加引用\",\n addSubtask: \"添加任务\",\n acceptTask: \"验证通过\",\n askAgentToBreakdown: \"Agent 拆解任务\",\n askAgentToRun: \"发送给 Agent\",\n cancel: \"取消\",\n clearSearch: \"清空搜索\",\n closeTaskDetails: \"返回任务详情\",\n collapseIssueList: \"收起任务列表\",\n copyShareLink: \"复制分享链接\",\n createIssue: \"新建任务\",\n createTask: \"新建任务\",\n createTopic: \"新建主题\",\n delete: \"删除\",\n deleteIssue: \"删除任务\",\n deleteTask: \"删除任务\",\n edit: \"编辑\",\n editIssue: \"编辑任务\",\n editTask: \"编辑任务\",\n editTopic: \"编辑主题\",\n expandIssueList: \"展开任务列表\",\n inviteCollaborator: \"邀请协作者\",\n insertReferences: \"插入引用\",\n moreActions: \"更多操作\",\n openAgentSession: \"打开 Agent 会话\",\n openReference: \"打开\",\n refresh: \"刷新\",\n referenceWorkspaceFiles: \"引用文件\",\n rejectTask: \"驳回\",\n removeReference: \"移除\",\n runTask: \"运行任务\",\n saveIssue: \"保存任务\",\n saveSubtask: \"保存任务\",\n saveTask: \"保存任务\",\n pinTopic: \"置顶\",\n saveTopic: \"保存主题\",\n unpinTopic: \"取消置顶\",\n uploadFiles: \"上传文件\",\n uploadFolder: \"上传文件夹\"\n },\n composer: {\n issueContentPlaceholder: \"补充这个任务的背景、目标或上下文\",\n issueTitlePlaceholder: \"任务标题\",\n subtaskContentPlaceholder: \"补充任务目标、执行方式和验收标准\",\n subtaskTitlePlaceholder: \"请输入任务标题\",\n taskContentPlaceholder: \"描述这个任务的执行要求和预期结果。\",\n taskTitlePlaceholder: \"任务标题\"\n },\n confirmations: {\n deleteIssue: \"确定删除这个任务吗?\",\n deleteTask: \"确定删除这个任务吗?\",\n deleteTopic: \"确定删除这个主题吗?\"\n },\n dockLabel: \"任务\",\n emptyState: \"新建任务,补充需求描述和相关文件,即可让 Agent 执行\",\n labels: {\n allStatus: \"全部\",\n content: \"内容\",\n contextReferences: \"上下文引用\",\n createTopicDialogTitle: \"新建主题\",\n createdAt: \"创建时间\",\n creator: \"创建者\",\n customExecutionDirectory: \"自定义目录\",\n description: \"描述\",\n executionOutputs: \"执行产物\",\n issueDetails: \"任务详情\",\n issueList: \"任务\",\n latestRunStatus: \"最新执行状态\",\n outputs: \"输出产物\",\n priority: \"优先级\",\n provider: \"Provider\",\n recentRuns: \"最近运行\",\n requirementDescription: \"需求描述\",\n resizeIssueList: \"调整任务列表宽度\",\n searchIssues: \"搜索任务\",\n scrollStatusTabsLeft: \"向左滚动状态标签\",\n scrollStatusTabsRight: \"向右滚动状态标签\",\n status: \"状态\",\n subtasks: \"任务\",\n taskAcceptance: \"任务待验收\",\n topic: \"主题\",\n topicDefault: \"默认\",\n topicSummary: \"主题概要\",\n topicTitle: \"主题标题\",\n editTopicDialogTitle: \"编辑主题\",\n title: \"标题\",\n updatedAt: \"更新时间\",\n taskCount: \"{{count}}子任务\",\n taskDetails: \"任务详情\",\n taskList: \"任务\",\n temporaryExecutionDirectory: \"临时目录\"\n },\n messages: {\n clipboardUnavailable: \"当前环境无法访问剪贴板。\",\n agentSessionOpenFailed: \"打开 Agent 会话失败。\",\n breakdownOpenFailed: \"打开 Agent 任务拆解失败。\",\n breakdownUnavailable: \"当前环境暂不支持 Agent 任务拆解。\",\n copyShareLinkFailed: \"复制分享链接失败。\",\n copiedShareLink: \"已复制分享链接。\",\n issueDeleteFailed: \"删除任务失败。\",\n issueRefreshFailed: \"刷新任务列表失败。\",\n issueSaveFailed: \"保存任务失败。\",\n issueDeleted: \"任务已删除。\",\n issueSaved: \"任务已保存。\",\n issueContentEmpty: \"这个任务还没有描述\",\n noExecutionOutputs: \"暂无执行产物\",\n noExecutionStatus: \"暂无执行记录\",\n noIssueReferences: \"这个任务还没有引用\",\n noIssuesForFilterBody: \"试试切换筛选条件,或者新建一个任务\",\n noIssuesForFilterTitle: \"当前筛选条件下暂无任务\",\n noIssues: \"还没有任务\",\n noAgentProviders: \"暂无可用的 Agent Provider。\",\n noOutputs: \"还没有输出产物\",\n noRecentRuns: \"还没有运行记录\",\n taskContentEmpty: \"这个任务还没有描述\",\n taskAcceptanceHint: \"验证后完成,驳回后回到待开始。\",\n noTaskReferences: \"这个任务还没有引用\",\n noTasksForIssueBody:\n \"为这个任务创建第一个子任务,然后交给 Agent 或你自己执行\",\n noSubtasksForIssue: \"你可以围绕当前任务继续添加子任务\",\n noTasks: \"还没有任务\",\n refreshingIssues: \"正在刷新任务列表...\",\n titleRequired: \"请先填写标题后再保存。\",\n runExitCode: \"Codex 以退出码 {{code}} 结束。\",\n runCompleted: \"运行已完成。\",\n runFailed: \"运行失败\",\n runStarted: \"运行已开始。\",\n runStatusMissing: \"终端在写入运行状态前就退出了。\",\n runTimedOut: \"等待 Codex 输出超时。\",\n referenceRemoveFailed: \"移除引用失败。\",\n taskDeleteFailed: \"删除任务失败。\",\n taskSaveFailed: \"保存任务失败。\",\n taskDeleted: \"任务已删除。\",\n taskSaved: \"任务已保存。\",\n topicCreateFailed: \"新建主题失败。\",\n topicDeleteDefaultForbidden: \"默认主题不能删除。\",\n topicDeleteFailed: \"删除主题失败。\",\n topicDeleteNotEmpty: \"这个主题下还有任务,不能删除。\",\n topicDeleteNotFound: \"这个主题已不存在。\",\n topicListEmpty: \"没有可用的主题。\",\n topicUpdateFailed: \"更新主题失败。\",\n uploadTypeConflict: \"上传目标中存在类型冲突的同名条目。\",\n workspacePathUnavailable: \"当前工作区路径不可用。\"\n },\n priority: {\n high: \"高\",\n low: \"低\",\n medium: \"中\"\n },\n referencePicker: {\n browse: \"浏览\",\n clearFilter: \"清除筛选\",\n confirm: \"使用已选引用\",\n emptyDirectory: \"当前目录为空\",\n emptyPreview: \"选择一个文件查看详情\",\n emptySearch: \"没有匹配的文件或文件夹\",\n fileTypeAll: \"全部类型\",\n fileTypeDocument: \"文档\",\n fileTypeImage: \"图片\",\n fileTypeOther: \"其他\",\n fileTypeSeparator: \"、\",\n fileTypeVideo: \"视频\",\n fileTypeWebpage: \"网页\",\n loadMore: \"加载更多\",\n loadMoreGroups: \"拉取更多\",\n loading: \"正在加载\",\n previewBinary: \"这个文件更像二进制内容\",\n previewDecodeFailed: \"暂时无法按 UTF-8 文本解码这个文件\",\n previewError: \"加载预览失败\",\n previewFileTooLarge: \"这个文件超过了 {{maxSize}}\",\n previewFolder: \"暂不支持预览文件夹\",\n previewHierarchy: \"所属层级\",\n previewLoading: \"正在加载预览\",\n previewModified: \"产出时间\",\n previewSize: \"文件大小\",\n previewSource: \"产出来源\",\n previewTextTooLarge: \"这个文本文件超过了 {{maxSize}}\",\n previewTooLarge: \"文件过大,无法预览\",\n previewUnavailable: \"当前工作区无法预览文件\",\n previewUnsupported: \"暂不支持预览这种文件类型\",\n searchPlaceholder: \"搜索文件和文件夹\",\n selectGroupHint: \"从左侧选择一个目录\",\n selectedCount: \"已选择 {{count}} 项\",\n sourceColumn: \"分类\",\n title: \"选择工作区引用\",\n workspaceRootGroup: \"工作区\"\n },\n richTextAt: {\n all: \"全部\",\n apps: \"应用\",\n files: \"文件\",\n issues: \"任务\",\n loading: \"正在加载...\",\n noMatches: \"没有匹配项\",\n sessions: \"会话\",\n showMore: \"再显示 {{count}} 项\",\n switchCategory: \"切换分类\",\n switchSelection: \"切换选中\"\n },\n run: {\n failedSummaryFallback: \"运行失败\",\n outputDirectory: \"输出目录\",\n requester: \"发起人\",\n status: \"运行状态\",\n summary: \"摘要\"\n },\n runPrompts: {\n breakdownIntro: \"请基于这个任务引用做任务拆解。\",\n executeIntro: \"请处理这个任务引用。\"\n },\n status: {\n canceled: \"已取消\",\n completed: \"已完成\",\n failed: \"失败\",\n inProgress: \"执行中\",\n notStarted: \"待开始\",\n pendingAcceptance: \"待验收\",\n running: \"执行中\",\n unknown: \"未知\"\n },\n title: \"任务\"\n} as const satisfies I18nDictionary;\n\nexport type IssueManagerI18nKey = string;\n\nexport type IssueManagerI18nRuntime = I18nRuntime<IssueManagerI18nKey>;\n\nconst issueManagerDefaults: Record<IssueManagerI18nLocale, I18nDictionary> = {\n en: issueManagerEn,\n \"zh-CN\": issueManagerZhCN\n};\n\nexport const issueManagerI18nResources = {\n en: {\n [issueManagerI18nNamespace]: issueManagerDefaults.en\n },\n \"zh-CN\": {\n [issueManagerI18nNamespace]: issueManagerDefaults[\"zh-CN\"]\n }\n} as const satisfies Record<IssueManagerI18nLocale, I18nDictionary>;\n\nconst defaultIssueManagerI18n = createI18nRuntime({\n dictionaries: [issueManagerI18nResources.en]\n});\n\nexport function createIssueManagerI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): IssueManagerI18nRuntime {\n return createScopedI18nRuntime<IssueManagerI18nKey>(\n runtime ?? defaultIssueManagerI18n,\n issueManagerI18nNamespace\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  normalizeIssueManagerContent,
3
3
  normalizeIssueManagerNodeState
4
- } from "./chunk-7O62INYA.js";
4
+ } from "./chunk-BPNHQNTP.js";
5
5
 
6
6
  // src/services/internal/model.ts
7
7
  import { formatTuttiShortDateTime } from "@tutti-os/ui-system/date-format";
@@ -990,4 +990,4 @@ export {
990
990
  persistIssueManagerTaskDraftContent,
991
991
  createIssueManagerControllerService
992
992
  };
993
- //# sourceMappingURL=chunk-GLGNWTCD.js.map
993
+ //# sourceMappingURL=chunk-GD6VYTLW.js.map
@@ -24,9 +24,10 @@ import {
24
24
  resolveIssueManagerTopicDeleteErrorMessage,
25
25
  toContextRefInput,
26
26
  toIssueManagerWorkspaceFileLinkInput
27
- } from "./chunk-GLGNWTCD.js";
27
+ } from "./chunk-GD6VYTLW.js";
28
28
  import {
29
29
  appendIssueManagerWorkspaceFileLinksToContent,
30
+ appendIssueManagerWorkspaceReferenceMentionsToContent,
30
31
  clampIssueManagerSidebarWidth,
31
32
  extractIssueManagerPlainTextFromContent,
32
33
  extractIssueManagerWorkspaceFileLinksFromContent,
@@ -35,7 +36,7 @@ import {
35
36
  issueManagerSidebarMinWidth,
36
37
  normalizeIssueManagerContent,
37
38
  shouldAutoCollapseIssueManagerSidebar
38
- } from "./chunk-7O62INYA.js";
39
+ } from "./chunk-BPNHQNTP.js";
39
40
 
40
41
  // src/ui/react/internal/shell/IssueManagerNodeState.ts
41
42
  import { useEffect, useEffectEvent, useState } from "react";
@@ -493,6 +494,39 @@ function createIssueManagerInsertReferencesOutcome(input) {
493
494
  })
494
495
  };
495
496
  }
497
+ function createIssueManagerInsertReferenceBundlesOutcome(input) {
498
+ const applyContent = (content) => {
499
+ const withFiles = resolveIssueManagerReferenceInsertionContent({
500
+ content,
501
+ refs: input.files
502
+ });
503
+ return appendIssueManagerWorkspaceReferenceMentionsToContent(
504
+ withFiles,
505
+ input.bundles.map((bundle) => ({
506
+ source: bundle.source,
507
+ id: bundle.id,
508
+ groupId: bundle.groupId,
509
+ displayName: bundle.displayName,
510
+ iconUrl: bundle.iconUrl,
511
+ fileCount: bundle.fileCount,
512
+ workspaceId: input.workspaceId
513
+ }))
514
+ );
515
+ };
516
+ return input.target.parentKind === "issue" ? {
517
+ issueDraft: (current) => ({
518
+ ...current,
519
+ content: applyContent(current.content)
520
+ }),
521
+ referenceTarget: null
522
+ } : {
523
+ referenceTarget: null,
524
+ taskDraft: (current) => ({
525
+ ...current,
526
+ content: applyContent(current.content)
527
+ })
528
+ };
529
+ }
496
530
 
497
531
  // src/services/internal/controllerPlans.ts
498
532
  function createIssueManagerRunTaskPlan(input) {
@@ -1398,6 +1432,30 @@ function createIssueManagerControllerActions(input) {
1398
1432
  },
1399
1433
  async submitReferenceSelection(refs) {
1400
1434
  await submitReferences(refs);
1435
+ },
1436
+ async submitReferenceBundleSelection(input2) {
1437
+ const target = referenceTarget;
1438
+ if (!target) {
1439
+ applyOutcome({ referenceTarget: null });
1440
+ return;
1441
+ }
1442
+ if (target.mode === "insert" && input2.bundles.length > 0) {
1443
+ applyOutcome(
1444
+ createIssueManagerInsertReferenceBundlesOutcome({
1445
+ bundles: input2.bundles,
1446
+ files: input2.files,
1447
+ target,
1448
+ workspaceId
1449
+ })
1450
+ );
1451
+ trackIssueManagerContextRefsAdded({
1452
+ feature,
1453
+ refs: input2.files,
1454
+ targetType: target.parentKind
1455
+ });
1456
+ return;
1457
+ }
1458
+ await submitReferences(input2.files, target);
1401
1459
  }
1402
1460
  };
1403
1461
  }
@@ -2063,6 +2121,19 @@ function useIssueManagerNodeView({
2063
2121
  onConfirm: (refs) => {
2064
2122
  void controller.submitReferenceSelection(refs);
2065
2123
  },
2124
+ onConfirmBundles: (result) => {
2125
+ void controller.submitReferenceBundleSelection({
2126
+ bundles: result.bundles.filter((bundle) => bundle.handle !== null).map((bundle) => ({
2127
+ source: bundle.handle.source,
2128
+ id: bundle.handle.id,
2129
+ groupId: bundle.handle.groupId ?? null,
2130
+ displayName: bundle.displayName,
2131
+ iconUrl: bundle.iconUrl ?? null,
2132
+ fileCount: bundle.fileCount
2133
+ })),
2134
+ files: result.files
2135
+ });
2136
+ },
2066
2137
  open: controller.referenceTarget !== null
2067
2138
  },
2068
2139
  selectedIssue,
@@ -2097,7 +2168,10 @@ import {
2097
2168
  useRef as useRef7
2098
2169
  } from "react";
2099
2170
  import { Button as Button13, PanelIcon, cn as cn11 } from "@tutti-os/ui-system";
2100
- import { WorkspaceFileReferencePicker } from "@tutti-os/workspace-file-reference/ui";
2171
+ import {
2172
+ ReferenceSourcePicker,
2173
+ WorkspaceFileReferencePicker
2174
+ } from "@tutti-os/workspace-file-reference/ui";
2101
2175
 
2102
2176
  // src/ui/internal/shell/IssueManagerShell.tsx
2103
2177
  import {
@@ -5603,7 +5677,18 @@ function IssueManagerNode({
5603
5677
  selectedTask
5604
5678
  }
5605
5679
  ),
5606
- /* @__PURE__ */ jsx19(
5680
+ feature.referenceSourceAggregator ? /* @__PURE__ */ jsx19(
5681
+ ReferenceSourcePicker,
5682
+ {
5683
+ aggregator: feature.referenceSourceAggregator,
5684
+ copy: controller.copy,
5685
+ open: referencePicker.open,
5686
+ workspaceId,
5687
+ onClose: referencePicker.onClose,
5688
+ onConfirm: referencePicker.onConfirm,
5689
+ onConfirmBundles: referencePicker.onConfirmBundles
5690
+ }
5691
+ ) : /* @__PURE__ */ jsx19(
5607
5692
  WorkspaceFileReferencePicker,
5608
5693
  {
5609
5694
  copy: controller.copy,
@@ -5767,4 +5852,4 @@ export {
5767
5852
  IssueManagerNode,
5768
5853
  IssueManagerNodeHeader
5769
5854
  };
5770
- //# sourceMappingURL=chunk-BSI36JGO.js.map
5855
+ //# sourceMappingURL=chunk-Y2HEL57G.js.map