xibecode 1.0.3 → 1.0.7

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 (268) hide show
  1. package/dist/commands/chat.d.ts.map +1 -1
  2. package/dist/commands/chat.js +10 -7
  3. package/dist/commands/chat.js.map +1 -1
  4. package/dist/commands/diagnostics.js +1 -1
  5. package/dist/commands/diagnostics.js.map +1 -1
  6. package/dist/commands/mcp.js +1 -1
  7. package/dist/commands/mcp.js.map +1 -1
  8. package/dist/commands/resume.js +1 -1
  9. package/dist/commands/resume.js.map +1 -1
  10. package/dist/commands/run-pr.d.ts.map +1 -1
  11. package/dist/commands/run-pr.js +10 -9
  12. package/dist/commands/run-pr.js.map +1 -1
  13. package/dist/commands/run.d.ts.map +1 -1
  14. package/dist/commands/run.js +14 -13
  15. package/dist/commands/run.js.map +1 -1
  16. package/dist/commands/skills.d.ts.map +1 -1
  17. package/dist/commands/skills.js +3 -2
  18. package/dist/commands/skills.js.map +1 -1
  19. package/dist/components/AssistantMarkdown.js +1 -1
  20. package/dist/components/AssistantMarkdown.js.map +1 -1
  21. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  22. package/dist/ui/claude-style-chat.js +12 -10
  23. package/dist/ui/claude-style-chat.js.map +1 -1
  24. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  25. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  26. package/dist/utils/built-in-skills-dir.js +11 -0
  27. package/dist/utils/built-in-skills-dir.js.map +1 -0
  28. package/dist/utils/config.d.ts +2 -119
  29. package/dist/utils/config.d.ts.map +1 -1
  30. package/dist/utils/config.js +3 -88
  31. package/dist/utils/config.js.map +1 -1
  32. package/package.json +11 -17
  33. package/dist/commands/punycode.d.ts +0 -5
  34. package/dist/commands/punycode.d.ts.map +0 -1
  35. package/dist/commands/punycode.js +0 -48
  36. package/dist/commands/punycode.js.map +0 -1
  37. package/dist/commands/tui.d.ts +0 -9
  38. package/dist/commands/tui.d.ts.map +0 -1
  39. package/dist/commands/tui.js +0 -83
  40. package/dist/commands/tui.js.map +0 -1
  41. package/dist/core/agent-tool-policies.d.ts +0 -5
  42. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  43. package/dist/core/agent-tool-policies.js +0 -18
  44. package/dist/core/agent-tool-policies.js.map +0 -1
  45. package/dist/core/agent.d.ts +0 -181
  46. package/dist/core/agent.d.ts.map +0 -1
  47. package/dist/core/agent.js +0 -1777
  48. package/dist/core/agent.js.map +0 -1
  49. package/dist/core/background-agent.d.ts +0 -23
  50. package/dist/core/background-agent.d.ts.map +0 -1
  51. package/dist/core/background-agent.js +0 -175
  52. package/dist/core/background-agent.js.map +0 -1
  53. package/dist/core/code-graph.d.ts +0 -18
  54. package/dist/core/code-graph.d.ts.map +0 -1
  55. package/dist/core/code-graph.js +0 -105
  56. package/dist/core/code-graph.js.map +0 -1
  57. package/dist/core/conflict-solver.d.ts +0 -26
  58. package/dist/core/conflict-solver.d.ts.map +0 -1
  59. package/dist/core/conflict-solver.js +0 -108
  60. package/dist/core/conflict-solver.js.map +0 -1
  61. package/dist/core/context-compactor.d.ts +0 -10
  62. package/dist/core/context-compactor.d.ts.map +0 -1
  63. package/dist/core/context-compactor.js +0 -158
  64. package/dist/core/context-compactor.js.map +0 -1
  65. package/dist/core/context-pruner.d.ts +0 -19
  66. package/dist/core/context-pruner.d.ts.map +0 -1
  67. package/dist/core/context-pruner.js +0 -103
  68. package/dist/core/context-pruner.js.map +0 -1
  69. package/dist/core/context.d.ts +0 -82
  70. package/dist/core/context.d.ts.map +0 -1
  71. package/dist/core/context.js +0 -273
  72. package/dist/core/context.js.map +0 -1
  73. package/dist/core/conversation-recovery.d.ts +0 -9
  74. package/dist/core/conversation-recovery.d.ts.map +0 -1
  75. package/dist/core/conversation-recovery.js +0 -15
  76. package/dist/core/conversation-recovery.js.map +0 -1
  77. package/dist/core/debug-workflow.d.ts +0 -9
  78. package/dist/core/debug-workflow.d.ts.map +0 -1
  79. package/dist/core/debug-workflow.js +0 -19
  80. package/dist/core/debug-workflow.js.map +0 -1
  81. package/dist/core/docs-scraper.d.ts +0 -40
  82. package/dist/core/docs-scraper.d.ts.map +0 -1
  83. package/dist/core/docs-scraper.js +0 -386
  84. package/dist/core/docs-scraper.js.map +0 -1
  85. package/dist/core/editor.d.ts +0 -87
  86. package/dist/core/editor.d.ts.map +0 -1
  87. package/dist/core/editor.js +0 -377
  88. package/dist/core/editor.js.map +0 -1
  89. package/dist/core/export.d.ts +0 -11
  90. package/dist/core/export.d.ts.map +0 -1
  91. package/dist/core/export.js +0 -54
  92. package/dist/core/export.js.map +0 -1
  93. package/dist/core/history-manager.d.ts +0 -75
  94. package/dist/core/history-manager.d.ts.map +0 -1
  95. package/dist/core/history-manager.js +0 -146
  96. package/dist/core/history-manager.js.map +0 -1
  97. package/dist/core/marketplace-client.d.ts +0 -52
  98. package/dist/core/marketplace-client.d.ts.map +0 -1
  99. package/dist/core/marketplace-client.js +0 -71
  100. package/dist/core/marketplace-client.js.map +0 -1
  101. package/dist/core/mcp/mcp-config.d.ts +0 -10
  102. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  103. package/dist/core/mcp/mcp-config.js +0 -70
  104. package/dist/core/mcp/mcp-config.js.map +0 -1
  105. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  106. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  107. package/dist/core/mcp/mcp-policy.js +0 -56
  108. package/dist/core/mcp/mcp-policy.js.map +0 -1
  109. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  110. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  111. package/dist/core/mcp/oauth-flow.js +0 -230
  112. package/dist/core/mcp/oauth-flow.js.map +0 -1
  113. package/dist/core/mcp/oauth-store.d.ts +0 -13
  114. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  115. package/dist/core/mcp/oauth-store.js +0 -68
  116. package/dist/core/mcp/oauth-store.js.map +0 -1
  117. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  118. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  119. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  120. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  121. package/dist/core/mcp-client.d.ts +0 -99
  122. package/dist/core/mcp-client.d.ts.map +0 -1
  123. package/dist/core/mcp-client.js +0 -317
  124. package/dist/core/mcp-client.js.map +0 -1
  125. package/dist/core/memory-promotions.d.ts +0 -15
  126. package/dist/core/memory-promotions.d.ts.map +0 -1
  127. package/dist/core/memory-promotions.js +0 -38
  128. package/dist/core/memory-promotions.js.map +0 -1
  129. package/dist/core/memory.d.ts +0 -32
  130. package/dist/core/memory.d.ts.map +0 -1
  131. package/dist/core/memory.js +0 -121
  132. package/dist/core/memory.js.map +0 -1
  133. package/dist/core/modes.d.ts +0 -432
  134. package/dist/core/modes.d.ts.map +0 -1
  135. package/dist/core/modes.js +0 -1094
  136. package/dist/core/modes.js.map +0 -1
  137. package/dist/core/pattern-miner.d.ts +0 -43
  138. package/dist/core/pattern-miner.d.ts.map +0 -1
  139. package/dist/core/pattern-miner.js +0 -123
  140. package/dist/core/pattern-miner.js.map +0 -1
  141. package/dist/core/permission-store.d.ts +0 -15
  142. package/dist/core/permission-store.d.ts.map +0 -1
  143. package/dist/core/permission-store.js +0 -30
  144. package/dist/core/permission-store.js.map +0 -1
  145. package/dist/core/permissions.d.ts +0 -33
  146. package/dist/core/permissions.d.ts.map +0 -1
  147. package/dist/core/permissions.js +0 -141
  148. package/dist/core/permissions.js.map +0 -1
  149. package/dist/core/plan-artifacts.d.ts +0 -10
  150. package/dist/core/plan-artifacts.d.ts.map +0 -1
  151. package/dist/core/plan-artifacts.js +0 -60
  152. package/dist/core/plan-artifacts.js.map +0 -1
  153. package/dist/core/plan-session.d.ts +0 -25
  154. package/dist/core/plan-session.d.ts.map +0 -1
  155. package/dist/core/plan-session.js +0 -99
  156. package/dist/core/plan-session.js.map +0 -1
  157. package/dist/core/planMode.d.ts +0 -51
  158. package/dist/core/planMode.d.ts.map +0 -1
  159. package/dist/core/planMode.js +0 -245
  160. package/dist/core/planMode.js.map +0 -1
  161. package/dist/core/plugins.d.ts +0 -96
  162. package/dist/core/plugins.d.ts.map +0 -1
  163. package/dist/core/plugins.js +0 -204
  164. package/dist/core/plugins.js.map +0 -1
  165. package/dist/core/session-bridge.d.ts +0 -128
  166. package/dist/core/session-bridge.d.ts.map +0 -1
  167. package/dist/core/session-bridge.js +0 -328
  168. package/dist/core/session-bridge.js.map +0 -1
  169. package/dist/core/session-manager.d.ts +0 -80
  170. package/dist/core/session-manager.d.ts.map +0 -1
  171. package/dist/core/session-manager.js +0 -166
  172. package/dist/core/session-manager.js.map +0 -1
  173. package/dist/core/session-memory.d.ts +0 -45
  174. package/dist/core/session-memory.d.ts.map +0 -1
  175. package/dist/core/session-memory.js +0 -103
  176. package/dist/core/session-memory.js.map +0 -1
  177. package/dist/core/skill-selection.d.ts +0 -36
  178. package/dist/core/skill-selection.d.ts.map +0 -1
  179. package/dist/core/skill-selection.js +0 -172
  180. package/dist/core/skill-selection.js.map +0 -1
  181. package/dist/core/skills-sh-client.d.ts +0 -19
  182. package/dist/core/skills-sh-client.d.ts.map +0 -1
  183. package/dist/core/skills-sh-client.js +0 -75
  184. package/dist/core/skills-sh-client.js.map +0 -1
  185. package/dist/core/skills.d.ts +0 -97
  186. package/dist/core/skills.d.ts.map +0 -1
  187. package/dist/core/skills.js +0 -339
  188. package/dist/core/skills.js.map +0 -1
  189. package/dist/core/swarm.d.ts +0 -34
  190. package/dist/core/swarm.d.ts.map +0 -1
  191. package/dist/core/swarm.js +0 -111
  192. package/dist/core/swarm.js.map +0 -1
  193. package/dist/core/task-status.d.ts +0 -13
  194. package/dist/core/task-status.d.ts.map +0 -1
  195. package/dist/core/task-status.js +0 -17
  196. package/dist/core/task-status.js.map +0 -1
  197. package/dist/core/tool-orchestrator.d.ts +0 -30
  198. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  199. package/dist/core/tool-orchestrator.js +0 -89
  200. package/dist/core/tool-orchestrator.js.map +0 -1
  201. package/dist/core/tools.d.ts +0 -462
  202. package/dist/core/tools.d.ts.map +0 -1
  203. package/dist/core/tools.js +0 -2916
  204. package/dist/core/tools.js.map +0 -1
  205. package/dist/core/transcript-cleanup.d.ts +0 -8
  206. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  207. package/dist/core/transcript-cleanup.js +0 -52
  208. package/dist/core/transcript-cleanup.js.map +0 -1
  209. package/dist/core/visual-feedback.d.ts +0 -20
  210. package/dist/core/visual-feedback.d.ts.map +0 -1
  211. package/dist/core/visual-feedback.js +0 -117
  212. package/dist/core/visual-feedback.js.map +0 -1
  213. package/dist/tools/browser.d.ts +0 -120
  214. package/dist/tools/browser.d.ts.map +0 -1
  215. package/dist/tools/browser.js +0 -439
  216. package/dist/tools/browser.js.map +0 -1
  217. package/dist/tools/test-generator.d.ts +0 -157
  218. package/dist/tools/test-generator.d.ts.map +0 -1
  219. package/dist/tools/test-generator.js +0 -893
  220. package/dist/tools/test-generator.js.map +0 -1
  221. package/dist/tui/InkApp.d.ts +0 -21
  222. package/dist/tui/InkApp.d.ts.map +0 -1
  223. package/dist/tui/InkApp.js +0 -146
  224. package/dist/tui/InkApp.js.map +0 -1
  225. package/dist/tui/MarkdownMessage.d.ts +0 -16
  226. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  227. package/dist/tui/MarkdownMessage.js +0 -63
  228. package/dist/tui/MarkdownMessage.js.map +0 -1
  229. package/dist/tui/blessed-chat.d.ts +0 -9
  230. package/dist/tui/blessed-chat.d.ts.map +0 -1
  231. package/dist/tui/blessed-chat.js +0 -887
  232. package/dist/tui/blessed-chat.js.map +0 -1
  233. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  234. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  235. package/dist/tui/markdown-to-blessed.js +0 -26
  236. package/dist/tui/markdown-to-blessed.js.map +0 -1
  237. package/dist/ui/ink/App.d.ts +0 -25
  238. package/dist/ui/ink/App.d.ts.map +0 -1
  239. package/dist/ui/ink/App.js +0 -372
  240. package/dist/ui/ink/App.js.map +0 -1
  241. package/dist/utils/at-references.d.ts +0 -14
  242. package/dist/utils/at-references.d.ts.map +0 -1
  243. package/dist/utils/at-references.js +0 -47
  244. package/dist/utils/at-references.js.map +0 -1
  245. package/dist/utils/auto-memory.d.ts +0 -24
  246. package/dist/utils/auto-memory.d.ts.map +0 -1
  247. package/dist/utils/auto-memory.js +0 -153
  248. package/dist/utils/auto-memory.js.map +0 -1
  249. package/dist/utils/git.d.ts +0 -89
  250. package/dist/utils/git.d.ts.map +0 -1
  251. package/dist/utils/git.js +0 -444
  252. package/dist/utils/git.js.map +0 -1
  253. package/dist/utils/mcp-servers-file.d.ts +0 -46
  254. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  255. package/dist/utils/mcp-servers-file.js +0 -212
  256. package/dist/utils/mcp-servers-file.js.map +0 -1
  257. package/dist/utils/safety.d.ts +0 -60
  258. package/dist/utils/safety.d.ts.map +0 -1
  259. package/dist/utils/safety.js +0 -254
  260. package/dist/utils/safety.js.map +0 -1
  261. package/dist/utils/smithery.d.ts +0 -25
  262. package/dist/utils/smithery.d.ts.map +0 -1
  263. package/dist/utils/smithery.js +0 -50
  264. package/dist/utils/smithery.js.map +0 -1
  265. package/dist/utils/testRunner.d.ts +0 -44
  266. package/dist/utils/testRunner.d.ts.map +0 -1
  267. package/dist/utils/testRunner.js +0 -270
  268. package/dist/utils/testRunner.js.map +0 -1
@@ -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"}