antri_cli 1.57.43 → 1.57.44
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/dist/cloud/firestore.d.ts +2 -0
- package/dist/cloud/firestore.d.ts.map +1 -1
- package/dist/cloud/firestore.js +49 -55
- package/dist/cloud/firestore.js.map +1 -1
- package/dist/core/updater.d.ts +1 -1
- package/dist/core/updater.js +1 -1
- package/dist/desktop/public/app.js +7 -3
- package/dist/desktop/public/index.html +3 -3
- package/package.json +1 -1
|
@@ -22,6 +22,7 @@ export declare class FirestoreSyncManager {
|
|
|
22
22
|
count: number;
|
|
23
23
|
notesSynced?: boolean;
|
|
24
24
|
total?: number;
|
|
25
|
+
syncKey?: string;
|
|
25
26
|
error?: string;
|
|
26
27
|
}>;
|
|
27
28
|
/**
|
|
@@ -32,6 +33,7 @@ export declare class FirestoreSyncManager {
|
|
|
32
33
|
count: number;
|
|
33
34
|
notesSynced?: boolean;
|
|
34
35
|
total?: number;
|
|
36
|
+
syncKey?: string;
|
|
35
37
|
error?: string;
|
|
36
38
|
}>;
|
|
37
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.d.ts","sourceRoot":"","sources":["../../src/cloud/firestore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firestore.d.ts","sourceRoot":"","sources":["../../src/cloud/firestore.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;WAIlB,aAAa,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;WAiC7F,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,SAAiB,EAAE,MAAM,SAAK,GAAG,IAAI;IAW5F;;OAEG;WACiB,eAAe,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyE5J;;OAEG;WACiB,iBAAiB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsE9J;;OAEG;WACiB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;mBAsBtF,WAAW;CAmBjC"}
|
package/dist/cloud/firestore.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import os from 'os';
|
|
4
|
-
import https from 'https';
|
|
5
4
|
import { profileManager } from '../profiles/profileManager.js';
|
|
5
|
+
import { configManager } from '../core/config.js';
|
|
6
|
+
import { AuthManager } from './auth.js';
|
|
6
7
|
export class FirestoreSyncManager {
|
|
7
8
|
static getSyncConfigFile() {
|
|
8
9
|
return path.join(os.homedir(), '.antri', 'cloud_sync.json');
|
|
@@ -10,7 +11,7 @@ export class FirestoreSyncManager {
|
|
|
10
11
|
static getSyncConfig() {
|
|
11
12
|
let storedSyncKey = 'default_user';
|
|
12
13
|
let storedProjectId = 'antri-agentic-hackathon';
|
|
13
|
-
let storedApiKey = process.env.GEMINI_API_KEY || '';
|
|
14
|
+
let storedApiKey = configManager.get()?.apiKeys?.gemini || process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY || '';
|
|
14
15
|
let lastSynced;
|
|
15
16
|
const filePath = this.getSyncConfigFile();
|
|
16
17
|
if (fs.existsSync(filePath)) {
|
|
@@ -18,7 +19,7 @@ export class FirestoreSyncManager {
|
|
|
18
19
|
const cfg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
19
20
|
if (cfg.projectId)
|
|
20
21
|
storedProjectId = cfg.projectId;
|
|
21
|
-
if (cfg.syncKey)
|
|
22
|
+
if (cfg.syncKey && cfg.syncKey !== 'default_user')
|
|
22
23
|
storedSyncKey = cfg.syncKey;
|
|
23
24
|
if (cfg.apiKey)
|
|
24
25
|
storedApiKey = cfg.apiKey;
|
|
@@ -27,21 +28,14 @@ export class FirestoreSyncManager {
|
|
|
27
28
|
}
|
|
28
29
|
catch (_) { }
|
|
29
30
|
}
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const authData = JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
36
|
-
const user = authData.user || authData;
|
|
37
|
-
if (user && user.email && typeof user.email === 'string') {
|
|
38
|
-
const clean = user.email.toLowerCase().trim();
|
|
39
|
-
storedSyncKey = user.userId || clean.replace(/[^a-z0-9_]/g, '_');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
31
|
+
// Bind dynamically to current authenticated user partition if logged in
|
|
32
|
+
try {
|
|
33
|
+
const user = AuthManager.getCurrentUser();
|
|
34
|
+
if (user && user.email && user.email.includes('@')) {
|
|
35
|
+
storedSyncKey = user.userId || AuthManager.generateUserId(user.email);
|
|
42
36
|
}
|
|
43
|
-
catch (_) { }
|
|
44
37
|
}
|
|
38
|
+
catch (_) { }
|
|
45
39
|
return {
|
|
46
40
|
projectId: process.env.GOOGLE_CLOUD_PROJECT || process.env.GCP_PROJECT || storedProjectId,
|
|
47
41
|
syncKey: storedSyncKey,
|
|
@@ -124,20 +118,21 @@ export class FirestoreSyncManager {
|
|
|
124
118
|
catch { }
|
|
125
119
|
}
|
|
126
120
|
this.saveSyncConfig(targetProject, syncKey, apiKey);
|
|
127
|
-
return { success: true, count: profileCount, notesSynced, total: profileCount + (notesSynced ? 1 : 0) };
|
|
121
|
+
return { success: true, count: profileCount, notesSynced, total: profileCount + (notesSynced ? 1 : 0), syncKey };
|
|
128
122
|
}
|
|
129
123
|
/**
|
|
130
124
|
* Pull profiles from Google Cloud Firestore to local profile directory
|
|
131
125
|
*/
|
|
132
126
|
static async pullFromFirestore() {
|
|
133
|
-
const { projectId, syncKey } = this.getSyncConfig();
|
|
127
|
+
const { projectId, syncKey, apiKey } = this.getSyncConfig();
|
|
134
128
|
const targetProject = projectId || 'antri-agentic-hackathon';
|
|
135
|
-
const
|
|
129
|
+
const keyParam = apiKey ? `?key=${apiKey}` : '';
|
|
130
|
+
const url = `https://firestore.googleapis.com/v1/projects/${targetProject}/databases/(default)/documents/antri_sync/${syncKey}/profiles${keyParam}`;
|
|
136
131
|
try {
|
|
137
132
|
const dir = profileManager.getProfilesDir();
|
|
138
133
|
if (!fs.existsSync(dir))
|
|
139
134
|
fs.mkdirSync(dir, { recursive: true });
|
|
140
|
-
|
|
135
|
+
const pulledProfileNames = new Set();
|
|
141
136
|
let notesSynced = false;
|
|
142
137
|
let firstProfileName = '';
|
|
143
138
|
// First check local published partition store if available
|
|
@@ -151,12 +146,14 @@ export class FirestoreSyncManager {
|
|
|
151
146
|
notesSynced = true;
|
|
152
147
|
}
|
|
153
148
|
else {
|
|
154
|
-
|
|
149
|
+
const clean = f.replace(/\.md$/, '');
|
|
150
|
+
pulledProfileNames.add(clean);
|
|
155
151
|
if (!firstProfileName)
|
|
156
|
-
firstProfileName =
|
|
152
|
+
firstProfileName = clean;
|
|
157
153
|
}
|
|
158
154
|
}
|
|
159
155
|
}
|
|
156
|
+
// Next query Google Cloud Firestore REST API
|
|
160
157
|
try {
|
|
161
158
|
const raw = await this.httpRequest(url, 'GET');
|
|
162
159
|
const data = JSON.parse(raw);
|
|
@@ -174,6 +171,7 @@ export class FirestoreSyncManager {
|
|
|
174
171
|
notesSynced = true;
|
|
175
172
|
}
|
|
176
173
|
else {
|
|
174
|
+
pulledProfileNames.add(cleanName);
|
|
177
175
|
if (!firstProfileName)
|
|
178
176
|
firstProfileName = cleanName;
|
|
179
177
|
}
|
|
@@ -184,11 +182,12 @@ export class FirestoreSyncManager {
|
|
|
184
182
|
if (firstProfileName) {
|
|
185
183
|
profileManager.setActiveProfile(firstProfileName);
|
|
186
184
|
}
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
const totalProfiles = pulledProfileNames.size;
|
|
186
|
+
this.saveSyncConfig(targetProject, syncKey, apiKey);
|
|
187
|
+
return { success: true, count: totalProfiles, notesSynced, total: totalProfiles + (notesSynced ? 1 : 0), syncKey };
|
|
189
188
|
}
|
|
190
189
|
catch (err) {
|
|
191
|
-
return { success: false, count: 0, error: err.message };
|
|
190
|
+
return { success: false, count: 0, error: err.message, syncKey };
|
|
192
191
|
}
|
|
193
192
|
}
|
|
194
193
|
/**
|
|
@@ -199,6 +198,14 @@ export class FirestoreSyncManager {
|
|
|
199
198
|
const targetProject = projectId || 'antri-agentic-hackathon';
|
|
200
199
|
const cleanName = profileName.replace(/\.md$/, '').trim();
|
|
201
200
|
const keyParam = apiKey ? `?key=${apiKey}` : '';
|
|
201
|
+
// Remove from local published partition
|
|
202
|
+
const publishedFile = path.join(os.homedir(), '.antri', 'partitions', syncKey, 'published_profiles', `${cleanName}.md`);
|
|
203
|
+
if (fs.existsSync(publishedFile)) {
|
|
204
|
+
try {
|
|
205
|
+
fs.unlinkSync(publishedFile);
|
|
206
|
+
}
|
|
207
|
+
catch (_) { }
|
|
208
|
+
}
|
|
202
209
|
const url = `https://firestore.googleapis.com/v1/projects/${targetProject}/databases/(default)/documents/antri_sync/${syncKey}/profiles/${cleanName}${keyParam}`;
|
|
203
210
|
try {
|
|
204
211
|
await this.httpRequest(url, 'DELETE');
|
|
@@ -208,36 +215,23 @@ export class FirestoreSyncManager {
|
|
|
208
215
|
return { success: false, error: err.message };
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
|
-
static httpRequest(urlStr, method, body) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
229
|
-
resolve(resBody);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
reject(new Error(`HTTP ${res.statusCode}: ${resBody}`));
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
req.on('error', (e) => reject(e));
|
|
237
|
-
if (body)
|
|
238
|
-
req.write(body);
|
|
239
|
-
req.end();
|
|
240
|
-
});
|
|
218
|
+
static async httpRequest(urlStr, method, body) {
|
|
219
|
+
const options = {
|
|
220
|
+
method,
|
|
221
|
+
headers: {
|
|
222
|
+
'Content-Type': 'application/json',
|
|
223
|
+
},
|
|
224
|
+
signal: AbortSignal.timeout(8000),
|
|
225
|
+
};
|
|
226
|
+
if (body) {
|
|
227
|
+
options.body = body;
|
|
228
|
+
}
|
|
229
|
+
const response = await fetch(urlStr, options);
|
|
230
|
+
if (!response.ok) {
|
|
231
|
+
const errText = await response.text().catch(() => '');
|
|
232
|
+
throw new Error(`HTTP ${response.status}: ${errText || response.statusText}`);
|
|
233
|
+
}
|
|
234
|
+
return response.text();
|
|
241
235
|
}
|
|
242
236
|
}
|
|
243
237
|
//# sourceMappingURL=firestore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../src/cloud/firestore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../src/cloud/firestore.ts"],"names":[],"mappings":"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"}
|
package/dist/core/updater.d.ts
CHANGED
package/dist/core/updater.js
CHANGED
|
@@ -5,7 +5,7 @@ import ora from 'ora';
|
|
|
5
5
|
const execPromise = util.promisify(exec);
|
|
6
6
|
export class Updater {
|
|
7
7
|
static PACKAGE_NAME = 'antri_cli';
|
|
8
|
-
static CURRENT_VERSION = '1.57.
|
|
8
|
+
static CURRENT_VERSION = '1.57.44';
|
|
9
9
|
/**
|
|
10
10
|
* Fetches latest release version directly from registry.npmjs.org (cache-free)
|
|
11
11
|
*/
|
|
@@ -1356,7 +1356,8 @@ async function pushProfilesToCloud() {
|
|
|
1356
1356
|
const res = await fetch('/api/profile/push', { method: 'POST' });
|
|
1357
1357
|
const data = await res.json();
|
|
1358
1358
|
if (data.success) {
|
|
1359
|
-
const
|
|
1359
|
+
const userTag = data.syncKey ? ` [${data.syncKey}]` : '';
|
|
1360
|
+
const msg = `Pushed ${data.count} profile(s)${data.notesSynced ? ' & notes.md' : ''} to Google Cloud Firestore${userTag}.`;
|
|
1360
1361
|
showToast(msg);
|
|
1361
1362
|
} else {
|
|
1362
1363
|
showToast(`Push failed: ${data.error || 'Check network connection'}`, true);
|
|
@@ -1373,10 +1374,13 @@ async function pullProfilesFromCloud() {
|
|
|
1373
1374
|
const data = await res.json();
|
|
1374
1375
|
if (data.success) {
|
|
1375
1376
|
await loadProfiles();
|
|
1376
|
-
const
|
|
1377
|
+
const userTag = data.syncKey ? ` [${data.syncKey}]` : '';
|
|
1378
|
+
const msg = data.count > 0 || data.notesSynced
|
|
1379
|
+
? `Pulled ${data.count} profile(s)${data.notesSynced ? ' & notes.md' : ''} from Google Cloud Firestore${userTag}.`
|
|
1380
|
+
: `Partition in sync (0 new remote profiles)${userTag}.`;
|
|
1377
1381
|
showToast(msg);
|
|
1378
1382
|
} else {
|
|
1379
|
-
showToast(`Pull
|
|
1383
|
+
showToast(`Pull note: ${data.error || 'Check network connection'}`, true);
|
|
1380
1384
|
}
|
|
1381
1385
|
} catch (err) {
|
|
1382
1386
|
showToast(`Pull failed: ${err.message}`, true);
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<header class="app-header">
|
|
16
16
|
<div class="brand-zone">
|
|
17
17
|
<span class="logo-text">ANTRI</span>
|
|
18
|
-
<span class="version-tag">v1.57.
|
|
18
|
+
<span class="version-tag">v1.57.44</span>
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
<!-- Mode Toggle -->
|
|
@@ -313,9 +313,9 @@
|
|
|
313
313
|
</div>
|
|
314
314
|
</div>
|
|
315
315
|
|
|
316
|
-
<!-- 1-Click
|
|
316
|
+
<!-- 1-Click Architecture Presets -->
|
|
317
317
|
<div class="swarm-presets-bar">
|
|
318
|
-
<span class="presets-label">⚡
|
|
318
|
+
<span class="presets-label">⚡ Quickstart Architecture Presets:</span>
|
|
319
319
|
<button class="swarm-preset-btn" onclick="setSwarmPreset('Design and implement a high-throughput distributed Rate Limiter with Redis token-bucket algorithm & sliding window in TypeScript')">⚡ Distributed Rate Limiter</button>
|
|
320
320
|
<button class="swarm-preset-btn" onclick="setSwarmPreset('Architect an end-to-end Zero-Trust OAuth2 authentication microservice with JWT rotation, rate-limiting & threat hardening')">🔐 Zero-Trust Auth Microservice</button>
|
|
321
321
|
<button class="swarm-preset-btn" onclick="setSwarmPreset('Synthesize a high-frequency crypto arbitrage engine with order book depth matching and risk controls')">📈 High-Frequency Arbitrage</button>
|