@scitus/hazel 0.0.1 → 0.0.3

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/index.js CHANGED
@@ -11,11 +11,14 @@ import { resolve } from 'path';
11
11
  loadEnv({ path: resolve(process.cwd(), '.env') });
12
12
  import chalk from 'chalk';
13
13
  import { runApiMode } from './api-mode.js';
14
+ import { checkForUpdates } from './updater.js';
14
15
  const hazel = {
15
16
  error: chalk.red,
16
17
  };
17
18
  async function main() {
18
19
  try {
20
+ // Auto-update silently if new version available
21
+ await checkForUpdates(true);
19
22
  await runApiMode();
20
23
  }
21
24
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,uBAAuB;AACvB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,KAAK,CAAC,GAAG;CACjB,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,uBAAuB;AACvB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,KAAK,CAAC,GAAG;CACjB,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Auto-updater for Hazel CLI
3
+ *
4
+ * Checks npm registry for updates and can auto-update.
5
+ */
6
+ /**
7
+ * Check for updates and auto-update if available
8
+ *
9
+ * @param autoUpdate - If true, automatically updates and restarts
10
+ * @returns true if was updated, false otherwise
11
+ */
12
+ export declare function checkForUpdates(autoUpdate?: boolean): Promise<boolean>;
13
+ //# sourceMappingURL=updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6EH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BzE"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Auto-updater for Hazel CLI
3
+ *
4
+ * Checks npm registry for updates and can auto-update.
5
+ */
6
+ import { execSync } from 'child_process';
7
+ import { readFileSync } from 'fs';
8
+ import { fileURLToPath } from 'url';
9
+ import { dirname, join } from 'path';
10
+ import chalk from 'chalk';
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ const PACKAGE_NAME = '@scitus/hazel';
13
+ /**
14
+ * Get current installed version
15
+ */
16
+ function getCurrentVersion() {
17
+ try {
18
+ const pkgPath = join(__dirname, '../../package.json');
19
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
20
+ return pkg.version;
21
+ }
22
+ catch {
23
+ return '0.0.0';
24
+ }
25
+ }
26
+ /**
27
+ * Get latest version from npm registry
28
+ */
29
+ async function getLatestVersion() {
30
+ try {
31
+ const res = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, {
32
+ headers: { 'Accept': 'application/json' },
33
+ });
34
+ if (!res.ok)
35
+ return null;
36
+ const data = await res.json();
37
+ return data.version;
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * Compare semantic versions
45
+ * Returns: 1 if a > b, -1 if a < b, 0 if equal
46
+ */
47
+ function compareVersions(a, b) {
48
+ const pa = a.split('.').map(Number);
49
+ const pb = b.split('.').map(Number);
50
+ for (let i = 0; i < 3; i++) {
51
+ if (pa[i] > pb[i])
52
+ return 1;
53
+ if (pa[i] < pb[i])
54
+ return -1;
55
+ }
56
+ return 0;
57
+ }
58
+ /**
59
+ * Perform the update silently
60
+ */
61
+ function performUpdate() {
62
+ try {
63
+ console.log(chalk.cyan(' Updating Hazel...'));
64
+ execSync(`npm install -g ${PACKAGE_NAME}@latest`, {
65
+ stdio: 'pipe',
66
+ timeout: 60000
67
+ });
68
+ console.log(chalk.green(' ✓ Updated! Restarting...\n'));
69
+ return true;
70
+ }
71
+ catch {
72
+ // Silent fail - continue with current version
73
+ return false;
74
+ }
75
+ }
76
+ /**
77
+ * Check for updates and auto-update if available
78
+ *
79
+ * @param autoUpdate - If true, automatically updates and restarts
80
+ * @returns true if was updated, false otherwise
81
+ */
82
+ export async function checkForUpdates(autoUpdate = true) {
83
+ if (process.env.HAZEL_SKIP_UPDATE === 'true') {
84
+ return false;
85
+ }
86
+ const current = getCurrentVersion();
87
+ const latest = await getLatestVersion();
88
+ if (!latest || compareVersions(latest, current) <= 0) {
89
+ return false;
90
+ }
91
+ // Update available
92
+ console.log(chalk.yellow(` ⬆ Updating: ${current} → ${latest}`));
93
+ if (autoUpdate && performUpdate()) {
94
+ // Re-execute with skip flag to prevent update loop
95
+ try {
96
+ execSync(`HAZEL_SKIP_UPDATE=true ${PACKAGE_NAME}`, { stdio: 'inherit' });
97
+ process.exit(0);
98
+ }
99
+ catch {
100
+ // Continue with current session
101
+ }
102
+ return true;
103
+ }
104
+ return false;
105
+ }
106
+ //# sourceMappingURL=updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scitus/hazel",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Hazel CLI - Your dedicated AI coding companion from Scitus Solutions Ltd.",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",