lua-cli 3.5.0-alpha.9 → 3.5.0

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.
Files changed (52) hide show
  1. package/dist/api/backup.api.service.d.ts +9 -12
  2. package/dist/api/backup.api.service.d.ts.map +1 -1
  3. package/dist/api/backup.api.service.js +11 -11
  4. package/dist/api/backup.api.service.js.map +1 -1
  5. package/dist/api/unifiedto.api.service.d.ts +30 -2
  6. package/dist/api/unifiedto.api.service.d.ts.map +1 -1
  7. package/dist/api/unifiedto.api.service.js +17 -2
  8. package/dist/api/unifiedto.api.service.js.map +1 -1
  9. package/dist/cli/command-definitions.d.ts.map +1 -1
  10. package/dist/cli/command-definitions.js +9 -1
  11. package/dist/cli/command-definitions.js.map +1 -1
  12. package/dist/commands/index.d.ts +1 -0
  13. package/dist/commands/index.d.ts.map +1 -1
  14. package/dist/commands/index.js +1 -0
  15. package/dist/commands/index.js.map +1 -1
  16. package/dist/commands/integrations.d.ts.map +1 -1
  17. package/dist/commands/integrations.js +111 -250
  18. package/dist/commands/integrations.js.map +1 -1
  19. package/dist/commands/pushBackup.d.ts +3 -2
  20. package/dist/commands/pushBackup.d.ts.map +1 -1
  21. package/dist/commands/pushBackup.js +11 -20
  22. package/dist/commands/pushBackup.js.map +1 -1
  23. package/dist/commands/update.d.ts +14 -0
  24. package/dist/commands/update.d.ts.map +1 -0
  25. package/dist/commands/update.js +81 -0
  26. package/dist/commands/update.js.map +1 -0
  27. package/dist/compiler/plugins/job.plugin.d.ts.map +1 -1
  28. package/dist/compiler/plugins/job.plugin.js +2 -3
  29. package/dist/compiler/plugins/job.plugin.js.map +1 -1
  30. package/dist/index.js +22 -20
  31. package/dist/index.js.map +1 -1
  32. package/dist/interfaces/backup.d.ts +0 -25
  33. package/dist/interfaces/backup.d.ts.map +1 -1
  34. package/dist/interfaces/unifiedto.d.ts +26 -0
  35. package/dist/interfaces/unifiedto.d.ts.map +1 -1
  36. package/dist/types/index.d.ts +1 -1
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/utils/backup-helpers.d.ts +9 -7
  39. package/dist/utils/backup-helpers.d.ts.map +1 -1
  40. package/dist/utils/backup-helpers.js +54 -22
  41. package/dist/utils/backup-helpers.js.map +1 -1
  42. package/dist/utils/cli.d.ts +2 -1
  43. package/dist/utils/cli.d.ts.map +1 -1
  44. package/dist/utils/cli.js +42 -2
  45. package/dist/utils/cli.js.map +1 -1
  46. package/dist/utils/version-check.d.ts +37 -0
  47. package/dist/utils/version-check.d.ts.map +1 -0
  48. package/dist/utils/version-check.js +120 -0
  49. package/dist/utils/version-check.js.map +1 -0
  50. package/docs/README.md +2 -2
  51. package/package.json +1 -1
  52. package/template/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Version Check Utilities
3
+ * Checks npm registry for the latest lua-cli version and caches the result.
4
+ * Used by the update command (LUA-123) and the outdated version warning (LUA-124).
5
+ */
6
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { homedir } from 'os';
9
+ import { compareVersions, parseVersion } from './semver.js';
10
+ const CACHE_DIR = join(homedir(), '.lua-cli');
11
+ const CACHE_FILE = join(CACHE_DIR, 'version-check.json');
12
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
13
+ const NPM_REGISTRY_BASE = 'https://registry.npmjs.org/lua-cli';
14
+ const FETCH_TIMEOUT_MS = 3000;
15
+ /**
16
+ * Get the npm registry URL for the appropriate dist-tag.
17
+ * If currentVersion has a pre-release tag (e.g. "alpha"), use that dist-tag.
18
+ * Otherwise use "latest" (stable releases).
19
+ */
20
+ function getRegistryUrl(currentVersion) {
21
+ const { preRelease } = parseVersion(currentVersion);
22
+ if (preRelease) {
23
+ // Extract tag name from pre-release (e.g. "alpha.9" → "alpha", "beta.1" → "beta")
24
+ const tag = preRelease.split('.')[0].replace(/[0-9]/g, '');
25
+ if (tag)
26
+ return `${NPM_REGISTRY_BASE}/${tag}`;
27
+ }
28
+ return `${NPM_REGISTRY_BASE}/latest`;
29
+ }
30
+ /**
31
+ * Read cached version check result.
32
+ * Returns null if cache is missing, corrupt, or expired.
33
+ */
34
+ export function getCachedVersionCheck() {
35
+ try {
36
+ if (!existsSync(CACHE_FILE))
37
+ return null;
38
+ const raw = readFileSync(CACHE_FILE, 'utf8');
39
+ const cache = JSON.parse(raw);
40
+ if (Date.now() - cache.checkedAt > CHECK_INTERVAL_MS)
41
+ return null;
42
+ return cache;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
48
+ /**
49
+ * Save version check result to cache file.
50
+ */
51
+ export function saveCachedVersionCheck(latestVersion) {
52
+ try {
53
+ if (!existsSync(CACHE_DIR)) {
54
+ mkdirSync(CACHE_DIR, { recursive: true });
55
+ }
56
+ writeFileSync(CACHE_FILE, JSON.stringify({ latestVersion, checkedAt: Date.now() }), 'utf8');
57
+ }
58
+ catch {
59
+ // Silently ignore write failures (permissions, disk full, etc.)
60
+ }
61
+ }
62
+ /**
63
+ * Fetch the latest version from npm registry.
64
+ * Uses the dist-tag matching the current version's pre-release channel (e.g. "alpha").
65
+ * Returns null on any failure (network, timeout, parse error).
66
+ */
67
+ export async function fetchLatestVersion(currentVersion) {
68
+ try {
69
+ const url = getRegistryUrl(currentVersion ?? '0.0.0');
70
+ const controller = new AbortController();
71
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
72
+ const response = await fetch(url, { signal: controller.signal });
73
+ clearTimeout(timeout);
74
+ if (!response.ok)
75
+ return null;
76
+ const data = await response.json();
77
+ return data.version ?? null;
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ /**
84
+ * Check if an update is available. Uses 24h cache to avoid hitting npm on every run.
85
+ */
86
+ export async function isUpdateAvailable(currentVersion) {
87
+ const cached = getCachedVersionCheck();
88
+ if (cached) {
89
+ return {
90
+ available: compareVersions(currentVersion, cached.latestVersion) < 0,
91
+ latest: cached.latestVersion,
92
+ };
93
+ }
94
+ const latest = await fetchLatestVersion(currentVersion);
95
+ if (!latest)
96
+ return { available: false, latest: null };
97
+ saveCachedVersionCheck(latest);
98
+ return {
99
+ available: compareVersions(currentVersion, latest) < 0,
100
+ latest,
101
+ };
102
+ }
103
+ /**
104
+ * Print a boxed update warning to stderr (so piped --json stdout is not corrupted).
105
+ */
106
+ export function printUpdateWarning(currentVersion, latestVersion) {
107
+ const msg = `Update available: ${currentVersion} → ${latestVersion}`;
108
+ const tip = 'Run `lua update` to install the latest version';
109
+ const width = Math.max(msg.length, tip.length) + 6;
110
+ const pad = (s) => s + ' '.repeat(width - s.length);
111
+ console.error('');
112
+ console.error(` ╭${'─'.repeat(width)}╮`);
113
+ console.error(` │${' '.repeat(width)}│`);
114
+ console.error(` │${pad(' ' + msg)}│`);
115
+ console.error(` │${pad(' ' + tip)}│`);
116
+ console.error(` │${' '.repeat(width)}│`);
117
+ console.error(` ╰${'─'.repeat(width)}╯`);
118
+ console.error('');
119
+ }
120
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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"}
package/docs/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Lua CLI - Complete API Documentation
2
2
 
3
- Welcome to the comprehensive API documentation for lua-cli v3.5.0-alpha.9. This guide covers every API, class, and function exported by the package.
3
+ Welcome to the comprehensive API documentation for lua-cli v3.5.0. This guide covers every API, class, and function exported by the package.
4
4
 
5
5
  ## 📚 Documentation Index
6
6
 
@@ -245,7 +245,7 @@ Each API doc includes:
245
245
 
246
246
  ---
247
247
 
248
- **Version:** 3.5.0-alpha.9
248
+ **Version:** 3.5.0
249
249
  **Last Updated:** February 2026
250
250
 
251
251
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lua-cli",
3
- "version": "3.5.0-alpha.9",
3
+ "version": "3.5.0",
4
4
  "description": "Build, test, and deploy AI agents with custom tools, webhooks, and scheduled jobs. Features LuaAgent unified configuration, streaming chat, and batch deployment.",
5
5
  "readmeFilename": "README.md",
6
6
  "main": "dist/api-exports.js",
@@ -20,7 +20,7 @@
20
20
  "inquirer": "^12.9.6",
21
21
  "stripe": "^17.5.0",
22
22
  "js-yaml": "^4.1.0",
23
- "lua-cli": "^3.5.0-alpha.9",
23
+ "lua-cli": "^3.5.0",
24
24
  "openai": "^5.23.0",
25
25
  "uuid": "^13.0.0",
26
26
  "zod": "^3.24.1"