@nextop-os/workspace-issue-manager 0.0.16 → 0.0.17

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.
@@ -3,7 +3,7 @@ import { I18nRuntime, I18nDictionary } from '@nextop-os/ui-i18n-runtime';
3
3
 
4
4
  declare const issueManagerI18nNamespace = "issueManager";
5
5
  declare const issueManagerI18nModule: _nextop_os_ui_i18n_runtime.ScopedLocaleObjectsI18nModuleManifest;
6
- type IssueManagerI18nKey = "dockLabel" | "emptyState" | "status.canceled" | "status.completed" | "status.failed" | "status.notStarted" | "status.pendingAcceptance" | "status.running" | "status.unknown" | "title";
6
+ type IssueManagerI18nKey = string;
7
7
  type IssueManagerI18nRuntime = I18nRuntime<IssueManagerI18nKey>;
8
8
  declare const issueManagerI18nResources: {
9
9
  readonly en: {
@@ -3,7 +3,7 @@ import {
3
3
  issueManagerI18nModule,
4
4
  issueManagerI18nNamespace,
5
5
  issueManagerI18nResources
6
- } from "../chunk-CSDFXQBD.js";
6
+ } from "../chunk-5YEGAJKA.js";
7
7
  export {
8
8
  createIssueManagerI18nRuntime,
9
9
  issueManagerI18nModule,
package/dist/index.d.ts CHANGED
@@ -1,25 +1,36 @@
1
- import { I18nRuntime } from '@nextop-os/ui-i18n-runtime';
2
- import { IssueManagerI18nRuntime } from './i18n/index.js';
3
- import { IssueManagerAgentRunner, IssueManagerBackend, IssueManagerFileAdapter, IssueManagerIdentityAdapter, IssueManagerShareAdapter, IssueManagerNodeState } from './contracts/index.js';
1
+ export { C as CreateIssueManagerFeatureInput, I as IssueManagerFeature, c as createIssueManagerFeature, d as defaultIssueManagerNodeState, n as normalizeIssueManagerNodeState } from './feature-B6_wXych.js';
2
+ import { IssueManagerIssueSummary, IssueManagerTaskSummary } from './contracts/index.js';
3
+ import '@nextop-os/ui-i18n-runtime';
4
+ import './i18n/index.js';
4
5
 
5
- interface IssueManagerFeature {
6
- agentRunner: IssueManagerAgentRunner;
7
- backend: IssueManagerBackend;
8
- fileAdapter?: IssueManagerFileAdapter;
9
- i18n: IssueManagerI18nRuntime;
10
- identityAdapter: IssueManagerIdentityAdapter;
11
- shareAdapter?: IssueManagerShareAdapter;
12
- }
13
- interface CreateIssueManagerFeatureInput {
14
- agentRunner: IssueManagerAgentRunner;
15
- backend: IssueManagerBackend;
16
- fileAdapter?: IssueManagerFileAdapter;
17
- i18n?: I18nRuntime<string>;
18
- identityAdapter: IssueManagerIdentityAdapter;
19
- shareAdapter?: IssueManagerShareAdapter;
20
- }
21
- declare const defaultIssueManagerNodeState: IssueManagerNodeState;
22
- declare function createIssueManagerFeature(input: CreateIssueManagerFeatureInput): IssueManagerFeature;
23
- declare function normalizeIssueManagerNodeState(state: Partial<IssueManagerNodeState> | null | undefined): IssueManagerNodeState;
6
+ type IssueManagerWorkspaceFileLinkRef = {
7
+ href: string;
8
+ kind: "file" | "folder";
9
+ name: string;
10
+ path: string;
11
+ };
12
+ type IssueManagerWorkspaceFileLinkInput = {
13
+ kind?: "file" | "folder";
14
+ name?: string | null;
15
+ path: string;
16
+ };
17
+ declare function normalizeIssueManagerContent(value?: string | null): string;
18
+ declare function normalizeIssueManagerWorkspaceFileLinkHref(pathOrHref: string, kind?: "file" | "folder"): string;
19
+ declare function createIssueManagerWorkspaceFileLinkMarkdown(input: IssueManagerWorkspaceFileLinkInput): string;
20
+ declare function appendIssueManagerWorkspaceFileLinksToContent(value: string | null | undefined, refs: readonly IssueManagerWorkspaceFileLinkInput[]): string;
21
+ declare function extractIssueManagerWorkspaceFileLinksFromContent(value: string | null | undefined): IssueManagerWorkspaceFileLinkRef[];
22
+ declare function removeIssueManagerWorkspaceFileLinkFromContent(content: string, path: string): string;
23
+ declare function extractIssueManagerPlainTextFromContent(value?: string | null): string;
24
+ declare function extractIssueManagerPlainTextWithoutFilesFromContent(value?: string | null): string;
24
25
 
25
- export { type CreateIssueManagerFeatureInput, type IssueManagerFeature, createIssueManagerFeature, defaultIssueManagerNodeState, normalizeIssueManagerNodeState };
26
+ declare function buildIssueManagerRunOutputDir(issueId: string, taskId: string, runId: string): string;
27
+ declare function buildIssueManagerUploadDir(issueId: string, taskId?: string | null): string;
28
+ declare function resolveIssueManagerWorkspaceRuntimePath(workspaceRoot: string, requestedPath: string): string;
29
+ declare function buildIssueManagerRunPrompt(input: {
30
+ issue: IssueManagerIssueSummary;
31
+ runId: string;
32
+ task: IssueManagerTaskSummary;
33
+ workspaceRoot: string;
34
+ }): string;
35
+
36
+ export { type IssueManagerWorkspaceFileLinkInput, type IssueManagerWorkspaceFileLinkRef, appendIssueManagerWorkspaceFileLinksToContent, buildIssueManagerRunOutputDir, buildIssueManagerRunPrompt, buildIssueManagerUploadDir, createIssueManagerWorkspaceFileLinkMarkdown, extractIssueManagerPlainTextFromContent, extractIssueManagerPlainTextWithoutFilesFromContent, extractIssueManagerWorkspaceFileLinksFromContent, normalizeIssueManagerContent, normalizeIssueManagerWorkspaceFileLinkHref, removeIssueManagerWorkspaceFileLinkFromContent, resolveIssueManagerWorkspaceRuntimePath };
package/dist/index.js CHANGED
@@ -1,12 +1,36 @@
1
1
  import {
2
+ appendIssueManagerWorkspaceFileLinksToContent,
3
+ buildIssueManagerRunOutputDir,
4
+ buildIssueManagerRunPrompt,
5
+ buildIssueManagerUploadDir,
2
6
  createIssueManagerFeature,
7
+ createIssueManagerWorkspaceFileLinkMarkdown,
3
8
  defaultIssueManagerNodeState,
4
- normalizeIssueManagerNodeState
5
- } from "./chunk-POBWWUUQ.js";
6
- import "./chunk-CSDFXQBD.js";
9
+ extractIssueManagerPlainTextFromContent,
10
+ extractIssueManagerPlainTextWithoutFilesFromContent,
11
+ extractIssueManagerWorkspaceFileLinksFromContent,
12
+ normalizeIssueManagerContent,
13
+ normalizeIssueManagerNodeState,
14
+ normalizeIssueManagerWorkspaceFileLinkHref,
15
+ removeIssueManagerWorkspaceFileLinkFromContent,
16
+ resolveIssueManagerWorkspaceRuntimePath
17
+ } from "./chunk-LYYOPZIJ.js";
18
+ import "./chunk-5YEGAJKA.js";
7
19
  export {
20
+ appendIssueManagerWorkspaceFileLinksToContent,
21
+ buildIssueManagerRunOutputDir,
22
+ buildIssueManagerRunPrompt,
23
+ buildIssueManagerUploadDir,
8
24
  createIssueManagerFeature,
25
+ createIssueManagerWorkspaceFileLinkMarkdown,
9
26
  defaultIssueManagerNodeState,
10
- normalizeIssueManagerNodeState
27
+ extractIssueManagerPlainTextFromContent,
28
+ extractIssueManagerPlainTextWithoutFilesFromContent,
29
+ extractIssueManagerWorkspaceFileLinksFromContent,
30
+ normalizeIssueManagerContent,
31
+ normalizeIssueManagerNodeState,
32
+ normalizeIssueManagerWorkspaceFileLinkHref,
33
+ removeIssueManagerWorkspaceFileLinkFromContent,
34
+ resolveIssueManagerWorkspaceRuntimePath
11
35
  };
12
36
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import { JSX } from 'react';
2
2
  import { IssueManagerNodeState } from '../contracts/index.js';
3
- import { IssueManagerFeature } from '../index.js';
3
+ import { I as IssueManagerFeature } from '../feature-B6_wXych.js';
4
4
  import '@nextop-os/ui-i18n-runtime';
5
5
  import '../i18n/index.js';
6
6
 
@@ -11,7 +11,7 @@ interface IssueManagerNodeProps {
11
11
  state?: Partial<IssueManagerNodeState> | null;
12
12
  workspaceId: string;
13
13
  }
14
- declare function IssueManagerNode({ feature, nodeId, state, workspaceId }: IssueManagerNodeProps): JSX.Element;
14
+ declare function IssueManagerNode({ feature, nodeId, onStateChange, state, workspaceId }: IssueManagerNodeProps): JSX.Element;
15
15
  declare function IssueManagerNodeHeader(): JSX.Element | null;
16
16
 
17
17
  export { IssueManagerNode, IssueManagerNodeHeader, type IssueManagerNodeProps };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  IssueManagerNode,
3
3
  IssueManagerNodeHeader
4
- } from "../chunk-HMMAMS4Z.js";
5
- import "../chunk-POBWWUUQ.js";
6
- import "../chunk-CSDFXQBD.js";
4
+ } from "../chunk-RX6P2DPR.js";
5
+ import "../chunk-LYYOPZIJ.js";
6
+ import "../chunk-5YEGAJKA.js";
7
7
  export {
8
8
  IssueManagerNode,
9
9
  IssueManagerNodeHeader
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { WorkbenchFrame, WorkbenchHostDockEntry, WorkbenchHostLaunchRequest, WorkbenchHostLaunchResult, WorkbenchHostNodeDefinition } from '@nextop-os/workbench-surface';
3
3
  import { IssueManagerNodeState } from '../contracts/index.js';
4
- import { IssueManagerFeature } from '../index.js';
4
+ import { I as IssueManagerFeature } from '../feature-B6_wXych.js';
5
5
  import '@nextop-os/ui-i18n-runtime';
6
6
  import '../i18n/index.js';
7
7
 
@@ -11,6 +11,13 @@ interface IssueManagerExternalWorkspaceState {
11
11
  interface CreateIssueManagerWorkbenchNodeDefinitionInput {
12
12
  feature: IssueManagerFeature;
13
13
  frame?: WorkbenchFrame;
14
+ onStateChange?: (input: {
15
+ instanceId: string;
16
+ instanceKey?: string | null;
17
+ nodeId: string;
18
+ state: IssueManagerNodeState;
19
+ workspaceState: IssueManagerExternalWorkspaceState;
20
+ }) => void;
14
21
  title?: string;
15
22
  typeId?: string;
16
23
  }
@@ -28,7 +35,7 @@ interface CreateIssueManagerDockEntryInput {
28
35
  typeId?: string;
29
36
  }
30
37
  declare const defaultIssueManagerWorkbenchTypeId = "issue-manager";
31
- declare function createIssueManagerWorkbenchNodeDefinition<TExternalWorkspaceState extends IssueManagerExternalWorkspaceState = IssueManagerExternalWorkspaceState>({ feature, frame, title, typeId }: CreateIssueManagerWorkbenchNodeDefinitionInput): WorkbenchHostNodeDefinition<Partial<IssueManagerNodeState> | null, TExternalWorkspaceState>;
38
+ declare function createIssueManagerWorkbenchNodeDefinition<TExternalWorkspaceState extends IssueManagerExternalWorkspaceState = IssueManagerExternalWorkspaceState>({ feature, frame, onStateChange, title, typeId }: CreateIssueManagerWorkbenchNodeDefinitionInput): WorkbenchHostNodeDefinition<Partial<IssueManagerNodeState> | null, TExternalWorkspaceState>;
32
39
  declare function createIssueManagerDockEntry({ dockIcon, feature, id, order, sectionId, typeId }: CreateIssueManagerDockEntryInput): WorkbenchHostDockEntry;
33
40
  declare function createIssueManagerWorkbenchLaunchHandler({ frame, title, typeId }?: CreateIssueManagerWorkbenchLaunchHandlerInput): (request: WorkbenchHostLaunchRequest) => Promise<WorkbenchHostLaunchResult | null>;
34
41
 
@@ -1,12 +1,16 @@
1
1
  import {
2
2
  IssueManagerNode
3
- } from "../chunk-HMMAMS4Z.js";
4
- import "../chunk-POBWWUUQ.js";
5
- import "../chunk-CSDFXQBD.js";
3
+ } from "../chunk-RX6P2DPR.js";
4
+ import "../chunk-LYYOPZIJ.js";
5
+ import "../chunk-5YEGAJKA.js";
6
6
 
7
7
  // src/workbench/index.ts
8
8
  import { createElement } from "react";
9
9
  var defaultIssueManagerWorkbenchTypeId = "issue-manager";
10
+ var defaultIssueManagerDockIconUrl = new URL(
11
+ "../assets/workspace-dock-task.png",
12
+ import.meta.url
13
+ ).href;
10
14
  var defaultIssueManagerNodeFrame = {
11
15
  height: 620,
12
16
  width: 960,
@@ -16,6 +20,7 @@ var defaultIssueManagerNodeFrame = {
16
20
  function createIssueManagerWorkbenchNodeDefinition({
17
21
  feature,
18
22
  frame = defaultIssueManagerNodeFrame,
23
+ onStateChange,
19
24
  title,
20
25
  typeId = defaultIssueManagerWorkbenchTypeId
21
26
  }) {
@@ -27,6 +32,13 @@ function createIssueManagerWorkbenchNodeDefinition({
27
32
  renderBody: (context) => createElement(IssueManagerNode, {
28
33
  feature,
29
34
  nodeId: context.node.id,
35
+ onStateChange: onStateChange ? (state) => onStateChange({
36
+ instanceId: context.instanceId,
37
+ instanceKey: context.instanceKey ?? null,
38
+ nodeId: context.node.id,
39
+ state,
40
+ workspaceState: context.externalWorkspaceState
41
+ }) : void 0,
30
42
  state: context.externalNodeState,
31
43
  workspaceId: context.externalWorkspaceState.workspaceId ?? ""
32
44
  }),
@@ -83,14 +95,13 @@ function createIssueManagerWorkbenchLaunchHandler({
83
95
  };
84
96
  }
85
97
  function DefaultIssueManagerDockIcon() {
86
- return createElement(
87
- "span",
88
- {
89
- "aria-hidden": "true",
90
- className: "workspace-issue-manager__dock-icon"
91
- },
92
- "!"
93
- );
98
+ return createElement("img", {
99
+ alt: "",
100
+ "aria-hidden": "true",
101
+ "data-issue-manager-dock-icon": "true",
102
+ draggable: false,
103
+ src: defaultIssueManagerDockIconUrl
104
+ });
94
105
  }
95
106
  export {
96
107
  createIssueManagerDockEntry,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workbench/index.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type {\n WorkbenchFrame,\n WorkbenchHostDockEntry,\n WorkbenchHostLaunchRequest,\n WorkbenchHostLaunchResult,\n WorkbenchHostNodeDefinition\n} from \"@nextop-os/workbench-surface\";\nimport type { IssueManagerNodeState } from \"../contracts/index.ts\";\nimport type { IssueManagerFeature } from \"../core/index.ts\";\nimport { IssueManagerNode } from \"../react/IssueManagerNode.tsx\";\n\nexport interface IssueManagerExternalWorkspaceState {\n workspaceId?: string | null;\n}\n\nexport interface CreateIssueManagerWorkbenchNodeDefinitionInput {\n feature: IssueManagerFeature;\n frame?: WorkbenchFrame;\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 sectionId?: string;\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 feature,\n frame = defaultIssueManagerNodeFrame,\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 feature,\n nodeId: context.node.id,\n state: context.externalNodeState,\n workspaceId: context.externalWorkspaceState.workspaceId ?? \"\"\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 sectionId,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerDockEntryInput): WorkbenchHostDockEntry {\n return {\n icon: dockIcon ?? createElement(DefaultIssueManagerDockIcon),\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 sectionId,\n typeId,\n visibility: \"always\"\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\nfunction DefaultIssueManagerDockIcon() {\n return createElement(\n \"span\",\n {\n \"aria-hidden\": \"true\",\n className: \"workspace-issue-manager__dock-icon\"\n },\n \"!\"\n );\n}\n"],"mappings":";;;;;;;AAAA,SAAS,qBAAqC;AAsCvC,IAAM,qCAAqC;AAElD,IAAM,+BAA+C;AAAA,EACnD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,GAAG;AAAA,EACH,GAAG;AACL;AAEO,SAAS,0CAGd;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AACX,GAGE;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,YAAY,CAAC,YACX,cAAc,kBAAkB;AAAA,MAC9B;AAAA,MACA,QAAQ,QAAQ,KAAK;AAAA,MACrB,OAAO,QAAQ;AAAA,MACf,aAAa,QAAQ,uBAAuB,eAAe;AAAA,IAC7D,CAAC;AAAA,IACH,OAAO,SAAS,QAAQ,KAAK,EAAE,OAAO;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAA6D;AAC3D,SAAO;AAAA,IACL,MAAM,YAAY,cAAc,2BAA2B;AAAA,IAC3D,IAAI,MAAM;AAAA,IACV,OAAO,QAAQ,KAAK,EAAE,WAAW;AAAA,IACjC,gBAAgB;AAAA,IAChB,WAAW,CAAC,SAAS,KAAK,KAAK,WAAW;AAAA,IAC1C;AAAA,IACA,kBAAkB,CAAC,EAAE,KAAK,OAAO;AAAA,MAC/B,OAAO,KAAK;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd;AACF;AAEO,SAAS,yCAAyC;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AACX,IAAmD,CAAC,GAEL;AAC7C,SAAO,CAAC,YAAY;AAClB,QAAI,QAAQ,WAAW,QAAQ;AAC7B,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC7B;AAEA,WAAO,QAAQ,QAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa,QAAQ,eAAe;AAAA,MACpC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,8BAA8B;AACrC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf,WAAW;AAAA,IACb;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/workbench/index.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type {\n WorkbenchFrame,\n WorkbenchHostDockEntry,\n WorkbenchHostLaunchRequest,\n WorkbenchHostLaunchResult,\n WorkbenchHostNodeDefinition\n} from \"@nextop-os/workbench-surface\";\nimport type { IssueManagerNodeState } from \"../contracts/index.ts\";\nimport type { IssueManagerFeature } from \"../core/index.ts\";\nimport { IssueManagerNode } from \"../react/IssueManagerNode.tsx\";\n\nexport interface IssueManagerExternalWorkspaceState {\n workspaceId?: string | null;\n}\n\nexport interface CreateIssueManagerWorkbenchNodeDefinitionInput {\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 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 sectionId?: string;\n typeId?: string;\n}\n\nexport const defaultIssueManagerWorkbenchTypeId = \"issue-manager\";\nconst defaultIssueManagerDockIconUrl = new URL(\n \"../assets/workspace-dock-task.png\",\n import.meta.url\n).href;\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 feature,\n frame = defaultIssueManagerNodeFrame,\n onStateChange,\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 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 state: context.externalNodeState,\n workspaceId: context.externalWorkspaceState.workspaceId ?? \"\"\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 sectionId,\n typeId = defaultIssueManagerWorkbenchTypeId\n}: CreateIssueManagerDockEntryInput): WorkbenchHostDockEntry {\n return {\n icon: dockIcon ?? createElement(DefaultIssueManagerDockIcon),\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 sectionId,\n typeId,\n visibility: \"always\"\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\nfunction DefaultIssueManagerDockIcon() {\n return createElement(\"img\", {\n alt: \"\",\n \"aria-hidden\": \"true\",\n \"data-issue-manager-dock-icon\": \"true\",\n draggable: false,\n src: defaultIssueManagerDockIconUrl\n });\n}\n"],"mappings":";;;;;;;AAAA,SAAS,qBAAqC;AA6CvC,IAAM,qCAAqC;AAClD,IAAM,iCAAiC,IAAI;AAAA,EACzC;AAAA,EACA,YAAY;AACd,EAAE;AAEF,IAAM,+BAA+C;AAAA,EACnD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,GAAG;AAAA,EACH,GAAG;AACL;AAEO,SAAS,0CAGd;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAGE;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,YAAY,CAAC,YACX,cAAc,kBAAkB;AAAA,MAC9B;AAAA,MACA,QAAQ,QAAQ,KAAK;AAAA,MACrB,eAAe,gBACX,CAAC,UACC,cAAc;AAAA,QACZ,YAAY,QAAQ;AAAA,QACpB,aAAa,QAAQ,eAAe;AAAA,QACpC,QAAQ,QAAQ,KAAK;AAAA,QACrB;AAAA,QACA,gBAAgB,QAAQ;AAAA,MAC1B,CAAC,IACH;AAAA,MACJ,OAAO,QAAQ;AAAA,MACf,aAAa,QAAQ,uBAAuB,eAAe;AAAA,IAC7D,CAAC;AAAA,IACH,OAAO,SAAS,QAAQ,KAAK,EAAE,OAAO;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAA6D;AAC3D,SAAO;AAAA,IACL,MAAM,YAAY,cAAc,2BAA2B;AAAA,IAC3D,IAAI,MAAM;AAAA,IACV,OAAO,QAAQ,KAAK,EAAE,WAAW;AAAA,IACjC,gBAAgB;AAAA,IAChB,WAAW,CAAC,SAAS,KAAK,KAAK,WAAW;AAAA,IAC1C;AAAA,IACA,kBAAkB,CAAC,EAAE,KAAK,OAAO;AAAA,MAC/B,OAAO,KAAK;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd;AACF;AAEO,SAAS,yCAAyC;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AACX,IAAmD,CAAC,GAEL;AAC7C,SAAO,CAAC,YAAY;AAClB,QAAI,QAAQ,WAAW,QAAQ;AAC7B,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC7B;AAEA,WAAO,QAAQ,QAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa,QAAQ,eAAe;AAAA,MACpC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,8BAA8B;AACrC,SAAO,cAAc,OAAO;AAAA,IAC1B,KAAK;AAAA,IACL,eAAe;AAAA,IACf,gCAAgC;AAAA,IAChC,WAAW;AAAA,IACX,KAAK;AAAA,EACP,CAAC;AACH;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextop-os/workspace-issue-manager",
3
- "version": "0.0.16",
3
+ "version": "0.0.17",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -38,9 +38,9 @@
38
38
  "directory": "packages/workspace/issue-manager"
39
39
  },
40
40
  "dependencies": {
41
- "@nextop-os/ui-i18n-runtime": "0.0.16",
42
- "@nextop-os/ui-system": "0.0.16",
43
- "@nextop-os/workbench-surface": "0.0.16"
41
+ "@nextop-os/ui-i18n-runtime": "0.0.17",
42
+ "@nextop-os/ui-system": "0.0.17",
43
+ "@nextop-os/workbench-surface": "0.0.17"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^24.0.1",
@@ -63,7 +63,7 @@
63
63
  },
64
64
  "scripts": {
65
65
  "build": "tsup --config tsup.config.ts",
66
- "test": "node --test --experimental-strip-types ./src/**/*.test.ts",
66
+ "test": "node --test --experimental-strip-types ./src/*.test.ts ./src/*/*.test.ts ./src/*/*/*.test.ts",
67
67
  "typecheck": "tsc --noEmit -p tsconfig.json"
68
68
  }
69
69
  }
@@ -1,73 +0,0 @@
1
- // src/i18n/issueManagerI18n.ts
2
- import {
3
- createI18nRuntime,
4
- createScopedI18nRuntime,
5
- createScopedLocaleObjectsI18nModuleManifest
6
- } from "@nextop-os/ui-i18n-runtime";
7
- var issueManagerI18nNamespace = "issueManager";
8
- var issueManagerI18nModule = createScopedLocaleObjectsI18nModuleManifest({
9
- localeObjectByLocale: {
10
- en: "issueManagerEn",
11
- "zh-CN": "issueManagerZhCN"
12
- },
13
- name: "workspace-issue-manager",
14
- namespace: issueManagerI18nNamespace,
15
- sourceRoot: "packages/workspace/issue-manager/src"
16
- });
17
- var issueManagerEn = {
18
- dockLabel: "Issues",
19
- emptyState: "No issue selected",
20
- status: {
21
- canceled: "Canceled",
22
- completed: "Completed",
23
- failed: "Failed",
24
- notStarted: "Not started",
25
- pendingAcceptance: "Pending acceptance",
26
- running: "Running",
27
- unknown: "Unknown"
28
- },
29
- title: "Issue Manager"
30
- };
31
- var issueManagerZhCN = {
32
- dockLabel: "\u4EFB\u52A1",
33
- emptyState: "\u672A\u9009\u62E9\u4EFB\u52A1",
34
- status: {
35
- canceled: "\u5DF2\u53D6\u6D88",
36
- completed: "\u5DF2\u5B8C\u6210",
37
- failed: "\u5931\u8D25",
38
- notStarted: "\u672A\u542F\u52A8",
39
- pendingAcceptance: "\u5F85\u9A8C\u6536",
40
- running: "\u6267\u884C\u4E2D",
41
- unknown: "\u672A\u77E5"
42
- },
43
- title: "\u4EFB\u52A1\u7BA1\u7406"
44
- };
45
- var issueManagerDefaults = {
46
- en: issueManagerEn,
47
- "zh-CN": issueManagerZhCN
48
- };
49
- var issueManagerI18nResources = {
50
- en: {
51
- [issueManagerI18nNamespace]: issueManagerDefaults.en
52
- },
53
- "zh-CN": {
54
- [issueManagerI18nNamespace]: issueManagerDefaults["zh-CN"]
55
- }
56
- };
57
- var defaultIssueManagerI18n = createI18nRuntime({
58
- dictionaries: [issueManagerI18nResources.en]
59
- });
60
- function createIssueManagerI18nRuntime(runtime) {
61
- return createScopedI18nRuntime(
62
- runtime ?? defaultIssueManagerI18n,
63
- issueManagerI18nNamespace
64
- );
65
- }
66
-
67
- export {
68
- issueManagerI18nNamespace,
69
- issueManagerI18nModule,
70
- issueManagerI18nResources,
71
- createIssueManagerI18nRuntime
72
- };
73
- //# sourceMappingURL=chunk-CSDFXQBD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n/issueManagerI18n.ts"],"sourcesContent":["import {\n createI18nRuntime,\n createScopedI18nRuntime,\n createScopedLocaleObjectsI18nModuleManifest,\n type I18nDictionary,\n type I18nRuntime\n} from \"@nextop-os/ui-i18n-runtime\";\n\ntype IssueManagerI18nLocale = \"en\" | \"zh-CN\";\n\nexport const issueManagerI18nNamespace = \"issueManager\";\nexport const issueManagerI18nModule =\n createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"issueManagerEn\",\n \"zh-CN\": \"issueManagerZhCN\"\n },\n name: \"workspace-issue-manager\",\n namespace: issueManagerI18nNamespace,\n sourceRoot: \"packages/workspace/issue-manager/src\"\n });\n\nconst issueManagerEn = {\n dockLabel: \"Issues\",\n emptyState: \"No issue selected\",\n status: {\n canceled: \"Canceled\",\n completed: \"Completed\",\n failed: \"Failed\",\n notStarted: \"Not started\",\n pendingAcceptance: \"Pending acceptance\",\n running: \"Running\",\n unknown: \"Unknown\"\n },\n title: \"Issue Manager\"\n} as const satisfies I18nDictionary;\n\nconst issueManagerZhCN = {\n dockLabel: \"任务\",\n emptyState: \"未选择任务\",\n status: {\n canceled: \"已取消\",\n completed: \"已完成\",\n failed: \"失败\",\n notStarted: \"未启动\",\n pendingAcceptance: \"待验收\",\n running: \"执行中\",\n unknown: \"未知\"\n },\n title: \"任务管理\"\n} as const satisfies I18nDictionary;\n\nexport type IssueManagerI18nKey =\n | \"dockLabel\"\n | \"emptyState\"\n | \"status.canceled\"\n | \"status.completed\"\n | \"status.failed\"\n | \"status.notStarted\"\n | \"status.pendingAcceptance\"\n | \"status.running\"\n | \"status.unknown\"\n | \"title\";\n\nexport type IssueManagerI18nRuntime = I18nRuntime<IssueManagerI18nKey>;\n\nconst issueManagerDefaults: Record<IssueManagerI18nLocale, I18nDictionary> = {\n en: issueManagerEn,\n \"zh-CN\": issueManagerZhCN\n};\n\nexport const issueManagerI18nResources = {\n en: {\n [issueManagerI18nNamespace]: issueManagerDefaults.en\n },\n \"zh-CN\": {\n [issueManagerI18nNamespace]: issueManagerDefaults[\"zh-CN\"]\n }\n} as const satisfies Record<IssueManagerI18nLocale, I18nDictionary>;\n\nconst defaultIssueManagerI18n = createI18nRuntime({\n dictionaries: [issueManagerI18nResources.en]\n});\n\nexport function createIssueManagerI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): IssueManagerI18nRuntime {\n return createScopedI18nRuntime<IssueManagerI18nKey>(\n runtime ?? defaultIssueManagerI18n,\n issueManagerI18nNamespace\n );\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAIA,IAAM,4BAA4B;AAClC,IAAM,yBACX,4CAA4C;AAAA,EAC1C,sBAAsB;AAAA,IACpB,IAAI;AAAA,IACJ,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,EACN,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AAEH,IAAM,iBAAiB;AAAA,EACrB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AACT;AAEA,IAAM,mBAAmB;AAAA,EACvB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AACT;AAgBA,IAAM,uBAAuE;AAAA,EAC3E,IAAI;AAAA,EACJ,SAAS;AACX;AAEO,IAAM,4BAA4B;AAAA,EACvC,IAAI;AAAA,IACF,CAAC,yBAAyB,GAAG,qBAAqB;AAAA,EACpD;AAAA,EACA,SAAS;AAAA,IACP,CAAC,yBAAyB,GAAG,qBAAqB,OAAO;AAAA,EAC3D;AACF;AAEA,IAAM,0BAA0B,kBAAkB;AAAA,EAChD,cAAc,CAAC,0BAA0B,EAAE;AAC7C,CAAC;AAEM,SAAS,8BACd,SACyB;AACzB,SAAO;AAAA,IACL,WAAW;AAAA,IACX;AAAA,EACF;AACF;","names":[]}
@@ -1,33 +0,0 @@
1
- import {
2
- normalizeIssueManagerNodeState
3
- } from "./chunk-POBWWUUQ.js";
4
-
5
- // src/react/IssueManagerNode.tsx
6
- import { jsx } from "react/jsx-runtime";
7
- function IssueManagerNode({
8
- feature,
9
- nodeId,
10
- state,
11
- workspaceId
12
- }) {
13
- const normalizedState = normalizeIssueManagerNodeState(state);
14
- return /* @__PURE__ */ jsx(
15
- "section",
16
- {
17
- "aria-label": feature.i18n.t("title"),
18
- className: "flex h-full min-h-0 w-full min-w-0 text-foreground",
19
- "data-issue-manager-node-id": nodeId,
20
- "data-issue-manager-workspace-id": workspaceId,
21
- children: /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 items-center justify-center p-4 text-center text-[13px] text-muted-foreground", children: normalizedState.selectedIssueId ?? feature.i18n.t("emptyState") })
22
- }
23
- );
24
- }
25
- function IssueManagerNodeHeader() {
26
- return null;
27
- }
28
-
29
- export {
30
- IssueManagerNode,
31
- IssueManagerNodeHeader
32
- };
33
- //# sourceMappingURL=chunk-HMMAMS4Z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react/IssueManagerNode.tsx"],"sourcesContent":["import type { JSX } from \"react\";\nimport type { IssueManagerNodeState } from \"../contracts/index.ts\";\nimport {\n normalizeIssueManagerNodeState,\n type IssueManagerFeature\n} from \"../core/index.ts\";\n\nexport interface IssueManagerNodeProps {\n feature: IssueManagerFeature;\n nodeId: string;\n onStateChange?: (state: IssueManagerNodeState) => void;\n state?: Partial<IssueManagerNodeState> | null;\n workspaceId: string;\n}\n\nexport function IssueManagerNode({\n feature,\n nodeId,\n state,\n workspaceId\n}: IssueManagerNodeProps): JSX.Element {\n const normalizedState = normalizeIssueManagerNodeState(state);\n return (\n <section\n aria-label={feature.i18n.t(\"title\")}\n className=\"flex h-full min-h-0 w-full min-w-0 text-foreground\"\n data-issue-manager-node-id={nodeId}\n data-issue-manager-workspace-id={workspaceId}\n >\n <div className=\"flex min-w-0 flex-1 items-center justify-center p-4 text-center text-[13px] text-muted-foreground\">\n {normalizedState.selectedIssueId ?? feature.i18n.t(\"emptyState\")}\n </div>\n </section>\n );\n}\n\nexport function IssueManagerNodeHeader(): JSX.Element | null {\n return null;\n}\n"],"mappings":";;;;;AA6BM;AAdC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuC;AACrC,QAAM,kBAAkB,+BAA+B,KAAK;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,QAAQ,KAAK,EAAE,OAAO;AAAA,MAClC,WAAU;AAAA,MACV,8BAA4B;AAAA,MAC5B,mCAAiC;AAAA,MAEjC,8BAAC,SAAI,WAAU,qGACZ,0BAAgB,mBAAmB,QAAQ,KAAK,EAAE,YAAY,GACjE;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,yBAA6C;AAC3D,SAAO;AACT;","names":[]}
@@ -1,44 +0,0 @@
1
- import {
2
- createIssueManagerI18nRuntime
3
- } from "./chunk-CSDFXQBD.js";
4
-
5
- // src/core/feature.ts
6
- var defaultIssueManagerNodeState = {
7
- issueSearchQuery: "",
8
- issueStatusFilter: "all",
9
- selectedAgentProvider: "codex",
10
- selectedIssueId: null,
11
- selectedTaskId: null
12
- };
13
- function createIssueManagerFeature(input) {
14
- return {
15
- agentRunner: input.agentRunner,
16
- backend: input.backend,
17
- fileAdapter: input.fileAdapter,
18
- i18n: createIssueManagerI18nRuntime(input.i18n),
19
- identityAdapter: input.identityAdapter,
20
- shareAdapter: input.shareAdapter
21
- };
22
- }
23
- function normalizeIssueManagerNodeState(state) {
24
- return {
25
- ...defaultIssueManagerNodeState,
26
- ...state,
27
- issueSearchQuery: state?.issueSearchQuery?.trim() ?? "",
28
- issueStatusFilter: state?.issueStatusFilter ?? "all",
29
- selectedAgentProvider: state?.selectedAgentProvider?.trim() || "codex",
30
- selectedIssueId: normalizeNullableString(state?.selectedIssueId),
31
- selectedTaskId: normalizeNullableString(state?.selectedTaskId)
32
- };
33
- }
34
- function normalizeNullableString(value) {
35
- const trimmed = value?.trim() ?? "";
36
- return trimmed.length > 0 ? trimmed : null;
37
- }
38
-
39
- export {
40
- defaultIssueManagerNodeState,
41
- createIssueManagerFeature,
42
- normalizeIssueManagerNodeState
43
- };
44
- //# sourceMappingURL=chunk-POBWWUUQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/feature.ts"],"sourcesContent":["import type { I18nRuntime } from \"@nextop-os/ui-i18n-runtime\";\nimport {\n createIssueManagerI18nRuntime,\n type IssueManagerI18nRuntime\n} from \"../i18n/issueManagerI18n.ts\";\nimport type {\n IssueManagerAgentRunner,\n IssueManagerBackend,\n IssueManagerFileAdapter,\n IssueManagerIdentityAdapter,\n IssueManagerNodeState,\n IssueManagerShareAdapter\n} from \"../contracts/index.ts\";\n\nexport interface IssueManagerFeature {\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n fileAdapter?: IssueManagerFileAdapter;\n i18n: IssueManagerI18nRuntime;\n identityAdapter: IssueManagerIdentityAdapter;\n shareAdapter?: IssueManagerShareAdapter;\n}\n\nexport interface CreateIssueManagerFeatureInput {\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n fileAdapter?: IssueManagerFileAdapter;\n i18n?: I18nRuntime<string>;\n identityAdapter: IssueManagerIdentityAdapter;\n shareAdapter?: IssueManagerShareAdapter;\n}\n\nexport const defaultIssueManagerNodeState: IssueManagerNodeState = {\n issueSearchQuery: \"\",\n issueStatusFilter: \"all\",\n selectedAgentProvider: \"codex\",\n selectedIssueId: null,\n selectedTaskId: null\n};\n\nexport function createIssueManagerFeature(\n input: CreateIssueManagerFeatureInput\n): IssueManagerFeature {\n return {\n agentRunner: input.agentRunner,\n backend: input.backend,\n fileAdapter: input.fileAdapter,\n i18n: createIssueManagerI18nRuntime(input.i18n),\n identityAdapter: input.identityAdapter,\n shareAdapter: input.shareAdapter\n };\n}\n\nexport function normalizeIssueManagerNodeState(\n state: Partial<IssueManagerNodeState> | null | undefined\n): IssueManagerNodeState {\n return {\n ...defaultIssueManagerNodeState,\n ...state,\n issueSearchQuery: state?.issueSearchQuery?.trim() ?? \"\",\n issueStatusFilter: state?.issueStatusFilter ?? \"all\",\n selectedAgentProvider: state?.selectedAgentProvider?.trim() || \"codex\",\n selectedIssueId: normalizeNullableString(state?.selectedIssueId),\n selectedTaskId: normalizeNullableString(state?.selectedTaskId)\n };\n}\n\nfunction normalizeNullableString(\n value: string | null | undefined\n): string | null {\n const trimmed = value?.trim() ?? \"\";\n return trimmed.length > 0 ? trimmed : null;\n}\n"],"mappings":";;;;;AAgCO,IAAM,+BAAsD;AAAA,EACjE,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,SAAS,0BACd,OACqB;AACrB,SAAO;AAAA,IACL,aAAa,MAAM;AAAA,IACnB,SAAS,MAAM;AAAA,IACf,aAAa,MAAM;AAAA,IACnB,MAAM,8BAA8B,MAAM,IAAI;AAAA,IAC9C,iBAAiB,MAAM;AAAA,IACvB,cAAc,MAAM;AAAA,EACtB;AACF;AAEO,SAAS,+BACd,OACuB;AACvB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,kBAAkB,OAAO,kBAAkB,KAAK,KAAK;AAAA,IACrD,mBAAmB,OAAO,qBAAqB;AAAA,IAC/C,uBAAuB,OAAO,uBAAuB,KAAK,KAAK;AAAA,IAC/D,iBAAiB,wBAAwB,OAAO,eAAe;AAAA,IAC/D,gBAAgB,wBAAwB,OAAO,cAAc;AAAA,EAC/D;AACF;AAEA,SAAS,wBACP,OACe;AACf,QAAM,UAAU,OAAO,KAAK,KAAK;AACjC,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;","names":[]}