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.
- package/ACCEPTANCE.md +34 -0
- package/CHANGELOG.md +65 -0
- package/CONTRIBUTING.md +129 -0
- package/MEMORY.md +118 -0
- package/PERSONA.md +67 -0
- package/README.md +168 -78
- package/SETUP.md +111 -0
- package/SOURCES.md +75 -0
- package/TRAY.md +54 -0
- package/VOICE.md +126 -0
- package/dist/auth/middleware.d.ts +3 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +20 -15
- package/dist/auth/middleware.js.map +1 -1
- package/dist/cli.js +77 -113
- package/dist/cli.js.map +1 -1
- package/dist/db/agent-migration.d.ts +7 -0
- package/dist/db/agent-migration.d.ts.map +1 -0
- package/dist/db/agent-migration.js +36 -0
- package/dist/db/agent-migration.js.map +1 -0
- package/dist/db/evidence.d.ts +37 -0
- package/dist/db/evidence.d.ts.map +1 -0
- package/dist/db/evidence.js +110 -0
- package/dist/db/evidence.js.map +1 -0
- package/dist/db/pointer-migration.d.ts +7 -0
- package/dist/db/pointer-migration.d.ts.map +1 -0
- package/dist/db/pointer-migration.js +117 -0
- package/dist/db/pointer-migration.js.map +1 -0
- package/dist/db/retained-text.d.ts +8 -0
- package/dist/db/retained-text.d.ts.map +1 -0
- package/dist/db/retained-text.js +36 -0
- package/dist/db/retained-text.js.map +1 -0
- package/dist/db/schema.d.ts +1 -5
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +206 -55
- package/dist/db/schema.js.map +1 -1
- package/dist/db/snapshot-pointers.d.ts +5 -0
- package/dist/db/snapshot-pointers.d.ts.map +1 -0
- package/dist/db/snapshot-pointers.js +174 -0
- package/dist/db/snapshot-pointers.js.map +1 -0
- package/dist/memory/automatic.d.ts +38 -0
- package/dist/memory/automatic.d.ts.map +1 -0
- package/dist/memory/automatic.js +155 -0
- package/dist/memory/automatic.js.map +1 -0
- package/dist/memory/context.d.ts +12 -0
- package/dist/memory/context.d.ts.map +1 -0
- package/dist/memory/context.js +107 -0
- package/dist/memory/context.js.map +1 -0
- package/dist/memory/embedding-pool.d.ts +28 -0
- package/dist/memory/embedding-pool.d.ts.map +1 -0
- package/dist/memory/embedding-pool.js +135 -0
- package/dist/memory/embedding-pool.js.map +1 -0
- package/dist/memory/embedding-worker.d.ts +2 -0
- package/dist/memory/embedding-worker.d.ts.map +1 -0
- package/dist/memory/embedding-worker.js +32 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +441 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/model-files.d.ts +9 -0
- package/dist/memory/model-files.d.ts.map +1 -0
- package/dist/memory/model-files.js +13 -0
- package/dist/memory/model-files.js.map +1 -0
- package/dist/memory/model.d.ts +15 -0
- package/dist/memory/model.d.ts.map +1 -0
- package/dist/memory/model.js +147 -0
- package/dist/memory/model.js.map +1 -0
- package/dist/memory/readiness.d.ts +16 -0
- package/dist/memory/readiness.d.ts.map +1 -0
- package/dist/memory/readiness.js +131 -0
- package/dist/memory/readiness.js.map +1 -0
- package/dist/memory/reconcile.d.ts +11 -0
- package/dist/memory/reconcile.d.ts.map +1 -0
- package/dist/memory/reconcile.js +132 -0
- package/dist/memory/reconcile.js.map +1 -0
- package/dist/memory/service.d.ts +10 -0
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +243 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/memory/sources.d.ts +15 -0
- package/dist/memory/sources.d.ts.map +1 -0
- package/dist/memory/sources.js +94 -0
- package/dist/memory/sources.js.map +1 -0
- package/dist/memory/stamps.d.ts +13 -0
- package/dist/memory/stamps.d.ts.map +1 -0
- package/dist/memory/stamps.js +101 -0
- package/dist/memory/stamps.js.map +1 -0
- package/dist/memory/storage.d.ts +5 -0
- package/dist/memory/storage.d.ts.map +1 -0
- package/dist/memory/storage.js +116 -0
- package/dist/memory/storage.js.map +1 -0
- package/dist/memory/types.d.ts +89 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/worker.d.ts +2 -0
- package/dist/memory/worker.d.ts.map +1 -0
- package/dist/memory/worker.js +84 -0
- package/dist/memory/worker.js.map +1 -0
- package/dist/npm-cli.d.ts +4 -0
- package/dist/npm-cli.d.ts.map +1 -0
- package/dist/npm-cli.js +36 -0
- package/dist/npm-cli.js.map +1 -0
- package/dist/pi/runtime.d.ts +34 -0
- package/dist/pi/runtime.d.ts.map +1 -0
- package/dist/pi/runtime.js +210 -0
- package/dist/pi/runtime.js.map +1 -0
- package/dist/pi/setup.d.ts +5 -0
- package/dist/pi/setup.d.ts.map +1 -0
- package/dist/pi/setup.js +147 -0
- package/dist/pi/setup.js.map +1 -0
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +3 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/live-voice.d.ts +3 -0
- package/dist/routes/live-voice.d.ts.map +1 -0
- package/dist/routes/live-voice.js +49 -0
- package/dist/routes/live-voice.js.map +1 -0
- package/dist/routes/{browse.d.ts → memory.d.ts} +1 -1
- package/dist/routes/memory.d.ts.map +1 -0
- package/dist/routes/memory.js +18 -0
- package/dist/routes/memory.js.map +1 -0
- package/dist/routes/{tasks.d.ts → sync.d.ts} +1 -1
- package/dist/routes/sync.d.ts.map +1 -0
- package/dist/routes/sync.js +145 -0
- package/dist/routes/sync.js.map +1 -0
- package/dist/routes/{projects.d.ts → voice.d.ts} +1 -1
- package/dist/routes/voice.d.ts.map +1 -0
- package/dist/routes/voice.js +35 -0
- package/dist/routes/voice.js.map +1 -0
- package/dist/server-state.d.ts +30 -0
- package/dist/server-state.d.ts.map +1 -0
- package/dist/server-state.js +113 -0
- package/dist/server-state.js.map +1 -0
- package/dist/server-status.d.ts +7 -0
- package/dist/server-status.d.ts.map +1 -0
- package/dist/server-status.js +34 -0
- package/dist/server-status.js.map +1 -0
- package/dist/server.d.ts +5 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +148 -46
- package/dist/server.js.map +1 -1
- package/dist/sources/adapters.d.ts +15 -0
- package/dist/sources/adapters.d.ts.map +1 -0
- package/dist/sources/adapters.js +159 -0
- package/dist/sources/adapters.js.map +1 -0
- package/dist/sources/registry.d.ts +17 -0
- package/dist/sources/registry.d.ts.map +1 -0
- package/dist/sources/registry.js +56 -0
- package/dist/sources/registry.js.map +1 -0
- package/dist/sync/collector.d.ts +3 -0
- package/dist/sync/collector.d.ts.map +1 -0
- package/dist/sync/collector.js +324 -0
- package/dist/sync/collector.js.map +1 -0
- package/dist/sync/cost.d.ts +7 -0
- package/dist/sync/cost.d.ts.map +1 -0
- package/dist/sync/cost.js +31 -0
- package/dist/sync/cost.js.map +1 -0
- package/dist/sync/jsonl.d.ts +34 -0
- package/dist/sync/jsonl.d.ts.map +1 -0
- package/dist/sync/jsonl.js +161 -0
- package/dist/sync/jsonl.js.map +1 -0
- package/dist/sync/manager.d.ts +15 -0
- package/dist/sync/manager.d.ts.map +1 -0
- package/dist/sync/manager.js +287 -0
- package/dist/sync/manager.js.map +1 -0
- package/dist/sync/normalize.d.ts +22 -0
- package/dist/sync/normalize.d.ts.map +1 -0
- package/dist/sync/normalize.js +107 -0
- package/dist/sync/normalize.js.map +1 -0
- package/dist/sync/pi-output.d.ts +33 -0
- package/dist/sync/pi-output.d.ts.map +1 -0
- package/dist/sync/pi-output.js +186 -0
- package/dist/sync/pi-output.js.map +1 -0
- package/dist/sync/pi.d.ts +15 -0
- package/dist/sync/pi.d.ts.map +1 -0
- package/dist/sync/pi.js +149 -0
- package/dist/sync/pi.js.map +1 -0
- package/dist/sync/recap.d.ts +25 -0
- package/dist/sync/recap.d.ts.map +1 -0
- package/dist/sync/recap.js +118 -0
- package/dist/sync/recap.js.map +1 -0
- package/dist/sync/reconciliation.d.ts +16 -0
- package/dist/sync/reconciliation.d.ts.map +1 -0
- package/dist/sync/reconciliation.js +22 -0
- package/dist/sync/reconciliation.js.map +1 -0
- package/dist/sync/references.d.ts +10 -0
- package/dist/sync/references.d.ts.map +1 -0
- package/dist/sync/references.js +50 -0
- package/dist/sync/references.js.map +1 -0
- package/dist/sync/source-files.d.ts +16 -0
- package/dist/sync/source-files.d.ts.map +1 -0
- package/dist/sync/source-files.js +56 -0
- package/dist/sync/source-files.js.map +1 -0
- package/dist/sync/store.d.ts +36 -0
- package/dist/sync/store.d.ts.map +1 -0
- package/dist/sync/store.js +359 -0
- package/dist/sync/store.js.map +1 -0
- package/dist/sync/summary-budget.d.ts +19 -0
- package/dist/sync/summary-budget.d.ts.map +1 -0
- package/dist/sync/summary-budget.js +39 -0
- package/dist/sync/summary-budget.js.map +1 -0
- package/dist/sync/tree.d.ts +69 -0
- package/dist/sync/tree.d.ts.map +1 -0
- package/dist/sync/tree.js +599 -0
- package/dist/sync/tree.js.map +1 -0
- package/dist/tray/controller.d.ts +51 -0
- package/dist/tray/controller.d.ts.map +1 -0
- package/dist/tray/controller.js +178 -0
- package/dist/tray/controller.js.map +1 -0
- package/dist/tray/launcher.d.ts +3 -0
- package/dist/tray/launcher.d.ts.map +1 -0
- package/dist/tray/launcher.js +47 -0
- package/dist/tray/launcher.js.map +1 -0
- package/dist/tray/native.d.ts +12 -0
- package/dist/tray/native.d.ts.map +1 -0
- package/dist/tray/native.js +93 -0
- package/dist/tray/native.js.map +1 -0
- package/dist/tray/processes.d.ts +5 -0
- package/dist/tray/processes.d.ts.map +1 -0
- package/dist/tray/processes.js +99 -0
- package/dist/tray/processes.js.map +1 -0
- package/dist/tray/worker.d.ts +4 -0
- package/dist/tray/worker.d.ts.map +1 -0
- package/dist/tray/worker.js +150 -0
- package/dist/tray/worker.js.map +1 -0
- package/dist/types.d.ts +221 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/voice/continuation.d.ts +25 -0
- package/dist/voice/continuation.d.ts.map +1 -0
- package/dist/voice/continuation.js +95 -0
- package/dist/voice/continuation.js.map +1 -0
- package/dist/voice/history-focus.d.ts +14 -0
- package/dist/voice/history-focus.d.ts.map +1 -0
- package/dist/voice/history-focus.js +39 -0
- package/dist/voice/history-focus.js.map +1 -0
- package/dist/voice/legacy-history.d.ts +5 -0
- package/dist/voice/legacy-history.d.ts.map +1 -0
- package/dist/voice/legacy-history.js +34 -0
- package/dist/voice/legacy-history.js.map +1 -0
- package/dist/voice/live-context.d.ts +14 -0
- package/dist/voice/live-context.d.ts.map +1 -0
- package/dist/voice/live-context.js +137 -0
- package/dist/voice/live-context.js.map +1 -0
- package/dist/voice/live.d.ts +37 -0
- package/dist/voice/live.d.ts.map +1 -0
- package/dist/voice/live.js +462 -0
- package/dist/voice/live.js.map +1 -0
- package/dist/voice/preparation.d.ts +8 -0
- package/dist/voice/preparation.d.ts.map +1 -0
- package/dist/voice/preparation.js +59 -0
- package/dist/voice/preparation.js.map +1 -0
- package/package.json +49 -16
- package/public/assets/index-BQFBaSKm.js +40 -0
- package/public/assets/index-CYCbTSh1.js +131 -0
- package/public/assets/index-DntUQtGK.css +1 -0
- package/public/assets/persona-BVIfx5k8.js +1 -0
- package/public/assets/persona-C_m1CVKe.css +1 -0
- package/public/assets/scene-CBV2oPhA.js +3854 -0
- package/public/index.html +6 -8
- package/public/persona/THREE-LICENSE.txt +21 -0
- package/public/persona/call-poster.webp +0 -0
- package/public/persona/chat-avatar.webp +0 -0
- package/public/persona/reference.jpg +0 -0
- package/public/persona/sample.wav +0 -0
- package/public/persona.html +7 -0
- package/runtime/pi/package-lock.json +1549 -0
- package/runtime/pi/package.json +12 -0
- package/tests/fixtures/voice-question.wav +0 -0
- package/tray/assets/error.ico +0 -0
- package/tray/assets/error.png +0 -0
- package/tray/assets/running.ico +0 -0
- package/tray/assets/running.png +0 -0
- package/tray/assets/starting.ico +0 -0
- package/tray/assets/starting.png +0 -0
- package/tray/assets/stopped.ico +0 -0
- package/tray/assets/stopped.png +0 -0
- package/tray/assets/stopping.ico +0 -0
- package/tray/assets/stopping.png +0 -0
- package/tray/macos.js +72 -0
- package/tray/windows.ps1 +104 -0
- package/voice/realtime/README.md +84 -0
- package/voice/realtime/backend.mjs +81 -0
- package/voice/realtime/native.mjs +210 -0
- package/voice/realtime/peer.d.mts +15 -0
- package/voice/realtime/peer.mjs +116 -0
- package/voice/realtime/probe-browser.mjs +81 -0
- package/voice/realtime/probe-server.mjs +86 -0
- package/voice/realtime/probe.html +11 -0
- package/voice/realtime/probe.mjs +42 -0
- package/voice/realtime/rpc.mjs +118 -0
- package/voice/realtime/setup.mjs +32 -0
- package/voice/tls.mjs +49 -0
- package/dist/db/queries.d.ts +0 -16
- package/dist/db/queries.d.ts.map +0 -1
- package/dist/db/queries.js +0 -91
- package/dist/db/queries.js.map +0 -1
- package/dist/docker/dockerfile.d.ts +0 -50
- package/dist/docker/dockerfile.d.ts.map +0 -1
- package/dist/docker/dockerfile.js +0 -160
- package/dist/docker/dockerfile.js.map +0 -1
- package/dist/docker/manager.d.ts +0 -42
- package/dist/docker/manager.d.ts.map +0 -1
- package/dist/docker/manager.js +0 -421
- package/dist/docker/manager.js.map +0 -1
- package/dist/git/status.d.ts +0 -76
- package/dist/git/status.d.ts.map +0 -1
- package/dist/git/status.js +0 -332
- package/dist/git/status.js.map +0 -1
- package/dist/routes/browse.d.ts.map +0 -1
- package/dist/routes/browse.js +0 -49
- package/dist/routes/browse.js.map +0 -1
- package/dist/routes/git.d.ts +0 -9
- package/dist/routes/git.d.ts.map +0 -1
- package/dist/routes/git.js +0 -338
- package/dist/routes/git.js.map +0 -1
- package/dist/routes/projects.d.ts.map +0 -1
- package/dist/routes/projects.js +0 -220
- package/dist/routes/projects.js.map +0 -1
- package/dist/routes/tasks.d.ts.map +0 -1
- package/dist/routes/tasks.js +0 -313
- package/dist/routes/tasks.js.map +0 -1
- package/draken.dockerfile.template +0 -18
- package/public/assets/index-3ngsG5kF.css +0 -1
- package/public/assets/index-B3YSD0ee.js +0 -252
package/dist/docker/manager.js
DELETED
|
@@ -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"}
|
package/dist/git/status.d.ts
DELETED
|
@@ -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
|
package/dist/git/status.d.ts.map
DELETED
|
@@ -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"}
|