@tutti-os/workspace-issue-manager 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-7O62INYA.js → chunk-7VN33U2R.js} +43 -2
- package/dist/chunk-7VN33U2R.js.map +1 -0
- package/dist/{chunk-BSI36JGO.js → chunk-GEH4QNB6.js} +90 -5
- package/dist/chunk-GEH4QNB6.js.map +1 -0
- package/dist/{chunk-TER7RTXO.js → chunk-OAASJITJ.js} +27 -5
- package/dist/chunk-OAASJITJ.js.map +1 -0
- package/dist/{chunk-GLGNWTCD.js → chunk-PBN62U6U.js} +2 -2
- package/dist/contracts/index.d.ts +17 -1
- package/dist/core/index.d.ts +22 -2
- package/dist/core/index.js +6 -2
- package/dist/{feature-D8dqrbk5.d.ts → feature-Cey7VrAd.d.ts} +3 -0
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +7 -3
- package/dist/{issueManagerControllerService.interface-LRf_GbaU.d.ts → issueManagerControllerService.interface-CQHZhmDT.d.ts} +1 -1
- package/dist/services/index.d.ts +4 -3
- package/dist/services/index.js +3 -3
- package/dist/ui/index.d.ts +3 -2
- package/dist/ui/index.js +4 -4
- package/dist/workbench/index.d.ts +3 -2
- package/dist/workbench/index.js +4 -4
- package/package.json +9 -9
- package/dist/chunk-7O62INYA.js.map +0 -1
- package/dist/chunk-BSI36JGO.js.map +0 -1
- package/dist/chunk-TER7RTXO.js.map +0 -1
- /package/dist/{chunk-GLGNWTCD.js.map → chunk-PBN62U6U.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createIssueManagerI18nRuntime
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OAASJITJ.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-
|
|
366
|
+
//# sourceMappingURL=chunk-7VN33U2R.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":[]}
|
|
@@ -24,9 +24,10 @@ import {
|
|
|
24
24
|
resolveIssueManagerTopicDeleteErrorMessage,
|
|
25
25
|
toContextRefInput,
|
|
26
26
|
toIssueManagerWorkspaceFileLinkInput
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-PBN62U6U.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-
|
|
39
|
+
} from "./chunk-7VN33U2R.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 {
|
|
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-
|
|
5855
|
+
//# sourceMappingURL=chunk-GEH4QNB6.js.map
|