antri_cli 1.57.45 โ 1.57.46
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/cli/shortcuts.d.ts.map +1 -1
- package/dist/cli/shortcuts.js +45 -21
- package/dist/cli/shortcuts.js.map +1 -1
- package/dist/cloud/firestore.d.ts +6 -3
- package/dist/cloud/firestore.d.ts.map +1 -1
- package/dist/cloud/firestore.js +58 -37
- 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/index.html +32 -32
- package/dist/desktop/public/style.css +229 -56
- package/dist/desktop/server.d.ts.map +1 -1
- package/dist/desktop/server.js +24 -0
- package/dist/desktop/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -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.46</span>
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
<!-- Mode Toggle -->
|
|
@@ -373,12 +373,12 @@
|
|
|
373
373
|
|
|
374
374
|
<!-- Connection Edges (Bezier curves) -->
|
|
375
375
|
<g id="swarm-edges-layer">
|
|
376
|
-
<path id="edge-planner-engineer" d="M
|
|
377
|
-
<path id="edge-planner-security" d="M
|
|
378
|
-
<path id="edge-engineer-qa" d="M
|
|
379
|
-
<path id="edge-engineer-security" d="M 380
|
|
380
|
-
<path id="edge-security-synth" d="M
|
|
381
|
-
<path id="edge-qa-synth" d="M
|
|
376
|
+
<path id="edge-planner-engineer" d="M 150 160 C 230 160, 280 85, 335 85" stroke="#334155" stroke-width="2.5" fill="none" stroke-dasharray="6,4" />
|
|
377
|
+
<path id="edge-planner-security" d="M 150 160 C 230 160, 280 235, 335 235" stroke="#334155" stroke-width="2.5" fill="none" stroke-dasharray="6,4" />
|
|
378
|
+
<path id="edge-engineer-qa" d="M 425 85 L 635 85" stroke="#334155" stroke-width="2.5" fill="none" stroke-dasharray="6,4" />
|
|
379
|
+
<path id="edge-engineer-security" d="M 380 130 L 380 190" stroke="#334155" stroke-width="2" fill="none" stroke-dasharray="4,4" />
|
|
380
|
+
<path id="edge-security-synth" d="M 425 235 C 580 235, 750 195, 845 165" stroke="#334155" stroke-width="2.5" fill="none" stroke-dasharray="6,4" />
|
|
381
|
+
<path id="edge-qa-synth" d="M 725 85 C 785 85, 830 125, 845 150" stroke="#334155" stroke-width="2.5" fill="none" stroke-dasharray="6,4" />
|
|
382
382
|
</g>
|
|
383
383
|
|
|
384
384
|
<!-- Animated Traveling Particle Layer -->
|
|
@@ -387,48 +387,48 @@
|
|
|
387
387
|
<!-- Nodes Layer -->
|
|
388
388
|
<g id="swarm-nodes-layer">
|
|
389
389
|
<!-- Node 1: Architect (Planner) -->
|
|
390
|
-
<g class="swarm-svg-node" id="svg-node-planner" transform="translate(
|
|
391
|
-
<circle class="node-halo" id="halo-planner" r="
|
|
392
|
-
<circle class="node-core" r="
|
|
390
|
+
<g class="swarm-svg-node" id="svg-node-planner" transform="translate(110, 160)" onclick="selectSwarmAgentView('planner')">
|
|
391
|
+
<circle class="node-halo" id="halo-planner" r="46" fill="rgba(56, 189, 248, 0.12)" stroke="#38bdf8" stroke-width="2" />
|
|
392
|
+
<circle class="node-core" r="36" fill="url(#grad-planner)" />
|
|
393
393
|
<text text-anchor="middle" dy="-2" font-size="22">๐ง </text>
|
|
394
|
-
<text text-anchor="middle" dy="
|
|
395
|
-
<text text-anchor="middle" dy="
|
|
394
|
+
<text text-anchor="middle" dy="17" fill="#ffffff" font-size="9.5" font-weight="700">ARCHITECT</text>
|
|
395
|
+
<text text-anchor="middle" dy="60" fill="#94a3b8" font-size="10" font-family="monospace" id="svg-node-planner-status">IDLE</text>
|
|
396
396
|
</g>
|
|
397
397
|
|
|
398
398
|
<!-- Node 2: Systems Engineer -->
|
|
399
|
-
<g class="swarm-svg-node" id="svg-node-engineer" transform="translate(380,
|
|
400
|
-
<circle class="node-halo" id="halo-engineer" r="
|
|
401
|
-
<circle class="node-core" r="
|
|
399
|
+
<g class="swarm-svg-node" id="svg-node-engineer" transform="translate(380, 85)" onclick="selectSwarmAgentView('engineer')">
|
|
400
|
+
<circle class="node-halo" id="halo-engineer" r="46" fill="rgba(168, 85, 247, 0.12)" stroke="#a855f7" stroke-width="2" />
|
|
401
|
+
<circle class="node-core" r="36" fill="url(#grad-engineer)" />
|
|
402
402
|
<text text-anchor="middle" dy="-2" font-size="22">๐ป</text>
|
|
403
|
-
<text text-anchor="middle" dy="
|
|
404
|
-
<text text-anchor="middle" dy="
|
|
403
|
+
<text text-anchor="middle" dy="17" fill="#ffffff" font-size="9.5" font-weight="700">ENGINEER</text>
|
|
404
|
+
<text text-anchor="middle" dy="60" fill="#94a3b8" font-size="10" font-family="monospace" id="svg-node-engineer-status">IDLE</text>
|
|
405
405
|
</g>
|
|
406
406
|
|
|
407
407
|
<!-- Node 3: Security Sentinel -->
|
|
408
|
-
<g class="swarm-svg-node" id="svg-node-security" transform="translate(380,
|
|
409
|
-
<circle class="node-halo" id="halo-security" r="
|
|
410
|
-
<circle class="node-core" r="
|
|
408
|
+
<g class="swarm-svg-node" id="svg-node-security" transform="translate(380, 235)" onclick="selectSwarmAgentView('security')">
|
|
409
|
+
<circle class="node-halo" id="halo-security" r="46" fill="rgba(244, 63, 94, 0.12)" stroke="#f43f5e" stroke-width="2" />
|
|
410
|
+
<circle class="node-core" r="36" fill="url(#grad-security)" />
|
|
411
411
|
<text text-anchor="middle" dy="-2" font-size="22">๐ก๏ธ</text>
|
|
412
|
-
<text text-anchor="middle" dy="
|
|
413
|
-
<text text-anchor="middle" dy="
|
|
412
|
+
<text text-anchor="middle" dy="17" fill="#ffffff" font-size="9.5" font-weight="700">SECURITY</text>
|
|
413
|
+
<text text-anchor="middle" dy="60" fill="#94a3b8" font-size="10" font-family="monospace" id="svg-node-security-status">IDLE</text>
|
|
414
414
|
</g>
|
|
415
415
|
|
|
416
416
|
<!-- Node 4: QA Chaos Tester -->
|
|
417
|
-
<g class="swarm-svg-node" id="svg-node-qa" transform="translate(
|
|
418
|
-
<circle class="node-halo" id="halo-qa" r="
|
|
419
|
-
<circle class="node-core" r="
|
|
417
|
+
<g class="swarm-svg-node" id="svg-node-qa" transform="translate(680, 85)" onclick="selectSwarmAgentView('qa')">
|
|
418
|
+
<circle class="node-halo" id="halo-qa" r="46" fill="rgba(245, 158, 11, 0.12)" stroke="#f59e0b" stroke-width="2" />
|
|
419
|
+
<circle class="node-core" r="36" fill="url(#grad-qa)" />
|
|
420
420
|
<text text-anchor="middle" dy="-2" font-size="22">๐งช</text>
|
|
421
|
-
<text text-anchor="middle" dy="
|
|
422
|
-
<text text-anchor="middle" dy="
|
|
421
|
+
<text text-anchor="middle" dy="17" fill="#ffffff" font-size="9.5" font-weight="700">QA CHAOS</text>
|
|
422
|
+
<text text-anchor="middle" dy="60" fill="#94a3b8" font-size="10" font-family="monospace" id="svg-node-qa-status">IDLE</text>
|
|
423
423
|
</g>
|
|
424
424
|
|
|
425
425
|
<!-- Node 5: Chief Synthesizer -->
|
|
426
|
-
<g class="swarm-svg-node" id="svg-node-synthesizer" transform="translate(
|
|
427
|
-
<circle class="node-halo" id="halo-synthesizer" r="
|
|
428
|
-
<circle class="node-core" r="
|
|
426
|
+
<g class="swarm-svg-node" id="svg-node-synthesizer" transform="translate(890, 160)" onclick="selectSwarmAgentView('synthesizer')">
|
|
427
|
+
<circle class="node-halo" id="halo-synthesizer" r="50" fill="rgba(16, 185, 129, 0.15)" stroke="#10b981" stroke-width="2.5" />
|
|
428
|
+
<circle class="node-core" r="40" fill="url(#grad-synthesizer)" />
|
|
429
429
|
<text text-anchor="middle" dy="-2" font-size="24">โ๏ธ</text>
|
|
430
|
-
<text text-anchor="middle" dy="
|
|
431
|
-
<text text-anchor="middle" dy="
|
|
430
|
+
<text text-anchor="middle" dy="19" fill="#ffffff" font-size="9.5" font-weight="800">SYNTHESIZER</text>
|
|
431
|
+
<text text-anchor="middle" dy="65" fill="#94a3b8" font-size="10" font-family="monospace" id="svg-node-synthesizer-status">IDLE</text>
|
|
432
432
|
</g>
|
|
433
433
|
</g>
|
|
434
434
|
</svg>
|
|
@@ -2297,43 +2297,52 @@ body.antri-app {
|
|
|
2297
2297
|
gap: 8px;
|
|
2298
2298
|
margin-bottom: 16px;
|
|
2299
2299
|
overflow-x: auto;
|
|
2300
|
-
|
|
2300
|
+
.swarm-presets-bar {
|
|
2301
|
+
display: flex;
|
|
2302
|
+
align-items: center;
|
|
2303
|
+
gap: 10px;
|
|
2304
|
+
margin-bottom: 20px;
|
|
2305
|
+
overflow-x: auto;
|
|
2306
|
+
padding: 4px 2px 10px 2px;
|
|
2301
2307
|
}
|
|
2302
2308
|
|
|
2303
2309
|
.presets-label {
|
|
2304
2310
|
font-size: 12px;
|
|
2305
|
-
font-weight:
|
|
2306
|
-
color:
|
|
2311
|
+
font-weight: 700;
|
|
2312
|
+
color: #38bdf8;
|
|
2307
2313
|
white-space: nowrap;
|
|
2314
|
+
letter-spacing: 0.5px;
|
|
2308
2315
|
}
|
|
2309
2316
|
|
|
2310
2317
|
.swarm-preset-btn {
|
|
2311
|
-
background: rgba(
|
|
2312
|
-
border: 1px solid rgba(
|
|
2313
|
-
color:
|
|
2314
|
-
padding:
|
|
2315
|
-
border-radius:
|
|
2318
|
+
background: rgba(15, 23, 42, 0.9);
|
|
2319
|
+
border: 1px solid rgba(56, 189, 248, 0.25);
|
|
2320
|
+
color: #e2e8f0;
|
|
2321
|
+
padding: 7px 15px;
|
|
2322
|
+
border-radius: 20px;
|
|
2316
2323
|
font-size: 12px;
|
|
2317
|
-
font-weight:
|
|
2324
|
+
font-weight: 600;
|
|
2318
2325
|
cursor: pointer;
|
|
2319
2326
|
white-space: nowrap;
|
|
2320
|
-
transition: all 0.2s
|
|
2327
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2328
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
2321
2329
|
}
|
|
2322
2330
|
|
|
2323
2331
|
.swarm-preset-btn:hover {
|
|
2324
|
-
background: rgba(56, 189, 248, 0.
|
|
2325
|
-
border-color:
|
|
2326
|
-
color: #
|
|
2332
|
+
background: rgba(56, 189, 248, 0.22);
|
|
2333
|
+
border-color: #38bdf8;
|
|
2334
|
+
color: #ffffff;
|
|
2327
2335
|
transform: translateY(-1px);
|
|
2336
|
+
box-shadow: 0 4px 14px rgba(56, 189, 248, 0.3);
|
|
2328
2337
|
}
|
|
2329
2338
|
|
|
2330
2339
|
.swarm-canvas-card {
|
|
2331
|
-
background: radial-gradient(circle at 50% 30%, rgba(15, 23, 42, 0.
|
|
2332
|
-
border: 1px solid rgba(
|
|
2340
|
+
background: radial-gradient(circle at 50% 30%, rgba(15, 23, 42, 0.96), rgba(7, 10, 19, 0.99));
|
|
2341
|
+
border: 1px solid rgba(56, 189, 248, 0.25);
|
|
2333
2342
|
border-radius: 16px;
|
|
2334
|
-
padding:
|
|
2335
|
-
margin-bottom:
|
|
2336
|
-
box-shadow: 0
|
|
2343
|
+
padding: 20px 24px;
|
|
2344
|
+
margin-bottom: 22px;
|
|
2345
|
+
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.6);
|
|
2337
2346
|
position: relative;
|
|
2338
2347
|
overflow: hidden;
|
|
2339
2348
|
}
|
|
@@ -2342,7 +2351,7 @@ body.antri-app {
|
|
|
2342
2351
|
display: flex;
|
|
2343
2352
|
justify-content: space-between;
|
|
2344
2353
|
align-items: center;
|
|
2345
|
-
margin-bottom:
|
|
2354
|
+
margin-bottom: 14px;
|
|
2346
2355
|
}
|
|
2347
2356
|
|
|
2348
2357
|
.canvas-title {
|
|
@@ -2350,8 +2359,8 @@ body.antri-app {
|
|
|
2350
2359
|
align-items: center;
|
|
2351
2360
|
gap: 8px;
|
|
2352
2361
|
font-size: 11px;
|
|
2353
|
-
font-weight:
|
|
2354
|
-
letter-spacing:
|
|
2362
|
+
font-weight: 800;
|
|
2363
|
+
letter-spacing: 1.2px;
|
|
2355
2364
|
color: #38bdf8;
|
|
2356
2365
|
}
|
|
2357
2366
|
|
|
@@ -2371,7 +2380,7 @@ body.antri-app {
|
|
|
2371
2380
|
|
|
2372
2381
|
.swarm-metrics-row {
|
|
2373
2382
|
display: flex;
|
|
2374
|
-
gap:
|
|
2383
|
+
gap: 20px;
|
|
2375
2384
|
}
|
|
2376
2385
|
|
|
2377
2386
|
.metric-item {
|
|
@@ -2382,14 +2391,15 @@ body.antri-app {
|
|
|
2382
2391
|
|
|
2383
2392
|
.metric-item .m-label {
|
|
2384
2393
|
font-size: 10px;
|
|
2385
|
-
color:
|
|
2394
|
+
color: #94a3b8;
|
|
2386
2395
|
text-transform: uppercase;
|
|
2396
|
+
letter-spacing: 0.5px;
|
|
2387
2397
|
}
|
|
2388
2398
|
|
|
2389
2399
|
.metric-item .m-val {
|
|
2390
|
-
font-size:
|
|
2400
|
+
font-size: 14px;
|
|
2391
2401
|
font-weight: 700;
|
|
2392
|
-
color: #
|
|
2402
|
+
color: #ffffff;
|
|
2393
2403
|
font-family: var(--font-mono);
|
|
2394
2404
|
}
|
|
2395
2405
|
|
|
@@ -2399,10 +2409,11 @@ body.antri-app {
|
|
|
2399
2409
|
|
|
2400
2410
|
.swarm-svg-wrapper {
|
|
2401
2411
|
width: 100%;
|
|
2402
|
-
height:
|
|
2412
|
+
height: 270px;
|
|
2403
2413
|
display: flex;
|
|
2404
2414
|
align-items: center;
|
|
2405
2415
|
justify-content: center;
|
|
2416
|
+
padding: 8px 0;
|
|
2406
2417
|
}
|
|
2407
2418
|
|
|
2408
2419
|
.swarm-svg-wrapper svg {
|
|
@@ -2433,7 +2444,7 @@ body.antri-app {
|
|
|
2433
2444
|
.swarm-svg-node.selected .node-halo {
|
|
2434
2445
|
stroke-width: 4px;
|
|
2435
2446
|
stroke: #ffffff;
|
|
2436
|
-
filter: drop-shadow(0 0
|
|
2447
|
+
filter: drop-shadow(0 0 14px rgba(255,255,255,0.7));
|
|
2437
2448
|
}
|
|
2438
2449
|
|
|
2439
2450
|
@keyframes haloPulse {
|
|
@@ -2448,7 +2459,8 @@ body.antri-app {
|
|
|
2448
2459
|
.swarm-workspace-grid {
|
|
2449
2460
|
display: grid;
|
|
2450
2461
|
grid-template-columns: 1fr 1fr;
|
|
2451
|
-
gap:
|
|
2462
|
+
gap: 22px;
|
|
2463
|
+
margin-top: 4px;
|
|
2452
2464
|
}
|
|
2453
2465
|
|
|
2454
2466
|
@media (max-width: 900px) {
|
|
@@ -2458,23 +2470,24 @@ body.antri-app {
|
|
|
2458
2470
|
}
|
|
2459
2471
|
|
|
2460
2472
|
.swarm-stream-card, .swarm-deliverables-card {
|
|
2461
|
-
background:
|
|
2462
|
-
border: 1px solid
|
|
2463
|
-
border-radius:
|
|
2473
|
+
background: #0b1120;
|
|
2474
|
+
border: 1px solid #1e293b;
|
|
2475
|
+
border-radius: 14px;
|
|
2464
2476
|
display: flex;
|
|
2465
2477
|
flex-direction: column;
|
|
2466
|
-
height:
|
|
2478
|
+
height: 520px;
|
|
2467
2479
|
overflow: hidden;
|
|
2480
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
|
|
2468
2481
|
}
|
|
2469
2482
|
|
|
2470
2483
|
.stream-header, .deliverables-header {
|
|
2471
|
-
padding:
|
|
2472
|
-
background:
|
|
2473
|
-
border-bottom: 1px solid
|
|
2484
|
+
padding: 12px 16px;
|
|
2485
|
+
background: #0f172a;
|
|
2486
|
+
border-bottom: 1px solid #1e293b;
|
|
2474
2487
|
display: flex;
|
|
2475
2488
|
justify-content: space-between;
|
|
2476
2489
|
align-items: center;
|
|
2477
|
-
gap:
|
|
2490
|
+
gap: 10px;
|
|
2478
2491
|
}
|
|
2479
2492
|
|
|
2480
2493
|
.stream-tabs {
|
|
@@ -2488,63 +2501,223 @@ body.antri-app {
|
|
|
2488
2501
|
.stream-tab-btn {
|
|
2489
2502
|
background: transparent;
|
|
2490
2503
|
border: 1px solid transparent;
|
|
2491
|
-
color:
|
|
2492
|
-
padding:
|
|
2504
|
+
color: #94a3b8;
|
|
2505
|
+
padding: 6px 12px;
|
|
2493
2506
|
border-radius: 6px;
|
|
2494
2507
|
font-size: 11px;
|
|
2495
|
-
font-weight:
|
|
2508
|
+
font-weight: 700;
|
|
2496
2509
|
cursor: pointer;
|
|
2497
2510
|
white-space: nowrap;
|
|
2498
2511
|
transition: all 0.15s ease;
|
|
2499
2512
|
}
|
|
2500
2513
|
|
|
2501
2514
|
.stream-tab-btn.active {
|
|
2502
|
-
background: rgba(56, 189, 248, 0.
|
|
2503
|
-
border-color: rgba(56, 189, 248, 0.
|
|
2515
|
+
background: rgba(56, 189, 248, 0.18);
|
|
2516
|
+
border-color: rgba(56, 189, 248, 0.45);
|
|
2504
2517
|
color: #38bdf8;
|
|
2505
2518
|
}
|
|
2506
2519
|
|
|
2507
2520
|
.stream-tab-btn:hover:not(.active) {
|
|
2508
|
-
color: #
|
|
2509
|
-
background: rgba(255, 255, 255, 0.
|
|
2521
|
+
color: #f8fafc;
|
|
2522
|
+
background: rgba(255, 255, 255, 0.08);
|
|
2510
2523
|
}
|
|
2511
2524
|
|
|
2512
2525
|
.copy-stream-btn, .action-btn-sm {
|
|
2513
|
-
background: rgba(255, 255, 255, 0.
|
|
2514
|
-
border: 1px solid rgba(255, 255, 255, 0.
|
|
2515
|
-
color: #
|
|
2516
|
-
padding:
|
|
2526
|
+
background: rgba(255, 255, 255, 0.08);
|
|
2527
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
2528
|
+
color: #f1f5f9;
|
|
2529
|
+
padding: 5px 12px;
|
|
2517
2530
|
border-radius: 6px;
|
|
2518
2531
|
font-size: 11px;
|
|
2519
|
-
font-weight:
|
|
2532
|
+
font-weight: 700;
|
|
2520
2533
|
cursor: pointer;
|
|
2521
2534
|
transition: all 0.2s ease;
|
|
2522
2535
|
}
|
|
2523
2536
|
|
|
2524
2537
|
.copy-stream-btn:hover, .action-btn-sm:hover {
|
|
2525
|
-
background: rgba(56, 189, 248, 0.
|
|
2538
|
+
background: rgba(56, 189, 248, 0.25);
|
|
2526
2539
|
border-color: #38bdf8;
|
|
2527
|
-
color: #
|
|
2540
|
+
color: #ffffff;
|
|
2528
2541
|
}
|
|
2529
2542
|
|
|
2530
2543
|
.swarm-stream-body, .deliverables-content {
|
|
2531
|
-
padding:
|
|
2544
|
+
padding: 18px 20px;
|
|
2532
2545
|
overflow-y: auto;
|
|
2533
2546
|
flex: 1;
|
|
2534
2547
|
font-size: 13px;
|
|
2535
|
-
line-height: 1.
|
|
2536
|
-
color:
|
|
2548
|
+
line-height: 1.65;
|
|
2549
|
+
color: #f1f5f9;
|
|
2550
|
+
background: #070d19;
|
|
2551
|
+
}
|
|
2552
|
+
|
|
2553
|
+
/* ==========================================================================
|
|
2554
|
+
โจ High-Contrast Luminous Typography & Formatted Markdown for Dark Surfaces
|
|
2555
|
+
========================================================================== */
|
|
2556
|
+
|
|
2557
|
+
#tab-swarm {
|
|
2558
|
+
color: #f1f5f9;
|
|
2537
2559
|
}
|
|
2538
2560
|
|
|
2539
|
-
|
|
2561
|
+
#tab-swarm .panel-header h2 {
|
|
2562
|
+
color: var(--text-primary);
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2565
|
+
#tab-swarm .panel-header p {
|
|
2566
|
+
color: var(--text-secondary);
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
#tab-swarm #swarm-objective-input {
|
|
2570
|
+
background: #0f172a;
|
|
2571
|
+
border: 1px solid #334155;
|
|
2572
|
+
color: #ffffff;
|
|
2573
|
+
padding: 8px 14px;
|
|
2574
|
+
border-radius: 8px;
|
|
2575
|
+
font-size: 12px;
|
|
2576
|
+
outline: none;
|
|
2577
|
+
min-width: 320px;
|
|
2578
|
+
transition: border-color 0.2s ease;
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
#tab-swarm #swarm-objective-input:focus {
|
|
2582
|
+
border-color: #38bdf8;
|
|
2583
|
+
box-shadow: 0 0 10px rgba(56, 189, 248, 0.25);
|
|
2584
|
+
}
|
|
2585
|
+
|
|
2586
|
+
#tab-swarm #swarm-objective-input::placeholder {
|
|
2587
|
+
color: #64748b;
|
|
2588
|
+
}
|
|
2589
|
+
|
|
2590
|
+
.swarm-stream-body *,
|
|
2591
|
+
.deliverables-content * {
|
|
2592
|
+
box-sizing: border-box;
|
|
2593
|
+
}
|
|
2594
|
+
|
|
2595
|
+
.swarm-stream-body p,
|
|
2596
|
+
.deliverables-content p {
|
|
2597
|
+
color: #e2e8f0;
|
|
2598
|
+
margin-bottom: 10px;
|
|
2599
|
+
line-height: 1.65;
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
.formatted-h2 {
|
|
2603
|
+
font-size: 16px;
|
|
2604
|
+
font-weight: 800;
|
|
2605
|
+
color: #38bdf8;
|
|
2606
|
+
margin: 16px 0 8px 0;
|
|
2607
|
+
border-bottom: 1px solid rgba(56, 189, 248, 0.2);
|
|
2608
|
+
padding-bottom: 4px;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2611
|
+
.formatted-h3 {
|
|
2612
|
+
font-size: 14px;
|
|
2613
|
+
font-weight: 700;
|
|
2614
|
+
color: #c084fc;
|
|
2615
|
+
margin: 14px 0 6px 0;
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
.formatted-h4 {
|
|
2619
|
+
font-size: 13px;
|
|
2620
|
+
font-weight: 700;
|
|
2621
|
+
color: #fbbf24;
|
|
2622
|
+
margin: 12px 0 6px 0;
|
|
2623
|
+
}
|
|
2624
|
+
|
|
2625
|
+
.formatted-h5 {
|
|
2626
|
+
font-size: 12px;
|
|
2627
|
+
font-weight: 700;
|
|
2628
|
+
color: #34d399;
|
|
2629
|
+
margin: 10px 0 4px 0;
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.bullet-item {
|
|
2633
|
+
color: #f1f5f9;
|
|
2634
|
+
margin: 5px 0;
|
|
2635
|
+
line-height: 1.55;
|
|
2636
|
+
padding-left: 6px;
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
.number-item {
|
|
2640
|
+
color: #f1f5f9;
|
|
2641
|
+
margin: 5px 0;
|
|
2642
|
+
line-height: 1.55;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
.num-badge {
|
|
2646
|
+
color: #38bdf8;
|
|
2647
|
+
font-weight: 700;
|
|
2648
|
+
font-family: var(--font-mono);
|
|
2649
|
+
margin-right: 4px;
|
|
2650
|
+
}
|
|
2651
|
+
|
|
2652
|
+
.formatted-quote {
|
|
2653
|
+
border-left: 3px solid #38bdf8;
|
|
2654
|
+
background: rgba(56, 189, 248, 0.08);
|
|
2655
|
+
padding: 8px 12px;
|
|
2656
|
+
margin: 10px 0;
|
|
2657
|
+
border-radius: 0 6px 6px 0;
|
|
2658
|
+
color: #cbd5e1;
|
|
2659
|
+
font-style: italic;
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2662
|
+
.inline-code {
|
|
2663
|
+
background: rgba(56, 189, 248, 0.15);
|
|
2664
|
+
color: #38bdf8;
|
|
2665
|
+
padding: 2px 6px;
|
|
2666
|
+
border-radius: 4px;
|
|
2667
|
+
font-family: var(--font-mono);
|
|
2668
|
+
font-size: 12px;
|
|
2669
|
+
border: 1px solid rgba(56, 189, 248, 0.25);
|
|
2670
|
+
}
|
|
2671
|
+
|
|
2672
|
+
.formatted-code-block {
|
|
2540
2673
|
background: #020617;
|
|
2541
2674
|
border: 1px solid #1e293b;
|
|
2542
2675
|
border-radius: 8px;
|
|
2543
|
-
|
|
2676
|
+
margin: 12px 0;
|
|
2677
|
+
overflow: hidden;
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
.code-block-header {
|
|
2681
|
+
background: #0f172a;
|
|
2682
|
+
color: #94a3b8;
|
|
2683
|
+
font-size: 11px;
|
|
2684
|
+
font-weight: 700;
|
|
2685
|
+
padding: 5px 12px;
|
|
2686
|
+
text-transform: uppercase;
|
|
2687
|
+
font-family: var(--font-mono);
|
|
2688
|
+
border-bottom: 1px solid #1e293b;
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
.formatted-code-block pre {
|
|
2692
|
+
padding: 12px 14px;
|
|
2693
|
+
margin: 0;
|
|
2544
2694
|
overflow-x: auto;
|
|
2545
2695
|
font-family: var(--font-mono);
|
|
2546
2696
|
font-size: 12px;
|
|
2547
|
-
|
|
2697
|
+
color: #e2e8f0;
|
|
2698
|
+
line-height: 1.5;
|
|
2699
|
+
background: #020617;
|
|
2700
|
+
}
|
|
2701
|
+
|
|
2702
|
+
.formatted-code-block code {
|
|
2703
|
+
color: #e2e8f0;
|
|
2704
|
+
font-family: var(--font-mono);
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
.swarm-stream-body strong,
|
|
2708
|
+
.deliverables-content strong {
|
|
2709
|
+
color: #ffffff;
|
|
2710
|
+
font-weight: 700;
|
|
2711
|
+
}
|
|
2712
|
+
|
|
2713
|
+
.swarm-stream-body em,
|
|
2714
|
+
.deliverables-content em {
|
|
2715
|
+
color: #cbd5e1;
|
|
2716
|
+
}
|
|
2717
|
+
|
|
2718
|
+
.placeholder-text {
|
|
2719
|
+
color: #94a3b8 !important;
|
|
2720
|
+
font-style: italic;
|
|
2548
2721
|
}
|
|
2549
2722
|
|
|
2550
2723
|
/* ==========================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/desktop/server.ts"],"names":[],"mappings":"AAuCA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAA4C;IACxD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAAiD;IAC3E,OAAO,CAAC,gBAAgB,CAAqD;;IAO7E,OAAO,CAAC,sBAAsB;IA2BjB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAkGxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,SAAS;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/desktop/server.ts"],"names":[],"mappings":"AAuCA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAA4C;IACxD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAAiD;IAC3E,OAAO,CAAC,gBAAgB,CAAqD;;IAO7E,OAAO,CAAC,sBAAsB;IA2BjB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAkGxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,SAAS;WA81BH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAyBnD"}
|
package/dist/desktop/server.js
CHANGED
|
@@ -259,6 +259,14 @@ export class DesktopServer {
|
|
|
259
259
|
}));
|
|
260
260
|
return;
|
|
261
261
|
}
|
|
262
|
+
// GET /api/cloud/sync (Get Cloud Sync Status & Config)
|
|
263
|
+
if (pathname === '/api/cloud/sync' && req.method === 'GET') {
|
|
264
|
+
const { FirestoreSyncManager } = await import('../cloud/firestore.js');
|
|
265
|
+
const cfg = FirestoreSyncManager.getSyncConfig();
|
|
266
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
267
|
+
res.end(JSON.stringify({ success: true, ...cfg }));
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
262
270
|
// GET /api/skills
|
|
263
271
|
if (pathname === '/api/skills' && req.method === 'GET') {
|
|
264
272
|
const markdownSkills = skillManager.listSkills();
|
|
@@ -411,6 +419,22 @@ export class DesktopServer {
|
|
|
411
419
|
}));
|
|
412
420
|
return;
|
|
413
421
|
}
|
|
422
|
+
// POST /api/cloud/pull (Pull profiles from Firestore)
|
|
423
|
+
if (pathname === '/api/cloud/pull' && req.method === 'POST') {
|
|
424
|
+
const { FirestoreSyncManager } = await import('../cloud/firestore.js');
|
|
425
|
+
const resData = await FirestoreSyncManager.pullFromFirestore(payload.syncKey);
|
|
426
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
427
|
+
res.end(JSON.stringify(resData));
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
// POST /api/cloud/push (Push profiles to Firestore)
|
|
431
|
+
if (pathname === '/api/cloud/push' && req.method === 'POST') {
|
|
432
|
+
const { FirestoreSyncManager } = await import('../cloud/firestore.js');
|
|
433
|
+
const resData = await FirestoreSyncManager.pushToFirestore(payload.syncKey);
|
|
434
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
435
|
+
res.end(JSON.stringify(resData));
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
414
438
|
// POST /api/codebase/breathe (Trigger 1-2s Codebase Analysis & Cache Re-indexing)
|
|
415
439
|
if (pathname === '/api/codebase/breathe' && req.method === 'POST') {
|
|
416
440
|
const freshCache = await CodebaseBreather.breathe(config.workingDir, { minDurationMs: 1200, silent: true });
|