shiva-code 0.5.3 → 0.5.4
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.
|
@@ -299,6 +299,38 @@ var ApiClient = class {
|
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
301
|
// ============================================
|
|
302
|
+
// Packages Endpoints (Cloud-synced packages)
|
|
303
|
+
// ============================================
|
|
304
|
+
/**
|
|
305
|
+
* Get all packages from cloud
|
|
306
|
+
*/
|
|
307
|
+
async getPackages() {
|
|
308
|
+
return this.request("/packages");
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Sync a package to cloud
|
|
312
|
+
*/
|
|
313
|
+
async syncPackage(data) {
|
|
314
|
+
return this.request("/packages", {
|
|
315
|
+
method: "POST",
|
|
316
|
+
body: JSON.stringify(data)
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Get a specific package from cloud
|
|
321
|
+
*/
|
|
322
|
+
async getPackage(name) {
|
|
323
|
+
return this.request(`/packages/${encodeURIComponent(name)}`);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Delete a package from cloud
|
|
327
|
+
*/
|
|
328
|
+
async deleteCloudPackage(name) {
|
|
329
|
+
return this.request(`/packages/${encodeURIComponent(name)}`, {
|
|
330
|
+
method: "DELETE"
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
// ============================================
|
|
302
334
|
// Two-Factor Authentication Endpoints (Phase 15)
|
|
303
335
|
// ============================================
|
|
304
336
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
api
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XVFDKDRZ.js";
|
|
5
5
|
import {
|
|
6
6
|
CONFIG_PATH,
|
|
7
7
|
clearAuth,
|
|
@@ -6774,6 +6774,185 @@ async function checkProjectExists(path15) {
|
|
|
6774
6774
|
return false;
|
|
6775
6775
|
}
|
|
6776
6776
|
}
|
|
6777
|
+
sessionsCommand.command("push").description("Sessions in Cloud sichern").option("-p, --project <pfad>", "Nur Sessions eines Projekts").action(async (options) => {
|
|
6778
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
6779
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
6780
|
+
const { getProjectConfig: getProjectConfig2 } = await import("./config-D6M6LI6U.js");
|
|
6781
|
+
if (!isAuthenticated2()) {
|
|
6782
|
+
log.error("Nicht angemeldet");
|
|
6783
|
+
log.info("Anmelden mit: shiva login");
|
|
6784
|
+
return;
|
|
6785
|
+
}
|
|
6786
|
+
let projects = await getAllClaudeProjects();
|
|
6787
|
+
if (options.project) {
|
|
6788
|
+
const found = await findProject(options.project);
|
|
6789
|
+
if (found) {
|
|
6790
|
+
projects = [found];
|
|
6791
|
+
} else {
|
|
6792
|
+
log.error(`Projekt nicht gefunden: ${options.project}`);
|
|
6793
|
+
return;
|
|
6794
|
+
}
|
|
6795
|
+
}
|
|
6796
|
+
projects = projects.filter((p) => p.sessions.length > 0);
|
|
6797
|
+
if (projects.length === 0) {
|
|
6798
|
+
log.warn("Keine Sessions zum Synchronisieren gefunden");
|
|
6799
|
+
return;
|
|
6800
|
+
}
|
|
6801
|
+
const spinner = ora9("Synchronisiere Sessions...").start();
|
|
6802
|
+
let syncedCount = 0;
|
|
6803
|
+
let errorCount = 0;
|
|
6804
|
+
for (const project of projects) {
|
|
6805
|
+
const config = getProjectConfig2(project.absolutePath);
|
|
6806
|
+
if (!config.projectId) {
|
|
6807
|
+
continue;
|
|
6808
|
+
}
|
|
6809
|
+
for (const session of project.sessions) {
|
|
6810
|
+
try {
|
|
6811
|
+
await api2.syncSession({
|
|
6812
|
+
sessionId: session.sessionId,
|
|
6813
|
+
projectId: config.projectId,
|
|
6814
|
+
summary: session.firstPrompt,
|
|
6815
|
+
messageCount: session.messageCount,
|
|
6816
|
+
firstPrompt: session.firstPrompt,
|
|
6817
|
+
gitBranch: session.gitBranch
|
|
6818
|
+
});
|
|
6819
|
+
syncedCount++;
|
|
6820
|
+
} catch {
|
|
6821
|
+
errorCount++;
|
|
6822
|
+
}
|
|
6823
|
+
}
|
|
6824
|
+
}
|
|
6825
|
+
spinner.stop();
|
|
6826
|
+
if (syncedCount > 0) {
|
|
6827
|
+
log.success(`${syncedCount} Sessions in Cloud gesichert`);
|
|
6828
|
+
}
|
|
6829
|
+
if (errorCount > 0) {
|
|
6830
|
+
log.warn(`${errorCount} Sessions konnten nicht gesichert werden`);
|
|
6831
|
+
}
|
|
6832
|
+
if (syncedCount === 0 && errorCount === 0) {
|
|
6833
|
+
log.info("Keine Projekte mit Cloud verbunden");
|
|
6834
|
+
log.dim("Verbinden mit: shiva init && shiva sync");
|
|
6835
|
+
}
|
|
6836
|
+
});
|
|
6837
|
+
sessionsCommand.command("pull").description("Sessions aus Cloud laden").option("--json", "JSON Output").action(async (options) => {
|
|
6838
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
6839
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
6840
|
+
if (!isAuthenticated2()) {
|
|
6841
|
+
log.error("Nicht angemeldet");
|
|
6842
|
+
log.info("Anmelden mit: shiva login");
|
|
6843
|
+
return;
|
|
6844
|
+
}
|
|
6845
|
+
const spinner = ora9("Lade Sessions aus Cloud...").start();
|
|
6846
|
+
try {
|
|
6847
|
+
const cloudSessions = await api2.getSessions();
|
|
6848
|
+
spinner.stop();
|
|
6849
|
+
if (options.json) {
|
|
6850
|
+
console.log(JSON.stringify(cloudSessions, null, 2));
|
|
6851
|
+
return;
|
|
6852
|
+
}
|
|
6853
|
+
if (cloudSessions.length === 0) {
|
|
6854
|
+
log.info("Keine Sessions in Cloud gefunden");
|
|
6855
|
+
log.dim("Hochladen mit: shiva sessions push");
|
|
6856
|
+
return;
|
|
6857
|
+
}
|
|
6858
|
+
log.success(`${cloudSessions.length} Sessions in Cloud gefunden`);
|
|
6859
|
+
log.newline();
|
|
6860
|
+
const byProject = /* @__PURE__ */ new Map();
|
|
6861
|
+
for (const session of cloudSessions) {
|
|
6862
|
+
const existing = byProject.get(session.projectId) || [];
|
|
6863
|
+
existing.push(session);
|
|
6864
|
+
byProject.set(session.projectId, existing);
|
|
6865
|
+
}
|
|
6866
|
+
for (const [projectId, sessions] of byProject.entries()) {
|
|
6867
|
+
console.log(colors.bold(`Projekt ID: ${projectId}`));
|
|
6868
|
+
for (const session of sessions.slice(0, 5)) {
|
|
6869
|
+
const data = session.data;
|
|
6870
|
+
const branch = data.gitBranch || "main";
|
|
6871
|
+
const msgs = data.messageCount || 0;
|
|
6872
|
+
log.dim(` ${session.sessionId.substring(0, 8)}... ${branch.padEnd(15)} ${msgs} msgs`);
|
|
6873
|
+
}
|
|
6874
|
+
if (sessions.length > 5) {
|
|
6875
|
+
log.dim(` ... und ${sessions.length - 5} weitere`);
|
|
6876
|
+
}
|
|
6877
|
+
log.newline();
|
|
6878
|
+
}
|
|
6879
|
+
} catch (error) {
|
|
6880
|
+
spinner.stop();
|
|
6881
|
+
log.error(error instanceof Error ? error.message : "Fehler beim Laden");
|
|
6882
|
+
}
|
|
6883
|
+
});
|
|
6884
|
+
sessionsCommand.command("sync").description("Sessions mit Cloud synchronisieren").option("-p, --project <pfad>", "Nur Sessions eines Projekts").action(async (options) => {
|
|
6885
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
6886
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
6887
|
+
const { getProjectConfig: getProjectConfig2 } = await import("./config-D6M6LI6U.js");
|
|
6888
|
+
if (!isAuthenticated2()) {
|
|
6889
|
+
log.error("Nicht angemeldet");
|
|
6890
|
+
log.info("Anmelden mit: shiva login");
|
|
6891
|
+
return;
|
|
6892
|
+
}
|
|
6893
|
+
let projects = await getAllClaudeProjects();
|
|
6894
|
+
if (options.project) {
|
|
6895
|
+
const found = await findProject(options.project);
|
|
6896
|
+
if (found) {
|
|
6897
|
+
projects = [found];
|
|
6898
|
+
} else {
|
|
6899
|
+
log.error(`Projekt nicht gefunden: ${options.project}`);
|
|
6900
|
+
return;
|
|
6901
|
+
}
|
|
6902
|
+
}
|
|
6903
|
+
const spinner = ora9("Synchronisiere Sessions...").start();
|
|
6904
|
+
let pushedCount = 0;
|
|
6905
|
+
for (const project of projects.filter((p) => p.sessions.length > 0)) {
|
|
6906
|
+
const config = getProjectConfig2(project.absolutePath);
|
|
6907
|
+
if (!config.projectId) continue;
|
|
6908
|
+
for (const session of project.sessions) {
|
|
6909
|
+
try {
|
|
6910
|
+
await api2.syncSession({
|
|
6911
|
+
sessionId: session.sessionId,
|
|
6912
|
+
projectId: config.projectId,
|
|
6913
|
+
summary: session.firstPrompt,
|
|
6914
|
+
messageCount: session.messageCount,
|
|
6915
|
+
firstPrompt: session.firstPrompt,
|
|
6916
|
+
gitBranch: session.gitBranch
|
|
6917
|
+
});
|
|
6918
|
+
pushedCount++;
|
|
6919
|
+
} catch {
|
|
6920
|
+
}
|
|
6921
|
+
}
|
|
6922
|
+
}
|
|
6923
|
+
let cloudCount = 0;
|
|
6924
|
+
try {
|
|
6925
|
+
const cloudSessions = await api2.getSessions();
|
|
6926
|
+
cloudCount = cloudSessions.length;
|
|
6927
|
+
} catch {
|
|
6928
|
+
}
|
|
6929
|
+
spinner.stop();
|
|
6930
|
+
log.success("Sessions synchronisiert");
|
|
6931
|
+
log.newline();
|
|
6932
|
+
log.tree.item(`${pushedCount} Sessions \u2192 Cloud`);
|
|
6933
|
+
log.tree.item(`${cloudCount} Sessions in Cloud`);
|
|
6934
|
+
log.newline();
|
|
6935
|
+
log.dim("Sessions werden automatisch mit lokalen Claude Sessions verkn\xFCpft");
|
|
6936
|
+
});
|
|
6937
|
+
sessionsCommand.command("delete <sessionId>").description("Session aus Cloud l\xF6schen").action(async (sessionId) => {
|
|
6938
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
6939
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
6940
|
+
if (!isAuthenticated2()) {
|
|
6941
|
+
log.error("Nicht angemeldet");
|
|
6942
|
+
log.info("Anmelden mit: shiva login");
|
|
6943
|
+
return;
|
|
6944
|
+
}
|
|
6945
|
+
try {
|
|
6946
|
+
const result = await api2.deleteSession(sessionId);
|
|
6947
|
+
if (result.success) {
|
|
6948
|
+
log.success("Session aus Cloud gel\xF6scht");
|
|
6949
|
+
} else {
|
|
6950
|
+
log.error(result.message || "Fehler beim L\xF6schen");
|
|
6951
|
+
}
|
|
6952
|
+
} catch (error) {
|
|
6953
|
+
log.error(error instanceof Error ? error.message : "Fehler beim L\xF6schen");
|
|
6954
|
+
}
|
|
6955
|
+
});
|
|
6777
6956
|
|
|
6778
6957
|
// src/commands/session/session.ts
|
|
6779
6958
|
import { Command as Command14 } from "commander";
|
|
@@ -14203,7 +14382,7 @@ hookCommand.command("scan-command").description("Scanne Bash-Befehle auf Package
|
|
|
14203
14382
|
}
|
|
14204
14383
|
});
|
|
14205
14384
|
hookCommand.command("push").description("Hooks in Cloud sichern").action(async () => {
|
|
14206
|
-
const { api: api2 } = await import("./client-
|
|
14385
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14207
14386
|
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14208
14387
|
if (!isAuthenticated2()) {
|
|
14209
14388
|
log.error("Nicht angemeldet");
|
|
@@ -14223,7 +14402,7 @@ hookCommand.command("push").description("Hooks in Cloud sichern").action(async (
|
|
|
14223
14402
|
}
|
|
14224
14403
|
});
|
|
14225
14404
|
hookCommand.command("pull").description("Hooks aus Cloud laden").option("-f, --force", "Lokale Hooks \xFCberschreiben").action(async (options) => {
|
|
14226
|
-
const { api: api2 } = await import("./client-
|
|
14405
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14227
14406
|
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14228
14407
|
if (!isAuthenticated2()) {
|
|
14229
14408
|
log.error("Nicht angemeldet");
|
|
@@ -14255,7 +14434,7 @@ hookCommand.command("pull").description("Hooks aus Cloud laden").option("-f, --f
|
|
|
14255
14434
|
}
|
|
14256
14435
|
});
|
|
14257
14436
|
hookCommand.command("sync").description("Hooks mit Cloud synchronisieren").action(async () => {
|
|
14258
|
-
const { api: api2 } = await import("./client-
|
|
14437
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14259
14438
|
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14260
14439
|
if (!isAuthenticated2()) {
|
|
14261
14440
|
log.error("Nicht angemeldet");
|
|
@@ -14431,6 +14610,186 @@ packageCommand.command("start <name>").description("Alle Projekte eines Packages
|
|
|
14431
14610
|
log.error(error instanceof Error ? error.message : "Unbekannter Fehler");
|
|
14432
14611
|
}
|
|
14433
14612
|
});
|
|
14613
|
+
packageCommand.command("push").description("Packages in Cloud sichern").option("-n, --name <name>", "Nur ein bestimmtes Package").action(async (options) => {
|
|
14614
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14615
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14616
|
+
if (!isAuthenticated2()) {
|
|
14617
|
+
log.error("Nicht angemeldet");
|
|
14618
|
+
log.info("Anmelden mit: shiva login");
|
|
14619
|
+
return;
|
|
14620
|
+
}
|
|
14621
|
+
let packages = getAllPackages();
|
|
14622
|
+
if (options.name) {
|
|
14623
|
+
const found = getPackage(options.name);
|
|
14624
|
+
if (found) {
|
|
14625
|
+
packages = [found];
|
|
14626
|
+
} else {
|
|
14627
|
+
log.error(`Package nicht gefunden: ${options.name}`);
|
|
14628
|
+
return;
|
|
14629
|
+
}
|
|
14630
|
+
}
|
|
14631
|
+
if (packages.length === 0) {
|
|
14632
|
+
log.warn("Keine Packages zum Synchronisieren gefunden");
|
|
14633
|
+
return;
|
|
14634
|
+
}
|
|
14635
|
+
const spinner = ora21("Synchronisiere Packages...").start();
|
|
14636
|
+
let syncedCount = 0;
|
|
14637
|
+
let errorCount = 0;
|
|
14638
|
+
for (const pkg of packages) {
|
|
14639
|
+
try {
|
|
14640
|
+
await api2.syncPackage({
|
|
14641
|
+
name: pkg.name,
|
|
14642
|
+
description: pkg.description,
|
|
14643
|
+
projects: pkg.projects,
|
|
14644
|
+
launchOrder: pkg.launchOrder
|
|
14645
|
+
});
|
|
14646
|
+
syncedCount++;
|
|
14647
|
+
} catch {
|
|
14648
|
+
errorCount++;
|
|
14649
|
+
}
|
|
14650
|
+
}
|
|
14651
|
+
spinner.stop();
|
|
14652
|
+
if (syncedCount > 0) {
|
|
14653
|
+
log.success(`${syncedCount} Packages in Cloud gesichert`);
|
|
14654
|
+
}
|
|
14655
|
+
if (errorCount > 0) {
|
|
14656
|
+
log.warn(`${errorCount} Packages konnten nicht gesichert werden`);
|
|
14657
|
+
}
|
|
14658
|
+
});
|
|
14659
|
+
packageCommand.command("pull").description("Packages aus Cloud laden").option("-f, --force", "Lokale Packages \xFCberschreiben").option("--json", "JSON Output").action(async (options) => {
|
|
14660
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14661
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14662
|
+
if (!isAuthenticated2()) {
|
|
14663
|
+
log.error("Nicht angemeldet");
|
|
14664
|
+
log.info("Anmelden mit: shiva login");
|
|
14665
|
+
return;
|
|
14666
|
+
}
|
|
14667
|
+
const spinner = ora21("Lade Packages aus Cloud...").start();
|
|
14668
|
+
try {
|
|
14669
|
+
const cloudPackages = await api2.getPackages();
|
|
14670
|
+
spinner.stop();
|
|
14671
|
+
if (options.json) {
|
|
14672
|
+
console.log(JSON.stringify(cloudPackages, null, 2));
|
|
14673
|
+
return;
|
|
14674
|
+
}
|
|
14675
|
+
if (cloudPackages.length === 0) {
|
|
14676
|
+
log.info("Keine Packages in Cloud gefunden");
|
|
14677
|
+
log.dim("Hochladen mit: shiva package push");
|
|
14678
|
+
return;
|
|
14679
|
+
}
|
|
14680
|
+
log.success(`${cloudPackages.length} Packages in Cloud gefunden`);
|
|
14681
|
+
log.newline();
|
|
14682
|
+
const localPackages = getAllPackages();
|
|
14683
|
+
let importedCount = 0;
|
|
14684
|
+
let skippedCount = 0;
|
|
14685
|
+
for (const cloudPkg of cloudPackages) {
|
|
14686
|
+
const localPkg = localPackages.find((p) => p.name.toLowerCase() === cloudPkg.name.toLowerCase());
|
|
14687
|
+
if (localPkg && !options.force) {
|
|
14688
|
+
log.dim(` \u23ED ${cloudPkg.name} (lokal vorhanden, --force zum \xDCberschreiben)`);
|
|
14689
|
+
skippedCount++;
|
|
14690
|
+
continue;
|
|
14691
|
+
}
|
|
14692
|
+
try {
|
|
14693
|
+
if (localPkg) {
|
|
14694
|
+
deletePackage(localPkg.name);
|
|
14695
|
+
}
|
|
14696
|
+
createPackage(cloudPkg.name, cloudPkg.description, cloudPkg.launchOrder);
|
|
14697
|
+
for (const projectPath of cloudPkg.projects) {
|
|
14698
|
+
try {
|
|
14699
|
+
addProjectToPackage(cloudPkg.name, projectPath);
|
|
14700
|
+
} catch {
|
|
14701
|
+
}
|
|
14702
|
+
}
|
|
14703
|
+
log.success(` \u2713 ${cloudPkg.name} importiert`);
|
|
14704
|
+
importedCount++;
|
|
14705
|
+
} catch (error) {
|
|
14706
|
+
log.warn(` \u2717 ${cloudPkg.name}: ${error instanceof Error ? error.message : "Fehler"}`);
|
|
14707
|
+
}
|
|
14708
|
+
}
|
|
14709
|
+
log.newline();
|
|
14710
|
+
if (importedCount > 0) {
|
|
14711
|
+
log.success(`${importedCount} Packages importiert`);
|
|
14712
|
+
}
|
|
14713
|
+
if (skippedCount > 0) {
|
|
14714
|
+
log.dim(`${skippedCount} \xFCbersprungen (bereits lokal vorhanden)`);
|
|
14715
|
+
}
|
|
14716
|
+
} catch (error) {
|
|
14717
|
+
spinner.stop();
|
|
14718
|
+
log.error(error instanceof Error ? error.message : "Fehler beim Laden");
|
|
14719
|
+
}
|
|
14720
|
+
});
|
|
14721
|
+
packageCommand.command("sync").description("Packages mit Cloud synchronisieren").action(async () => {
|
|
14722
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14723
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14724
|
+
if (!isAuthenticated2()) {
|
|
14725
|
+
log.error("Nicht angemeldet");
|
|
14726
|
+
log.info("Anmelden mit: shiva login");
|
|
14727
|
+
return;
|
|
14728
|
+
}
|
|
14729
|
+
const spinner = ora21("Synchronisiere Packages...").start();
|
|
14730
|
+
const localPackages = getAllPackages();
|
|
14731
|
+
let pushedCount = 0;
|
|
14732
|
+
for (const pkg of localPackages) {
|
|
14733
|
+
try {
|
|
14734
|
+
await api2.syncPackage({
|
|
14735
|
+
name: pkg.name,
|
|
14736
|
+
description: pkg.description,
|
|
14737
|
+
projects: pkg.projects,
|
|
14738
|
+
launchOrder: pkg.launchOrder
|
|
14739
|
+
});
|
|
14740
|
+
pushedCount++;
|
|
14741
|
+
} catch {
|
|
14742
|
+
}
|
|
14743
|
+
}
|
|
14744
|
+
let pulledCount = 0;
|
|
14745
|
+
try {
|
|
14746
|
+
const cloudPackages = await api2.getPackages();
|
|
14747
|
+
for (const cloudPkg of cloudPackages) {
|
|
14748
|
+
const localPkg = localPackages.find((p) => p.name.toLowerCase() === cloudPkg.name.toLowerCase());
|
|
14749
|
+
if (!localPkg) {
|
|
14750
|
+
try {
|
|
14751
|
+
createPackage(cloudPkg.name, cloudPkg.description, cloudPkg.launchOrder);
|
|
14752
|
+
for (const projectPath of cloudPkg.projects) {
|
|
14753
|
+
try {
|
|
14754
|
+
addProjectToPackage(cloudPkg.name, projectPath);
|
|
14755
|
+
} catch {
|
|
14756
|
+
}
|
|
14757
|
+
}
|
|
14758
|
+
pulledCount++;
|
|
14759
|
+
} catch {
|
|
14760
|
+
}
|
|
14761
|
+
}
|
|
14762
|
+
}
|
|
14763
|
+
} catch {
|
|
14764
|
+
}
|
|
14765
|
+
spinner.stop();
|
|
14766
|
+
log.success("Packages synchronisiert");
|
|
14767
|
+
log.newline();
|
|
14768
|
+
log.tree.item(`${pushedCount} lokale Packages \u2192 Cloud`);
|
|
14769
|
+
if (pulledCount > 0) {
|
|
14770
|
+
log.tree.item(`${pulledCount} neue Packages \u2190 Cloud`);
|
|
14771
|
+
}
|
|
14772
|
+
log.tree.item(`${localPackages.length + pulledCount} Packages total`);
|
|
14773
|
+
});
|
|
14774
|
+
packageCommand.command("cloud-delete <name>").description("Package aus Cloud l\xF6schen").action(async (name) => {
|
|
14775
|
+
const { api: api2 } = await import("./client-2L7NWNCZ.js");
|
|
14776
|
+
const { isAuthenticated: isAuthenticated2 } = await import("./config-FGMZONWV.js");
|
|
14777
|
+
if (!isAuthenticated2()) {
|
|
14778
|
+
log.error("Nicht angemeldet");
|
|
14779
|
+
log.info("Anmelden mit: shiva login");
|
|
14780
|
+
return;
|
|
14781
|
+
}
|
|
14782
|
+
try {
|
|
14783
|
+
const result = await api2.deleteCloudPackage(name);
|
|
14784
|
+
if (result.success) {
|
|
14785
|
+
log.success(`Package "${name}" aus Cloud gel\xF6scht`);
|
|
14786
|
+
} else {
|
|
14787
|
+
log.error(result.message || "Fehler beim L\xF6schen");
|
|
14788
|
+
}
|
|
14789
|
+
} catch (error) {
|
|
14790
|
+
log.error(error instanceof Error ? error.message : "Fehler beim L\xF6schen");
|
|
14791
|
+
}
|
|
14792
|
+
});
|
|
14434
14793
|
function listPackages() {
|
|
14435
14794
|
const packages = getAllPackages();
|
|
14436
14795
|
const stats = getPackageStats();
|
|
@@ -14471,7 +14830,7 @@ function listPackages() {
|
|
|
14471
14830
|
|
|
14472
14831
|
// src/index.ts
|
|
14473
14832
|
var program = new Command36();
|
|
14474
|
-
program.name("shiva").description("SHIVA Code - Control Station for Claude Code").version("0.5.
|
|
14833
|
+
program.name("shiva").description("SHIVA Code - Control Station for Claude Code").version("0.5.4");
|
|
14475
14834
|
program.addCommand(loginCommand);
|
|
14476
14835
|
program.addCommand(logoutCommand);
|
|
14477
14836
|
program.addCommand(sessionsCommand);
|