@diggerhq/anyware 0.7.3 ā 0.7.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.
- package/dist/config/config.d.ts +7 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +19 -0
- package/dist/config/config.js.map +1 -1
- package/dist/main.js +45 -1
- package/dist/main.js.map +1 -1
- package/dist/update/update.d.ts +38 -0
- package/dist/update/update.d.ts.map +1 -0
- package/dist/update/update.js +208 -0
- package/dist/update/update.js.map +1 -0
- package/package.json +1 -1
package/dist/config/config.d.ts
CHANGED
|
@@ -5,8 +5,15 @@ export interface Config {
|
|
|
5
5
|
apiUrl: string;
|
|
6
6
|
llmUrl: string;
|
|
7
7
|
}
|
|
8
|
+
export interface VersionCache {
|
|
9
|
+
lastUpdateCheck?: string;
|
|
10
|
+
autoUpdateEnabled?: boolean;
|
|
11
|
+
autoUpdatePromptExpiry?: string;
|
|
12
|
+
}
|
|
8
13
|
export declare function loadConfig(): Config;
|
|
9
14
|
export declare function saveConfig(config: Partial<Config>): void;
|
|
10
15
|
export declare function clearConfig(): void;
|
|
11
16
|
export declare function isLoggedIn(): boolean;
|
|
17
|
+
export declare function loadVersionCache(): VersionCache;
|
|
18
|
+
export declare function saveVersionCache(cache: VersionCache): void;
|
|
12
19
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAWD,wBAAgB,UAAU,IAAI,MAAM,CAYnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAQxD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAW/C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D"}
|
package/dist/config/config.js
CHANGED
|
@@ -3,6 +3,7 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
const CONFIG_DIR = join(homedir(), '.anyware');
|
|
5
5
|
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
6
|
+
const VERSION_CACHE_FILE = join(CONFIG_DIR, 'version-cache.json');
|
|
6
7
|
const DEFAULT_CONFIG = {
|
|
7
8
|
apiUrl: 'https://anyware.run',
|
|
8
9
|
llmUrl: 'https://llm.anyware.run',
|
|
@@ -37,4 +38,22 @@ export function isLoggedIn() {
|
|
|
37
38
|
const config = loadConfig();
|
|
38
39
|
return !!config.accessToken && !!config.userId;
|
|
39
40
|
}
|
|
41
|
+
export function loadVersionCache() {
|
|
42
|
+
if (!existsSync(VERSION_CACHE_FILE)) {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const data = readFileSync(VERSION_CACHE_FILE, 'utf-8');
|
|
47
|
+
return JSON.parse(data);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function saveVersionCache(cache) {
|
|
54
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
55
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
writeFileSync(VERSION_CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
58
|
+
}
|
|
40
59
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAgBlC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAElE,MAAM,cAAc,GAAW;IAC7B,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -3,16 +3,20 @@
|
|
|
3
3
|
* Anyware CLI - Claude Code with remote control
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
|
+
import { createRequire } from 'module';
|
|
6
7
|
import { login } from './api/auth.js';
|
|
7
8
|
import { createSession, endSession } from './api/session.js';
|
|
8
9
|
import { loadConfig, saveConfig, clearConfig, isLoggedIn } from './config/config.js';
|
|
9
10
|
import { Session } from './claude/session.js';
|
|
10
11
|
import { loop } from './claude/loop.js';
|
|
12
|
+
import { checkForUpdate, isUpdateAvailable, performUpdate, checkAndNotify, } from './update/update.js';
|
|
13
|
+
const require = createRequire(import.meta.url);
|
|
14
|
+
const { version } = require('../package.json');
|
|
11
15
|
const program = new Command();
|
|
12
16
|
program
|
|
13
17
|
.name('anyware')
|
|
14
18
|
.description('Claude Code with remote control')
|
|
15
|
-
.version(
|
|
19
|
+
.version(version);
|
|
16
20
|
// Login command
|
|
17
21
|
program
|
|
18
22
|
.command('login')
|
|
@@ -48,6 +52,43 @@ program
|
|
|
48
52
|
console.log('Not logged in. Run "anyware login" to authenticate.');
|
|
49
53
|
}
|
|
50
54
|
});
|
|
55
|
+
// Version command (with update check)
|
|
56
|
+
program
|
|
57
|
+
.command('version')
|
|
58
|
+
.description('Print version information')
|
|
59
|
+
.action(async () => {
|
|
60
|
+
console.log(`anyware v${version}`);
|
|
61
|
+
try {
|
|
62
|
+
const info = await checkForUpdate();
|
|
63
|
+
if (isUpdateAvailable(info)) {
|
|
64
|
+
console.log(`\nš” A new version is available: v${info.latestVersion}`);
|
|
65
|
+
console.log("Run 'anyware update' to upgrade");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Silently ignore update check errors
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// Update command
|
|
73
|
+
program
|
|
74
|
+
.command('update')
|
|
75
|
+
.description('Update anyware to the latest version')
|
|
76
|
+
.action(async () => {
|
|
77
|
+
console.log(`Current version: v${version}`);
|
|
78
|
+
try {
|
|
79
|
+
const info = await checkForUpdate();
|
|
80
|
+
if (!isUpdateAvailable(info)) {
|
|
81
|
+
console.log('ā
You are already running the latest version!');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
console.log(`Latest version: v${info.latestVersion}\n`);
|
|
85
|
+
await performUpdate();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error('Failed to update:', error instanceof Error ? error.message : error);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
51
92
|
// Config command
|
|
52
93
|
program
|
|
53
94
|
.command('config')
|
|
@@ -88,6 +129,9 @@ program
|
|
|
88
129
|
console.log('Not logged in. Please run "anyware login" first.');
|
|
89
130
|
process.exit(1);
|
|
90
131
|
}
|
|
132
|
+
// Check for updates before starting Claude
|
|
133
|
+
// This must happen before Claude takes over stdin/stdout
|
|
134
|
+
await checkAndNotify();
|
|
91
135
|
const config = loadConfig();
|
|
92
136
|
try {
|
|
93
137
|
// Create server session
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
declare const currentVersion: any;
|
|
2
|
+
export interface VersionInfo {
|
|
3
|
+
currentVersion: string;
|
|
4
|
+
latestVersion: string;
|
|
5
|
+
lastChecked: Date;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Check npm registry for the latest version
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkForUpdate(): Promise<VersionInfo>;
|
|
11
|
+
/**
|
|
12
|
+
* Check if an update is available
|
|
13
|
+
*/
|
|
14
|
+
export declare function isUpdateAvailable(info: VersionInfo): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Perform the update via npm
|
|
17
|
+
*/
|
|
18
|
+
export declare function performUpdate(): Promise<void>;
|
|
19
|
+
export interface VersionCache {
|
|
20
|
+
lastUpdateCheck?: string;
|
|
21
|
+
autoUpdateEnabled?: boolean;
|
|
22
|
+
autoUpdatePromptExpiry?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if enough time has passed since last update check
|
|
26
|
+
*/
|
|
27
|
+
export declare function shouldCheckForUpdate(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Save the last check time
|
|
30
|
+
*/
|
|
31
|
+
export declare function saveLastCheckTime(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check for updates and handle auto-update if enabled
|
|
34
|
+
* Called automatically when running the CLI
|
|
35
|
+
*/
|
|
36
|
+
export declare function checkAndNotify(): Promise<void>;
|
|
37
|
+
export { currentVersion };
|
|
38
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/update/update.ts"],"names":[],"mappings":"AAKA,QAAA,MAAiB,cAAc,KAAkC,CAAC;AAOlE,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,IAAI,CAAC;CACnB;AAQD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAwB3D;AAqBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAM5D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqCnD;AA4BD,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAID;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAS9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AA4BD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDpD;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
import { createRequire } from 'module';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const { version: currentVersion } = require('../../package.json');
|
|
6
|
+
const UPDATE_CHECK_INTERVAL = 15 * 60 * 1000; // 15 minutes
|
|
7
|
+
const AUTO_UPDATE_PROMPT_DURATION = 24 * 60 * 60 * 1000; // 24 hours
|
|
8
|
+
const NPM_REGISTRY_API = 'https://registry.npmjs.org/@diggerhq/anyware';
|
|
9
|
+
const NPM_PACKAGE_NAME = '@diggerhq/anyware';
|
|
10
|
+
/**
|
|
11
|
+
* Check npm registry for the latest version
|
|
12
|
+
*/
|
|
13
|
+
export async function checkForUpdate() {
|
|
14
|
+
const controller = new AbortController();
|
|
15
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(NPM_REGISTRY_API, {
|
|
18
|
+
signal: controller.signal,
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`npm registry returned status ${response.status}`);
|
|
22
|
+
}
|
|
23
|
+
const pkgInfo = (await response.json());
|
|
24
|
+
const latestVersion = pkgInfo['dist-tags'].latest;
|
|
25
|
+
return {
|
|
26
|
+
currentVersion,
|
|
27
|
+
latestVersion,
|
|
28
|
+
lastChecked: new Date(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
clearTimeout(timeout);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Compare two semantic versions
|
|
37
|
+
* Returns -1 if v1 < v2, 0 if v1 == v2, 1 if v1 > v2
|
|
38
|
+
*/
|
|
39
|
+
function compareVersions(v1, v2) {
|
|
40
|
+
const parts1 = v1.split('.').map(Number);
|
|
41
|
+
const parts2 = v2.split('.').map(Number);
|
|
42
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
43
|
+
const p1 = parts1[i] || 0;
|
|
44
|
+
const p2 = parts2[i] || 0;
|
|
45
|
+
if (p1 < p2)
|
|
46
|
+
return -1;
|
|
47
|
+
if (p1 > p2)
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if an update is available
|
|
54
|
+
*/
|
|
55
|
+
export function isUpdateAvailable(info) {
|
|
56
|
+
return (info.latestVersion !== '' &&
|
|
57
|
+
info.currentVersion !== info.latestVersion &&
|
|
58
|
+
compareVersions(info.currentVersion, info.latestVersion) < 0);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Perform the update via npm
|
|
62
|
+
*/
|
|
63
|
+
export async function performUpdate() {
|
|
64
|
+
console.log('Checking for anyware installation method...');
|
|
65
|
+
// Check if npm is available
|
|
66
|
+
const npmAvailable = await new Promise((resolve) => {
|
|
67
|
+
const proc = spawn('npm', ['--version'], { stdio: 'ignore' });
|
|
68
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
69
|
+
proc.on('error', () => resolve(false));
|
|
70
|
+
});
|
|
71
|
+
if (!npmAvailable) {
|
|
72
|
+
throw new Error(`npm not found. Please install anyware using npm: npm install -g ${NPM_PACKAGE_NAME}`);
|
|
73
|
+
}
|
|
74
|
+
console.log(`Updating ${NPM_PACKAGE_NAME}...`);
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
const proc = spawn('npm', ['install', '-g', NPM_PACKAGE_NAME], {
|
|
77
|
+
stdio: 'inherit',
|
|
78
|
+
});
|
|
79
|
+
proc.on('close', (code) => {
|
|
80
|
+
if (code === 0) {
|
|
81
|
+
console.log('\nā
Update completed successfully!');
|
|
82
|
+
console.log("\nRestart your terminal or run 'anyware -V' to verify the new version.");
|
|
83
|
+
resolve();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
reject(new Error(`npm install failed with code ${code}`));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
proc.on('error', (err) => {
|
|
90
|
+
reject(new Error(`Failed to run npm: ${err.message}`));
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Prompt user for auto-update preference
|
|
96
|
+
*/
|
|
97
|
+
async function promptAutoUpdate() {
|
|
98
|
+
// Check if stdin is a TTY
|
|
99
|
+
if (!process.stdin.isTTY) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const rl = createInterface({
|
|
103
|
+
input: process.stdin,
|
|
104
|
+
output: process.stderr,
|
|
105
|
+
});
|
|
106
|
+
return new Promise((resolve) => {
|
|
107
|
+
rl.question('Would you like to automatically update anyware when new versions are available? (Y/n): ', (answer) => {
|
|
108
|
+
rl.close();
|
|
109
|
+
const response = answer.trim().toLowerCase();
|
|
110
|
+
resolve(response === 'y' || response === 'yes' || response === '');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
import { loadVersionCache, saveVersionCache } from '../config/config.js';
|
|
115
|
+
/**
|
|
116
|
+
* Check if enough time has passed since last update check
|
|
117
|
+
*/
|
|
118
|
+
export function shouldCheckForUpdate() {
|
|
119
|
+
const cache = loadVersionCache();
|
|
120
|
+
if (!cache.lastUpdateCheck) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
const lastCheck = new Date(cache.lastUpdateCheck);
|
|
124
|
+
return Date.now() - lastCheck.getTime() > UPDATE_CHECK_INTERVAL;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Save the last check time
|
|
128
|
+
*/
|
|
129
|
+
export function saveLastCheckTime() {
|
|
130
|
+
const cache = loadVersionCache();
|
|
131
|
+
cache.lastUpdateCheck = new Date().toISOString();
|
|
132
|
+
saveVersionCache(cache);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if auto-update is enabled
|
|
136
|
+
*/
|
|
137
|
+
function shouldAutoUpdate(cache) {
|
|
138
|
+
// If preference hasn't been set or has expired, need to prompt
|
|
139
|
+
if (cache.autoUpdateEnabled === undefined ||
|
|
140
|
+
!cache.autoUpdatePromptExpiry ||
|
|
141
|
+
new Date() > new Date(cache.autoUpdatePromptExpiry)) {
|
|
142
|
+
return { autoUpdate: false, shouldPrompt: true };
|
|
143
|
+
}
|
|
144
|
+
return { autoUpdate: cache.autoUpdateEnabled, shouldPrompt: false };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Save auto-update preference
|
|
148
|
+
*/
|
|
149
|
+
function saveAutoUpdatePreference(enabled) {
|
|
150
|
+
const cache = loadVersionCache();
|
|
151
|
+
cache.autoUpdateEnabled = enabled;
|
|
152
|
+
cache.autoUpdatePromptExpiry = new Date(Date.now() + AUTO_UPDATE_PROMPT_DURATION).toISOString();
|
|
153
|
+
saveVersionCache(cache);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check for updates and handle auto-update if enabled
|
|
157
|
+
* Called automatically when running the CLI
|
|
158
|
+
*/
|
|
159
|
+
export async function checkAndNotify() {
|
|
160
|
+
if (!shouldCheckForUpdate()) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
let info;
|
|
164
|
+
try {
|
|
165
|
+
info = await checkForUpdate();
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Silently fail update checks to not disrupt user experience
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Save the check time regardless of result
|
|
172
|
+
saveLastCheckTime();
|
|
173
|
+
if (!isUpdateAvailable(info)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Load version cache to check auto-update preference
|
|
177
|
+
const cache = loadVersionCache();
|
|
178
|
+
const { autoUpdate: shouldDoAutoUpdate, shouldPrompt } = shouldAutoUpdate(cache);
|
|
179
|
+
let autoUpdate = shouldDoAutoUpdate;
|
|
180
|
+
// If we need to prompt the user
|
|
181
|
+
if (shouldPrompt) {
|
|
182
|
+
console.error('\n');
|
|
183
|
+
console.error(' New version of anyware is available!');
|
|
184
|
+
console.error(` Current: v${info.currentVersion} -> Latest: v${info.latestVersion}\n`);
|
|
185
|
+
try {
|
|
186
|
+
const enabled = await promptAutoUpdate();
|
|
187
|
+
saveAutoUpdatePreference(enabled);
|
|
188
|
+
autoUpdate = enabled;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// If prompt fails, just return
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Perform auto-update if enabled
|
|
196
|
+
if (autoUpdate) {
|
|
197
|
+
console.error(`\nš Auto-updating anyware to v${info.latestVersion}...`);
|
|
198
|
+
try {
|
|
199
|
+
await performUpdate();
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
console.error(`\nā Auto-update failed: ${err instanceof Error ? err.message : err}`);
|
|
203
|
+
console.error('You can manually update by running: anyware update\n');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
export { currentVersion };
|
|
208
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/update/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElE,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAC3D,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AACpE,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AACxE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAc7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAElD,OAAO;YACL,cAAc;YACd,aAAa;YACb,WAAW,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,EAAU,EAAE,EAAU;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,OAAO,CACL,IAAI,CAAC,aAAa,KAAK,EAAE;QACzB,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,aAAa;QAC1C,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAE3D,4BAA4B;IAC5B,MAAM,YAAY,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,mEAAmE,gBAAgB,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,gBAAgB,KAAK,CAAC,CAAC;IAE/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE;YAC7D,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;gBACtF,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,0BAA0B;IAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CACT,yFAAyF,EACzF,CAAC,MAAM,EAAE,EAAE;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,CAAC,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,qBAAqB,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,KAAK,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAmB;IAC3C,+DAA+D;IAC/D,IACE,KAAK,CAAC,iBAAiB,KAAK,SAAS;QACrC,CAAC,KAAK,CAAC,sBAAsB;QAC7B,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,EACnD,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAAgB;IAChD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;IAClC,KAAK,CAAC,sBAAsB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,2BAA2B,CAAC,CAAC,WAAW,EAAE,CAAC;IAChG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,IAAiB,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO;IACT,CAAC;IAED,2CAA2C;IAC3C,iBAAiB,EAAE,CAAC;IAEpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEjF,IAAI,UAAU,GAAG,kBAAkB,CAAC;IAEpC,gCAAgC;IAChC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,cAAc,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAExF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACzC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAClC,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;YAC/B,OAAO;QACT,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|