@nextop-os/workspace-issue-manager 0.0.27 → 0.0.29

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 (35) hide show
  1. package/dist/assets/workspace-dock-task.png +0 -0
  2. package/dist/{chunk-LJQG24Y2.js → chunk-DRWYHOZ2.js} +159 -25
  3. package/dist/chunk-DRWYHOZ2.js.map +1 -0
  4. package/dist/chunk-N6NGQ7DZ.js +14 -0
  5. package/dist/chunk-N6NGQ7DZ.js.map +1 -0
  6. package/dist/{chunk-JGIOWEUE.js → chunk-WT6PIL4Q.js} +108 -48
  7. package/dist/chunk-WT6PIL4Q.js.map +1 -0
  8. package/dist/{chunk-MCVRP7RR.js → chunk-YN5NYKAA.js} +67 -20
  9. package/dist/chunk-YN5NYKAA.js.map +1 -0
  10. package/dist/{chunk-5V4DIEWZ.js → chunk-YTOMO5IO.js} +1932 -1947
  11. package/dist/chunk-YTOMO5IO.js.map +1 -0
  12. package/dist/contracts/index.d.ts +111 -67
  13. package/dist/core/index.d.ts +14 -6
  14. package/dist/core/index.js +4 -2
  15. package/dist/{feature-2zhsUF_g.d.ts → feature-RwN37-fu.d.ts} +9 -1
  16. package/dist/i18n/index.js +1 -1
  17. package/dist/index.d.ts +4 -3
  18. package/dist/index.js +5 -3
  19. package/dist/{issueManagerControllerService.interface-BtvnnFla.d.ts → issueManagerControllerService.interface-BuGBkqN3.d.ts} +3 -2
  20. package/dist/services/index.d.ts +4 -3
  21. package/dist/services/index.js +3 -3
  22. package/dist/ui/index.d.ts +6 -3
  23. package/dist/ui/index.js +4 -4
  24. package/dist/workbench/constants.d.ts +6 -0
  25. package/dist/workbench/constants.js +9 -0
  26. package/dist/workbench/constants.js.map +1 -0
  27. package/dist/workbench/index.d.ts +5 -4
  28. package/dist/workbench/index.js +16 -12
  29. package/dist/workbench/index.js.map +1 -1
  30. package/openapi/issue-manager.v1.yaml +366 -2
  31. package/package.json +11 -6
  32. package/dist/chunk-5V4DIEWZ.js.map +0 -1
  33. package/dist/chunk-JGIOWEUE.js.map +0 -1
  34. package/dist/chunk-LJQG24Y2.js.map +0 -1
  35. package/dist/chunk-MCVRP7RR.js.map +0 -1
@@ -2,24 +2,21 @@ import {
2
2
  IssueManagerNode,
3
3
  IssueManagerNodeHeader,
4
4
  dispatchIssueManagerTaskListCollapsed
5
- } from "../chunk-5V4DIEWZ.js";
6
- import "../chunk-LJQG24Y2.js";
5
+ } from "../chunk-YTOMO5IO.js";
6
+ import "../chunk-DRWYHOZ2.js";
7
7
  import {
8
8
  normalizeIssueManagerNodeState,
9
9
  resolveIssueManagerExpandedFrame,
10
10
  shouldAutoCollapseIssueManagerSidebar
11
- } from "../chunk-MCVRP7RR.js";
12
- import "../chunk-JGIOWEUE.js";
11
+ } from "../chunk-YN5NYKAA.js";
12
+ import "../chunk-WT6PIL4Q.js";
13
+ import {
14
+ defaultIssueManagerNodeFrame,
15
+ defaultIssueManagerWorkbenchTypeId
16
+ } from "../chunk-N6NGQ7DZ.js";
13
17
 
14
18
  // src/workbench/index.ts
15
19
  import { createElement } from "react";
16
- var defaultIssueManagerWorkbenchTypeId = "issue-manager";
17
- var defaultIssueManagerNodeFrame = {
18
- height: 620,
19
- width: 960,
20
- x: 220,
21
- y: 120
22
- };
23
20
  function createIssueManagerWorkbenchNodeDefinition({
24
21
  emptyIllustration,
25
22
  feature,
@@ -83,17 +80,20 @@ function createIssueManagerWorkbenchNodeDefinition({
83
80
  const applyTaskListCollapsed = (collapsed) => {
84
81
  dispatchIssueManagerTaskListCollapsed({
85
82
  collapsed,
86
- nodeId: node.id
83
+ nodeId: node.id,
84
+ workspaceId: externalWorkspaceState.workspaceId ?? ""
87
85
  });
88
86
  persistTaskListCollapsed(collapsed);
89
87
  };
90
88
  return createElement(IssueManagerNodeHeader, {
89
+ activeTopicId: nodeState.activeTopicId ?? null,
91
90
  copy: feature.i18n,
92
91
  defaultActions,
93
92
  isSidebarAutoCollapsed,
94
93
  isSidebarCollapsed,
95
94
  nodeId: node.id,
96
95
  title: node.title,
96
+ workspaceId: externalWorkspaceState.workspaceId ?? "",
97
97
  ...dragHandleProps,
98
98
  onPointerDown: (event) => {
99
99
  dragHandleProps.onPointerDown?.(event);
@@ -118,6 +118,9 @@ function createIssueManagerWorkbenchNodeDefinition({
118
118
  window: {
119
119
  closable: true,
120
120
  defaultOpen: false,
121
+ minimizedDock: {
122
+ kind: "snapshot"
123
+ },
121
124
  minimizable: true,
122
125
  restoreOnLoad: true
123
126
  }
@@ -214,6 +217,7 @@ export {
214
217
  createIssueManagerWorkbenchContribution,
215
218
  createIssueManagerWorkbenchLaunchHandler,
216
219
  createIssueManagerWorkbenchNodeDefinition,
220
+ defaultIssueManagerNodeFrame,
217
221
  defaultIssueManagerWorkbenchTypeId
218
222
  };
219
223
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workbench/index.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type { RichTextAtProvider } from \"@nextop-os/ui-rich-text/types\";\nimport type {\n WorkbenchContribution,\n WorkbenchFrame,\n WorkbenchHostDockEntry,\n WorkbenchHostExternalStateSource,\n WorkbenchHostLaunchRequest,\n WorkbenchHostLaunchResult,\n WorkbenchHostNodeDefinition\n} from \"@nextop-os/workbench-surface\";\nimport type { IssueManagerNodeState } from \"../contracts/index.ts\";\nimport {\n normalizeIssueManagerNodeState,\n resolveIssueManagerExpandedFrame,\n shouldAutoCollapseIssueManagerSidebar,\n type IssueManagerFeature\n} from \"../core/index.ts\";\nimport type { IssueManagerControllerService } from \"../services/issueManagerControllerService.interface.ts\";\nimport {\n dispatchIssueManagerTaskListCollapsed,\n IssueManagerNode,\n IssueManagerNodeHeader\n} from \"../ui/IssueManagerNode.tsx\";\n\nexport interface IssueManagerExternalWorkspaceState {\n workspaceId?: string | null;\n}\n\nexport interface CreateIssueManagerWorkbenchNodeDefinitionInput {\n emptyIllustration?: ReactNode;\n feature: IssueManagerFeature;\n frame?: WorkbenchFrame;\n onStateChange?: (input: {\n instanceId: string;\n instanceKey?: string | null;\n nodeId: string;\n state: IssueManagerNodeState;\n workspaceState: IssueManagerExternalWorkspaceState;\n }) => void;\n resolveRichTextAtProviders?: (input: {\n surface: \"issue\" | \"task\";\n workspaceId: string;\n }) => readonly RichTextAtProvider[];\n service?: IssueManagerControllerService;\n title?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerWorkbenchLaunchHandlerInput {\n frame?: WorkbenchFrame;\n title?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerDockEntryInput {\n dockIcon?: ReactNode;\n feature: IssueManagerFeature;\n id?: string;\n order?: number;\n separatorAfter?: boolean;\n sectionId?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerWorkbenchContributionInput {\n contributionId?: string;\n dockEntry?: Omit<CreateIssueManagerDockEntryInput, \"feature\">;\n externalStateSource?: WorkbenchHostExternalStateSource<\n Partial<IssueManagerNodeState> | null,\n IssueManagerExternalWorkspaceState\n >;\n feature: IssueManagerFeature;\n node?: Omit<CreateIssueManagerWorkbenchNodeDefinitionInput, \"feature\">;\n typeId?: string;\n}\n\nexport const defaultIssueManagerWorkbenchTypeId = \"issue-manager\";\n\nconst defaultIssueManagerNodeFrame: WorkbenchFrame = {\n height: 620,\n width: 960,\n x: 220,\n y: 120\n};\n\nexport function createIssueManagerWorkbenchNodeDefinition<\n TExternalWorkspaceState extends IssueManagerExternalWorkspaceState =\n IssueManagerExternalWorkspaceState\n>({\n emptyIllustration,\n feature,\n frame = defaultIssueManagerNodeFrame,\n onStateChange,\n resolveRichTextAtProviders,\n service,\n title,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchNodeDefinitionInput): WorkbenchHostNodeDefinition<\n Partial<IssueManagerNodeState> | null,\n TExternalWorkspaceState\n> {\n return {\n frame,\n instance: {\n mode: \"single\"\n },\n renderBody: (context) =>\n createElement(IssueManagerNode, {\n emptyIllustration,\n feature,\n nodeId: context.node.id,\n onStateChange: onStateChange\n ? (state) =>\n onStateChange({\n instanceId: context.instanceId,\n instanceKey: context.instanceKey ?? null,\n nodeId: context.node.id,\n state,\n workspaceState: context.externalWorkspaceState\n })\n : undefined,\n resolveRichTextAtProviders,\n service,\n state: context.externalNodeState,\n workspaceId: context.externalWorkspaceState.workspaceId ?? \"\"\n }),\n renderHeader: ({\n defaultActions,\n dragHandleProps,\n externalNodeState,\n externalWorkspaceState,\n instanceId,\n instanceKey,\n isFocused,\n node,\n surfaceSize,\n windowActions\n }) => {\n const nodeState = normalizeIssueManagerNodeState(externalNodeState);\n const isSidebarAutoCollapsed = shouldAutoCollapseIssueManagerSidebar(\n node.frame.width\n );\n const isSidebarCollapsed =\n nodeState.taskListCollapsed === true || isSidebarAutoCollapsed;\n const persistTaskListCollapsed = (collapsed: boolean) => {\n onStateChange?.({\n instanceId,\n instanceKey: instanceKey ?? null,\n nodeId: node.id,\n state: {\n ...nodeState,\n taskListCollapsed: collapsed\n },\n workspaceState: externalWorkspaceState\n });\n };\n const applyTaskListCollapsed = (collapsed: boolean) => {\n dispatchIssueManagerTaskListCollapsed({\n collapsed,\n nodeId: node.id\n });\n persistTaskListCollapsed(collapsed);\n };\n\n return createElement(IssueManagerNodeHeader, {\n copy: feature.i18n,\n defaultActions,\n isSidebarAutoCollapsed,\n isSidebarCollapsed,\n nodeId: node.id,\n title: node.title,\n ...dragHandleProps,\n onPointerDown: (event) => {\n dragHandleProps.onPointerDown?.(event);\n if (!isFocused) {\n windowActions.focus();\n }\n },\n onToggleSidebar: (nextCollapsed) => {\n if (\n isSidebarCollapsed &&\n nextCollapsed === false &&\n node.displayMode !== \"fullscreen\"\n ) {\n windowActions.resize(\n resolveIssueManagerExpandedFrame(node.frame, surfaceSize.width)\n );\n applyTaskListCollapsed(false);\n return;\n }\n\n applyTaskListCollapsed(nextCollapsed);\n }\n });\n },\n title: title ?? feature.i18n.t(\"title\"),\n typeId,\n window: {\n closable: true,\n defaultOpen: false,\n minimizable: true,\n restoreOnLoad: true\n }\n };\n}\n\nexport function createIssueManagerDockEntry({\n dockIcon,\n feature,\n id,\n order,\n separatorAfter,\n sectionId,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerDockEntryInput): WorkbenchHostDockEntry {\n return {\n icon: dockIcon ?? null,\n id: id ?? typeId,\n label: feature.i18n.t(\"dockLabel\"),\n launchBehavior: \"enabled\",\n matchNode: (node) => node.data.typeId === typeId,\n order,\n resolvePopupItem: ({ node }) => ({\n title: node.title\n }),\n separatorAfter,\n sectionId,\n typeId,\n visibility: \"always\"\n };\n}\n\nexport function createIssueManagerDockIconImage(src: string): ReactNode {\n return createElement(\"img\", {\n alt: \"\",\n \"aria-hidden\": \"true\",\n \"data-issue-manager-dock-icon\": \"true\",\n draggable: false,\n src\n });\n}\n\nexport function createIssueManagerWorkbenchLaunchHandler({\n frame = defaultIssueManagerNodeFrame,\n title,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchLaunchHandlerInput = {}): (\n request: WorkbenchHostLaunchRequest\n) => Promise<WorkbenchHostLaunchResult | null> {\n return (request) => {\n if (request.typeId !== typeId) {\n return Promise.resolve(null);\n }\n\n return Promise.resolve({\n defaultFrame: frame,\n dockEntryId: request.dockEntryId ?? typeId,\n framePolicy: \"cascade\",\n instanceId: typeId,\n title,\n typeId\n });\n };\n}\n\nexport function createIssueManagerWorkbenchContribution({\n contributionId,\n dockEntry,\n externalStateSource,\n feature,\n node,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchContributionInput): WorkbenchContribution {\n return {\n dockEntries: [\n createIssueManagerDockEntry({\n ...dockEntry,\n feature,\n typeId\n })\n ],\n externalStateSource,\n id: contributionId ?? typeId,\n nodes: [\n createIssueManagerWorkbenchNodeDefinition({\n ...node,\n feature,\n typeId\n })\n ],\n onLaunchRequest: createIssueManagerWorkbenchLaunchHandler({\n frame: node?.frame,\n title: node?.title,\n typeId\n })\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/workbench/index.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type { RichTextAtProvider } from \"@nextop-os/ui-rich-text/types\";\nimport type {\n WorkbenchContribution,\n WorkbenchFrame,\n WorkbenchHostDockEntry,\n WorkbenchHostExternalStateSource,\n WorkbenchHostLaunchRequest,\n WorkbenchHostLaunchResult,\n WorkbenchHostNodeDefinition\n} from \"@nextop-os/workbench-surface\";\nimport type { IssueManagerNodeState } from \"../contracts/index.ts\";\nimport {\n normalizeIssueManagerNodeState,\n resolveIssueManagerExpandedFrame,\n shouldAutoCollapseIssueManagerSidebar,\n type IssueManagerFeature\n} from \"../core/index.ts\";\nimport type { IssueManagerControllerService } from \"../services/issueManagerControllerService.interface.ts\";\nimport {\n dispatchIssueManagerTaskListCollapsed,\n IssueManagerNode,\n IssueManagerNodeHeader\n} from \"../ui/IssueManagerNode.tsx\";\nexport {\n defaultIssueManagerNodeFrame,\n defaultIssueManagerWorkbenchTypeId\n} from \"./constants.ts\";\nimport {\n defaultIssueManagerNodeFrame,\n defaultIssueManagerWorkbenchTypeId\n} from \"./constants.ts\";\n\nexport interface IssueManagerExternalWorkspaceState {\n workspaceId?: string | null;\n}\n\nexport interface CreateIssueManagerWorkbenchNodeDefinitionInput {\n emptyIllustration?: ReactNode;\n feature: IssueManagerFeature;\n frame?: WorkbenchFrame;\n onStateChange?: (input: {\n instanceId: string;\n instanceKey?: string | null;\n nodeId: string;\n state: IssueManagerNodeState;\n workspaceState: IssueManagerExternalWorkspaceState;\n }) => void;\n resolveRichTextAtProviders?: (input: {\n surface: \"issue\" | \"task\";\n workspaceId: string;\n }) => readonly RichTextAtProvider[];\n service?: IssueManagerControllerService;\n title?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerWorkbenchLaunchHandlerInput {\n frame?: WorkbenchFrame;\n title?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerDockEntryInput {\n dockIcon?: ReactNode;\n feature: IssueManagerFeature;\n id?: string;\n order?: number;\n separatorAfter?: boolean;\n sectionId?: string;\n typeId?: string;\n}\n\nexport interface CreateIssueManagerWorkbenchContributionInput {\n contributionId?: string;\n dockEntry?: Omit<CreateIssueManagerDockEntryInput, \"feature\">;\n externalStateSource?: WorkbenchHostExternalStateSource<\n Partial<IssueManagerNodeState> | null,\n IssueManagerExternalWorkspaceState\n >;\n feature: IssueManagerFeature;\n node?: Omit<CreateIssueManagerWorkbenchNodeDefinitionInput, \"feature\">;\n typeId?: string;\n}\n\nexport function createIssueManagerWorkbenchNodeDefinition<\n TExternalWorkspaceState extends IssueManagerExternalWorkspaceState =\n IssueManagerExternalWorkspaceState\n>({\n emptyIllustration,\n feature,\n frame = defaultIssueManagerNodeFrame,\n onStateChange,\n resolveRichTextAtProviders,\n service,\n title,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchNodeDefinitionInput): WorkbenchHostNodeDefinition<\n Partial<IssueManagerNodeState> | null,\n TExternalWorkspaceState\n> {\n return {\n frame,\n instance: {\n mode: \"single\"\n },\n renderBody: (context) =>\n createElement(IssueManagerNode, {\n emptyIllustration,\n feature,\n nodeId: context.node.id,\n onStateChange: onStateChange\n ? (state) =>\n onStateChange({\n instanceId: context.instanceId,\n instanceKey: context.instanceKey ?? null,\n nodeId: context.node.id,\n state,\n workspaceState: context.externalWorkspaceState\n })\n : undefined,\n resolveRichTextAtProviders,\n service,\n state: context.externalNodeState,\n workspaceId: context.externalWorkspaceState.workspaceId ?? \"\"\n }),\n renderHeader: ({\n defaultActions,\n dragHandleProps,\n externalNodeState,\n externalWorkspaceState,\n instanceId,\n instanceKey,\n isFocused,\n node,\n surfaceSize,\n windowActions\n }) => {\n const nodeState = normalizeIssueManagerNodeState(externalNodeState);\n const isSidebarAutoCollapsed = shouldAutoCollapseIssueManagerSidebar(\n node.frame.width\n );\n const isSidebarCollapsed =\n nodeState.taskListCollapsed === true || isSidebarAutoCollapsed;\n const persistTaskListCollapsed = (collapsed: boolean) => {\n onStateChange?.({\n instanceId,\n instanceKey: instanceKey ?? null,\n nodeId: node.id,\n state: {\n ...nodeState,\n taskListCollapsed: collapsed\n },\n workspaceState: externalWorkspaceState\n });\n };\n const applyTaskListCollapsed = (collapsed: boolean) => {\n dispatchIssueManagerTaskListCollapsed({\n collapsed,\n nodeId: node.id,\n workspaceId: externalWorkspaceState.workspaceId ?? \"\"\n });\n persistTaskListCollapsed(collapsed);\n };\n\n return createElement(IssueManagerNodeHeader, {\n activeTopicId: nodeState.activeTopicId ?? null,\n copy: feature.i18n,\n defaultActions,\n isSidebarAutoCollapsed,\n isSidebarCollapsed,\n nodeId: node.id,\n title: node.title,\n workspaceId: externalWorkspaceState.workspaceId ?? \"\",\n ...dragHandleProps,\n onPointerDown: (event) => {\n dragHandleProps.onPointerDown?.(event);\n if (!isFocused) {\n windowActions.focus();\n }\n },\n onToggleSidebar: (nextCollapsed) => {\n if (\n isSidebarCollapsed &&\n nextCollapsed === false &&\n node.displayMode !== \"fullscreen\"\n ) {\n windowActions.resize(\n resolveIssueManagerExpandedFrame(node.frame, surfaceSize.width)\n );\n applyTaskListCollapsed(false);\n return;\n }\n\n applyTaskListCollapsed(nextCollapsed);\n }\n });\n },\n title: title ?? feature.i18n.t(\"title\"),\n typeId,\n window: {\n closable: true,\n defaultOpen: false,\n minimizedDock: {\n kind: \"snapshot\"\n },\n minimizable: true,\n restoreOnLoad: true\n }\n };\n}\n\nexport function createIssueManagerDockEntry({\n dockIcon,\n feature,\n id,\n order,\n separatorAfter,\n sectionId,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerDockEntryInput): WorkbenchHostDockEntry {\n return {\n icon: dockIcon ?? null,\n id: id ?? typeId,\n label: feature.i18n.t(\"dockLabel\"),\n launchBehavior: \"enabled\",\n matchNode: (node) => node.data.typeId === typeId,\n order,\n resolvePopupItem: ({ node }) => ({\n title: node.title\n }),\n separatorAfter,\n sectionId,\n typeId,\n visibility: \"always\"\n };\n}\n\nexport function createIssueManagerDockIconImage(src: string): ReactNode {\n return createElement(\"img\", {\n alt: \"\",\n \"aria-hidden\": \"true\",\n \"data-issue-manager-dock-icon\": \"true\",\n draggable: false,\n src\n });\n}\n\nexport function createIssueManagerWorkbenchLaunchHandler({\n frame = defaultIssueManagerNodeFrame,\n title,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchLaunchHandlerInput = {}): (\n request: WorkbenchHostLaunchRequest\n) => Promise<WorkbenchHostLaunchResult | null> {\n return (request) => {\n if (request.typeId !== typeId) {\n return Promise.resolve(null);\n }\n\n return Promise.resolve({\n defaultFrame: frame,\n dockEntryId: request.dockEntryId ?? typeId,\n framePolicy: \"cascade\",\n instanceId: typeId,\n title,\n typeId\n });\n };\n}\n\nexport function createIssueManagerWorkbenchContribution({\n contributionId,\n dockEntry,\n externalStateSource,\n feature,\n node,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerWorkbenchContributionInput): WorkbenchContribution {\n return {\n dockEntries: [\n createIssueManagerDockEntry({\n ...dockEntry,\n feature,\n typeId\n })\n ],\n externalStateSource,\n id: contributionId ?? typeId,\n nodes: [\n createIssueManagerWorkbenchNodeDefinition({\n ...node,\n feature,\n typeId\n })\n ],\n onLaunchRequest: createIssueManagerWorkbenchLaunchHandler({\n frame: node?.frame,\n title: node?.title,\n typeId\n })\n };\n}\n"],"mappings":"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","names":[]}
@@ -5,6 +5,125 @@ info:
5
5
  tags:
6
6
  - name: issue
7
7
  paths:
8
+ /v1/workspaces/{workspaceID}/issue-topics:
9
+ parameters:
10
+ - $ref: "#/components/parameters/WorkspaceID"
11
+ get:
12
+ operationId: listWorkspaceIssueTopics
13
+ tags:
14
+ - issue
15
+ summary: List issue-manager topics for one workspace
16
+ responses:
17
+ "200":
18
+ description: Workspace issue topics
19
+ content:
20
+ application/json:
21
+ schema:
22
+ $ref: "#/components/schemas/IssueManagerTopicListResponse"
23
+ "400":
24
+ $ref: "#/components/responses/InvalidRequestError"
25
+ "401":
26
+ $ref: "#/components/responses/UnauthorizedError"
27
+ "404":
28
+ $ref: "#/components/responses/WorkspaceNotFoundError"
29
+ "405":
30
+ $ref: "#/components/responses/MethodNotAllowedError"
31
+ "502":
32
+ $ref: "#/components/responses/WorkspaceOperationError"
33
+ "503":
34
+ $ref: "#/components/responses/ServiceUnavailableError"
35
+ post:
36
+ operationId: createWorkspaceIssueTopic
37
+ tags:
38
+ - issue
39
+ summary: Create one issue-manager topic
40
+ requestBody:
41
+ required: true
42
+ content:
43
+ application/json:
44
+ schema:
45
+ $ref: "#/components/schemas/CreateIssueManagerTopicRequest"
46
+ responses:
47
+ "201":
48
+ description: Workspace issue topic created
49
+ content:
50
+ application/json:
51
+ schema:
52
+ $ref: "#/components/schemas/IssueManagerTopicResponse"
53
+ "400":
54
+ $ref: "#/components/responses/InvalidRequestError"
55
+ "401":
56
+ $ref: "#/components/responses/UnauthorizedError"
57
+ "404":
58
+ $ref: "#/components/responses/WorkspaceNotFoundError"
59
+ "405":
60
+ $ref: "#/components/responses/MethodNotAllowedError"
61
+ "409":
62
+ $ref: "#/components/responses/WorkspaceIssueResourceExistsError"
63
+ "502":
64
+ $ref: "#/components/responses/WorkspaceOperationError"
65
+ "503":
66
+ $ref: "#/components/responses/ServiceUnavailableError"
67
+ /v1/workspaces/{workspaceID}/issue-topics/{topicID}:
68
+ parameters:
69
+ - $ref: "#/components/parameters/WorkspaceID"
70
+ - $ref: "#/components/parameters/IssueManagerTopicID"
71
+ patch:
72
+ operationId: updateWorkspaceIssueTopic
73
+ tags:
74
+ - issue
75
+ summary: Update one issue-manager topic
76
+ requestBody:
77
+ required: true
78
+ content:
79
+ application/json:
80
+ schema:
81
+ $ref: "#/components/schemas/UpdateIssueManagerTopicRequest"
82
+ responses:
83
+ "200":
84
+ description: Workspace issue topic updated
85
+ content:
86
+ application/json:
87
+ schema:
88
+ $ref: "#/components/schemas/IssueManagerTopicResponse"
89
+ "400":
90
+ $ref: "#/components/responses/InvalidRequestError"
91
+ "401":
92
+ $ref: "#/components/responses/UnauthorizedError"
93
+ "404":
94
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
95
+ "405":
96
+ $ref: "#/components/responses/MethodNotAllowedError"
97
+ "502":
98
+ $ref: "#/components/responses/WorkspaceOperationError"
99
+ "503":
100
+ $ref: "#/components/responses/ServiceUnavailableError"
101
+ delete:
102
+ operationId: deleteWorkspaceIssueTopic
103
+ tags:
104
+ - issue
105
+ summary: Delete one issue-manager topic
106
+ responses:
107
+ "200":
108
+ description: Workspace issue topic deleted
109
+ content:
110
+ application/json:
111
+ schema:
112
+ $ref: "#/components/schemas/DeleteIssueManagerTopicResponse"
113
+ "400":
114
+ $ref: "#/components/responses/InvalidRequestError"
115
+ "401":
116
+ $ref: "#/components/responses/UnauthorizedError"
117
+ "404":
118
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
119
+ "405":
120
+ $ref: "#/components/responses/MethodNotAllowedError"
121
+ "409":
122
+ $ref: "#/components/responses/WorkspaceIssueResourceExistsError"
123
+ "502":
124
+ $ref: "#/components/responses/WorkspaceOperationError"
125
+ "503":
126
+ $ref: "#/components/responses/ServiceUnavailableError"
8
127
  /v1/workspaces/{workspaceID}/issues:
9
128
  parameters:
10
129
  - $ref: "#/components/parameters/WorkspaceID"
@@ -16,6 +135,7 @@ paths:
16
135
  parameters:
17
136
  - $ref: "#/components/parameters/IssueManagerPageSize"
18
137
  - $ref: "#/components/parameters/IssueManagerPageToken"
138
+ - $ref: "#/components/parameters/IssueManagerTopicIDQuery"
19
139
  - $ref: "#/components/parameters/IssueManagerStatusFilter"
20
140
  - $ref: "#/components/parameters/IssueManagerSearchQuery"
21
141
  responses:
@@ -216,6 +336,125 @@ paths:
216
336
  $ref: "#/components/responses/WorkspaceOperationError"
217
337
  "503":
218
338
  $ref: "#/components/responses/ServiceUnavailableError"
339
+ /v1/workspaces/{workspaceID}/issues/{issueID}/runs:
340
+ parameters:
341
+ - $ref: "#/components/parameters/WorkspaceID"
342
+ - $ref: "#/components/parameters/IssueManagerIssueID"
343
+ get:
344
+ operationId: listWorkspaceIssueRuns
345
+ tags:
346
+ - issue
347
+ summary: List runs for one issue-manager issue
348
+ responses:
349
+ "200":
350
+ description: Workspace issue runs
351
+ content:
352
+ application/json:
353
+ schema:
354
+ $ref: "#/components/schemas/IssueManagerRunListResponse"
355
+ "400":
356
+ $ref: "#/components/responses/InvalidRequestError"
357
+ "401":
358
+ $ref: "#/components/responses/UnauthorizedError"
359
+ "404":
360
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
361
+ "405":
362
+ $ref: "#/components/responses/MethodNotAllowedError"
363
+ "502":
364
+ $ref: "#/components/responses/WorkspaceOperationError"
365
+ "503":
366
+ $ref: "#/components/responses/ServiceUnavailableError"
367
+ post:
368
+ operationId: createWorkspaceIssueRun
369
+ tags:
370
+ - issue
371
+ summary: Create one run for an issue-manager issue
372
+ requestBody:
373
+ required: true
374
+ content:
375
+ application/json:
376
+ schema:
377
+ $ref: "#/components/schemas/CreateIssueManagerRunRequest"
378
+ responses:
379
+ "201":
380
+ description: Workspace issue run created
381
+ content:
382
+ application/json:
383
+ schema:
384
+ $ref: "#/components/schemas/IssueManagerRunResponse"
385
+ "400":
386
+ $ref: "#/components/responses/InvalidRequestError"
387
+ "401":
388
+ $ref: "#/components/responses/UnauthorizedError"
389
+ "404":
390
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
391
+ "405":
392
+ $ref: "#/components/responses/MethodNotAllowedError"
393
+ "409":
394
+ $ref: "#/components/responses/WorkspaceIssueResourceExistsError"
395
+ "502":
396
+ $ref: "#/components/responses/WorkspaceOperationError"
397
+ "503":
398
+ $ref: "#/components/responses/ServiceUnavailableError"
399
+ /v1/workspaces/{workspaceID}/issues/{issueID}/runs/{runID}:
400
+ parameters:
401
+ - $ref: "#/components/parameters/WorkspaceID"
402
+ - $ref: "#/components/parameters/IssueManagerIssueID"
403
+ - $ref: "#/components/parameters/IssueManagerRunID"
404
+ get:
405
+ operationId: getWorkspaceIssueRun
406
+ tags:
407
+ - issue
408
+ summary: Get one issue-manager issue run
409
+ responses:
410
+ "200":
411
+ description: Workspace issue run
412
+ content:
413
+ application/json:
414
+ schema:
415
+ $ref: "#/components/schemas/IssueManagerRunEnvelope"
416
+ "400":
417
+ $ref: "#/components/responses/InvalidRequestError"
418
+ "401":
419
+ $ref: "#/components/responses/UnauthorizedError"
420
+ "404":
421
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
422
+ "405":
423
+ $ref: "#/components/responses/MethodNotAllowedError"
424
+ "502":
425
+ $ref: "#/components/responses/WorkspaceOperationError"
426
+ "503":
427
+ $ref: "#/components/responses/ServiceUnavailableError"
428
+ patch:
429
+ operationId: completeWorkspaceIssueRun
430
+ tags:
431
+ - issue
432
+ summary: Complete one issue-manager issue run
433
+ requestBody:
434
+ required: true
435
+ content:
436
+ application/json:
437
+ schema:
438
+ $ref: "#/components/schemas/CompleteIssueManagerRunRequest"
439
+ responses:
440
+ "200":
441
+ description: Workspace issue run completed
442
+ content:
443
+ application/json:
444
+ schema:
445
+ $ref: "#/components/schemas/IssueManagerRunEnvelope"
446
+ "400":
447
+ $ref: "#/components/responses/InvalidRequestError"
448
+ "401":
449
+ $ref: "#/components/responses/UnauthorizedError"
450
+ "404":
451
+ $ref: "#/components/responses/WorkspaceIssueResourceNotFoundError"
452
+ "405":
453
+ $ref: "#/components/responses/MethodNotAllowedError"
454
+ "502":
455
+ $ref: "#/components/responses/WorkspaceOperationError"
456
+ "503":
457
+ $ref: "#/components/responses/ServiceUnavailableError"
219
458
  /v1/workspaces/{workspaceID}/issues/{issueID}/tasks:
220
459
  parameters:
221
460
  - $ref: "#/components/parameters/WorkspaceID"
@@ -561,6 +800,20 @@ components:
561
800
  schema:
562
801
  type: string
563
802
  minLength: 1
803
+ IssueManagerTopicID:
804
+ name: topicID
805
+ in: path
806
+ required: true
807
+ schema:
808
+ type: string
809
+ minLength: 1
810
+ IssueManagerTopicIDQuery:
811
+ name: topicId
812
+ in: query
813
+ required: true
814
+ schema:
815
+ type: string
816
+ minLength: 1
564
817
  IssueManagerTaskID:
565
818
  name: taskID
566
819
  in: path
@@ -705,12 +958,53 @@ components:
705
958
  canceled:
706
959
  type: integer
707
960
  minimum: 0
961
+ IssueManagerTopic:
962
+ type: object
963
+ additionalProperties: false
964
+ required:
965
+ - topicId
966
+ - workspaceId
967
+ - title
968
+ - summary
969
+ - isDefault
970
+ - pinnedAtUnix
971
+ - lastActivityAtUnix
972
+ - createdAtUnix
973
+ - updatedAtUnix
974
+ properties:
975
+ topicId:
976
+ type: string
977
+ workspaceId:
978
+ type: string
979
+ title:
980
+ type: string
981
+ summary:
982
+ type: string
983
+ isDefault:
984
+ type: boolean
985
+ pinnedAtUnix:
986
+ type: integer
987
+ format: int64
988
+ minimum: 0
989
+ lastActivityAtUnix:
990
+ type: integer
991
+ format: int64
992
+ minimum: 0
993
+ createdAtUnix:
994
+ type: integer
995
+ format: int64
996
+ minimum: 0
997
+ updatedAtUnix:
998
+ type: integer
999
+ format: int64
1000
+ minimum: 0
708
1001
  IssueManagerIssue:
709
1002
  type: object
710
1003
  additionalProperties: false
711
1004
  required:
712
1005
  - issueId
713
1006
  - workspaceId
1007
+ - topicId
714
1008
  - title
715
1009
  - content
716
1010
  - status
@@ -731,6 +1025,8 @@ components:
731
1025
  type: string
732
1026
  workspaceId:
733
1027
  type: string
1028
+ topicId:
1029
+ type: string
734
1030
  title:
735
1031
  type: string
736
1032
  content:
@@ -834,7 +1130,6 @@ components:
834
1130
  additionalProperties: false
835
1131
  required:
836
1132
  - runId
837
- - taskId
838
1133
  - issueId
839
1134
  - workspaceId
840
1135
  - requesterUserId
@@ -896,7 +1191,6 @@ components:
896
1191
  required:
897
1192
  - outputId
898
1193
  - runId
899
- - taskId
900
1194
  - issueId
901
1195
  - workspaceId
902
1196
  - path
@@ -1019,6 +1313,24 @@ components:
1019
1313
  properties:
1020
1314
  issue:
1021
1315
  $ref: "#/components/schemas/IssueManagerIssue"
1316
+ IssueManagerTopicResponse:
1317
+ type: object
1318
+ additionalProperties: false
1319
+ required:
1320
+ - topic
1321
+ properties:
1322
+ topic:
1323
+ $ref: "#/components/schemas/IssueManagerTopic"
1324
+ IssueManagerTopicListResponse:
1325
+ type: object
1326
+ additionalProperties: false
1327
+ required:
1328
+ - topics
1329
+ properties:
1330
+ topics:
1331
+ type: array
1332
+ items:
1333
+ $ref: "#/components/schemas/IssueManagerTopic"
1022
1334
  IssueManagerIssueListResponse:
1023
1335
  type: object
1024
1336
  additionalProperties: false
@@ -1045,6 +1357,9 @@ components:
1045
1357
  - issue
1046
1358
  - tasks
1047
1359
  - contextRefs
1360
+ - latestRun
1361
+ - recentRuns
1362
+ - latestOutputs
1048
1363
  properties:
1049
1364
  issue:
1050
1365
  $ref: "#/components/schemas/IssueManagerIssue"
@@ -1056,6 +1371,18 @@ components:
1056
1371
  type: array
1057
1372
  items:
1058
1373
  $ref: "#/components/schemas/IssueManagerContextRef"
1374
+ latestRun:
1375
+ allOf:
1376
+ - $ref: "#/components/schemas/IssueManagerRun"
1377
+ nullable: true
1378
+ recentRuns:
1379
+ type: array
1380
+ items:
1381
+ $ref: "#/components/schemas/IssueManagerRun"
1382
+ latestOutputs:
1383
+ type: array
1384
+ items:
1385
+ $ref: "#/components/schemas/IssueManagerRunOutput"
1059
1386
  IssueManagerTaskResponse:
1060
1387
  type: object
1061
1388
  additionalProperties: false
@@ -1156,15 +1483,42 @@ components:
1156
1483
  type: object
1157
1484
  additionalProperties: false
1158
1485
  required:
1486
+ - topicId
1159
1487
  - title
1160
1488
  properties:
1161
1489
  issueId:
1162
1490
  type: string
1491
+ topicId:
1492
+ type: string
1493
+ minLength: 1
1163
1494
  title:
1164
1495
  type: string
1165
1496
  minLength: 1
1166
1497
  content:
1167
1498
  type: string
1499
+ CreateIssueManagerTopicRequest:
1500
+ type: object
1501
+ additionalProperties: false
1502
+ required:
1503
+ - title
1504
+ properties:
1505
+ topicId:
1506
+ type: string
1507
+ title:
1508
+ type: string
1509
+ minLength: 1
1510
+ summary:
1511
+ type: string
1512
+ UpdateIssueManagerTopicRequest:
1513
+ type: object
1514
+ additionalProperties: false
1515
+ properties:
1516
+ title:
1517
+ type: string
1518
+ summary:
1519
+ type: string
1520
+ pinned:
1521
+ type: boolean
1168
1522
  UpdateIssueManagerIssueRequest:
1169
1523
  type: object
1170
1524
  additionalProperties: false
@@ -1173,6 +1527,8 @@ components:
1173
1527
  type: string
1174
1528
  content:
1175
1529
  type: string
1530
+ status:
1531
+ $ref: "#/components/schemas/IssueManagerStatus"
1176
1532
  CreateIssueManagerTaskRequest:
1177
1533
  type: object
1178
1534
  additionalProperties: false
@@ -1293,6 +1649,14 @@ components:
1293
1649
  properties:
1294
1650
  removed:
1295
1651
  type: boolean
1652
+ DeleteIssueManagerTopicResponse:
1653
+ type: object
1654
+ additionalProperties: false
1655
+ required:
1656
+ - removed
1657
+ properties:
1658
+ removed:
1659
+ type: boolean
1296
1660
  DeleteIssueManagerTaskResponse:
1297
1661
  type: object
1298
1662
  additionalProperties: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextop-os/workspace-issue-manager",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -34,6 +34,10 @@
34
34
  "types": "./dist/ui/index.d.ts",
35
35
  "import": "./dist/ui/index.js"
36
36
  },
37
+ "./workbench/constants": {
38
+ "types": "./dist/workbench/constants.d.ts",
39
+ "import": "./dist/workbench/constants.js"
40
+ },
37
41
  "./workbench": {
38
42
  "types": "./dist/workbench/index.d.ts",
39
43
  "import": "./dist/workbench/index.js"
@@ -50,11 +54,12 @@
50
54
  "directory": "packages/workspace/issue-manager"
51
55
  },
52
56
  "dependencies": {
53
- "@nextop-os/ui-i18n-runtime": "0.0.27",
54
- "@nextop-os/ui-rich-text": "0.0.27",
55
- "@nextop-os/ui-system": "0.0.27",
56
- "@nextop-os/workbench-surface": "0.0.27",
57
- "@nextop-os/workspace-file-preview": "0.0.27",
57
+ "@nextop-os/ui-i18n-runtime": "0.0.29",
58
+ "@nextop-os/ui-rich-text": "0.0.29",
59
+ "@nextop-os/ui-system": "0.0.29",
60
+ "@nextop-os/workbench-surface": "0.0.29",
61
+ "@nextop-os/workspace-file-reference": "0.0.29",
62
+ "@nextop-os/workspace-file-preview": "0.0.29",
58
63
  "valtio": "^2.3.2"
59
64
  },
60
65
  "devDependencies": {