@allbluecn/web-app 0.19.4 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/LICENSE +661 -0
  2. package/package.json +35 -37
  3. package/public/fonts/Trap-font/Trap-Black.otf +0 -0
  4. package/public/fonts/Trap-font/Trap-Bold.otf +0 -0
  5. package/public/fonts/Trap-font/Trap-ExtraBold.otf +0 -0
  6. package/public/fonts/Trap-font/Trap-Light.otf +0 -0
  7. package/public/fonts/Trap-font/Trap-Medium.otf +0 -0
  8. package/public/fonts/Trap-font/Trap-Regular.otf +0 -0
  9. package/public/fonts/Trap-font/Trap-SemiBold.otf +0 -0
  10. package/public/fonts/buttersans-Rounded.otf +0 -0
  11. package/src/components/bug/__tests__/board-subgroups.test.tsx +1 -1
  12. package/src/components/bug/__tests__/board-view.test.tsx +1 -1
  13. package/src/components/bug/__tests__/comment-reactions.test.tsx +1 -1
  14. package/src/components/bug/__tests__/create-bug-dialog.test.tsx +2 -2
  15. package/src/components/bug/__tests__/filters-compat.test.tsx +1 -1
  16. package/src/components/bug/__tests__/fix-request-race.test.tsx +1 -1
  17. package/src/components/bug/__tests__/peek-modes.test.tsx +1 -1
  18. package/src/components/bug/__tests__/use-paged-bug-groups.test.tsx +1 -1
  19. package/src/components/bug/__tests__/view-type.test.tsx +1 -1
  20. package/src/components/bug/bug-list-view.tsx +2 -2
  21. package/src/components/bug/bug-toolbar.tsx +1 -1
  22. package/src/components/bug/create-bug-dialog.tsx +3 -3
  23. package/src/components/bug/detail/__tests__/activity-timeline.test.tsx +1 -1
  24. package/src/components/bug/detail/__tests__/bug-detail-collab.test.tsx +1 -1
  25. package/src/components/bug/detail/__tests__/repro-report-card.test.tsx +1 -1
  26. package/src/components/bug/detail/activity-tabs.tsx +1 -1
  27. package/src/components/bug/detail/activity-timeline.tsx +1 -1
  28. package/src/components/bug/detail/bug-detail-body.tsx +3 -3
  29. package/src/components/bug/detail/comment-input.tsx +1 -1
  30. package/src/components/bug/detail/comment-item.tsx +1 -1
  31. package/src/components/bug/detail/comment-reactions.tsx +1 -1
  32. package/src/components/bug/detail/comment-thread.tsx +1 -1
  33. package/src/components/bug/detail/props-section.tsx +2 -2
  34. package/src/components/bug/detail/repro-report-card.tsx +1 -1
  35. package/src/components/bug/detail/reproduce-steps-view.tsx +1 -1
  36. package/src/components/bug/display/use-paged-bug-groups.ts +2 -2
  37. package/src/components/bug/filters/field-configs.tsx +1 -1
  38. package/src/components/bug/inline-editors/assignee-editor.tsx +1 -1
  39. package/src/components/bug/peek-panel.tsx +2 -2
  40. package/src/components/bug/reproduce-steps-editor.tsx +1 -1
  41. package/src/components/bug/story-bugs-panel.tsx +2 -1
  42. package/src/components/bug/views/board-view.tsx +2 -2
  43. package/src/components/bug/views/bug-list/batch-toolbar.tsx +1 -1
  44. package/src/components/bug/views/bug-list/group.tsx +1 -1
  45. package/src/components/bug/views/bug-list/index.tsx +1 -1
  46. package/src/components/bug/views/bug-list/inline-bug-creator.tsx +1 -1
  47. package/src/components/bug/views/bug-list/row.tsx +2 -2
  48. package/src/components/bug/views/create-view-dialog.tsx +1 -1
  49. package/src/components/iteration/iteration-progress-bar.tsx +2 -2
  50. package/src/components/knowledge/public/legal-compliance-editor.tsx +1 -1
  51. package/src/components/layout/sidebar-03/nav-knowledge.tsx +1 -1
  52. package/src/components/layout/sidebar-03/nav-workspace.tsx +1 -1
  53. package/src/components/shared-kit/list-kit/kanban/__tests__/instance-key.test.ts +1 -1
  54. package/src/components/story/__tests__/constants.test.ts +1 -1
  55. package/src/components/story/__tests__/dependency-type-badge.test.ts +1 -1
  56. package/src/components/story/__tests__/peek-panel-patch-sync.test.tsx +1 -1
  57. package/src/components/story/__tests__/story-list-view-peek-sync.test.tsx +1 -1
  58. package/src/components/story/ai/story-ai-panel.tsx +1 -1
  59. package/src/components/story/ai/story-ai-preview-list.tsx +2 -2
  60. package/src/components/story/columns.tsx +2 -2
  61. package/src/components/story/create-story-dialog.tsx +4 -4
  62. package/src/components/story/detail/__tests__/activity-timeline.test.tsx +1 -1
  63. package/src/components/story/detail/__tests__/associated-attachments-panel.test.tsx +1 -1
  64. package/src/components/story/detail/__tests__/story-collab.test.tsx +1 -1
  65. package/src/components/story/detail/activity-tabs.tsx +1 -1
  66. package/src/components/story/detail/activity-timeline.tsx +2 -2
  67. package/src/components/story/detail/comment-input.tsx +1 -1
  68. package/src/components/story/detail/comment-item.tsx +1 -1
  69. package/src/components/story/detail/comment-thread.tsx +1 -1
  70. package/src/components/story/detail/reaction-bar.tsx +1 -1
  71. package/src/components/story/detail/story-detail-body.tsx +4 -4
  72. package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +2 -2
  73. package/src/components/story/detail/story-detail-toolbar/children.tsx +1 -1
  74. package/src/components/story/detail/story-detail-toolbar/dependency-panel.tsx +3 -3
  75. package/src/components/story/detail/story-detail-toolbar/index.tsx +8 -8
  76. package/src/components/story/detail/story-detail-toolbar/related-test-cases.tsx +2 -2
  77. package/src/components/story/detail/story-properties.tsx +2 -2
  78. package/src/components/story/display/__tests__/flatten-story-groups.test.ts +1 -1
  79. package/src/components/story/display/__tests__/group-fields.test.ts +1 -1
  80. package/src/components/story/display/__tests__/group-resolver.test.ts +2 -2
  81. package/src/components/story/display/__tests__/order-resolver.test.ts +1 -1
  82. package/src/components/story/display/__tests__/use-grouped-stories.test.ts +1 -1
  83. package/src/components/story/display/__tests__/use-paged-story-groups.test.ts +1 -1
  84. package/src/components/story/display/flatten-story-groups.ts +1 -1
  85. package/src/components/story/display/group-fields.ts +2 -2
  86. package/src/components/story/display/group-resolver.tsx +2 -2
  87. package/src/components/story/display/order-resolver.ts +2 -2
  88. package/src/components/story/display/types.ts +1 -1
  89. package/src/components/story/display/use-grouped-stories.ts +1 -1
  90. package/src/components/story/display/use-paged-story-groups.ts +2 -2
  91. package/src/components/story/entity-overlay.ts +24 -0
  92. package/src/components/story/filters/field-configs.tsx +2 -2
  93. package/src/components/story/inline-editors/assignee-editor.tsx +1 -1
  94. package/src/components/story/inline-editors/dependency-type-select.tsx +1 -1
  95. package/src/components/story/inline-editors/parent-story-editor.tsx +2 -2
  96. package/src/components/story/inline-editors/priority-editor.tsx +2 -2
  97. package/src/components/story/inline-editors/state-editor.tsx +2 -2
  98. package/src/components/story/inline-editors/story-select-dialog.tsx +2 -2
  99. package/src/components/story/peek-panel.tsx +3 -3
  100. package/src/components/story/priority-icon.tsx +2 -2
  101. package/src/components/story/relations/__tests__/attachment-manage-dialog.test.tsx +1 -1
  102. package/src/components/story/relations/__tests__/design-select-dialog.test.tsx +1 -1
  103. package/src/components/story/relations/__tests__/knowledge-select-dialog.test.tsx +1 -1
  104. package/src/components/story/relations/__tests__/link-manage-dialog.test.tsx +1 -1
  105. package/src/components/story/relations/attachment-manage-dialog.tsx +4 -4
  106. package/src/components/story/relations/design-select-dialog.tsx +2 -2
  107. package/src/components/story/relations/knowledge-select-dialog.tsx +2 -2
  108. package/src/components/story/relations/link-manage-dialog.tsx +2 -2
  109. package/src/components/story/relations/story-ref-row.tsx +3 -3
  110. package/src/components/story/story-list-table.tsx +1 -1
  111. package/src/components/story/story-list-view.tsx +1 -1
  112. package/src/components/story/story-toolbar.tsx +1 -1
  113. package/src/components/story/views/__tests__/calendar-view.test.tsx +1 -1
  114. package/src/components/story/views/__tests__/kanban-drop-subgroup.test.ts +1 -1
  115. package/src/components/story/views/__tests__/kanban-peek-sync.test.tsx +2 -2
  116. package/src/components/story/views/__tests__/kanban-view-membership-sync.test.tsx +1 -1
  117. package/src/components/story/views/__tests__/timeline-view.test.tsx +1 -1
  118. package/src/components/story/views/calendar/__tests__/mappers.test.ts +1 -1
  119. package/src/components/story/views/calendar/mappers.ts +1 -1
  120. package/src/components/story/views/calendar-view.tsx +1 -1
  121. package/src/components/story/views/create-view-dialog.tsx +1 -1
  122. package/src/components/story/views/kanban-view.tsx +2 -2
  123. package/src/components/story/views/story-list/batch-preview-dialog.tsx +2 -2
  124. package/src/components/story/views/story-list/batch-toolbar.tsx +2 -2
  125. package/src/components/story/views/story-list/group.tsx +2 -2
  126. package/src/components/story/views/story-list/index.tsx +2 -2
  127. package/src/components/story/views/story-list/inline-story-creator.tsx +2 -2
  128. package/src/components/story/views/story-list/row.tsx +2 -2
  129. package/src/components/story/views/story-list/use-flat-rows.ts +1 -1
  130. package/src/components/story/views/timeline/__tests__/mappers.test.ts +2 -2
  131. package/src/components/story/views/timeline/mappers.ts +2 -2
  132. package/src/components/story/views/timeline/use-date-commit.ts +1 -1
  133. package/src/components/story/views/timeline-view.tsx +2 -2
  134. package/src/components/testcase/__tests__/case-row.test.tsx +1 -1
  135. package/src/components/testcase/__tests__/create-dialog-scope.test.tsx +1 -1
  136. package/src/components/testcase/__tests__/display-options.test.tsx +1 -1
  137. package/src/components/testcase/__tests__/export-entry.test.tsx +1 -1
  138. package/src/components/testcase/__tests__/list-view.test.tsx +1 -1
  139. package/src/components/testcase/__tests__/step-editor.test.tsx +1 -1
  140. package/src/components/testcase/__tests__/toolbar.test.tsx +1 -1
  141. package/src/components/testcase/create-testcase-dialog.tsx +1 -1
  142. package/src/components/testcase/detail/case-detail-body.tsx +1 -1
  143. package/src/components/testcase/detail/properties.tsx +1 -1
  144. package/src/components/testcase/display/display-dropdown.tsx +2 -2
  145. package/src/components/testcase/display/use-testcase-display-options.ts +1 -1
  146. package/src/components/testcase/filters/field-configs.tsx +1 -1
  147. package/src/components/testcase/inline-editors/assignee-editor.tsx +1 -1
  148. package/src/components/testcase/list/case-row.tsx +1 -1
  149. package/src/components/testcase/list/grouped-list.tsx +1 -1
  150. package/src/components/testcase/list-view.tsx +2 -2
  151. package/src/components/testcase/runs/convert-bug-button.tsx +2 -2
  152. package/src/components/testcase/testcase-toolbar.tsx +2 -2
  153. package/src/components/testcase/views/batch-toolbar.tsx +1 -1
  154. package/src/components/testcase/views/board-view.tsx +2 -2
  155. package/src/lib/changelog/sdk-versions.ts +2 -2
  156. package/src/lib/collections/knowledge/knowledge-bases-collection.ts +2 -1
  157. package/src/lib/collections/query-keys.ts +18 -0
  158. package/src/lib/collections/reference/users-brief-collection.ts +2 -1
  159. package/src/lib/collections/reference/workspaces-collection.ts +2 -1
  160. package/src/lib/story/__tests__/activity-grouper.test.ts +1 -1
  161. package/src/lib/story/activity-grouper.ts +1 -1
  162. package/src/paraglide/.gitignore +3 -0
  163. package/src/paraglide/.prettierignore +3 -0
  164. package/src/paraglide/README.md +162 -0
  165. package/src/paraglide/messages/_index.js +88192 -0
  166. package/src/paraglide/messages/en.js +28230 -0
  167. package/src/paraglide/messages/zh.js +28228 -0
  168. package/src/paraglide/messages.js +4 -0
  169. package/src/paraglide/registry.js +46 -0
  170. package/src/paraglide/runtime.js +2311 -0
  171. package/src/paraglide/server.js +294 -0
  172. package/src/routes/_nav/bugs/$bugId/route.lazy.tsx +2 -2
  173. package/src/routes/_nav/projects/$projectId/iterations/$iterationId/route.lazy.tsx +1 -1
  174. package/src/routes/_nav/route.tsx +1 -2
  175. package/src/routes/_nav/stories/$storyId/route.lazy.tsx +2 -2
  176. package/src/routes/_nav/stories/$storyId/route.tsx +1 -1
  177. package/src/routes/api/design/prototype/__tests__/route.test.ts +4 -1
  178. package/src/server/__tests__/task-executor.test.ts +7 -0
  179. package/src/server/serverFns/__tests__/legal-code-canonical.test.ts +169 -0
  180. package/src/server/serverFns/__tests__/story-tree.test.ts +0 -1
  181. package/src/server/serverFns/__tests__/update-bug-guard.test.ts +1 -1
  182. package/src/server/serverFns/bug/__tests__/bug-comments.test.ts +1 -1
  183. package/src/server/serverFns/bug/__tests__/bug-groups.test.ts +1 -1
  184. package/src/server/serverFns/bug/bug-activities.ts +2 -2
  185. package/src/server/serverFns/bug/bug-comments.ts +3 -3
  186. package/src/server/serverFns/bug/bug-crud/detail-select.ts +1 -1
  187. package/src/server/serverFns/bug/bug-crud/detail.ts +2 -2
  188. package/src/server/serverFns/bug/bug-crud.ts +1 -1
  189. package/src/server/serverFns/bug/bug-group-query.ts +1 -1
  190. package/src/server/serverFns/bug/bug-groups.ts +2 -2
  191. package/src/server/serverFns/bug/bug-story-utils.ts +1 -1
  192. package/src/server/serverFns/iteration/iteration-crud.ts +1 -1
  193. package/src/server/serverFns/knowledge/public/legal/create.ts +3 -0
  194. package/src/server/serverFns/knowledge/public/legal/update.ts +8 -8
  195. package/src/server/serverFns/story/link-preview.ts +3 -2
  196. package/src/server/serverFns/story/story-children.ts +1 -1
  197. package/src/server/serverFns/story/story-comments.ts +1 -1
  198. package/src/server/serverFns/story/story-crud/bulk.ts +1 -1
  199. package/src/server/serverFns/story/story-crud.ts +1 -1
  200. package/src/server/serverFns/story/story-dependencies.ts +1 -1
  201. package/src/server/serverFns/story/story-groups.ts +1 -1
  202. package/src/server/serverFns/testcase/__tests__/testcase-groups.test.ts +1 -1
  203. package/src/server/serverFns/testcase/testcase-board.ts +1 -1
  204. package/src/server/serverFns/testcase/testcase-crud.ts +1 -1
  205. package/src/server/serverFns/testcase/testcase-display-options.ts +1 -1
  206. package/src/server/serverFns/testcase/testcase-filter-views.ts +1 -1
  207. package/src/server/serverFns/testcase/types.ts +1 -1
  208. package/src/server/story/types.ts +2 -2
  209. package/src/shared/bug/__tests__/constants.test.ts +1 -1
  210. package/src/{components → shared}/bug/types.ts +4 -3
  211. package/src/{components → shared}/story/constants.ts +1 -1
  212. package/src/{components → shared}/story/types.ts +1 -7
  213. /package/src/{components/testcase/display → shared/testcase}/field-configs.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allbluecn/web-app",
3
- "version": "0.19.4",
3
+ "version": "0.20.0",
4
4
  "license": "AGPL-3.0-or-later",
5
5
  "type": "module",
6
6
  "files": [
@@ -57,42 +57,11 @@
57
57
  "publishConfig": {
58
58
  "access": "public"
59
59
  },
60
- "packageManager": "pnpm@12.4.1",
61
- "scripts": {
62
- "dev": "vite --port 3000",
63
- "build": "vite build",
64
- "start": "vite preview",
65
- "build:cf": "DEPLOY_TARGET=cloudflare vite build",
66
- "deploy:cf": "pnpm build:cf && node ../../scripts/check-cf-worker-size.mjs . dist/server/wrangler.json && wrangler deploy -c dist/server/wrangler.json",
67
- "preview:cf": "pnpm build:cf && wrangler dev -c dist/server/wrangler.json --test-scheduled --port 8787",
68
- "prelint": "node scripts/check-no-use-client.mjs",
69
- "lint": "eslint",
70
- "test": "vitest",
71
- "test:ui": "vitest --ui",
72
- "test:run": "vitest run --project unit --project integration",
73
- "pretest:coverage": "pnpm assemble",
74
- "test:coverage": "vitest run --project unit --project integration --coverage.enabled",
75
- "setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
76
- "check:features": "tsx scripts/check-feature-keys.ts",
77
- "check:no-use-client": "node scripts/check-no-use-client.mjs",
78
- "assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
79
- "predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
80
- "prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
81
- "pretest": "pnpm assemble",
82
- "pretest:run": "pnpm assemble",
83
- "prepublishOnly": "node scripts/check-sdk-versions.mjs",
84
- "typecheck": "node scripts/i18n/compile.mjs && tsc --noEmit",
85
- "test:unit": "vitest run --project unit",
86
- "test:visual": "vitest run --project vrt",
87
- "test:bench": "vitest bench --project \"integration (bench)\"",
88
- "perf:ttft": "node ../../scripts/perf/ttft-probe.mjs",
89
- "security:zap": "bash ../../scripts/security/zap-local.sh"
90
- },
91
60
  "dependencies": {
92
61
  "@ag-ui/core": "1.0.0",
93
- "@allbluecn/collab-core": "workspace:*",
94
- "@allbluecn/database": "workspace:*",
95
- "@allbluecn/kernel": "workspace:*",
62
+ "@allbluecn/collab-core": "0.2.0",
63
+ "@allbluecn/database": "0.10.0",
64
+ "@allbluecn/kernel": "0.10.2",
96
65
  "@ariakit/react": "^0.4.28",
97
66
  "@auth/core": "^0.41.2",
98
67
  "@auth/prisma-adapter": "^2.11.2",
@@ -317,7 +286,7 @@
317
286
  "typescript": "~6.0.3",
318
287
  "typescript-eslint": "^8.72.0",
319
288
  "vite": "^8.3.3",
320
- "vitest": "catalog:",
289
+ "vitest": "^5.0.5",
321
290
  "vitest-browser-react": "2.3.0",
322
291
  "wrangler": "^4.99.0",
323
292
  "y-protocols": "1.0.7"
@@ -328,5 +297,34 @@
328
297
  },
329
298
  "optionalDependencies": {
330
299
  "@tauri-apps/api": "^2.11.1"
300
+ },
301
+ "scripts": {
302
+ "dev": "vite --port 3000",
303
+ "build": "vite build",
304
+ "start": "vite preview",
305
+ "build:cf": "DEPLOY_TARGET=cloudflare vite build",
306
+ "deploy:cf": "pnpm build:cf && node ../../scripts/check-cf-worker-size.mjs . dist/server/wrangler.json && wrangler deploy -c dist/server/wrangler.json",
307
+ "preview:cf": "pnpm build:cf && wrangler dev -c dist/server/wrangler.json --test-scheduled --port 8787",
308
+ "prelint": "node scripts/check-no-use-client.mjs",
309
+ "lint": "eslint",
310
+ "test": "vitest",
311
+ "test:ui": "vitest --ui",
312
+ "test:run": "vitest run --project unit --project integration",
313
+ "pretest:coverage": "pnpm assemble",
314
+ "test:coverage": "vitest run --project unit --project integration --coverage.enabled",
315
+ "setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
316
+ "check:features": "tsx scripts/check-feature-keys.ts",
317
+ "check:no-use-client": "node scripts/check-no-use-client.mjs",
318
+ "assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
319
+ "predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
320
+ "prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
321
+ "pretest": "pnpm assemble",
322
+ "pretest:run": "pnpm assemble",
323
+ "typecheck": "node scripts/i18n/compile.mjs && tsc --noEmit",
324
+ "test:unit": "vitest run --project unit",
325
+ "test:visual": "vitest run --project vrt",
326
+ "test:bench": "vitest bench --project \"integration (bench)\"",
327
+ "perf:ttft": "node ../../scripts/perf/ttft-probe.mjs",
328
+ "security:zap": "bash ../../scripts/security/zap-local.sh"
331
329
  }
332
- }
330
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -64,7 +64,7 @@ import {
64
64
  toGroupFieldPatch,
65
65
  } from "../views/board-view";
66
66
  import type { BugBoardViewProps } from "../views/board-view";
67
- import type { BugListItem } from "../types";
67
+ import type { BugListItem } from "@/shared/bug/types";
68
68
 
69
69
  afterEach(() => {
70
70
  cleanup();
@@ -58,7 +58,7 @@ import {
58
58
  toGroupFieldPatch,
59
59
  } from "../views/board-view";
60
60
  import type { BugBoardViewProps } from "../views/board-view";
61
- import type { BugListItem } from "../types";
61
+ import type { BugListItem } from "@/shared/bug/types";
62
62
  import { STATE_COLOR } from "@/shared/bug/constants";
63
63
 
64
64
  afterEach(() => {
@@ -27,7 +27,7 @@
27
27
  // 的 JSX 调用保证(本仓 tsc + 本测试共同锁住组件存在性)。
28
28
  import { afterEach, describe, expect, it, vi } from "vitest";
29
29
  import { act, cleanup, fireEvent, render, screen, within } from "@testing-library/react";
30
- import type { ReactionGroup } from "@/components/story/types";
30
+ import type { ReactionGroup } from "@/shared/story/types";
31
31
 
32
32
  // ---------------------------------------------------------------------------
33
33
  // mock(vi.mock 提升:真实 serverFn / toast / emoji-picker-react 均不参与)
@@ -55,8 +55,8 @@ vi.mock("@/components/tiptap/notion-like", () => ({
55
55
 
56
56
  import { CreateBugDialog } from "../create-bug-dialog";
57
57
  import { ReproduceStepsEditor } from "../reproduce-steps-editor";
58
- import type { ReproduceSteps } from "../types";
59
- import type { UserBrief } from "@/components/story/types";
58
+ import type { ReproduceSteps } from "@/shared/bug/types";
59
+ import type { UserBrief } from "@/shared/story/types";
60
60
 
61
61
  const USERS: UserBrief[] = [
62
62
  { id: "u1", username: "alice", email: "a@test.dev", avatarConfig: null, bgShape: null, bgColor: null },
@@ -26,7 +26,7 @@ import { describe, it, expect, afterEach } from "vitest";
26
26
  import { render, screen, cleanup } from "@testing-library/react";
27
27
  import { TooltipProvider } from "@/components/ui/tooltip";
28
28
  import { AppliedFilters, BugFilterToggle, type FilterCondition } from "../filters";
29
- import type { UserBrief } from "@/components/story/types";
29
+ import type { UserBrief } from "@/shared/story/types";
30
30
 
31
31
  const FIXTURE: FilterCondition[] = [
32
32
  { id: "bfc_1", property: "title", operator: "contains", value: "超时" },
@@ -102,7 +102,7 @@ vi.mock("@/components/tiptap/notion-like", () => ({
102
102
  import { BugDetailBody } from "../detail/bug-detail-body";
103
103
  import { BugPanelHeader } from "../bug-panel-header";
104
104
  import { BugBatchToolbar } from "../views/bug-list/batch-toolbar";
105
- import type { BugDetail } from "../types";
105
+ import type { BugDetail } from "@/shared/bug/types";
106
106
 
107
107
  const bugRow = (over: Partial<BugDetail> = {}): BugDetail => ({
108
108
  id: "bg-1",
@@ -104,7 +104,7 @@ vi.mock("@tanstack/react-virtual", async (importOriginal) => {
104
104
 
105
105
  import { BugPeekPanel } from "../peek-panel";
106
106
  import { BugListView } from "../bug-list-view";
107
- import type { BugDetail } from "../types";
107
+ import type { BugDetail } from "@/shared/bug/types";
108
108
  import { PEEK_DOCK_SLOT_ID } from "@/lib/peek-dock";
109
109
 
110
110
  const baseBug: BugDetail = {
@@ -17,7 +17,7 @@
17
17
 
18
18
  import { describe, it, expect, vi, beforeEach } from "vitest";
19
19
  import { renderHook, waitFor, act, render, screen, fireEvent, cleanup } from "@testing-library/react";
20
- import type { BugListItem } from "../types";
20
+ import type { BugListItem } from "@/shared/bug/types";
21
21
  import { DEFAULT_BUG_DISPLAY_OPTIONS } from "@/shared/bug/display-types";
22
22
  import type { PagedBugsArgs } from "../display/use-paged-bug-groups";
23
23
 
@@ -81,7 +81,7 @@ import { BugListView } from "../bug-list-view";
81
81
  import { isBugView } from "../views/view-types";
82
82
  import { BugListRow } from "../views/bug-list/row";
83
83
  import { BugBoardView } from "../views/board-view";
84
- import type { BugListItem } from "../types";
84
+ import type { BugListItem } from "@/shared/bug/types";
85
85
  import type { ReorderEntry } from "@/components/shared-kit/list-kit/kanban/drop-commit";
86
86
 
87
87
  afterEach(() => {
@@ -31,7 +31,7 @@ import {
31
31
  deleteBugViewFn,
32
32
  reorderBugsFn,
33
33
  } from "@/server/serverFns/bug";
34
- import type { UserBrief } from "@/components/story/types";
34
+ import type { UserBrief } from "@/shared/story/types";
35
35
  import { usePagedBugGroups, type PagedBugGroupNode } from "./display/use-paged-bug-groups";
36
36
  import { useBugDisplayOptions } from "./display/use-bug-display-options";
37
37
  import type { BugGroupKey } from "@/shared/bug/display-types";
@@ -42,7 +42,7 @@ import type { ReorderEntry } from "@/components/shared-kit/list-kit/kanban/drop-
42
42
  import { manualOrderSwitchPatch } from "@/components/shared-kit/list-kit/kanban/manual-order";
43
43
  // 纯函数跨层复用(bug-group-query 运行时零服务端依赖,use-paged-bug-groups 同款先例)
44
44
  import { BUG_STATE_GROUP_KEYS, BUG_SEVERITY_GROUP_KEYS } from "@/server/serverFns/bug/bug-group-query";
45
- import type { BugListItem } from "./types";
45
+ import type { BugListItem } from "@/shared/bug/types";
46
46
  import { CreateBugDialog } from "./create-bug-dialog";
47
47
  import { BugPeekPanel } from "./peek-panel";
48
48
  import { CreateViewDialog, type CreateViewDialogPayload } from "./views/create-view-dialog";
@@ -58,7 +58,7 @@ import { BugViewSwitcher } from "./views/view-switcher";
58
58
  import { ViewSelectorButton } from "./views/view-selector-button";
59
59
  import type { BugView, BugViewModel } from "./views/view-types";
60
60
  import type { BugDisplayOptions } from "@/shared/bug/display-types";
61
- import type { UserBrief } from "@/components/story/types";
61
+ import type { UserBrief } from "@/shared/story/types";
62
62
  import { m } from "@/paraglide/messages.js";
63
63
  import { getLocale } from "@/paraglide/runtime.js";
64
64
  import { useToolbarSearch } from "@/hooks/use-toolbar-search";
@@ -27,11 +27,11 @@ import { toast } from "@/components/ui/toast";
27
27
  import { createBugFn } from "@/server/serverFns/bug";
28
28
  import { ensureBuiltinProjectFn } from "@/server/serverFns/project";
29
29
  import type { BugState, BugSeverity, BugSource } from "@/shared/bug/constants";
30
- import type { UserBrief } from "@/components/story/types";
31
- import { serializeStoryDescription } from "@/components/story/types";
30
+ import type { UserBrief } from "@/shared/story/types";
31
+ import { serializeStoryDescription } from "@/shared/story/types";
32
32
  import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "./inline-editors";
33
33
  import { ReproduceStepsEditor } from "./reproduce-steps-editor";
34
- import type { BugListItem, ReproduceSteps } from "./types";
34
+ import type { BugListItem, ReproduceSteps } from "@/shared/bug/types";
35
35
  import { NotionDocEditor } from "@/components/tiptap/notion-like";
36
36
  import { errorMessage } from "@/lib/toast-error";
37
37
  import { m } from "@/paraglide/messages.js";
@@ -26,7 +26,7 @@ import { describe, it, expect, afterEach, vi } from "vitest";
26
26
  import { render, cleanup } from "@testing-library/react";
27
27
  import { m } from "@/paraglide/messages.js";
28
28
  import { ACTIVITY_LABEL, STATE_LABEL } from "@/shared/bug/constants";
29
- import type { BugActivityItem, BugCommentWithReplies } from "../../types";
29
+ import type { BugActivityItem, BugCommentWithReplies } from "@/shared/bug/types";
30
30
 
31
31
  vi.mock("@/server/serverFns/bug", () => ({
32
32
  listBugActivitiesFn: vi.fn().mockResolvedValue({ items: [], nextCursor: null }),
@@ -113,7 +113,7 @@ vi.mock("@/components/tiptap/notion-like", () => ({
113
113
  }));
114
114
 
115
115
  import { BugDetailBody } from "../bug-detail-body";
116
- import type { BugDetail } from "../../types";
116
+ import type { BugDetail } from "@/shared/bug/types";
117
117
 
118
118
  const U = "u-1";
119
119
 
@@ -46,7 +46,7 @@ vi.mock("@/components/knowledge/public/markdown-view", () => ({
46
46
 
47
47
  import { ReproReportCard } from "../repro-report-card";
48
48
  import type { ReproRunItem } from "@/server/serverFns/bug/bug-repro";
49
- import type { BugDetail } from "../../types";
49
+ import type { BugDetail } from "@/shared/bug/types";
50
50
 
51
51
  const T0 = new Date("2026-01-01T00:00:00Z");
52
52
 
@@ -24,7 +24,7 @@ import { Button } from "@/components/ui/button";
24
24
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
25
25
  import { listBugActivitiesFn, listCommentsFn } from "@/server/serverFns/bug";
26
26
  import { errorMessage } from "@/lib/toast-error";
27
- import type { BugActivityItem, BugCommentWithReplies } from "../types";
27
+ import type { BugActivityItem, BugCommentWithReplies } from "@/shared/bug/types";
28
28
  import { ActivityTimeline } from "./activity-timeline";
29
29
  import { CommentThread } from "./comment-thread";
30
30
  import { m } from "@/paraglide/messages.js";
@@ -21,7 +21,7 @@
21
21
  import { ArrowRight, Bot, Dot, Sparkles } from "lucide-react";
22
22
  import { UserAvatar } from "@/components/shared-kit";
23
23
  import { ACTIVITY_LABEL, SEVERITY_LABEL, STATE_LABEL, type BugState, type BugSeverity } from "@/shared/bug/constants";
24
- import type { BugActivityItem } from "../types";
24
+ import type { BugActivityItem } from "@/shared/bug/types";
25
25
  import { m } from "@/paraglide/messages.js";
26
26
  import { formatTimestamp } from "@/lib/datetime";
27
27
 
@@ -37,9 +37,9 @@ import { toast } from "@/components/ui/toast";
37
37
  import { requestBugFixFn, updateBugFn } from "@/server/serverFns/bug";
38
38
  import { formatTimestamp } from "@/lib/datetime";
39
39
  import { SOURCE_LABEL } from "@/shared/bug/constants";
40
- import type { BugDetail, BugStoryBrief, ReproduceSteps } from "../types";
41
- import type { UserBrief } from "@/components/story/types";
42
- import { parseStoryDescription } from "@/components/story/types";
40
+ import type { BugDetail, BugStoryBrief, ReproduceSteps } from "@/shared/bug/types";
41
+ import type { UserBrief } from "@/shared/story/types";
42
+ import { parseStoryDescription } from "@/shared/story/types";
43
43
  import { buildRoomName } from "@allbluecn/collab-core/rooms";
44
44
  import { useSession } from "@/components/shared-kit/auth/auth-client";
45
45
  import { useCollabDoc } from "@/lib/collab/use-collab-doc";
@@ -23,7 +23,7 @@ import { Textarea } from "@/components/ui/textarea";
23
23
  import { createCommentFn } from "@/server/serverFns/bug";
24
24
  import { toast } from "@/components/ui/toast";
25
25
  import { errorMessage } from "@/lib/toast-error";
26
- import type { BugCommentWithReplies } from "../types";
26
+ import type { BugCommentWithReplies } from "@/shared/bug/types";
27
27
  import { m } from "@/paraglide/messages.js";
28
28
 
29
29
  interface CommentInputProps {
@@ -33,7 +33,7 @@ import {
33
33
  import { deleteCommentFn, updateCommentFn } from "@/server/serverFns/bug";
34
34
  import { toast } from "@/components/ui/toast";
35
35
  import { errorMessage } from "@/lib/toast-error";
36
- import type { BugCommentWithReplies } from "../types";
36
+ import type { BugCommentWithReplies } from "@/shared/bug/types";
37
37
  import { formatRelative } from "./activity-timeline";
38
38
  import { CommentInput } from "./comment-input";
39
39
  import { CommentReactions } from "./comment-reactions";
@@ -28,7 +28,7 @@ import { EmojiPicker } from "@/components/shared-kit/comments/emoji-picker";
28
28
  import { toast } from "@/components/ui/toast";
29
29
  import { toggleBugCommentReactionFn } from "@/server/serverFns/bug";
30
30
  import { errorMessage } from "@/lib/toast-error";
31
- import type { ReactionGroup } from "@/components/story/types";
31
+ import type { ReactionGroup } from "@/shared/story/types";
32
32
  import { m } from "@/paraglide/messages.js";
33
33
 
34
34
  /** hover 快捷回应(常用 3 个;完整选择走 picker) */
@@ -19,7 +19,7 @@
19
19
  // parentId 组装为多级回复树,本组件只负责渲染 + 回调透传,不再二次建树。
20
20
  import { CommentItem } from "./comment-item";
21
21
  import { CommentInput } from "./comment-input";
22
- import type { BugCommentWithReplies } from "../types";
22
+ import type { BugCommentWithReplies } from "@/shared/bug/types";
23
23
  import { m } from "@/paraglide/messages.js";
24
24
 
25
25
  interface CommentThreadProps {
@@ -26,8 +26,8 @@ import { updateBugFn, linkBugToStoryFn, unlinkBugFromStoryFn } from "@/server/se
26
26
  import { searchStoriesFn } from "@/server/serverFns/story";
27
27
  import { useDebouncedValue, SEARCH_DEBOUNCE_MS } from "@/lib/pacer";
28
28
  import type { BugState, BugSeverity } from "@/shared/bug/constants";
29
- import type { BugDetail, BugStoryBrief } from "../types";
30
- import type { UserBrief } from "@/components/story/types";
29
+ import type { BugDetail, BugStoryBrief } from "@/shared/bug/types";
30
+ import type { UserBrief } from "@/shared/story/types";
31
31
  import type { PropsSectionCollabProps } from "./bug-detail-body";
32
32
  import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "../inline-editors";
33
33
  import { m } from "@/paraglide/messages.js";
@@ -48,7 +48,7 @@ import { REPRO_VERDICT_COLOR, REPRO_VERDICT_LABEL, type BugReproVerdict } from "
48
48
  import { MarkdownView } from "@/components/knowledge/public/markdown-view";
49
49
  import { formatRelative } from "./activity-timeline";
50
50
  import { m } from "@/paraglide/messages.js";
51
- import type { BugDetail } from "../types";
51
+ import type { BugDetail } from "@/shared/bug/types";
52
52
  import { toastError, errorMessage } from "@/lib/toast-error";
53
53
 
54
54
  /** confidence 0-1 → 整数百分比(越界钳制,防脏数据渲染 -3% / 140%) */
@@ -18,7 +18,7 @@
18
18
  // 复现步骤只读视图(规格 §5.4 第 4 分区):结构化步骤列表 + 整体预期/实际对照。
19
19
  // SDK 上报无 reproduceSteps 字段时显示「待补充」引导(编辑器接入在后续任务)。
20
20
  import { ListOrdered } from "lucide-react";
21
- import type { ReproduceSteps } from "../types";
21
+ import type { ReproduceSteps } from "@/shared/bug/types";
22
22
  import { m } from "@/paraglide/messages.js";
23
23
 
24
24
  interface ReproduceStepsViewProps {
@@ -29,8 +29,8 @@ import {
29
29
  // 纯函数跨层复用(任务 4 复审核实运行时零服务端依赖):组内全序比较与 story 客户端
30
30
  // compareByOrder 同构,直接引用单一实现避免双份漂移。
31
31
  import { compareBugsByOrderKey } from "@/server/serverFns/bug/bug-group-query";
32
- import type { BugListItem } from "../types";
33
- import type { UserBrief } from "@/components/story/types";
32
+ import type { BugListItem } from "@/shared/bug/types";
33
+ import type { UserBrief } from "@/shared/story/types";
34
34
  import type { FilterCondition } from "../filters";
35
35
  import { serializeFilters } from "../filters";
36
36
  import { BUG_STATES, BUG_SEVERITIES, type BugState, type BugSeverity } from "@/shared/bug/constants";
@@ -70,7 +70,7 @@ import type {
70
70
  FilterFieldType,
71
71
  } from "@/components/shared-kit/list-kit/filters/types";
72
72
  import { cn } from "@/lib/utils";
73
- import type { UserBrief } from "@/components/story/types";
73
+ import type { UserBrief } from "@/shared/story/types";
74
74
 
75
75
  export { serializeFilters, deserializeFilters, OPERATOR_LABELS, generateConditionId } from "@/components/shared-kit/list-kit/filters";
76
76
  export type { FilterOperator, FilterFieldType };
@@ -20,7 +20,7 @@ import { CircleUser, Search, Check } from "lucide-react";
20
20
  import { Input } from "@/components/ui/input";
21
21
  import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
22
22
  import { UserAvatar } from "@/components/shared-kit";
23
- import type { UserBrief } from "@/components/story/types";
23
+ import type { UserBrief } from "@/shared/story/types";
24
24
  import { cn } from "@/lib/utils";
25
25
  import { InlineTrigger } from "./inline-trigger";
26
26
  import { m } from "@/paraglide/messages.js";
@@ -31,8 +31,8 @@ import { getBugDetailFn, getBugNeighborsFn } from "@/server/serverFns/bug";
31
31
  import { formatTimestamp } from "@/lib/datetime";
32
32
  import { errorMessage } from "@/lib/toast-error";
33
33
  import type { BugPatch } from "./display/use-paged-bug-groups";
34
- import type { BugDetail } from "./types";
35
- import type { UserBrief } from "@/components/story/types";
34
+ import type { BugDetail } from "@/shared/bug/types";
35
+ import type { UserBrief } from "@/shared/story/types";
36
36
  import { BugDetailBody } from "./detail/bug-detail-body";
37
37
  import { BugPanelHeader } from "./bug-panel-header";
38
38
  import type { PeekMode } from "@/components/shared-kit/peek/peek-mode";
@@ -19,7 +19,7 @@ import { Plus, Trash2 } from "lucide-react";
19
19
  import { Button } from "@/components/ui/button";
20
20
  import { Input } from "@/components/ui/input";
21
21
  import { Textarea } from "@/components/ui/textarea";
22
- import type { ReproduceSteps, ReproduceStep } from "./types";
22
+ import type { ReproduceSteps, ReproduceStep } from "@/shared/bug/types";
23
23
  import { m } from "@/paraglide/messages.js";
24
24
 
25
25
  interface ReproduceStepsEditorProps {
@@ -55,7 +55,8 @@ import {
55
55
  } from "@/components/bug/views/bug-list/group-select";
56
56
  import { BUG_STATES, BUG_SEVERITIES, BUG_STATE_RANK, type BugState, type BugSeverity } from "@/shared/bug/constants";
57
57
  import { UserAvatar } from "@/components/shared-kit";
58
- import type { UserBrief, StoryEntityOverlay } from "@/components/story/types";
58
+ import type { UserBrief } from "@/shared/story/types";
59
+ import type { StoryEntityOverlay } from "@/components/story/entity-overlay";
59
60
  import type { AvatarConfig } from "@allbluecn/kernel";
60
61
  import { BugSelectDialog } from "@/components/bug/select-bug-dialog";
61
62
  import { m } from "@/paraglide/messages.js";
@@ -50,8 +50,8 @@ import { memo, useCallback, useMemo } from "react";
50
50
  import { Card, CardContent } from "@/components/ui/card";
51
51
  import { UserAvatar } from "@/components/shared-kit";
52
52
  import { updateBugFn } from "@/server/serverFns/bug";
53
- import type { BugListItem } from "../types";
54
- import type { UserBrief } from "@/components/story/types";
53
+ import type { BugListItem } from "@/shared/bug/types";
54
+ import type { UserBrief } from "@/shared/story/types";
55
55
  import type { BugPatch } from "../display/use-paged-bug-groups";
56
56
  import type { BugDisplayProperty, BugGroupKey } from "@/shared/bug/display-types";
57
57
  import { BUG_GROUP_DISPLAY_ORDER } from "@/shared/bug/display-types";
@@ -34,7 +34,7 @@ import {
34
34
  AssigneeEditor,
35
35
  LabelsEditor,
36
36
  } from "../../inline-editors";
37
- import type { UserBrief } from "@/components/story/types";
37
+ import type { UserBrief } from "@/shared/story/types";
38
38
  import type { BugPatch } from "../../display/use-paged-bug-groups";
39
39
  import { m } from "@/paraglide/messages.js";
40
40
 
@@ -19,7 +19,7 @@ import { memo, useEffect } from "react";
19
19
  import { ChevronDown, ChevronRight, Plus, Loader2, ChevronsDown } from "lucide-react";
20
20
  import { Button } from "@/components/ui/button";
21
21
  import { Checkbox } from "@/components/ui/checkbox";
22
- import type { UserBrief } from "@/components/story/types";
22
+ import type { UserBrief } from "@/shared/story/types";
23
23
  import { BUG_STATES, BUG_SEVERITIES, type BugState, type BugSeverity } from "@/shared/bug/constants";
24
24
  import type { BugGroupKey } from "@/shared/bug/display-types";
25
25
  import type { BugGroupNode } from "../../display/use-paged-bug-groups";
@@ -23,7 +23,7 @@ import {
23
23
  bulkUpdateBugsFn,
24
24
  } from "@/server/serverFns/bug";
25
25
  import { toast } from "@/components/ui/toast";
26
- import type { UserBrief } from "@/components/story/types";
26
+ import type { UserBrief } from "@/shared/story/types";
27
27
  import type { BugDisplayOptions, BugDisplayProperty } from "@/shared/bug/display-types";
28
28
  import type { BugGroupNode, BugPatch, PagedBugGroupNode } from "../../display/use-paged-bug-groups";
29
29
  import { BugGroupHeader, BugGroupTailRow } from "./group";
@@ -21,7 +21,7 @@ import { createBugFn } from "@/server/serverFns/bug";
21
21
  import { toast } from "@/components/ui/toast";
22
22
  import { Input } from "@/components/ui/input";
23
23
  import { Button } from "@/components/ui/button";
24
- import type { UserBrief } from "@/components/story/types";
24
+ import type { UserBrief } from "@/shared/story/types";
25
25
  import type { BugState, BugSeverity } from "@/shared/bug/constants";
26
26
  import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "../../inline-editors";
27
27
  import { m } from "@/paraglide/messages.js";
@@ -22,10 +22,10 @@ import { Checkbox } from "@/components/ui/checkbox";
22
22
  import { Input } from "@/components/ui/input";
23
23
  import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
24
24
  import { updateBugFn } from "@/server/serverFns/bug";
25
- import type { BugListItem } from "../../types";
25
+ import type { BugListItem } from "@/shared/bug/types";
26
26
  import type { BugState, BugSeverity } from "@/shared/bug/constants";
27
27
  import { SOURCE_LABEL, SOURCE_COLOR } from "@/shared/bug/constants";
28
- import type { UserBrief } from "@/components/story/types";
28
+ import type { UserBrief } from "@/shared/story/types";
29
29
  import type { BugDisplayProperty } from "@/shared/bug/display-types";
30
30
  import type { BugPatch } from "../../display/use-paged-bug-groups";
31
31
  import { StateEditor, SeverityEditor, AssigneeEditor, DateEditor, LabelsEditor } from "../../inline-editors";
@@ -33,7 +33,7 @@ import { Button } from "@/components/ui/button";
33
33
  import { Input } from "@/components/ui/input";
34
34
  import { LucideIconPicker } from "@/components/shared-kit/icons/lucide-icon-picker";
35
35
  import { BugFilterRow, type FilterCondition } from "../filters";
36
- import type { UserBrief } from "@/components/story/types";
36
+ import type { UserBrief } from "@/shared/story/types";
37
37
  import { m } from "@/paraglide/messages.js";
38
38
 
39
39
  export interface CreateViewDialogPayload {
@@ -14,8 +14,8 @@
14
14
  //
15
15
  // You should have received a copy of the GNU Affero General Public License
16
16
  // along with this program. If not, see <https://www.gnu.org/licenses/>.
17
- import { STATE_COLOR } from "@/components/story/constants";
18
- import type { StoryState } from "@/components/story/constants";
17
+ import { STATE_COLOR } from "@/shared/story/constants";
18
+ import type { StoryState } from "@/shared/story/constants";
19
19
  import { m } from "@/paraglide/messages.js";
20
20
 
21
21
  const ORDER: StoryState[] = ["backlog", "todo", "in_progress", "done", "cancelled"];
@@ -87,7 +87,7 @@ function toDateStr(d: unknown): string {
87
87
  }
88
88
 
89
89
  function mapRecordToProperties(record: LegalOrComplianceDetail, type: EditorType): PropertyValues {
90
- // code 非数据库列(仅参与 canonicalId 计算),detail 接口不返回,历史行为为空串展示
90
+ // legal 的 code 已持久化(S7,detail 整行返回直接带出);compliance 仍无列,空串展示
91
91
  if (type === 'legal') {
92
92
  const r = record as LegalDetail & { code?: string }
93
93
  return {
@@ -70,7 +70,7 @@ import { cn } from "@/lib/utils";
70
70
  import { isParentActive } from "@/lib/sidebar-utils";
71
71
  import { useEffect, useState } from "react";
72
72
  import { useQuery, useQueryClient } from "@tanstack/react-query";
73
- import { KNOWLEDGE_BASES_QUERY_KEY } from "@/lib/collections/knowledge/knowledge-bases-collection";
73
+ import { KNOWLEDGE_BASES_QUERY_KEY } from "@/lib/collections/query-keys";
74
74
  import {
75
75
  listKnowledgeFn,
76
76
  toggleKnowledgePinFn,
@@ -31,7 +31,7 @@ import { cn } from "@/lib/utils";
31
31
  import { isParentActive } from "@/lib/sidebar-utils";
32
32
  import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
33
33
  import { CreateWorkspaceDialog } from "@/components/workspace/dialogs/create-workspace-dialog";
34
- import { WORKSPACES_QUERY_KEY } from "@/lib/collections/reference/workspaces-collection";
34
+ import { WORKSPACES_QUERY_KEY } from "@/lib/collections/query-keys";
35
35
  import {
36
36
  listPinnedWorkspacesBriefFn,
37
37
  toggleWorkspacePinFn,
@@ -23,7 +23,7 @@ import {
23
23
  itemKey,
24
24
  storyIdFromInstanceKey,
25
25
  } from "../instance-key";
26
- import type { StoryListItem } from "../../../../story/types";
26
+ import type { StoryListItem } from "@/shared/story/types";
27
27
 
28
28
  function story(id: string): StoryListItem {
29
29
  return { id } as StoryListItem;