@tutti-os/workspace-issue-manager 0.0.36 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  normalizeIssueManagerContent,
3
3
  normalizeIssueManagerNodeState
4
- } from "./chunk-BZTHQIC6.js";
4
+ } from "./chunk-KSNIBEPN.js";
5
5
 
6
6
  // src/services/internal/model.ts
7
7
  import { formatTuttiShortDateTime } from "@tutti-os/ui-system/date-format";
@@ -27,8 +27,6 @@ function resolveIssueManagerStatusLabel(copy, status) {
27
27
  return copy.t("status.notStarted");
28
28
  case "running":
29
29
  return copy.t("status.running");
30
- case "in_progress":
31
- return copy.t("status.running");
32
30
  case "pending_acceptance":
33
31
  return copy.t("status.pendingAcceptance");
34
32
  case "completed":
@@ -342,24 +340,6 @@ function createIssueManagerOpenedParams(source) {
342
340
  trigger: source === "restore" || source === "agent_command" ? "automatic" : "manual"
343
341
  };
344
342
  }
345
- function mergeIssueManagerRunningListResults(results) {
346
- const [runningResult, legacyResult] = results;
347
- const issueIds = /* @__PURE__ */ new Set();
348
- const issues = [];
349
- for (const issue of [...runningResult.issues, ...legacyResult.issues]) {
350
- if (issueIds.has(issue.issueId)) {
351
- continue;
352
- }
353
- issueIds.add(issue.issueId);
354
- issues.push(issue);
355
- }
356
- return {
357
- issues,
358
- nextPageToken: runningResult.nextPageToken ?? legacyResult.nextPageToken,
359
- statusCounts: runningResult.statusCounts ?? legacyResult.statusCounts,
360
- totalCount: runningResult.totalCount !== void 0 || legacyResult.totalCount !== void 0 ? issues.length : void 0
361
- };
362
- }
363
343
  function createIssueManagerControllerRuntime(input) {
364
344
  const diagnostics = input.diagnostics ?? null;
365
345
  const normalizedNodeState = normalizeIssueManagerNodeState(input.state);
@@ -585,12 +565,7 @@ function createIssueManagerControllerRuntime(input) {
585
565
  topicId: activeTopicId,
586
566
  workspaceId: input.workspaceId
587
567
  });
588
- const result = snapshot.nodeState.issueStatusFilter === "running" ? mergeIssueManagerRunningListResults(
589
- await Promise.all([
590
- listIssues("running"),
591
- listIssues("in_progress")
592
- ])
593
- ) : await listIssues(snapshot.nodeState.issueStatusFilter);
568
+ const result = await listIssues(snapshot.nodeState.issueStatusFilter);
594
569
  if (!retained || sequence !== issueListSequence) {
595
570
  return;
596
571
  }
@@ -990,4 +965,4 @@ export {
990
965
  persistIssueManagerTaskDraftContent,
991
966
  createIssueManagerControllerService
992
967
  };
993
- //# sourceMappingURL=chunk-VM6JTHOF.js.map
968
+ //# sourceMappingURL=chunk-2UL4JU3Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/internal/model.ts","../src/services/internal/controllerRuntime.ts","../src/internal/issueManagerDiagnostics.ts","../src/services/internal/controllerUtils.ts","../src/services/internal/controllerState.ts","../src/services/internal/issueManagerControllerService.ts","../src/services/createIssueManagerControllerService.ts"],"sourcesContent":["import { formatTuttiShortDateTime } from \"@tutti-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 ? formatTuttiShortDateTime(date) : null;\n}\n\nexport function formatIssueManagerDate(\n value: number | null | undefined\n): string {\n const date = createIssueManagerDate(value);\n return date ? formatTuttiShortDateTime(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 IssueManagerOpenSource,\n IssueManagerOpenTrigger,\n IssueManagerTaskDetail,\n IssueManagerTopic\n} from \"../../contracts/index.ts\";\nimport {\n normalizeIssueManagerNodeState,\n type IssueManagerFeature\n} from \"../../core/index.ts\";\nimport {\n logIssueManagerDiagnostic,\n type IssueManagerDiagnostics\n} from \"../../internal/issueManagerDiagnostics.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 topics: AsyncCollectionState<IssueManagerTopic[]>;\n}\n\nexport interface CreateIssueManagerControllerRuntimeInput {\n diagnostics?: IssueManagerDiagnostics | null;\n feature: IssueManagerFeature;\n openSource?: IssueManagerOpenSource;\n state?: Partial<IssueManagerNodeState> | null;\n workspaceId: string;\n}\n\nfunction createIssueManagerOpenedParams(source: IssueManagerOpenSource): {\n source: IssueManagerOpenSource;\n trigger: IssueManagerOpenTrigger;\n} {\n return {\n source,\n trigger:\n source === \"restore\" || source === \"agent_command\"\n ? \"automatic\"\n : \"manual\"\n };\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 reportIssueSearchUsage(query: string): 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 diagnostics = input.diagnostics ?? null;\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 lastResolvedIssueSearchQuery: string | null = null;\n let hasReportedOpened = false;\n let onStateChange: ((state: IssueManagerNodeState) => void) | undefined;\n let pendingIssueSearchAnalyticsQuery: string | null = null;\n let refCount = 0;\n let retained = false;\n let taskDetailSequence = 0;\n let topicListSequence = 0;\n let unsubscribeIssueUpdates: (() => void) | null = null;\n let snapshot: IssueManagerControllerSnapshot = {\n issueDetail: createAsyncCollectionState<IssueManagerIssueDetail | null>(\n null\n ),\n issueDraft: createIssueManagerIssueDraftFromNodeState(normalizedNodeState),\n issueEditorMode: \"read\",\n issues: createAsyncCollectionState<IssueManagerIssueSummary[]>([], {\n hasResolved: false\n }),\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 topics: createAsyncCollectionState<IssueManagerTopic[]>([], {\n hasResolved: false\n })\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 if (\n previous.activeTopicId !== next.activeTopicId ||\n previous.selectedIssueId !== next.selectedIssueId ||\n previous.selectedTaskId !== next.selectedTaskId ||\n previous.taskListCollapsed !== next.taskListCollapsed\n ) {\n logIssueManagerDiagnostic(\n diagnostics,\n \"node_state.changed\",\n {\n nextActiveTopicId: next.activeTopicId ?? null,\n nextSelectedIssueId: next.selectedIssueId,\n nextSelectedTaskId: next.selectedTaskId,\n nextTaskListCollapsed: next.taskListCollapsed === true,\n previousActiveTopicId: previous.activeTopicId ?? null,\n previousSelectedIssueId: previous.selectedIssueId,\n previousSelectedTaskId: previous.selectedTaskId,\n previousTaskListCollapsed: previous.taskListCollapsed === true\n },\n { includeStack: true }\n );\n }\n\n setSnapshot((current) => ({\n ...current,\n nodeState: next\n }));\n onStateChange?.(next);\n handleNodeStateTransition(previous, next);\n };\n\n const loadTopics = async () => {\n const sequence = ++topicListSequence;\n setSnapshot((current) => ({\n ...current,\n topics: {\n ...current.topics,\n error: null,\n isLoading: true\n }\n }));\n\n try {\n const result = await input.feature.backend.listTopics({\n workspaceId: input.workspaceId\n });\n if (!retained || sequence !== topicListSequence) {\n return;\n }\n if (result.topics.length === 0) {\n throw new Error(input.feature.i18n.t(\"messages.topicListEmpty\"));\n }\n\n setSnapshot((current) => ({\n ...current,\n topics: {\n error: null,\n hasResolved: true,\n isLoading: false,\n value: result.topics\n }\n }));\n const currentActiveTopicId = snapshot.nodeState.activeTopicId;\n const currentTopicExists = result.topics.some(\n (topic) => topic.topicId === currentActiveTopicId\n );\n const activeTopicId = currentTopicExists\n ? currentActiveTopicId\n : (result.topics[0]?.topicId ?? null);\n applyNodeState({\n activeTopicId\n });\n if (activeTopicId && activeTopicId === currentActiveTopicId) {\n void loadIssues();\n }\n } catch (error) {\n if (!retained || sequence !== topicListSequence) {\n return;\n }\n setSnapshot((current) => ({\n ...current,\n topics: {\n error: resolveIssueManagerErrorMessage(error, input.feature.i18n),\n hasResolved: true,\n isLoading: false,\n value: []\n }\n }));\n }\n };\n\n const trackIssueSearchAnalytics = (\n inputValue: string,\n resultCount: number\n ) => {\n const query = inputValue.trim();\n if (!query) {\n return;\n }\n void Promise.resolve(\n input.feature.analytics?.track({\n name: \"issue_manager.task_searched\",\n params: {\n queryLength: query.length,\n resultCount\n }\n })\n ).catch(() => undefined);\n };\n\n const flushPendingIssueSearchAnalytics = (\n searchQuery: string,\n resultCount: number\n ) => {\n if (pendingIssueSearchAnalyticsQuery !== searchQuery || !searchQuery) {\n return;\n }\n pendingIssueSearchAnalyticsQuery = null;\n trackIssueSearchAnalytics(searchQuery, resultCount);\n };\n\n const loadIssues = async () => {\n const searchQuery = deferredIssueSearch.trim();\n const activeTopicId = snapshot.nodeState.activeTopicId;\n const sequence = ++issueListSequence;\n if (!activeTopicId) {\n lastResolvedIssueSearchQuery = searchQuery;\n setSnapshot((current) => ({\n ...current,\n issues: {\n error: null,\n hasResolved: true,\n isLoading: false,\n value: []\n }\n }));\n flushPendingIssueSearchAnalytics(searchQuery, 0);\n return;\n }\n setSnapshot((current) => ({\n ...current,\n issues: {\n ...current.issues,\n error: null,\n isLoading: true\n }\n }));\n\n try {\n const listIssues = (\n statusFilter: IssueManagerNodeState[\"issueStatusFilter\"]\n ) =>\n input.feature.backend.listIssues({\n searchQuery: searchQuery || undefined,\n statusFilter,\n topicId: activeTopicId,\n workspaceId: input.workspaceId\n });\n const result = await listIssues(snapshot.nodeState.issueStatusFilter);\n if (!retained || sequence !== issueListSequence) {\n return;\n }\n\n lastResolvedIssueSearchQuery = searchQuery;\n setSnapshot((current) => ({\n ...current,\n issues: {\n error: null,\n hasResolved: true,\n isLoading: false,\n statusCounts: result.statusCounts ?? current.issues.statusCounts,\n value: result.issues\n }\n }));\n applyNodeState((current) =>\n applyIssueManagerIssueListResultToNodeState(current, result)\n );\n flushPendingIssueSearchAnalytics(searchQuery, result.issues.length);\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 hasResolved: true,\n isLoading: false,\n statusCounts: current.issues.statusCounts,\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 (previous.activeTopicId !== next.activeTopicId && next.activeTopicId) {\n applyNodeState({\n selectedIssueId: null,\n selectedTaskId: null\n });\n void loadIssues();\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 const retainIssueUpdates = () => {\n if (unsubscribeIssueUpdates || !input.feature.eventSource) {\n return;\n }\n unsubscribeIssueUpdates = input.feature.eventSource.subscribeToIssueUpdates(\n input.workspaceId,\n (event) => {\n if (event.workspaceId.trim() !== input.workspaceId.trim()) {\n return;\n }\n void loadTopics();\n void loadIssueDetail();\n void loadTaskDetail();\n }\n );\n try {\n const connectResult = input.feature.eventSource.connect?.();\n if (connectResult) {\n void connectResult.catch(() => {});\n }\n } catch {\n // Keep the controller usable when the event stream is temporarily down.\n }\n };\n\n const releaseIssueUpdates = () => {\n unsubscribeIssueUpdates?.();\n unsubscribeIssueUpdates = null;\n };\n\n return {\n getSnapshot() {\n return snapshot;\n },\n refreshAll() {\n if (!retained) {\n return;\n }\n void loadTopics();\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 topicListSequence += 1;\n releaseIssueUpdates();\n },\n reportIssueSearchUsage(query) {\n const searchQuery = query.trim();\n if (!searchQuery) {\n return;\n }\n pendingIssueSearchAnalyticsQuery = searchQuery;\n if (\n lastResolvedIssueSearchQuery === searchQuery &&\n !snapshot.issues.isLoading\n ) {\n flushPendingIssueSearchAnalytics(\n searchQuery,\n snapshot.issues.value.length\n );\n }\n },\n retain() {\n refCount += 1;\n if (retained) {\n return;\n }\n retained = true;\n if (!hasReportedOpened) {\n hasReportedOpened = true;\n void Promise.resolve(\n input.feature.analytics?.track({\n name: \"issue_manager.opened\",\n params: createIssueManagerOpenedParams(\n input.openSource ?? \"restore\"\n )\n })\n ).catch(() => undefined);\n }\n retainIssueUpdates();\n void loadTopics();\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 options?: Pick<AsyncCollectionState<TValue>, \"hasResolved\">\n): AsyncCollectionState<TValue> {\n return {\n error: null,\n ...options,\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","export interface IssueManagerDiagnostics {\n log(\n event: string,\n details: Record<string, unknown>,\n options?: { includeStack?: boolean }\n ): void;\n}\n\nexport function logIssueManagerDiagnostic(\n diagnostics: IssueManagerDiagnostics | null | undefined,\n event: string,\n details: Record<string, unknown> = {},\n options: { includeStack?: boolean } = {}\n): void {\n diagnostics?.log(\n event,\n {\n ...details,\n ...(options.includeStack ? { stack: new Error().stack } : {})\n },\n options\n );\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 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\nexport function resolveIssueManagerTopicDeleteErrorMessage(\n error: unknown,\n copy: IssueManagerI18nRuntime\n): string {\n const protocolError = extractProtocolErrorShape(error);\n if (!protocolError) {\n return resolveIssueManagerErrorMessage(\n error,\n copy,\n \"messages.topicDeleteFailed\"\n );\n }\n\n if (protocolError.reason === \"workspace_issue_topic_not_empty\") {\n return copy.t(\"messages.topicDeleteNotEmpty\");\n }\n\n if (protocolError.reason === \"workspace_issue_topic_not_found\") {\n return copy.t(\"messages.topicDeleteNotFound\");\n }\n\n if (\n protocolError.code === \"invalid_request\" &&\n protocolError.reason === \"malformed_request\"\n ) {\n return copy.t(\"messages.topicDeleteDefaultForbidden\");\n }\n\n return copy.t(\"messages.topicDeleteFailed\");\n}\n\ninterface ProtocolErrorShape {\n code: string;\n reason?: string;\n}\n\nfunction extractProtocolErrorShape(error: unknown): ProtocolErrorShape | null {\n if (isProtocolErrorShape(error)) {\n return error;\n }\n\n if (typeof error !== \"object\" || error === null || !(\"error\" in error)) {\n return null;\n }\n\n const nestedError = (error as { error?: unknown }).error;\n return isProtocolErrorShape(nestedError) ? nestedError : null;\n}\n\nfunction isProtocolErrorShape(value: unknown): value is ProtocolErrorShape {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"code\" in value &&\n typeof (value as { code?: unknown }).code === \"string\" &&\n (!(\"reason\" in value) ||\n typeof (value as { reason?: unknown }).reason === \"string\" ||\n typeof (value as { reason?: unknown }).reason === \"undefined\")\n );\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 applyIssueManagerSelectedExecutionDirectory(\n current: IssueManagerNodeState,\n executionDirectory: string | null\n): IssueManagerNodeState {\n return {\n ...current,\n selectedExecutionDirectory: executionDirectory?.trim() || null\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":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createIssueManagerI18nRuntime
3
- } from "./chunk-NHFXUZ4Q.js";
3
+ } from "./chunk-OWZ266HS.js";
4
4
 
5
5
  // src/core/feature.ts
6
6
  import {
@@ -359,4 +359,4 @@ export {
359
359
  buildIssueManagerRunPrompt,
360
360
  buildIssueManagerTaskBreakdownPrompt
361
361
  };
362
- //# sourceMappingURL=chunk-BZTHQIC6.js.map
362
+ //# sourceMappingURL=chunk-KSNIBEPN.js.map
@@ -24,7 +24,7 @@ import {
24
24
  resolveIssueManagerTopicDeleteErrorMessage,
25
25
  toContextRefInput,
26
26
  toIssueManagerWorkspaceFileLinkInput
27
- } from "./chunk-VM6JTHOF.js";
27
+ } from "./chunk-2UL4JU3Q.js";
28
28
  import {
29
29
  appendIssueManagerWorkspaceFileLinksToContent,
30
30
  appendIssueManagerWorkspaceReferenceMentionsToContent,
@@ -36,7 +36,7 @@ import {
36
36
  issueManagerSidebarMinWidth,
37
37
  normalizeIssueManagerContent,
38
38
  shouldAutoCollapseIssueManagerSidebar
39
- } from "./chunk-BZTHQIC6.js";
39
+ } from "./chunk-KSNIBEPN.js";
40
40
 
41
41
  // src/ui/react/internal/shell/IssueManagerNodeState.ts
42
42
  import { useEffect, useEffectEvent, useState } from "react";
@@ -871,7 +871,7 @@ function issueManagerAnalyticsRefType(kind) {
871
871
 
872
872
  // src/services/internal/controllerActions.ts
873
873
  function resolveIssueManagerTaskStatusBucket(status) {
874
- return status === "in_progress" ? "running" : status;
874
+ return status;
875
875
  }
876
876
  function resolveIssueManagerMovedTaskOrder(input) {
877
877
  const normalizedTaskId = input.taskId.trim();
@@ -2304,7 +2304,6 @@ import {
2304
2304
  function issueManagerStatusBadgeVariant(status) {
2305
2305
  switch (status) {
2306
2306
  case "running":
2307
- case "in_progress":
2308
2307
  return "accent";
2309
2308
  case "pending_acceptance":
2310
2309
  return "pending";
@@ -2460,7 +2459,7 @@ var issueManagerBoardStatusSet = {
2460
2459
  running: true
2461
2460
  };
2462
2461
  function resolveIssueManagerSubtaskBoardStatus(status) {
2463
- return status === "in_progress" ? "running" : status in issueManagerBoardStatusSet ? status : "not_started";
2462
+ return status in issueManagerBoardStatusSet ? status : "not_started";
2464
2463
  }
2465
2464
  function isIssueManagerTaskBoardStatus(status) {
2466
2465
  return status in issueManagerBoardStatusSet;
@@ -3512,7 +3511,7 @@ function IssueManagerRichTextTextarea({
3512
3511
  {
3513
3512
  focusSignal,
3514
3513
  maxResults: 8,
3515
- minQueryLength: 1,
3514
+ minQueryLength: 0,
3516
3515
  triggerProviders: providers,
3517
3516
  textOverrides: {
3518
3517
  loadingLabel: controller.copy.t("richTextAt.loading"),
@@ -4296,9 +4295,8 @@ function buildIssueManagerStatusCounts(issues) {
4296
4295
  running: 0
4297
4296
  };
4298
4297
  for (const issue of issues) {
4299
- const status = issue.status === "in_progress" ? "running" : issue.status;
4300
- if (status in counts) {
4301
- counts[status] += 1;
4298
+ if (issue.status in counts) {
4299
+ counts[issue.status] += 1;
4302
4300
  }
4303
4301
  }
4304
4302
  return counts;
@@ -4314,7 +4312,7 @@ function mapIssueManagerStatusCounts(counts) {
4314
4312
  failed: counts.failed,
4315
4313
  not_started: counts.notStarted,
4316
4314
  pending_acceptance: counts.pendingAcceptance,
4317
- running: counts.running + counts.inProgress
4315
+ running: counts.running
4318
4316
  };
4319
4317
  }
4320
4318
  function resolveIssueManagerSubtaskProgress(issue) {
@@ -6552,4 +6550,4 @@ export {
6552
6550
  IssueManagerNode,
6553
6551
  IssueManagerNodeHeader
6554
6552
  };
6555
- //# sourceMappingURL=chunk-FHPEIPBO.js.map
6553
+ //# sourceMappingURL=chunk-LQDZGVWA.js.map