xgen-dex-ide 1.60.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 (91) hide show
  1. package/README.md +42 -0
  2. package/dist/components/ActivityBar.d.ts +21 -0
  3. package/dist/components/ActivityBar.d.ts.map +1 -0
  4. package/dist/components/ActivityBar.js +14 -0
  5. package/dist/components/ActivityBar.js.map +1 -0
  6. package/dist/components/EditorArea.d.ts +5 -0
  7. package/dist/components/EditorArea.d.ts.map +1 -0
  8. package/dist/components/EditorArea.js +468 -0
  9. package/dist/components/EditorArea.js.map +1 -0
  10. package/dist/components/Explorer.d.ts +2 -0
  11. package/dist/components/Explorer.d.ts.map +1 -0
  12. package/dist/components/Explorer.js +349 -0
  13. package/dist/components/Explorer.js.map +1 -0
  14. package/dist/components/IdeView.d.ts +24 -0
  15. package/dist/components/IdeView.d.ts.map +1 -0
  16. package/dist/components/IdeView.js +359 -0
  17. package/dist/components/IdeView.js.map +1 -0
  18. package/dist/components/QuickOpen.d.ts +2 -0
  19. package/dist/components/QuickOpen.d.ts.map +1 -0
  20. package/dist/components/QuickOpen.js +204 -0
  21. package/dist/components/QuickOpen.js.map +1 -0
  22. package/dist/components/ScmView.d.ts +6 -0
  23. package/dist/components/ScmView.d.ts.map +1 -0
  24. package/dist/components/ScmView.js +283 -0
  25. package/dist/components/ScmView.js.map +1 -0
  26. package/dist/components/SearchView.d.ts +2 -0
  27. package/dist/components/SearchView.d.ts.map +1 -0
  28. package/dist/components/SearchView.js +97 -0
  29. package/dist/components/SearchView.js.map +1 -0
  30. package/dist/components/StatusBar.d.ts +2 -0
  31. package/dist/components/StatusBar.d.ts.map +1 -0
  32. package/dist/components/StatusBar.js +71 -0
  33. package/dist/components/StatusBar.js.map +1 -0
  34. package/dist/components/TerminalPanel.d.ts +6 -0
  35. package/dist/components/TerminalPanel.d.ts.map +1 -0
  36. package/dist/components/TerminalPanel.js +101 -0
  37. package/dist/components/TerminalPanel.js.map +1 -0
  38. package/dist/components/hooks.d.ts +25 -0
  39. package/dist/components/hooks.d.ts.map +1 -0
  40. package/dist/components/hooks.js +99 -0
  41. package/dist/components/hooks.js.map +1 -0
  42. package/dist/components/icons.d.ts +23 -0
  43. package/dist/components/icons.d.ts.map +1 -0
  44. package/dist/components/icons.js +123 -0
  45. package/dist/components/icons.js.map +1 -0
  46. package/dist/components/primitives.d.ts +57 -0
  47. package/dist/components/primitives.d.ts.map +1 -0
  48. package/dist/components/primitives.js +263 -0
  49. package/dist/components/primitives.js.map +1 -0
  50. package/dist/fuzzy.d.ts +17 -0
  51. package/dist/fuzzy.d.ts.map +1 -0
  52. package/dist/fuzzy.js +62 -0
  53. package/dist/fuzzy.js.map +1 -0
  54. package/dist/git-model.d.ts +104 -0
  55. package/dist/git-model.d.ts.map +1 -0
  56. package/dist/git-model.js +126 -0
  57. package/dist/git-model.js.map +1 -0
  58. package/dist/ide.css +2203 -0
  59. package/dist/index.d.ts +22 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +19 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/keys.d.ts +33 -0
  64. package/dist/keys.d.ts.map +1 -0
  65. package/dist/keys.js +98 -0
  66. package/dist/keys.js.map +1 -0
  67. package/dist/paths.d.ts +14 -0
  68. package/dist/paths.d.ts.map +1 -0
  69. package/dist/paths.js +66 -0
  70. package/dist/paths.js.map +1 -0
  71. package/dist/store.d.ts +406 -0
  72. package/dist/store.d.ts.map +1 -0
  73. package/dist/store.js +1464 -0
  74. package/dist/store.js.map +1 -0
  75. package/dist/terminal.d.ts +60 -0
  76. package/dist/terminal.d.ts.map +1 -0
  77. package/dist/terminal.js +293 -0
  78. package/dist/terminal.js.map +1 -0
  79. package/dist/text.d.ts +26 -0
  80. package/dist/text.d.ts.map +1 -0
  81. package/dist/text.js +76 -0
  82. package/dist/text.js.map +1 -0
  83. package/dist/tree.d.ts +31 -0
  84. package/dist/tree.d.ts.map +1 -0
  85. package/dist/tree.js +105 -0
  86. package/dist/tree.js.map +1 -0
  87. package/dist/types.d.ts +216 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +14 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/dist/tree.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 스토리지 목록(평면) → 탐색기 트리.
3
+ *
4
+ * 스토리지는 폴더를 따로 적어 두기도 하고(빈 폴더), 파일 경로로만 알게 하기도 한다(에이전트가
5
+ * 만든 `src/a/b.py` 의 `src`·`src/a`). 둘 다 폴더로 보여야 하므로 파일 경로의 조상을 폴더로
6
+ * 채운다. 정렬은 편집기와 같다: 폴더 먼저, 이름은 대소문자 없이 숫자를 숫자로.
7
+ */
8
+ import type { IdeFileEntry } from './types.js';
9
+ export interface TreeNode {
10
+ path: string;
11
+ name: string;
12
+ isDir: boolean;
13
+ size?: number | null;
14
+ modifiedAt?: string | null;
15
+ originName?: string | null;
16
+ children: TreeNode[];
17
+ }
18
+ export declare function compareNames(a: string, b: string): number;
19
+ export declare function sortNodes(nodes: TreeNode[]): TreeNode[];
20
+ export declare function buildTree(entries: IdeFileEntry[]): TreeNode;
21
+ /** 펼친 폴더만 따라 내려가며 보이는 줄들 — 가상 스크롤 없이도 키보드 이동에 쓴다. */
22
+ export declare function visibleRows(root: TreeNode, expanded: ReadonlySet<string>): {
23
+ node: TreeNode;
24
+ depth: number;
25
+ }[];
26
+ /** 모든 파일 경로(빠른 열기용). */
27
+ export declare function filePaths(root: TreeNode): string[];
28
+ export declare function findNode(root: TreeNode, path: string): TreeNode | null;
29
+ /** 경로의 조상 폴더들(자신 제외) — 파일을 드러낼 때 펼칠 것. */
30
+ export declare function ancestors(path: string): string[];
31
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAEvD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,QAAQ,CA8C3D;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAUrC;AAED,wBAAwB;AACxB,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAUlD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAStE;AAED,0CAA0C;AAC1C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhD"}
package/dist/tree.js ADDED
@@ -0,0 +1,105 @@
1
+ import { basename, dirname } from './paths.js';
2
+ const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
3
+ export function compareNames(a, b) {
4
+ const c = collator.compare(a, b);
5
+ return c !== 0 ? c : a < b ? -1 : a > b ? 1 : 0;
6
+ }
7
+ export function sortNodes(nodes) {
8
+ return nodes.sort((a, b) => (a.isDir !== b.isDir ? (a.isDir ? -1 : 1) : compareNames(a.name, b.name)));
9
+ }
10
+ export function buildTree(entries) {
11
+ const root = { path: '', name: '', isDir: true, children: [] };
12
+ const byPath = new Map([['', root]]);
13
+ const ensureDir = (path) => {
14
+ const hit = byPath.get(path);
15
+ if (hit) {
16
+ hit.isDir = true;
17
+ return hit;
18
+ }
19
+ const parent = ensureDir(dirname(path));
20
+ const node = { path, name: basename(path), isDir: true, children: [] };
21
+ byPath.set(path, node);
22
+ parent.children.push(node);
23
+ return node;
24
+ };
25
+ for (const e of entries) {
26
+ const path = String(e.path || '').replace(/^\/+|\/+$/g, '');
27
+ if (!path)
28
+ continue;
29
+ if (e.isDir) {
30
+ const node = ensureDir(path);
31
+ node.modifiedAt = e.modifiedAt ?? node.modifiedAt;
32
+ node.originName = e.originName ?? node.originName;
33
+ continue;
34
+ }
35
+ if (byPath.has(path))
36
+ continue;
37
+ const parent = ensureDir(dirname(path));
38
+ const node = {
39
+ path,
40
+ name: basename(path),
41
+ isDir: false,
42
+ size: e.size,
43
+ modifiedAt: e.modifiedAt,
44
+ originName: e.originName,
45
+ children: [],
46
+ };
47
+ byPath.set(path, node);
48
+ parent.children.push(node);
49
+ }
50
+ const sortAll = (n) => {
51
+ sortNodes(n.children);
52
+ n.children.forEach(sortAll);
53
+ };
54
+ sortAll(root);
55
+ return root;
56
+ }
57
+ /** 펼친 폴더만 따라 내려가며 보이는 줄들 — 가상 스크롤 없이도 키보드 이동에 쓴다. */
58
+ export function visibleRows(root, expanded) {
59
+ const out = [];
60
+ const walk = (n, depth) => {
61
+ for (const c of n.children) {
62
+ out.push({ node: c, depth });
63
+ if (c.isDir && expanded.has(c.path))
64
+ walk(c, depth + 1);
65
+ }
66
+ };
67
+ walk(root, 0);
68
+ return out;
69
+ }
70
+ /** 모든 파일 경로(빠른 열기용). */
71
+ export function filePaths(root) {
72
+ const out = [];
73
+ const walk = (n) => {
74
+ for (const c of n.children) {
75
+ if (c.isDir)
76
+ walk(c);
77
+ else
78
+ out.push(c.path);
79
+ }
80
+ };
81
+ walk(root);
82
+ return out;
83
+ }
84
+ export function findNode(root, path) {
85
+ if (!path)
86
+ return root;
87
+ let cur = root;
88
+ const parts = path.split('/');
89
+ for (let i = 0; i < parts.length && cur; i += 1) {
90
+ const want = parts.slice(0, i + 1).join('/');
91
+ cur = cur.children.find((c) => c.path === want);
92
+ }
93
+ return cur ?? null;
94
+ }
95
+ /** 경로의 조상 폴더들(자신 제외) — 파일을 드러낼 때 펼칠 것. */
96
+ export function ancestors(path) {
97
+ const out = [];
98
+ let d = dirname(path);
99
+ while (d) {
100
+ out.unshift(d);
101
+ d = dirname(d);
102
+ }
103
+ return out;
104
+ }
105
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * IDE 보기가 호스트(데스크톱 앱·웹)에게 바라는 것 — 이것만 구현하면 같은 IDE 가 뜬다.
3
+ *
4
+ * IDE 는 새 저장소가 아니다. 에이전트가 이미 가진 것을 편집기처럼 보여 주는 보기다:
5
+ *
6
+ * 탐색기 = 그 에이전트의 스토리지 목록 그대로(`listFiles`)
7
+ * 편집기 = 샌드박스의 파일(`readFile`/`saveFile` — 저장은 읽은 판을 조건으로 건다)
8
+ * 터미널 = 에이전트 샌드박스 안의 셸(`openTerminal`) — 연결이 끊겨도 셸은 산다
9
+ * 찾기 = 샌드박스 안에서 찾는다(`search`/`replace`)
10
+ * 소스 제어 = 샌드박스 안의 git(`git`)
11
+ *
12
+ * 서버 주소·인증·소켓은 호스트의 일이다. 데스크톱은 렌더러에서 직접 소켓을 못 열어
13
+ * 메인 프로세스가 대신 열고, 웹은 쿠키로 바로 연다 — 그 차이가 이 경계 밖에 있다.
14
+ */
15
+ import type * as Monaco from 'monaco-editor';
16
+ export type MonacoApi = typeof Monaco;
17
+ /** 스토리지 목록의 한 항목. `path` 는 workspace 기준(앞에 `/` 없음). */
18
+ export interface IdeFileEntry {
19
+ path: string;
20
+ isDir: boolean;
21
+ size?: number | null;
22
+ modifiedAt?: string | null;
23
+ /** 마지막으로 바꾼 쪽의 이름(에이전트·웹·IDE·PC 이름) — 툴팁에만 쓴다. */
24
+ originName?: string | null;
25
+ }
26
+ export interface IdeSessionInfo {
27
+ /** 고정된 에이전트 — 보기만 한다(쓰기·터미널 없음). */
28
+ readonly: boolean;
29
+ /** 서버에 살아 있는 터미널(다시 열면 이어 붙인다). */
30
+ terminals: IdeTerminalInfo[];
31
+ user?: {
32
+ id?: string;
33
+ name?: string;
34
+ };
35
+ limits?: {
36
+ editorMaxBytes?: number;
37
+ rawMaxBytes?: number;
38
+ };
39
+ }
40
+ export interface IdeReadResult {
41
+ bytes: Uint8Array;
42
+ sha: string;
43
+ size: number;
44
+ }
45
+ export interface IdeSaveResult {
46
+ sha: string;
47
+ /** 색인에 반영되며 생긴 일 — 그사이 다른 기기가 같은 파일을 고쳤으면 conflicts 에 남는다. */
48
+ conflicts?: string[];
49
+ }
50
+ export interface IdeStat {
51
+ kind: 'file' | 'dir' | 'symlink' | 'missing' | 'other' | 'invalid' | 'error';
52
+ size?: number;
53
+ mtime?: number;
54
+ sha?: string;
55
+ }
56
+ export type IdeFsOp = {
57
+ op: 'mkdir';
58
+ path: string;
59
+ } | {
60
+ op: 'rename';
61
+ src: string;
62
+ dst: string;
63
+ } | {
64
+ op: 'copy';
65
+ src: string;
66
+ dst: string;
67
+ } | {
68
+ op: 'delete';
69
+ paths: string[];
70
+ };
71
+ export interface IdeSearchQuery {
72
+ query: string;
73
+ regex?: boolean;
74
+ case?: boolean;
75
+ word?: boolean;
76
+ include?: string;
77
+ exclude?: string;
78
+ max?: number;
79
+ }
80
+ export interface IdeSearchMatch {
81
+ line: number;
82
+ /** 1부터, UTF-16 단위(편집기와 같은 단위). */
83
+ col: number;
84
+ len: number;
85
+ preview: string;
86
+ /** preview 안에서 일치가 시작하는 곳(UTF-16). */
87
+ at: number;
88
+ }
89
+ export interface IdeSearchResult {
90
+ files: {
91
+ path: string;
92
+ matches: IdeSearchMatch[];
93
+ }[];
94
+ total: number;
95
+ truncated: boolean;
96
+ }
97
+ export interface IdeReplaceResult {
98
+ changed: {
99
+ path: string;
100
+ count: number;
101
+ }[];
102
+ skipped: {
103
+ path: string;
104
+ reason: string;
105
+ }[];
106
+ }
107
+ export interface IdeTerminalInfo {
108
+ id: string;
109
+ cwd?: string;
110
+ shell?: string;
111
+ running?: boolean;
112
+ attached?: number;
113
+ }
114
+ /** 터미널 소켓 프레임 — 서버 프로토콜 그대로. */
115
+ export type TerminalServerFrame = {
116
+ type: 'ready';
117
+ id: string;
118
+ replay: boolean;
119
+ cwd?: string;
120
+ shell?: string;
121
+ } | {
122
+ type: 'output';
123
+ data: string;
124
+ } | {
125
+ type: 'synced';
126
+ seq?: number;
127
+ changed?: number;
128
+ deleted?: number;
129
+ conflicts?: string[];
130
+ } | {
131
+ type: 'exit';
132
+ code: number;
133
+ reason?: string;
134
+ } | {
135
+ type: 'error';
136
+ code: string;
137
+ reason: string;
138
+ } | {
139
+ type: 'pong';
140
+ };
141
+ export type TerminalClientFrame = {
142
+ type: 'input';
143
+ data: string;
144
+ } | {
145
+ type: 'resize';
146
+ rows: number;
147
+ cols: number;
148
+ } | {
149
+ type: 'ping';
150
+ } | {
151
+ type: 'kill';
152
+ };
153
+ export interface TerminalConnection {
154
+ send(frame: TerminalClientFrame): void;
155
+ close(): void;
156
+ }
157
+ export interface TerminalHandlers {
158
+ onFrame(frame: TerminalServerFrame): void;
159
+ /** 소켓이 닫혔다. `code` 가 4xxx 면 서버가 거절한 것이다(다시 붙어도 같다). */
160
+ onClose(code: number, reason: string): void;
161
+ }
162
+ /** 호스트가 던지는 실패. `code` 로 화면이 다음 행동을 고른다. */
163
+ export declare class IdeError extends Error {
164
+ readonly code: string;
165
+ readonly status: number;
166
+ readonly detail: Record<string, unknown>;
167
+ constructor(code: string, message: string, status?: number, detail?: Record<string, unknown>);
168
+ }
169
+ export interface IdeHost {
170
+ /** 에이전트 id — 편집기 모델의 주소와 저장 키에 들어간다. */
171
+ readonly workflowId: string;
172
+ /** 탐색기 머리에 쓰는 이름. */
173
+ readonly agentName: string;
174
+ session(): Promise<IdeSessionInfo>;
175
+ listFiles(): Promise<IdeFileEntry[]>;
176
+ /** 스토리지가 바뀌면 부른다(구독 해제 함수를 돌려준다). 없으면 IDE 가 스스로 주기적으로 본다. */
177
+ subscribeChanges?(onChange: () => void): () => void;
178
+ readFile(path: string): Promise<IdeReadResult>;
179
+ /** `baseSha` = 편집기가 연 판. `''` = 새 파일, `null` = 조건 없이. 어긋나면 IdeError('changed'). */
180
+ saveFile(path: string, bytes: Uint8Array, baseSha: string | null): Promise<IdeSaveResult>;
181
+ stat(paths: string[]): Promise<Record<string, IdeStat>>;
182
+ /** 그림 미리보기용 원바이트. */
183
+ readRaw(path: string): Promise<Uint8Array>;
184
+ fs(op: IdeFsOp): Promise<void>;
185
+ search(query: IdeSearchQuery): Promise<IdeSearchResult>;
186
+ replace(query: IdeSearchQuery & {
187
+ replacement: string;
188
+ files: string[];
189
+ }): Promise<IdeReplaceResult>;
190
+ /** 소스 제어 — `{op: 'status', repo: ''}` 등. 실패는 IdeError(code: auth·identity·not_repo…). */
191
+ git<T = Record<string, unknown>>(args: Record<string, unknown>): Promise<T>;
192
+ terminals(): Promise<IdeTerminalInfo[]>;
193
+ closeTerminal(id: string): Promise<void>;
194
+ openTerminal(id: string, options: {
195
+ rows: number;
196
+ cols: number;
197
+ cwd?: string;
198
+ }, handlers: TerminalHandlers): TerminalConnection;
199
+ /** 편집기 — 호스트의 번들러가 Monaco 와 그 worker 를 책임진다. */
200
+ loadMonaco(): Promise<MonacoApi>;
201
+ /** 화면 상태(열어 둔 탭·패널 크기)를 기억할 곳. 없으면 기억하지 않는다. */
202
+ storage?: {
203
+ get(key: string): string | null;
204
+ set(key: string, value: string): void;
205
+ };
206
+ /** 알림(토스트). 없으면 상태 표시줄에만 남긴다. */
207
+ notify?(kind: 'info' | 'success' | 'warning' | 'error', message: string): void;
208
+ /** 바깥 주소 열기(원격 저장소 웹 주소·터미널 링크). */
209
+ openExternal?(url: string): void;
210
+ /** 파일 내려받기. */
211
+ download?(path: string): Promise<void> | void;
212
+ /** 클립보드 쓰기(경로 복사). 없으면 navigator.clipboard. */
213
+ copyText?(text: string): Promise<boolean> | boolean;
214
+ }
215
+ export type ThemeKind = 'dark' | 'light';
216
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,14 @@
1
+ /** 호스트가 던지는 실패. `code` 로 화면이 다음 행동을 고른다. */
2
+ export class IdeError extends Error {
3
+ code;
4
+ status;
5
+ detail;
6
+ constructor(code, message, status = 0, detail = {}) {
7
+ super(message);
8
+ this.code = code;
9
+ this.status = status;
10
+ this.detail = detail;
11
+ this.name = 'IdeError';
12
+ }
13
+ }
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+HA,4CAA4C;AAC5C,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IAEA;IACA;IAJlB,YACkB,IAAY,EAC5B,OAAe,EACC,SAAS,CAAC,EACV,SAAkC,EAAE;QAEpD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,WAAM,GAAN,MAAM,CAAI;QACV,WAAM,GAAN,MAAM,CAA8B;QAGpD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "xgen-dex-ide",
3
+ "version": "1.60.0",
4
+ "description": "채팅 안의 IDE 보기 — 탐색기·편집기·터미널·찾기·소스 제어 (React, 호스트 주입)",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./ide.css": "./dist/ide.css"
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "sideEffects": [
21
+ "*.css"
22
+ ],
23
+ "dependencies": {
24
+ "@xterm/addon-fit": "^0.11.0",
25
+ "@xterm/addon-search": "^0.16.0",
26
+ "@xterm/addon-web-links": "^0.12.0",
27
+ "@xterm/xterm": "^6.0.0"
28
+ },
29
+ "peerDependencies": {
30
+ "react": ">=18",
31
+ "react-dom": ">=18",
32
+ "monaco-editor": ">=0.45"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/PlateerLab/xgen-dex-core.git",
37
+ "directory": "packages/ide"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ }
42
+ }