@varveai/adit-cli 0.2.1
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/LICENSE +21 -0
- package/dist/commands/cloud.d.ts +51 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +430 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +30 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +17 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +48 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/diff.d.ts +30 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +265 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +265 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/export.d.ts +24 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +219 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts +12 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +137 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +20 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +110 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/perf.d.ts +19 -0
- package/dist/commands/perf.d.ts.map +1 -0
- package/dist/commands/perf.js +102 -0
- package/dist/commands/perf.js.map +1 -0
- package/dist/commands/plugin.d.ts +28 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +516 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/project-link.d.ts +16 -0
- package/dist/commands/project-link.d.ts.map +1 -0
- package/dist/commands/project-link.js +143 -0
- package/dist/commands/project-link.js.map +1 -0
- package/dist/commands/resume.d.ts +28 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +229 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/revert.d.ts +30 -0
- package/dist/commands/revert.d.ts.map +1 -0
- package/dist/commands/revert.js +271 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/search.d.ts +16 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +72 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/self-update.d.ts +12 -0
- package/dist/commands/self-update.d.ts.map +1 -0
- package/dist/commands/self-update.js +161 -0
- package/dist/commands/self-update.js.map +1 -0
- package/dist/commands/show.d.ts +5 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +86 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +237 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/task.d.ts +18 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +131 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/transcript.d.ts +40 -0
- package/dist/commands/transcript.d.ts.map +1 -0
- package/dist/commands/transcript.js +275 -0
- package/dist/commands/transcript.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +385 -0
- package/dist/index.js.map +1 -0
- package/dist/tui/App.d.ts +8 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +132 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/components/DiffView.d.ts +11 -0
- package/dist/tui/components/DiffView.d.ts.map +1 -0
- package/dist/tui/components/DiffView.js +29 -0
- package/dist/tui/components/DiffView.js.map +1 -0
- package/dist/tui/components/EventDetail.d.ts +11 -0
- package/dist/tui/components/EventDetail.d.ts.map +1 -0
- package/dist/tui/components/EventDetail.js +36 -0
- package/dist/tui/components/EventDetail.js.map +1 -0
- package/dist/tui/components/EventList.d.ts +15 -0
- package/dist/tui/components/EventList.d.ts.map +1 -0
- package/dist/tui/components/EventList.js +77 -0
- package/dist/tui/components/EventList.js.map +1 -0
- package/dist/tui/components/FilterBar.d.ts +12 -0
- package/dist/tui/components/FilterBar.d.ts.map +1 -0
- package/dist/tui/components/FilterBar.js +20 -0
- package/dist/tui/components/FilterBar.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +16 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/tui/components/StatusBar.js +13 -0
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/dist/tui/hooks/useKeyboard.d.ts +22 -0
- package/dist/tui/hooks/useKeyboard.d.ts.map +1 -0
- package/dist/tui/hooks/useKeyboard.js +64 -0
- package/dist/tui/hooks/useKeyboard.js.map +1 -0
- package/dist/tui/hooks/useTimeline.d.ts +31 -0
- package/dist/tui/hooks/useTimeline.d.ts.map +1 -0
- package/dist/tui/hooks/useTimeline.js +136 -0
- package/dist/tui/hooks/useTimeline.js.map +1 -0
- package/dist/tui/index.d.ts +5 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +10 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/screens/DiffScreen.d.ts +12 -0
- package/dist/tui/screens/DiffScreen.d.ts.map +1 -0
- package/dist/tui/screens/DiffScreen.js +25 -0
- package/dist/tui/screens/DiffScreen.js.map +1 -0
- package/dist/tui/screens/EnvScreen.d.ts +11 -0
- package/dist/tui/screens/EnvScreen.d.ts.map +1 -0
- package/dist/tui/screens/EnvScreen.js +25 -0
- package/dist/tui/screens/EnvScreen.js.map +1 -0
- package/dist/tui/screens/SearchScreen.d.ts +13 -0
- package/dist/tui/screens/SearchScreen.d.ts.map +1 -0
- package/dist/tui/screens/SearchScreen.js +56 -0
- package/dist/tui/screens/SearchScreen.js.map +1 -0
- package/dist/tui/screens/TimelineScreen.d.ts +19 -0
- package/dist/tui/screens/TimelineScreen.d.ts.map +1 -0
- package/dist/tui/screens/TimelineScreen.js +10 -0
- package/dist/tui/screens/TimelineScreen.js.map +1 -0
- package/dist/utils/format.d.ts +23 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +65 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/summary.d.ts +26 -0
- package/dist/utils/summary.d.ts.map +1 -0
- package/dist/utils/summary.js +87 -0
- package/dist/utils/summary.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +11 -0
- package/dist/version.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 vkenliu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adit cloud` — Cloud sync commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* login — Authenticate via device code flow
|
|
6
|
+
* logout — Clear stored credentials
|
|
7
|
+
* sync — Push unsynced records to cloud
|
|
8
|
+
* status — Show sync state and unsynced count
|
|
9
|
+
* reset-credentials — Force-clear all credentials and sync state
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* `adit cloud login` — Interactive device authorization flow.
|
|
13
|
+
*/
|
|
14
|
+
export declare function cloudLoginCommand(opts?: {
|
|
15
|
+
server?: string;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* `adit cloud logout` — Clear stored credentials.
|
|
19
|
+
*/
|
|
20
|
+
export declare function cloudLogoutCommand(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* `adit cloud sync` — Push unsynced records to cloud.
|
|
23
|
+
*/
|
|
24
|
+
export declare function cloudSyncCommand(opts?: {
|
|
25
|
+
json?: boolean;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* `adit cloud status` — Show sync state and unsynced record count.
|
|
29
|
+
*/
|
|
30
|
+
export declare function cloudStatusCommand(opts?: {
|
|
31
|
+
json?: boolean;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* `adit cloud auth-token <token>` — Authenticate with a static JWT token.
|
|
35
|
+
*
|
|
36
|
+
* Server URL: ADIT_CLOUD_URL env > DEFAULT_SERVER_URL.
|
|
37
|
+
* If device-code (login) credentials already exist, rejects —
|
|
38
|
+
* login credentials take priority.
|
|
39
|
+
*/
|
|
40
|
+
export declare function cloudAuthTokenCommand(token: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* `adit cloud reset-credentials` — Force-clear all credentials and sync state.
|
|
43
|
+
*
|
|
44
|
+
* Unlike logout, this does not attempt to revoke the token on the server.
|
|
45
|
+
* It simply wipes all local credential and sync state, allowing the client
|
|
46
|
+
* to connect to any cloud server again.
|
|
47
|
+
*/
|
|
48
|
+
export declare function cloudResetCredentialsCommand(opts?: {
|
|
49
|
+
yes?: boolean;
|
|
50
|
+
}): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0BH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFhB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCxD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6LhB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DxE;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,IAAI,CAAC,EAAE;IACxD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adit cloud` — Cloud sync commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* login — Authenticate via device code flow
|
|
6
|
+
* logout — Clear stored credentials
|
|
7
|
+
* sync — Push unsynced records to cloud
|
|
8
|
+
* status — Show sync state and unsynced count
|
|
9
|
+
* reset-credentials — Force-clear all credentials and sync state
|
|
10
|
+
*/
|
|
11
|
+
import { loadConfig, openDatabase, closeDatabase } from "@varveai/adit-core";
|
|
12
|
+
import { loadCloudConfig, loadCredentials, saveCredentials, clearCredentials, isTokenExpired, requestDeviceCode, pollForToken, CloudClient, SyncEngine, countUnsyncedRecords, CloudAuthError, CloudNetworkError, CloudApiError, clearSyncErrors, isSyncDisabled, DEFAULT_SERVER_URL, } from "@varveai/adit-cloud";
|
|
13
|
+
import { createHash } from "node:crypto";
|
|
14
|
+
import { hostname } from "node:os";
|
|
15
|
+
import { CLI_VERSION } from "../version.js";
|
|
16
|
+
/**
|
|
17
|
+
* `adit cloud login` — Interactive device authorization flow.
|
|
18
|
+
*/
|
|
19
|
+
export async function cloudLoginCommand(opts) {
|
|
20
|
+
const serverUrl = opts?.server ?? process.env.ADIT_CLOUD_URL ?? DEFAULT_SERVER_URL;
|
|
21
|
+
const config = loadConfig();
|
|
22
|
+
// Single-server binding: reject login if already bound to a different server
|
|
23
|
+
const existingCredentials = loadCredentials();
|
|
24
|
+
if (existingCredentials && existingCredentials.serverUrl !== serverUrl) {
|
|
25
|
+
console.error(`Already authenticated with ${existingCredentials.serverUrl}.`);
|
|
26
|
+
console.error("A client can only be connected to one cloud server at a time.");
|
|
27
|
+
console.error("Run 'adit cloud reset-credentials' first to disconnect, then try again.");
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log(`Connecting to ${serverUrl}...`);
|
|
32
|
+
console.log();
|
|
33
|
+
// Build machine identifier (deterministic per-machine)
|
|
34
|
+
const machineId = createHash("sha256")
|
|
35
|
+
.update(`${hostname()}-${config.clientId}`)
|
|
36
|
+
.digest("hex")
|
|
37
|
+
.substring(0, 32);
|
|
38
|
+
const authOptions = {
|
|
39
|
+
machineId,
|
|
40
|
+
platform: `${process.platform}-${process.arch}`,
|
|
41
|
+
aditVersion: CLI_VERSION,
|
|
42
|
+
displayName: hostname(),
|
|
43
|
+
};
|
|
44
|
+
try {
|
|
45
|
+
// Step 1: Request device code
|
|
46
|
+
const deviceCode = await requestDeviceCode(serverUrl, authOptions);
|
|
47
|
+
console.log("To authenticate, open this URL in your browser:");
|
|
48
|
+
console.log(` ${deviceCode.verificationUrl}`);
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(`Then enter this code: ${deviceCode.userCode}`);
|
|
51
|
+
console.log();
|
|
52
|
+
console.log("Waiting for approval... (press Ctrl+C to cancel)");
|
|
53
|
+
// Step 2: Poll for approval
|
|
54
|
+
const tokenResponse = await pollForToken(serverUrl, deviceCode.deviceCode);
|
|
55
|
+
// Step 3: Save credentials
|
|
56
|
+
const expiresAt = new Date(Date.now() + 60 * 60 * 1000).toISOString();
|
|
57
|
+
saveCredentials({
|
|
58
|
+
accessToken: tokenResponse.accessToken,
|
|
59
|
+
refreshToken: tokenResponse.refreshToken,
|
|
60
|
+
clientId: tokenResponse.clientId,
|
|
61
|
+
expiresAt: tokenResponse.expiresAt ?? expiresAt,
|
|
62
|
+
serverUrl,
|
|
63
|
+
});
|
|
64
|
+
// Reset any error state from previous sync failures
|
|
65
|
+
clearSyncErrors();
|
|
66
|
+
console.log();
|
|
67
|
+
console.log("Authenticated successfully.");
|
|
68
|
+
console.log(`Client ID: ${tokenResponse.clientId}`);
|
|
69
|
+
console.log("Credentials saved to ~/.adit/cloud-credentials.json");
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof CloudApiError) {
|
|
73
|
+
console.error(`Login failed: ${error.message}`);
|
|
74
|
+
}
|
|
75
|
+
else if (error instanceof CloudNetworkError) {
|
|
76
|
+
console.error(`Cannot reach ${serverUrl}: ${error.message}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.error(`Login failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
80
|
+
}
|
|
81
|
+
process.exitCode = 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* `adit cloud logout` — Clear stored credentials.
|
|
86
|
+
*/
|
|
87
|
+
export async function cloudLogoutCommand() {
|
|
88
|
+
const credentials = loadCredentials();
|
|
89
|
+
if (!credentials) {
|
|
90
|
+
console.log("Not logged in to any cloud server.");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Try to revoke the refresh token on the server
|
|
94
|
+
try {
|
|
95
|
+
const client = new CloudClient(credentials.serverUrl, credentials);
|
|
96
|
+
await client.post("/api/auth/token/revoke", {
|
|
97
|
+
refreshToken: credentials.refreshToken,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Best-effort revocation — don't block logout on network errors
|
|
102
|
+
}
|
|
103
|
+
// Clear local sync state
|
|
104
|
+
const config = loadConfig();
|
|
105
|
+
try {
|
|
106
|
+
const db = openDatabase(config.dbPath);
|
|
107
|
+
try {
|
|
108
|
+
const { clearSyncState } = await import("@varveai/adit-core");
|
|
109
|
+
clearSyncState(db, credentials.serverUrl);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
closeDatabase(db);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Database may not exist
|
|
117
|
+
}
|
|
118
|
+
clearCredentials();
|
|
119
|
+
console.log("Logged out. Credentials cleared.");
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* `adit cloud sync` — Push unsynced records to cloud.
|
|
123
|
+
*/
|
|
124
|
+
export async function cloudSyncCommand(opts) {
|
|
125
|
+
const cloudConfig = loadCloudConfig();
|
|
126
|
+
const credentials = loadCredentials();
|
|
127
|
+
if (!credentials) {
|
|
128
|
+
const msg = "Not logged in. Run 'adit cloud login' or 'adit cloud auth-token <jwt>' first.";
|
|
129
|
+
if (opts?.json) {
|
|
130
|
+
console.log(JSON.stringify({ error: msg }));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
console.error(msg);
|
|
134
|
+
}
|
|
135
|
+
process.exitCode = 1;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Re-enable sync if circuit breaker was tripped (manual sync = user intent)
|
|
139
|
+
if (isSyncDisabled()) {
|
|
140
|
+
clearSyncErrors();
|
|
141
|
+
}
|
|
142
|
+
const serverUrl = cloudConfig.serverUrl ?? credentials.serverUrl;
|
|
143
|
+
const config = loadConfig();
|
|
144
|
+
if (!opts?.json) {
|
|
145
|
+
console.log(`Syncing with ${serverUrl}...`);
|
|
146
|
+
}
|
|
147
|
+
const db = openDatabase(config.dbPath);
|
|
148
|
+
try {
|
|
149
|
+
const client = new CloudClient(serverUrl, credentials);
|
|
150
|
+
const engine = new SyncEngine(db, client, {
|
|
151
|
+
projectId: config.projectId,
|
|
152
|
+
batchSize: cloudConfig.batchSize,
|
|
153
|
+
serverUrl,
|
|
154
|
+
cloudClientId: credentials.clientId,
|
|
155
|
+
});
|
|
156
|
+
const result = await engine.sync();
|
|
157
|
+
if (opts?.json) {
|
|
158
|
+
console.log(JSON.stringify(result, null, 2));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (result.batches === 0) {
|
|
162
|
+
console.log("Already up to date. No records to sync.");
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.log(`Sync complete: ${result.accepted} accepted, ${result.duplicates} duplicates, ${result.conflicts.length} conflicts (${result.batches} batch${result.batches !== 1 ? "es" : ""})`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
const msg = error instanceof CloudAuthError
|
|
171
|
+
? `Authentication failed: ${error.message}. Run 'adit cloud login' to re-authenticate.`
|
|
172
|
+
: error instanceof CloudNetworkError
|
|
173
|
+
? `Network error: ${error.message}`
|
|
174
|
+
: `Sync failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
175
|
+
if (opts?.json) {
|
|
176
|
+
console.log(JSON.stringify({ error: msg }));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.error(msg);
|
|
180
|
+
}
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
closeDatabase(db);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* `adit cloud status` — Show sync state and unsynced record count.
|
|
189
|
+
*/
|
|
190
|
+
export async function cloudStatusCommand(opts) {
|
|
191
|
+
const cloudConfig = loadCloudConfig();
|
|
192
|
+
const credentials = loadCredentials();
|
|
193
|
+
const config = loadConfig();
|
|
194
|
+
// Reset circuit breaker on manual status check
|
|
195
|
+
clearSyncErrors();
|
|
196
|
+
const status = {
|
|
197
|
+
serverUrl: cloudConfig.serverUrl,
|
|
198
|
+
enabled: cloudConfig.enabled,
|
|
199
|
+
autoSync: cloudConfig.autoSync,
|
|
200
|
+
loggedIn: credentials !== null,
|
|
201
|
+
};
|
|
202
|
+
if (credentials) {
|
|
203
|
+
status.authType = credentials.authType ?? "device";
|
|
204
|
+
status.clientId = credentials.clientId;
|
|
205
|
+
status.tokenExpired = isTokenExpired(credentials);
|
|
206
|
+
}
|
|
207
|
+
// Check server reachability
|
|
208
|
+
const serverUrl = cloudConfig.serverUrl ?? credentials?.serverUrl;
|
|
209
|
+
if (serverUrl && credentials) {
|
|
210
|
+
try {
|
|
211
|
+
const client = new CloudClient(serverUrl, credentials);
|
|
212
|
+
const params = new URLSearchParams();
|
|
213
|
+
if (config.projectId)
|
|
214
|
+
params.set("projectId", config.projectId);
|
|
215
|
+
const statusPath = params.toString()
|
|
216
|
+
? `/api/sync/status?${params.toString()}`
|
|
217
|
+
: "/api/sync/status";
|
|
218
|
+
const remoteStatus = await client.get(statusPath);
|
|
219
|
+
status.serverOnline = true;
|
|
220
|
+
status.remoteStatus = remoteStatus;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
status.serverOnline = false;
|
|
224
|
+
status.serverError =
|
|
225
|
+
error instanceof CloudNetworkError
|
|
226
|
+
? `unreachable — ${error.cause?.message ?? error.message}`
|
|
227
|
+
: error instanceof CloudAuthError
|
|
228
|
+
? `auth failed — ${error.message}`
|
|
229
|
+
: error instanceof CloudApiError
|
|
230
|
+
? `server error — ${error.status} ${error.message}`
|
|
231
|
+
: `error — ${error instanceof Error ? error.message : String(error)}`;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Count unsynced records
|
|
235
|
+
try {
|
|
236
|
+
const db = openDatabase(config.dbPath);
|
|
237
|
+
try {
|
|
238
|
+
const { getSyncState } = await import("@varveai/adit-core");
|
|
239
|
+
const syncState = getSyncState(db, cloudConfig.serverUrl ?? credentials?.serverUrl ?? "");
|
|
240
|
+
status.syncState = syncState
|
|
241
|
+
? {
|
|
242
|
+
lastSyncedEventId: syncState.lastSyncedEventId,
|
|
243
|
+
lastSyncedAt: syncState.lastSyncedAt,
|
|
244
|
+
syncVersion: syncState.syncVersion,
|
|
245
|
+
}
|
|
246
|
+
: null;
|
|
247
|
+
const unsyncedCount = countUnsyncedRecords(db, syncState?.lastSyncedEventId ?? null, syncState?.lastSyncedAt ?? null, config.projectId);
|
|
248
|
+
status.unsyncedRecords = unsyncedCount;
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
closeDatabase(db);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
status.unsyncedRecords = "unknown";
|
|
256
|
+
}
|
|
257
|
+
if (opts?.json) {
|
|
258
|
+
console.log(JSON.stringify(status, null, 2));
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
console.log("Cloud Sync Status");
|
|
262
|
+
console.log("==================");
|
|
263
|
+
console.log();
|
|
264
|
+
const effectiveServerUrl = cloudConfig.serverUrl ?? credentials?.serverUrl ?? null;
|
|
265
|
+
console.log(`Server: ${effectiveServerUrl ?? "(not configured)"}`);
|
|
266
|
+
console.log(`Enabled: ${cloudConfig.enabled ? "yes" : "no"}`);
|
|
267
|
+
console.log(`Auto-sync: ${cloudConfig.autoSync ? "yes" : "no"}`);
|
|
268
|
+
console.log(`Logged in: ${credentials ? "yes" : "no"}`);
|
|
269
|
+
if (credentials) {
|
|
270
|
+
const authType = credentials.authType ?? "device";
|
|
271
|
+
console.log(`Auth type: ${authType}`);
|
|
272
|
+
console.log(`Client ID: ${credentials.clientId}`);
|
|
273
|
+
if (authType === "token") {
|
|
274
|
+
console.log("Token: static (never expires)");
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
console.log(`Token: ${isTokenExpired(credentials) ? "expired" : "valid"}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Server reachability
|
|
281
|
+
if (status.serverOnline === true) {
|
|
282
|
+
console.log(`Server: \x1b[32monline\x1b[0m`);
|
|
283
|
+
}
|
|
284
|
+
else if (status.serverOnline === false) {
|
|
285
|
+
console.log(`Server: \x1b[31moffline\x1b[0m (${status.serverError})`);
|
|
286
|
+
}
|
|
287
|
+
const syncState = status.syncState;
|
|
288
|
+
if (syncState) {
|
|
289
|
+
console.log(`Last sync: ${syncState.lastSyncedAt ?? "never"}`);
|
|
290
|
+
console.log(`Cursor: ${syncState.lastSyncedEventId ?? "none"}`);
|
|
291
|
+
console.log(`Sync version: ${syncState.syncVersion}`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
console.log("Last sync: never");
|
|
295
|
+
}
|
|
296
|
+
// Show remote cursor comparison when server is online
|
|
297
|
+
const remoteStatus = status.remoteStatus;
|
|
298
|
+
if (remoteStatus) {
|
|
299
|
+
const localCursor = syncState?.lastSyncedEventId ?? null;
|
|
300
|
+
// Prefer per-project cursor when available
|
|
301
|
+
const projectEntry = config.projectId
|
|
302
|
+
? remoteStatus.projectCursors?.[config.projectId]
|
|
303
|
+
: undefined;
|
|
304
|
+
const remoteCursor = projectEntry !== undefined
|
|
305
|
+
? projectEntry.lastSyncedEventId
|
|
306
|
+
: remoteStatus.lastSyncedEventId;
|
|
307
|
+
const cursorSource = projectEntry !== undefined ? "project" : "global";
|
|
308
|
+
if (localCursor !== remoteCursor) {
|
|
309
|
+
console.log(`Remote cursor: ${remoteCursor ?? "none"} (${cursorSource}, differs from local)`);
|
|
310
|
+
}
|
|
311
|
+
if (projectEntry !== undefined) {
|
|
312
|
+
console.log(`Project: ${config.projectId}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
console.log(`Unsynced: ${status.unsyncedRecords} records`);
|
|
316
|
+
// Actionable hints
|
|
317
|
+
if (status.serverOnline === false) {
|
|
318
|
+
console.log();
|
|
319
|
+
console.log("The cloud server is not reachable. Auto-sync will resume when the server is back online.");
|
|
320
|
+
console.log("To retry manually: adit cloud sync");
|
|
321
|
+
}
|
|
322
|
+
else if (status.serverOnline === true &&
|
|
323
|
+
typeof status.unsyncedRecords === "number" &&
|
|
324
|
+
status.unsyncedRecords > 0) {
|
|
325
|
+
console.log();
|
|
326
|
+
console.log(`${status.unsyncedRecords} records pending. Run 'adit cloud sync' to push now.`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* `adit cloud auth-token <token>` — Authenticate with a static JWT token.
|
|
331
|
+
*
|
|
332
|
+
* Server URL: ADIT_CLOUD_URL env > DEFAULT_SERVER_URL.
|
|
333
|
+
* If device-code (login) credentials already exist, rejects —
|
|
334
|
+
* login credentials take priority.
|
|
335
|
+
*/
|
|
336
|
+
export async function cloudAuthTokenCommand(token) {
|
|
337
|
+
const serverUrl = process.env.ADIT_CLOUD_URL ?? DEFAULT_SERVER_URL;
|
|
338
|
+
const config = loadConfig();
|
|
339
|
+
// If device (login) credentials already exist, warn but allow override
|
|
340
|
+
const existingCredentials = loadCredentials();
|
|
341
|
+
if (existingCredentials && existingCredentials.authType !== "token") {
|
|
342
|
+
console.log("Replacing existing login credentials with static token.");
|
|
343
|
+
}
|
|
344
|
+
// Save credentials with local clientId initially
|
|
345
|
+
const credentials = {
|
|
346
|
+
authType: "token",
|
|
347
|
+
accessToken: token,
|
|
348
|
+
refreshToken: "",
|
|
349
|
+
clientId: config.clientId,
|
|
350
|
+
expiresAt: "",
|
|
351
|
+
serverUrl,
|
|
352
|
+
};
|
|
353
|
+
saveCredentials(credentials);
|
|
354
|
+
// Verify token against the server and retrieve server-assigned clientId
|
|
355
|
+
try {
|
|
356
|
+
const client = new CloudClient(serverUrl, credentials);
|
|
357
|
+
const status = await client.get("/api/sync/status");
|
|
358
|
+
if (status.clientId && status.clientId !== config.clientId) {
|
|
359
|
+
// Update with server-assigned clientId
|
|
360
|
+
saveCredentials({ ...credentials, clientId: status.clientId });
|
|
361
|
+
console.log("Token verified successfully.");
|
|
362
|
+
console.log(`Server: ${serverUrl}`);
|
|
363
|
+
console.log(`Client ID: ${status.clientId} (server-assigned)`);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
console.log("Token verified successfully.");
|
|
367
|
+
console.log(`Server: ${serverUrl}`);
|
|
368
|
+
console.log(`Client ID: ${config.clientId}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
// Token saved but verification failed — still usable, warn user
|
|
373
|
+
if (error instanceof CloudAuthError) {
|
|
374
|
+
console.warn(`Warning: Token verification failed (${error.message}). The token may be invalid.`);
|
|
375
|
+
}
|
|
376
|
+
else if (error instanceof CloudNetworkError) {
|
|
377
|
+
console.warn(`Warning: Could not reach ${serverUrl} to verify token. Token saved anyway.`);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
console.warn(`Warning: Token verification failed. Token saved anyway.`);
|
|
381
|
+
}
|
|
382
|
+
console.log(`Server: ${serverUrl}`);
|
|
383
|
+
console.log(`Client ID: ${config.clientId}`);
|
|
384
|
+
}
|
|
385
|
+
// Reset any error state from previous sync failures
|
|
386
|
+
clearSyncErrors();
|
|
387
|
+
console.log("Credentials saved to ~/.adit/cloud-credentials.json");
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* `adit cloud reset-credentials` — Force-clear all credentials and sync state.
|
|
391
|
+
*
|
|
392
|
+
* Unlike logout, this does not attempt to revoke the token on the server.
|
|
393
|
+
* It simply wipes all local credential and sync state, allowing the client
|
|
394
|
+
* to connect to any cloud server again.
|
|
395
|
+
*/
|
|
396
|
+
export async function cloudResetCredentialsCommand(opts) {
|
|
397
|
+
const credentials = loadCredentials();
|
|
398
|
+
if (!credentials) {
|
|
399
|
+
console.log("No credentials stored. Nothing to reset.");
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
if (!opts?.yes) {
|
|
403
|
+
console.log(`This will remove all stored credentials for ${credentials.serverUrl}.`);
|
|
404
|
+
console.log("Local sync state will also be cleared.");
|
|
405
|
+
console.log("You will need to run 'adit cloud login' to reconnect to any server.");
|
|
406
|
+
console.log();
|
|
407
|
+
console.log("Run with --yes to confirm.");
|
|
408
|
+
process.exitCode = 1;
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
// Clear local sync state
|
|
412
|
+
const config = loadConfig();
|
|
413
|
+
try {
|
|
414
|
+
const db = openDatabase(config.dbPath);
|
|
415
|
+
try {
|
|
416
|
+
const { clearSyncState } = await import("@varveai/adit-core");
|
|
417
|
+
clearSyncState(db, credentials.serverUrl);
|
|
418
|
+
}
|
|
419
|
+
finally {
|
|
420
|
+
closeDatabase(db);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// Database may not exist yet
|
|
425
|
+
}
|
|
426
|
+
clearCredentials();
|
|
427
|
+
console.log("Credentials and sync state cleared.");
|
|
428
|
+
console.log("You can now connect to any cloud server with 'adit cloud login'.");
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,0CAA0C;AAC1C,wBAAsB,aAAa,CACjC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adit config` — View and manage ADIT configuration.
|
|
3
|
+
*/
|
|
4
|
+
import { loadConfig } from "@varveai/adit-core";
|
|
5
|
+
/** `adit config` — show current config */
|
|
6
|
+
export async function configCommand(opts) {
|
|
7
|
+
const config = loadConfig();
|
|
8
|
+
if (opts?.json) {
|
|
9
|
+
console.log(JSON.stringify(configToPlain(config), null, 2));
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
console.log("ADIT Configuration\n");
|
|
13
|
+
console.log(` Project root: ${config.projectRoot}`);
|
|
14
|
+
console.log(` Data directory: ${config.dataDir}`);
|
|
15
|
+
console.log(` Database: ${config.dbPath}`);
|
|
16
|
+
console.log(` Project ID: ${config.projectId}`);
|
|
17
|
+
console.log(` Client ID: ${config.clientId}`);
|
|
18
|
+
console.log(` Capture env: ${config.captureEnv}`);
|
|
19
|
+
}
|
|
20
|
+
function configToPlain(config) {
|
|
21
|
+
return {
|
|
22
|
+
projectRoot: config.projectRoot,
|
|
23
|
+
dataDir: config.dataDir,
|
|
24
|
+
dbPath: config.dbPath,
|
|
25
|
+
projectId: config.projectId,
|
|
26
|
+
clientId: config.clientId,
|
|
27
|
+
captureEnv: config.captureEnv,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAEjE,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAyB;IAEzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,MAAkB;IACvC,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adit db` — Database management commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* clear-events — Delete all events, sessions, diffs, and env snapshots
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* `adit db clear-events` — Clear all local events and related data.
|
|
9
|
+
*
|
|
10
|
+
* Deletes events, diffs, env snapshots, sessions, and resets sync cursors
|
|
11
|
+
* for the current project. This is irreversible.
|
|
12
|
+
*/
|
|
13
|
+
export declare function dbClearEventsCommand(opts?: {
|
|
14
|
+
yes?: boolean;
|
|
15
|
+
json?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAChD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqChB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adit db` — Database management commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* clear-events — Delete all events, sessions, diffs, and env snapshots
|
|
6
|
+
*/
|
|
7
|
+
import { loadConfig, openDatabase, closeDatabase, clearEvents, countEvents } from "@varveai/adit-core";
|
|
8
|
+
/**
|
|
9
|
+
* `adit db clear-events` — Clear all local events and related data.
|
|
10
|
+
*
|
|
11
|
+
* Deletes events, diffs, env snapshots, sessions, and resets sync cursors
|
|
12
|
+
* for the current project. This is irreversible.
|
|
13
|
+
*/
|
|
14
|
+
export async function dbClearEventsCommand(opts) {
|
|
15
|
+
const config = loadConfig();
|
|
16
|
+
const db = openDatabase(config.dbPath);
|
|
17
|
+
try {
|
|
18
|
+
const eventCount = countEvents(db, config.projectId);
|
|
19
|
+
if (eventCount === 0) {
|
|
20
|
+
if (opts?.json) {
|
|
21
|
+
console.log(JSON.stringify({ deleted: 0, message: "No events to clear." }));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log("No events to clear.");
|
|
25
|
+
}
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!opts?.yes) {
|
|
29
|
+
console.log(`This will permanently delete ${eventCount} events and all associated data (diffs, sessions, env snapshots).`);
|
|
30
|
+
console.log("Sync cursors will also be reset.");
|
|
31
|
+
console.log();
|
|
32
|
+
console.log("Run with --yes to confirm, or pass --json for scripted use.");
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const deleted = clearEvents(db, config.projectId);
|
|
37
|
+
if (opts?.json) {
|
|
38
|
+
console.log(JSON.stringify({ deleted, message: "Events cleared." }));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log(`Cleared ${deleted} events and all associated data.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
closeDatabase(db);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEvG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAG1C;IACC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAErD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,gCAAgC,UAAU,mEAAmE,CAC9G,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,kCAAkC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
|