@nextop-os/workspace-issue-manager 0.0.18 → 0.0.20

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/internal/model.ts","../src/services/internal/controllerRuntime.ts","../src/services/internal/controllerUtils.ts","../src/services/internal/controllerState.ts","../src/services/internal/issueManagerControllerService.ts","../src/services/createIssueManagerControllerService.ts"],"sourcesContent":["import { formatNextopShortDateTime } from \"@nextop-os/ui-system/date-format\";\nimport type {\n IssueManagerFileReference,\n IssueManagerPriority,\n IssueManagerStatus\n} from \"../../contracts/index.ts\";\nimport type { IssueManagerI18nRuntime } from \"../../i18n/issueManagerI18n.ts\";\n\nexport type IssueManagerEditorMode = \"read\" | \"create\" | \"edit\";\n\nexport type IssueManagerReferenceTarget =\n | {\n mode: \"attach\";\n parentKind: \"issue\";\n }\n | {\n mode: \"attach\";\n parentKind: \"task\";\n taskId: string;\n }\n | {\n mode: \"insert\";\n parentKind: \"issue\";\n }\n | {\n mode: \"insert\";\n parentKind: \"task\";\n taskId: string;\n };\n\nexport function createIssueManagerDate(\n value: number | null | undefined\n): Date | null {\n if (!value || !Number.isFinite(value)) {\n return null;\n }\n\n const normalized = value < 1_000_000_000_000 ? value * 1000 : value;\n const date = new Date(normalized);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\nexport function formatIssueManagerTimestamp(\n value: number | null | undefined\n): string | null {\n const date = createIssueManagerDate(value);\n return date ? formatNextopShortDateTime(date) : null;\n}\n\nexport function formatIssueManagerDate(\n value: number | null | undefined\n): string {\n const date = createIssueManagerDate(value);\n return date ? formatNextopShortDateTime(date) : \"\";\n}\n\nexport function resolveIssueManagerStatusLabel(\n copy: IssueManagerI18nRuntime,\n status: IssueManagerStatus | null | undefined\n): string {\n switch (status) {\n case \"not_started\":\n return copy.t(\"status.notStarted\");\n case \"running\":\n return copy.t(\"status.running\");\n case \"pending_acceptance\":\n return copy.t(\"status.pendingAcceptance\");\n case \"completed\":\n return copy.t(\"status.completed\");\n case \"failed\":\n return copy.t(\"status.failed\");\n case \"canceled\":\n return copy.t(\"status.canceled\");\n default:\n return copy.t(\"status.unknown\");\n }\n}\n\nexport function resolveIssueManagerPriorityLabel(\n copy: IssueManagerI18nRuntime,\n priority: IssueManagerPriority | null | undefined\n): string {\n switch (priority) {\n case \"high\":\n return copy.t(\"priority.high\");\n case \"low\":\n return copy.t(\"priority.low\");\n default:\n return copy.t(\"priority.medium\");\n }\n}\n\nexport function uniqueIssueManagerFileReferences(\n refs: readonly IssueManagerFileReference[]\n): IssueManagerFileReference[] {\n const unique = new Map<string, IssueManagerFileReference>();\n for (const ref of refs) {\n const normalizedPath = ref.path.trim();\n if (!normalizedPath || unique.has(normalizedPath)) {\n continue;\n }\n unique.set(normalizedPath, {\n displayName: ref.displayName?.trim() || undefined,\n kind: ref.kind === \"folder\" ? \"folder\" : \"file\",\n path: normalizedPath\n });\n }\n return [...unique.values()];\n}\n\nexport function parentDirectoryPath(path: string): string | null {\n const trimmed = path.trim();\n if (!trimmed || trimmed === \"/\") {\n return null;\n }\n\n const normalized =\n trimmed.endsWith(\"/\") && trimmed.length > 1\n ? trimmed.slice(0, -1)\n : trimmed;\n const index = normalized.lastIndexOf(\"/\");\n if (index <= 0) {\n return \"/\";\n }\n return normalized.slice(0, index) || \"/\";\n}\n","import type { SetStateAction } from \"react\";\nimport { proxy } from \"valtio/vanilla\";\nimport type {\n IssueManagerIssueDetail,\n IssueManagerIssueSummary,\n IssueManagerNodeState,\n IssueManagerTaskDetail\n} from \"../../contracts/index.ts\";\nimport {\n normalizeIssueManagerNodeState,\n type IssueManagerFeature\n} from \"../../core/index.ts\";\nimport { resolveIssueManagerErrorMessage } from \"./controllerUtils.ts\";\nimport {\n applyIssueManagerIssueDetailResultToNodeState,\n applyIssueManagerIssueListResultToNodeState,\n createIssueManagerIssueDraftFromNodeState,\n createIssueManagerTaskDraftFromNodeState,\n syncIssueManagerIssueDraftFromDetail,\n syncIssueManagerTaskDraftFromDetail\n} from \"./controllerState.ts\";\nimport type {\n AsyncCollectionState,\n IssueDraft,\n IssueManagerNotificationState,\n TaskDraft\n} from \"./controllerTypes.ts\";\nimport type {\n IssueManagerEditorMode,\n IssueManagerReferenceTarget\n} from \"./model.ts\";\n\nexport interface IssueManagerControllerSnapshot {\n issueDetail: AsyncCollectionState<IssueManagerIssueDetail | null>;\n issueDraft: IssueDraft;\n issueEditorMode: IssueManagerEditorMode;\n issues: AsyncCollectionState<IssueManagerIssueSummary[]>;\n isRunningTask: boolean;\n nodeState: IssueManagerNodeState;\n notification: IssueManagerNotificationState | null;\n referenceTarget: IssueManagerReferenceTarget | null;\n taskDetail: AsyncCollectionState<IssueManagerTaskDetail | null>;\n taskDraft: TaskDraft;\n taskEditorMode: IssueManagerEditorMode;\n}\n\nexport interface CreateIssueManagerControllerRuntimeInput {\n feature: IssueManagerFeature;\n state?: Partial<IssueManagerNodeState> | null;\n workspaceId: string;\n}\n\nexport interface SyncIssueManagerControllerRuntimeInput {\n deferredIssueSearch: string;\n onStateChange?: (state: IssueManagerNodeState) => void;\n taskListCollapsed: boolean;\n}\n\nexport interface IssueManagerControllerRuntime {\n getSnapshot(): IssueManagerControllerSnapshot;\n refreshAll(): void;\n refreshDetails(): void;\n release(): void;\n retain(): void;\n readonly store: IssueManagerControllerSnapshot;\n setIsRunningTask(update: SetStateAction<boolean>): void;\n setIssueDraftInternal(update: SetStateAction<IssueDraft>): void;\n setIssueEditorModeState(update: SetStateAction<IssueManagerEditorMode>): void;\n setReferenceTarget(\n update: SetStateAction<IssueManagerReferenceTarget | null>\n ): void;\n setNotification(\n update: SetStateAction<IssueManagerNotificationState | null>\n ): void;\n setTaskDraftInternal(update: SetStateAction<TaskDraft>): void;\n setTaskEditorModeState(update: SetStateAction<IssueManagerEditorMode>): void;\n subscribe(listener: () => void): () => void;\n syncInput(input: SyncIssueManagerControllerRuntimeInput): void;\n updateNodeState(\n updater:\n | Partial<IssueManagerNodeState>\n | ((current: IssueManagerNodeState) => IssueManagerNodeState)\n ): void;\n}\n\nexport function createIssueManagerControllerRuntime(\n input: CreateIssueManagerControllerRuntimeInput\n): IssueManagerControllerRuntime {\n const normalizedNodeState = normalizeIssueManagerNodeState(input.state);\n const listeners = new Set<() => void>();\n let deferredIssueSearch = normalizedNodeState.issueSearchQuery;\n let issueDetailSequence = 0;\n let issueListSequence = 0;\n let onStateChange: ((state: IssueManagerNodeState) => void) | undefined;\n let refCount = 0;\n let retained = false;\n let taskDetailSequence = 0;\n let snapshot: IssueManagerControllerSnapshot = {\n issueDetail: createAsyncCollectionState<IssueManagerIssueDetail | null>(\n null\n ),\n issueDraft: createIssueManagerIssueDraftFromNodeState(normalizedNodeState),\n issueEditorMode: \"read\",\n issues: createAsyncCollectionState<IssueManagerIssueSummary[]>([]),\n isRunningTask: false,\n nodeState: normalizedNodeState,\n notification: null,\n referenceTarget: null,\n taskDetail: createAsyncCollectionState<IssueManagerTaskDetail | null>(null),\n taskDraft: createIssueManagerTaskDraftFromNodeState(normalizedNodeState),\n taskEditorMode: \"read\"\n };\n const store = proxy(snapshot);\n\n const notify = () => {\n for (const listener of listeners) {\n listener();\n }\n };\n\n const setSnapshot = (\n updater:\n | Partial<IssueManagerControllerSnapshot>\n | ((\n current: IssueManagerControllerSnapshot\n ) => IssueManagerControllerSnapshot)\n ) => {\n const next =\n typeof updater === \"function\"\n ? updater(snapshot)\n : {\n ...snapshot,\n ...updater\n };\n if (next === snapshot) {\n return;\n }\n snapshot = next;\n Object.assign(store, next);\n notify();\n };\n\n const syncIssueDraftFromCurrentDetail = () => {\n const nextIssueDraft = syncIssueManagerIssueDraftFromDetail(\n snapshot.issueDraft,\n snapshot.issueDetail.value,\n snapshot.issueEditorMode\n );\n if (nextIssueDraft === snapshot.issueDraft) {\n return;\n }\n setSnapshot((current) => ({\n ...current,\n issueDraft: nextIssueDraft\n }));\n };\n\n const syncTaskDraftFromCurrentDetail = () => {\n const nextTaskDraft = syncIssueManagerTaskDraftFromDetail(\n snapshot.taskDraft,\n snapshot.taskDetail.value,\n snapshot.taskEditorMode\n );\n if (nextTaskDraft === snapshot.taskDraft) {\n return;\n }\n setSnapshot((current) => ({\n ...current,\n taskDraft: nextTaskDraft\n }));\n };\n\n const applyNodeState = (\n updater:\n | Partial<IssueManagerNodeState>\n | ((current: IssueManagerNodeState) => IssueManagerNodeState)\n ) => {\n const previous = snapshot.nodeState;\n const next =\n typeof updater === \"function\"\n ? updater(previous)\n : ({\n ...previous,\n ...updater\n } satisfies IssueManagerNodeState);\n if (next === previous) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n nodeState: next\n }));\n onStateChange?.(next);\n handleNodeStateTransition(previous, next);\n };\n\n const loadIssues = async () => {\n const sequence = ++issueListSequence;\n setSnapshot((current) => ({\n ...current,\n issues: {\n ...current.issues,\n error: null,\n isLoading: true\n }\n }));\n\n try {\n const result = await input.feature.backend.listIssues({\n searchQuery: deferredIssueSearch || undefined,\n statusFilter: snapshot.nodeState.issueStatusFilter,\n workspaceId: input.workspaceId\n });\n if (!retained || sequence !== issueListSequence) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n issues: {\n error: null,\n isLoading: false,\n value: result.issues\n }\n }));\n applyNodeState((current) =>\n applyIssueManagerIssueListResultToNodeState(current, result)\n );\n } catch (error) {\n if (!retained || sequence !== issueListSequence) {\n return;\n }\n setSnapshot((current) => ({\n ...current,\n issues: {\n error: resolveIssueManagerErrorMessage(error, input.feature.i18n),\n isLoading: false,\n value: []\n }\n }));\n }\n };\n\n const clearIssueDetail = () => {\n setSnapshot((current) => ({\n ...current,\n issueDetail: createAsyncCollectionState<IssueManagerIssueDetail | null>(\n null\n )\n }));\n syncIssueDraftFromCurrentDetail();\n };\n\n const clearTaskDetail = () => {\n setSnapshot((current) => ({\n ...current,\n taskDetail: createAsyncCollectionState<IssueManagerTaskDetail | null>(\n null\n )\n }));\n syncTaskDraftFromCurrentDetail();\n };\n\n const loadIssueDetail = async () => {\n const selectedIssueId = snapshot.nodeState.selectedIssueId;\n issueDetailSequence += 1;\n const sequence = issueDetailSequence;\n if (!selectedIssueId) {\n clearIssueDetail();\n clearTaskDetail();\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n issueDetail: {\n ...current.issueDetail,\n error: null,\n isLoading: true\n }\n }));\n\n try {\n const result = await input.feature.backend.getIssueDetail({\n issueId: selectedIssueId,\n workspaceId: input.workspaceId\n });\n if (!retained || sequence !== issueDetailSequence) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n issueDetail: {\n error: null,\n isLoading: false,\n value: result\n }\n }));\n syncIssueDraftFromCurrentDetail();\n applyNodeState((current) =>\n applyIssueManagerIssueDetailResultToNodeState(current, result)\n );\n } catch (error) {\n if (!retained || sequence !== issueDetailSequence) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n issueDetail: {\n error: resolveIssueManagerErrorMessage(error, input.feature.i18n),\n isLoading: false,\n value: null\n }\n }));\n syncIssueDraftFromCurrentDetail();\n }\n };\n\n const loadTaskDetail = async () => {\n const selectedIssueId = snapshot.nodeState.selectedIssueId;\n const selectedTaskId = snapshot.nodeState.selectedTaskId;\n taskDetailSequence += 1;\n const sequence = taskDetailSequence;\n if (!selectedIssueId || !selectedTaskId) {\n clearTaskDetail();\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n taskDetail: {\n ...current.taskDetail,\n error: null,\n isLoading: true\n }\n }));\n\n try {\n const result = await input.feature.backend.getTaskDetail({\n issueId: selectedIssueId,\n taskId: selectedTaskId,\n workspaceId: input.workspaceId\n });\n if (!retained || sequence !== taskDetailSequence) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n taskDetail: {\n error: null,\n isLoading: false,\n value: result\n }\n }));\n syncTaskDraftFromCurrentDetail();\n } catch (error) {\n if (!retained || sequence !== taskDetailSequence) {\n return;\n }\n\n setSnapshot((current) => ({\n ...current,\n taskDetail: {\n error: resolveIssueManagerErrorMessage(error, input.feature.i18n),\n isLoading: false,\n value: null\n }\n }));\n syncTaskDraftFromCurrentDetail();\n }\n };\n\n const handleNodeStateTransition = (\n previous: IssueManagerNodeState,\n next: IssueManagerNodeState\n ) => {\n if (!retained) {\n return;\n }\n\n if (\n previous.issueStatusFilter !== next.issueStatusFilter &&\n deferredIssueSearch === snapshot.nodeState.issueSearchQuery\n ) {\n void loadIssues();\n }\n\n if (previous.selectedIssueId !== next.selectedIssueId) {\n void loadIssueDetail();\n return;\n }\n\n if (previous.selectedTaskId !== next.selectedTaskId) {\n void loadTaskDetail();\n }\n };\n\n return {\n getSnapshot() {\n return snapshot;\n },\n refreshAll() {\n if (!retained) {\n return;\n }\n void loadIssues();\n void loadIssueDetail();\n void loadTaskDetail();\n },\n refreshDetails() {\n if (!retained) {\n return;\n }\n void loadIssueDetail();\n void loadTaskDetail();\n },\n release() {\n refCount = Math.max(0, refCount - 1);\n if (refCount > 0) {\n return;\n }\n retained = false;\n issueListSequence += 1;\n issueDetailSequence += 1;\n taskDetailSequence += 1;\n },\n retain() {\n refCount += 1;\n if (retained) {\n return;\n }\n retained = true;\n void loadIssues();\n void loadIssueDetail();\n void loadTaskDetail();\n },\n setIsRunningTask(update) {\n setSnapshot((current) => ({\n ...current,\n isRunningTask: resolveSetStateAction(update, current.isRunningTask)\n }));\n },\n setIssueDraftInternal(update) {\n setSnapshot((current) => ({\n ...current,\n issueDraft: resolveSetStateAction(update, current.issueDraft)\n }));\n },\n setIssueEditorModeState(update) {\n const nextMode = resolveSetStateAction(update, snapshot.issueEditorMode);\n setSnapshot((current) => ({\n ...current,\n issueEditorMode: nextMode\n }));\n syncIssueDraftFromCurrentDetail();\n },\n setReferenceTarget(update) {\n setSnapshot((current) => ({\n ...current,\n referenceTarget: resolveSetStateAction(update, current.referenceTarget)\n }));\n },\n setNotification(update) {\n setSnapshot((current) => ({\n ...current,\n notification: resolveSetStateAction(update, current.notification)\n }));\n },\n setTaskDraftInternal(update) {\n setSnapshot((current) => ({\n ...current,\n taskDraft: resolveSetStateAction(update, current.taskDraft)\n }));\n },\n setTaskEditorModeState(update) {\n const nextMode = resolveSetStateAction(update, snapshot.taskEditorMode);\n setSnapshot((current) => ({\n ...current,\n taskEditorMode: nextMode\n }));\n syncTaskDraftFromCurrentDetail();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n syncInput(nextInput) {\n onStateChange = nextInput.onStateChange;\n if (deferredIssueSearch !== nextInput.deferredIssueSearch) {\n deferredIssueSearch = nextInput.deferredIssueSearch;\n if (retained) {\n void loadIssues();\n }\n }\n\n if (\n (snapshot.nodeState.taskListCollapsed === true) !==\n nextInput.taskListCollapsed\n ) {\n applyNodeState((current) => ({\n ...current,\n taskListCollapsed: nextInput.taskListCollapsed\n }));\n }\n },\n updateNodeState(updater) {\n applyNodeState(updater);\n },\n store\n };\n}\n\nfunction createAsyncCollectionState<TValue>(\n value: TValue\n): AsyncCollectionState<TValue> {\n return {\n error: null,\n isLoading: false,\n value\n };\n}\n\nfunction resolveSetStateAction<TValue>(\n update: SetStateAction<TValue>,\n current: TValue\n): TValue {\n return typeof update === \"function\"\n ? (update as (value: TValue) => TValue)(current)\n : update;\n}\n","import type {\n IssueManagerIssueSummary,\n IssueManagerFileReference,\n IssueManagerPriority,\n IssueManagerTaskSummary\n} from \"../../contracts/index.ts\";\nimport type { IssueManagerWorkspaceFileLinkInput } from \"../../core/index.ts\";\nimport type { IssueManagerI18nRuntime } from \"../../i18n/issueManagerI18n.ts\";\n\nexport const defaultTaskPriority: IssueManagerPriority = \"medium\";\n\nexport function resolveIssueManagerSelectedIssueId(\n currentSelectedIssueId: string | null | undefined,\n issues: readonly IssueManagerIssueSummary[]\n): string | null {\n if (\n currentSelectedIssueId &&\n issues.some((issue) => issue.issueId === currentSelectedIssueId)\n ) {\n return currentSelectedIssueId;\n }\n return issues[0]?.issueId ?? null;\n}\n\nexport function resolveIssueManagerSelectedTaskId(\n currentSelectedTaskId: string | null | undefined,\n tasks: readonly IssueManagerTaskSummary[]\n): string | null {\n if (\n currentSelectedTaskId &&\n tasks.some((task) => task.taskId === currentSelectedTaskId)\n ) {\n return currentSelectedTaskId;\n }\n return tasks[0]?.taskId ?? null;\n}\n\nexport function toContextRefInput(ref: IssueManagerFileReference) {\n return {\n displayName: ref.displayName,\n path: ref.path,\n refType: ref.kind === \"folder\" ? \"folder\" : \"file\"\n };\n}\n\nexport function toIssueManagerWorkspaceFileLinkInput(\n ref: IssueManagerFileReference\n): IssueManagerWorkspaceFileLinkInput {\n return {\n kind: ref.kind === \"folder\" ? \"folder\" : \"file\",\n name: ref.displayName,\n path: ref.path\n };\n}\n\nexport function confirmIssueManagerMessage(message: string): boolean {\n try {\n return globalThis.confirm?.(message) ?? true;\n } catch {\n return true;\n }\n}\n\nexport function resolveIssueManagerErrorMessage(\n error: unknown,\n copy?: IssueManagerI18nRuntime,\n fallbackKey?: string\n): string {\n const raw =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : String(error);\n\n if (!copy) {\n return raw;\n }\n\n if (raw === \"issue_manager.upload_type_conflict\") {\n return copy.t(\"messages.uploadTypeConflict\");\n }\n if (raw === \"issue_manager.clipboard_unavailable\") {\n return copy.t(\"messages.clipboardUnavailable\");\n }\n if (raw === \"issue_manager.workspace_path_unavailable\") {\n return copy.t(\"messages.workspacePathUnavailable\");\n }\n if (raw === \"issue_manager.run_status_missing\") {\n return copy.t(\"messages.runStatusMissing\");\n }\n if (raw === \"issue_manager.run_timed_out\") {\n return copy.t(\"messages.runTimedOut\");\n }\n if (raw.startsWith(\"issue_manager.run_exit_code:\")) {\n return copy.t(\"messages.runExitCode\", {\n code: raw.slice(\"issue_manager.run_exit_code:\".length)\n });\n }\n\n return fallbackKey ? copy.t(fallbackKey) : raw;\n}\n","import type {\n IssueManagerIssueDetail,\n IssueManagerListIssuesResult,\n IssueManagerNodeState,\n IssueManagerPriority,\n IssueManagerTaskDetail\n} from \"../../contracts/index.ts\";\nimport { normalizeIssueManagerContent } from \"../../core/index.ts\";\nimport type { IssueManagerEditorMode } from \"./model.ts\";\nimport type { IssueDraft, TaskDraft } from \"./controllerTypes.ts\";\nimport {\n defaultTaskPriority,\n resolveIssueManagerSelectedIssueId,\n resolveIssueManagerSelectedTaskId\n} from \"./controllerUtils.ts\";\n\nexport function createIssueManagerIssueDraftFromNodeState(\n state:\n | Pick<IssueManagerNodeState, \"issueDraftContent\" | \"issueDraftTitle\">\n | null\n | undefined\n): IssueDraft {\n return {\n content: state?.issueDraftContent ?? \"\",\n title: state?.issueDraftTitle ?? \"\"\n };\n}\n\nexport function createIssueManagerTaskDraftFromNodeState(\n state:\n | Pick<IssueManagerNodeState, \"taskDraftContent\" | \"taskDraftTitle\">\n | null\n | undefined,\n priority: IssueManagerPriority = defaultTaskPriority\n): TaskDraft {\n return {\n content: state?.taskDraftContent ?? \"\",\n priority,\n title: state?.taskDraftTitle ?? \"\"\n };\n}\n\nexport function applyIssueManagerIssueSelection(\n current: IssueManagerNodeState,\n issueId: string | null\n): IssueManagerNodeState {\n return {\n ...current,\n selectedIssueId: issueId,\n selectedTaskId: null\n };\n}\n\nexport function applyIssueManagerTaskSelection(\n current: IssueManagerNodeState,\n taskId: string | null\n): IssueManagerNodeState {\n return {\n ...current,\n selectedTaskId: taskId\n };\n}\n\nexport function applyIssueManagerIssueDeleted(\n current: IssueManagerNodeState\n): IssueManagerNodeState {\n return {\n ...current,\n selectedIssueId: null,\n selectedTaskId: null\n };\n}\n\nexport function applyIssueManagerTaskDeleted(\n current: IssueManagerNodeState\n): IssueManagerNodeState {\n return {\n ...current,\n selectedTaskId: null\n };\n}\n\nexport function applyIssueManagerSelectedAgentProvider(\n current: IssueManagerNodeState,\n provider: string\n): IssueManagerNodeState {\n return {\n ...current,\n selectedAgentProvider: provider\n };\n}\n\nexport function applyIssueManagerIssueListResultToNodeState(\n current: IssueManagerNodeState,\n result: Pick<IssueManagerListIssuesResult, \"issues\" | \"nextPageToken\">\n): IssueManagerNodeState {\n return {\n ...current,\n issueListNextPageToken: result.nextPageToken ?? null,\n selectedIssueId: resolveIssueManagerSelectedIssueId(\n current.selectedIssueId,\n result.issues\n )\n };\n}\n\nexport function applyIssueManagerIssueDetailResultToNodeState(\n current: IssueManagerNodeState,\n detail: Pick<IssueManagerIssueDetail, \"tasks\">\n): IssueManagerNodeState {\n return {\n ...current,\n selectedTaskId: resolveIssueManagerSelectedTaskId(\n current.selectedTaskId,\n detail.tasks\n )\n };\n}\n\nexport function syncIssueManagerIssueDraftFromDetail(\n current: IssueDraft,\n detail: IssueManagerIssueDetail | null,\n editorMode: IssueManagerEditorMode\n): IssueDraft {\n if (editorMode !== \"read\") {\n return current;\n }\n return {\n content: normalizeIssueManagerContent(detail?.issue.content ?? \"\"),\n title: detail?.issue.title ?? \"\"\n };\n}\n\nexport function syncIssueManagerTaskDraftFromDetail(\n current: TaskDraft,\n detail: IssueManagerTaskDetail | null,\n editorMode: IssueManagerEditorMode\n): TaskDraft {\n if (editorMode !== \"read\") {\n return current;\n }\n return {\n content: normalizeIssueManagerContent(detail?.task.content ?? \"\"),\n priority: detail?.task.priority ?? defaultTaskPriority,\n title: detail?.task.title ?? \"\"\n };\n}\n\nexport function applyIssueManagerIssueEditorModeToNodeState(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode\n): IssueManagerNodeState {\n if (editorMode === \"create\") {\n return current;\n }\n return {\n ...current,\n issueDraftContent: null,\n issueDraftTitle: null\n };\n}\n\nexport function applyIssueManagerTaskEditorModeToNodeState(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode\n): IssueManagerNodeState {\n if (editorMode === \"create\") {\n return current;\n }\n return {\n ...current,\n taskDraftContent: null,\n taskDraftTitle: null\n };\n}\n\nexport function applyIssueManagerIssueSaved(\n current: IssueManagerNodeState,\n issueId: string\n): IssueManagerNodeState {\n return {\n ...current,\n issueDraftContent: null,\n issueDraftTitle: null,\n selectedIssueId: issueId\n };\n}\n\nexport function applyIssueManagerTaskSaved(\n current: IssueManagerNodeState,\n taskId: string\n): IssueManagerNodeState {\n return {\n ...current,\n selectedTaskId: taskId,\n taskDraftContent: null,\n taskDraftTitle: null\n };\n}\n\nexport function persistIssueManagerIssueDraftContent(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode,\n content: string\n): IssueManagerNodeState {\n if (editorMode !== \"create\") {\n return current;\n }\n return {\n ...current,\n issueDraftContent: content\n };\n}\n\nexport function persistIssueManagerIssueDraftTitle(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode,\n title: string\n): IssueManagerNodeState {\n if (editorMode !== \"create\") {\n return current;\n }\n return {\n ...current,\n issueDraftTitle: title\n };\n}\n\nexport function persistIssueManagerTaskDraftContent(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode,\n content: string\n): IssueManagerNodeState {\n if (editorMode !== \"create\") {\n return current;\n }\n return {\n ...current,\n taskDraftContent: content\n };\n}\n\nexport function persistIssueManagerTaskDraftTitle(\n current: IssueManagerNodeState,\n editorMode: IssueManagerEditorMode,\n title: string\n): IssueManagerNodeState {\n if (editorMode !== \"create\") {\n return current;\n }\n return {\n ...current,\n taskDraftTitle: title\n };\n}\n","import type {\n CreateIssueManagerControllerSessionInput,\n IssueManagerControllerService,\n IssueManagerControllerSession\n} from \"../issueManagerControllerService.interface.ts\";\nimport { createIssueManagerControllerRuntime } from \"./controllerRuntime.ts\";\n\nexport class DefaultIssueManagerControllerService implements IssueManagerControllerService {\n createSession(\n input: CreateIssueManagerControllerSessionInput\n ): IssueManagerControllerSession {\n return createIssueManagerControllerRuntime(input);\n }\n}\n","import { DefaultIssueManagerControllerService } from \"./internal/issueManagerControllerService.ts\";\nimport type { IssueManagerControllerService } from \"./issueManagerControllerService.interface.ts\";\n\nexport function createIssueManagerControllerService(): IssueManagerControllerService {\n return new DefaultIssueManagerControllerService();\n}\n"],"mappings":"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","names":[]}
@@ -204,38 +204,6 @@ interface IssueManagerRunEnvelope {
204
204
  outputs: IssueManagerRunOutput[];
205
205
  run: IssueManagerRun;
206
206
  }
207
- interface IssueManagerBackend {
208
- addContextRefs(input: IssueManagerAddContextRefsInput): Promise<IssueManagerContextRef[]>;
209
- completeRun(input: IssueManagerCompleteRunInput): Promise<IssueManagerRunEnvelope>;
210
- createIssue(input: IssueManagerCreateIssueInput): Promise<IssueManagerIssueSummary>;
211
- createRun(input: IssueManagerCreateRunInput): Promise<IssueManagerRun>;
212
- createTask(input: IssueManagerCreateTaskInput): Promise<IssueManagerTaskSummary>;
213
- deleteIssue(input: IssueManagerScope & {
214
- issueId: string;
215
- }): Promise<{
216
- removed: boolean;
217
- }>;
218
- deleteTask(input: IssueManagerScope & {
219
- issueId: string;
220
- taskId: string;
221
- }): Promise<{
222
- removed: boolean;
223
- }>;
224
- getIssueDetail(input: IssueManagerScope & {
225
- issueId: string;
226
- }): Promise<IssueManagerIssueDetail>;
227
- getTaskDetail(input: IssueManagerScope & {
228
- issueId: string;
229
- taskId: string;
230
- }): Promise<IssueManagerTaskDetail>;
231
- listIssues(input: IssueManagerListIssuesInput): Promise<IssueManagerListIssuesResult>;
232
- listTasks(input: IssueManagerListTasksInput): Promise<IssueManagerListTasksResult>;
233
- removeContextRef(input: IssueManagerRemoveContextRefInput): Promise<{
234
- removed: boolean;
235
- }>;
236
- updateIssue(input: IssueManagerUpdateIssueInput): Promise<IssueManagerIssueSummary>;
237
- updateTask(input: IssueManagerUpdateTaskInput): Promise<IssueManagerTaskSummary>;
238
- }
239
207
  type IssueManagerRemoveContextRefInput = (IssueManagerScope & {
240
208
  contextRefId: string;
241
209
  issueId: string;
@@ -246,6 +214,7 @@ type IssueManagerRemoveContextRefInput = (IssueManagerScope & {
246
214
  parentKind: "task";
247
215
  taskId: string;
248
216
  });
217
+
249
218
  interface IssueManagerIdentityProfile {
250
219
  avatarUrl?: string | null;
251
220
  displayName?: string | null;
@@ -332,6 +301,40 @@ interface IssueManagerShareAdapter {
332
301
  taskId?: string;
333
302
  }): Promise<string>;
334
303
  }
304
+
305
+ interface IssueManagerBackend {
306
+ addContextRefs(input: IssueManagerAddContextRefsInput): Promise<IssueManagerContextRef[]>;
307
+ completeRun(input: IssueManagerCompleteRunInput): Promise<IssueManagerRunEnvelope>;
308
+ createIssue(input: IssueManagerCreateIssueInput): Promise<IssueManagerIssueSummary>;
309
+ createRun(input: IssueManagerCreateRunInput): Promise<IssueManagerRun>;
310
+ createTask(input: IssueManagerCreateTaskInput): Promise<IssueManagerTaskSummary>;
311
+ deleteIssue(input: IssueManagerScope & {
312
+ issueId: string;
313
+ }): Promise<{
314
+ removed: boolean;
315
+ }>;
316
+ deleteTask(input: IssueManagerScope & {
317
+ issueId: string;
318
+ taskId: string;
319
+ }): Promise<{
320
+ removed: boolean;
321
+ }>;
322
+ getIssueDetail(input: IssueManagerScope & {
323
+ issueId: string;
324
+ }): Promise<IssueManagerIssueDetail>;
325
+ getTaskDetail(input: IssueManagerScope & {
326
+ issueId: string;
327
+ taskId: string;
328
+ }): Promise<IssueManagerTaskDetail>;
329
+ listIssues(input: IssueManagerListIssuesInput): Promise<IssueManagerListIssuesResult>;
330
+ listTasks(input: IssueManagerListTasksInput): Promise<IssueManagerListTasksResult>;
331
+ removeContextRef(input: IssueManagerRemoveContextRefInput): Promise<{
332
+ removed: boolean;
333
+ }>;
334
+ updateIssue(input: IssueManagerUpdateIssueInput): Promise<IssueManagerIssueSummary>;
335
+ updateTask(input: IssueManagerUpdateTaskInput): Promise<IssueManagerTaskSummary>;
336
+ }
337
+
335
338
  interface IssueManagerNodeState {
336
339
  issueDraftContent?: string | null;
337
340
  issueDraftTitle?: string | null;
@@ -0,0 +1,44 @@
1
+ export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from '../feature-2zhsUF_g.js';
2
+ import { RichTextLinkInput, RichTextLinkRef, appendRichTextLinksToContent, createRichTextMentionHref, createRichTextMentionMarkdown, createRichTextLinkMarkdown, extractRichTextMentionsFromContent, extractPlainTextFromContent, extractPlainTextWithoutFilesFromContent, extractRichTextLinksFromContent, normalizeRichTextContent, normalizeRichTextLinkHref, parseRichTextMentionHref, removeRichTextMentionFromContent, removeRichTextLinkFromContent } from '@nextop-os/ui-rich-text/core';
3
+ import { RichTextMentionAttrs } from '@nextop-os/ui-rich-text/types';
4
+ import { IssueManagerIssueSummary, IssueManagerTaskSummary } from '../contracts/index.js';
5
+ import '@nextop-os/ui-i18n-runtime';
6
+ import '../i18n/index.js';
7
+
8
+ type IssueManagerWorkspaceFileLinkRef = RichTextLinkRef;
9
+ type IssueManagerWorkspaceFileLinkInput = RichTextLinkInput;
10
+ type IssueManagerMentionRef = RichTextMentionAttrs;
11
+ type IssueManagerMentionAttrs = RichTextMentionAttrs;
12
+ declare const normalizeIssueManagerContent: typeof normalizeRichTextContent;
13
+ declare const normalizeIssueManagerWorkspaceFileLinkHref: typeof normalizeRichTextLinkHref;
14
+ declare const createIssueManagerWorkspaceFileLinkMarkdown: typeof createRichTextLinkMarkdown;
15
+ declare const appendIssueManagerWorkspaceFileLinksToContent: typeof appendRichTextLinksToContent;
16
+ declare const extractIssueManagerWorkspaceFileLinksFromContent: typeof extractRichTextLinksFromContent;
17
+ declare const removeIssueManagerWorkspaceFileLinkFromContent: typeof removeRichTextLinkFromContent;
18
+ declare const extractIssueManagerPlainTextFromContent: typeof extractPlainTextFromContent;
19
+ declare const extractIssueManagerPlainTextWithoutFilesFromContent: typeof extractPlainTextWithoutFilesFromContent;
20
+ declare const createIssueManagerMentionHref: typeof createRichTextMentionHref;
21
+ declare const createIssueManagerMentionMarkdown: typeof createRichTextMentionMarkdown;
22
+ declare const parseIssueManagerMentionHref: typeof parseRichTextMentionHref;
23
+ declare const extractIssueManagerMentionsFromContent: typeof extractRichTextMentionsFromContent;
24
+ declare const removeIssueManagerMentionFromContent: typeof removeRichTextMentionFromContent;
25
+
26
+ declare const issueManagerSidebarDefaultWidth = 312;
27
+ declare const issueManagerSidebarMinWidth = 248;
28
+ declare const issueManagerSidebarMaxWidth = 520;
29
+ declare const issueManagerMainMinWidth = 420;
30
+ declare const issueManagerExpandedFrameMinWidth: number;
31
+ declare function clampIssueManagerSidebarWidth(width: number, layoutWidth: number): number;
32
+ declare function shouldAutoCollapseIssueManagerSidebar(containerWidth: number): boolean;
33
+
34
+ declare function buildIssueManagerRunOutputDir(issueId: string, taskId: string, runId: string): string;
35
+ declare function buildIssueManagerUploadDir(issueId: string, taskId?: string | null): string;
36
+ declare function resolveIssueManagerWorkspaceRuntimePath(workspaceRoot: string, requestedPath: string): string;
37
+ declare function buildIssueManagerRunPrompt(input: {
38
+ issue: IssueManagerIssueSummary;
39
+ runId: string;
40
+ task: IssueManagerTaskSummary;
41
+ workspaceRoot: string;
42
+ }): string;
43
+
44
+ export { type IssueManagerMentionAttrs, type IssueManagerMentionRef, type IssueManagerWorkspaceFileLinkInput, type IssueManagerWorkspaceFileLinkRef, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunOutputDir, buildIssueManagerRunPrompt, buildIssueManagerUploadDir, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar };
@@ -0,0 +1,60 @@
1
+ import {
2
+ appendIssueManagerWorkspaceFileLinksToContent,
3
+ buildIssueManagerRunOutputDir,
4
+ buildIssueManagerRunPrompt,
5
+ buildIssueManagerUploadDir,
6
+ clampIssueManagerSidebarWidth,
7
+ createIssueManagerFeature,
8
+ createIssueManagerMentionHref,
9
+ createIssueManagerMentionMarkdown,
10
+ createIssueManagerWorkspaceFileLinkMarkdown,
11
+ defaultIssueManagerNodeState,
12
+ extractIssueManagerMentionsFromContent,
13
+ extractIssueManagerPlainTextFromContent,
14
+ extractIssueManagerPlainTextWithoutFilesFromContent,
15
+ extractIssueManagerWorkspaceFileLinksFromContent,
16
+ issueManagerExpandedFrameMinWidth,
17
+ issueManagerMainMinWidth,
18
+ issueManagerSidebarDefaultWidth,
19
+ issueManagerSidebarMaxWidth,
20
+ issueManagerSidebarMinWidth,
21
+ normalizeIssueManagerContent,
22
+ normalizeIssueManagerNodeState,
23
+ normalizeIssueManagerWorkspaceFileLinkHref,
24
+ parseIssueManagerMentionHref,
25
+ removeIssueManagerMentionFromContent,
26
+ removeIssueManagerWorkspaceFileLinkFromContent,
27
+ resolveIssueManagerWorkspaceRuntimePath,
28
+ shouldAutoCollapseIssueManagerSidebar
29
+ } from "../chunk-V75TAM27.js";
30
+ import "../chunk-5Y5GVLKU.js";
31
+ export {
32
+ appendIssueManagerWorkspaceFileLinksToContent,
33
+ buildIssueManagerRunOutputDir,
34
+ buildIssueManagerRunPrompt,
35
+ buildIssueManagerUploadDir,
36
+ clampIssueManagerSidebarWidth,
37
+ createIssueManagerFeature,
38
+ createIssueManagerMentionHref,
39
+ createIssueManagerMentionMarkdown,
40
+ createIssueManagerWorkspaceFileLinkMarkdown,
41
+ defaultIssueManagerNodeState,
42
+ extractIssueManagerMentionsFromContent,
43
+ extractIssueManagerPlainTextFromContent,
44
+ extractIssueManagerPlainTextWithoutFilesFromContent,
45
+ extractIssueManagerWorkspaceFileLinksFromContent,
46
+ issueManagerExpandedFrameMinWidth,
47
+ issueManagerMainMinWidth,
48
+ issueManagerSidebarDefaultWidth,
49
+ issueManagerSidebarMaxWidth,
50
+ issueManagerSidebarMinWidth,
51
+ normalizeIssueManagerContent,
52
+ normalizeIssueManagerNodeState,
53
+ normalizeIssueManagerWorkspaceFileLinkHref,
54
+ parseIssueManagerMentionHref,
55
+ removeIssueManagerMentionFromContent,
56
+ removeIssueManagerWorkspaceFileLinkFromContent,
57
+ resolveIssueManagerWorkspaceRuntimePath,
58
+ shouldAutoCollapseIssueManagerSidebar
59
+ };
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -5,6 +5,9 @@ import { IssueManagerAgentRunner, IssueManagerBackend, IssueManagerFileAdapter,
5
5
  interface IssueManagerNotificationSink {
6
6
  tips(title: string): void;
7
7
  }
8
+ interface IssueManagerFeatureUIConfig {
9
+ showInviteCollaborator: boolean;
10
+ }
8
11
  interface IssueManagerFeature {
9
12
  agentRunner: IssueManagerAgentRunner;
10
13
  backend: IssueManagerBackend;
@@ -13,6 +16,7 @@ interface IssueManagerFeature {
13
16
  identityAdapter: IssueManagerIdentityAdapter;
14
17
  notifications?: IssueManagerNotificationSink;
15
18
  shareAdapter?: IssueManagerShareAdapter;
19
+ ui: IssueManagerFeatureUIConfig;
16
20
  }
17
21
  interface CreateIssueManagerFeatureInput {
18
22
  agentRunner: IssueManagerAgentRunner;
@@ -22,6 +26,7 @@ interface CreateIssueManagerFeatureInput {
22
26
  identityAdapter: IssueManagerIdentityAdapter;
23
27
  notifications?: IssueManagerNotificationSink;
24
28
  shareAdapter?: IssueManagerShareAdapter;
29
+ ui?: Partial<IssueManagerFeatureUIConfig>;
25
30
  }
26
31
  declare const defaultIssueManagerNodeState: IssueManagerNodeState;
27
32
  declare function createIssueManagerFeature(input: CreateIssueManagerFeatureInput): IssueManagerFeature;
@@ -3,7 +3,7 @@ import {
3
3
  issueManagerI18nModule,
4
4
  issueManagerI18nNamespace,
5
5
  issueManagerI18nResources
6
- } from "../chunk-H2ZF6X6A.js";
6
+ } from "../chunk-5Y5GVLKU.js";
7
7
  export {
8
8
  createIssueManagerI18nRuntime,
9
9
  issueManagerI18nModule,
package/dist/index.d.ts CHANGED
@@ -1,45 +1,10 @@
1
- export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from './feature-Qe1b5W0D.js';
2
- import { createRichTextMentionHref, createRichTextMentionMarkdown, extractRichTextMentionsFromContent, extractPlainTextFromContent, extractPlainTextWithoutFilesFromContent, normalizeRichTextContent, parseRichTextMentionHref, removeRichTextMentionFromContent } from '@nextop-os/ui-rich-text/core';
3
- import { RichTextMentionAttrs } from '@nextop-os/ui-rich-text/types';
4
- import { IssueManagerIssueSummary, IssueManagerTaskSummary } from './contracts/index.js';
1
+ export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, a as IssueManagerNotificationSink, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from './feature-2zhsUF_g.js';
2
+ export { IssueManagerMentionAttrs, IssueManagerMentionRef, IssueManagerWorkspaceFileLinkInput, IssueManagerWorkspaceFileLinkRef, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunOutputDir, buildIssueManagerRunPrompt, buildIssueManagerUploadDir, clampIssueManagerSidebarWidth, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, issueManagerExpandedFrameMinWidth, issueManagerMainMinWidth, issueManagerSidebarDefaultWidth, issueManagerSidebarMaxWidth, issueManagerSidebarMinWidth, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerWorkspaceRuntimePath, shouldAutoCollapseIssueManagerSidebar } from './core/index.js';
3
+ 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, e as IssueManagerEditorMode, f as IssueManagerNotificationState, g as IssueManagerNotificationTone, h as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, i as createIssueManagerDate, j as formatIssueManagerDate, k as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, l as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from './issueManagerControllerService.interface-B_Jr7Xw_.js';
4
+ export { createIssueManagerControllerService } from './services/index.js';
5
5
  import '@nextop-os/ui-i18n-runtime';
6
6
  import './i18n/index.js';
7
-
8
- type IssueManagerWorkspaceFileLinkRef = {
9
- href: string;
10
- kind: "file" | "folder";
11
- name: string;
12
- path: string;
13
- };
14
- type IssueManagerWorkspaceFileLinkInput = {
15
- kind?: "file" | "folder";
16
- name?: string | null;
17
- path: string;
18
- };
19
- type IssueManagerMentionRef = RichTextMentionAttrs;
20
- type IssueManagerMentionAttrs = RichTextMentionAttrs;
21
- declare const normalizeIssueManagerContent: typeof normalizeRichTextContent;
22
- declare function normalizeIssueManagerWorkspaceFileLinkHref(pathOrHref: string, kind?: "file" | "folder"): string;
23
- declare function createIssueManagerWorkspaceFileLinkMarkdown(input: IssueManagerWorkspaceFileLinkInput): string;
24
- declare function appendIssueManagerWorkspaceFileLinksToContent(value: string | null | undefined, refs: readonly IssueManagerWorkspaceFileLinkInput[]): string;
25
- declare function extractIssueManagerWorkspaceFileLinksFromContent(value: string | null | undefined): IssueManagerWorkspaceFileLinkRef[];
26
- declare function removeIssueManagerWorkspaceFileLinkFromContent(content: string, path: string): string;
27
- declare const extractIssueManagerPlainTextFromContent: typeof extractPlainTextFromContent;
28
- declare const extractIssueManagerPlainTextWithoutFilesFromContent: typeof extractPlainTextWithoutFilesFromContent;
29
- declare const createIssueManagerMentionHref: typeof createRichTextMentionHref;
30
- declare const createIssueManagerMentionMarkdown: typeof createRichTextMentionMarkdown;
31
- declare const parseIssueManagerMentionHref: typeof parseRichTextMentionHref;
32
- declare const extractIssueManagerMentionsFromContent: typeof extractRichTextMentionsFromContent;
33
- declare const removeIssueManagerMentionFromContent: typeof removeRichTextMentionFromContent;
34
-
35
- declare function buildIssueManagerRunOutputDir(issueId: string, taskId: string, runId: string): string;
36
- declare function buildIssueManagerUploadDir(issueId: string, taskId?: string | null): string;
37
- declare function resolveIssueManagerWorkspaceRuntimePath(workspaceRoot: string, requestedPath: string): string;
38
- declare function buildIssueManagerRunPrompt(input: {
39
- issue: IssueManagerIssueSummary;
40
- runId: string;
41
- task: IssueManagerTaskSummary;
42
- workspaceRoot: string;
43
- }): string;
44
-
45
- export { type IssueManagerMentionAttrs, type IssueManagerMentionRef, type IssueManagerWorkspaceFileLinkInput, type IssueManagerWorkspaceFileLinkRef, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunOutputDir, buildIssueManagerRunPrompt, buildIssueManagerUploadDir, createIssueManagerMentionHref, createIssueManagerMentionMarkdown, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerMentionsFromContent, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, parseIssueManagerMentionHref, removeIssueManagerMentionFromContent, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerWorkspaceRuntimePath };
7
+ import './contracts/index.js';
8
+ import '@nextop-os/ui-rich-text/core';
9
+ import '@nextop-os/ui-rich-text/types';
10
+ import 'react';
package/dist/index.js CHANGED
@@ -1,8 +1,20 @@
1
+ import "./chunk-LEL6VWU4.js";
2
+ import {
3
+ createIssueManagerControllerService,
4
+ createIssueManagerDate,
5
+ formatIssueManagerDate,
6
+ formatIssueManagerTimestamp,
7
+ parentDirectoryPath,
8
+ resolveIssueManagerPriorityLabel,
9
+ resolveIssueManagerStatusLabel,
10
+ uniqueIssueManagerFileReferences
11
+ } from "./chunk-ZWDF5XA7.js";
1
12
  import {
2
13
  appendIssueManagerWorkspaceFileLinksToContent,
3
14
  buildIssueManagerRunOutputDir,
4
15
  buildIssueManagerRunPrompt,
5
16
  buildIssueManagerUploadDir,
17
+ clampIssueManagerSidebarWidth,
6
18
  createIssueManagerFeature,
7
19
  createIssueManagerMentionHref,
8
20
  createIssueManagerMentionMarkdown,
@@ -12,20 +24,29 @@ import {
12
24
  extractIssueManagerPlainTextFromContent,
13
25
  extractIssueManagerPlainTextWithoutFilesFromContent,
14
26
  extractIssueManagerWorkspaceFileLinksFromContent,
27
+ issueManagerExpandedFrameMinWidth,
28
+ issueManagerMainMinWidth,
29
+ issueManagerSidebarDefaultWidth,
30
+ issueManagerSidebarMaxWidth,
31
+ issueManagerSidebarMinWidth,
15
32
  normalizeIssueManagerContent,
16
33
  normalizeIssueManagerNodeState,
17
34
  normalizeIssueManagerWorkspaceFileLinkHref,
18
35
  parseIssueManagerMentionHref,
19
36
  removeIssueManagerMentionFromContent,
20
37
  removeIssueManagerWorkspaceFileLinkFromContent,
21
- resolveIssueManagerWorkspaceRuntimePath
22
- } from "./chunk-HKIH3OTZ.js";
23
- import "./chunk-H2ZF6X6A.js";
38
+ resolveIssueManagerWorkspaceRuntimePath,
39
+ shouldAutoCollapseIssueManagerSidebar
40
+ } from "./chunk-V75TAM27.js";
41
+ import "./chunk-5Y5GVLKU.js";
24
42
  export {
25
43
  appendIssueManagerWorkspaceFileLinksToContent,
26
44
  buildIssueManagerRunOutputDir,
27
45
  buildIssueManagerRunPrompt,
28
46
  buildIssueManagerUploadDir,
47
+ clampIssueManagerSidebarWidth,
48
+ createIssueManagerControllerService,
49
+ createIssueManagerDate,
29
50
  createIssueManagerFeature,
30
51
  createIssueManagerMentionHref,
31
52
  createIssueManagerMentionMarkdown,
@@ -35,12 +56,24 @@ export {
35
56
  extractIssueManagerPlainTextFromContent,
36
57
  extractIssueManagerPlainTextWithoutFilesFromContent,
37
58
  extractIssueManagerWorkspaceFileLinksFromContent,
59
+ formatIssueManagerDate,
60
+ formatIssueManagerTimestamp,
61
+ issueManagerExpandedFrameMinWidth,
62
+ issueManagerMainMinWidth,
63
+ issueManagerSidebarDefaultWidth,
64
+ issueManagerSidebarMaxWidth,
65
+ issueManagerSidebarMinWidth,
38
66
  normalizeIssueManagerContent,
39
67
  normalizeIssueManagerNodeState,
40
68
  normalizeIssueManagerWorkspaceFileLinkHref,
69
+ parentDirectoryPath,
41
70
  parseIssueManagerMentionHref,
42
71
  removeIssueManagerMentionFromContent,
43
72
  removeIssueManagerWorkspaceFileLinkFromContent,
44
- resolveIssueManagerWorkspaceRuntimePath
73
+ resolveIssueManagerPriorityLabel,
74
+ resolveIssueManagerStatusLabel,
75
+ resolveIssueManagerWorkspaceRuntimePath,
76
+ shouldAutoCollapseIssueManagerSidebar,
77
+ uniqueIssueManagerFileReferences
45
78
  };
46
79
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,101 @@
1
+ import { SetStateAction } from 'react';
2
+ import { IssueManagerPriority, IssueManagerStatus, IssueManagerFileReference, IssueManagerIssueDetail, IssueManagerTaskDetail, IssueManagerNodeState, IssueManagerIssueSummary } from './contracts/index.js';
3
+ import { I as IssueManagerFeature } from './feature-2zhsUF_g.js';
4
+ import { IssueManagerI18nRuntime } from './i18n/index.js';
5
+
6
+ type IssueManagerEditorMode = "read" | "create" | "edit";
7
+ type IssueManagerReferenceTarget = {
8
+ mode: "attach";
9
+ parentKind: "issue";
10
+ } | {
11
+ mode: "attach";
12
+ parentKind: "task";
13
+ taskId: string;
14
+ } | {
15
+ mode: "insert";
16
+ parentKind: "issue";
17
+ } | {
18
+ mode: "insert";
19
+ parentKind: "task";
20
+ taskId: string;
21
+ };
22
+ declare function createIssueManagerDate(value: number | null | undefined): Date | null;
23
+ declare function formatIssueManagerTimestamp(value: number | null | undefined): string | null;
24
+ declare function formatIssueManagerDate(value: number | null | undefined): string;
25
+ declare function resolveIssueManagerStatusLabel(copy: IssueManagerI18nRuntime, status: IssueManagerStatus | null | undefined): string;
26
+ declare function resolveIssueManagerPriorityLabel(copy: IssueManagerI18nRuntime, priority: IssueManagerPriority | null | undefined): string;
27
+ declare function uniqueIssueManagerFileReferences(refs: readonly IssueManagerFileReference[]): IssueManagerFileReference[];
28
+ declare function parentDirectoryPath(path: string): string | null;
29
+
30
+ interface IssueDraft {
31
+ content: string;
32
+ title: string;
33
+ }
34
+ interface TaskDraft {
35
+ content: string;
36
+ priority: IssueManagerPriority;
37
+ title: string;
38
+ }
39
+ interface AsyncCollectionState<TValue> {
40
+ error: string | null;
41
+ isLoading: boolean;
42
+ value: TValue;
43
+ }
44
+ type IssueManagerNotificationTone = "default" | "destructive";
45
+ interface IssueManagerNotificationState {
46
+ id: number;
47
+ title: string;
48
+ tone: IssueManagerNotificationTone;
49
+ }
50
+ interface IssueManagerDetailCollections {
51
+ issueDetail: AsyncCollectionState<IssueManagerIssueDetail | null>;
52
+ taskDetail: AsyncCollectionState<IssueManagerTaskDetail | null>;
53
+ }
54
+
55
+ interface IssueManagerControllerSnapshot {
56
+ issueDetail: AsyncCollectionState<IssueManagerIssueDetail | null>;
57
+ issueDraft: IssueDraft;
58
+ issueEditorMode: IssueManagerEditorMode;
59
+ issues: AsyncCollectionState<IssueManagerIssueSummary[]>;
60
+ isRunningTask: boolean;
61
+ nodeState: IssueManagerNodeState;
62
+ notification: IssueManagerNotificationState | null;
63
+ referenceTarget: IssueManagerReferenceTarget | null;
64
+ taskDetail: AsyncCollectionState<IssueManagerTaskDetail | null>;
65
+ taskDraft: TaskDraft;
66
+ taskEditorMode: IssueManagerEditorMode;
67
+ }
68
+ interface CreateIssueManagerControllerRuntimeInput {
69
+ feature: IssueManagerFeature;
70
+ state?: Partial<IssueManagerNodeState> | null;
71
+ workspaceId: string;
72
+ }
73
+ interface SyncIssueManagerControllerRuntimeInput {
74
+ deferredIssueSearch: string;
75
+ onStateChange?: (state: IssueManagerNodeState) => void;
76
+ taskListCollapsed: boolean;
77
+ }
78
+ interface IssueManagerControllerRuntime {
79
+ getSnapshot(): IssueManagerControllerSnapshot;
80
+ refreshAll(): void;
81
+ refreshDetails(): void;
82
+ release(): void;
83
+ retain(): void;
84
+ readonly store: IssueManagerControllerSnapshot;
85
+ setIsRunningTask(update: SetStateAction<boolean>): void;
86
+ setIssueDraftInternal(update: SetStateAction<IssueDraft>): void;
87
+ setIssueEditorModeState(update: SetStateAction<IssueManagerEditorMode>): void;
88
+ setReferenceTarget(update: SetStateAction<IssueManagerReferenceTarget | null>): void;
89
+ setNotification(update: SetStateAction<IssueManagerNotificationState | null>): void;
90
+ setTaskDraftInternal(update: SetStateAction<TaskDraft>): void;
91
+ setTaskEditorModeState(update: SetStateAction<IssueManagerEditorMode>): void;
92
+ subscribe(listener: () => void): () => void;
93
+ syncInput(input: SyncIssueManagerControllerRuntimeInput): void;
94
+ updateNodeState(updater: Partial<IssueManagerNodeState> | ((current: IssueManagerNodeState) => IssueManagerNodeState)): void;
95
+ }
96
+
97
+ interface IssueManagerControllerService {
98
+ createSession(input: CreateIssueManagerControllerRuntimeInput): IssueManagerControllerRuntime;
99
+ }
100
+
101
+ export { type AsyncCollectionState as A, type CreateIssueManagerControllerRuntimeInput as C, type IssueDraft as I, type SyncIssueManagerControllerRuntimeInput as S, type TaskDraft as T, type IssueManagerControllerRuntime as a, type IssueManagerControllerService as b, type IssueManagerControllerSnapshot as c, type IssueManagerDetailCollections as d, type IssueManagerEditorMode as e, type IssueManagerNotificationState as f, type IssueManagerNotificationTone as g, type IssueManagerReferenceTarget as h, createIssueManagerDate as i, formatIssueManagerDate as j, formatIssueManagerTimestamp as k, resolveIssueManagerStatusLabel as l, parentDirectoryPath as p, resolveIssueManagerPriorityLabel as r, uniqueIssueManagerFileReferences as u };
@@ -0,0 +1,11 @@
1
+ import { b as IssueManagerControllerService } from '../issueManagerControllerService.interface-B_Jr7Xw_.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, e as IssueManagerEditorMode, f as IssueManagerNotificationState, g as IssueManagerNotificationTone, h as IssueManagerReferenceTarget, S as SyncIssueManagerControllerRuntimeInput, T as TaskDraft, i as createIssueManagerDate, j as formatIssueManagerDate, k as formatIssueManagerTimestamp, p as parentDirectoryPath, r as resolveIssueManagerPriorityLabel, l as resolveIssueManagerStatusLabel, u as uniqueIssueManagerFileReferences } from '../issueManagerControllerService.interface-B_Jr7Xw_.js';
3
+ import 'react';
4
+ import '../contracts/index.js';
5
+ import '../feature-2zhsUF_g.js';
6
+ import '@nextop-os/ui-i18n-runtime';
7
+ import '../i18n/index.js';
8
+
9
+ declare function createIssueManagerControllerService(): IssueManagerControllerService;
10
+
11
+ export { IssueManagerControllerService, createIssueManagerControllerService };
@@ -0,0 +1,24 @@
1
+ import "../chunk-LEL6VWU4.js";
2
+ import {
3
+ createIssueManagerControllerService,
4
+ createIssueManagerDate,
5
+ formatIssueManagerDate,
6
+ formatIssueManagerTimestamp,
7
+ parentDirectoryPath,
8
+ resolveIssueManagerPriorityLabel,
9
+ resolveIssueManagerStatusLabel,
10
+ uniqueIssueManagerFileReferences
11
+ } from "../chunk-ZWDF5XA7.js";
12
+ import "../chunk-V75TAM27.js";
13
+ import "../chunk-5Y5GVLKU.js";
14
+ export {
15
+ createIssueManagerControllerService,
16
+ createIssueManagerDate,
17
+ formatIssueManagerDate,
18
+ formatIssueManagerTimestamp,
19
+ parentDirectoryPath,
20
+ resolveIssueManagerPriorityLabel,
21
+ resolveIssueManagerStatusLabel,
22
+ uniqueIssueManagerFileReferences
23
+ };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}