@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.
- package/dist/{chunk-7O62INYA.js → chunk-BPNHQNTP.js} +43 -2
- package/dist/chunk-BPNHQNTP.js.map +1 -0
- package/dist/{chunk-TER7RTXO.js → chunk-FKBBTRO6.js} +25 -3
- package/dist/{chunk-TER7RTXO.js.map → chunk-FKBBTRO6.js.map} +1 -1
- package/dist/{chunk-GLGNWTCD.js → chunk-GD6VYTLW.js} +2 -2
- package/dist/{chunk-BSI36JGO.js → chunk-Y2HEL57G.js} +90 -5
- package/dist/chunk-Y2HEL57G.js.map +1 -0
- 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-GLGNWTCD.js.map → chunk-GD6VYTLW.js.map} +0 -0
|
@@ -262,6 +262,22 @@ interface IssueManagerIdentityAdapter {
|
|
|
262
262
|
getProfiles?(userIds: readonly string[]): Promise<Record<string, IssueManagerIdentityProfile>>;
|
|
263
263
|
}
|
|
264
264
|
type IssueManagerFileReference = WorkspaceFileReference;
|
|
265
|
+
/**
|
|
266
|
+
* 一个被折叠成单条引用的「项目/分组」(navigable 源文件夹,如某个应用项目)。
|
|
267
|
+
* 不展开成文件,而是作为一个 `mention://workspace-reference/...` chip 插入草稿,
|
|
268
|
+
* 运行时由 agent 自行解析句柄(source + id + groupId)。
|
|
269
|
+
*/
|
|
270
|
+
interface IssueManagerReferenceBundle {
|
|
271
|
+
source: "app" | "task";
|
|
272
|
+
/** 顶层容器 id:appId / topicId。 */
|
|
273
|
+
id: string;
|
|
274
|
+
/** 子级 id:app 子分组 / issueId。缺省表示整个容器。 */
|
|
275
|
+
groupId?: string | null;
|
|
276
|
+
displayName: string;
|
|
277
|
+
iconUrl?: string | null;
|
|
278
|
+
/** 该项目下文件数(仅展示用)。 */
|
|
279
|
+
fileCount: number;
|
|
280
|
+
}
|
|
265
281
|
type IssueManagerFileDirectoryListing = WorkspaceFileReferenceDirectoryListing;
|
|
266
282
|
type IssueManagerReferencePrefetchState = WorkspaceFileReferencePrefetchState;
|
|
267
283
|
type IssueManagerReferencePrefetchReason = WorkspaceFileReferencePrefetchReason;
|
|
@@ -491,4 +507,4 @@ interface IssueManagerNodeState {
|
|
|
491
507
|
taskListNextPageToken?: string | null;
|
|
492
508
|
}
|
|
493
509
|
|
|
494
|
-
export type { IssueManagerAddContextRefInput, IssueManagerAddContextRefsInput, IssueManagerAgentBreakdownLauncher, IssueManagerAgentBreakdownRequest, IssueManagerAgentBreakdownResult, IssueManagerAgentProviderOption, IssueManagerAgentProviderOptionsAdapter, IssueManagerAgentRunRequest, IssueManagerAgentRunResult, IssueManagerAgentRunner, IssueManagerAgentSessionOpenInput, IssueManagerAgentSessionOpener, IssueManagerAnalyticsAdapter, IssueManagerAnalyticsEvent, IssueManagerBackend, IssueManagerCompleteRunInput, IssueManagerCompleteRunOutputInput, IssueManagerContextRef, IssueManagerContextRefParentKind, IssueManagerCreateIssueInput, IssueManagerCreateRunInput, IssueManagerCreateTaskInput, IssueManagerCreateTopicInput, IssueManagerEventSource, IssueManagerExecutionDirectoryPicker, IssueManagerExecutionDirectoryProject, IssueManagerFileAdapter, IssueManagerFileDirectoryListing, IssueManagerFileReference, IssueManagerIdentityAdapter, IssueManagerIdentityProfile, IssueManagerIssueChangeKind, IssueManagerIssueContextRef, IssueManagerIssueDetail, IssueManagerIssueSummary, IssueManagerIssueUpdatedEvent, IssueManagerListIssuesInput, IssueManagerListIssuesResult, IssueManagerListTasksInput, IssueManagerListTasksResult, IssueManagerListTopicsResult, IssueManagerNodeState, IssueManagerOpenSource, IssueManagerOpenTrigger, IssueManagerPriority, IssueManagerReferencePrefetchReason, IssueManagerReferencePrefetchState, IssueManagerReferencePreview, IssueManagerReferencePreviewKind, IssueManagerReferenceTreeDirectory, IssueManagerReferenceTreeEntry, IssueManagerReferenceTreeSnapshot, IssueManagerRemoveContextRefInput, IssueManagerRun, IssueManagerRunCompletionStatus, IssueManagerRunEnvelope, IssueManagerRunOutput, IssueManagerScope, IssueManagerShareAdapter, IssueManagerStatus, IssueManagerStatusCounts, IssueManagerTaskContextRef, IssueManagerTaskDetail, IssueManagerTaskSummary, IssueManagerTopic, IssueManagerUpdateIssueInput, IssueManagerUpdateTaskInput, IssueManagerUpdateTopicInput };
|
|
510
|
+
export type { IssueManagerAddContextRefInput, IssueManagerAddContextRefsInput, IssueManagerAgentBreakdownLauncher, IssueManagerAgentBreakdownRequest, IssueManagerAgentBreakdownResult, IssueManagerAgentProviderOption, IssueManagerAgentProviderOptionsAdapter, IssueManagerAgentRunRequest, IssueManagerAgentRunResult, IssueManagerAgentRunner, IssueManagerAgentSessionOpenInput, IssueManagerAgentSessionOpener, IssueManagerAnalyticsAdapter, IssueManagerAnalyticsEvent, IssueManagerBackend, IssueManagerCompleteRunInput, IssueManagerCompleteRunOutputInput, IssueManagerContextRef, IssueManagerContextRefParentKind, IssueManagerCreateIssueInput, IssueManagerCreateRunInput, IssueManagerCreateTaskInput, IssueManagerCreateTopicInput, IssueManagerEventSource, IssueManagerExecutionDirectoryPicker, IssueManagerExecutionDirectoryProject, IssueManagerFileAdapter, IssueManagerFileDirectoryListing, IssueManagerFileReference, IssueManagerIdentityAdapter, IssueManagerIdentityProfile, IssueManagerIssueChangeKind, IssueManagerIssueContextRef, IssueManagerIssueDetail, IssueManagerIssueSummary, IssueManagerIssueUpdatedEvent, IssueManagerListIssuesInput, IssueManagerListIssuesResult, IssueManagerListTasksInput, IssueManagerListTasksResult, IssueManagerListTopicsResult, IssueManagerNodeState, IssueManagerOpenSource, IssueManagerOpenTrigger, IssueManagerPriority, IssueManagerReferenceBundle, IssueManagerReferencePrefetchReason, IssueManagerReferencePrefetchState, IssueManagerReferencePreview, IssueManagerReferencePreviewKind, IssueManagerReferenceTreeDirectory, IssueManagerReferenceTreeEntry, IssueManagerReferenceTreeSnapshot, IssueManagerRemoveContextRefInput, IssueManagerRun, IssueManagerRunCompletionStatus, IssueManagerRunEnvelope, IssueManagerRunOutput, IssueManagerScope, IssueManagerShareAdapter, IssueManagerStatus, IssueManagerStatusCounts, IssueManagerTaskContextRef, IssueManagerTaskDetail, IssueManagerTaskSummary, IssueManagerTopic, IssueManagerUpdateIssueInput, IssueManagerUpdateTaskInput, IssueManagerUpdateTopicInput };
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from '../feature-
|
|
1
|
+
export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from '../feature-Cey7VrAd.js';
|
|
2
2
|
import { RichTextLinkInput, RichTextLinkRef, appendRichTextLinksToContent, createRichTextMentionHref, createRichTextMentionMarkdown, createRichTextLinkMarkdown, extractRichTextMentionsFromContent, extractPlainTextFromContent, extractPlainTextWithoutFilesFromContent, extractRichTextLinksFromContent, normalizeRichTextContent, normalizeRichTextLinkHref, parseRichTextMentionHref, removeRichTextMentionFromContent, removeRichTextLinkFromContent } from '@tutti-os/ui-rich-text/core';
|
|
3
3
|
import { RichTextMentionAttrs } from '@tutti-os/ui-rich-text/types';
|
|
4
4
|
import { IssueManagerIssueSummary, IssueManagerTaskSummary, IssueManagerContextRef } from '../contracts/index.js';
|
|
5
5
|
import { IssueManagerI18nRuntime } from '../i18n/index.js';
|
|
6
6
|
import '@tutti-os/ui-i18n-runtime';
|
|
7
7
|
import '@tutti-os/workspace-user-project/i18n';
|
|
8
|
+
import '@tutti-os/workspace-file-reference/core';
|
|
8
9
|
import '@tutti-os/workspace-file-reference/contracts';
|
|
9
10
|
import '@tutti-os/workspace-user-project/contracts';
|
|
10
11
|
|
|
@@ -23,6 +24,25 @@ declare const extractIssueManagerPlainTextWithoutFilesFromContent: typeof extrac
|
|
|
23
24
|
declare const createIssueManagerMentionHref: typeof createRichTextMentionHref;
|
|
24
25
|
declare const createIssueManagerMentionMarkdown: typeof createRichTextMentionMarkdown;
|
|
25
26
|
declare const parseIssueManagerMentionHref: typeof parseRichTextMentionHref;
|
|
27
|
+
interface IssueManagerWorkspaceReferenceMentionInput {
|
|
28
|
+
source: "app" | "task";
|
|
29
|
+
id: string;
|
|
30
|
+
groupId?: string | null;
|
|
31
|
+
displayName: string;
|
|
32
|
+
iconUrl?: string | null;
|
|
33
|
+
fileCount?: number;
|
|
34
|
+
workspaceId: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 把一个「项目/分组」折叠成单条 `mention://workspace-reference/...` chip 的 markdown。
|
|
38
|
+
* 句柄(source + id + groupId)随 query 编码,运行时交给 agent 解析;icon/count 仅供展示。
|
|
39
|
+
* 与 agent 端 `buildAgentWorkspaceReferenceMentionHref` 的参数名保持一致。
|
|
40
|
+
*/
|
|
41
|
+
declare function createIssueManagerWorkspaceReferenceMentionMarkdown(input: IssueManagerWorkspaceReferenceMentionInput): string;
|
|
42
|
+
/**
|
|
43
|
+
* 把若干项目 chip 追加到内容尾部(以空格分隔,沿用文件链接的拼接形态)。
|
|
44
|
+
*/
|
|
45
|
+
declare function appendIssueManagerWorkspaceReferenceMentionsToContent(content: string, bundles: readonly IssueManagerWorkspaceReferenceMentionInput[]): string;
|
|
26
46
|
declare const extractIssueManagerMentionsFromContent: typeof extractRichTextMentionsFromContent;
|
|
27
47
|
declare const removeIssueManagerMentionFromContent: typeof removeRichTextMentionFromContent;
|
|
28
48
|
|
|
@@ -79,4 +99,4 @@ interface ParsedWorkspaceIssueMention {
|
|
|
79
99
|
declare function buildWorkspaceIssueMentionHref(input: BuildWorkspaceIssueMentionHrefInput): string;
|
|
80
100
|
declare function parseWorkspaceIssueMentionHref(href: string): ParsedWorkspaceIssueMention | null;
|
|
81
101
|
|
|
82
|
-
export { type BuildWorkspaceIssueMentionHrefInput, type IssueManagerMentionAttrs, type IssueManagerMentionRef, type IssueManagerWorkspaceFileLinkInput, type IssueManagerWorkspaceFileLinkRef, type ParsedWorkspaceIssueMention, type WorkspaceIssueMentionMode, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunPrompt, buildIssueManagerTaskBreakdownPrompt, buildWorkspaceIssueMentionHref, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerDefaultNodeFrameWidth, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, parseWorkspaceIssueMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerExpandedFrame, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar };
|
|
102
|
+
export { type BuildWorkspaceIssueMentionHrefInput, type IssueManagerMentionAttrs, type IssueManagerMentionRef, type IssueManagerWorkspaceFileLinkInput, type IssueManagerWorkspaceFileLinkRef, type IssueManagerWorkspaceReferenceMentionInput, type ParsedWorkspaceIssueMention, type WorkspaceIssueMentionMode, appendIssueManagerWorkspaceFileLinksToContent, appendIssueManagerWorkspaceReferenceMentionsToContent, buildIssueManagerRunPrompt, buildIssueManagerTaskBreakdownPrompt, buildWorkspaceIssueMentionHref, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, createIssueManagerWorkspaceReferenceMentionMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerDefaultNodeFrameWidth, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, parseWorkspaceIssueMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerExpandedFrame, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar };
|
package/dist/core/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
appendIssueManagerWorkspaceFileLinksToContent,
|
|
3
|
+
appendIssueManagerWorkspaceReferenceMentionsToContent,
|
|
3
4
|
buildIssueManagerRunPrompt,
|
|
4
5
|
buildIssueManagerTaskBreakdownPrompt,
|
|
5
6
|
buildWorkspaceIssueMentionHref,
|
|
@@ -8,6 +9,7 @@ import {
|
|
|
8
9
|
createIssueManagerMentionHref,
|
|
9
10
|
createIssueManagerMentionMarkdown,
|
|
10
11
|
createIssueManagerWorkspaceFileLinkMarkdown,
|
|
12
|
+
createIssueManagerWorkspaceReferenceMentionMarkdown,
|
|
11
13
|
defaultIssueManagerNodeState,
|
|
12
14
|
extractIssueManagerMentionsFromContent,
|
|
13
15
|
extractIssueManagerPlainTextFromContent,
|
|
@@ -29,10 +31,11 @@ import {
|
|
|
29
31
|
resolveIssueManagerExpandedFrame,
|
|
30
32
|
resolveIssueManagerWorkspaceRuntimePath,
|
|
31
33
|
shouldAutoCollapseIssueManagerSidebar
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-BPNHQNTP.js";
|
|
35
|
+
import "../chunk-FKBBTRO6.js";
|
|
34
36
|
export {
|
|
35
37
|
appendIssueManagerWorkspaceFileLinksToContent,
|
|
38
|
+
appendIssueManagerWorkspaceReferenceMentionsToContent,
|
|
36
39
|
buildIssueManagerRunPrompt,
|
|
37
40
|
buildIssueManagerTaskBreakdownPrompt,
|
|
38
41
|
buildWorkspaceIssueMentionHref,
|
|
@@ -41,6 +44,7 @@ export {
|
|
|
41
44
|
createIssueManagerMentionHref,
|
|
42
45
|
createIssueManagerMentionMarkdown,
|
|
43
46
|
createIssueManagerWorkspaceFileLinkMarkdown,
|
|
47
|
+
createIssueManagerWorkspaceReferenceMentionMarkdown,
|
|
44
48
|
defaultIssueManagerNodeState,
|
|
45
49
|
extractIssueManagerMentionsFromContent,
|
|
46
50
|
extractIssueManagerPlainTextFromContent,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
|
|
2
2
|
import { RichTextMentionAttrs } from '@tutti-os/ui-rich-text/types';
|
|
3
3
|
import { WorkspaceUserProjectI18nRuntime } from '@tutti-os/workspace-user-project/i18n';
|
|
4
|
+
import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
|
|
4
5
|
import { IssueManagerI18nRuntime } from './i18n/index.js';
|
|
5
6
|
import { IssueManagerAgentBreakdownLauncher, IssueManagerAnalyticsAdapter, IssueManagerAgentProviderOptionsAdapter, IssueManagerAgentSessionOpener, IssueManagerAgentRunner, IssueManagerBackend, IssueManagerEventSource, IssueManagerExecutionDirectoryPicker, IssueManagerFileAdapter, IssueManagerIdentityAdapter, IssueManagerShareAdapter, IssueManagerNodeState } from './contracts/index.js';
|
|
6
7
|
|
|
@@ -30,6 +31,7 @@ interface IssueManagerFeature {
|
|
|
30
31
|
identityAdapter: IssueManagerIdentityAdapter;
|
|
31
32
|
mentionActionHandler?: IssueManagerMentionActionHandler;
|
|
32
33
|
notifications?: IssueManagerNotificationSink;
|
|
34
|
+
referenceSourceAggregator?: ReferenceSourceAggregator;
|
|
33
35
|
shareAdapter?: IssueManagerShareAdapter;
|
|
34
36
|
ui: IssueManagerFeatureUIConfig;
|
|
35
37
|
workspaceUserProjectI18n: WorkspaceUserProjectI18nRuntime;
|
|
@@ -48,6 +50,7 @@ interface CreateIssueManagerFeatureInput {
|
|
|
48
50
|
identityAdapter: IssueManagerIdentityAdapter;
|
|
49
51
|
mentionActionHandler?: IssueManagerMentionActionHandler;
|
|
50
52
|
notifications?: IssueManagerNotificationSink;
|
|
53
|
+
referenceSourceAggregator?: ReferenceSourceAggregator;
|
|
51
54
|
shareAdapter?: IssueManagerShareAdapter;
|
|
52
55
|
ui?: Partial<IssueManagerFeatureUIConfig>;
|
|
53
56
|
}
|
package/dist/i18n/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from './feature-
|
|
2
|
-
export { BuildWorkspaceIssueMentionHrefInput, IssueManagerMentionAttrs, IssueManagerMentionRef, IssueManagerWorkspaceFileLinkInput, IssueManagerWorkspaceFileLinkRef, ParsedWorkspaceIssueMention, WorkspaceIssueMentionMode, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunPrompt, buildIssueManagerTaskBreakdownPrompt, buildWorkspaceIssueMentionHref, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerDefaultNodeFrameWidth, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, parseWorkspaceIssueMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerExpandedFrame, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar } from './core/index.js';
|
|
1
|
+
export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from './feature-Cey7VrAd.js';
|
|
2
|
+
export { BuildWorkspaceIssueMentionHrefInput, IssueManagerMentionAttrs, IssueManagerMentionRef, IssueManagerWorkspaceFileLinkInput, IssueManagerWorkspaceFileLinkRef, IssueManagerWorkspaceReferenceMentionInput, ParsedWorkspaceIssueMention, WorkspaceIssueMentionMode, appendIssueManagerWorkspaceFileLinksToContent, appendIssueManagerWorkspaceReferenceMentionsToContent, buildIssueManagerRunPrompt, buildIssueManagerTaskBreakdownPrompt, buildWorkspaceIssueMentionHref, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, createIssueManagerWorkspaceReferenceMentionMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerDefaultNodeFrameWidth, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, parseWorkspaceIssueMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerExpandedFrame, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar } from './core/index.js';
|
|
3
3
|
export { IssueManagerI18nKey, IssueManagerI18nRuntime, createIssueManagerI18nRuntime, issueManagerI18nModule, issueManagerI18nNamespace, issueManagerI18nResources } from './i18n/index.js';
|
|
4
|
-
export { A as AsyncCollectionState, C as CreateIssueManagerControllerRuntimeInput, C as CreateIssueManagerControllerSessionInput, I as IssueDraft, a as IssueManagerControllerRuntime, b as IssueManagerControllerService, a as IssueManagerControllerSession, S as IssueManagerControllerSessionSyncInput, c as IssueManagerControllerSnapshot, d as IssueManagerDetailCollections, f as IssueManagerEditorMode, g as IssueManagerNotificationState, h as IssueManagerNotificationTone, i as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, j as createIssueManagerDate, k as formatIssueManagerDate, l as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, m as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from './issueManagerControllerService.interface-
|
|
4
|
+
export { A as AsyncCollectionState, C as CreateIssueManagerControllerRuntimeInput, C as CreateIssueManagerControllerSessionInput, I as IssueDraft, a as IssueManagerControllerRuntime, b as IssueManagerControllerService, a as IssueManagerControllerSession, S as IssueManagerControllerSessionSyncInput, c as IssueManagerControllerSnapshot, d as IssueManagerDetailCollections, f as IssueManagerEditorMode, g as IssueManagerNotificationState, h as IssueManagerNotificationTone, i as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, j as createIssueManagerDate, k as formatIssueManagerDate, l as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, m as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from './issueManagerControllerService.interface-CQHZhmDT.js';
|
|
5
5
|
export { createIssueManagerControllerService } from './services/index.js';
|
|
6
6
|
import '@tutti-os/ui-i18n-runtime';
|
|
7
7
|
import '@tutti-os/ui-rich-text/types';
|
|
8
8
|
import '@tutti-os/workspace-user-project/i18n';
|
|
9
|
+
import '@tutti-os/workspace-file-reference/core';
|
|
9
10
|
import './contracts/index.js';
|
|
10
11
|
import '@tutti-os/workspace-file-reference/contracts';
|
|
11
12
|
import '@tutti-os/workspace-user-project/contracts';
|
package/dist/index.js
CHANGED
|
@@ -9,9 +9,10 @@ import {
|
|
|
9
9
|
resolveIssueManagerPriorityLabel,
|
|
10
10
|
resolveIssueManagerStatusLabel,
|
|
11
11
|
uniqueIssueManagerFileReferences
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GD6VYTLW.js";
|
|
13
13
|
import {
|
|
14
14
|
appendIssueManagerWorkspaceFileLinksToContent,
|
|
15
|
+
appendIssueManagerWorkspaceReferenceMentionsToContent,
|
|
15
16
|
buildIssueManagerRunPrompt,
|
|
16
17
|
buildIssueManagerTaskBreakdownPrompt,
|
|
17
18
|
buildWorkspaceIssueMentionHref,
|
|
@@ -20,6 +21,7 @@ import {
|
|
|
20
21
|
createIssueManagerMentionHref,
|
|
21
22
|
createIssueManagerMentionMarkdown,
|
|
22
23
|
createIssueManagerWorkspaceFileLinkMarkdown,
|
|
24
|
+
createIssueManagerWorkspaceReferenceMentionMarkdown,
|
|
23
25
|
defaultIssueManagerNodeState,
|
|
24
26
|
extractIssueManagerMentionsFromContent,
|
|
25
27
|
extractIssueManagerPlainTextFromContent,
|
|
@@ -41,15 +43,16 @@ import {
|
|
|
41
43
|
resolveIssueManagerExpandedFrame,
|
|
42
44
|
resolveIssueManagerWorkspaceRuntimePath,
|
|
43
45
|
shouldAutoCollapseIssueManagerSidebar
|
|
44
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-BPNHQNTP.js";
|
|
45
47
|
import {
|
|
46
48
|
createIssueManagerI18nRuntime,
|
|
47
49
|
issueManagerI18nModule,
|
|
48
50
|
issueManagerI18nNamespace,
|
|
49
51
|
issueManagerI18nResources
|
|
50
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-FKBBTRO6.js";
|
|
51
53
|
export {
|
|
52
54
|
appendIssueManagerWorkspaceFileLinksToContent,
|
|
55
|
+
appendIssueManagerWorkspaceReferenceMentionsToContent,
|
|
53
56
|
buildIssueManagerRunPrompt,
|
|
54
57
|
buildIssueManagerTaskBreakdownPrompt,
|
|
55
58
|
buildWorkspaceIssueMentionHref,
|
|
@@ -61,6 +64,7 @@ export {
|
|
|
61
64
|
createIssueManagerMentionHref,
|
|
62
65
|
createIssueManagerMentionMarkdown,
|
|
63
66
|
createIssueManagerWorkspaceFileLinkMarkdown,
|
|
67
|
+
createIssueManagerWorkspaceReferenceMentionMarkdown,
|
|
64
68
|
defaultIssueManagerNodeState,
|
|
65
69
|
extractIssueManagerMentionsFromContent,
|
|
66
70
|
extractIssueManagerPlainTextFromContent,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SetStateAction } from 'react';
|
|
2
2
|
import { IssueManagerPriority, IssueManagerStatus, IssueManagerFileReference, IssueManagerStatusCounts, IssueManagerIssueDetail, IssueManagerTaskDetail, IssueManagerOpenSource, IssueManagerNodeState, IssueManagerIssueSummary, IssueManagerTopic } from './contracts/index.js';
|
|
3
|
-
import { I as IssueManagerFeature } from './feature-
|
|
3
|
+
import { I as IssueManagerFeature } from './feature-Cey7VrAd.js';
|
|
4
4
|
import { IssueManagerI18nRuntime } from './i18n/index.js';
|
|
5
5
|
|
|
6
6
|
type IssueManagerEditorMode = "read" | "create" | "edit";
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { b as IssueManagerControllerService } from '../issueManagerControllerService.interface-
|
|
2
|
-
export { A as AsyncCollectionState, C as CreateIssueManagerControllerRuntimeInput, C as CreateIssueManagerControllerSessionInput, I as IssueDraft, a as IssueManagerControllerRuntime, a as IssueManagerControllerSession, S as IssueManagerControllerSessionSyncInput, c as IssueManagerControllerSnapshot, d as IssueManagerDetailCollections, f as IssueManagerEditorMode, g as IssueManagerNotificationState, h as IssueManagerNotificationTone, i as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, j as createIssueManagerDate, k as formatIssueManagerDate, l as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, m as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from '../issueManagerControllerService.interface-
|
|
1
|
+
import { b as IssueManagerControllerService } from '../issueManagerControllerService.interface-CQHZhmDT.js';
|
|
2
|
+
export { A as AsyncCollectionState, C as CreateIssueManagerControllerRuntimeInput, C as CreateIssueManagerControllerSessionInput, I as IssueDraft, a as IssueManagerControllerRuntime, a as IssueManagerControllerSession, S as IssueManagerControllerSessionSyncInput, c as IssueManagerControllerSnapshot, d as IssueManagerDetailCollections, f as IssueManagerEditorMode, g as IssueManagerNotificationState, h as IssueManagerNotificationTone, i as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, j as createIssueManagerDate, k as formatIssueManagerDate, l as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, m as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from '../issueManagerControllerService.interface-CQHZhmDT.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '../contracts/index.js';
|
|
5
5
|
import '@tutti-os/workspace-file-reference/contracts';
|
|
6
6
|
import '@tutti-os/workspace-user-project/contracts';
|
|
7
|
-
import '../feature-
|
|
7
|
+
import '../feature-Cey7VrAd.js';
|
|
8
8
|
import '@tutti-os/ui-i18n-runtime';
|
|
9
9
|
import '@tutti-os/ui-rich-text/types';
|
|
10
10
|
import '@tutti-os/workspace-user-project/i18n';
|
|
11
|
+
import '@tutti-os/workspace-file-reference/core';
|
|
11
12
|
import '../i18n/index.js';
|
|
12
13
|
|
|
13
14
|
declare function createIssueManagerControllerService(): IssueManagerControllerService;
|
package/dist/services/index.js
CHANGED
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
resolveIssueManagerPriorityLabel,
|
|
9
9
|
resolveIssueManagerStatusLabel,
|
|
10
10
|
uniqueIssueManagerFileReferences
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-GD6VYTLW.js";
|
|
12
|
+
import "../chunk-BPNHQNTP.js";
|
|
13
|
+
import "../chunk-FKBBTRO6.js";
|
|
14
14
|
export {
|
|
15
15
|
createIssueManagerControllerService,
|
|
16
16
|
createIssueManagerDate,
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -4,12 +4,13 @@ import { IssueManagerOpenSource, IssueManagerNodeState } from '../contracts/inde
|
|
|
4
4
|
import { a as IssueManagerLatestRunStatusRenderer } from '../latestRunStatusRenderer-B_9yU0CM.js';
|
|
5
5
|
export { I as IssueManagerLatestRunStatusRenderInput } from '../latestRunStatusRenderer-B_9yU0CM.js';
|
|
6
6
|
import { RichTextTriggerProvider } from '@tutti-os/ui-rich-text/types';
|
|
7
|
-
import { I as IssueManagerFeature } from '../feature-
|
|
8
|
-
import { e as IssueManagerDiagnostics, b as IssueManagerControllerService } from '../issueManagerControllerService.interface-
|
|
7
|
+
import { I as IssueManagerFeature } from '../feature-Cey7VrAd.js';
|
|
8
|
+
import { e as IssueManagerDiagnostics, b as IssueManagerControllerService } from '../issueManagerControllerService.interface-CQHZhmDT.js';
|
|
9
9
|
import '@tutti-os/ui-i18n-runtime';
|
|
10
10
|
import '@tutti-os/workspace-file-reference/contracts';
|
|
11
11
|
import '@tutti-os/workspace-user-project/contracts';
|
|
12
12
|
import '@tutti-os/workspace-user-project/i18n';
|
|
13
|
+
import '@tutti-os/workspace-file-reference/core';
|
|
13
14
|
|
|
14
15
|
type IssueManagerRichTextSurface = "issue" | "task";
|
|
15
16
|
|
package/dist/ui/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
IssueManagerNode,
|
|
3
3
|
IssueManagerNodeHeader
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-Y2HEL57G.js";
|
|
5
|
+
import "../chunk-GD6VYTLW.js";
|
|
6
|
+
import "../chunk-BPNHQNTP.js";
|
|
7
|
+
import "../chunk-FKBBTRO6.js";
|
|
8
8
|
export {
|
|
9
9
|
IssueManagerNode,
|
|
10
10
|
IssueManagerNodeHeader
|
|
@@ -2,8 +2,8 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import { RichTextTriggerProvider } from '@tutti-os/ui-rich-text/types';
|
|
3
3
|
import { WorkbenchHostActivation, WorkbenchHostExternalStateSource, WorkbenchFrame, WorkbenchHostDockEntry, WorkbenchContribution, WorkbenchHostLaunchRequest, WorkbenchHostLaunchResult, WorkbenchHostNodeDefinition } from '@tutti-os/workbench-surface';
|
|
4
4
|
import { IssueManagerNodeState } from '../contracts/index.js';
|
|
5
|
-
import { e as IssueManagerDiagnostics, b as IssueManagerControllerService } from '../issueManagerControllerService.interface-
|
|
6
|
-
import { I as IssueManagerFeature } from '../feature-
|
|
5
|
+
import { e as IssueManagerDiagnostics, b as IssueManagerControllerService } from '../issueManagerControllerService.interface-CQHZhmDT.js';
|
|
6
|
+
import { I as IssueManagerFeature } from '../feature-Cey7VrAd.js';
|
|
7
7
|
import { a as IssueManagerLatestRunStatusRenderer } from '../latestRunStatusRenderer-B_9yU0CM.js';
|
|
8
8
|
export { defaultIssueManagerNodeFrame, defaultIssueManagerWorkbenchTypeId } from './constants.js';
|
|
9
9
|
import '@tutti-os/workspace-file-reference/contracts';
|
|
@@ -11,6 +11,7 @@ import '@tutti-os/workspace-user-project/contracts';
|
|
|
11
11
|
import '../i18n/index.js';
|
|
12
12
|
import '@tutti-os/ui-i18n-runtime';
|
|
13
13
|
import '@tutti-os/workspace-user-project/i18n';
|
|
14
|
+
import '@tutti-os/workspace-file-reference/core';
|
|
14
15
|
|
|
15
16
|
declare const issueManagerOpenActivationType = "open-workspace-issue";
|
|
16
17
|
interface IssueManagerOpenActivationPayload {
|
package/dist/workbench/index.js
CHANGED
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
IssueManagerNode,
|
|
3
3
|
IssueManagerNodeHeader,
|
|
4
4
|
dispatchIssueManagerTaskListCollapsed
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-Y2HEL57G.js";
|
|
6
|
+
import "../chunk-GD6VYTLW.js";
|
|
7
7
|
import {
|
|
8
8
|
normalizeIssueManagerNodeState,
|
|
9
9
|
resolveIssueManagerExpandedFrame,
|
|
10
10
|
shouldAutoCollapseIssueManagerSidebar
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-BPNHQNTP.js";
|
|
12
|
+
import "../chunk-FKBBTRO6.js";
|
|
13
13
|
import {
|
|
14
14
|
defaultIssueManagerNodeFrame,
|
|
15
15
|
defaultIssueManagerWorkbenchTypeId
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tutti-os/workspace-issue-manager",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"directory": "packages/workspace/issue-manager"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@tutti-os/ui-i18n-runtime": "0.0.
|
|
58
|
-
"@tutti-os/ui-react-hooks": "0.0.
|
|
59
|
-
"@tutti-os/ui-rich-text": "0.0.
|
|
60
|
-
"@tutti-os/ui-system": "0.0.
|
|
61
|
-
"@tutti-os/workbench-surface": "0.0.
|
|
62
|
-
"@tutti-os/workspace-file-reference": "0.0.
|
|
63
|
-
"@tutti-os/workspace-file-preview": "0.0.
|
|
64
|
-
"@tutti-os/workspace-user-project": "0.0.
|
|
57
|
+
"@tutti-os/ui-i18n-runtime": "0.0.17",
|
|
58
|
+
"@tutti-os/ui-react-hooks": "0.0.17",
|
|
59
|
+
"@tutti-os/ui-rich-text": "0.0.17",
|
|
60
|
+
"@tutti-os/ui-system": "0.0.17",
|
|
61
|
+
"@tutti-os/workbench-surface": "0.0.17",
|
|
62
|
+
"@tutti-os/workspace-file-reference": "0.0.17",
|
|
63
|
+
"@tutti-os/workspace-file-preview": "0.0.17",
|
|
64
|
+
"@tutti-os/workspace-user-project": "0.0.17",
|
|
65
65
|
"valtio": "^2.3.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
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 {\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 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 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 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;\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":[]}
|