From aeb039938fcf34c94eb2cf68fceba1b67fda957a Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Fri, 23 Oct 2026 14:31:05 -0700 Subject: [PATCH] refactor(jira): colocate shared contracts and capabilities (#32927) * refactor(jira): colocate shared contracts and capabilities * test(jira): validate title width against panel budget --- config/scripts/ci-shard-timings.json | 6 +++--- .../components/NewWorktreeModalDrawers.tsx | 2 +- .../components/SmartWorkspaceSourceDrawer.tsx | 2 +- mobile/src/tasks/composer-linked-work-item.ts | 2 +- mobile/src/tasks/jira-mobile-connection.ts | 2 +- .../src/tasks/jira-mobile-url-lookup.test.ts | 2 +- mobile/src/tasks/jira-mobile-url-lookup.ts | 2 +- mobile/src/tasks/mobile-jira-issue-filters.ts | 2 +- .../src/tasks/mobile-jira-task-source.test.ts | 2 +- mobile/src/tasks/mobile-jira-task-source.ts | 6 +++++- mobile/src/tasks/mobile-task-view-options.tsx | 2 +- mobile/src/tasks/mobile-tasks-item-mapping.ts | 2 +- .../mobile-tasks-project-workspace-types.ts | 2 +- .../tasks/mobile-tasks-view-state-types.ts | 2 +- mobile/src/tasks/smart-source-fan-out.ts | 2 +- .../src/tasks/smart-source-search-requests.ts | 2 +- .../src/tasks/use-mobile-composer-source.ts | 2 +- ...use-mobile-tasks-jira-direct-entry.test.ts | 2 +- .../use-mobile-tasks-route-and-item-state.tsx | 2 +- .../src/tasks/use-smart-workspace-source.ts | 2 +- src/cli/handlers/jira-write.test.ts | 2 +- src/cli/handlers/jira-write.ts | 2 +- src/cli/handlers/jira.ts | 2 +- src/cli/index-jira.test.ts | 2 +- src/cli/index-reference-jira.test.ts | 2 +- src/cli/jira-format.ts | 2 +- src/cli/jira-target.ts | 4 ++-- src/cli/reference-input.ts | 2 +- src/main/ipc/jira/ipc-params.ts | 2 +- src/main/ipc/jira/project-metadata.ts | 2 +- src/main/ipc/jira/register-handlers.ts | 2 +- src/main/ipc/ui.ts | 2 +- src/main/jira/attachments/content-url.ts | 2 +- src/main/jira/authenticated-request.ts | 2 +- src/main/jira/client.ts | 2 +- src/main/jira/credential-verification.ts | 2 +- src/main/jira/jira-agile-fields.test.ts | 2 +- src/main/jira/jira-issue-comments.ts | 2 +- src/main/jira/jira-issue-create-metadata.ts | 2 +- src/main/jira/jira-issue-mapping.ts | 2 +- src/main/jira/jira-issue-mutations.ts | 2 +- src/main/jira/jira-issue-read.ts | 2 +- src/main/jira/jira-issue-search.ts | 2 +- src/main/jira/jira-preset-filters.test.ts | 2 +- src/main/jira/jira-project-queries.ts | 2 +- src/main/jira/jira-read-failure.ts | 2 +- src/main/jira/jira-transition-queries.ts | 2 +- src/main/jira/site-credential-store.ts | 2 +- src/main/jira/site-identity.ts | 2 +- .../persistence-jira-saved-filters.test.ts | 2 +- .../tracking-repos/repo-hydration.ts | 2 +- .../tracking-repos/repo-sanitization.ts | 2 +- src/main/runtime/rpc/methods/client-ui.ts | 2 +- src/main/runtime/runtime-jira-commands.ts | 2 +- src/preload/api/jira-api.ts | 2 +- src/preload/api/jira-bridge.ts | 2 +- src/preload/api/ui-command-event-api.ts | 5 ++++- .../src/components/JiraIssueRowCopyMenu.tsx | 2 +- ...iraIssueWorkspace.assignee-source.test.tsx | 2 +- ...eWorkspace.optimistic-edit-reopen.test.tsx | 2 +- ...orkspace.optimistic-edit-rollback.test.tsx | 2 +- ...iraIssueWorkspace.optimistic-edit.test.tsx | 2 +- .../JiraIssueWorkspace.status-queue.test.tsx | 2 +- ...aIssueWorkspace.transition-source.test.tsx | 6 +++++- .../src/components/JiraIssueWorkspace.tsx | 2 +- .../components/JiraLinkedWorkspaceAction.tsx | 2 +- .../components/JiraPromptTemplatePopover.tsx | 2 +- .../components/TaskPageJiraSavedFilters.tsx | 2 +- .../components/TaskPageJiraStatusFilters.tsx | 2 +- .../jira-issue-workspace-edit-fixture.tsx | 2 +- .../task-page-jira-favourite-fixture.ts | 4 ++-- .../components/cmd-j/task-search-results.ts | 2 +- .../cmd-j/task-search.test-fixture.ts | 2 +- .../jira-connect-scoped-token.test.tsx | 2 +- .../jira-issue-assignee-control.test.tsx | 2 +- .../jira-issue-assignee-control.tsx | 2 +- .../components/jira-issue-mutation-queue.ts | 2 +- .../src/components/jira-issue-sorter.ts | 2 +- .../jira-issue-transition-control.test.tsx | 2 +- .../jira-issue-transition-control.tsx | 4 ++-- .../jira-issue-workspace-actions.ts | 6 +++++- .../jira-issue-workspace-chrome.tsx | 2 +- .../jira-issue-workspace-content.tsx | 2 +- .../jira-issue-workspace-hydration.ts | 2 +- .../jira-issue-workspace-image-owner.test.tsx | 2 +- ...-issue-workspace-request-lifetime.test.tsx | 2 +- .../src/components/jira-key-or-text-search.ts | 2 +- .../jira-project-picker-filter.test.ts | 2 +- .../components/jira-project-picker-filter.ts | 2 +- .../src/components/jira-project-picker.tsx | 4 ++-- .../components/jira-prompt-templates.test.ts | 2 +- .../src/components/jira-prompt-templates.ts | 2 +- .../src/components/jira-self-user.test.ts | 2 +- src/renderer/src/components/jira-self-user.ts | 2 +- .../jira-transition-fields-form.tsx | 4 ++-- .../src/components/jira-user-picker.tsx | 2 +- ...spaceNameField.jira-accessibility.test.tsx | 2 +- .../new-workspace-composer-card-props.ts | 2 +- .../smart-workspace-name-field-model.ts | 2 +- .../smart-workspace-source-row-content.tsx | 2 +- .../use-jira-composer-project.ts | 2 +- .../use-jira-source-connection.test.tsx | 2 +- .../use-jira-source-connection.ts | 2 +- .../use-jira-url-source.test.tsx | 2 +- .../new-workspace/use-jira-url-source.ts | 2 +- .../use-smart-workspace-secondary-searches.ts | 2 +- .../use-work-item-source-state.ts | 2 +- .../work-item-source-selection.test.ts | 2 +- .../work-item-source-selection.ts | 2 +- .../RepositoryJiraProjectSection.test.tsx | 2 +- .../RepositoryJiraProjectSection.tsx | 2 +- ...kspaceAttachmentSearch.resolution.test.tsx | 2 +- ...age-jira-board-detail-integration.test.tsx | 2 +- .../task-page-jira-board-move-dialog.tsx | 4 ++-- .../components/task-page-jira-board-move.ts | 2 +- .../task-page-jira-board-sections.test.ts | 2 +- .../task-page-jira-board-sections.ts | 2 +- .../task-page-jira-board-transitions.test.ts | 2 +- .../task-page-jira-board-transitions.ts | 2 +- .../task-page-jira-board-view.test.tsx | 2 +- .../components/task-page-jira-board-view.tsx | 4 ++-- .../components/task-page-jira-board.test.tsx | 2 +- .../src/components/task-page-jira-board.tsx | 2 +- .../task-page-jira-cache-selectors.test.ts | 2 +- .../task-page-jira-cache-selectors.ts | 2 +- .../task-page-jira-create-fields.test.ts | 2 +- .../task-page-jira-create-fields.ts | 2 +- .../task-page-jira-grouping.test.ts | 2 +- .../components/task-page-jira-issue-cells.tsx | 2 +- .../components/task-page-jira-issue-list.tsx | 2 +- ...task-page-jira-item-source-context.test.ts | 2 +- .../task-page-jira-item-source-context.ts | 2 +- .../task-page-jira-linked-issues.test.ts | 2 +- .../task-page-jira-linked-issues.ts | 2 +- .../components/task-page-jira-load-state.ts | 2 +- .../task-page-jira-project-selection.test.ts | 2 +- .../task-page-jira-project-selection.ts | 2 +- .../task-page-jira-quick-copy.test.tsx | 2 +- ...age-jira-saved-filter-application.test.tsx | 2 +- ...ge-jira-saved-filter-load-failure.test.tsx | 4 ++-- .../components/task-page-jira-search.test.ts | 2 +- .../src/components/task-page-jira-search.ts | 2 +- .../components/task-page-jira-sorting.test.ts | 2 +- .../task-page-jira-status-catalog.ts | 4 ++-- ...sk-page-jira-status-order-session.test.tsx | 2 +- .../components/task-page-jira-status-order.ts | 2 +- .../task-page-jira-workspace-actions.test.tsx | 2 +- .../components/task-page-source-context.tsx | 2 +- .../jira/Filters.linked-mode.test.tsx | 2 +- .../src/components/task-page/jira/Filters.tsx | 2 +- .../components/use-jira-create-assignee.ts | 2 +- .../use-jira-issue-comment-submission.ts | 2 +- .../use-jira-issue-mutation-state.ts | 2 +- .../use-jira-issue-remote-details.ts | 2 +- .../use-jira-issue-workspace-data.ts | 2 +- .../use-jira-project-inventory.test.tsx | 2 +- .../components/use-jira-project-inventory.ts | 2 +- .../use-task-page-composer-actions.ts | 4 ++-- .../use-task-page-detail-routing.ts | 2 +- .../use-task-page-jira-creation-state.ts | 2 +- .../use-task-page-jira-list-effects.test.ts | 2 +- .../use-task-page-jira-list-effects.ts | 2 +- ...e-task-page-jira-list-state.owner.test.tsx | 2 +- .../use-task-page-jira-list-state.ts | 8 +++++-- .../use-task-page-jira-project-scope.ts | 2 +- .../use-task-page-jira-saved-filters.ts | 2 +- .../use-task-page-provider-metadata.ts | 2 +- .../composer-review-base-fencing.test.ts | 2 +- .../composer-state/composer-source-model.ts | 2 +- .../composer-state/issue-source-actions.ts | 2 +- ...ira-mapped-owner-flow.integration.test.tsx | 2 +- .../jira-issue-workspace-attachment.test.ts | 2 +- .../lib/jira-issue-workspace-attachment.ts | 2 +- .../runtime/local-jira-search-cancellation.ts | 2 +- ...me-jira-board-filter-compatibility.test.ts | 4 ++-- .../src/runtime/runtime-jira-client.test.ts | 2 +- .../src/runtime/runtime-jira-client.ts | 4 ++-- .../runtime/runtime-jira-connection-status.ts | 2 +- .../src/runtime/runtime-jira-detail-client.ts | 4 ++-- .../runtime/runtime-jira-project-client.ts | 2 +- .../runtime-jira-saved-filter-state.test.ts | 2 +- .../runtime-jira-saved-filter-state.ts | 4 ++-- .../runtime/runtime-jira-summary-client.ts | 2 +- .../runtime-jira-summary-generation-client.ts | 2 +- .../runtime-jira-user-fields-client.ts | 4 ++-- src/renderer/src/store/repos/repo-update.ts | 2 +- .../slices/jira-collection-read-actions.ts | 2 +- .../slices/jira-connection-identity.test.ts | 2 +- .../slices/jira-issue-patch-action.test.ts | 2 +- .../store/slices/jira-issue-patch-action.ts | 2 +- .../store/slices/jira-issue-read-actions.ts | 2 +- .../store/slices/jira-read-coordination.ts | 2 +- .../src/store/slices/jira-slice-contract.ts | 2 +- .../slices/jira-sprint-filter-cache.test.ts | 2 +- .../slices/jira-status-filter-cache.test.ts | 2 +- src/renderer/src/store/slices/jira.test.ts | 6 +++++- .../store/slices/ui-page-navigation.test.ts | 2 +- .../store/slices/ui/ui-slice-contract-core.ts | 2 +- .../worktree-nav-history-view-entries.test.ts | 2 +- .../src/store/slices/worktree-nav-history.ts | 2 +- .../web-jira-filter-state-api.test.ts | 2 +- .../preload-api/web-jira-filter-state-api.ts | 4 ++-- src/shared/jira-issue-url.test.ts | 2 +- src/shared/jira-issue-url.ts | 2 +- .../{ => jira}/jira-agent-capability.ts | 0 .../{ => jira}/jira-detail-capabilities.ts | 2 +- src/shared/jira/jira-favourite-filters.ts | 2 +- src/shared/jira/jira-preset-jql.ts | 2 +- .../{ => jira}/jira-project-reference.test.ts | 4 ++-- .../{ => jira}/jira-project-reference.ts | 8 +++---- .../jira-saved-filter-capability.ts | 0 .../{ => jira}/jira-saved-filters.test.ts | 0 src/shared/{ => jira}/jira-saved-filters.ts | 2 +- .../{ => jira}/jira-transition-fields.test.ts | 0 .../{ => jira}/jira-transition-fields.ts | 0 src/shared/{ => jira}/jira-types.ts | 2 +- .../smart-workspace-source-results.ts | 2 +- src/shared/new-workspace/workspace-source.ts | 2 +- src/shared/persisted-ui-state-types.ts | 2 +- src/shared/protocol-version.ts | 2 +- src/shared/repo-types.ts | 2 +- .../rpc-contract/jira-saved-filter-params.ts | 2 +- src/shared/rpc-contract/repo-update-params.ts | 2 +- .../task-source-runtime-capabilities.ts | 6 +++--- tests/e2e/jira-panel-layout.spec.ts | 21 ++++++++++++++----- 225 files changed, 283 insertions(+), 249 deletions(-) rename src/shared/{ => jira}/jira-agent-capability.ts (100%) rename src/shared/{ => jira}/jira-detail-capabilities.ts (90%) rename src/shared/{ => jira}/jira-project-reference.test.ts (96%) rename src/shared/{ => jira}/jira-project-reference.ts (91%) rename src/shared/{ => jira}/jira-saved-filter-capability.ts (100%) rename src/shared/{ => jira}/jira-saved-filters.test.ts (100%) rename src/shared/{ => jira}/jira-saved-filters.ts (98%) rename src/shared/{ => jira}/jira-transition-fields.test.ts (100%) rename src/shared/{ => jira}/jira-transition-fields.ts (100%) rename src/shared/{ => jira}/jira-types.ts (98%) diff --git a/config/scripts/ci-shard-timings.json b/config/scripts/ci-shard-timings.json index 9363470f65d..e272fa27418 100644 --- a/config/scripts/ci-shard-timings.json +++ b/config/scripts/ci-shard-timings.json @@ -11494,11 +11494,11 @@ "src/shared/jira-issue-url.test.ts": 36, "src/shared/jira-jql-predicate.test.ts": 38, "src/shared/jira/jira-preset-jql.test.ts": 159, - "src/shared/jira-project-reference.test.ts": 278, + "src/shared/jira/jira-project-reference.test.ts": 278, "src/shared/jira-review-title.test.ts": 93, - "src/shared/jira-saved-filters.test.ts": 34, + "src/shared/jira/jira-saved-filters.test.ts": 34, "src/shared/jira/jira-search-input-jql.test.ts": 68, - "src/shared/jira-transition-fields.test.ts": 41, + "src/shared/jira/jira-transition-fields.test.ts": 41, "src/shared/json-text-structure-limit.test.ts": 63, "src/shared/json-token-reader.test.ts": 224, "src/shared/keybindings-conflicts.test.ts": 83, diff --git a/mobile/src/components/NewWorktreeModalDrawers.tsx b/mobile/src/components/NewWorktreeModalDrawers.tsx index 9a31e99d498..8e1f327bf9c 100644 --- a/mobile/src/components/NewWorktreeModalDrawers.tsx +++ b/mobile/src/components/NewWorktreeModalDrawers.tsx @@ -16,7 +16,7 @@ import { getMobileWorkspaceRepoBadgeColor } from './new-worktree-modal-types' import { PickerListDrawer } from './PickerListDrawer' import { SetupHookTrustDrawer, type SetupTrustPrompt } from './SetupHookTrustDrawer' import { SmartWorkspaceSourceDrawer } from './SmartWorkspaceSourceDrawer' -import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import type { NewWorktreeDrawerView } from './use-new-worktree-drawer-navigation' type Composer = ReturnType diff --git a/mobile/src/components/SmartWorkspaceSourceDrawer.tsx b/mobile/src/components/SmartWorkspaceSourceDrawer.tsx index 621a30077f4..18afe196276 100644 --- a/mobile/src/components/SmartWorkspaceSourceDrawer.tsx +++ b/mobile/src/components/SmartWorkspaceSourceDrawer.tsx @@ -10,7 +10,7 @@ import { } from 'react-native' import type { RpcClient } from '../transport/rpc-client' import type { SmartWorkspaceSourceRow as SourceRow } from '../../../src/shared/new-workspace/smart-workspace-source-results' -import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import { isBlockingJiraUrlIntent } from '../../../src/shared/new-workspace/smart-workspace-source-results' import { MR_STATE_FILTER_OPTIONS, diff --git a/mobile/src/tasks/composer-linked-work-item.ts b/mobile/src/tasks/composer-linked-work-item.ts index 051995956bd..32d2d7ae32e 100644 --- a/mobile/src/tasks/composer-linked-work-item.ts +++ b/mobile/src/tasks/composer-linked-work-item.ts @@ -2,7 +2,7 @@ import type { GitHubWorkItem } from '../../../src/shared/github/work-item-types' import type { GitLabWorkItem } from '../../../src/shared/gitlab-types' import type { LinearIssue } from '../../../src/shared/linear/issue-types' import { getLinearIssueWorkspaceName } from '../../../src/shared/workspace-name' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' import { buildGitHubWorkspaceSource, buildGitLabWorkspaceSource, diff --git a/mobile/src/tasks/jira-mobile-connection.ts b/mobile/src/tasks/jira-mobile-connection.ts index 7859b978f7a..c3d3f4e9f81 100644 --- a/mobile/src/tasks/jira-mobile-connection.ts +++ b/mobile/src/tasks/jira-mobile-connection.ts @@ -1,4 +1,4 @@ -import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraSite, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import type { RpcOperationSender } from '../transport/rpc-operation-sender' import type { RpcResponse } from '../transport/types' import { jiraConnectionStatusSchema } from './jira-reply-schema' diff --git a/mobile/src/tasks/jira-mobile-url-lookup.test.ts b/mobile/src/tasks/jira-mobile-url-lookup.test.ts index 85e53bb384a..025a1a172b1 100644 --- a/mobile/src/tasks/jira-mobile-url-lookup.test.ts +++ b/mobile/src/tasks/jira-mobile-url-lookup.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraSite } from '../../../src/shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../src/shared/jira/jira-types' import type { RpcOperationSender } from '../transport/rpc-operation-sender' import { lookupJiraIssueByUrl } from './jira-mobile-url-lookup' diff --git a/mobile/src/tasks/jira-mobile-url-lookup.ts b/mobile/src/tasks/jira-mobile-url-lookup.ts index d688f77a851..14068958c0a 100644 --- a/mobile/src/tasks/jira-mobile-url-lookup.ts +++ b/mobile/src/tasks/jira-mobile-url-lookup.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSite } from '../../../src/shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../src/shared/jira/jira-types' import { getMatchingJiraSites, isResolvedJiraIssueMatch, diff --git a/mobile/src/tasks/mobile-jira-issue-filters.ts b/mobile/src/tasks/mobile-jira-issue-filters.ts index 4e05f0f193b..1afd0d875ca 100644 --- a/mobile/src/tasks/mobile-jira-issue-filters.ts +++ b/mobile/src/tasks/mobile-jira-issue-filters.ts @@ -1,4 +1,4 @@ -import type { JiraIssueFilter } from '../../../src/shared/jira-types' +import type { JiraIssueFilter } from '../../../src/shared/jira/jira-types' export const JIRA_FILTER_LABELS: Record = { assigned: 'My Issues', diff --git a/mobile/src/tasks/mobile-jira-task-source.test.ts b/mobile/src/tasks/mobile-jira-task-source.test.ts index e1d3e174ed9..3cb0f85db1c 100644 --- a/mobile/src/tasks/mobile-jira-task-source.test.ts +++ b/mobile/src/tasks/mobile-jira-task-source.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' import type { RpcResponse } from '../transport/types' import { fetchJiraIssueDetail, fetchJiraTaskIssues } from './mobile-jira-task-source' diff --git a/mobile/src/tasks/mobile-jira-task-source.ts b/mobile/src/tasks/mobile-jira-task-source.ts index 0c566ea0849..7bf593bd874 100644 --- a/mobile/src/tasks/mobile-jira-task-source.ts +++ b/mobile/src/tasks/mobile-jira-task-source.ts @@ -1,4 +1,8 @@ -import type { JiraIssue, JiraIssueFilter, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { + JiraIssue, + JiraIssueFilter, + JiraSiteSelection +} from '../../../src/shared/jira/jira-types' import type { RpcOperationSender } from '../transport/rpc-operation-sender' import { toJiraDetailComments } from './jira-mobile-issue-read' import { diff --git a/mobile/src/tasks/mobile-task-view-options.tsx b/mobile/src/tasks/mobile-task-view-options.tsx index 58812f709bd..5edab04b38d 100644 --- a/mobile/src/tasks/mobile-task-view-options.tsx +++ b/mobile/src/tasks/mobile-task-view-options.tsx @@ -1,4 +1,4 @@ -import type { JiraIssueFilter } from '../../../src/shared/jira-types' +import type { JiraIssueFilter } from '../../../src/shared/jira/jira-types' import type { TaskProvider } from '../../../src/shared/task-providers' import type { PickerOption } from '../components/PickerModal' import { JIRA_FILTER_LABELS } from './mobile-jira-issue-filters' diff --git a/mobile/src/tasks/mobile-tasks-item-mapping.ts b/mobile/src/tasks/mobile-tasks-item-mapping.ts index caedb436a9a..eff742f15ca 100644 --- a/mobile/src/tasks/mobile-tasks-item-mapping.ts +++ b/mobile/src/tasks/mobile-tasks-item-mapping.ts @@ -9,7 +9,7 @@ import type { LinearFilter } from './mobile-tasks-view-state-types' import type { TaskItem } from './mobile-tasks-project-workspace-types' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' import type { GitHubWorkItem, GitLabTodo, diff --git a/mobile/src/tasks/mobile-tasks-project-workspace-types.ts b/mobile/src/tasks/mobile-tasks-project-workspace-types.ts index e238b832a7c..2bfa59aa7a2 100644 --- a/mobile/src/tasks/mobile-tasks-project-workspace-types.ts +++ b/mobile/src/tasks/mobile-tasks-project-workspace-types.ts @@ -7,7 +7,7 @@ import type { } from './mobile-tasks-provider-detail-types' import type { WorkspaceAgentChoice, SparsePreset } from './mobile-tasks-dependencies' import type { GitHubProjectRow } from './mobile-tasks-view-state-types' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' export type TaskItem = | { diff --git a/mobile/src/tasks/mobile-tasks-view-state-types.ts b/mobile/src/tasks/mobile-tasks-view-state-types.ts index 1b7ddcb6e7e..c4115157558 100644 --- a/mobile/src/tasks/mobile-tasks-view-state-types.ts +++ b/mobile/src/tasks/mobile-tasks-view-state-types.ts @@ -6,7 +6,7 @@ import type { GitHubProjectRef } from './mobile-tasks-dependencies' import type { GitHubProjectSortDirection } from '../../../src/shared/github/project-types' -import type { JiraIssueFilter } from '../../../src/shared/jira-types' +import type { JiraIssueFilter } from '../../../src/shared/jira/jira-types' export type GitHubTaskKind = 'issues' | 'prs' diff --git a/mobile/src/tasks/smart-source-fan-out.ts b/mobile/src/tasks/smart-source-fan-out.ts index ada262ab3c5..ca829aec613 100644 --- a/mobile/src/tasks/smart-source-fan-out.ts +++ b/mobile/src/tasks/smart-source-fan-out.ts @@ -9,7 +9,7 @@ import { import type { RpcClient } from '../transport/rpc-client' import { isGitHubWorkItemsSshRemoteRequiredError } from '../../../src/shared/work-items' import type { MrStateFilter } from './mobile-composer-source-types' -import type { JiraIssue, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraIssue, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import { searchBranches, searchGitHubItems, diff --git a/mobile/src/tasks/smart-source-search-requests.ts b/mobile/src/tasks/smart-source-search-requests.ts index 2d677b5be89..3c49fbfb1f6 100644 --- a/mobile/src/tasks/smart-source-search-requests.ts +++ b/mobile/src/tasks/smart-source-search-requests.ts @@ -3,7 +3,7 @@ import type { GitLabWorkItem } from '../../../src/shared/gitlab-types' import type { LinearIssue } from '../../../src/shared/linear/issue-types' import type { BaseRefSearchResult } from '../../../src/shared/repo-types' import type { RpcClient } from '../transport/rpc-client' -import type { JiraIssue, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraIssue, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import { getJiraIssueSearchQuery } from '../../../src/shared/new-workspace/smart-workspace-source-results' import { buildJiraIssueKeyJql, diff --git a/mobile/src/tasks/use-mobile-composer-source.ts b/mobile/src/tasks/use-mobile-composer-source.ts index 535466d8343..144a6c89693 100644 --- a/mobile/src/tasks/use-mobile-composer-source.ts +++ b/mobile/src/tasks/use-mobile-composer-source.ts @@ -6,7 +6,7 @@ import { resolveComposerManualBranchNameChange } from '../../../src/shared/compo import { resolveGitHubWorkItemIdentity } from '../../../src/shared/new-workspace/github-work-item-identity' import { getForkPushWarning } from '../../../src/shared/new-workspace/fork-push-warning' import type { RpcClient } from '../transport/rpc-client' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' import { buildGitHubLinkedWorkItem, buildGitLabLinkedWorkItem, diff --git a/mobile/src/tasks/use-mobile-tasks-jira-direct-entry.test.ts b/mobile/src/tasks/use-mobile-tasks-jira-direct-entry.test.ts index 73754df2d2d..8eff6439438 100644 --- a/mobile/src/tasks/use-mobile-tasks-jira-direct-entry.test.ts +++ b/mobile/src/tasks/use-mobile-tasks-jira-direct-entry.test.ts @@ -1,7 +1,7 @@ import { createElement } from 'react' import { act, create, type ReactTestRenderer } from 'react-test-renderer' import { afterEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../src/shared/jira-types' +import type { JiraIssue } from '../../../src/shared/jira/jira-types' import { mountFixture } from '../test-support/rpc-recording/recorder-fixture-shape' import { FakeSession } from '../transport/mobile-endpoint-supervisor-test-fakes' import type { RepoSummary } from './mobile-tasks-provider-detail-types' diff --git a/mobile/src/tasks/use-mobile-tasks-route-and-item-state.tsx b/mobile/src/tasks/use-mobile-tasks-route-and-item-state.tsx index f64fc90aa43..49d511fe286 100644 --- a/mobile/src/tasks/use-mobile-tasks-route-and-item-state.tsx +++ b/mobile/src/tasks/use-mobile-tasks-route-and-item-state.tsx @@ -49,7 +49,7 @@ import { } from './mobile-tasks-legacy-foundation' import { useMobileTasksItemState } from './use-mobile-tasks-item-state' import { useMobileJiraConnectionState } from './use-mobile-jira-connection-state' -import type { JiraIssueFilter } from '../../../src/shared/jira-types' +import type { JiraIssueFilter } from '../../../src/shared/jira/jira-types' export function useMobileTasksRouteAndItemState() { const { hostId, taskSource } = useLocalSearchParams<{ hostId: string; taskSource?: string }>() diff --git a/mobile/src/tasks/use-smart-workspace-source.ts b/mobile/src/tasks/use-smart-workspace-source.ts index 16e0564030c..43e6f0aad83 100644 --- a/mobile/src/tasks/use-smart-workspace-source.ts +++ b/mobile/src/tasks/use-smart-workspace-source.ts @@ -8,7 +8,7 @@ import { type SmartNameMode, type SmartWorkspaceSourceRow } from '../../../src/shared/new-workspace/smart-workspace-source-results' -import type { JiraIssue, JiraSite, JiraSiteSelection } from '../../../src/shared/jira-types' +import type { JiraIssue, JiraSite, JiraSiteSelection } from '../../../src/shared/jira/jira-types' import type { RpcClient } from '../transport/rpc-client' import { fanOutSmartSearch, type SmartFanOutResult } from './smart-source-fan-out' import { lookupJiraIssueByUrl } from './jira-mobile-url-lookup' diff --git a/src/cli/handlers/jira-write.test.ts b/src/cli/handlers/jira-write.test.ts index fdd71eb432d..a9306a20d29 100644 --- a/src/cli/handlers/jira-write.test.ts +++ b/src/cli/handlers/jira-write.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../../shared/jira-agent-capability' +import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../../shared/jira/jira-agent-capability' import { RuntimeClientError } from '../runtime-client' import { JIRA_WRITE_HANDLERS } from './jira-write' diff --git a/src/cli/handlers/jira-write.ts b/src/cli/handlers/jira-write.ts index 560f065eafd..37b99c9781a 100644 --- a/src/cli/handlers/jira-write.ts +++ b/src/cli/handlers/jira-write.ts @@ -5,7 +5,7 @@ import type { JiraMutationResult, JiraProject, JiraTransition -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import type { CommandHandler, HandlerContext } from '../dispatch' import { readCommandBody } from '../command-body-input' import { diff --git a/src/cli/handlers/jira.ts b/src/cli/handlers/jira.ts index 59dd6b36850..aa581806c6d 100644 --- a/src/cli/handlers/jira.ts +++ b/src/cli/handlers/jira.ts @@ -9,7 +9,7 @@ import type { JiraProject, JiraTransition, JiraUser -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { isResolvedJiraIssueMatch, parseJiraIssueUrl } from '../../shared/jira-issue-url' import type { CommandHandler, HandlerContext } from '../dispatch' import { diff --git a/src/cli/index-jira.test.ts b/src/cli/index-jira.test.ts index ba4872d042b..d4b6dc9300e 100644 --- a/src/cli/index-jira.test.ts +++ b/src/cli/index-jira.test.ts @@ -27,7 +27,7 @@ vi.mock('child_process', async () => { import { main } from './index' import { okFixture } from './test-fixtures' import { pairRuntimeEnvironment, useWorktreeAwarenessEnvironment } from './index-test-harness' -import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira-agent-capability' +import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira/jira-agent-capability' import { RuntimeClientError } from './runtime/types' const site = { diff --git a/src/cli/index-reference-jira.test.ts b/src/cli/index-reference-jira.test.ts index b60125f4a7a..9fa163b5786 100644 --- a/src/cli/index-reference-jira.test.ts +++ b/src/cli/index-reference-jira.test.ts @@ -29,7 +29,7 @@ import { main } from './index' import { pairRuntimeEnvironment, useWorktreeAwarenessEnvironment } from './index-test-harness' import { buildWorktree, okFixture } from './test-fixtures' import { RuntimeClientError } from './runtime/types' -import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira-agent-capability' +import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira/jira-agent-capability' import { WORKTREE_LINKED_ITEMS_DELTA_RUNTIME_CAPABILITY } from '../shared/workspace-attachment-capabilities' import { getWorkspaceReferenceIdentity, diff --git a/src/cli/jira-format.ts b/src/cli/jira-format.ts index 0f2f7dced82..c4d056e159d 100644 --- a/src/cli/jira-format.ts +++ b/src/cli/jira-format.ts @@ -7,7 +7,7 @@ import type { JiraIssueType, JiraTransition, JiraUser -} from '../shared/jira-types' +} from '../shared/jira/jira-types' function issueHeadline(issue: JiraIssue): string { return `${issue.key} ${issue.title}` diff --git a/src/cli/jira-target.ts b/src/cli/jira-target.ts index 3229425f747..d7ea8816f71 100644 --- a/src/cli/jira-target.ts +++ b/src/cli/jira-target.ts @@ -1,6 +1,6 @@ -import type { JiraConnectionStatus, JiraSite } from '../shared/jira-types' +import type { JiraConnectionStatus, JiraSite } from '../shared/jira/jira-types' import type { RuntimeStatus } from '../shared/runtime-types' -import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira-agent-capability' +import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from '../shared/jira/jira-agent-capability' import { getMatchingJiraSites, JIRA_ISSUE_KEY_PATTERN, diff --git a/src/cli/reference-input.ts b/src/cli/reference-input.ts index c21f9ff5d97..66b16f44210 100644 --- a/src/cli/reference-input.ts +++ b/src/cli/reference-input.ts @@ -1,6 +1,6 @@ import type { WorkspaceAttachment } from '../shared/worktree/types' import type { RuntimeStatus } from '../shared/runtime-types' -import type { JiraIssue } from '../shared/jira-types' +import type { JiraIssue } from '../shared/jira/jira-types' import { isResolvedJiraIssueMatch, JIRA_ISSUE_KEY_PATTERN, diff --git a/src/main/ipc/jira/ipc-params.ts b/src/main/ipc/jira/ipc-params.ts index 5706e9767e0..be6ec2230fd 100644 --- a/src/main/ipc/jira/ipc-params.ts +++ b/src/main/ipc/jira/ipc-params.ts @@ -1,4 +1,4 @@ -import type { JiraIssueUpdate, JiraSiteSelection } from '../../../shared/jira-types' +import type { JiraIssueUpdate, JiraSiteSelection } from '../../../shared/jira/jira-types' export function normalizeJiraSiteId(value: unknown): string | undefined { return typeof value === 'string' && value.trim() ? value.trim() : undefined diff --git a/src/main/ipc/jira/project-metadata.ts b/src/main/ipc/jira/project-metadata.ts index 78d3477de05..fc4d5aa19c0 100644 --- a/src/main/ipc/jira/project-metadata.ts +++ b/src/main/ipc/jira/project-metadata.ts @@ -5,7 +5,7 @@ import { listPriorities } from '../../jira/jira-issue-create-metadata' import { listProjects } from '../../jira/jira-project-queries' -import type { JiraSiteSelection } from '../../../shared/jira-types' +import type { JiraSiteSelection } from '../../../shared/jira/jira-types' export function registerJiraProjectMetadataHandlers( normalizeSiteId: (value: unknown) => string | undefined diff --git a/src/main/ipc/jira/register-handlers.ts b/src/main/ipc/jira/register-handlers.ts index 60ce92d66cd..9c42ec566d3 100644 --- a/src/main/ipc/jira/register-handlers.ts +++ b/src/main/ipc/jira/register-handlers.ts @@ -26,7 +26,7 @@ import type { JiraIssueListFilters, JiraIssueUpdate, JiraSiteSelection -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' const VALID_FILTERS = new Set(['assigned', 'reported', 'all', 'done']) const issueSummaryRequests = new JiraCancellableRequests() diff --git a/src/main/ipc/ui.ts b/src/main/ipc/ui.ts index 93c2150e71e..5d5dbe6b4db 100644 --- a/src/main/ipc/ui.ts +++ b/src/main/ipc/ui.ts @@ -3,7 +3,7 @@ import { JiraQuickFilterStateParam } from '../../shared/rpc-contract/jira-quick- import { normalizeJiraSavedFilterState, mutateJiraSavedFilterState -} from '../../shared/jira-saved-filters' +} from '../../shared/jira/jira-saved-filters' import { JiraSavedFilterMutationParam } from '../../shared/rpc-contract/jira-saved-filter-params' import { BrowserWindow, ipcMain, webContents, type WebContents } from 'electron' import type { Store } from '../persistence' diff --git a/src/main/jira/attachments/content-url.ts b/src/main/jira/attachments/content-url.ts index 1840f7ab588..2c38420792c 100644 --- a/src/main/jira/attachments/content-url.ts +++ b/src/main/jira/attachments/content-url.ts @@ -1,4 +1,4 @@ -import type { JiraSite } from '../../../shared/jira-types' +import type { JiraSite } from '../../../shared/jira/jira-types' import { apiBasePath } from '../authenticated-request' import { isJiraGatewayBaseUrl } from '../gateway-base-url' import type { AttachmentMeta } from './meta' diff --git a/src/main/jira/authenticated-request.ts b/src/main/jira/authenticated-request.ts index b1f8412bdab..76a87153d6c 100644 --- a/src/main/jira/authenticated-request.ts +++ b/src/main/jira/authenticated-request.ts @@ -1,7 +1,7 @@ import { ensureElectronProxyFromEnvironment } from '../network/proxy-settings' import { getMainHttpClient } from '../network/http-client' import { withSpan } from '../observability/tracer' -import type { JiraAuthType, JiraSite } from '../../shared/jira-types' +import type { JiraAuthType, JiraSite } from '../../shared/jira/jira-types' import { isJiraGatewayBaseUrl } from './gateway-base-url' import { JiraApiError, toJiraApiError } from './jira-api-error' diff --git a/src/main/jira/client.ts b/src/main/jira/client.ts index f829bb0ef9b..8cccf9ee369 100644 --- a/src/main/jira/client.ts +++ b/src/main/jira/client.ts @@ -6,7 +6,7 @@ import type { JiraSite, JiraSiteSelection, JiraViewer -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { clearAttachmentImagesForSite } from './attachments/image-cache' import { acquire, release } from './request-queue' import { diff --git a/src/main/jira/credential-verification.ts b/src/main/jira/credential-verification.ts index 973a2e07dea..3395fc85ebb 100644 --- a/src/main/jira/credential-verification.ts +++ b/src/main/jira/credential-verification.ts @@ -1,4 +1,4 @@ -import type { JiraAuthType, JiraViewer } from '../../shared/jira-types' +import type { JiraAuthType, JiraViewer } from '../../shared/jira/jira-types' import { JiraApiError, requestWithCredentials } from './authenticated-request' import { resolveJiraGatewayBaseUrl } from './cloud-gateway' import { toViewer } from './site-identity' diff --git a/src/main/jira/jira-agile-fields.test.ts b/src/main/jira/jira-agile-fields.test.ts index 1cd92e86eef..bf70787f10d 100644 --- a/src/main/jira/jira-agile-fields.test.ts +++ b/src/main/jira/jira-agile-fields.test.ts @@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { JiraClientForSite } from './authenticated-request' import { getAgileFieldIds, pickAgileFieldIds } from './jira-agile-fields' import { mapJiraIssue, mapSprint } from './jira-issue-mapping' -import type { JiraSite } from '../../shared/jira-types' +import type { JiraSite } from '../../shared/jira/jira-types' const { jiraRequestMock, acquireMock, releaseMock } = vi.hoisted(() => ({ jiraRequestMock: vi.fn(), diff --git a/src/main/jira/jira-issue-comments.ts b/src/main/jira/jira-issue-comments.ts index bfec81a2805..29ab9a6cd89 100644 --- a/src/main/jira/jira-issue-comments.ts +++ b/src/main/jira/jira-issue-comments.ts @@ -1,5 +1,5 @@ import { requireStrictJiraSite } from './jira-read-failure' -import type { JiraComment } from '../../shared/jira-types' +import type { JiraComment } from '../../shared/jira/jira-types' import { JIRA_IMAGE_MAX_BYTES, JIRA_IMAGE_MAX_REFERENCES, diff --git a/src/main/jira/jira-issue-create-metadata.ts b/src/main/jira/jira-issue-create-metadata.ts index 6d9dd751c3d..bdc7f0dccdc 100644 --- a/src/main/jira/jira-issue-create-metadata.ts +++ b/src/main/jira/jira-issue-create-metadata.ts @@ -4,7 +4,7 @@ import type { JiraIssueType, JiraPriority, JiraUser -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { acquire, release } from './request-queue' import { apiBasePath, jiraRequest } from './authenticated-request' import { clearToken, getClients, isAuthError } from './client' diff --git a/src/main/jira/jira-issue-mapping.ts b/src/main/jira/jira-issue-mapping.ts index 043f8602bd3..a83c9a21413 100644 --- a/src/main/jira/jira-issue-mapping.ts +++ b/src/main/jira/jira-issue-mapping.ts @@ -8,7 +8,7 @@ import type { JiraSite, JiraStatus, JiraUser -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { adfToMarkdownText, textToAdf, type AdfToMarkdownOptions } from './adf-markdown' import { asRecord, diff --git a/src/main/jira/jira-issue-mutations.ts b/src/main/jira/jira-issue-mutations.ts index 923436110cf..62750254e1d 100644 --- a/src/main/jira/jira-issue-mutations.ts +++ b/src/main/jira/jira-issue-mutations.ts @@ -4,7 +4,7 @@ import type { JiraIssueUpdate, JiraMutationResult, JiraSite -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { acquire, release } from './request-queue' import { apiBasePath, jiraRequest } from './authenticated-request' import { clearToken, getClients, isAuthError } from './client' diff --git a/src/main/jira/jira-issue-read.ts b/src/main/jira/jira-issue-read.ts index 5851d25aa24..0192bbc02e8 100644 --- a/src/main/jira/jira-issue-read.ts +++ b/src/main/jira/jira-issue-read.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSiteSelection } from '../../shared/jira-types' +import type { JiraIssue, JiraSiteSelection } from '../../shared/jira/jira-types' import type { JiraMediaFormat } from '../../shared/jira/jira-attachment-image' import { JiraSummaryLookupError } from '../../shared/jira-summary-lookup' import { acquire, release } from './request-queue' diff --git a/src/main/jira/jira-issue-search.ts b/src/main/jira/jira-issue-search.ts index 85e4df5ad6b..b4d1452d230 100644 --- a/src/main/jira/jira-issue-search.ts +++ b/src/main/jira/jira-issue-search.ts @@ -4,7 +4,7 @@ import type { JiraIssueFilter, JiraIssueListFilters, JiraSiteSelection -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import { buildJiraPresetJql } from '../../shared/jira/jira-preset-jql' import { acquire, release } from './request-queue' import { apiBasePath, jiraRequest, type JiraClientForSite } from './authenticated-request' diff --git a/src/main/jira/jira-preset-filters.test.ts b/src/main/jira/jira-preset-filters.test.ts index fb55e0056ad..0c017e8ed06 100644 --- a/src/main/jira/jira-preset-filters.test.ts +++ b/src/main/jira/jira-preset-filters.test.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssueFilter } from '../../shared/jira-types' +import type { JiraIssueFilter } from '../../shared/jira/jira-types' import type { JiraClientForSite } from './authenticated-request' const { getClients, jiraRequest, clearToken } = vi.hoisted(() => ({ diff --git a/src/main/jira/jira-project-queries.ts b/src/main/jira/jira-project-queries.ts index c5ed13bef4e..e4890e76337 100644 --- a/src/main/jira/jira-project-queries.ts +++ b/src/main/jira/jira-project-queries.ts @@ -1,4 +1,4 @@ -import type { JiraProject, JiraSiteSelection } from '../../shared/jira-types' +import type { JiraProject, JiraSiteSelection } from '../../shared/jira/jira-types' import { acquire, release } from './request-queue' import { apiBasePath, jiraRequest, type JiraClientForSite } from './authenticated-request' import { clearToken, getClients, isAuthError } from './client' diff --git a/src/main/jira/jira-read-failure.ts b/src/main/jira/jira-read-failure.ts index dd4c7ae953b..29341a49e83 100644 --- a/src/main/jira/jira-read-failure.ts +++ b/src/main/jira/jira-read-failure.ts @@ -1,5 +1,5 @@ import type { JiraClientForSite } from './authenticated-request' -import type { JiraSiteSelection } from '../../shared/jira-types' +import type { JiraSiteSelection } from '../../shared/jira/jira-types' export type JiraIssueSearchFailure = { error: unknown diff --git a/src/main/jira/jira-transition-queries.ts b/src/main/jira/jira-transition-queries.ts index cdc0c114ec1..e8b34d2b077 100644 --- a/src/main/jira/jira-transition-queries.ts +++ b/src/main/jira/jira-transition-queries.ts @@ -1,5 +1,5 @@ import { requireStrictJiraSite } from './jira-read-failure' -import type { JiraProjectStatusOrder, JiraTransition } from '../../shared/jira-types' +import type { JiraProjectStatusOrder, JiraTransition } from '../../shared/jira/jira-types' import { acquire, release } from './request-queue' import { apiBasePath, JiraApiError, jiraRequest } from './authenticated-request' import { clearToken, getClients, isAuthError } from './client' diff --git a/src/main/jira/site-credential-store.ts b/src/main/jira/site-credential-store.ts index 4fbc2a833bb..697e95c56e1 100644 --- a/src/main/jira/site-credential-store.ts +++ b/src/main/jira/site-credential-store.ts @@ -4,7 +4,7 @@ import { join } from 'node:path' import { writeEncryptedCredential } from '../integration-credential-file' import { readCredentialFileProtection } from '../credential-file-protection' import type { SecretAtRestProtection } from '../../shared/secret-at-rest-protection' -import type { JiraSite, JiraSiteSelection } from '../../shared/jira-types' +import type { JiraSite, JiraSiteSelection } from '../../shared/jira/jira-types' import { createIntegrationStateFileCache } from '../integration-state-file-cache' import { isJiraGatewayBaseUrl } from './gateway-base-url' import { createIntegrationTokenFileCache } from '../integration-token-file-cache' diff --git a/src/main/jira/site-identity.ts b/src/main/jira/site-identity.ts index 5d9b00887ff..565dba836de 100644 --- a/src/main/jira/site-identity.ts +++ b/src/main/jira/site-identity.ts @@ -1,5 +1,5 @@ import { createHash } from 'node:crypto' -import type { JiraSite, JiraViewer } from '../../shared/jira-types' +import type { JiraSite, JiraViewer } from '../../shared/jira/jira-types' export function normalizeJiraSiteUrl(siteUrl: string): string { const trimmed = siteUrl.trim() diff --git a/src/main/persistence-jira-saved-filters.test.ts b/src/main/persistence-jira-saved-filters.test.ts index 3271c1f4f06..1dd529545ef 100644 --- a/src/main/persistence-jira-saved-filters.test.ts +++ b/src/main/persistence-jira-saved-filters.test.ts @@ -3,7 +3,7 @@ import { join } from 'node:path' import { tmpdir } from 'node:os' import { afterEach, beforeEach, expect, it, vi } from 'vitest' import { closeTestStores, createStore, testState } from './persistence-test-harness' -import { normalizeJiraSavedFilterState } from '../shared/jira-saved-filters' +import { normalizeJiraSavedFilterState } from '../shared/jira/jira-saved-filters' vi.mock('electron', () => ({ app: { getPath: () => testState.dir } })) vi.mock('./telemetry/client', () => ({ track: vi.fn() })) beforeEach(() => { diff --git a/src/main/persistence/tracking-repos/repo-hydration.ts b/src/main/persistence/tracking-repos/repo-hydration.ts index 110c47ec5f1..315cf954cbb 100644 --- a/src/main/persistence/tracking-repos/repo-hydration.ts +++ b/src/main/persistence/tracking-repos/repo-hydration.ts @@ -4,7 +4,7 @@ import { getDefaultRepoHookSettings } from '../../../shared/constants' import { isFolderRepo } from '../../../shared/repo-kind' import { sanitizeRepoIcon } from '../../../shared/repo-icon' import { normalizeGhAccountBinding } from '../../../shared/github/account-binding' -import { normalizeJiraProjectReference } from '../../../shared/jira-project-reference' +import { normalizeJiraProjectReference } from '../../../shared/jira/jira-project-reference' import { normalizeRepoSourceControlAiOverrides } from '../../../shared/source-control-ai' import { sanitizeForkSyncMode, diff --git a/src/main/persistence/tracking-repos/repo-sanitization.ts b/src/main/persistence/tracking-repos/repo-sanitization.ts index 188ada29764..735d9c8657a 100644 --- a/src/main/persistence/tracking-repos/repo-sanitization.ts +++ b/src/main/persistence/tracking-repos/repo-sanitization.ts @@ -4,7 +4,7 @@ import type { GitRemoteIdentity } from '../../../shared/git-remote-identity' import { normalizeRepoBadgeColor } from '../../../shared/repo-badge-color' import { sanitizeRepoIcon } from '../../../shared/repo-icon' import { normalizeGhAccountBinding } from '../../../shared/github/account-binding' -import { normalizeJiraProjectReference } from '../../../shared/jira-project-reference' +import { normalizeJiraProjectReference } from '../../../shared/jira/jira-project-reference' import type { GhAccountBinding } from '../../../shared/github/account-binding' import { normalizeCustomWorktreeVisibilitySources, diff --git a/src/main/runtime/rpc/methods/client-ui.ts b/src/main/runtime/rpc/methods/client-ui.ts index 8cbc3bce1ab..e054b151e11 100644 --- a/src/main/runtime/rpc/methods/client-ui.ts +++ b/src/main/runtime/rpc/methods/client-ui.ts @@ -3,7 +3,7 @@ import { JiraQuickFilterStateParam } from '../../../../shared/rpc-contract/jira- import { normalizeJiraSavedFilterState, mutateJiraSavedFilterState -} from '../../../../shared/jira-saved-filters' +} from '../../../../shared/jira/jira-saved-filters' import { JiraSavedFilterMutationParam } from '../../../../shared/rpc-contract/jira-saved-filter-params' import { omitPairingLocalUiFields, diff --git a/src/main/runtime/runtime-jira-commands.ts b/src/main/runtime/runtime-jira-commands.ts index 18e824b18ef..aa9132bcb91 100644 --- a/src/main/runtime/runtime-jira-commands.ts +++ b/src/main/runtime/runtime-jira-commands.ts @@ -14,7 +14,7 @@ import type { JiraIssueListFilters, JiraIssueUpdate, JiraSiteSelection -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' import type { JiraMediaFormat } from '../../shared/jira/jira-attachment-image' import { connect, disconnect, getStatus, selectSite, testConnection } from '../jira/client' import { listFavouriteFilters } from '../jira/favourite-filters' diff --git a/src/preload/api/jira-api.ts b/src/preload/api/jira-api.ts index ec5751264ac..ce3f1529d11 100644 --- a/src/preload/api/jira-api.ts +++ b/src/preload/api/jira-api.ts @@ -22,7 +22,7 @@ import type { JiraTransition, JiraUser, JiraViewer -} from '../../shared/jira-types' +} from '../../shared/jira/jira-types' export type JiraApi = { connect: (args: { diff --git a/src/preload/api/jira-bridge.ts b/src/preload/api/jira-bridge.ts index 1d6b1a55c57..f1953137c6d 100644 --- a/src/preload/api/jira-bridge.ts +++ b/src/preload/api/jira-bridge.ts @@ -4,7 +4,7 @@ import type { JiraIssueSummaryGenerationCancellation } from '../../shared/jira/jira-issue-summary-generation' import { ipcRenderer } from 'electron' -import type { JiraIssueListFilters, JiraProjectStatusOrder } from '../../shared/jira-types' +import type { JiraIssueListFilters, JiraProjectStatusOrder } from '../../shared/jira/jira-types' import type { PreloadApi } from '../api-types' export const jiraApi = { diff --git a/src/preload/api/ui-command-event-api.ts b/src/preload/api/ui-command-event-api.ts index 1f634f550b5..2ebe9072fba 100644 --- a/src/preload/api/ui-command-event-api.ts +++ b/src/preload/api/ui-command-event-api.ts @@ -3,7 +3,10 @@ import type { RuntimeFileOpenPosition } from '../../shared/runtime-file-contracts' import type { JiraQuickFilterState } from '../../shared/jira-quick-filters' -import type { JiraSavedFilterState, JiraSavedFilterMutation } from '../../shared/jira-saved-filters' +import type { + JiraSavedFilterState, + JiraSavedFilterMutation +} from '../../shared/jira/jira-saved-filters' import type { MarkdownDocument } from '../../shared/filesystem-entry-types' import type { PersistedUIState } from '../../shared/persisted-ui-state-types' import type { TuiAgent } from '../../shared/tui-agent' diff --git a/src/renderer/src/components/JiraIssueRowCopyMenu.tsx b/src/renderer/src/components/JiraIssueRowCopyMenu.tsx index 8ded3b2aeec..bfc63c16741 100644 --- a/src/renderer/src/components/JiraIssueRowCopyMenu.tsx +++ b/src/renderer/src/components/JiraIssueRowCopyMenu.tsx @@ -17,7 +17,7 @@ import { } from '@/components/ui/dropdown-menu' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { translate } from '@/i18n/i18n' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { copyJiraTextToClipboard } from './jira-issue-workspace-actions' import { buildJiraIssuePrompt } from './jira-prompt-templates' import { Popover, PopoverAnchor } from '@/components/ui/popover' diff --git a/src/renderer/src/components/JiraIssueWorkspace.assignee-source.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.assignee-source.test.tsx index 2581d1848ee..da723042383 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.assignee-source.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.assignee-source.test.tsx @@ -7,7 +7,7 @@ import type { JiraIssue, JiraMutationResult, JiraUser -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import { getTaskSourceCacheScope, type TaskSourceContext diff --git a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-reopen.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-reopen.test.tsx index b793fef4e22..116b242aa1b 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-reopen.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-reopen.test.tsx @@ -16,7 +16,7 @@ import { } from './__mocks__/jira-issue-workspace-edit-fixture' import { act, fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' describe('JiraIssueWorkspace reopened issue edits', () => { diff --git a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-rollback.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-rollback.test.tsx index 4ac0a9b7009..ed739afce67 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-rollback.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit-rollback.test.tsx @@ -12,7 +12,7 @@ import { } from './__mocks__/jira-issue-workspace-edit-fixture' import { act, fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' describe('JiraIssueWorkspace rollback baselines', () => { it.each([ diff --git a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit.test.tsx index 6f44194961f..a9897f86eec 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.optimistic-edit.test.tsx @@ -16,7 +16,7 @@ import { } from './__mocks__/jira-issue-workspace-edit-fixture' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraMutationResult } from '../../../shared/jira-types' +import type { JiraIssue, JiraMutationResult } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { getDefaultSettings } from '../../../shared/constants' import { getProviderRuntimeContextKey } from '@/lib/provider-runtime-context' diff --git a/src/renderer/src/components/JiraIssueWorkspace.status-queue.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.status-queue.test.tsx index 376de9b28c8..b2737c89201 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.status-queue.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.status-queue.test.tsx @@ -11,7 +11,7 @@ import { } from './__mocks__/jira-issue-workspace-edit-fixture' import { act, fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' -import type { JiraTransition } from '../../../shared/jira-types' +import type { JiraTransition } from '../../../shared/jira/jira-types' describe('JiraIssueWorkspace queued status metadata', () => { it('reloads transitions on a reopened issue when its earlier status save completes', async () => { diff --git a/src/renderer/src/components/JiraIssueWorkspace.transition-source.test.tsx b/src/renderer/src/components/JiraIssueWorkspace.transition-source.test.tsx index 19fa03954a4..aeb8b2d6cd6 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.transition-source.test.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.transition-source.test.tsx @@ -2,7 +2,11 @@ import type { ComponentProps, ReactNode } from 'react' import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraConnectionStatus, JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { + JiraConnectionStatus, + JiraIssue, + JiraTransition +} from '../../../shared/jira/jira-types' import { taskSourceRuntimeTarget } from '@/lib/task-source-runtime-target' import type { AppState } from '@/store/types' import type { TaskSourceContext } from '../../../shared/task-source-context' diff --git a/src/renderer/src/components/JiraIssueWorkspace.tsx b/src/renderer/src/components/JiraIssueWorkspace.tsx index 00ff80f3cfc..7d9c519cb96 100644 --- a/src/renderer/src/components/JiraIssueWorkspace.tsx +++ b/src/renderer/src/components/JiraIssueWorkspace.tsx @@ -5,7 +5,7 @@ import { Sheet, SheetContent, SheetDescription, SheetTitle } from '@/components/ import { hasBoundedCommentBodyText } from '@/lib/comment-body-submit-state' import { useAppStore } from '@/store' import { jiraGetIssueForTarget, jiraUpdateIssueForTarget } from '@/runtime/runtime-jira-client' -import type { JiraIssue, JiraMutationResult } from '../../../shared/jira-types' +import type { JiraIssue, JiraMutationResult } from '../../../shared/jira/jira-types' import { getTaskSourceCacheScope, type TaskSourceContext diff --git a/src/renderer/src/components/JiraLinkedWorkspaceAction.tsx b/src/renderer/src/components/JiraLinkedWorkspaceAction.tsx index f8b06574774..e9c96288e8e 100644 --- a/src/renderer/src/components/JiraLinkedWorkspaceAction.tsx +++ b/src/renderer/src/components/JiraLinkedWorkspaceAction.tsx @@ -8,7 +8,7 @@ import { DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { translate } from '@/i18n/i18n' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import type { Worktree } from '../../../shared/worktree/types' export function JiraLinkedWorkspaceAction({ diff --git a/src/renderer/src/components/JiraPromptTemplatePopover.tsx b/src/renderer/src/components/JiraPromptTemplatePopover.tsx index 4d5a79358c9..53e1236e637 100644 --- a/src/renderer/src/components/JiraPromptTemplatePopover.tsx +++ b/src/renderer/src/components/JiraPromptTemplatePopover.tsx @@ -11,7 +11,7 @@ import { } from '@/components/ui/select' import { Textarea } from '@/components/ui/textarea' import { translate } from '@/i18n/i18n' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { copyJiraTextToClipboard } from './jira-issue-workspace-actions' import { getJiraPromptTemplates, diff --git a/src/renderer/src/components/TaskPageJiraSavedFilters.tsx b/src/renderer/src/components/TaskPageJiraSavedFilters.tsx index a70d4c282cc..3f2685bda83 100644 --- a/src/renderer/src/components/TaskPageJiraSavedFilters.tsx +++ b/src/renderer/src/components/TaskPageJiraSavedFilters.tsx @@ -6,7 +6,7 @@ import { MAX_JIRA_SAVED_FILTER_NAME_LENGTH, MAX_JIRA_SAVED_FILTERS, type JiraSavedFilter -} from '../../../shared/jira-saved-filters' +} from '../../../shared/jira/jira-saved-filters' import { translate } from '@/i18n/i18n' import { Command, diff --git a/src/renderer/src/components/TaskPageJiraStatusFilters.tsx b/src/renderer/src/components/TaskPageJiraStatusFilters.tsx index 18f7adafb1d..48859827cce 100644 --- a/src/renderer/src/components/TaskPageJiraStatusFilters.tsx +++ b/src/renderer/src/components/TaskPageJiraStatusFilters.tsx @@ -7,7 +7,7 @@ import { getJiraStatusCatalogScopeKey, includeSelectedJiraStatuses } from './task-page-jira-status-catalog' -import { restrictJiraQueryToProject } from '../../../shared/jira-project-reference' +import { restrictJiraQueryToProject } from '../../../shared/jira/jira-project-reference' import type { TaskPageComposerActionsModel } from './use-task-page-composer-actions' export function TaskPageJiraStatusFilters({ diff --git a/src/renderer/src/components/__mocks__/jira-issue-workspace-edit-fixture.tsx b/src/renderer/src/components/__mocks__/jira-issue-workspace-edit-fixture.tsx index a4ca282ba3e..57da48ac983 100644 --- a/src/renderer/src/components/__mocks__/jira-issue-workspace-edit-fixture.tsx +++ b/src/renderer/src/components/__mocks__/jira-issue-workspace-edit-fixture.tsx @@ -1,7 +1,7 @@ import { useLayoutEffect, useState } from 'react' import { act, cleanup, fireEvent, screen } from '@testing-library/react' import { afterEach, beforeEach, vi, type Mock } from 'vitest' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { GlobalSettings } from '../../../../shared/global-settings-types' import { getTaskSourceCacheScope, diff --git a/src/renderer/src/components/__mocks__/task-page-jira-favourite-fixture.ts b/src/renderer/src/components/__mocks__/task-page-jira-favourite-fixture.ts index 5bc87aa7df4..ee36f8534ea 100644 --- a/src/renderer/src/components/__mocks__/task-page-jira-favourite-fixture.ts +++ b/src/renderer/src/components/__mocks__/task-page-jira-favourite-fixture.ts @@ -1,8 +1,8 @@ import { useMemo, useRef } from 'react' import { vi, type Mock } from 'vitest' import type { ExecutionHostId } from '../../../../shared/execution-host' -import type { JiraIssue } from '../../../../shared/jira-types' -import type { JiraSavedFilterState } from '../../../../shared/jira-saved-filters' +import type { JiraIssue } from '../../../../shared/jira/jira-types' +import type { JiraSavedFilterState } from '../../../../shared/jira/jira-saved-filters' import type { TaskPageLinearViewStateModel } from '../task-page/linear/use-task-page-linear-view-state' import type { TaskPageLinearCollectionEffectsModel } from '../task-page/linear/use-task-page-linear-collection-effects' import { useTaskPageJiraListState } from '../use-task-page-jira-list-state' diff --git a/src/renderer/src/components/cmd-j/task-search-results.ts b/src/renderer/src/components/cmd-j/task-search-results.ts index addf15e708f..a950ca0bc5b 100644 --- a/src/renderer/src/components/cmd-j/task-search-results.ts +++ b/src/renderer/src/components/cmd-j/task-search-results.ts @@ -1,6 +1,6 @@ import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import { getTaskSourceCacheScope, diff --git a/src/renderer/src/components/cmd-j/task-search.test-fixture.ts b/src/renderer/src/components/cmd-j/task-search.test-fixture.ts index 7d00ebce4f6..2982ce018c8 100644 --- a/src/renderer/src/components/cmd-j/task-search.test-fixture.ts +++ b/src/renderer/src/components/cmd-j/task-search.test-fixture.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' import { makeCmdJTaskSearchResult } from './task-search-results' diff --git a/src/renderer/src/components/jira-connect-scoped-token.test.tsx b/src/renderer/src/components/jira-connect-scoped-token.test.tsx index e5d5234bc2e..1ae25c4caa1 100644 --- a/src/renderer/src/components/jira-connect-scoped-token.test.tsx +++ b/src/renderer/src/components/jira-connect-scoped-token.test.tsx @@ -1,7 +1,7 @@ // @vitest-environment happy-dom import { fireEvent, render, screen, cleanup, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraConnectionStatus } from '../../../shared/jira-types' +import type { JiraConnectionStatus } from '../../../shared/jira/jira-types' import { JiraConnectDialog } from './jira-connect-dialog' import { getEnvironmentRuntimeContextKey } from '@/lib/provider-runtime-context' diff --git a/src/renderer/src/components/jira-issue-assignee-control.test.tsx b/src/renderer/src/components/jira-issue-assignee-control.test.tsx index 634e4bf8141..63b6fbbac90 100644 --- a/src/renderer/src/components/jira-issue-assignee-control.test.tsx +++ b/src/renderer/src/components/jira-issue-assignee-control.test.tsx @@ -3,7 +3,7 @@ import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-libra import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { taskSourceRuntimeTarget } from '@/lib/task-source-runtime-target' -import type { JiraConnectionStatus, JiraIssue, JiraUser } from '../../../shared/jira-types' +import type { JiraConnectionStatus, JiraIssue, JiraUser } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { AppState } from '@/store/types' import { JiraIssueMetadataBar } from './jira-issue-workspace-chrome' diff --git a/src/renderer/src/components/jira-issue-assignee-control.tsx b/src/renderer/src/components/jira-issue-assignee-control.tsx index b6e2de9738a..5461322ec8a 100644 --- a/src/renderer/src/components/jira-issue-assignee-control.tsx +++ b/src/renderer/src/components/jira-issue-assignee-control.tsx @@ -12,7 +12,7 @@ import { type TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' -import type { JiraIssue, JiraIssueUpdate, JiraUser } from '../../../shared/jira-types' +import type { JiraIssue, JiraIssueUpdate, JiraUser } from '../../../shared/jira/jira-types' export function JiraIssueAssigneeControl({ issue, diff --git a/src/renderer/src/components/jira-issue-mutation-queue.ts b/src/renderer/src/components/jira-issue-mutation-queue.ts index c58e3a4e834..69f467e686d 100644 --- a/src/renderer/src/components/jira-issue-mutation-queue.ts +++ b/src/renderer/src/components/jira-issue-mutation-queue.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraMutationResult } from '../../../shared/jira-types' +import type { JiraIssue, JiraMutationResult } from '../../../shared/jira/jira-types' import type { GlobalSettings } from '../../../shared/global-settings-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import { getJiraReadIdentity } from '@/store/slices/jira-read-coordination' diff --git a/src/renderer/src/components/jira-issue-sorter.ts b/src/renderer/src/components/jira-issue-sorter.ts index 0a1449bb6cc..1d1deb3a379 100644 --- a/src/renderer/src/components/jira-issue-sorter.ts +++ b/src/renderer/src/components/jira-issue-sorter.ts @@ -1,5 +1,5 @@ import type { JiraListColumnId } from './jira-list-columns' -import type { JiraIssue, JiraPriority } from '../../../shared/jira-types' +import type { JiraIssue, JiraPriority } from '../../../shared/jira/jira-types' import { compareNumericLocaleText } from '../../../shared/locale-text-collators' export type JiraIssueSortColumn = JiraListColumnId diff --git a/src/renderer/src/components/jira-issue-transition-control.test.tsx b/src/renderer/src/components/jira-issue-transition-control.test.tsx index c838fb8982f..c562befbc39 100644 --- a/src/renderer/src/components/jira-issue-transition-control.test.tsx +++ b/src/renderer/src/components/jira-issue-transition-control.test.tsx @@ -2,7 +2,7 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, describe, expect, it, vi } from 'vitest' import { JiraIssueTransitionControl } from './jira-issue-transition-control' -import type { JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' vi.mock('@/i18n/i18n', () => ({ translate: (_key: string, fallback: string, values?: Record) => diff --git a/src/renderer/src/components/jira-issue-transition-control.tsx b/src/renderer/src/components/jira-issue-transition-control.tsx index eef32ee905b..a953fb74b56 100644 --- a/src/renderer/src/components/jira-issue-transition-control.tsx +++ b/src/renderer/src/components/jira-issue-transition-control.tsx @@ -3,14 +3,14 @@ import { ChevronDown, CircleAlert, ExternalLink, Loader2 } from 'lucide-react' import { Button } from '@/components/ui/button' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { translate } from '@/i18n/i18n' -import { classifyTransitionRequirements } from '../../../shared/jira-transition-fields' +import { classifyTransitionRequirements } from '../../../shared/jira/jira-transition-fields' import { JiraTransitionFieldsForm } from './jira-transition-fields-form' import type { JiraIssue, JiraIssueUpdate, JiraMutationResult, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' type Props = { issue: JiraIssue diff --git a/src/renderer/src/components/jira-issue-workspace-actions.ts b/src/renderer/src/components/jira-issue-workspace-actions.ts index 8701627fe5d..2e3287bb45a 100644 --- a/src/renderer/src/components/jira-issue-workspace-actions.ts +++ b/src/renderer/src/components/jira-issue-workspace-actions.ts @@ -2,7 +2,11 @@ import { useCallback, useMemo } from 'react' import { Clipboard, ExternalLink, GitBranch } from 'lucide-react' import { toast } from 'sonner' import { translate } from '@/i18n/i18n' -import type { JiraIssue, JiraIssueUpdate, JiraMutationResult } from '../../../shared/jira-types' +import type { + JiraIssue, + JiraIssueUpdate, + JiraMutationResult +} from '../../../shared/jira/jira-types' import { applyJiraIssueKeyCasing } from '../../../shared/workspace-name' import type { WorkspaceSeedNameOptions } from '../../../shared/workspace-name' import { getJiraIssueKeyCasingSeedOptions } from '@/lib/jira-issue-key-casing' diff --git a/src/renderer/src/components/jira-issue-workspace-chrome.tsx b/src/renderer/src/components/jira-issue-workspace-chrome.tsx index 05ca0a47727..c36d0fd96be 100644 --- a/src/renderer/src/components/jira-issue-workspace-chrome.tsx +++ b/src/renderer/src/components/jira-issue-workspace-chrome.tsx @@ -14,7 +14,7 @@ import type { JiraMutationResult, JiraPriority, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' /** Header row for an open Jira issue: key, summary, and workspace actions. */ export function JiraIssueWorkspaceHeader({ diff --git a/src/renderer/src/components/jira-issue-workspace-content.tsx b/src/renderer/src/components/jira-issue-workspace-content.tsx index 084ad3c7384..a400a873fb6 100644 --- a/src/renderer/src/components/jira-issue-workspace-content.tsx +++ b/src/renderer/src/components/jira-issue-workspace-content.tsx @@ -8,7 +8,7 @@ import { Input } from '@/components/ui/input' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { translate } from '@/i18n/i18n' import { formatUiRelativeTimeFromDate } from '@/i18n/relative-time-format' -import type { JiraComment, JiraIssue } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue } from '../../../shared/jira/jira-types' export type JiraIssueWorkspaceAction = { label: string diff --git a/src/renderer/src/components/jira-issue-workspace-hydration.ts b/src/renderer/src/components/jira-issue-workspace-hydration.ts index caabeca4a31..697667a7f6d 100644 --- a/src/renderer/src/components/jira-issue-workspace-hydration.ts +++ b/src/renderer/src/components/jira-issue-workspace-hydration.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' const EDITABLE_JIRA_ISSUE_FIELDS = ['title', 'labels', 'status', 'priority', 'assignee'] as const export type EditableJiraIssueField = (typeof EDITABLE_JIRA_ISSUE_FIELDS)[number] diff --git a/src/renderer/src/components/jira-issue-workspace-image-owner.test.tsx b/src/renderer/src/components/jira-issue-workspace-image-owner.test.tsx index 58fa6cdf613..67dca8d9d12 100644 --- a/src/renderer/src/components/jira-issue-workspace-image-owner.test.tsx +++ b/src/renderer/src/components/jira-issue-workspace-image-owner.test.tsx @@ -3,7 +3,7 @@ import { act, type ComponentProps, type ReactNode } from 'react' import { createRoot, type Root } from 'react-dom/client' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import type { AppState } from '../store/types' diff --git a/src/renderer/src/components/jira-issue-workspace-request-lifetime.test.tsx b/src/renderer/src/components/jira-issue-workspace-request-lifetime.test.tsx index 814ec699e33..3fdb1aea828 100644 --- a/src/renderer/src/components/jira-issue-workspace-request-lifetime.test.tsx +++ b/src/renderer/src/components/jira-issue-workspace-request-lifetime.test.tsx @@ -3,7 +3,7 @@ import { act, StrictMode, type ComponentProps, type ReactNode } from 'react' import { createRoot, type Root } from 'react-dom/client' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { AppState } from '../store/types' import type { diff --git a/src/renderer/src/components/jira-key-or-text-search.ts b/src/renderer/src/components/jira-key-or-text-search.ts index 818b6567200..87d34aa23b4 100644 --- a/src/renderer/src/components/jira-key-or-text-search.ts +++ b/src/renderer/src/components/jira-key-or-text-search.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { buildJiraIssueKeyJql, buildJiraTextMatchJql diff --git a/src/renderer/src/components/jira-project-picker-filter.test.ts b/src/renderer/src/components/jira-project-picker-filter.test.ts index 6013ee691ce..765c5f434ef 100644 --- a/src/renderer/src/components/jira-project-picker-filter.test.ts +++ b/src/renderer/src/components/jira-project-picker-filter.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' import { JIRA_PROJECT_PICKER_QUERY_MAX_BYTES, filterJiraProjectPickerProjects, diff --git a/src/renderer/src/components/jira-project-picker-filter.ts b/src/renderer/src/components/jira-project-picker-filter.ts index 998800afa6c..92c7e316dbe 100644 --- a/src/renderer/src/components/jira-project-picker-filter.ts +++ b/src/renderer/src/components/jira-project-picker-filter.ts @@ -1,5 +1,5 @@ import { isClipboardTextByteLengthOverLimit } from '../../../shared/clipboard-text' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' export const JIRA_PROJECT_PICKER_QUERY_MAX_BYTES = 2 * 1024 diff --git a/src/renderer/src/components/jira-project-picker.tsx b/src/renderer/src/components/jira-project-picker.tsx index 94bd61f9c2b..2383d494c8e 100644 --- a/src/renderer/src/components/jira-project-picker.tsx +++ b/src/renderer/src/components/jira-project-picker.tsx @@ -1,11 +1,11 @@ import { useState } from 'react' import { Check, ChevronsUpDown } from 'lucide-react' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' import { normalizeJiraProjectReference, matchesJiraProject, type JiraProjectReference -} from '../../../shared/jira-project-reference' +} from '../../../shared/jira/jira-project-reference' import { Button } from './ui/button' import { Popover, PopoverContent, PopoverTrigger } from './ui/popover' import { Command, CommandInput, CommandList, CommandEmpty, CommandItem } from './ui/command' diff --git a/src/renderer/src/components/jira-prompt-templates.test.ts b/src/renderer/src/components/jira-prompt-templates.test.ts index 46615d494fc..29f48f819e7 100644 --- a/src/renderer/src/components/jira-prompt-templates.test.ts +++ b/src/renderer/src/components/jira-prompt-templates.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { renderJiraPromptTemplate, getJiraPromptTemplates, diff --git a/src/renderer/src/components/jira-prompt-templates.ts b/src/renderer/src/components/jira-prompt-templates.ts index f0473a53fd2..fcda30d6dd4 100644 --- a/src/renderer/src/components/jira-prompt-templates.ts +++ b/src/renderer/src/components/jira-prompt-templates.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { translate } from '@/i18n/i18n' export function buildJiraIssuePrompt(issue: JiraIssue): string { diff --git a/src/renderer/src/components/jira-self-user.test.ts b/src/renderer/src/components/jira-self-user.test.ts index 6475b1b96bd..9a1e50a2fd3 100644 --- a/src/renderer/src/components/jira-self-user.test.ts +++ b/src/renderer/src/components/jira-self-user.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraConnectionStatus } from '../../../shared/jira-types' +import type { JiraConnectionStatus } from '../../../shared/jira/jira-types' import { getJiraSelfUser } from './jira-self-user' const viewer = { diff --git a/src/renderer/src/components/jira-self-user.ts b/src/renderer/src/components/jira-self-user.ts index 52ce9ea9912..d3c1b77a7f9 100644 --- a/src/renderer/src/components/jira-self-user.ts +++ b/src/renderer/src/components/jira-self-user.ts @@ -1,4 +1,4 @@ -import type { JiraConnectionStatus, JiraUser } from '../../../shared/jira-types' +import type { JiraConnectionStatus, JiraUser } from '../../../shared/jira/jira-types' // Site identities take precedence over the active site's viewer. export function getJiraSelfUser( diff --git a/src/renderer/src/components/jira-transition-fields-form.tsx b/src/renderer/src/components/jira-transition-fields-form.tsx index 9593af3dd51..522c61232fc 100644 --- a/src/renderer/src/components/jira-transition-fields-form.tsx +++ b/src/renderer/src/components/jira-transition-fields-form.tsx @@ -16,8 +16,8 @@ import { classifyTransitionRequirements, transitionAllowedValueKey, transitionAllowedValueLabel -} from '../../../shared/jira-transition-fields' -import type { JiraIssueUpdate, JiraTransition } from '../../../shared/jira-types' +} from '../../../shared/jira/jira-transition-fields' +import type { JiraIssueUpdate, JiraTransition } from '../../../shared/jira/jira-types' type Props = { transition: JiraTransition diff --git a/src/renderer/src/components/jira-user-picker.tsx b/src/renderer/src/components/jira-user-picker.tsx index 1f8be2c78e9..f1c21bfb4b5 100644 --- a/src/renderer/src/components/jira-user-picker.tsx +++ b/src/renderer/src/components/jira-user-picker.tsx @@ -5,7 +5,7 @@ import { Input } from '@/components/ui/input' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { jiraSearchUsers, type RuntimeJiraSettings } from '@/runtime/runtime-jira-client' import { translate } from '@/i18n/i18n' -import type { JiraUser } from '../../../shared/jira-types' +import type { JiraUser } from '../../../shared/jira/jira-types' const USER_SEARCH_DEBOUNCE_MS = 250 diff --git a/src/renderer/src/components/new-workspace/SmartWorkspaceNameField.jira-accessibility.test.tsx b/src/renderer/src/components/new-workspace/SmartWorkspaceNameField.jira-accessibility.test.tsx index aa00d98f9c1..8cd65cae173 100644 --- a/src/renderer/src/components/new-workspace/SmartWorkspaceNameField.jira-accessibility.test.tsx +++ b/src/renderer/src/components/new-workspace/SmartWorkspaceNameField.jira-accessibility.test.tsx @@ -3,7 +3,7 @@ import React, { act } from 'react' import { cleanup, createEvent, fireEvent, render, screen } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import SmartWorkspaceNameField from './SmartWorkspaceNameField' import type { SmartWorkspaceNameSelection } from './smart-workspace-name-field-model' diff --git a/src/renderer/src/components/new-workspace/new-workspace-composer-card-props.ts b/src/renderer/src/components/new-workspace/new-workspace-composer-card-props.ts index 6bd8e6e6aff..268ea9aad4f 100644 --- a/src/renderer/src/components/new-workspace/new-workspace-composer-card-props.ts +++ b/src/renderer/src/components/new-workspace/new-workspace-composer-card-props.ts @@ -13,7 +13,7 @@ import type SmartWorkspaceNameField from './SmartWorkspaceNameField' import type { SmartWorkspaceNameSelection } from '@/components/new-workspace/smart-workspace-name-field-model' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { OrcaHooks, SetupAgentStartupPolicy } from '../../../../shared/orca-yaml-hook-types' import type { SparsePreset } from '../../../../shared/worktree/create-types' diff --git a/src/renderer/src/components/new-workspace/smart-workspace-name-field-model.ts b/src/renderer/src/components/new-workspace/smart-workspace-name-field-model.ts index ee724b4ca23..4875da0e570 100644 --- a/src/renderer/src/components/new-workspace/smart-workspace-name-field-model.ts +++ b/src/renderer/src/components/new-workspace/smart-workspace-name-field-model.ts @@ -3,7 +3,7 @@ import type { useAppStore } from '@/store' import type { parseGitHubIssueOrPRLink, RepoSlug } from '@/lib/github-links' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' -import type { JiraIssue, JiraSite } from '../../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { BaseRefSearchResult } from '../../../../shared/repo-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' diff --git a/src/renderer/src/components/new-workspace/smart-workspace-source-row-content.tsx b/src/renderer/src/components/new-workspace/smart-workspace-source-row-content.tsx index e00ea180d54..e8c4926fc03 100644 --- a/src/renderer/src/components/new-workspace/smart-workspace-source-row-content.tsx +++ b/src/renderer/src/components/new-workspace/smart-workspace-source-row-content.tsx @@ -11,7 +11,7 @@ import { LinearIcon } from '@/components/icons/LinearIcon' import { JiraIcon } from '@/components/icons/JiraIcon' import { cn } from '@/lib/utils' import { translate } from '@/i18n/i18n' -import type { JiraSite } from '../../../../shared/jira-types' +import type { JiraSite } from '../../../../shared/jira/jira-types' import type { RowEntry, SmartWorkspaceNameSelection } from './smart-workspace-name-field-model' const ROW_ITEM_CLASS_NAME = 'gap-2 px-3 py-2 text-xs' diff --git a/src/renderer/src/components/new-workspace/use-jira-composer-project.ts b/src/renderer/src/components/new-workspace/use-jira-composer-project.ts index 43d08f2310a..8b971b46cba 100644 --- a/src/renderer/src/components/new-workspace/use-jira-composer-project.ts +++ b/src/renderer/src/components/new-workspace/use-jira-composer-project.ts @@ -1,5 +1,5 @@ import { useState } from 'react' -import type { JiraProjectReference } from '../../../../shared/jira-project-reference' +import type { JiraProjectReference } from '../../../../shared/jira/jira-project-reference' import type { Repo } from '../../../../shared/repo-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' import { getRepoExecutionHostId } from '../../../../shared/execution-host' diff --git a/src/renderer/src/components/new-workspace/use-jira-source-connection.test.tsx b/src/renderer/src/components/new-workspace/use-jira-source-connection.test.tsx index 1da6ffaad00..112ce6c796c 100644 --- a/src/renderer/src/components/new-workspace/use-jira-source-connection.test.tsx +++ b/src/renderer/src/components/new-workspace/use-jira-source-connection.test.tsx @@ -4,7 +4,7 @@ import { act, renderHook } from '@testing-library/react' import type * as React from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { TaskSourceContext } from '../../../../shared/task-source-context' -import type { JiraConnectionStatus } from '../../../../shared/jira-types' +import type { JiraConnectionStatus } from '../../../../shared/jira/jira-types' import { getJiraSourceConnectionRevisionKey, useJiraSourceConnection diff --git a/src/renderer/src/components/new-workspace/use-jira-source-connection.ts b/src/renderer/src/components/new-workspace/use-jira-source-connection.ts index 703e87cf9e7..62388677525 100644 --- a/src/renderer/src/components/new-workspace/use-jira-source-connection.ts +++ b/src/renderer/src/components/new-workspace/use-jira-source-connection.ts @@ -5,7 +5,7 @@ import { getTaskSourceRuntimeSettings, type TaskSourceContext } from '../../../../shared/task-source-context' -import type { JiraConnectionStatus } from '../../../../shared/jira-types' +import type { JiraConnectionStatus } from '../../../../shared/jira/jira-types' import { getProviderRuntimeContextKey } from '@/lib/provider-runtime-context' export type JiraSourceConnection = { diff --git a/src/renderer/src/components/new-workspace/use-jira-url-source.test.tsx b/src/renderer/src/components/new-workspace/use-jira-url-source.test.tsx index fe4adf51e85..f135ad088a8 100644 --- a/src/renderer/src/components/new-workspace/use-jira-url-source.test.tsx +++ b/src/renderer/src/components/new-workspace/use-jira-url-source.test.tsx @@ -2,7 +2,7 @@ import { act, renderHook } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraConnectionStatus, JiraIssue, JiraSite } from '../../../../shared/jira-types' +import type { JiraConnectionStatus, JiraIssue, JiraSite } from '../../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' import { useJiraUrlSource } from './use-jira-url-source' diff --git a/src/renderer/src/components/new-workspace/use-jira-url-source.ts b/src/renderer/src/components/new-workspace/use-jira-url-source.ts index 7973a4dfc87..2f32a428b8f 100644 --- a/src/renderer/src/components/new-workspace/use-jira-url-source.ts +++ b/src/renderer/src/components/new-workspace/use-jira-url-source.ts @@ -16,7 +16,7 @@ import { } from '../../../../shared/task-source-context' import { parseExecutionHostId } from '../../../../shared/execution-host' import { WORKTREE_LINKED_WORK_ITEM_CONTEXT_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version' -import type { JiraIssue, JiraSite } from '../../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../../shared/jira/jira-types' import { canReuseLoadedJiraStatus, type JiraSourceConnection } from './use-jira-source-connection' const LOOKUP_DEBOUNCE_MS = 200 diff --git a/src/renderer/src/components/new-workspace/use-smart-workspace-secondary-searches.ts b/src/renderer/src/components/new-workspace/use-smart-workspace-secondary-searches.ts index 52761c5713a..625d6acf1f8 100644 --- a/src/renderer/src/components/new-workspace/use-smart-workspace-secondary-searches.ts +++ b/src/renderer/src/components/new-workspace/use-smart-workspace-secondary-searches.ts @@ -11,7 +11,7 @@ import { import { getSmartWorkspaceLinearSearchQuery } from '../../../../shared/new-workspace/smart-workspace-linear-intent' import type { parseBoundedSmartWorkspaceLinearIssueUrlIntent } from '../../../../shared/new-workspace/smart-workspace-linear-intent' import { RESULT_LIMIT } from './smart-workspace-name-field-model' -import { restrictJiraQueryToProject } from '../../../../shared/jira-project-reference' +import { restrictJiraQueryToProject } from '../../../../shared/jira/jira-project-reference' import { getBranchSearchRequest } from '../../../../shared/new-workspace/smart-workspace-source-results' import type { useWorkItemSourceFoundation } from './use-work-item-source-foundation' diff --git a/src/renderer/src/components/new-workspace/use-work-item-source-state.ts b/src/renderer/src/components/new-workspace/use-work-item-source-state.ts index 7aa8f798ba4..39715715669 100644 --- a/src/renderer/src/components/new-workspace/use-work-item-source-state.ts +++ b/src/renderer/src/components/new-workspace/use-work-item-source-state.ts @@ -2,7 +2,7 @@ import { useRef, useState } from 'react' import type { RepoSlug } from '@/lib/github-links' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { BaseRefSearchResult } from '../../../../shared/repo-types' import type { SmartNameMode } from '../../../../shared/new-workspace/smart-workspace-source-results' diff --git a/src/renderer/src/components/new-workspace/work-item-source-selection.test.ts b/src/renderer/src/components/new-workspace/work-item-source-selection.test.ts index 7475986d2e5..111b5aafdc3 100644 --- a/src/renderer/src/components/new-workspace/work-item-source-selection.test.ts +++ b/src/renderer/src/components/new-workspace/work-item-source-selection.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraIssue, JiraSite } from '../../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' import { bindJiraIssueSourceContext } from './use-jira-url-source' import { resolveWorkItemSourceRow } from './work-item-source-selection' diff --git a/src/renderer/src/components/new-workspace/work-item-source-selection.ts b/src/renderer/src/components/new-workspace/work-item-source-selection.ts index 47196d8f7c2..abec399266e 100644 --- a/src/renderer/src/components/new-workspace/work-item-source-selection.ts +++ b/src/renderer/src/components/new-workspace/work-item-source-selection.ts @@ -1,6 +1,6 @@ import type { TaskSourceContext } from '../../../../shared/task-source-context' import { getMatchingJiraSites, parseJiraIssueUrl } from '../../../../shared/jira-issue-url' -import type { JiraSite } from '../../../../shared/jira-types' +import type { JiraSite } from '../../../../shared/jira/jira-types' import { buildGitHubWorkspaceSource, buildGitLabWorkspaceSource, diff --git a/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.test.tsx b/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.test.tsx index e30d6bc3ea7..e6bea7f46d7 100644 --- a/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.test.tsx +++ b/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.test.tsx @@ -2,7 +2,7 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { Repo } from '../../../../../shared/repo-types' -import type { JiraProjectReference } from '../../../../../shared/jira-project-reference' +import type { JiraProjectReference } from '../../../../../shared/jira/jira-project-reference' import { RepositoryJiraProjectSection } from './RepositoryJiraProjectSection' const project = { id: '10', key: 'ALP', name: 'Alpha', siteId: 'site-a' } const { state, inventory } = vi.hoisted(() => { diff --git a/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.tsx b/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.tsx index 172d3f78e4c..b6f1f1ec708 100644 --- a/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.tsx +++ b/src/renderer/src/components/settings/repository/RepositoryJiraProjectSection.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from 'react' import type { Repo } from '../../../../../shared/repo-types' -import type { JiraProjectReference } from '../../../../../shared/jira-project-reference' +import type { JiraProjectReference } from '../../../../../shared/jira/jira-project-reference' import { getRepoExecutionHostId } from '../../../../../shared/execution-host' import { taskSourceRuntimeTarget } from '@/lib/task-source-runtime-target' import { useAppStore } from '@/store/index' diff --git a/src/renderer/src/components/sidebar/WorkspaceAttachmentSearch.resolution.test.tsx b/src/renderer/src/components/sidebar/WorkspaceAttachmentSearch.resolution.test.tsx index 62522ad2651..64659c12590 100644 --- a/src/renderer/src/components/sidebar/WorkspaceAttachmentSearch.resolution.test.tsx +++ b/src/renderer/src/components/sidebar/WorkspaceAttachmentSearch.resolution.test.tsx @@ -3,7 +3,7 @@ import React, { createRef, type ReactNode } from 'react' import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { useAppStore } from '@/store' -import type { JiraConnectionStatus, JiraIssue, JiraSite } from '../../../../shared/jira-types' +import type { JiraConnectionStatus, JiraIssue, JiraSite } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { LinearConnectionStatus } from '../../../../shared/linear/workspace-types' import type { Repo } from '../../../../shared/repo-types' diff --git a/src/renderer/src/components/task-page-jira-board-detail-integration.test.tsx b/src/renderer/src/components/task-page-jira-board-detail-integration.test.tsx index 5fb9557a598..10139fe4415 100644 --- a/src/renderer/src/components/task-page-jira-board-detail-integration.test.tsx +++ b/src/renderer/src/components/task-page-jira-board-detail-integration.test.tsx @@ -9,7 +9,7 @@ import type { JiraMutationResult, JiraProjectStatusOrder, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import type { AppState } from '@/store/types' diff --git a/src/renderer/src/components/task-page-jira-board-move-dialog.tsx b/src/renderer/src/components/task-page-jira-board-move-dialog.tsx index ec30943a7fb..5026a66b774 100644 --- a/src/renderer/src/components/task-page-jira-board-move-dialog.tsx +++ b/src/renderer/src/components/task-page-jira-board-move-dialog.tsx @@ -9,8 +9,8 @@ import { } from '@/components/ui/dialog' import { translate } from '@/i18n/i18n' import { JiraTransitionFieldsForm } from './jira-transition-fields-form' -import { classifyTransitionRequirements } from '../../../shared/jira-transition-fields' -import type { JiraIssue, JiraIssueUpdate, JiraTransition } from '../../../shared/jira-types' +import { classifyTransitionRequirements } from '../../../shared/jira/jira-transition-fields' +import type { JiraIssue, JiraIssueUpdate, JiraTransition } from '../../../shared/jira/jira-types' export type JiraBoardMovePrompt = { issue: JiraIssue diff --git a/src/renderer/src/components/task-page-jira-board-move.ts b/src/renderer/src/components/task-page-jira-board-move.ts index 3c7f1614350..efbed291302 100644 --- a/src/renderer/src/components/task-page-jira-board-move.ts +++ b/src/renderer/src/components/task-page-jira-board-move.ts @@ -3,7 +3,7 @@ import type { JiraIssueUpdate, JiraMutationResult, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { TaskPageJiraBoardSection } from './task-page-jira-board-sections' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { diff --git a/src/renderer/src/components/task-page-jira-board-sections.test.ts b/src/renderer/src/components/task-page-jira-board-sections.test.ts index 1881c7b6840..acbb067e10a 100644 --- a/src/renderer/src/components/task-page-jira-board-sections.test.ts +++ b/src/renderer/src/components/task-page-jira-board-sections.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest' import { buildJiraBoardSections } from './task-page-jira-board-sections' -import type { JiraIssue, JiraStatus } from '../../../shared/jira-types' +import type { JiraIssue, JiraStatus } from '../../../shared/jira/jira-types' function status(id: string, name: string): JiraStatus { return { id, name, categoryKey: 'indeterminate', categoryName: 'In Progress' } diff --git a/src/renderer/src/components/task-page-jira-board-sections.ts b/src/renderer/src/components/task-page-jira-board-sections.ts index 798128ee254..d2398743391 100644 --- a/src/renderer/src/components/task-page-jira-board-sections.ts +++ b/src/renderer/src/components/task-page-jira-board-sections.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' import { groupJiraIssuesByStatus } from './task-page-jira-issue-list' export type TaskPageJiraBoardSection = { diff --git a/src/renderer/src/components/task-page-jira-board-transitions.test.ts b/src/renderer/src/components/task-page-jira-board-transitions.test.ts index 6e35a219094..5fc668d9185 100644 --- a/src/renderer/src/components/task-page-jira-board-transitions.test.ts +++ b/src/renderer/src/components/task-page-jira-board-transitions.test.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraStatus, JiraTransition } from '../../../shared/jira-types' +import type { JiraIssue, JiraStatus, JiraTransition } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' const mocks = vi.hoisted(() => ({ diff --git a/src/renderer/src/components/task-page-jira-board-transitions.ts b/src/renderer/src/components/task-page-jira-board-transitions.ts index 88b60044773..02344d4d930 100644 --- a/src/renderer/src/components/task-page-jira-board-transitions.ts +++ b/src/renderer/src/components/task-page-jira-board-transitions.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { jiraListTransitionsForTarget } from '@/runtime/runtime-jira-client' import { getRuntimeTargetHostId } from '@/runtime/runtime-client-target' diff --git a/src/renderer/src/components/task-page-jira-board-view.test.tsx b/src/renderer/src/components/task-page-jira-board-view.test.tsx index 22c2c12e39d..41a4e0d8638 100644 --- a/src/renderer/src/components/task-page-jira-board-view.test.tsx +++ b/src/renderer/src/components/task-page-jira-board-view.test.tsx @@ -1,7 +1,7 @@ // @vitest-environment happy-dom import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { diff --git a/src/renderer/src/components/task-page-jira-board-view.tsx b/src/renderer/src/components/task-page-jira-board-view.tsx index 02d61b298f7..745b9d1cae2 100644 --- a/src/renderer/src/components/task-page-jira-board-view.tsx +++ b/src/renderer/src/components/task-page-jira-board-view.tsx @@ -3,13 +3,13 @@ import { useAppStore } from '@/store' import { getEnvironmentRuntimeContextKey } from '@/lib/provider-runtime-context' import { runtimeTargetEnvironmentId } from '@/runtime/runtime-client-target' import { translate } from '@/i18n/i18n' -import { classifyTransitionRequirements } from '../../../shared/jira-transition-fields' +import { classifyTransitionRequirements } from '../../../shared/jira/jira-transition-fields' import type { JiraIssue, JiraIssueUpdate, JiraProjectStatusOrder, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { TaskPageJiraBoard, jiraBoardIssueRefKey } from './task-page-jira-board' diff --git a/src/renderer/src/components/task-page-jira-board.test.tsx b/src/renderer/src/components/task-page-jira-board.test.tsx index f39e3ebc61d..c46230dff29 100644 --- a/src/renderer/src/components/task-page-jira-board.test.tsx +++ b/src/renderer/src/components/task-page-jira-board.test.tsx @@ -1,6 +1,6 @@ import { renderToStaticMarkup } from 'react-dom/server' import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraProjectStatusOrder, JiraStatus } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder, JiraStatus } from '../../../shared/jira/jira-types' vi.mock('@/components/ui/tooltip', () => ({ Tooltip: ({ children }: { children?: React.ReactNode }) => children, diff --git a/src/renderer/src/components/task-page-jira-board.tsx b/src/renderer/src/components/task-page-jira-board.tsx index d5466ffd0ab..1b3662158ab 100644 --- a/src/renderer/src/components/task-page-jira-board.tsx +++ b/src/renderer/src/components/task-page-jira-board.tsx @@ -17,7 +17,7 @@ import { writeJiraBoardIssueDragData } from '@/lib/jira-board-drag-payload' import type { JiraBoardIssueDragRef } from '@/lib/jira-board-drag-payload' -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' import { buildJiraBoardSections, type TaskPageJiraBoardSection diff --git a/src/renderer/src/components/task-page-jira-cache-selectors.test.ts b/src/renderer/src/components/task-page-jira-cache-selectors.test.ts index bc4a4c07ffa..b2e88f9298c 100644 --- a/src/renderer/src/components/task-page-jira-cache-selectors.test.ts +++ b/src/renderer/src/components/task-page-jira-cache-selectors.test.ts @@ -3,7 +3,7 @@ import { getTaskSourceCacheScope, type TaskSourceContext } from '../../../shared/task-source-context' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { findTaskPageJiraIssue } from './task-page-jira-cache-selectors' function jiraSourceContext(environmentId: string): TaskSourceContext { diff --git a/src/renderer/src/components/task-page-jira-cache-selectors.ts b/src/renderer/src/components/task-page-jira-cache-selectors.ts index 7dfc8075ade..e0eec79839a 100644 --- a/src/renderer/src/components/task-page-jira-cache-selectors.ts +++ b/src/renderer/src/components/task-page-jira-cache-selectors.ts @@ -3,7 +3,7 @@ import { getTaskSourceCacheScope, type TaskSourceContext } from '../../../shared/task-source-context' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' type JiraIssueCache = Record> type JiraSearchCache = Record> diff --git a/src/renderer/src/components/task-page-jira-create-fields.test.ts b/src/renderer/src/components/task-page-jira-create-fields.test.ts index 18fcfc918c7..3e33ed2cdee 100644 --- a/src/renderer/src/components/task-page-jira-create-fields.test.ts +++ b/src/renderer/src/components/task-page-jira-create-fields.test.ts @@ -13,7 +13,7 @@ import { isJiraUserCreateField, isVisibleJiraCreateField } from './task-page-jira-create-fields' -import type { JiraCreateField } from '../../../shared/jira-types' +import type { JiraCreateField } from '../../../shared/jira/jira-types' function field(overrides: Partial = {}): JiraCreateField { return { key: 'customfield_1', name: 'Custom', required: true, ...overrides } diff --git a/src/renderer/src/components/task-page-jira-create-fields.ts b/src/renderer/src/components/task-page-jira-create-fields.ts index 5948d854bf6..d847423e3c2 100644 --- a/src/renderer/src/components/task-page-jira-create-fields.ts +++ b/src/renderer/src/components/task-page-jira-create-fields.ts @@ -1,5 +1,5 @@ import { buildJiraCreateTextAdf } from '@/components/jira-create-adf' -import type { JiraCreateField } from '../../../shared/jira-types' +import type { JiraCreateField } from '../../../shared/jira/jira-types' // 'assignee' is system here because the dialog renders a dedicated picker for it. const JIRA_CREATE_SYSTEM_FIELD_KEYS = new Set([ diff --git a/src/renderer/src/components/task-page-jira-grouping.test.ts b/src/renderer/src/components/task-page-jira-grouping.test.ts index e03154149e4..3414caf6bce 100644 --- a/src/renderer/src/components/task-page-jira-grouping.test.ts +++ b/src/renderer/src/components/task-page-jira-grouping.test.ts @@ -15,7 +15,7 @@ import { getSingleJiraProjectScope, loadTaskPageJiraProjectStatusOrder } from './task-page-jira-status-order' -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' const { jiraGetProjectStatusOrderMock } = vi.hoisted(() => ({ jiraGetProjectStatusOrderMock: vi.fn() diff --git a/src/renderer/src/components/task-page-jira-issue-cells.tsx b/src/renderer/src/components/task-page-jira-issue-cells.tsx index c8443926ed2..2f0afed759a 100644 --- a/src/renderer/src/components/task-page-jira-issue-cells.tsx +++ b/src/renderer/src/components/task-page-jira-issue-cells.tsx @@ -3,7 +3,7 @@ import React from 'react' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { translate } from '@/i18n/i18n' import { cn } from '@/lib/utils' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { formatJiraEstimate, formatJiraStoryPoints, diff --git a/src/renderer/src/components/task-page-jira-issue-list.tsx b/src/renderer/src/components/task-page-jira-issue-list.tsx index f66c3b3c05e..fa9512408bc 100644 --- a/src/renderer/src/components/task-page-jira-issue-list.tsx +++ b/src/renderer/src/components/task-page-jira-issue-list.tsx @@ -11,7 +11,7 @@ import { JiraLinkedWorkspaceAction } from './JiraLinkedWorkspaceAction' import type { Worktree } from '../../../shared/worktree/types' import { jiraListColumnVisibility, type JiraListColumn } from './jira-list-columns' import { JiraIssueCell, JiraPriorityText, unassignedLabel } from './task-page-jira-issue-cells' -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' export type TaskPageJiraIssueSection = { key: string diff --git a/src/renderer/src/components/task-page-jira-item-source-context.test.ts b/src/renderer/src/components/task-page-jira-item-source-context.test.ts index a635fb86f30..250bc584958 100644 --- a/src/renderer/src/components/task-page-jira-item-source-context.test.ts +++ b/src/renderer/src/components/task-page-jira-item-source-context.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraIssue, JiraSite } from '../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import { bindTaskPageJiraItemSourceContext } from './task-page-jira-item-source-context' diff --git a/src/renderer/src/components/task-page-jira-item-source-context.ts b/src/renderer/src/components/task-page-jira-item-source-context.ts index bdee8a35844..ce3506ffee6 100644 --- a/src/renderer/src/components/task-page-jira-item-source-context.ts +++ b/src/renderer/src/components/task-page-jira-item-source-context.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSite } from '../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../shared/jira/jira-types' import { getJiraAccountLabel } from '@/lib/jira-account-label' import { normalizeTaskSourceContext, diff --git a/src/renderer/src/components/task-page-jira-linked-issues.test.ts b/src/renderer/src/components/task-page-jira-linked-issues.test.ts index d5ff8181f8b..022a1713c3e 100644 --- a/src/renderer/src/components/task-page-jira-linked-issues.test.ts +++ b/src/renderer/src/components/task-page-jira-linked-issues.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import { filterLinkedJiraIssues, readLinkedJiraIssues } from './task-page-jira-linked-issues' const source: TaskSourceContext = { diff --git a/src/renderer/src/components/task-page-jira-linked-issues.ts b/src/renderer/src/components/task-page-jira-linked-issues.ts index 6e4c5d5a313..5fa9e7cce9f 100644 --- a/src/renderer/src/components/task-page-jira-linked-issues.ts +++ b/src/renderer/src/components/task-page-jira-linked-issues.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import type { LinkedJiraIssueRef } from '@/lib/jira-issue-workspace-attachment' import type { TaskSourceContext } from '../../../shared/task-source-context' import { readLinkedTaskIssuesWithLimit } from './read-linked-task-issues' diff --git a/src/renderer/src/components/task-page-jira-load-state.ts b/src/renderer/src/components/task-page-jira-load-state.ts index c4b84be3fac..89b975b33f5 100644 --- a/src/renderer/src/components/task-page-jira-load-state.ts +++ b/src/renderer/src/components/task-page-jira-load-state.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { parseJiraStatusError } from '../../../shared/jira/jira-status-error' export type TaskPageJiraLoadError = { diff --git a/src/renderer/src/components/task-page-jira-project-selection.test.ts b/src/renderer/src/components/task-page-jira-project-selection.test.ts index 5f0bd24c884..0fe10d9aed7 100644 --- a/src/renderer/src/components/task-page-jira-project-selection.test.ts +++ b/src/renderer/src/components/task-page-jira-project-selection.test.ts @@ -4,7 +4,7 @@ import { compareJiraProjectsByDisplayLabel, getJiraProjectSelectionKey } from './task-page-jira-project-selection' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' function project(overrides: Partial = {}): JiraProject { return { id: '1', key: 'AA', name: 'Alpha', ...overrides } diff --git a/src/renderer/src/components/task-page-jira-project-selection.ts b/src/renderer/src/components/task-page-jira-project-selection.ts index 48a9af0dfc2..174c025e17a 100644 --- a/src/renderer/src/components/task-page-jira-project-selection.ts +++ b/src/renderer/src/components/task-page-jira-project-selection.ts @@ -1,4 +1,4 @@ -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' export function getJiraProjectSelectionKey(project: JiraProject): string { return `${project.siteId ?? 'selected'}:${project.id}` diff --git a/src/renderer/src/components/task-page-jira-quick-copy.test.tsx b/src/renderer/src/components/task-page-jira-quick-copy.test.tsx index c31fa286062..611a214047e 100644 --- a/src/renderer/src/components/task-page-jira-quick-copy.test.tsx +++ b/src/renderer/src/components/task-page-jira-quick-copy.test.tsx @@ -6,7 +6,7 @@ import userEvent from '@testing-library/user-event' import { TooltipProvider } from '@/components/ui/tooltip' import { TaskPageJiraIssueList } from './task-page-jira-issue-list' import { defaultJiraListColumnIds, visibleJiraListColumns } from './jira-list-columns' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' const writeClipboardText = vi.fn().mockResolvedValue(undefined) const issue: JiraIssue = { id: '1', diff --git a/src/renderer/src/components/task-page-jira-saved-filter-application.test.tsx b/src/renderer/src/components/task-page-jira-saved-filter-application.test.tsx index 92b17c8f8e6..ddd2aec8841 100644 --- a/src/renderer/src/components/task-page-jira-saved-filter-application.test.tsx +++ b/src/renderer/src/components/task-page-jira-saved-filter-application.test.tsx @@ -3,7 +3,7 @@ import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-libra import { afterEach, expect, it, vi } from 'vitest' import { TaskPageJiraFilters } from './task-page/jira/Filters' import type { TaskPageComposerActionsModel } from './use-task-page-composer-actions' -import type { JiraSavedFilter } from '../../../shared/jira-saved-filters' +import type { JiraSavedFilter } from '../../../shared/jira/jira-saved-filters' import { TooltipProvider } from './ui/tooltip' const filter = { id: 'saved', name: 'Saved work', jql: 'project = APP' } diff --git a/src/renderer/src/components/task-page-jira-saved-filter-load-failure.test.tsx b/src/renderer/src/components/task-page-jira-saved-filter-load-failure.test.tsx index 015237deae1..2fe8147b9e2 100644 --- a/src/renderer/src/components/task-page-jira-saved-filter-load-failure.test.tsx +++ b/src/renderer/src/components/task-page-jira-saved-filter-load-failure.test.tsx @@ -3,8 +3,8 @@ import { useCallback, useRef, useState } from 'react' import { create } from 'zustand' import { act, cleanup, renderHook, waitFor } from '@testing-library/react' import { afterEach, beforeEach, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' -import type { JiraSavedFilterState } from '../../../shared/jira-saved-filters' +import type { JiraIssue } from '../../../shared/jira/jira-types' +import type { JiraSavedFilterState } from '../../../shared/jira/jira-saved-filters' import type { AppState } from '@/store/types' import type { TaskPageLinearCollectionEffectsModel } from './task-page/linear/use-task-page-linear-collection-effects' import { createJiraSlice } from '@/store/slices/jira' diff --git a/src/renderer/src/components/task-page-jira-search.test.ts b/src/renderer/src/components/task-page-jira-search.test.ts index 94a082a4fdd..7b87419bff7 100644 --- a/src/renderer/src/components/task-page-jira-search.test.ts +++ b/src/renderer/src/components/task-page-jira-search.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { searchTaskPageJiraIssues } from './task-page-jira-search' const ISSUE: JiraIssue = { diff --git a/src/renderer/src/components/task-page-jira-search.ts b/src/renderer/src/components/task-page-jira-search.ts index 974d72612c1..5781b4f31cd 100644 --- a/src/renderer/src/components/task-page-jira-search.ts +++ b/src/renderer/src/components/task-page-jira-search.ts @@ -1,4 +1,4 @@ -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { buildJiraTextMatchJql, mayBeJql } from '../../../shared/jira/jira-search-input-jql' import { searchJiraIssuesByKeyOrText } from './jira-key-or-text-search' import { getJiraBadRequestReason } from './task-page-jira-load-state' diff --git a/src/renderer/src/components/task-page-jira-sorting.test.ts b/src/renderer/src/components/task-page-jira-sorting.test.ts index c18224f5a56..046a26a9bd5 100644 --- a/src/renderer/src/components/task-page-jira-sorting.test.ts +++ b/src/renderer/src/components/task-page-jira-sorting.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraIssue, JiraPriority } from '../../../shared/jira-types' +import type { JiraIssue, JiraPriority } from '../../../shared/jira/jira-types' import { getJiraPriorityWeight, sortJiraIssues } from './jira-issue-sorter' describe('TaskPage Jira sorting functionality', () => { diff --git a/src/renderer/src/components/task-page-jira-status-catalog.ts b/src/renderer/src/components/task-page-jira-status-catalog.ts index 01a9affc5ef..81f9fe962a6 100644 --- a/src/renderer/src/components/task-page-jira-status-catalog.ts +++ b/src/renderer/src/components/task-page-jira-status-catalog.ts @@ -1,5 +1,5 @@ -import type { JiraIssue } from '../../../shared/jira-types' -import type { JiraProjectReference } from '../../../shared/jira-project-reference' +import type { JiraIssue } from '../../../shared/jira/jira-types' +import type { JiraProjectReference } from '../../../shared/jira/jira-project-reference' import { getJiraProjectSelectionKey } from './task-page-jira-project-selection' export function getJiraStatusCatalogScopeKey( diff --git a/src/renderer/src/components/task-page-jira-status-order-session.test.tsx b/src/renderer/src/components/task-page-jira-status-order-session.test.tsx index d6715c1b7b8..5adbbe4d9b6 100644 --- a/src/renderer/src/components/task-page-jira-status-order-session.test.tsx +++ b/src/renderer/src/components/task-page-jira-status-order-session.test.tsx @@ -3,7 +3,7 @@ import { useState } from 'react' import { act, cleanup, renderHook, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../shared/task-source-context' import type { RuntimeJiraSettings } from '@/runtime/runtime-jira-target' import type { TaskPageLinearBoardModel } from './task-page/linear/use-task-page-linear-board' diff --git a/src/renderer/src/components/task-page-jira-status-order.ts b/src/renderer/src/components/task-page-jira-status-order.ts index 4ddbd0ba99f..1aa6eaa8fd0 100644 --- a/src/renderer/src/components/task-page-jira-status-order.ts +++ b/src/renderer/src/components/task-page-jira-status-order.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira-types' +import type { JiraIssue, JiraProjectStatusOrder } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { runtimeTargetEnvironmentId } from '@/runtime/runtime-client-target' import { getEnvironmentRuntimeContextKey } from '@/lib/provider-runtime-context' diff --git a/src/renderer/src/components/task-page-jira-workspace-actions.test.tsx b/src/renderer/src/components/task-page-jira-workspace-actions.test.tsx index b0f46554563..029323530f4 100644 --- a/src/renderer/src/components/task-page-jira-workspace-actions.test.tsx +++ b/src/renderer/src/components/task-page-jira-workspace-actions.test.tsx @@ -6,7 +6,7 @@ import userEvent from '@testing-library/user-event' import { TooltipProvider } from '@/components/ui/tooltip' import { TaskPageJiraIssueList } from './task-page-jira-issue-list' import { defaultJiraListColumnIds, visibleJiraListColumns } from './jira-list-columns' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures' const issue: JiraIssue = { diff --git a/src/renderer/src/components/task-page-source-context.tsx b/src/renderer/src/components/task-page-source-context.tsx index 539d01aa1f6..4557d646ca4 100644 --- a/src/renderer/src/components/task-page-source-context.tsx +++ b/src/renderer/src/components/task-page-source-context.tsx @@ -1,7 +1,7 @@ import type { GitLabTaskFilter, GitLabIssueFilter } from '@/components/task-page-localized-options' import type { GitHubWorkItem } from '../../../shared/github/work-item-types' import type { GitLabProjectRef, GitLabWorkItem } from '../../../shared/gitlab-types' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import type { Repo } from '../../../shared/repo-types' import { getLinkedWorkItemWorkspaceName, getLinkedWorkItemSuggestedName } from '@/lib/new-workspace' import { getJiraIssueKeyCasingSeedOptions } from '@/lib/jira-issue-key-casing' diff --git a/src/renderer/src/components/task-page/jira/Filters.linked-mode.test.tsx b/src/renderer/src/components/task-page/jira/Filters.linked-mode.test.tsx index faf059452f7..daf620ab353 100644 --- a/src/renderer/src/components/task-page/jira/Filters.linked-mode.test.tsx +++ b/src/renderer/src/components/task-page/jira/Filters.linked-mode.test.tsx @@ -7,7 +7,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { TooltipProvider } from '@/components/ui/tooltip' import { useAppStore } from '@/store' import type { TaskPageComposerActionsModel } from '../../use-task-page-composer-actions' -import type { JiraProjectReference } from '../../../../../shared/jira-project-reference' +import type { JiraProjectReference } from '../../../../../shared/jira/jira-project-reference' import TaskPage from '../TaskPage' import { TaskPageJiraFilters } from './Filters' diff --git a/src/renderer/src/components/task-page/jira/Filters.tsx b/src/renderer/src/components/task-page/jira/Filters.tsx index 7e02450b826..6da7c24eacd 100644 --- a/src/renderer/src/components/task-page/jira/Filters.tsx +++ b/src/renderer/src/components/task-page/jira/Filters.tsx @@ -12,7 +12,7 @@ import { LoaderCircle, Plus, RefreshCw, Search, X } from 'lucide-react' import { Input } from '@/components/ui/input' import { shouldSuppressEnterSubmit } from '@/lib/new-workspace-enter-guard' import { JiraProjectPicker } from '@/components/jira-project-picker' -import { matchesJiraProject } from '../../../../../shared/jira-project-reference' +import { matchesJiraProject } from '../../../../../shared/jira/jira-project-reference' export function TaskPageJiraFilters({ model }: { diff --git a/src/renderer/src/components/use-jira-create-assignee.ts b/src/renderer/src/components/use-jira-create-assignee.ts index e7565fe2709..c35b94c659c 100644 --- a/src/renderer/src/components/use-jira-create-assignee.ts +++ b/src/renderer/src/components/use-jira-create-assignee.ts @@ -1,5 +1,5 @@ import { useCallback, useState } from 'react' -import type { JiraUser } from '../../../shared/jira-types' +import type { JiraUser } from '../../../shared/jira/jira-types' export function useJiraCreateAssignee(providerKey: string, projectKey: string) { const scope = JSON.stringify([providerKey, projectKey]) diff --git a/src/renderer/src/components/use-jira-issue-comment-submission.ts b/src/renderer/src/components/use-jira-issue-comment-submission.ts index f5d7510acbb..82aeefc70b5 100644 --- a/src/renderer/src/components/use-jira-issue-comment-submission.ts +++ b/src/renderer/src/components/use-jira-issue-comment-submission.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react' import { toast } from 'sonner' import type { Dispatch, RefObject, SetStateAction } from 'react' -import type { JiraComment, JiraIssue } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { createBrowserUuid } from '@/lib/browser-uuid' import { getCommentBodySubmitState } from '@/lib/comment-body-submit-state' diff --git a/src/renderer/src/components/use-jira-issue-mutation-state.ts b/src/renderer/src/components/use-jira-issue-mutation-state.ts index 0ffb8840854..e37ca8dff0b 100644 --- a/src/renderer/src/components/use-jira-issue-mutation-state.ts +++ b/src/renderer/src/components/use-jira-issue-mutation-state.ts @@ -5,7 +5,7 @@ import { type RefObject, type SetStateAction } from 'react' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { subscribeJiraIssueMutation } from './jira-issue-mutation-queue' import { editedJiraIssueFields, diff --git a/src/renderer/src/components/use-jira-issue-remote-details.ts b/src/renderer/src/components/use-jira-issue-remote-details.ts index 5bb1b4674ce..09311ba875e 100644 --- a/src/renderer/src/components/use-jira-issue-remote-details.ts +++ b/src/renderer/src/components/use-jira-issue-remote-details.ts @@ -4,7 +4,7 @@ import { jiraListTransitionsForTarget } from '@/runtime/runtime-jira-client' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' -import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue, JiraTransition } from '../../../shared/jira/jira-types' export function useJiraIssueRemoteDetails( target: RuntimeClientTarget, diff --git a/src/renderer/src/components/use-jira-issue-workspace-data.ts b/src/renderer/src/components/use-jira-issue-workspace-data.ts index 670e471c1e5..fb794844f88 100644 --- a/src/renderer/src/components/use-jira-issue-workspace-data.ts +++ b/src/renderer/src/components/use-jira-issue-workspace-data.ts @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from 'react' -import type { JiraComment, JiraIssue, JiraPriority } from '../../../shared/jira-types' +import type { JiraComment, JiraIssue, JiraPriority } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { jiraGetIssueForTarget, jiraListPrioritiesForTarget } from '@/runtime/runtime-jira-client' import { diff --git a/src/renderer/src/components/use-jira-project-inventory.test.tsx b/src/renderer/src/components/use-jira-project-inventory.test.tsx index a340085ba63..469d3c5225d 100644 --- a/src/renderer/src/components/use-jira-project-inventory.test.tsx +++ b/src/renderer/src/components/use-jira-project-inventory.test.tsx @@ -1,7 +1,7 @@ // @vitest-environment happy-dom import { act, cleanup, renderHook, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { normalizeTaskSourceContext } from '../../../shared/task-source-context' import { useJiraProjectInventory } from './use-jira-project-inventory' diff --git a/src/renderer/src/components/use-jira-project-inventory.ts b/src/renderer/src/components/use-jira-project-inventory.ts index 275aa140fcb..29ad7ff0e93 100644 --- a/src/renderer/src/components/use-jira-project-inventory.ts +++ b/src/renderer/src/components/use-jira-project-inventory.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import type { TaskSourceContext } from '../../../shared/task-source-context' import { taskSourceRuntimeTarget } from '@/lib/task-source-runtime-target' diff --git a/src/renderer/src/components/use-task-page-composer-actions.ts b/src/renderer/src/components/use-task-page-composer-actions.ts index 16a732508a5..9b6e80c3f7c 100644 --- a/src/renderer/src/components/use-task-page-composer-actions.ts +++ b/src/renderer/src/components/use-task-page-composer-actions.ts @@ -2,7 +2,7 @@ import type { TaskPageJiraListEffectsModel } from './use-task-page-jira-list-eff import { useCallback } from 'react' import type { LinearIssue } from '../../../shared/linear/issue-types' import type { LinearWorkspaceSelection } from '../../../shared/linear/workspace-types' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { buildLinearIssueLinkedWorkItem } from '@/lib/linear-linked-work-item' import { getLinearIssueWorkspaceName } from '../../../shared/workspace-name' import { useAppStore } from '@/store' @@ -13,7 +13,7 @@ import { bindTaskPageJiraItemSourceContext } from './task-page-jira-item-source- import type { LinkedWorkItemSummary } from '@/lib/new-workspace' import { shouldHideTaskPageListChrome } from '@/components/task-page-list-chrome-visibility' import { getJiraIssueWorkspaceSeed } from './task-page-source-context' -import { findJiraIssueDefaultRepo } from '../../../shared/jira-project-reference' +import { findJiraIssueDefaultRepo } from '../../../shared/jira/jira-project-reference' import { getRepoWorkspaceCreationTargetHint } from '@/lib/project-host-workspace-target' export function useTaskPageComposerActions(model: TaskPageJiraListEffectsModel) { const { diff --git a/src/renderer/src/components/use-task-page-detail-routing.ts b/src/renderer/src/components/use-task-page-detail-routing.ts index 82dd8b9d295..a0b39c78e53 100644 --- a/src/renderer/src/components/use-task-page-detail-routing.ts +++ b/src/renderer/src/components/use-task-page-detail-routing.ts @@ -1,7 +1,7 @@ import type { TaskPageGitHubIssueDraftModel } from './use-task-page-github-issue-draft' import { useState, useMemo, useCallback } from 'react' import type { LinearIssue } from '../../../shared/linear/issue-types' -import type { JiraIssue } from '../../../shared/jira-types' +import type { JiraIssue } from '../../../shared/jira/jira-types' import { useAppStore } from '@/store' import { useShallow } from 'zustand/react/shallow' import { findTaskPageLinearIssue } from './task-page/linear/task-page-linear-cache-selectors' diff --git a/src/renderer/src/components/use-task-page-jira-creation-state.ts b/src/renderer/src/components/use-task-page-jira-creation-state.ts index 542ceffd4f9..e367c8ddf04 100644 --- a/src/renderer/src/components/use-task-page-jira-creation-state.ts +++ b/src/renderer/src/components/use-task-page-jira-creation-state.ts @@ -1,6 +1,6 @@ import type { TaskPageGitHubMutationStateModel } from './use-task-page-github-mutation-state' import { useState, useRef, useEffect } from 'react' -import type { JiraIssueType, JiraCreateField } from '../../../shared/jira-types' +import type { JiraIssueType, JiraCreateField } from '../../../shared/jira/jira-types' import { useTaskCreationDraftRetention } from '@/components/use-task-creation-draft-retention' import { writeNewJiraIssueDraft } from './task-page-draft-storage' import { useTaskPageJiraCreationProjects } from './use-task-page-jira-creation-projects' diff --git a/src/renderer/src/components/use-task-page-jira-list-effects.test.ts b/src/renderer/src/components/use-task-page-jira-list-effects.test.ts index 2767da34f0b..77a1bd2e9c9 100644 --- a/src/renderer/src/components/use-task-page-jira-list-effects.test.ts +++ b/src/renderer/src/components/use-task-page-jira-list-effects.test.ts @@ -3,7 +3,7 @@ import { act, cleanup, renderHook, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { TaskPageLinearCollectionEffectsModel } from './task-page/linear/use-task-page-linear-collection-effects' import { useTaskPageJiraListEffects } from './use-task-page-jira-list-effects' -import { restrictJiraQueryToProject } from '../../../shared/jira-project-reference' +import { restrictJiraQueryToProject } from '../../../shared/jira/jira-project-reference' import { buildJiraPresetJql } from '../../../shared/jira/jira-preset-jql' import { buildJiraTextMatchJql } from '../../../shared/jira/jira-search-input-jql' diff --git a/src/renderer/src/components/use-task-page-jira-list-effects.ts b/src/renderer/src/components/use-task-page-jira-list-effects.ts index 11f4593d01d..56ba02ef81c 100644 --- a/src/renderer/src/components/use-task-page-jira-list-effects.ts +++ b/src/renderer/src/components/use-task-page-jira-list-effects.ts @@ -19,7 +19,7 @@ import { JIRA_ITEM_LIMIT, TASK_SEARCH_DEBOUNCE_MS } from './task-page-source-con import { readLinkedJiraIssues } from './task-page-jira-linked-issues' import { ipcOrRuntimeTargetForHostId } from '@/runtime/runtime-client-target' import { buildJiraPresetJql } from '../../../shared/jira/jira-preset-jql' -import { restrictJiraQueryToProject } from '../../../shared/jira-project-reference' +import { restrictJiraQueryToProject } from '../../../shared/jira/jira-project-reference' export function useTaskPageJiraListEffects(model: TaskPageLinearCollectionEffectsModel) { const { accountBackedTaskSourceHostId, diff --git a/src/renderer/src/components/use-task-page-jira-list-state.owner.test.tsx b/src/renderer/src/components/use-task-page-jira-list-state.owner.test.tsx index 3dc81ec2b56..75bc5d04da8 100644 --- a/src/renderer/src/components/use-task-page-jira-list-state.owner.test.tsx +++ b/src/renderer/src/components/use-task-page-jira-list-state.owner.test.tsx @@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { TaskPageLinearViewStateModel } from './task-page/linear/use-task-page-linear-view-state' import type { ExecutionHostId } from '../../../shared/execution-host' import type { TaskSourceContext } from '../../../shared/task-source-context' -import type { JiraPriority } from '../../../shared/jira-types' +import type { JiraPriority } from '../../../shared/jira/jira-types' import { useTaskPageJiraListState } from './use-task-page-jira-list-state' const transport = vi.hoisted(() => ({ priorities: vi.fn() })) diff --git a/src/renderer/src/components/use-task-page-jira-list-state.ts b/src/renderer/src/components/use-task-page-jira-list-state.ts index 7b457c5b431..97eaff52f23 100644 --- a/src/renderer/src/components/use-task-page-jira-list-state.ts +++ b/src/renderer/src/components/use-task-page-jira-list-state.ts @@ -3,10 +3,14 @@ import type { JiraStatusCatalogItem } from './task-page-jira-status-catalog' import { useTaskPageJiraSavedFilters } from './use-task-page-jira-saved-filters' import { useTaskPageJiraFavouriteFilters } from './use-task-page-jira-favourite-filters' import type { JiraFavouriteFilter } from '../../../shared/jira/jira-favourite-filters' -import type { JiraSavedFilter } from '../../../shared/jira-saved-filters' +import type { JiraSavedFilter } from '../../../shared/jira/jira-saved-filters' import type { TaskPageLinearViewStateModel } from './task-page/linear/use-task-page-linear-view-state' import { useState, useMemo, useEffect, useCallback, type SetStateAction } from 'react' -import type { JiraIssue, JiraProjectStatusOrder, JiraPriority } from '../../../shared/jira-types' +import type { + JiraIssue, + JiraProjectStatusOrder, + JiraPriority +} from '../../../shared/jira/jira-types' import type { TaskPageJiraLoadError } from '@/components/task-page-jira-load-state' import type { TaskPageJiraJqlRejection } from '@/components/task-page-jira-search' import type { JiraPresetId } from '@/components/task-page-localized-options' diff --git a/src/renderer/src/components/use-task-page-jira-project-scope.ts b/src/renderer/src/components/use-task-page-jira-project-scope.ts index 582d80e487d..9238ca1bab8 100644 --- a/src/renderer/src/components/use-task-page-jira-project-scope.ts +++ b/src/renderer/src/components/use-task-page-jira-project-scope.ts @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react' import type { Repo } from '../../../shared/repo-types' -import type { JiraProjectReference } from '../../../shared/jira-project-reference' +import type { JiraProjectReference } from '../../../shared/jira/jira-project-reference' import { getRepoExecutionHostId, type ExecutionHostId } from '../../../shared/execution-host' import { resolveJiraSourceHostId } from '../../../shared/jira-source-host' import { getRepoHostIdentity } from '@/store/slices/repo-host-identity' diff --git a/src/renderer/src/components/use-task-page-jira-saved-filters.ts b/src/renderer/src/components/use-task-page-jira-saved-filters.ts index 696471b7783..2df7de1ef98 100644 --- a/src/renderer/src/components/use-task-page-jira-saved-filters.ts +++ b/src/renderer/src/components/use-task-page-jira-saved-filters.ts @@ -9,7 +9,7 @@ import type { JiraSavedFilterMutation, JiraSavedFilter, JiraSavedFilterState -} from '../../../shared/jira-saved-filters' +} from '../../../shared/jira/jira-saved-filters' import type { TaskPageLinearViewStateModel } from './task-page/linear/use-task-page-linear-view-state' import { translate } from '@/i18n/i18n' diff --git a/src/renderer/src/components/use-task-page-provider-metadata.ts b/src/renderer/src/components/use-task-page-provider-metadata.ts index 9816f95a612..e5ceef429b1 100644 --- a/src/renderer/src/components/use-task-page-provider-metadata.ts +++ b/src/renderer/src/components/use-task-page-provider-metadata.ts @@ -1,7 +1,7 @@ import type { TaskPageResumeRestorationModel } from './use-task-page-resume-restoration' import { useState, useEffect } from 'react' import type { LinearTeam } from '../../../shared/linear/workspace-types' -import type { JiraProject } from '../../../shared/jira-types' +import type { JiraProject } from '../../../shared/jira/jira-types' import { jiraListProjects } from '@/runtime/runtime-jira-client' import { defaultScopeSource } from '@/lib/default-creation-host' export function useTaskPageProviderMetadata(model: TaskPageResumeRestorationModel) { diff --git a/src/renderer/src/hooks/composer-state/composer-review-base-fencing.test.ts b/src/renderer/src/hooks/composer-state/composer-review-base-fencing.test.ts index 1cb2f820885..757165e8257 100644 --- a/src/renderer/src/hooks/composer-state/composer-review-base-fencing.test.ts +++ b/src/renderer/src/hooks/composer-state/composer-review-base-fencing.test.ts @@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { toast } from 'sonner' import type { GitHubPrStartPoint } from '../../../../shared/worktree/types' import type { LinearIssue } from '../../../../shared/linear/issue-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import { pr, mr, useReviewBaseSelectionFixture } from './composer-review-base-test-fixture' const linear: LinearIssue = { diff --git a/src/renderer/src/hooks/composer-state/composer-source-model.ts b/src/renderer/src/hooks/composer-state/composer-source-model.ts index c06a753fa29..687d26fefbe 100644 --- a/src/renderer/src/hooks/composer-state/composer-source-model.ts +++ b/src/renderer/src/hooks/composer-state/composer-source-model.ts @@ -1,7 +1,7 @@ import type { GitLabWorkItem } from '../../../../shared/gitlab-types' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import type { GitPushTarget } from '../../../../shared/worktree/types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { SparsePreset } from '../../../../shared/worktree/create-types' diff --git a/src/renderer/src/hooks/composer-state/issue-source-actions.ts b/src/renderer/src/hooks/composer-state/issue-source-actions.ts index c5f22daaea7..12dd2e9be64 100644 --- a/src/renderer/src/hooks/composer-state/issue-source-actions.ts +++ b/src/renderer/src/hooks/composer-state/issue-source-actions.ts @@ -33,7 +33,7 @@ type IssueSourceActionsInput = Pick< import { useCallback, useMemo } from 'react' import type { LinearIssue } from '../../../../shared/linear/issue-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import { toLinearLinkedWorkItem, getLinkedItemDisplayName, diff --git a/src/renderer/src/hooks/composer-state/jira-mapped-owner-flow.integration.test.tsx b/src/renderer/src/hooks/composer-state/jira-mapped-owner-flow.integration.test.tsx index b6617b467fc..9c5200feb07 100644 --- a/src/renderer/src/hooks/composer-state/jira-mapped-owner-flow.integration.test.tsx +++ b/src/renderer/src/hooks/composer-state/jira-mapped-owner-flow.integration.test.tsx @@ -17,7 +17,7 @@ import { useJiraProjectInventory } from '@/components/use-jira-project-inventory import { getRepoWorkspaceCreationTargetHint } from '@/lib/project-host-workspace-target' import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures' import { clearRuntimeCompatibilityCacheForTests } from '@/runtime/runtime-rpc-client' -import type { JiraIssue, JiraProject } from '../../../../shared/jira-types' +import type { JiraIssue, JiraProject } from '../../../../shared/jira/jira-types' import type { Repo } from '../../../../shared/repo-types' import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target' import type { CreateWorktreeResult } from '../../../../shared/worktree/create-types' diff --git a/src/renderer/src/lib/jira-issue-workspace-attachment.test.ts b/src/renderer/src/lib/jira-issue-workspace-attachment.test.ts index dc38a603e27..8d4967e86a4 100644 --- a/src/renderer/src/lib/jira-issue-workspace-attachment.test.ts +++ b/src/renderer/src/lib/jira-issue-workspace-attachment.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest' import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures' -import type { JiraIssue, JiraSite } from '../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../shared/jira/jira-types' import type { Worktree } from '../../../shared/worktree/types' import type { TaskSourceContext } from '../../../shared/task-source-context' import { diff --git a/src/renderer/src/lib/jira-issue-workspace-attachment.ts b/src/renderer/src/lib/jira-issue-workspace-attachment.ts index 7ac41683549..e4f09c9c5ca 100644 --- a/src/renderer/src/lib/jira-issue-workspace-attachment.ts +++ b/src/renderer/src/lib/jira-issue-workspace-attachment.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSite } from '../../../shared/jira-types' +import type { JiraIssue, JiraSite } from '../../../shared/jira/jira-types' import { getMatchingJiraSites, parseJiraIssueUrl, diff --git a/src/renderer/src/runtime/local-jira-search-cancellation.ts b/src/renderer/src/runtime/local-jira-search-cancellation.ts index 37524987790..6a4338bb4e3 100644 --- a/src/renderer/src/runtime/local-jira-search-cancellation.ts +++ b/src/renderer/src/runtime/local-jira-search-cancellation.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSiteSelection } from '../../../shared/jira-types' +import type { JiraIssue, JiraSiteSelection } from '../../../shared/jira/jira-types' import { createBrowserUuid } from '@/lib/browser-uuid' type LocalJiraSearchArgs = { jql: string; limit?: number; siteId?: JiraSiteSelection } diff --git a/src/renderer/src/runtime/runtime-jira-board-filter-compatibility.test.ts b/src/renderer/src/runtime/runtime-jira-board-filter-compatibility.test.ts index fb05c523356..b704e1d5ff1 100644 --- a/src/renderer/src/runtime/runtime-jira-board-filter-compatibility.test.ts +++ b/src/renderer/src/runtime/runtime-jira-board-filter-compatibility.test.ts @@ -1,9 +1,9 @@ // @vitest-environment happy-dom import { afterEach, beforeEach, expect, it, vi } from 'vitest' -import type { JiraIssueListFilters } from '../../../shared/jira-types' +import type { JiraIssueListFilters } from '../../../shared/jira/jira-types' import { JIRA_STATUS_FILTER_RUNTIME_CAPABILITY } from '../../../shared/jira-quick-filters' -import { JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY } from '../../../shared/protocol-version' +import { JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY } from '../../../shared/jira/jira-detail-capabilities' import { jiraListIssues } from './runtime-jira-client' import { clearRuntimeCompatibilityCacheForTests } from './runtime-rpc-client' import { createCompatibleRuntimeStatusResponse } from './runtime-compatibility-test-fixture' diff --git a/src/renderer/src/runtime/runtime-jira-client.test.ts b/src/renderer/src/runtime/runtime-jira-client.test.ts index 8684c13efca..8d43539d9c0 100644 --- a/src/renderer/src/runtime/runtime-jira-client.test.ts +++ b/src/renderer/src/runtime/runtime-jira-client.test.ts @@ -25,7 +25,7 @@ import { JIRA_TRANSITION_FIELDS_RUNTIME_CAPABILITY, JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY, JIRA_USER_FIELDS_UPDATE_REQUIRED_MESSAGE -} from '../../../shared/protocol-version' +} from '../../../shared/jira/jira-detail-capabilities' type RuntimeSubscribeArgs = Parameters[0] type RuntimeSubscribeCallbacks = Parameters[1] diff --git a/src/renderer/src/runtime/runtime-jira-client.ts b/src/renderer/src/runtime/runtime-jira-client.ts index 87d4438f01c..c2db87a49f3 100644 --- a/src/renderer/src/runtime/runtime-jira-client.ts +++ b/src/renderer/src/runtime/runtime-jira-client.ts @@ -19,7 +19,7 @@ import type { JiraSiteSelection, JiraTransition, JiraViewer -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { searchLocalJiraIssues } from './local-jira-search-cancellation' import { assertRuntimeEnvironmentCapability, callRuntimeRpc } from './runtime-rpc-client' @@ -45,7 +45,7 @@ export { jiraListPrioritiesForTarget, jiraListTransitionsForTarget } from './runtime-jira-detail-client' -import { JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY } from '../../../shared/protocol-version' +import { JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY } from '../../../shared/jira/jira-detail-capabilities' export { jiraLookupIssueSummary, jiraReadStatus } from './runtime-jira-summary-client' export { jiraCreateIssue, diff --git a/src/renderer/src/runtime/runtime-jira-connection-status.ts b/src/renderer/src/runtime/runtime-jira-connection-status.ts index b34447d16b3..ca8f1d132b0 100644 --- a/src/renderer/src/runtime/runtime-jira-connection-status.ts +++ b/src/renderer/src/runtime/runtime-jira-connection-status.ts @@ -3,7 +3,7 @@ import type { JiraConnectionStatus, JiraSite, JiraViewer -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { SecretAtRestProtection } from '../../../shared/secret-at-rest-protection' // Coverage records: tsc fails when the shared union gains or loses an arm. diff --git a/src/renderer/src/runtime/runtime-jira-detail-client.ts b/src/renderer/src/runtime/runtime-jira-detail-client.ts index 23a1a5d287e..b17490f2833 100644 --- a/src/renderer/src/runtime/runtime-jira-detail-client.ts +++ b/src/renderer/src/runtime/runtime-jira-detail-client.ts @@ -7,14 +7,14 @@ import type { JiraMutationResult, JiraPriority, JiraTransition -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { assertRuntimeEnvironmentCapability, callRuntimeRpc, runtimeEnvironmentSupportsCapability } from './runtime-rpc-client' -import { JIRA_TRANSITION_FIELDS_RUNTIME_CAPABILITY } from '../../../shared/protocol-version' +import { JIRA_TRANSITION_FIELDS_RUNTIME_CAPABILITY } from '../../../shared/jira/jira-detail-capabilities' import { RuntimeRpcCallError } from './runtime-rpc-result' import { readRuntimeJiraPayload } from './runtime-jira-payload-stream' diff --git a/src/renderer/src/runtime/runtime-jira-project-client.ts b/src/renderer/src/runtime/runtime-jira-project-client.ts index d024cdd8295..c676142a7bf 100644 --- a/src/renderer/src/runtime/runtime-jira-project-client.ts +++ b/src/renderer/src/runtime/runtime-jira-project-client.ts @@ -2,7 +2,7 @@ import type { JiraConnectionStatus, JiraProject, JiraSiteSelection -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { callRuntimeRpc } from './runtime-rpc-client' import { parseJiraConnectionStatus } from './runtime-jira-connection-status' diff --git a/src/renderer/src/runtime/runtime-jira-saved-filter-state.test.ts b/src/renderer/src/runtime/runtime-jira-saved-filter-state.test.ts index 27b60f07e9d..4b4caed0a3a 100644 --- a/src/renderer/src/runtime/runtime-jira-saved-filter-state.test.ts +++ b/src/renderer/src/runtime/runtime-jira-saved-filter-state.test.ts @@ -1,7 +1,7 @@ // @vitest-environment happy-dom import { afterEach, beforeEach, expect, it, vi } from 'vitest' import { readJiraSavedFilterState, mutateJiraSavedFilters } from './runtime-jira-saved-filter-state' -import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY } from '../../../shared/jira-saved-filter-capability' +import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY } from '../../../shared/jira/jira-saved-filter-capability' const { assertCapability, rpc } = vi.hoisted(() => ({ assertCapability: vi.fn(), rpc: vi.fn() })) vi.mock('./runtime-rpc-client', () => ({ assertRuntimeEnvironmentCapability: assertCapability, diff --git a/src/renderer/src/runtime/runtime-jira-saved-filter-state.ts b/src/renderer/src/runtime/runtime-jira-saved-filter-state.ts index 2adfabaecbb..e862a895717 100644 --- a/src/renderer/src/runtime/runtime-jira-saved-filter-state.ts +++ b/src/renderer/src/runtime/runtime-jira-saved-filter-state.ts @@ -2,11 +2,11 @@ import { normalizeJiraSavedFilterState, type JiraSavedFilterState, type JiraSavedFilterMutation -} from '../../../shared/jira-saved-filters' +} from '../../../shared/jira/jira-saved-filters' import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY, JIRA_SAVED_FILTER_UPDATE_REQUIRED -} from '../../../shared/jira-saved-filter-capability' +} from '../../../shared/jira/jira-saved-filter-capability' import { assertRuntimeEnvironmentCapability, callRuntimeRpc } from './runtime-rpc-client' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' diff --git a/src/renderer/src/runtime/runtime-jira-summary-client.ts b/src/renderer/src/runtime/runtime-jira-summary-client.ts index 6f9582b72d3..40c7a27cbb1 100644 --- a/src/renderer/src/runtime/runtime-jira-summary-client.ts +++ b/src/renderer/src/runtime/runtime-jira-summary-client.ts @@ -1,4 +1,4 @@ -import type { JiraConnectionStatus, JiraIssue } from '../../../shared/jira-types' +import type { JiraConnectionStatus, JiraIssue } from '../../../shared/jira/jira-types' import { createBrowserUuid } from '@/lib/browser-uuid' import { callRuntimeRpc } from './runtime-rpc-client' import { getJiraRuntimeTarget, type RuntimeJiraSettings } from './runtime-jira-target' diff --git a/src/renderer/src/runtime/runtime-jira-summary-generation-client.ts b/src/renderer/src/runtime/runtime-jira-summary-generation-client.ts index 322fcfc944d..eb8de03ac64 100644 --- a/src/renderer/src/runtime/runtime-jira-summary-generation-client.ts +++ b/src/renderer/src/runtime/runtime-jira-summary-generation-client.ts @@ -4,7 +4,7 @@ import type { JiraIssueSummaryGenerationCancellation, JiraIssueSummaryGenerationResult } from '../../../shared/jira/jira-issue-summary-generation' -import { JIRA_ISSUE_SUMMARY_RUNTIME_CAPABILITY } from '../../../shared/protocol-version' +import { JIRA_ISSUE_SUMMARY_RUNTIME_CAPABILITY } from '../../../shared/jira/jira-detail-capabilities' import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' import { callRuntimeRpc, runtimeEnvironmentSupportsCapability } from './runtime-rpc-client' diff --git a/src/renderer/src/runtime/runtime-jira-user-fields-client.ts b/src/renderer/src/runtime/runtime-jira-user-fields-client.ts index a7181fb4179..44b20955105 100644 --- a/src/renderer/src/runtime/runtime-jira-user-fields-client.ts +++ b/src/renderer/src/runtime/runtime-jira-user-fields-client.ts @@ -3,11 +3,11 @@ import type { JiraCreateIssueArgs, JiraCreateIssueResult, JiraUser -} from '../../../shared/jira-types' +} from '../../../shared/jira/jira-types' import { JIRA_USER_FIELDS_RUNTIME_CAPABILITY, JIRA_USER_FIELDS_UPDATE_REQUIRED_MESSAGE -} from '../../../shared/protocol-version' +} from '../../../shared/jira/jira-detail-capabilities' import { assertRuntimeEnvironmentCapability, callRuntimeRpc, diff --git a/src/renderer/src/store/repos/repo-update.ts b/src/renderer/src/store/repos/repo-update.ts index 8eae71827fb..76a13dcc6d6 100644 --- a/src/renderer/src/store/repos/repo-update.ts +++ b/src/renderer/src/store/repos/repo-update.ts @@ -4,7 +4,7 @@ import type { Repo } from '../../../../shared/repo-types' import { sanitizeRepoIcon } from '../../../../shared/repo-icon' import { normalizeRepoBadgeColor } from '../../../../shared/repo-badge-color' import { normalizeGhAccountBinding } from '../../../../shared/github/account-binding' -import { normalizeJiraProjectReference } from '../../../../shared/jira-project-reference' +import { normalizeJiraProjectReference } from '../../../../shared/jira/jira-project-reference' import { findRepoForHost, getRepoHostIdentityForParts, diff --git a/src/renderer/src/store/slices/jira-collection-read-actions.ts b/src/renderer/src/store/slices/jira-collection-read-actions.ts index 3700ad95a07..c6d8cacd7c6 100644 --- a/src/renderer/src/store/slices/jira-collection-read-actions.ts +++ b/src/renderer/src/store/slices/jira-collection-read-actions.ts @@ -2,7 +2,7 @@ import { normalizeJiraStatusSelection } from '../../../../shared/jira-quick-filt import { jiraListIssuesForTarget, jiraSearchIssues } from '@/runtime/runtime-jira-client' import { getJiraRuntimeTarget } from '@/runtime/runtime-jira-target' import { isIntegrationCredentialDecryptionError } from '../../../../shared/integration-credential-errors' -import type { JiraIssue, JiraSiteSelection } from '../../../../shared/jira-types' +import type { JiraIssue, JiraSiteSelection } from '../../../../shared/jira/jira-types' import type { JiraSlice, JiraSliceGet, JiraSliceSet } from './jira-slice-contract' import { canWriteJiraReadResult, diff --git a/src/renderer/src/store/slices/jira-connection-identity.test.ts b/src/renderer/src/store/slices/jira-connection-identity.test.ts index 01f9cae57eb..6f52e5ffd64 100644 --- a/src/renderer/src/store/slices/jira-connection-identity.test.ts +++ b/src/renderer/src/store/slices/jira-connection-identity.test.ts @@ -1,7 +1,7 @@ import { create } from 'zustand' import { beforeEach, expect, it, vi } from 'vitest' import type { AppState } from '../types' -import type { JiraConnectionStatus } from '../../../../shared/jira-types' +import type { JiraConnectionStatus } from '../../../../shared/jira/jira-types' import { createJiraSlice } from './jira' const jiraStatus = vi.hoisted(() => vi.fn()) diff --git a/src/renderer/src/store/slices/jira-issue-patch-action.test.ts b/src/renderer/src/store/slices/jira-issue-patch-action.test.ts index c175aa0b9df..a1e26894c3c 100644 --- a/src/renderer/src/store/slices/jira-issue-patch-action.test.ts +++ b/src/renderer/src/store/slices/jira-issue-patch-action.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it, vi } from 'vitest' import { getDefaultSettings } from '../../../../shared/constants' -import type { JiraIssue, JiraMutationResult } from '../../../../shared/jira-types' +import type { JiraIssue, JiraMutationResult } from '../../../../shared/jira/jira-types' import { getTaskSourceCacheScope, type TaskSourceContext diff --git a/src/renderer/src/store/slices/jira-issue-patch-action.ts b/src/renderer/src/store/slices/jira-issue-patch-action.ts index b884fbfd43c..f0917dd734f 100644 --- a/src/renderer/src/store/slices/jira-issue-patch-action.ts +++ b/src/renderer/src/store/slices/jira-issue-patch-action.ts @@ -1,5 +1,5 @@ import type { JiraSlice, JiraSliceSet } from './jira-slice-contract' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import { getJiraReadIdentity } from './jira-read-coordination' export function createJiraIssuePatchAction(set: JiraSliceSet): Pick { diff --git a/src/renderer/src/store/slices/jira-issue-read-actions.ts b/src/renderer/src/store/slices/jira-issue-read-actions.ts index 44425a23291..cfa4b9c1ed5 100644 --- a/src/renderer/src/store/slices/jira-issue-read-actions.ts +++ b/src/renderer/src/store/slices/jira-issue-read-actions.ts @@ -1,6 +1,6 @@ import { jiraGetIssue, jiraLookupIssueSummary } from '@/runtime/runtime-jira-client' import { isIntegrationCredentialDecryptionError } from '../../../../shared/integration-credential-errors' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { JiraSlice, JiraSliceGet, JiraSliceSet } from './jira-slice-contract' import { canWriteJiraReadResult, diff --git a/src/renderer/src/store/slices/jira-read-coordination.ts b/src/renderer/src/store/slices/jira-read-coordination.ts index 7ff77c32c77..3fb6386b933 100644 --- a/src/renderer/src/store/slices/jira-read-coordination.ts +++ b/src/renderer/src/store/slices/jira-read-coordination.ts @@ -6,7 +6,7 @@ import type { JiraConnectionStatus, JiraIssue, JiraSiteSelection -} from '../../../../shared/jira-types' +} from '../../../../shared/jira/jira-types' import { getTaskSourceCacheScope, getTaskSourceRuntimeSettings, diff --git a/src/renderer/src/store/slices/jira-slice-contract.ts b/src/renderer/src/store/slices/jira-slice-contract.ts index 66e80aac7af..7e375b4ac81 100644 --- a/src/renderer/src/store/slices/jira-slice-contract.ts +++ b/src/renderer/src/store/slices/jira-slice-contract.ts @@ -9,7 +9,7 @@ import type { JiraIssueListFilters, JiraSiteSelection, JiraViewer -} from '../../../../shared/jira-types' +} from '../../../../shared/jira/jira-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' export type JiraReadOptions = { diff --git a/src/renderer/src/store/slices/jira-sprint-filter-cache.test.ts b/src/renderer/src/store/slices/jira-sprint-filter-cache.test.ts index 1b47beff477..3f55ce89cfd 100644 --- a/src/renderer/src/store/slices/jira-sprint-filter-cache.test.ts +++ b/src/renderer/src/store/slices/jira-sprint-filter-cache.test.ts @@ -1,7 +1,7 @@ import { expect, it, vi } from 'vitest' import { create } from 'zustand' import type { AppState } from '../types' -import type { JiraIssue, JiraIssueListFilters } from '../../../../shared/jira-types' +import type { JiraIssue, JiraIssueListFilters } from '../../../../shared/jira/jira-types' import { createJiraSlice } from './jira' const { list } = vi.hoisted(() => ({ list: vi.fn() })) diff --git a/src/renderer/src/store/slices/jira-status-filter-cache.test.ts b/src/renderer/src/store/slices/jira-status-filter-cache.test.ts index 7efb801033b..298e197f8cb 100644 --- a/src/renderer/src/store/slices/jira-status-filter-cache.test.ts +++ b/src/renderer/src/store/slices/jira-status-filter-cache.test.ts @@ -1,7 +1,7 @@ import { beforeEach, expect, it, vi } from 'vitest' import { create } from 'zustand' import type { AppState } from '../types' -import type { JiraIssue, JiraIssueListFilters } from '../../../../shared/jira-types' +import type { JiraIssue, JiraIssueListFilters } from '../../../../shared/jira/jira-types' import { createJiraSlice } from './jira' const { list } = vi.hoisted(() => ({ list: vi.fn() })) vi.mock('@/runtime/runtime-jira-client', () => ({ diff --git a/src/renderer/src/store/slices/jira.test.ts b/src/renderer/src/store/slices/jira.test.ts index 1e7ec42a3ff..abe1d383c27 100644 --- a/src/renderer/src/store/slices/jira.test.ts +++ b/src/renderer/src/store/slices/jira.test.ts @@ -1,7 +1,11 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { create } from 'zustand' import type { AppState } from '../types' -import type { JiraConnectionStatus, JiraIssue, JiraViewer } from '../../../../shared/jira-types' +import type { + JiraConnectionStatus, + JiraIssue, + JiraViewer +} from '../../../../shared/jira/jira-types' import { getTaskSourceCacheScope, getTaskSourceRuntimeSettings, diff --git a/src/renderer/src/store/slices/ui-page-navigation.test.ts b/src/renderer/src/store/slices/ui-page-navigation.test.ts index 2abc4a334b5..2495f63a166 100644 --- a/src/renderer/src/store/slices/ui-page-navigation.test.ts +++ b/src/renderer/src/store/slices/ui-page-navigation.test.ts @@ -7,7 +7,7 @@ import type { Worktree } from '../../../../shared/worktree/types' import type { FeatureInteractionState } from '../../../../shared/feature-interactions' import type { TaskSourceContext } from '../../../../shared/task-source-context' import type { AppState } from '../types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import { createUIStore, makePersistedUI } from './ui-slice-test-harness' const mocks = vi.hoisted(() => ({ diff --git a/src/renderer/src/store/slices/ui/ui-slice-contract-core.ts b/src/renderer/src/store/slices/ui/ui-slice-contract-core.ts index ee5a5a44b77..93192f10c2b 100644 --- a/src/renderer/src/store/slices/ui/ui-slice-contract-core.ts +++ b/src/renderer/src/store/slices/ui/ui-slice-contract-core.ts @@ -6,7 +6,7 @@ import type { StateCreator } from 'zustand' import type { AppState } from '../../types' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' import type { GitLabWorkItem } from '../../../../../shared/gitlab-types' -import type { JiraIssue } from '../../../../../shared/jira-types' +import type { JiraIssue } from '../../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../../shared/linear/issue-types' import type { TaskProvider } from '../../../../../shared/task-providers' import type { TuiAgent } from '../../../../../shared/tui-agent' diff --git a/src/renderer/src/store/slices/worktree-nav-history-view-entries.test.ts b/src/renderer/src/store/slices/worktree-nav-history-view-entries.test.ts index 8b4c0ce43de..940ec0a77c2 100644 --- a/src/renderer/src/store/slices/worktree-nav-history-view-entries.test.ts +++ b/src/renderer/src/store/slices/worktree-nav-history-view-entries.test.ts @@ -2,7 +2,7 @@ import { createStore, type StoreApi } from 'zustand/vanilla' import { afterEach, describe, expect, it } from 'vitest' import type { AppState } from '../types' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { Worktree } from '../../../../shared/worktree/types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' import type { TaskSourceContext } from '../../../../shared/task-source-context' diff --git a/src/renderer/src/store/slices/worktree-nav-history.ts b/src/renderer/src/store/slices/worktree-nav-history.ts index 04e2529bec3..62024df5238 100644 --- a/src/renderer/src/store/slices/worktree-nav-history.ts +++ b/src/renderer/src/store/slices/worktree-nav-history.ts @@ -2,7 +2,7 @@ import type { StateCreator } from 'zustand' import type { AppState } from '../types' import { findWorktreeById } from './worktree-helpers' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' -import type { JiraIssue } from '../../../../shared/jira-types' +import type { JiraIssue } from '../../../../shared/jira/jira-types' import type { LinearIssue } from '../../../../shared/linear/issue-types' import type { GitLabWorkItem } from '../../../../shared/gitlab-types' import { diff --git a/src/renderer/src/web/preload-api/web-jira-filter-state-api.test.ts b/src/renderer/src/web/preload-api/web-jira-filter-state-api.test.ts index 161c7c77870..47730b43f95 100644 --- a/src/renderer/src/web/preload-api/web-jira-filter-state-api.test.ts +++ b/src/renderer/src/web/preload-api/web-jira-filter-state-api.test.ts @@ -3,7 +3,7 @@ import { afterEach, beforeEach, expect, it, vi } from 'vitest' import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY, JIRA_SAVED_FILTER_UPDATE_REQUIRED -} from '../../../../shared/jira-saved-filter-capability' +} from '../../../../shared/jira/jira-saved-filter-capability' import { JIRA_STATUS_FILTER_RUNTIME_CAPABILITY, JIRA_STATUS_FILTER_UPDATE_REQUIRED diff --git a/src/renderer/src/web/preload-api/web-jira-filter-state-api.ts b/src/renderer/src/web/preload-api/web-jira-filter-state-api.ts index a4d1f49b67c..9f6eb9bb61f 100644 --- a/src/renderer/src/web/preload-api/web-jira-filter-state-api.ts +++ b/src/renderer/src/web/preload-api/web-jira-filter-state-api.ts @@ -2,14 +2,14 @@ import type { PreloadApi } from '../../../../preload/api-types' import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY, JIRA_SAVED_FILTER_UPDATE_REQUIRED -} from '../../../../shared/jira-saved-filter-capability' +} from '../../../../shared/jira/jira-saved-filter-capability' import { JIRA_STATUS_FILTER_RUNTIME_CAPABILITY, JIRA_STATUS_FILTER_UPDATE_REQUIRED, type JiraQuickFilterState } from '../../../../shared/jira-quick-filters' import type { RuntimeCapability } from '../../../../shared/protocol-version' -import type { JiraSavedFilterState } from '../../../../shared/jira-saved-filters' +import type { JiraSavedFilterState } from '../../../../shared/jira/jira-saved-filters' import { callRuntimeResult, getRemoteRuntimeStatus } from './web-runtime-calls' import { assertActiveEnvironment, requireActiveEnvironment } from './web-runtime-session' diff --git a/src/shared/jira-issue-url.test.ts b/src/shared/jira-issue-url.test.ts index 3b0b1c09b40..3a1001f9240 100644 --- a/src/shared/jira-issue-url.test.ts +++ b/src/shared/jira-issue-url.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { JiraIssue, JiraSite } from './jira-types' +import type { JiraIssue, JiraSite } from './jira/jira-types' import { getMatchingJiraSites, isResolvedJiraIssueMatch, parseJiraIssueUrl } from './jira-issue-url' function site(id: string, siteUrl: string): JiraSite { diff --git a/src/shared/jira-issue-url.ts b/src/shared/jira-issue-url.ts index f578e1ba060..d8fbb41b64c 100644 --- a/src/shared/jira-issue-url.ts +++ b/src/shared/jira-issue-url.ts @@ -1,4 +1,4 @@ -import type { JiraIssue, JiraSite } from './jira-types' +import type { JiraIssue, JiraSite } from './jira/jira-types' export type ParsedJiraIssueUrl = { issueKey: string diff --git a/src/shared/jira-agent-capability.ts b/src/shared/jira/jira-agent-capability.ts similarity index 100% rename from src/shared/jira-agent-capability.ts rename to src/shared/jira/jira-agent-capability.ts diff --git a/src/shared/jira-detail-capabilities.ts b/src/shared/jira/jira-detail-capabilities.ts similarity index 90% rename from src/shared/jira-detail-capabilities.ts rename to src/shared/jira/jira-detail-capabilities.ts index 42f431cd50c..b64d6dfaa9e 100644 --- a/src/shared/jira-detail-capabilities.ts +++ b/src/shared/jira/jira-detail-capabilities.ts @@ -1,4 +1,4 @@ -import { JIRA_IMAGE_CAPABILITY } from './jira/jira-attachment-image' +import { JIRA_IMAGE_CAPABILITY } from './jira-attachment-image' export const JIRA_ISSUE_SUMMARY_RUNTIME_CAPABILITY = 'jira.issue-summary-generation.v1' as const export const JIRA_USER_FIELDS_RUNTIME_CAPABILITY = 'jira.user-fields.v1' as const diff --git a/src/shared/jira/jira-favourite-filters.ts b/src/shared/jira/jira-favourite-filters.ts index 4780bfdffb5..b7082fbe24d 100644 --- a/src/shared/jira/jira-favourite-filters.ts +++ b/src/shared/jira/jira-favourite-filters.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { MAX_JIRA_SAVED_FILTER_JQL_LENGTH } from '../jira-saved-filters' +import { MAX_JIRA_SAVED_FILTER_JQL_LENGTH } from './jira-saved-filters' import { getUtf8ByteLength, isUtf8ByteLengthWithinLimit } from '../utf8-byte-limits' export const MAX_JIRA_FAVOURITE_FILTERS = 100 diff --git a/src/shared/jira/jira-preset-jql.ts b/src/shared/jira/jira-preset-jql.ts index 28f18b0e0db..85240b1986b 100644 --- a/src/shared/jira/jira-preset-jql.ts +++ b/src/shared/jira/jira-preset-jql.ts @@ -1,4 +1,4 @@ -import type { JiraIssueFilter, JiraIssueListFilters } from '../jira-types' +import type { JiraIssueFilter, JiraIssueListFilters } from './jira-types' import { normalizeJiraStatusSelection } from '../jira-quick-filters' export function buildJiraPresetJql( diff --git a/src/shared/jira-project-reference.test.ts b/src/shared/jira/jira-project-reference.test.ts similarity index 96% rename from src/shared/jira-project-reference.test.ts rename to src/shared/jira/jira-project-reference.test.ts index aa07f8c6943..eecdc1af843 100644 --- a/src/shared/jira-project-reference.test.ts +++ b/src/shared/jira/jira-project-reference.test.ts @@ -1,12 +1,12 @@ import { describe, expect, it } from 'vitest' -import type { Repo } from './repo-types' +import type { Repo } from '../repo-types' import type { JiraIssue } from './jira-types' import { findJiraIssueDefaultRepo, normalizeJiraProjectReference, restrictJiraQueryToProject } from './jira-project-reference' -import { createRepoUpdateSchema } from './rpc-contract/repo-update-params' +import { createRepoUpdateSchema } from '../rpc-contract/repo-update-params' import { z } from 'zod' const project = { id: '10', key: 'ALP', name: 'Alpha', siteId: 'site-a' } diff --git a/src/shared/jira-project-reference.ts b/src/shared/jira/jira-project-reference.ts similarity index 91% rename from src/shared/jira-project-reference.ts rename to src/shared/jira/jira-project-reference.ts index 43ba9c02b9d..2ec92bdb1b7 100644 --- a/src/shared/jira-project-reference.ts +++ b/src/shared/jira/jira-project-reference.ts @@ -1,8 +1,8 @@ import type { JiraIssue, JiraProject } from './jira-types' -import type { Repo } from './repo-types' -import { getRepoExecutionHostId } from './execution-host' -import type { ExecutionHostId } from './execution-host' -import { resolveJiraSourceHostId } from './jira-source-host' +import type { Repo } from '../repo-types' +import { getRepoExecutionHostId } from '../execution-host' +import type { ExecutionHostId } from '../execution-host' +import { resolveJiraSourceHostId } from '../jira-source-host' export type JiraProjectReference = Pick & { siteId: string } diff --git a/src/shared/jira-saved-filter-capability.ts b/src/shared/jira/jira-saved-filter-capability.ts similarity index 100% rename from src/shared/jira-saved-filter-capability.ts rename to src/shared/jira/jira-saved-filter-capability.ts diff --git a/src/shared/jira-saved-filters.test.ts b/src/shared/jira/jira-saved-filters.test.ts similarity index 100% rename from src/shared/jira-saved-filters.test.ts rename to src/shared/jira/jira-saved-filters.test.ts diff --git a/src/shared/jira-saved-filters.ts b/src/shared/jira/jira-saved-filters.ts similarity index 98% rename from src/shared/jira-saved-filters.ts rename to src/shared/jira/jira-saved-filters.ts index 2cedd147714..a5b7ad7a585 100644 --- a/src/shared/jira-saved-filters.ts +++ b/src/shared/jira/jira-saved-filters.ts @@ -1,4 +1,4 @@ -import { isUtf8ByteLengthWithinLimit } from './utf8-byte-limits' +import { isUtf8ByteLengthWithinLimit } from '../utf8-byte-limits' export const MAX_JIRA_SAVED_FILTERS = 50 export const MAX_JIRA_SAVED_FILTER_ID_LENGTH = 128 export const MAX_JIRA_SAVED_FILTER_NAME_LENGTH = 80 diff --git a/src/shared/jira-transition-fields.test.ts b/src/shared/jira/jira-transition-fields.test.ts similarity index 100% rename from src/shared/jira-transition-fields.test.ts rename to src/shared/jira/jira-transition-fields.test.ts diff --git a/src/shared/jira-transition-fields.ts b/src/shared/jira/jira-transition-fields.ts similarity index 100% rename from src/shared/jira-transition-fields.ts rename to src/shared/jira/jira-transition-fields.ts diff --git a/src/shared/jira-types.ts b/src/shared/jira/jira-types.ts similarity index 98% rename from src/shared/jira-types.ts rename to src/shared/jira/jira-types.ts index a351dde3e39..9a5e2e4490e 100644 --- a/src/shared/jira-types.ts +++ b/src/shared/jira/jira-types.ts @@ -1,4 +1,4 @@ -import type { SecretAtRestProtection } from './secret-at-rest-protection' +import type { SecretAtRestProtection } from '../secret-at-rest-protection' // 'cloud' = Atlassian Cloud (email + API token, Basic auth, REST v3). // 'server' = self-hosted Jira Server/Data Center (personal access token, // Bearer auth, REST v2). Older stored sites omit the field and mean 'cloud'. diff --git a/src/shared/new-workspace/smart-workspace-source-results.ts b/src/shared/new-workspace/smart-workspace-source-results.ts index 4aa2de7511f..50802f0f43e 100644 --- a/src/shared/new-workspace/smart-workspace-source-results.ts +++ b/src/shared/new-workspace/smart-workspace-source-results.ts @@ -1,6 +1,6 @@ import type { GitHubWorkItem } from '../github/work-item-types' import type { GitLabWorkItem } from '../gitlab-types' -import type { JiraIssue } from '../jira-types' +import type { JiraIssue } from '../jira/jira-types' import type { LinearIssue } from '../linear/issue-types' import type { LinearCollectionResult } from '../linear/workspace-types' import type { BaseRefSearchResult } from '../repo-types' diff --git a/src/shared/new-workspace/workspace-source.ts b/src/shared/new-workspace/workspace-source.ts index d7764ad0e78..cbaa71a083f 100644 --- a/src/shared/new-workspace/workspace-source.ts +++ b/src/shared/new-workspace/workspace-source.ts @@ -1,6 +1,6 @@ import { getLinearOrganizationUrlKeyFromIssueUrl } from '../linear/links' import type { FolderWorkspaceLinkedTask } from '../folder-workspace-types' -import type { JiraIssue } from '../jira-types' +import type { JiraIssue } from '../jira/jira-types' import type { LinearIssue } from '../linear/issue-types' import { getLinkedWorkItemSuggestedName, diff --git a/src/shared/persisted-ui-state-types.ts b/src/shared/persisted-ui-state-types.ts index f0f7c852213..b4d4fc44ff3 100644 --- a/src/shared/persisted-ui-state-types.ts +++ b/src/shared/persisted-ui-state-types.ts @@ -1,5 +1,5 @@ import type { JiraQuickFilterState } from './jira-quick-filters' -import type { JiraSavedFilterState } from './jira-saved-filters' +import type { JiraSavedFilterState } from './jira/jira-saved-filters' import type { ReleaseChannel } from './release-channel' import type { WorkspaceCleanupUIState } from './workspace-cleanup' import type { FeatureTipId } from './feature-tips' diff --git a/src/shared/protocol-version.ts b/src/shared/protocol-version.ts index aefe94f3798..6285bb4e03c 100644 --- a/src/shared/protocol-version.ts +++ b/src/shared/protocol-version.ts @@ -65,7 +65,7 @@ export * from './ai-vault-runtime-capabilities' export * from './browser-runtime-capabilities' export * from './files-runtime-capabilities' export * from './host-runtime-capabilities' -export * from './jira-detail-capabilities' + export * from './mobile-runtime-capabilities' export * from './preflight-runtime-capabilities' export * from './source-control-runtime-capabilities' diff --git a/src/shared/repo-types.ts b/src/shared/repo-types.ts index db66e5b40e0..b1b28adb769 100644 --- a/src/shared/repo-types.ts +++ b/src/shared/repo-types.ts @@ -6,7 +6,7 @@ import type { ForkSyncMode } from './git-fork-sync' import type { GitRemoteIdentity } from './git-remote-identity' import type { RepoSourceControlAiOverrides } from './source-control-ai-types' import type { RepoProjectHostSetupMethod } from './project-types' -import type { JiraProjectReference } from './jira-project-reference' +import type { JiraProjectReference } from './jira/jira-project-reference' // ─── Repo ──────────────────────────────────────────────────────────── export type RepoKind = 'git' | 'folder' diff --git a/src/shared/rpc-contract/jira-saved-filter-params.ts b/src/shared/rpc-contract/jira-saved-filter-params.ts index 8586565ec56..61708fa4a01 100644 --- a/src/shared/rpc-contract/jira-saved-filter-params.ts +++ b/src/shared/rpc-contract/jira-saved-filter-params.ts @@ -4,7 +4,7 @@ import { MAX_JIRA_SAVED_FILTER_ID_LENGTH, MAX_JIRA_SAVED_FILTER_NAME_LENGTH, MAX_JIRA_SAVED_FILTER_JQL_LENGTH -} from '../jira-saved-filters' +} from '../jira/jira-saved-filters' const FilterId = z.string().trim().min(1).max(MAX_JIRA_SAVED_FILTER_ID_LENGTH) export const JiraSavedFilterMutationParam = z.discriminatedUnion('kind', [ diff --git a/src/shared/rpc-contract/repo-update-params.ts b/src/shared/rpc-contract/repo-update-params.ts index 012da5a9527..9d85913c382 100644 --- a/src/shared/rpc-contract/repo-update-params.ts +++ b/src/shared/rpc-contract/repo-update-params.ts @@ -3,7 +3,7 @@ import { normalizeRepoSourceControlAiOverrides } from '../source-control-ai' import { normalizeRepoBadgeColor } from '../repo-badge-color' import { sanitizeRepoIcon } from '../repo-icon' import { normalizeGhAccountBinding } from '../github/account-binding' -import { normalizeJiraProjectReference } from '../jira-project-reference' +import { normalizeJiraProjectReference } from '../jira/jira-project-reference' import { normalizeCustomWorktreeVisibilitySources, normalizeWorktreeVisibilitySourcePreferences diff --git a/src/shared/task-source-runtime-capabilities.ts b/src/shared/task-source-runtime-capabilities.ts index 4b4111046a3..be6f597bf13 100644 --- a/src/shared/task-source-runtime-capabilities.ts +++ b/src/shared/task-source-runtime-capabilities.ts @@ -1,11 +1,11 @@ -import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from './jira-agent-capability' +import { JIRA_AGENT_ACCESS_RUNTIME_CAPABILITY } from './jira/jira-agent-capability' import { JIRA_CURRENT_SPRINT_RUNTIME_CAPABILITY, JIRA_DETAIL_RUNTIME_CAPABILITIES, JIRA_TRANSITION_FIELDS_RUNTIME_CAPABILITY -} from './jira-detail-capabilities' +} from './jira/jira-detail-capabilities' import { JIRA_STATUS_FILTER_RUNTIME_CAPABILITY } from './jira-quick-filters' -import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY } from './jira-saved-filter-capability' +import { JIRA_SAVED_FILTER_RUNTIME_CAPABILITY } from './jira/jira-saved-filter-capability' export const TASK_SOURCE_CONTEXT_RUNTIME_CAPABILITY = 'task-source-context.v1' as const export const LINEAR_ISSUE_ATTRIBUTE_FILTER_RUNTIME_CAPABILITY = diff --git a/tests/e2e/jira-panel-layout.spec.ts b/tests/e2e/jira-panel-layout.spec.ts index ff9218ab045..6c5eeec14b1 100644 --- a/tests/e2e/jira-panel-layout.spec.ts +++ b/tests/e2e/jira-panel-layout.spec.ts @@ -1,5 +1,5 @@ import type { Page } from '@stablyai/playwright-test' -import type { JiraIssue } from '../../src/shared/jira-types' +import type { JiraIssue } from '../../src/shared/jira/jira-types' import { expect, test } from './helpers/orca-app' import { waitForSessionReady } from './helpers/store' @@ -72,8 +72,9 @@ test('Jira titles and sort headings adapt to panel width inside a wide window', const title = orcaPage.getByRole('heading', { name: ISSUE_TITLE }) await expect(title).toBeVisible() + let previousDesktopTitleWidth: number | null = null for (const width of [500, 780, 1050, 1320]) { - await title.evaluate((element, width) => { + const panelWidth = await title.evaluate((element, width) => { const host = element.closest('[role="button"]')?.parentElement?.parentElement?.parentElement ?.parentElement?.parentElement @@ -82,10 +83,15 @@ test('Jira titles and sort headings adapt to panel width inside a wide window', } host.style.width = `${width}px` host.style.maxWidth = 'none' + return host.getBoundingClientRect().width }, width) - await expect - .poll(() => title.evaluate((element) => element.getBoundingClientRect().width)) - .toBeGreaterThan(200) + expect(panelWidth).toBe(width) + const titleWidthExpectation = expect.poll(() => + title.evaluate((element) => element.getBoundingClientRect().width) + ) + await (width === 780 + ? titleWidthExpectation.toBeGreaterThanOrEqual(180) + : titleWidthExpectation.toBeGreaterThan(200)) const mobileSort = orcaPage.getByTestId('jira-mobile-sort-controls') const assignee = orcaPage.getByRole('button', { name: 'Assignee', exact: true }) await (width < 768 ? expect(mobileSort).toBeVisible() : expect(mobileSort).toBeHidden()) @@ -107,6 +113,11 @@ test('Jira titles and sort headings adapt to panel width inside a wide window', expect(grids[0].filter((_, index) => index !== 1)).toEqual( grids[1].filter((_, index) => index !== 1) ) + const titleWidth = await title.evaluate((element) => element.getBoundingClientRect().width) + if (previousDesktopTitleWidth !== null) { + expect(titleWidth).toBeGreaterThan(previousDesktopTitleWidth) + } + previousDesktopTitleWidth = titleWidth } } })