xibecode 1.0.2 → 1.0.6

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 (288) hide show
  1. package/dist/commands/chat.d.ts +0 -1
  2. package/dist/commands/chat.d.ts.map +1 -1
  3. package/dist/commands/chat.js +10 -7
  4. package/dist/commands/chat.js.map +1 -1
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +5 -3
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/diagnostics.js +1 -1
  9. package/dist/commands/diagnostics.js.map +1 -1
  10. package/dist/commands/mcp.js +1 -1
  11. package/dist/commands/mcp.js.map +1 -1
  12. package/dist/commands/resume.js +1 -1
  13. package/dist/commands/resume.js.map +1 -1
  14. package/dist/commands/run-pr.d.ts.map +1 -1
  15. package/dist/commands/run-pr.js +13 -10
  16. package/dist/commands/run-pr.js.map +1 -1
  17. package/dist/commands/run.d.ts.map +1 -1
  18. package/dist/commands/run.js +17 -14
  19. package/dist/commands/run.js.map +1 -1
  20. package/dist/commands/skills.d.ts.map +1 -1
  21. package/dist/commands/skills.js +3 -2
  22. package/dist/commands/skills.js.map +1 -1
  23. package/dist/components/AssistantMarkdown.js +1 -1
  24. package/dist/components/AssistantMarkdown.js.map +1 -1
  25. package/dist/index.js +2 -39
  26. package/dist/index.js.map +1 -1
  27. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  28. package/dist/ui/claude-style-chat.js +15 -11
  29. package/dist/ui/claude-style-chat.js.map +1 -1
  30. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  31. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  32. package/dist/utils/built-in-skills-dir.js +11 -0
  33. package/dist/utils/built-in-skills-dir.js.map +1 -0
  34. package/dist/utils/config.d.ts +2 -119
  35. package/dist/utils/config.d.ts.map +1 -1
  36. package/dist/utils/config.js +3 -88
  37. package/dist/utils/config.js.map +1 -1
  38. package/package.json +11 -26
  39. package/dist/commands/punycode.d.ts +0 -5
  40. package/dist/commands/punycode.d.ts.map +0 -1
  41. package/dist/commands/punycode.js +0 -48
  42. package/dist/commands/punycode.js.map +0 -1
  43. package/dist/commands/tui.d.ts +0 -9
  44. package/dist/commands/tui.d.ts.map +0 -1
  45. package/dist/commands/tui.js +0 -83
  46. package/dist/commands/tui.js.map +0 -1
  47. package/dist/core/agent-tool-policies.d.ts +0 -5
  48. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  49. package/dist/core/agent-tool-policies.js +0 -18
  50. package/dist/core/agent-tool-policies.js.map +0 -1
  51. package/dist/core/agent.d.ts +0 -181
  52. package/dist/core/agent.d.ts.map +0 -1
  53. package/dist/core/agent.js +0 -1777
  54. package/dist/core/agent.js.map +0 -1
  55. package/dist/core/background-agent.d.ts +0 -23
  56. package/dist/core/background-agent.d.ts.map +0 -1
  57. package/dist/core/background-agent.js +0 -175
  58. package/dist/core/background-agent.js.map +0 -1
  59. package/dist/core/code-graph.d.ts +0 -18
  60. package/dist/core/code-graph.d.ts.map +0 -1
  61. package/dist/core/code-graph.js +0 -105
  62. package/dist/core/code-graph.js.map +0 -1
  63. package/dist/core/conflict-solver.d.ts +0 -26
  64. package/dist/core/conflict-solver.d.ts.map +0 -1
  65. package/dist/core/conflict-solver.js +0 -108
  66. package/dist/core/conflict-solver.js.map +0 -1
  67. package/dist/core/context-compactor.d.ts +0 -10
  68. package/dist/core/context-compactor.d.ts.map +0 -1
  69. package/dist/core/context-compactor.js +0 -158
  70. package/dist/core/context-compactor.js.map +0 -1
  71. package/dist/core/context-pruner.d.ts +0 -19
  72. package/dist/core/context-pruner.d.ts.map +0 -1
  73. package/dist/core/context-pruner.js +0 -103
  74. package/dist/core/context-pruner.js.map +0 -1
  75. package/dist/core/context.d.ts +0 -82
  76. package/dist/core/context.d.ts.map +0 -1
  77. package/dist/core/context.js +0 -273
  78. package/dist/core/context.js.map +0 -1
  79. package/dist/core/conversation-recovery.d.ts +0 -9
  80. package/dist/core/conversation-recovery.d.ts.map +0 -1
  81. package/dist/core/conversation-recovery.js +0 -15
  82. package/dist/core/conversation-recovery.js.map +0 -1
  83. package/dist/core/debug-workflow.d.ts +0 -9
  84. package/dist/core/debug-workflow.d.ts.map +0 -1
  85. package/dist/core/debug-workflow.js +0 -19
  86. package/dist/core/debug-workflow.js.map +0 -1
  87. package/dist/core/docs-scraper.d.ts +0 -40
  88. package/dist/core/docs-scraper.d.ts.map +0 -1
  89. package/dist/core/docs-scraper.js +0 -386
  90. package/dist/core/docs-scraper.js.map +0 -1
  91. package/dist/core/editor.d.ts +0 -87
  92. package/dist/core/editor.d.ts.map +0 -1
  93. package/dist/core/editor.js +0 -377
  94. package/dist/core/editor.js.map +0 -1
  95. package/dist/core/export.d.ts +0 -11
  96. package/dist/core/export.d.ts.map +0 -1
  97. package/dist/core/export.js +0 -54
  98. package/dist/core/export.js.map +0 -1
  99. package/dist/core/history-manager.d.ts +0 -75
  100. package/dist/core/history-manager.d.ts.map +0 -1
  101. package/dist/core/history-manager.js +0 -146
  102. package/dist/core/history-manager.js.map +0 -1
  103. package/dist/core/marketplace-client.d.ts +0 -52
  104. package/dist/core/marketplace-client.d.ts.map +0 -1
  105. package/dist/core/marketplace-client.js +0 -71
  106. package/dist/core/marketplace-client.js.map +0 -1
  107. package/dist/core/mcp/mcp-config.d.ts +0 -10
  108. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  109. package/dist/core/mcp/mcp-config.js +0 -70
  110. package/dist/core/mcp/mcp-config.js.map +0 -1
  111. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  112. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  113. package/dist/core/mcp/mcp-policy.js +0 -56
  114. package/dist/core/mcp/mcp-policy.js.map +0 -1
  115. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  116. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  117. package/dist/core/mcp/oauth-flow.js +0 -230
  118. package/dist/core/mcp/oauth-flow.js.map +0 -1
  119. package/dist/core/mcp/oauth-store.d.ts +0 -13
  120. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  121. package/dist/core/mcp/oauth-store.js +0 -68
  122. package/dist/core/mcp/oauth-store.js.map +0 -1
  123. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  124. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  125. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  126. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  127. package/dist/core/mcp-client.d.ts +0 -99
  128. package/dist/core/mcp-client.d.ts.map +0 -1
  129. package/dist/core/mcp-client.js +0 -315
  130. package/dist/core/mcp-client.js.map +0 -1
  131. package/dist/core/memory-promotions.d.ts +0 -15
  132. package/dist/core/memory-promotions.d.ts.map +0 -1
  133. package/dist/core/memory-promotions.js +0 -38
  134. package/dist/core/memory-promotions.js.map +0 -1
  135. package/dist/core/memory.d.ts +0 -32
  136. package/dist/core/memory.d.ts.map +0 -1
  137. package/dist/core/memory.js +0 -121
  138. package/dist/core/memory.js.map +0 -1
  139. package/dist/core/modes.d.ts +0 -432
  140. package/dist/core/modes.d.ts.map +0 -1
  141. package/dist/core/modes.js +0 -1088
  142. package/dist/core/modes.js.map +0 -1
  143. package/dist/core/pattern-miner.d.ts +0 -43
  144. package/dist/core/pattern-miner.d.ts.map +0 -1
  145. package/dist/core/pattern-miner.js +0 -123
  146. package/dist/core/pattern-miner.js.map +0 -1
  147. package/dist/core/permission-store.d.ts +0 -15
  148. package/dist/core/permission-store.d.ts.map +0 -1
  149. package/dist/core/permission-store.js +0 -30
  150. package/dist/core/permission-store.js.map +0 -1
  151. package/dist/core/permissions.d.ts +0 -33
  152. package/dist/core/permissions.d.ts.map +0 -1
  153. package/dist/core/permissions.js +0 -141
  154. package/dist/core/permissions.js.map +0 -1
  155. package/dist/core/plan-artifacts.d.ts +0 -10
  156. package/dist/core/plan-artifacts.d.ts.map +0 -1
  157. package/dist/core/plan-artifacts.js +0 -60
  158. package/dist/core/plan-artifacts.js.map +0 -1
  159. package/dist/core/plan-session.d.ts +0 -25
  160. package/dist/core/plan-session.d.ts.map +0 -1
  161. package/dist/core/plan-session.js +0 -99
  162. package/dist/core/plan-session.js.map +0 -1
  163. package/dist/core/planMode.d.ts +0 -51
  164. package/dist/core/planMode.d.ts.map +0 -1
  165. package/dist/core/planMode.js +0 -245
  166. package/dist/core/planMode.js.map +0 -1
  167. package/dist/core/plugins.d.ts +0 -96
  168. package/dist/core/plugins.d.ts.map +0 -1
  169. package/dist/core/plugins.js +0 -202
  170. package/dist/core/plugins.js.map +0 -1
  171. package/dist/core/session-bridge.d.ts +0 -128
  172. package/dist/core/session-bridge.d.ts.map +0 -1
  173. package/dist/core/session-bridge.js +0 -328
  174. package/dist/core/session-bridge.js.map +0 -1
  175. package/dist/core/session-manager.d.ts +0 -80
  176. package/dist/core/session-manager.d.ts.map +0 -1
  177. package/dist/core/session-manager.js +0 -166
  178. package/dist/core/session-manager.js.map +0 -1
  179. package/dist/core/session-memory.d.ts +0 -45
  180. package/dist/core/session-memory.d.ts.map +0 -1
  181. package/dist/core/session-memory.js +0 -103
  182. package/dist/core/session-memory.js.map +0 -1
  183. package/dist/core/skill-selection.d.ts +0 -36
  184. package/dist/core/skill-selection.d.ts.map +0 -1
  185. package/dist/core/skill-selection.js +0 -172
  186. package/dist/core/skill-selection.js.map +0 -1
  187. package/dist/core/skills-sh-client.d.ts +0 -19
  188. package/dist/core/skills-sh-client.d.ts.map +0 -1
  189. package/dist/core/skills-sh-client.js +0 -75
  190. package/dist/core/skills-sh-client.js.map +0 -1
  191. package/dist/core/skills.d.ts +0 -97
  192. package/dist/core/skills.d.ts.map +0 -1
  193. package/dist/core/skills.js +0 -339
  194. package/dist/core/skills.js.map +0 -1
  195. package/dist/core/swarm.d.ts +0 -34
  196. package/dist/core/swarm.d.ts.map +0 -1
  197. package/dist/core/swarm.js +0 -111
  198. package/dist/core/swarm.js.map +0 -1
  199. package/dist/core/task-status.d.ts +0 -13
  200. package/dist/core/task-status.d.ts.map +0 -1
  201. package/dist/core/task-status.js +0 -17
  202. package/dist/core/task-status.js.map +0 -1
  203. package/dist/core/tool-orchestrator.d.ts +0 -30
  204. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  205. package/dist/core/tool-orchestrator.js +0 -89
  206. package/dist/core/tool-orchestrator.js.map +0 -1
  207. package/dist/core/tools.d.ts +0 -462
  208. package/dist/core/tools.d.ts.map +0 -1
  209. package/dist/core/tools.js +0 -2916
  210. package/dist/core/tools.js.map +0 -1
  211. package/dist/core/transcript-cleanup.d.ts +0 -8
  212. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  213. package/dist/core/transcript-cleanup.js +0 -52
  214. package/dist/core/transcript-cleanup.js.map +0 -1
  215. package/dist/core/visual-feedback.d.ts +0 -20
  216. package/dist/core/visual-feedback.d.ts.map +0 -1
  217. package/dist/core/visual-feedback.js +0 -117
  218. package/dist/core/visual-feedback.js.map +0 -1
  219. package/dist/tools/browser.d.ts +0 -120
  220. package/dist/tools/browser.d.ts.map +0 -1
  221. package/dist/tools/browser.js +0 -439
  222. package/dist/tools/browser.js.map +0 -1
  223. package/dist/tools/test-generator.d.ts +0 -157
  224. package/dist/tools/test-generator.d.ts.map +0 -1
  225. package/dist/tools/test-generator.js +0 -893
  226. package/dist/tools/test-generator.js.map +0 -1
  227. package/dist/tui/InkApp.d.ts +0 -21
  228. package/dist/tui/InkApp.d.ts.map +0 -1
  229. package/dist/tui/InkApp.js +0 -146
  230. package/dist/tui/InkApp.js.map +0 -1
  231. package/dist/tui/MarkdownMessage.d.ts +0 -16
  232. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  233. package/dist/tui/MarkdownMessage.js +0 -63
  234. package/dist/tui/MarkdownMessage.js.map +0 -1
  235. package/dist/tui/blessed-chat.d.ts +0 -9
  236. package/dist/tui/blessed-chat.d.ts.map +0 -1
  237. package/dist/tui/blessed-chat.js +0 -887
  238. package/dist/tui/blessed-chat.js.map +0 -1
  239. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  240. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  241. package/dist/tui/markdown-to-blessed.js +0 -26
  242. package/dist/tui/markdown-to-blessed.js.map +0 -1
  243. package/dist/ui/ink/App.d.ts +0 -25
  244. package/dist/ui/ink/App.d.ts.map +0 -1
  245. package/dist/ui/ink/App.js +0 -372
  246. package/dist/ui/ink/App.js.map +0 -1
  247. package/dist/utils/at-references.d.ts +0 -14
  248. package/dist/utils/at-references.d.ts.map +0 -1
  249. package/dist/utils/at-references.js +0 -47
  250. package/dist/utils/at-references.js.map +0 -1
  251. package/dist/utils/auto-memory.d.ts +0 -24
  252. package/dist/utils/auto-memory.d.ts.map +0 -1
  253. package/dist/utils/auto-memory.js +0 -153
  254. package/dist/utils/auto-memory.js.map +0 -1
  255. package/dist/utils/git.d.ts +0 -89
  256. package/dist/utils/git.d.ts.map +0 -1
  257. package/dist/utils/git.js +0 -444
  258. package/dist/utils/git.js.map +0 -1
  259. package/dist/utils/mcp-servers-file.d.ts +0 -46
  260. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  261. package/dist/utils/mcp-servers-file.js +0 -212
  262. package/dist/utils/mcp-servers-file.js.map +0 -1
  263. package/dist/utils/safety.d.ts +0 -60
  264. package/dist/utils/safety.d.ts.map +0 -1
  265. package/dist/utils/safety.js +0 -254
  266. package/dist/utils/safety.js.map +0 -1
  267. package/dist/utils/smithery.d.ts +0 -25
  268. package/dist/utils/smithery.d.ts.map +0 -1
  269. package/dist/utils/smithery.js +0 -50
  270. package/dist/utils/smithery.js.map +0 -1
  271. package/dist/utils/testRunner.d.ts +0 -44
  272. package/dist/utils/testRunner.d.ts.map +0 -1
  273. package/dist/utils/testRunner.js +0 -270
  274. package/dist/utils/testRunner.js.map +0 -1
  275. package/dist/webui/server.d.ts +0 -99
  276. package/dist/webui/server.d.ts.map +0 -1
  277. package/dist/webui/server.js +0 -2619
  278. package/dist/webui/server.js.map +0 -1
  279. package/webui-dist/assets/index-CSla6Lzy.css +0 -32
  280. package/webui-dist/assets/index-G_Z4gzPy.js +0 -457
  281. package/webui-dist/assets/index-G_Z4gzPy.js.map +0 -1
  282. package/webui-dist/assets/xterm-Da5jL1MD.js +0 -10
  283. package/webui-dist/assets/xterm-Da5jL1MD.js.map +0 -1
  284. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js +0 -2
  285. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js.map +0 -1
  286. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js +0 -2
  287. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js.map +0 -1
  288. package/webui-dist/index.html +0 -15
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { ChatSession } from './session-manager.js';
2
- export interface ConversationRecoveryResult {
3
- session: ChatSession;
4
- wasRecovered: boolean;
5
- wasInterrupted: boolean;
6
- droppedMessages: number;
7
- }
8
- export declare function recoverConversation(session: ChatSession): ConversationRecoveryResult;
9
- //# sourceMappingURL=conversation-recovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-recovery.d.ts","sourceRoot":"","sources":["../../src/core/conversation-recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,0BAA0B,CAcpF"}
@@ -1,15 +0,0 @@
1
- import { cleanupTranscript } from './transcript-cleanup.js';
2
- export function recoverConversation(session) {
3
- const cleanup = cleanupTranscript(session.messages);
4
- const recoveredSession = {
5
- ...session,
6
- messages: cleanup.messages,
7
- };
8
- return {
9
- session: recoveredSession,
10
- wasRecovered: cleanup.droppedMessages > 0 || cleanup.wasInterrupted,
11
- wasInterrupted: cleanup.wasInterrupted,
12
- droppedMessages: cleanup.droppedMessages,
13
- };
14
- }
15
- //# sourceMappingURL=conversation-recovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-recovery.js","sourceRoot":"","sources":["../../src/core/conversation-recovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAS5D,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAA0B,CAAC,CAAC;IAEtE,MAAM,gBAAgB,GAAgB;QACpC,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,YAAY,EAAE,OAAO,CAAC,eAAe,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc;QACnE,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { ChatSession } from './session-manager.js';
2
- export interface DebugSnapshot {
3
- sessionId?: string;
4
- messageCount: number;
5
- lastUserMessage?: string;
6
- notes: string[];
7
- }
8
- export declare function buildDebugSnapshot(session: ChatSession | null, notes?: string[]): DebugSnapshot;
9
- //# sourceMappingURL=debug-workflow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-workflow.d.ts","sourceRoot":"","sources":["../../src/core/debug-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,aAAa,CAmBnG"}
@@ -1,19 +0,0 @@
1
- export function buildDebugSnapshot(session, notes = []) {
2
- if (!session) {
3
- return {
4
- messageCount: 0,
5
- notes: ['No active session found', ...notes].slice(0, 12),
6
- };
7
- }
8
- const messages = session.messages || [];
9
- const userMessages = messages.filter((msg) => msg.role === 'user');
10
- const lastUser = userMessages[userMessages.length - 1];
11
- const lastUserMessage = typeof lastUser?.content === 'string' ? lastUser.content : undefined;
12
- return {
13
- sessionId: session.id,
14
- messageCount: messages.length,
15
- lastUserMessage: lastUserMessage?.slice(0, 400),
16
- notes: notes.slice(0, 12),
17
- };
18
- }
19
- //# sourceMappingURL=debug-workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-workflow.js","sourceRoot":"","sources":["../../src/core/debug-workflow.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAAC,OAA2B,EAAE,QAAkB,EAAE;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7F,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC/C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC"}
@@ -1,40 +0,0 @@
1
- import { ProviderType } from '../utils/config.js';
2
- /**
3
- * Fetch a URL and return both raw HTML and stripped text.
4
- */
5
- export declare function fetchPage(url: string): Promise<{
6
- html: string;
7
- text: string;
8
- ok: boolean;
9
- }>;
10
- /**
11
- * Strip HTML to clean text, removing scripts, styles, nav, footer, header.
12
- */
13
- export declare function stripHtml(html: string): string;
14
- /**
15
- * Extract internal links from HTML that share the same base URL path.
16
- */
17
- export declare function extractLinks(html: string, baseUrl: string): string[];
18
- export interface ScrapedPage {
19
- url: string;
20
- title: string;
21
- content: string;
22
- }
23
- /**
24
- * Crawl a docs site starting from a root URL.
25
- * Follows internal links up to maxPages depth.
26
- */
27
- export declare function crawlDocs(rootUrl: string, maxPages?: number, onProgress?: (msg: string) => void): Promise<ScrapedPage[]>;
28
- /** AI synthesis config passed from SkillManager */
29
- export interface AISynthesisConfig {
30
- apiKey: string;
31
- baseUrl?: string;
32
- model?: string;
33
- provider?: ProviderType;
34
- }
35
- /**
36
- * Generate a skill markdown file from scraped documentation pages using AI synthesis.
37
- * Supports both Anthropic (Claude) and OpenAI-compatible APIs (Grok, GPT, etc.)
38
- */
39
- export declare function generateSkillFromDocs(name: string, rootUrl: string, pages: ScrapedPage[], config: AISynthesisConfig, onProgress?: (msg: string) => void): Promise<string>;
40
- //# sourceMappingURL=docs-scraper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-scraper.d.ts","sourceRoot":"","sources":["../../src/core/docs-scraper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBjG;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmCpE;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAW,EACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,WAAW,EAAE,CAAC,CAoCxB;AAED,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B;AA8MD;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,EAAE,iBAAiB,EACzB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,MAAM,CAAC,CAsEjB"}
@@ -1,386 +0,0 @@
1
- import fetch from 'node-fetch';
2
- import Anthropic from '@anthropic-ai/sdk';
3
- /**
4
- * Fetch a URL and return both raw HTML and stripped text.
5
- */
6
- export async function fetchPage(url) {
7
- try {
8
- const response = await fetch(url, {
9
- headers: {
10
- 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
11
- 'Accept': 'text/html,application/xhtml+xml,text/plain',
12
- },
13
- signal: AbortSignal.timeout(15000),
14
- });
15
- if (!response.ok)
16
- return { html: '', text: '', ok: false };
17
- const html = await response.text();
18
- const text = stripHtml(html);
19
- return { html, text, ok: true };
20
- }
21
- catch {
22
- return { html: '', text: '', ok: false };
23
- }
24
- }
25
- /**
26
- * Strip HTML to clean text, removing scripts, styles, nav, footer, header.
27
- */
28
- export function stripHtml(html) {
29
- return html
30
- .replace(/<script[\s\S]*?<\/script>/gi, '')
31
- .replace(/<style[\s\S]*?<\/style>/gi, '')
32
- .replace(/<nav[\s\S]*?<\/nav>/gi, '')
33
- .replace(/<footer[\s\S]*?<\/footer>/gi, '')
34
- .replace(/<header[\s\S]*?<\/header>/gi, '')
35
- .replace(/<[^>]+>/g, '\n')
36
- .replace(/&nbsp;/g, ' ')
37
- .replace(/&amp;/g, '&')
38
- .replace(/&lt;/g, '<')
39
- .replace(/&gt;/g, '>')
40
- .replace(/&quot;/g, '"')
41
- .replace(/&#39;/g, "'")
42
- .replace(/\n{3,}/g, '\n\n')
43
- .trim();
44
- }
45
- /**
46
- * Extract internal links from HTML that share the same base URL path.
47
- */
48
- export function extractLinks(html, baseUrl) {
49
- const seen = new Set();
50
- const parsed = new URL(baseUrl);
51
- const basePath = parsed.pathname.replace(/\/$/, '');
52
- const baseOrigin = parsed.origin;
53
- // Match href attributes
54
- const hrefRegex = /href=["']([^"'#]+)/gi;
55
- let match;
56
- while ((match = hrefRegex.exec(html)) !== null) {
57
- let href = match[1].trim();
58
- // Skip external resources, anchors, assets
59
- if (href.startsWith('mailto:') || href.startsWith('javascript:') ||
60
- href.startsWith('#') || href.match(/\.(css|js|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|pdf|zip|tar|gz)$/i)) {
61
- continue;
62
- }
63
- // Resolve relative URLs
64
- try {
65
- const resolved = new URL(href, baseUrl);
66
- // Only keep same-origin links under the same base path
67
- if (resolved.origin === baseOrigin && resolved.pathname.startsWith(basePath)) {
68
- const clean = resolved.origin + resolved.pathname.replace(/\/$/, '');
69
- if (!seen.has(clean) && clean !== baseUrl.replace(/\/$/, '')) {
70
- seen.add(clean);
71
- }
72
- }
73
- }
74
- catch {
75
- // Invalid URL, skip
76
- }
77
- }
78
- return Array.from(seen);
79
- }
80
- /**
81
- * Crawl a docs site starting from a root URL.
82
- * Follows internal links up to maxPages depth.
83
- */
84
- export async function crawlDocs(rootUrl, maxPages = 25, onProgress) {
85
- const pages = [];
86
- const visited = new Set();
87
- const queue = [rootUrl];
88
- while (queue.length > 0 && pages.length < maxPages) {
89
- const url = queue.shift();
90
- const cleanUrl = url.replace(/\/$/, '');
91
- if (visited.has(cleanUrl))
92
- continue;
93
- visited.add(cleanUrl);
94
- onProgress?.(`Fetching (${pages.length + 1}/${maxPages} max): ${cleanUrl}`);
95
- const { html, text, ok } = await fetchPage(cleanUrl);
96
- if (!ok || !text || text.length < 50)
97
- continue;
98
- // Extract title from <title> tag
99
- const titleMatch = html.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
100
- const title = titleMatch
101
- ? titleMatch[1].replace(/\s+/g, ' ').trim()
102
- : cleanUrl.split('/').pop() || 'Untitled';
103
- // Keep only meaningful content (skip if too short)
104
- const trimmedContent = text.slice(0, 8000); // cap per page
105
- pages.push({ url: cleanUrl, title, content: trimmedContent });
106
- // Find more links on this page
107
- const links = extractLinks(html, rootUrl);
108
- for (const link of links) {
109
- if (!visited.has(link.replace(/\/$/, ''))) {
110
- queue.push(link);
111
- }
112
- }
113
- }
114
- return pages;
115
- }
116
- /**
117
- * Build the synthesis prompt from scraped pages.
118
- */
119
- function buildSynthesisPrompt(name, rootUrl, pages) {
120
- // Cap total content to ~60K chars to fit in context window
121
- let totalChars = 0;
122
- const maxTotalChars = 60_000;
123
- const pageSummaries = [];
124
- for (const page of pages) {
125
- if (totalChars >= maxTotalChars)
126
- break;
127
- const available = maxTotalChars - totalChars;
128
- const content = page.content.length > available ? page.content.slice(0, available) : page.content;
129
- pageSummaries.push(`### ${page.title}\nSource: ${page.url}\n\n${content}`);
130
- totalChars += content.length;
131
- }
132
- const docsContent = pageSummaries.join('\n\n---\n\n');
133
- return `You are an expert Senior Software Engineer and Technical Writer. I have scraped ${pages.length} pages from the documentation at ${rootUrl}.
134
-
135
- Your task is to create a **"Gold Standard" Skill File** for an AI coding assistant. This file will be used by the AI to understand how to write perfect code using "${name}".
136
-
137
- ### Goal
138
- The output must be a comprehensive, high-density technical guide. It should not just list APIs, but explain **how to think** about the technology, **common patterns**, **pitfalls**, and **best practices**.
139
-
140
- ### Structure Requirements
141
-
142
- 1. **YAML Frontmatter**:
143
- - \`description\`: A concise, high-level summary.
144
- - \`tags\`: Relevant technical tags (comma-separated).
145
- - \`source\`: ${rootUrl}
146
-
147
- 2. **Role & Persona**:
148
- - Start with "You are an expert [Technology] developer..."
149
- - Define the mindset and goals (e.g. "Write clean, modern, type-safe code").
150
-
151
- 3. **Overview**:
152
- - What problem does this solve?
153
- - When should you use it?
154
- - What are the core philosophies?
155
-
156
- 3. **Critical Concepts (Mental Models)**:
157
- - Deeply explain the *why* and *how*.
158
- - Use analogies if helpful.
159
- - Explain the lifecycle, data flow, or architecture.
160
-
161
- 4. **Installation & Setup** (Brief):
162
- - Standard installation commands.
163
- - Essential configuration.
164
-
165
- 5. **Common Patterns & "The Right Way"**:
166
- - **CRITICAL**: Show code examples of how to do things *correctly* in a modern context.
167
- - Contrast "Old Way" vs "New Way" if applicable (e.g., Options API vs Composition API).
168
- - Show how to integrate with the broader ecosystem.
169
-
170
- 6. **Gotchas & Anti-Patterns**:
171
- - What mistakes do developers commonly make?
172
- - What has performance implications?
173
- - Security concerns?
174
-
175
- 7. **API Reference (High-Frequency)**:
176
- - Don't list everything. List the 20% of APIs used 80% of the time.
177
- - Include type signatures if relevant.
178
-
179
- ### Style Guidelines
180
- - **Tone**: Authoritative, technical, concise, and helpful.
181
- - **Format**: Clean Markdown. Use bolding for emphasis.
182
- - **Code**: All code patterns MUST be valid and idiomatic. Use comments to explain complex lines.
183
- - **No Fluff**: Remove intro/outro chatter. meaningful content only.
184
- - **No raw HTML**: Strict Markdown only.
185
-
186
- ### Source Documentation Content:
187
-
188
- ${docsContent}`;
189
- }
190
- /**
191
- * Call an OpenAI-compatible API (works with Grok, OpenAI, etc.)
192
- */
193
- async function synthesizeWithOpenAI(prompt, config) {
194
- let base = (config.baseUrl || 'https://api.openai.com').replace(/\/+$/, '');
195
- let url;
196
- if (base.endsWith('/v1')) {
197
- url = `${base}/chat/completions`;
198
- }
199
- else {
200
- url = `${base}/v1/chat/completions`;
201
- }
202
- const response = await fetch(url, {
203
- method: 'POST',
204
- headers: {
205
- 'Content-Type': 'application/json',
206
- 'Authorization': `Bearer ${config.apiKey}`,
207
- },
208
- body: JSON.stringify({
209
- model: config.model || 'gpt-4',
210
- messages: [
211
- { role: 'user', content: prompt },
212
- ],
213
- max_tokens: 8192,
214
- temperature: 0.3,
215
- }),
216
- });
217
- if (!response.ok) {
218
- const text = await response.text();
219
- throw new Error(`${response.status} ${text.slice(0, 200)}`);
220
- }
221
- const data = await response.json();
222
- const content = data?.choices?.[0]?.message?.content;
223
- if (!content) {
224
- throw new Error('No content in OpenAI response');
225
- }
226
- return content;
227
- }
228
- /**
229
- * Call the Anthropic API (Claude models)
230
- */
231
- async function synthesizeWithAnthropic(prompt, config) {
232
- const clientConfig = { apiKey: config.apiKey };
233
- if (config.baseUrl)
234
- clientConfig.baseURL = config.baseUrl;
235
- const client = new Anthropic(clientConfig);
236
- const response = await client.messages.create({
237
- model: config.model || 'claude-sonnet-4-20250514',
238
- max_tokens: 8192,
239
- temperature: 0.3,
240
- messages: [{ role: 'user', content: prompt }],
241
- });
242
- const textBlock = response.content.find(b => b.type === 'text');
243
- if (!textBlock || textBlock.type !== 'text') {
244
- throw new Error('No text response from AI');
245
- }
246
- return textBlock.text;
247
- }
248
- /**
249
- * Detect provider from model name (same heuristic as agent.ts)
250
- */
251
- function detectProvider(model) {
252
- if (!model)
253
- return 'anthropic';
254
- const m = model.toLowerCase();
255
- // Claude models → Anthropic
256
- if (m.includes('claude'))
257
- return 'anthropic';
258
- // GPT, O1, O3, Grok, and other non-Claude models → OpenAI-compatible
259
- if (m.startsWith('gpt-') || m.startsWith('gpt4') || m.startsWith('o1-') || m.startsWith('o3-') || m.includes('grok'))
260
- return 'openai';
261
- if (m.startsWith('deepseek'))
262
- return 'deepseek';
263
- if (m.startsWith('glm') || m.includes('glm-'))
264
- return 'zai';
265
- if (m.startsWith('moonshot') || m.startsWith('kimi'))
266
- return 'kimi';
267
- if (m.includes('/'))
268
- return 'openrouter';
269
- // Default to OpenAI format for unknown models (most custom endpoints use it)
270
- return 'openai';
271
- }
272
- /**
273
- * Summarize a chunk of documentation pages to extract key technical details.
274
- * Usage: "Map" step in Map-Reduce.
275
- */
276
- async function summarizeChunk(chunkTitle, pages, config, onProgress) {
277
- const combinedContent = pages.map(p => `### ${p.title}\nURL: ${p.url}\n\n${p.content}`).join('\n\n');
278
- const prompt = `You are a technical documentation summarizer.
279
- I have combined text from ${pages.length} documentation pages about "${chunkTitle}".
280
-
281
- Your task is to extract the **key technical patterns, code snippets, and concepts** from this text.
282
- Do NOT summarize generically. Extract specific:
283
- - Code examples (keep them intact)
284
- - Configuration options
285
- - API signatures
286
- - Best practices
287
- - Gotchas
288
-
289
- Output a dense technical summary in Markdown format.
290
-
291
- Content:
292
- ${combinedContent.slice(0, 50000)}`;
293
- const provider = config.provider || detectProvider(config.model);
294
- try {
295
- if (provider === 'anthropic') {
296
- return await synthesizeWithAnthropic(prompt, config);
297
- }
298
- else {
299
- return await synthesizeWithOpenAI(prompt, config);
300
- }
301
- }
302
- catch (e) {
303
- onProgress?.(`Chunk summarization failed: ${e.message}, using raw content`);
304
- return combinedContent.slice(0, 10000); // Fallback
305
- }
306
- }
307
- /**
308
- * Generate a skill markdown file from scraped documentation pages using AI synthesis.
309
- * Supports both Anthropic (Claude) and OpenAI-compatible APIs (Grok, GPT, etc.)
310
- */
311
- export async function generateSkillFromDocs(name, rootUrl, pages, config, onProgress) {
312
- onProgress?.('Synthesizing skill with AI...');
313
- let processedPages = pages;
314
- // Map-Reduce for large doc sets
315
- if (pages.length > 10) {
316
- onProgress?.(`Large doc set detected (${pages.length} pages). Running multi-stage synthesis...`);
317
- const chunkSize = 10;
318
- const chunks = [];
319
- for (let i = 0; i < pages.length; i += chunkSize) {
320
- chunks.push(pages.slice(i, i + chunkSize));
321
- }
322
- const summaries = [];
323
- for (let i = 0; i < chunks.length; i++) {
324
- const chunk = chunks[i];
325
- onProgress?.(`Summarizing part ${i + 1}/${chunks.length}...`);
326
- const summary = await summarizeChunk(`${name} Part ${i + 1}`, chunk, config, onProgress);
327
- summaries.push({
328
- url: rootUrl,
329
- title: `Summary Part ${i + 1}`,
330
- content: summary
331
- });
332
- }
333
- processedPages = summaries;
334
- }
335
- const prompt = buildSynthesisPrompt(name, rootUrl, processedPages);
336
- // Determine which API to use
337
- const provider = config.provider || detectProvider(config.model);
338
- try {
339
- let skillContent;
340
- if (provider === 'anthropic') {
341
- onProgress?.(`Using Anthropic API (${config.model || 'claude-sonnet-4-20250514'})...`);
342
- skillContent = await synthesizeWithAnthropic(prompt, config);
343
- }
344
- else {
345
- // All others use OpenAI-compatible
346
- onProgress?.(`Using ${provider === 'openai' ? 'OpenAI' : provider}-compatible API...`);
347
- skillContent = await synthesizeWithOpenAI(prompt, config);
348
- }
349
- skillContent = skillContent.trim();
350
- // Strip any <think> tags (some models use these)
351
- skillContent = skillContent.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
352
- // If AI returned content inside markdown code block, extract it
353
- const codeBlockMatch = skillContent.match(/^```(?:markdown|md)?\n([\s\S]*?)```$/);
354
- if (codeBlockMatch) {
355
- skillContent = codeBlockMatch[1].trim();
356
- }
357
- // Ensure it has frontmatter
358
- if (!skillContent.startsWith('---')) {
359
- skillContent = `---\ndescription: ${name} development guide\ntags: ${name}, docs, learned\nsource: ${rootUrl}\n---\n\n${skillContent}`;
360
- }
361
- onProgress?.('AI synthesis complete');
362
- return skillContent;
363
- }
364
- catch (error) {
365
- onProgress?.(`AI synthesis failed: ${error.message}. Falling back to basic formatting.`);
366
- // Fallback: create a basic structured file without AI
367
- return generateBasicSkill(name, rootUrl, pages);
368
- }
369
- }
370
- /**
371
- * Fallback: Generate a basic skill file without AI (used when API call fails)
372
- */
373
- function generateBasicSkill(name, rootUrl, pages) {
374
- const tags = ['learned', 'docs', name];
375
- let content = `---\ndescription: Skill learned from ${rootUrl} — ${pages.length} pages scraped\ntags: ${tags.join(', ')}\nsource: ${rootUrl}\n---\n\n`;
376
- content += `# ${name}\n\n`;
377
- content += `> Learned from [${rootUrl}](${rootUrl}) — ${pages.length} pages\n\n`;
378
- for (const page of pages) {
379
- content += `## ${page.title}\n\n`;
380
- content += `> Source: ${page.url}\n\n`;
381
- const section = page.content.length > 4000 ? page.content.slice(0, 4000) + '\n\n...(truncated)' : page.content;
382
- content += section + '\n\n---\n\n';
383
- }
384
- return content;
385
- }
386
- //# sourceMappingURL=docs-scraper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-scraper.js","sourceRoot":"","sources":["../../src/core/docs-scraper.ts"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- export interface EditResult {
2
- success: boolean;
3
- message: string;
4
- diff?: string;
5
- linesChanged?: number;
6
- }
7
- export interface SearchReplaceEdit {
8
- search: string;
9
- replace: string;
10
- all?: boolean;
11
- }
12
- export interface LineRangeEdit {
13
- startLine: number;
14
- endLine: number;
15
- newContent: string;
16
- }
17
- export interface VerifiedEdit {
18
- startLine: number;
19
- endLine: number;
20
- oldContent: string;
21
- newContent: string;
22
- }
23
- export declare class FileEditor {
24
- private workingDir;
25
- private backupDir;
26
- constructor(workingDir: string);
27
- /**
28
- * Resolve filePath under workingDir (same rules as read_file / write_file).
29
- * Rejects absolute paths outside the working directory (e.g. hallucinated /workspace/...).
30
- */
31
- private resolveSafePath;
32
- /**
33
- * Smart edit - searches for unique section and replaces it
34
- * This is the most reliable way to edit files
35
- */
36
- smartEdit(filePath: string, edit: SearchReplaceEdit): Promise<EditResult>;
37
- /**
38
- * Edit specific line range - good for large files
39
- */
40
- editLineRange(filePath: string, edit: LineRangeEdit): Promise<EditResult>;
41
- /**
42
- * Verified edit - requires old content to match before replacing.
43
- * This is the most reliable editing method as it prevents hallucinated edits.
44
- * If the old content doesn't match, returns the actual content so the AI can self-correct.
45
- */
46
- verifiedEdit(filePath: string, edit: VerifiedEdit): Promise<EditResult & {
47
- actual_content?: string;
48
- }>;
49
- /**
50
- * Insert content at specific line
51
- */
52
- insertAtLine(filePath: string, line: number, content: string): Promise<EditResult>;
53
- /**
54
- * Apply unified diff patch
55
- */
56
- applyPatch(filePath: string, patch: string): Promise<EditResult>;
57
- /**
58
- * Revert file to backup
59
- */
60
- revertToBackup(filePath: string, backupIndex?: number): Promise<EditResult>;
61
- /**
62
- * Create backup of file
63
- */
64
- private createBackup;
65
- /**
66
- * List backups for a file
67
- */
68
- private listBackups;
69
- /**
70
- * Count changed lines in diff
71
- */
72
- private countChangedLines;
73
- /**
74
- * Escape special regex characters
75
- */
76
- private escapeRegex;
77
- /**
78
- * Get file info for display
79
- */
80
- getFileInfo(filePath: string): Promise<{
81
- exists: boolean;
82
- lines?: number;
83
- size?: number;
84
- preview?: string;
85
- }>;
86
- }
87
- //# sourceMappingURL=editor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/core/editor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,EAAE,MAAM;IAK9B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAyD/E;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAkD/E;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0E3G;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyCxF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA+CtE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAyCpF;;OAEG;YACW,YAAY;IAU1B;;OAEG;YACW,WAAW;IAoBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3C,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CAyBH"}