draken 0.1.6 → 0.3.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 (326) hide show
  1. package/ACCEPTANCE.md +34 -0
  2. package/CHANGELOG.md +65 -0
  3. package/CONTRIBUTING.md +129 -0
  4. package/MEMORY.md +118 -0
  5. package/PERSONA.md +67 -0
  6. package/README.md +168 -78
  7. package/SETUP.md +111 -0
  8. package/SOURCES.md +75 -0
  9. package/TRAY.md +54 -0
  10. package/VOICE.md +126 -0
  11. package/dist/auth/middleware.d.ts +3 -1
  12. package/dist/auth/middleware.d.ts.map +1 -1
  13. package/dist/auth/middleware.js +20 -15
  14. package/dist/auth/middleware.js.map +1 -1
  15. package/dist/cli.js +77 -113
  16. package/dist/cli.js.map +1 -1
  17. package/dist/db/agent-migration.d.ts +7 -0
  18. package/dist/db/agent-migration.d.ts.map +1 -0
  19. package/dist/db/agent-migration.js +36 -0
  20. package/dist/db/agent-migration.js.map +1 -0
  21. package/dist/db/evidence.d.ts +37 -0
  22. package/dist/db/evidence.d.ts.map +1 -0
  23. package/dist/db/evidence.js +110 -0
  24. package/dist/db/evidence.js.map +1 -0
  25. package/dist/db/pointer-migration.d.ts +7 -0
  26. package/dist/db/pointer-migration.d.ts.map +1 -0
  27. package/dist/db/pointer-migration.js +117 -0
  28. package/dist/db/pointer-migration.js.map +1 -0
  29. package/dist/db/retained-text.d.ts +8 -0
  30. package/dist/db/retained-text.d.ts.map +1 -0
  31. package/dist/db/retained-text.js +36 -0
  32. package/dist/db/retained-text.js.map +1 -0
  33. package/dist/db/schema.d.ts +1 -5
  34. package/dist/db/schema.d.ts.map +1 -1
  35. package/dist/db/schema.js +206 -55
  36. package/dist/db/schema.js.map +1 -1
  37. package/dist/db/snapshot-pointers.d.ts +5 -0
  38. package/dist/db/snapshot-pointers.d.ts.map +1 -0
  39. package/dist/db/snapshot-pointers.js +174 -0
  40. package/dist/db/snapshot-pointers.js.map +1 -0
  41. package/dist/memory/automatic.d.ts +38 -0
  42. package/dist/memory/automatic.d.ts.map +1 -0
  43. package/dist/memory/automatic.js +155 -0
  44. package/dist/memory/automatic.js.map +1 -0
  45. package/dist/memory/context.d.ts +12 -0
  46. package/dist/memory/context.d.ts.map +1 -0
  47. package/dist/memory/context.js +107 -0
  48. package/dist/memory/context.js.map +1 -0
  49. package/dist/memory/embedding-pool.d.ts +28 -0
  50. package/dist/memory/embedding-pool.d.ts.map +1 -0
  51. package/dist/memory/embedding-pool.js +135 -0
  52. package/dist/memory/embedding-pool.js.map +1 -0
  53. package/dist/memory/embedding-worker.d.ts +2 -0
  54. package/dist/memory/embedding-worker.d.ts.map +1 -0
  55. package/dist/memory/embedding-worker.js +32 -0
  56. package/dist/memory/embedding-worker.js.map +1 -0
  57. package/dist/memory/index.d.ts +32 -0
  58. package/dist/memory/index.d.ts.map +1 -0
  59. package/dist/memory/index.js +441 -0
  60. package/dist/memory/index.js.map +1 -0
  61. package/dist/memory/model-files.d.ts +9 -0
  62. package/dist/memory/model-files.d.ts.map +1 -0
  63. package/dist/memory/model-files.js +13 -0
  64. package/dist/memory/model-files.js.map +1 -0
  65. package/dist/memory/model.d.ts +15 -0
  66. package/dist/memory/model.d.ts.map +1 -0
  67. package/dist/memory/model.js +147 -0
  68. package/dist/memory/model.js.map +1 -0
  69. package/dist/memory/readiness.d.ts +16 -0
  70. package/dist/memory/readiness.d.ts.map +1 -0
  71. package/dist/memory/readiness.js +131 -0
  72. package/dist/memory/readiness.js.map +1 -0
  73. package/dist/memory/reconcile.d.ts +11 -0
  74. package/dist/memory/reconcile.d.ts.map +1 -0
  75. package/dist/memory/reconcile.js +132 -0
  76. package/dist/memory/reconcile.js.map +1 -0
  77. package/dist/memory/service.d.ts +10 -0
  78. package/dist/memory/service.d.ts.map +1 -0
  79. package/dist/memory/service.js +243 -0
  80. package/dist/memory/service.js.map +1 -0
  81. package/dist/memory/sources.d.ts +15 -0
  82. package/dist/memory/sources.d.ts.map +1 -0
  83. package/dist/memory/sources.js +94 -0
  84. package/dist/memory/sources.js.map +1 -0
  85. package/dist/memory/stamps.d.ts +13 -0
  86. package/dist/memory/stamps.d.ts.map +1 -0
  87. package/dist/memory/stamps.js +101 -0
  88. package/dist/memory/stamps.js.map +1 -0
  89. package/dist/memory/storage.d.ts +5 -0
  90. package/dist/memory/storage.d.ts.map +1 -0
  91. package/dist/memory/storage.js +116 -0
  92. package/dist/memory/storage.js.map +1 -0
  93. package/dist/memory/types.d.ts +89 -0
  94. package/dist/memory/types.d.ts.map +1 -0
  95. package/dist/memory/types.js +8 -0
  96. package/dist/memory/types.js.map +1 -0
  97. package/dist/memory/worker.d.ts +2 -0
  98. package/dist/memory/worker.d.ts.map +1 -0
  99. package/dist/memory/worker.js +84 -0
  100. package/dist/memory/worker.js.map +1 -0
  101. package/dist/npm-cli.d.ts +4 -0
  102. package/dist/npm-cli.d.ts.map +1 -0
  103. package/dist/npm-cli.js +36 -0
  104. package/dist/npm-cli.js.map +1 -0
  105. package/dist/pi/runtime.d.ts +34 -0
  106. package/dist/pi/runtime.d.ts.map +1 -0
  107. package/dist/pi/runtime.js +210 -0
  108. package/dist/pi/runtime.js.map +1 -0
  109. package/dist/pi/setup.d.ts +5 -0
  110. package/dist/pi/setup.d.ts.map +1 -0
  111. package/dist/pi/setup.js +147 -0
  112. package/dist/pi/setup.js.map +1 -0
  113. package/dist/routes/auth.d.ts.map +1 -1
  114. package/dist/routes/auth.js +3 -1
  115. package/dist/routes/auth.js.map +1 -1
  116. package/dist/routes/live-voice.d.ts +3 -0
  117. package/dist/routes/live-voice.d.ts.map +1 -0
  118. package/dist/routes/live-voice.js +49 -0
  119. package/dist/routes/live-voice.js.map +1 -0
  120. package/dist/routes/{browse.d.ts → memory.d.ts} +1 -1
  121. package/dist/routes/memory.d.ts.map +1 -0
  122. package/dist/routes/memory.js +18 -0
  123. package/dist/routes/memory.js.map +1 -0
  124. package/dist/routes/{tasks.d.ts → sync.d.ts} +1 -1
  125. package/dist/routes/sync.d.ts.map +1 -0
  126. package/dist/routes/sync.js +145 -0
  127. package/dist/routes/sync.js.map +1 -0
  128. package/dist/routes/{projects.d.ts → voice.d.ts} +1 -1
  129. package/dist/routes/voice.d.ts.map +1 -0
  130. package/dist/routes/voice.js +35 -0
  131. package/dist/routes/voice.js.map +1 -0
  132. package/dist/server-state.d.ts +30 -0
  133. package/dist/server-state.d.ts.map +1 -0
  134. package/dist/server-state.js +113 -0
  135. package/dist/server-state.js.map +1 -0
  136. package/dist/server-status.d.ts +7 -0
  137. package/dist/server-status.d.ts.map +1 -0
  138. package/dist/server-status.js +34 -0
  139. package/dist/server-status.js.map +1 -0
  140. package/dist/server.d.ts +5 -1
  141. package/dist/server.d.ts.map +1 -1
  142. package/dist/server.js +148 -46
  143. package/dist/server.js.map +1 -1
  144. package/dist/sources/adapters.d.ts +15 -0
  145. package/dist/sources/adapters.d.ts.map +1 -0
  146. package/dist/sources/adapters.js +159 -0
  147. package/dist/sources/adapters.js.map +1 -0
  148. package/dist/sources/registry.d.ts +17 -0
  149. package/dist/sources/registry.d.ts.map +1 -0
  150. package/dist/sources/registry.js +56 -0
  151. package/dist/sources/registry.js.map +1 -0
  152. package/dist/sync/collector.d.ts +3 -0
  153. package/dist/sync/collector.d.ts.map +1 -0
  154. package/dist/sync/collector.js +324 -0
  155. package/dist/sync/collector.js.map +1 -0
  156. package/dist/sync/cost.d.ts +7 -0
  157. package/dist/sync/cost.d.ts.map +1 -0
  158. package/dist/sync/cost.js +31 -0
  159. package/dist/sync/cost.js.map +1 -0
  160. package/dist/sync/jsonl.d.ts +34 -0
  161. package/dist/sync/jsonl.d.ts.map +1 -0
  162. package/dist/sync/jsonl.js +161 -0
  163. package/dist/sync/jsonl.js.map +1 -0
  164. package/dist/sync/manager.d.ts +15 -0
  165. package/dist/sync/manager.d.ts.map +1 -0
  166. package/dist/sync/manager.js +287 -0
  167. package/dist/sync/manager.js.map +1 -0
  168. package/dist/sync/normalize.d.ts +22 -0
  169. package/dist/sync/normalize.d.ts.map +1 -0
  170. package/dist/sync/normalize.js +107 -0
  171. package/dist/sync/normalize.js.map +1 -0
  172. package/dist/sync/pi-output.d.ts +33 -0
  173. package/dist/sync/pi-output.d.ts.map +1 -0
  174. package/dist/sync/pi-output.js +186 -0
  175. package/dist/sync/pi-output.js.map +1 -0
  176. package/dist/sync/pi.d.ts +15 -0
  177. package/dist/sync/pi.d.ts.map +1 -0
  178. package/dist/sync/pi.js +149 -0
  179. package/dist/sync/pi.js.map +1 -0
  180. package/dist/sync/recap.d.ts +25 -0
  181. package/dist/sync/recap.d.ts.map +1 -0
  182. package/dist/sync/recap.js +118 -0
  183. package/dist/sync/recap.js.map +1 -0
  184. package/dist/sync/reconciliation.d.ts +16 -0
  185. package/dist/sync/reconciliation.d.ts.map +1 -0
  186. package/dist/sync/reconciliation.js +22 -0
  187. package/dist/sync/reconciliation.js.map +1 -0
  188. package/dist/sync/references.d.ts +10 -0
  189. package/dist/sync/references.d.ts.map +1 -0
  190. package/dist/sync/references.js +50 -0
  191. package/dist/sync/references.js.map +1 -0
  192. package/dist/sync/source-files.d.ts +16 -0
  193. package/dist/sync/source-files.d.ts.map +1 -0
  194. package/dist/sync/source-files.js +56 -0
  195. package/dist/sync/source-files.js.map +1 -0
  196. package/dist/sync/store.d.ts +36 -0
  197. package/dist/sync/store.d.ts.map +1 -0
  198. package/dist/sync/store.js +359 -0
  199. package/dist/sync/store.js.map +1 -0
  200. package/dist/sync/summary-budget.d.ts +19 -0
  201. package/dist/sync/summary-budget.d.ts.map +1 -0
  202. package/dist/sync/summary-budget.js +39 -0
  203. package/dist/sync/summary-budget.js.map +1 -0
  204. package/dist/sync/tree.d.ts +69 -0
  205. package/dist/sync/tree.d.ts.map +1 -0
  206. package/dist/sync/tree.js +599 -0
  207. package/dist/sync/tree.js.map +1 -0
  208. package/dist/tray/controller.d.ts +51 -0
  209. package/dist/tray/controller.d.ts.map +1 -0
  210. package/dist/tray/controller.js +178 -0
  211. package/dist/tray/controller.js.map +1 -0
  212. package/dist/tray/launcher.d.ts +3 -0
  213. package/dist/tray/launcher.d.ts.map +1 -0
  214. package/dist/tray/launcher.js +47 -0
  215. package/dist/tray/launcher.js.map +1 -0
  216. package/dist/tray/native.d.ts +12 -0
  217. package/dist/tray/native.d.ts.map +1 -0
  218. package/dist/tray/native.js +93 -0
  219. package/dist/tray/native.js.map +1 -0
  220. package/dist/tray/processes.d.ts +5 -0
  221. package/dist/tray/processes.d.ts.map +1 -0
  222. package/dist/tray/processes.js +99 -0
  223. package/dist/tray/processes.js.map +1 -0
  224. package/dist/tray/worker.d.ts +4 -0
  225. package/dist/tray/worker.d.ts.map +1 -0
  226. package/dist/tray/worker.js +150 -0
  227. package/dist/tray/worker.js.map +1 -0
  228. package/dist/types.d.ts +221 -20
  229. package/dist/types.d.ts.map +1 -1
  230. package/dist/voice/continuation.d.ts +25 -0
  231. package/dist/voice/continuation.d.ts.map +1 -0
  232. package/dist/voice/continuation.js +95 -0
  233. package/dist/voice/continuation.js.map +1 -0
  234. package/dist/voice/history-focus.d.ts +14 -0
  235. package/dist/voice/history-focus.d.ts.map +1 -0
  236. package/dist/voice/history-focus.js +39 -0
  237. package/dist/voice/history-focus.js.map +1 -0
  238. package/dist/voice/legacy-history.d.ts +5 -0
  239. package/dist/voice/legacy-history.d.ts.map +1 -0
  240. package/dist/voice/legacy-history.js +34 -0
  241. package/dist/voice/legacy-history.js.map +1 -0
  242. package/dist/voice/live-context.d.ts +14 -0
  243. package/dist/voice/live-context.d.ts.map +1 -0
  244. package/dist/voice/live-context.js +137 -0
  245. package/dist/voice/live-context.js.map +1 -0
  246. package/dist/voice/live.d.ts +37 -0
  247. package/dist/voice/live.d.ts.map +1 -0
  248. package/dist/voice/live.js +462 -0
  249. package/dist/voice/live.js.map +1 -0
  250. package/dist/voice/preparation.d.ts +8 -0
  251. package/dist/voice/preparation.d.ts.map +1 -0
  252. package/dist/voice/preparation.js +59 -0
  253. package/dist/voice/preparation.js.map +1 -0
  254. package/package.json +49 -16
  255. package/public/assets/index-BQFBaSKm.js +40 -0
  256. package/public/assets/index-CYCbTSh1.js +131 -0
  257. package/public/assets/index-DntUQtGK.css +1 -0
  258. package/public/assets/persona-BVIfx5k8.js +1 -0
  259. package/public/assets/persona-C_m1CVKe.css +1 -0
  260. package/public/assets/scene-CBV2oPhA.js +3854 -0
  261. package/public/index.html +6 -8
  262. package/public/persona/THREE-LICENSE.txt +21 -0
  263. package/public/persona/call-poster.webp +0 -0
  264. package/public/persona/chat-avatar.webp +0 -0
  265. package/public/persona/reference.jpg +0 -0
  266. package/public/persona/sample.wav +0 -0
  267. package/public/persona.html +7 -0
  268. package/runtime/pi/package-lock.json +1549 -0
  269. package/runtime/pi/package.json +12 -0
  270. package/tests/fixtures/voice-question.wav +0 -0
  271. package/tray/assets/error.ico +0 -0
  272. package/tray/assets/error.png +0 -0
  273. package/tray/assets/running.ico +0 -0
  274. package/tray/assets/running.png +0 -0
  275. package/tray/assets/starting.ico +0 -0
  276. package/tray/assets/starting.png +0 -0
  277. package/tray/assets/stopped.ico +0 -0
  278. package/tray/assets/stopped.png +0 -0
  279. package/tray/assets/stopping.ico +0 -0
  280. package/tray/assets/stopping.png +0 -0
  281. package/tray/macos.js +72 -0
  282. package/tray/windows.ps1 +104 -0
  283. package/voice/realtime/README.md +84 -0
  284. package/voice/realtime/backend.mjs +81 -0
  285. package/voice/realtime/native.mjs +210 -0
  286. package/voice/realtime/peer.d.mts +15 -0
  287. package/voice/realtime/peer.mjs +116 -0
  288. package/voice/realtime/probe-browser.mjs +81 -0
  289. package/voice/realtime/probe-server.mjs +86 -0
  290. package/voice/realtime/probe.html +11 -0
  291. package/voice/realtime/probe.mjs +42 -0
  292. package/voice/realtime/rpc.mjs +118 -0
  293. package/voice/realtime/setup.mjs +32 -0
  294. package/voice/tls.mjs +49 -0
  295. package/dist/db/queries.d.ts +0 -16
  296. package/dist/db/queries.d.ts.map +0 -1
  297. package/dist/db/queries.js +0 -91
  298. package/dist/db/queries.js.map +0 -1
  299. package/dist/docker/dockerfile.d.ts +0 -50
  300. package/dist/docker/dockerfile.d.ts.map +0 -1
  301. package/dist/docker/dockerfile.js +0 -160
  302. package/dist/docker/dockerfile.js.map +0 -1
  303. package/dist/docker/manager.d.ts +0 -42
  304. package/dist/docker/manager.d.ts.map +0 -1
  305. package/dist/docker/manager.js +0 -421
  306. package/dist/docker/manager.js.map +0 -1
  307. package/dist/git/status.d.ts +0 -76
  308. package/dist/git/status.d.ts.map +0 -1
  309. package/dist/git/status.js +0 -332
  310. package/dist/git/status.js.map +0 -1
  311. package/dist/routes/browse.d.ts.map +0 -1
  312. package/dist/routes/browse.js +0 -49
  313. package/dist/routes/browse.js.map +0 -1
  314. package/dist/routes/git.d.ts +0 -9
  315. package/dist/routes/git.d.ts.map +0 -1
  316. package/dist/routes/git.js +0 -338
  317. package/dist/routes/git.js.map +0 -1
  318. package/dist/routes/projects.d.ts.map +0 -1
  319. package/dist/routes/projects.js +0 -220
  320. package/dist/routes/projects.js.map +0 -1
  321. package/dist/routes/tasks.d.ts.map +0 -1
  322. package/dist/routes/tasks.js +0 -313
  323. package/dist/routes/tasks.js.map +0 -1
  324. package/draken.dockerfile.template +0 -18
  325. package/public/assets/index-3ngsG5kF.css +0 -1
  326. package/public/assets/index-B3YSD0ee.js +0 -252
@@ -1,421 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getClaudeConfigDir = getClaudeConfigDir;
7
- exports.hasOAuthCredentials = hasOAuthCredentials;
8
- exports.getClaudeAuthConfig = getClaudeAuthConfig;
9
- exports.validateClaudeAuth = validateClaudeAuth;
10
- exports.buildProjectImage = buildProjectImage;
11
- exports.runTask = runTask;
12
- exports.sendInputToTask = sendInputToTask;
13
- exports.isTaskRunning = isTaskRunning;
14
- exports.stopContainer = stopContainer;
15
- exports.getContainerStatus = getContainerStatus;
16
- exports.imageExists = imageExists;
17
- const dockerode_1 = __importDefault(require("dockerode"));
18
- const events_1 = require("events");
19
- const path_1 = __importDefault(require("path"));
20
- const fs_1 = __importDefault(require("fs"));
21
- const os_1 = __importDefault(require("os"));
22
- const child_process_1 = require("child_process");
23
- const dockerfile_1 = require("./dockerfile");
24
- // Detect Docker socket path
25
- function getDockerSocket() {
26
- // Check DOCKER_HOST environment variable first
27
- if (process.env.DOCKER_HOST) {
28
- return process.env.DOCKER_HOST.replace('unix://', '');
29
- }
30
- // Try common socket paths
31
- const socketPaths = [
32
- '/var/run/docker.sock',
33
- `${process.env.HOME}/.docker/desktop/docker.sock`,
34
- '/run/docker.sock',
35
- ];
36
- for (const socketPath of socketPaths) {
37
- if (fs_1.default.existsSync(socketPath)) {
38
- return socketPath;
39
- }
40
- }
41
- return undefined;
42
- }
43
- const socketPath = getDockerSocket();
44
- const docker = socketPath ? new dockerode_1.default({ socketPath }) : new dockerode_1.default();
45
- const IMAGE_PREFIX = 'draken-project-';
46
- // ANSI color codes for terminal output
47
- const ANSI = {
48
- reset: '\x1b[0m',
49
- bold: '\x1b[1m',
50
- dim: '\x1b[2m',
51
- // Colors
52
- red: '\x1b[31m',
53
- green: '\x1b[32m',
54
- yellow: '\x1b[33m',
55
- blue: '\x1b[34m',
56
- magenta: '\x1b[35m',
57
- cyan: '\x1b[36m',
58
- white: '\x1b[37m',
59
- gray: '\x1b[90m',
60
- // Bright colors
61
- brightRed: '\x1b[91m',
62
- brightGreen: '\x1b[92m',
63
- brightYellow: '\x1b[93m',
64
- brightBlue: '\x1b[94m',
65
- brightMagenta: '\x1b[95m',
66
- brightCyan: '\x1b[96m',
67
- };
68
- // Helper to colorize text
69
- function colorize(text, ...codes) {
70
- return codes.join('') + text + ANSI.reset;
71
- }
72
- // Store active task processes for interactive input
73
- const activeProcesses = new Map();
74
- /**
75
- * Get the Claude config directory path
76
- * Uses CLAUDE_CONFIG_DIR if set, otherwise defaults to ~/.claude
77
- */
78
- function getClaudeConfigDir() {
79
- return process.env.CLAUDE_CONFIG_DIR || path_1.default.join(os_1.default.homedir(), '.claude');
80
- }
81
- /**
82
- * Check if OAuth credentials exist in the Claude config directory
83
- */
84
- function hasOAuthCredentials() {
85
- const configDir = getClaudeConfigDir();
86
- const credentialsPath = path_1.default.join(configDir, '.credentials.json');
87
- return fs_1.default.existsSync(credentialsPath);
88
- }
89
- function getClaudeAuthConfig() {
90
- // First, check for OAuth credentials (preferred)
91
- if (hasOAuthCredentials()) {
92
- return {
93
- type: 'oauth',
94
- configDir: getClaudeConfigDir(),
95
- };
96
- }
97
- // Second, check for API key
98
- const apiKey = process.env.ANTHROPIC_API_KEY;
99
- if (apiKey) {
100
- return {
101
- type: 'api_key',
102
- apiKey,
103
- };
104
- }
105
- // No authentication available
106
- return null;
107
- }
108
- /**
109
- * Validate Claude authentication on startup
110
- * Throws if no auth method is available
111
- */
112
- function validateClaudeAuth() {
113
- const auth = getClaudeAuthConfig();
114
- if (!auth) {
115
- const configDir = getClaudeConfigDir();
116
- throw new Error(`Claude authentication not configured.\n\n` +
117
- `Option 1 (Recommended): Log in with your Anthropic account\n` +
118
- ` Run: claude login\n` +
119
- ` This creates OAuth credentials in ${configDir}\n\n` +
120
- `Option 2: Use an API key\n` +
121
- ` Set: ANTHROPIC_API_KEY=your-api-key\n`);
122
- }
123
- if (auth.type === 'oauth') {
124
- console.log(`Claude auth: OAuth credentials found in ${auth.configDir}`);
125
- }
126
- else {
127
- console.log('Claude auth: Using ANTHROPIC_API_KEY');
128
- }
129
- }
130
- async function buildProjectImage(projectPath, projectId) {
131
- const imageName = `${IMAGE_PREFIX}${projectId}`;
132
- const dockerfilePath = (0, dockerfile_1.getDockerfilePath)(projectPath);
133
- const dockerfileName = path_1.default.basename(dockerfilePath);
134
- // Build the image using Docker CLI to avoid logging driver issues
135
- try {
136
- (0, child_process_1.execSync)(`docker build -t ${imageName} -f "${dockerfileName}" .`, {
137
- cwd: projectPath,
138
- stdio: 'pipe',
139
- });
140
- }
141
- catch (err) {
142
- const error = err;
143
- const stderr = error.stderr?.toString() || 'Unknown build error';
144
- throw new Error(`Docker build failed: ${stderr}`);
145
- }
146
- return imageName;
147
- }
148
- async function runTask(projectPath, projectId, prompt, taskId, resumeSessionId // Optional session ID to resume a conversation
149
- ) {
150
- const imageName = `${IMAGE_PREFIX}${projectId}`;
151
- // Check if image exists, build if not (using CLI to avoid logging driver issues)
152
- try {
153
- (0, child_process_1.execSync)(`docker image inspect ${imageName}`, { stdio: 'pipe' });
154
- }
155
- catch {
156
- await buildProjectImage(projectPath, projectId);
157
- }
158
- const auth = getClaudeAuthConfig();
159
- if (!auth) {
160
- throw new Error('Claude authentication not configured. Run "claude login" or set ANTHROPIC_API_KEY.');
161
- }
162
- const logEmitter = new events_1.EventEmitter();
163
- // Create a persistent sessions directory for this project
164
- const sessionsDir = path_1.default.join(projectPath, '.draken-sessions');
165
- if (!fs_1.default.existsSync(sessionsDir)) {
166
- fs_1.default.mkdirSync(sessionsDir, { recursive: true });
167
- }
168
- // Get mount configuration from dockerfile
169
- const mounts = (0, dockerfile_1.getProjectMounts)(projectPath);
170
- // Build docker run arguments
171
- const dockerArgs = [
172
- 'run',
173
- '--rm',
174
- '--log-driver', 'json-file',
175
- // Force color output in terminal commands
176
- '-e', 'TERM=xterm-256color',
177
- '-e', 'FORCE_COLOR=1',
178
- '-e', 'CLICOLOR=1',
179
- '-e', 'CLICOLOR_FORCE=1',
180
- ];
181
- // Mount project directories
182
- if (mounts.length > 0) {
183
- console.log(`[runTask] Mounting ${mounts.length} directories:`);
184
- // Multi-repo mode: mount each configured path with its alias
185
- for (const mount of mounts) {
186
- dockerArgs.push('-v', `${mount.path}:/workspace/${mount.alias}`);
187
- // Hide .git for each mount (only if it's a git repo)
188
- const gitDir = path_1.default.join(mount.path, '.git');
189
- if (fs_1.default.existsSync(gitDir)) {
190
- dockerArgs.push('--mount', `type=tmpfs,destination=/workspace/${mount.alias}/.git,tmpfs-size=1m`);
191
- console.log(` - ${mount.alias}: ${mount.path} (git repo, .git hidden)`);
192
- }
193
- else {
194
- console.log(` - ${mount.alias}: ${mount.path} (not a git repo)`);
195
- }
196
- }
197
- }
198
- else {
199
- // Backward compatibility: single project mode
200
- dockerArgs.push('-v', `${projectPath}:/workspace`);
201
- // Hide .git only if it exists
202
- const gitDir = path_1.default.join(projectPath, '.git');
203
- if (fs_1.default.existsSync(gitDir)) {
204
- dockerArgs.push('--mount', 'type=tmpfs,destination=/workspace/.git,tmpfs-size=1m');
205
- console.log(`[runTask] Mounting: ${projectPath} (git repo, .git hidden)`);
206
- }
207
- else {
208
- console.log(`[runTask] Mounting: ${projectPath} (not a git repo)`);
209
- }
210
- }
211
- // Add authentication based on type
212
- if (auth.type === 'oauth') {
213
- // Mount the Claude config directory for OAuth
214
- // Note: Cannot be read-only - Claude needs to write session data, refresh tokens, etc.
215
- dockerArgs.push('-v', `${auth.configDir}:/home/claude/.claude-config`);
216
- dockerArgs.push('-e', 'CLAUDE_CONFIG_DIR=/home/claude/.claude-config');
217
- // Also mount sessions dir for project-specific session persistence
218
- dockerArgs.push('-v', `${sessionsDir}:/home/claude/.claude-sessions`);
219
- }
220
- else {
221
- // API key auth
222
- dockerArgs.push('-e', `ANTHROPIC_API_KEY=${auth.apiKey}`);
223
- dockerArgs.push('-v', `${sessionsDir}:/home/claude/.claude`);
224
- }
225
- // Add the image and Claude CLI arguments
226
- dockerArgs.push(imageName);
227
- dockerArgs.push('-p', prompt);
228
- dockerArgs.push('--dangerously-skip-permissions'); // Skip permission prompts for non-interactive container
229
- dockerArgs.push('--verbose');
230
- dockerArgs.push('--output-format', 'stream-json');
231
- dockerArgs.push('--allowedTools', 'Read,Edit,Write,Bash,Glob,Grep');
232
- // Add --resume if continuing a conversation
233
- if (resumeSessionId) {
234
- dockerArgs.push('--resume', resumeSessionId);
235
- console.log('[runTask] Resuming session:', resumeSessionId);
236
- }
237
- console.log('[runTask] Docker args:', dockerArgs.join(' '));
238
- const dockerProcess = (0, child_process_1.spawn)('docker', dockerArgs, {
239
- stdio: ['pipe', 'pipe', 'pipe'],
240
- });
241
- console.log('[runTask] Docker process spawned, pid:', dockerProcess.pid);
242
- // Close stdin immediately for print mode - we don't need input
243
- // This signals to the container that there's no more input coming
244
- dockerProcess.stdin.end();
245
- // Store the process for later input
246
- activeProcesses.set(taskId, dockerProcess);
247
- // Generate a pseudo container ID from the process
248
- const containerId = `pid-${dockerProcess.pid}`;
249
- // Buffer for incomplete JSON lines
250
- let buffer = '';
251
- dockerProcess.stdout.on('data', (chunk) => {
252
- const chunkStr = chunk.toString('utf-8');
253
- console.log('[stdout chunk]', chunkStr.substring(0, 200)); // Debug: show first 200 chars
254
- buffer += chunkStr;
255
- const lines = buffer.split('\n');
256
- buffer = lines.pop() || ''; // Keep incomplete line in buffer
257
- for (const line of lines) {
258
- if (!line.trim())
259
- continue;
260
- try {
261
- const event = JSON.parse(line);
262
- // Debug: log all event types to understand the stream format
263
- console.log('[stream-json event]', event.type, event.session_id ? `session=${event.session_id}` : '');
264
- // Capture session_id from any event that has it
265
- if (event.session_id) {
266
- logEmitter.emit('session', event.session_id);
267
- }
268
- // Extract text content from stream-json events with colorization
269
- if (event.type === 'assistant' && event.message?.content) {
270
- for (const block of event.message.content) {
271
- if (block.type === 'text') {
272
- console.log('[emit log] text:', block.text.substring(0, 100));
273
- // Assistant text in default color
274
- logEmitter.emit('log', block.text);
275
- }
276
- else if (block.type === 'tool_use') {
277
- console.log('[emit log] tool_use:', block.name);
278
- // Tool header in cyan + bold
279
- const toolHeader = colorize(`\n━━━ Tool: ${block.name} ━━━`, ANSI.cyan, ANSI.bold);
280
- logEmitter.emit('log', toolHeader + '\n');
281
- // Show tool input if present (dimmed)
282
- if (block.input) {
283
- const inputStr = typeof block.input === 'string'
284
- ? block.input
285
- : JSON.stringify(block.input, null, 2);
286
- // For common tools, show relevant input nicely
287
- if (block.name === 'Bash' && block.input.command) {
288
- logEmitter.emit('log', colorize('$ ' + block.input.command, ANSI.yellow) + '\n');
289
- }
290
- else if (block.name === 'Read' && block.input.file_path) {
291
- logEmitter.emit('log', colorize('Reading: ' + block.input.file_path, ANSI.blue) + '\n');
292
- }
293
- else if (block.name === 'Write' && block.input.file_path) {
294
- logEmitter.emit('log', colorize('Writing: ' + block.input.file_path, ANSI.green) + '\n');
295
- }
296
- else if (block.name === 'Edit' && block.input.file_path) {
297
- logEmitter.emit('log', colorize('Editing: ' + block.input.file_path, ANSI.yellow) + '\n');
298
- }
299
- else if (inputStr.length < 500) {
300
- logEmitter.emit('log', colorize(inputStr, ANSI.dim) + '\n');
301
- }
302
- }
303
- }
304
- }
305
- }
306
- else if (event.type === 'user' && event.message?.content) {
307
- // Tool results from user messages (tool output)
308
- for (const block of event.message.content) {
309
- if (block.type === 'tool_result') {
310
- const content = typeof block.content === 'string'
311
- ? block.content
312
- : JSON.stringify(block.content);
313
- // Tool output - keep as-is (may contain its own ANSI codes from bash)
314
- logEmitter.emit('log', content + '\n');
315
- logEmitter.emit('log', colorize('━━━━━━━━━━━━━━━━━━━━━━━', ANSI.gray) + '\n');
316
- }
317
- }
318
- }
319
- else if (event.type === 'result') {
320
- // Final result in green
321
- if (event.result) {
322
- console.log('[emit log] result:', event.result.substring(0, 100));
323
- const resultHeader = colorize('\n✓ Task Complete', ANSI.green, ANSI.bold);
324
- logEmitter.emit('log', resultHeader + '\n');
325
- logEmitter.emit('log', event.result + '\n');
326
- }
327
- }
328
- else if (event.type === 'error') {
329
- console.log('[emit log] error:', event.error?.message);
330
- // Errors in red + bold
331
- const errorMsg = colorize(`\n✗ Error: ${event.error?.message || JSON.stringify(event)}`, ANSI.red, ANSI.bold);
332
- logEmitter.emit('log', errorMsg + '\n');
333
- }
334
- else if (event.type === 'system') {
335
- // System messages in yellow
336
- if (event.message) {
337
- logEmitter.emit('log', colorize(`[System] ${event.message}`, ANSI.yellow) + '\n');
338
- }
339
- }
340
- }
341
- catch {
342
- // Not JSON, emit as raw text
343
- logEmitter.emit('log', line + '\n');
344
- }
345
- }
346
- });
347
- dockerProcess.stdout.on('end', () => {
348
- console.log('[stdout] stream ended');
349
- });
350
- dockerProcess.stderr.on('data', (chunk) => {
351
- const text = chunk.toString('utf-8');
352
- console.log('[stderr]', text);
353
- logEmitter.emit('log', text);
354
- });
355
- dockerProcess.on('close', (code) => {
356
- activeProcesses.delete(taskId);
357
- logEmitter.emit('end', code ?? 0);
358
- });
359
- dockerProcess.on('error', (err) => {
360
- activeProcesses.delete(taskId);
361
- logEmitter.emit('error', err);
362
- });
363
- return { containerId, logEmitter };
364
- }
365
- function sendInputToTask(taskId, input) {
366
- const proc = activeProcesses.get(taskId);
367
- if (proc && proc.stdin && !proc.stdin.destroyed) {
368
- proc.stdin.write(input + '\n');
369
- return true;
370
- }
371
- return false;
372
- }
373
- function isTaskRunning(taskId) {
374
- return activeProcesses.has(taskId);
375
- }
376
- async function stopContainer(containerId) {
377
- try {
378
- // Handle both process IDs (pid-XXX) and actual container IDs
379
- if (containerId.startsWith('pid-')) {
380
- const pid = parseInt(containerId.replace('pid-', ''), 10);
381
- process.kill(pid, 'SIGTERM');
382
- }
383
- else {
384
- const container = docker.getContainer(containerId);
385
- await container.stop({ t: 5 });
386
- }
387
- }
388
- catch (err) {
389
- const error = err;
390
- // Container/process might already be stopped or removed
391
- if (error.statusCode !== 404 && error.statusCode !== 304 && error.code !== 'ESRCH') {
392
- throw err;
393
- }
394
- }
395
- }
396
- async function getContainerStatus(containerId) {
397
- try {
398
- if (containerId.startsWith('pid-')) {
399
- const pid = parseInt(containerId.replace('pid-', ''), 10);
400
- // Check if process is still running
401
- process.kill(pid, 0);
402
- return 'running';
403
- }
404
- const result = (0, child_process_1.execSync)(`docker inspect --format='{{.State.Status}}' ${containerId}`, { stdio: 'pipe' });
405
- return result.toString().trim();
406
- }
407
- catch {
408
- return 'removed';
409
- }
410
- }
411
- async function imageExists(projectId) {
412
- const imageName = `${IMAGE_PREFIX}${projectId}`;
413
- try {
414
- (0, child_process_1.execSync)(`docker image inspect ${imageName}`, { stdio: 'pipe' });
415
- return true;
416
- }
417
- catch {
418
- return false;
419
- }
420
- }
421
- //# sourceMappingURL=manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/docker/manager.ts"],"names":[],"mappings":";;;;;AA6EA,gDAEC;AAKD,kDAIC;AAYD,kDAoBC;AAMD,gDAoBC;AAED,8CAkBC;AAED,0BA0OC;AAED,0CAOC;AAED,sCAEC;AAED,sCAiBC;AAED,gDAaC;AAED,kCAQC;AA3cD,0DAA+B;AAC/B,mCAAsC;AACtC,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,iDAA8D;AAC9D,6CAAgF;AAEhF,4BAA4B;AAC5B,SAAS,eAAe;IACtB,+CAA+C;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B;IAC1B,MAAM,WAAW,GAAG;QAClB,sBAAsB;QACtB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,8BAA8B;QACjD,kBAAkB;KACnB,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;AACrC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,mBAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAM,EAAE,CAAC;AACtE,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,uCAAuC;AACvC,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,SAAS;IACT,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,gBAAgB;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;CACvB,CAAC;AAEF,0BAA0B;AAC1B,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAG,KAAe;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED,oDAAoD;AACpD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;AASxD;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAClE,OAAO,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAYD,SAAgB,mBAAmB;IACjC,iDAAiD;IACjD,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,kBAAkB,EAAE;SAChC,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC7C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM;SACP,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C;YAC3C,8DAA8D;YAC9D,uBAAuB;YACvB,uCAAuC,SAAS,MAAM;YACtD,4BAA4B;YAC5B,yCAAyC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,SAAiB;IAC5E,MAAM,SAAS,GAAG,GAAG,YAAY,GAAG,SAAS,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,cAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAErD,kEAAkE;IAClE,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,mBAAmB,SAAS,QAAQ,cAAc,KAAK,EAAE;YAChE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAA0B,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,qBAAqB,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,WAAmB,EACnB,SAAiB,EACjB,MAAc,EACd,MAAc,EACd,eAAwB,CAAE,+CAA+C;;IAEzE,MAAM,SAAS,GAAG,GAAG,YAAY,GAAG,SAAS,EAAE,CAAC;IAEhD,iFAAiF;IACjF,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,wBAAwB,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,qBAAY,EAAyB,CAAC;IAE7D,0DAA0D;IAC1D,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,0CAA0C;IAC1C,MAAM,MAAM,GAAG,IAAA,6BAAgB,EAAC,WAAW,CAAC,CAAC;IAE7C,6BAA6B;IAC7B,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,MAAM;QACN,cAAc,EAAE,WAAW;QAC3B,0CAA0C;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,kBAAkB;KACzB,CAAC;IAEF,4BAA4B;IAC5B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;QAChE,6DAA6D;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACjE,qDAAqD;YACrD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qCAAqC,KAAK,CAAC,KAAK,qBAAqB,CAAC,CAAC;gBAClG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,8CAA8C;QAC9C,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,aAAa,CAAC,CAAC;QACnD,8BAA8B;QAC9B,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,sDAAsD,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,0BAA0B,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,mBAAmB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,8CAA8C;QAC9C,uFAAuF;QACvF,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC;QACvE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,+CAA+C,CAAC,CAAC;QAEvE,mEAAmE;QACnE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,gCAAgC,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,eAAe;QACf,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,uBAAuB,CAAC,CAAC;IAC/D,CAAC;IAED,yCAAyC;IACzC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAE,wDAAwD;IAC5G,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAClD,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;IAEpE,4CAA4C;IAC5C,IAAI,eAAe,EAAE,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,UAAU,EAAE;QAChD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAEzE,+DAA+D;IAC/D,kEAAkE;IAClE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAE1B,oCAAoC;IACpC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE3C,kDAAkD;IAClD,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC;IAE/C,mCAAmC;IACnC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B;QACzF,MAAM,IAAI,QAAQ,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,iCAAiC;QAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE/B,6DAA6D;gBAC7D,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEtG,gDAAgD;gBAChD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAED,iEAAiE;gBACjE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;oBACzD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;4BAC9D,kCAAkC;4BAClC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBACrC,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;4BAChD,6BAA6B;4BAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,KAAK,CAAC,IAAI,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;4BACnF,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;4BAE1C,sCAAsC;4BACtC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gCAChB,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;oCAC9C,CAAC,CAAC,KAAK,CAAC,KAAK;oCACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gCACzC,+CAA+C;gCAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oCACjD,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gCACnF,CAAC;qCAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oCAC1D,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gCAC1F,CAAC;qCAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oCAC3D,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gCAC3F,CAAC;qCAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oCAC1D,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gCAC5F,CAAC;qCAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oCACjC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gCAC9D,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;oBAC3D,gDAAgD;oBAChD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;4BACjC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gCAC/C,CAAC,CAAC,KAAK,CAAC,OAAO;gCACf,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BAClC,sEAAsE;4BACtE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;4BACvC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACnC,wBAAwB;oBACxB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBAClE,MAAM,YAAY,GAAG,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1E,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;wBAC5C,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACvD,uBAAuB;oBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9G,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACnC,4BAA4B;oBAC5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;gBAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;QAChD,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QACvC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,KAAa;IAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,IAAI,CAAC;QACH,6DAA6D;QAC7D,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAA6C,CAAC;QAC5D,wDAAwD;QACxD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,IAAI,CAAC;QACH,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,oCAAoC;YACpC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,+CAA+C,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzG,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,GAAG,YAAY,GAAG,SAAS,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,wBAAwB,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,76 +0,0 @@
1
- export interface GitFileChange {
2
- path: string;
3
- status: 'modified' | 'added' | 'deleted' | 'renamed' | 'untracked';
4
- staged: boolean;
5
- }
6
- export interface GitStatus {
7
- isRepo: boolean;
8
- branch: string | null;
9
- ahead: number;
10
- behind: number;
11
- changes: GitFileChange[];
12
- hasUncommittedChanges: boolean;
13
- hasUntrackedFiles: boolean;
14
- }
15
- export interface GitDiff {
16
- staged: string;
17
- unstaged: string;
18
- }
19
- export interface GitBranch {
20
- name: string;
21
- current: boolean;
22
- }
23
- export interface CommitResult {
24
- hash: string;
25
- message: string;
26
- }
27
- export declare function isGitRepo(projectPath: string): boolean;
28
- /**
29
- * List all local branches
30
- */
31
- export declare function listBranches(projectPath: string): Promise<GitBranch[]>;
32
- /**
33
- * Create a new branch
34
- */
35
- export declare function createBranch(projectPath: string, branchName: string, checkout?: boolean): Promise<void>;
36
- /**
37
- * Checkout an existing branch
38
- */
39
- export declare function checkoutBranch(projectPath: string, branchName: string): Promise<void>;
40
- /**
41
- * Stage files for commit
42
- */
43
- export declare function stageFiles(projectPath: string, files: string[]): Promise<void>;
44
- /**
45
- * Stage all changes
46
- */
47
- export declare function stageAll(projectPath: string): Promise<void>;
48
- /**
49
- * Unstage files
50
- */
51
- export declare function unstageFiles(projectPath: string, files: string[]): Promise<void>;
52
- /**
53
- * Unstage all files
54
- */
55
- export declare function unstageAll(projectPath: string): Promise<void>;
56
- /**
57
- * Commit staged changes
58
- */
59
- export declare function commit(projectPath: string, message: string): Promise<CommitResult>;
60
- export declare function getGitStatus(projectPath: string): Promise<GitStatus>;
61
- export declare function getGitDiff(projectPath: string, staged?: boolean): Promise<string>;
62
- export declare function getGitDiffs(projectPath: string): Promise<GitDiff>;
63
- export interface FileDiffContent {
64
- oldContent: string;
65
- newContent: string;
66
- oldFileName: string;
67
- newFileName: string;
68
- }
69
- /**
70
- * Get old and new content for a file to display a diff
71
- * @param projectPath - Path to the git repository
72
- * @param filePath - Path to the file relative to repo root
73
- * @param staged - Whether the file is staged or unstaged
74
- */
75
- export declare function getFileDiffContent(projectPath: string, filePath: string, staged: boolean): Promise<FileDiffContent>;
76
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/git/status.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACnE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAYtD;AAMD;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAiB5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBxF;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAuG1E;AAED,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAY9F;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAaD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,eAAe,CAAC,CA0D1B"}