@agentuity/cli 1.0.8 → 1.0.9

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 (42) hide show
  1. package/dist/cmd/ai/claude-code/constants.d.ts +13 -0
  2. package/dist/cmd/ai/claude-code/constants.d.ts.map +1 -0
  3. package/dist/cmd/ai/claude-code/constants.js +16 -0
  4. package/dist/cmd/ai/claude-code/constants.js.map +1 -0
  5. package/dist/cmd/ai/claude-code/index.d.ts +3 -0
  6. package/dist/cmd/ai/claude-code/index.d.ts.map +1 -0
  7. package/dist/cmd/ai/claude-code/index.js +22 -0
  8. package/dist/cmd/ai/claude-code/index.js.map +1 -0
  9. package/dist/cmd/ai/claude-code/install.d.ts +3 -0
  10. package/dist/cmd/ai/claude-code/install.d.ts.map +1 -0
  11. package/dist/cmd/ai/claude-code/install.js +133 -0
  12. package/dist/cmd/ai/claude-code/install.js.map +1 -0
  13. package/dist/cmd/ai/claude-code/uninstall.d.ts +3 -0
  14. package/dist/cmd/ai/claude-code/uninstall.d.ts.map +1 -0
  15. package/dist/cmd/ai/claude-code/uninstall.js +105 -0
  16. package/dist/cmd/ai/claude-code/uninstall.js.map +1 -0
  17. package/dist/cmd/ai/index.d.ts.map +1 -1
  18. package/dist/cmd/ai/index.js +6 -0
  19. package/dist/cmd/ai/index.js.map +1 -1
  20. package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
  21. package/dist/cmd/build/vite/server-bundler.js +22 -1
  22. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  23. package/dist/cmd/upgrade/index.d.ts.map +1 -1
  24. package/dist/cmd/upgrade/index.js +24 -11
  25. package/dist/cmd/upgrade/index.js.map +1 -1
  26. package/dist/cmd/upgrade/npm-availability.d.ts +45 -12
  27. package/dist/cmd/upgrade/npm-availability.d.ts.map +1 -1
  28. package/dist/cmd/upgrade/npm-availability.js +73 -26
  29. package/dist/cmd/upgrade/npm-availability.js.map +1 -1
  30. package/dist/version-check.d.ts.map +1 -1
  31. package/dist/version-check.js +13 -2
  32. package/dist/version-check.js.map +1 -1
  33. package/package.json +6 -6
  34. package/src/cmd/ai/claude-code/constants.ts +26 -0
  35. package/src/cmd/ai/claude-code/index.ts +23 -0
  36. package/src/cmd/ai/claude-code/install.ts +181 -0
  37. package/src/cmd/ai/claude-code/uninstall.ts +122 -0
  38. package/src/cmd/ai/index.ts +6 -0
  39. package/src/cmd/build/vite/server-bundler.ts +28 -1
  40. package/src/cmd/upgrade/index.ts +35 -12
  41. package/src/cmd/upgrade/npm-availability.ts +106 -36
  42. package/src/version-check.ts +20 -2
@@ -1,26 +1,23 @@
1
1
  /**
2
2
  * npm registry availability checking utilities.
3
- * Used to verify a version is available on npm before attempting upgrade.
3
+ * Used to verify a version is available via bun's resolver before attempting upgrade.
4
4
  */
5
- export interface CheckNpmOptions {
6
- /** Timeout in milliseconds (default: 5000 for explicit, 1000 for quick) */
7
- timeoutMs?: number;
8
- }
9
5
  /**
10
- * Check if a specific version of @agentuity/cli is available on npm registry.
11
- * Uses the npm registry API directly for faster response than `npm view`.
6
+ * Check if a specific version of @agentuity/cli is resolvable by bun.
7
+ * Uses `bun info` to verify bun's own resolver/CDN can see the version,
8
+ * which avoids the race where npm registry returns 200 but bun's CDN
9
+ * has not yet propagated the version.
12
10
  *
13
11
  * @param version - Version to check (with or without 'v' prefix)
14
- * @param options - Optional configuration
15
12
  * @returns true if version is available, false otherwise
16
13
  */
17
- export declare function isVersionAvailableOnNpm(version: string, options?: CheckNpmOptions): Promise<boolean>;
14
+ export declare function isVersionAvailableOnNpm(version: string): Promise<boolean>;
18
15
  /**
19
- * Quick check if a version is available on npm with a short timeout.
20
- * Used for implicit version checks (auto-upgrade flow) to avoid blocking the user's command.
16
+ * Quick check if a version is available via bun's resolver.
17
+ * Used for implicit version checks (auto-upgrade flow).
21
18
  *
22
19
  * @param version - Version to check (with or without 'v' prefix)
23
- * @returns true if version is available, false if unavailable or timeout
20
+ * @returns true if version is available, false if unavailable or error
24
21
  */
25
22
  export declare function isVersionAvailableOnNpmQuick(version: string): Promise<boolean>;
26
23
  export interface WaitForNpmOptions {
@@ -41,4 +38,40 @@ export interface WaitForNpmOptions {
41
38
  * @returns true if version became available, false if timed out
42
39
  */
43
40
  export declare function waitForNpmAvailability(version: string, options?: WaitForNpmOptions): Promise<boolean>;
41
+ /**
42
+ * Check whether a bun install failure is a transient resolution error
43
+ * caused by npm CDN propagation delays.
44
+ */
45
+ export declare function isResolutionError(stderr: string): boolean;
46
+ export interface InstallWithRetryOptions {
47
+ /** Maximum number of attempts including the first (default: 7 → 1 initial + 6 retries) */
48
+ maxAttempts?: number;
49
+ /** Initial delay in ms before the first retry (default: 5000) */
50
+ initialDelayMs?: number;
51
+ /** Maximum delay cap in ms (default: 30000) */
52
+ maxDelayMs?: number;
53
+ /** Multiplier applied to the delay after each retry (default: 2) */
54
+ multiplier?: number;
55
+ /** Callback invoked before each retry with the attempt number and upcoming delay */
56
+ onRetry?: (attempt: number, delayMs: number) => void;
57
+ }
58
+ /**
59
+ * Run an install function and retry on transient resolution errors with
60
+ * exponential backoff. This covers the window (~2 min) where npm CDN nodes
61
+ * have not yet propagated a newly-published version.
62
+ *
63
+ * Total wait with defaults: 5 + 10 + 20 + 30 + 30 + 30 = 125 s ≈ 2 min
64
+ *
65
+ * @param installFn - Async function that performs the install and returns exitCode + stderr
66
+ * @param options - Retry configuration
67
+ * @returns The successful result (exitCode 0)
68
+ * @throws Error if all retries are exhausted or a non-resolution error occurs
69
+ */
70
+ export declare function installWithRetry(installFn: () => Promise<{
71
+ exitCode: number;
72
+ stderr: Buffer;
73
+ }>, options?: InstallWithRetryOptions): Promise<{
74
+ exitCode: number;
75
+ stderr: Buffer;
76
+ }>;
44
77
  //# sourceMappingURL=npm-availability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"npm-availability.d.ts","sourceRoot":"","sources":["../../../src/cmd/upgrade/npm-availability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,eAAe;IAC/B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpF;AAED,MAAM,WAAW,iBAAiB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
1
+ {"version":3,"file":"npm-availability.d.ts","sourceRoot":"","sources":["../../../src/cmd/upgrade/npm-availability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB/E;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpF;AAED,MAAM,WAAW,iBAAiB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAQD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,MAAM,WAAW,uBAAuB;IACvC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACrC,SAAS,EAAE,MAAM,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9D,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqC/C"}
@@ -1,49 +1,48 @@
1
1
  /**
2
2
  * npm registry availability checking utilities.
3
- * Used to verify a version is available on npm before attempting upgrade.
3
+ * Used to verify a version is available via bun's resolver before attempting upgrade.
4
4
  */
5
- const NPM_REGISTRY_URL = 'https://registry.npmjs.org';
6
- const PACKAGE_NAME = '@agentuity/cli';
7
- /** Default timeout for quick checks (implicit version check) */
8
- const QUICK_CHECK_TIMEOUT_MS = 1000;
9
- /** Default timeout for explicit upgrade command */
10
- const EXPLICIT_CHECK_TIMEOUT_MS = 5000;
5
+ import { $ } from 'bun';
6
+ import { tmpdir } from 'node:os';
7
+ const PACKAGE_SPEC = '@agentuity/cli';
11
8
  /**
12
- * Check if a specific version of @agentuity/cli is available on npm registry.
13
- * Uses the npm registry API directly for faster response than `npm view`.
9
+ * Check if a specific version of @agentuity/cli is resolvable by bun.
10
+ * Uses `bun info` to verify bun's own resolver/CDN can see the version,
11
+ * which avoids the race where npm registry returns 200 but bun's CDN
12
+ * has not yet propagated the version.
14
13
  *
15
14
  * @param version - Version to check (with or without 'v' prefix)
16
- * @param options - Optional configuration
17
15
  * @returns true if version is available, false otherwise
18
16
  */
19
- export async function isVersionAvailableOnNpm(version, options = {}) {
20
- const { timeoutMs = EXPLICIT_CHECK_TIMEOUT_MS } = options;
17
+ export async function isVersionAvailableOnNpm(version) {
21
18
  const normalizedVersion = version.replace(/^v/, '');
22
- const url = `${NPM_REGISTRY_URL}/${encodeURIComponent(PACKAGE_NAME)}/${normalizedVersion}`;
23
19
  try {
24
- const response = await fetch(url, {
25
- method: 'HEAD', // Only need to check existence, not full metadata
26
- signal: AbortSignal.timeout(timeoutMs),
27
- headers: {
28
- Accept: 'application/json',
29
- },
30
- });
31
- return response.ok;
20
+ const result = await $ `bun info ${PACKAGE_SPEC}@${normalizedVersion} --json`
21
+ .cwd(tmpdir())
22
+ .quiet()
23
+ .nothrow();
24
+ if (result.exitCode !== 0) {
25
+ return false;
26
+ }
27
+ const info = JSON.parse(result.stdout.toString());
28
+ if (info.error) {
29
+ return false;
30
+ }
31
+ return info.version === normalizedVersion;
32
32
  }
33
33
  catch {
34
- // Network error or timeout - assume not available
35
34
  return false;
36
35
  }
37
36
  }
38
37
  /**
39
- * Quick check if a version is available on npm with a short timeout.
40
- * Used for implicit version checks (auto-upgrade flow) to avoid blocking the user's command.
38
+ * Quick check if a version is available via bun's resolver.
39
+ * Used for implicit version checks (auto-upgrade flow).
41
40
  *
42
41
  * @param version - Version to check (with or without 'v' prefix)
43
- * @returns true if version is available, false if unavailable or timeout
42
+ * @returns true if version is available, false if unavailable or error
44
43
  */
45
44
  export async function isVersionAvailableOnNpmQuick(version) {
46
- return isVersionAvailableOnNpm(version, { timeoutMs: QUICK_CHECK_TIMEOUT_MS });
45
+ return isVersionAvailableOnNpm(version);
47
46
  }
48
47
  /**
49
48
  * Wait for a version to become available on npm with exponential backoff.
@@ -70,4 +69,52 @@ export async function waitForNpmAvailability(version, options = {}) {
70
69
  }
71
70
  return false;
72
71
  }
72
+ /**
73
+ * Patterns in bun's stderr that indicate a resolution/CDN propagation failure
74
+ * (as opposed to a permanent install error like permissions or disk space).
75
+ */
76
+ const RESOLUTION_ERROR_PATTERNS = [/failed to resolve/i, /no version matching/i];
77
+ /**
78
+ * Check whether a bun install failure is a transient resolution error
79
+ * caused by npm CDN propagation delays.
80
+ */
81
+ export function isResolutionError(stderr) {
82
+ return RESOLUTION_ERROR_PATTERNS.some((pattern) => pattern.test(stderr));
83
+ }
84
+ /**
85
+ * Run an install function and retry on transient resolution errors with
86
+ * exponential backoff. This covers the window (~2 min) where npm CDN nodes
87
+ * have not yet propagated a newly-published version.
88
+ *
89
+ * Total wait with defaults: 5 + 10 + 20 + 30 + 30 + 30 = 125 s ≈ 2 min
90
+ *
91
+ * @param installFn - Async function that performs the install and returns exitCode + stderr
92
+ * @param options - Retry configuration
93
+ * @returns The successful result (exitCode 0)
94
+ * @throws Error if all retries are exhausted or a non-resolution error occurs
95
+ */
96
+ export async function installWithRetry(installFn, options = {}) {
97
+ const { maxAttempts = 7, initialDelayMs = 5000, maxDelayMs = 30000, multiplier = 2, onRetry, } = options;
98
+ let delay = initialDelayMs;
99
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
100
+ const result = await installFn();
101
+ if (result.exitCode === 0) {
102
+ return result;
103
+ }
104
+ const stderr = result.stderr.toString();
105
+ // Only retry on resolution/propagation errors — bail immediately for anything else
106
+ if (!isResolutionError(stderr)) {
107
+ throw new Error(stderr);
108
+ }
109
+ // Last attempt exhausted — throw
110
+ if (attempt === maxAttempts) {
111
+ throw new Error(stderr);
112
+ }
113
+ onRetry?.(attempt, delay);
114
+ await new Promise((resolve) => setTimeout(resolve, delay));
115
+ delay = Math.min(Math.round(delay * multiplier), maxDelayMs);
116
+ }
117
+ // Unreachable, but satisfies TypeScript
118
+ throw new Error('Install failed after retries');
119
+ }
73
120
  //# sourceMappingURL=npm-availability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"npm-availability.js","sourceRoot":"","sources":["../../../src/cmd/upgrade/npm-availability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAEtC,gEAAgE;AAChE,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,mDAAmD;AACnD,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAOvC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,OAAe,EACf,UAA2B,EAAE;IAE7B,MAAM,EAAE,SAAS,GAAG,yBAAyB,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,GAAG,gBAAgB,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,iBAAiB,EAAE,CAAC;IAE3F,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM,EAAE,kDAAkD;YAClE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,OAAO,EAAE;gBACR,MAAM,EAAE,kBAAkB;aAC1B;SACD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;QAClD,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAAe;IACjE,OAAO,uBAAuB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAChF,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,OAAe,EACf,UAA6B,EAAE;IAE/B,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAExF,yBAAyB;IACzB,IAAI,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iCAAiC;IACjC,IAAI,KAAK,GAAG,cAAc,CAAC;IAC3B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3D,IAAI,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"npm-availability.js","sourceRoot":"","sources":["../../../src/cmd/upgrade/npm-availability.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA8MvF;;;GAGG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACR,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B,EACD,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,aAAa,EAAE,oBAAoB,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC,IAAI,CAAC,CAoEf"}
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAgOvF;;;GAGG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACR,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B,EACD,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,aAAa,EAAE,oBAAoB,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC,IAAI,CAAC,CAoEf"}
@@ -134,9 +134,20 @@ async function performUpgrade(logger, targetVersion) {
134
134
  // Remove 'v' prefix for npm version
135
135
  const npmVersion = targetVersion.replace(/^v/, '');
136
136
  logger.info('Upgrading to version %s...', npmVersion);
137
- // Use bun to install the specific version globally
137
+ // Use bun to install the specific version globally with retry for CDN propagation delays
138
138
  // Run from tmpdir to avoid interference from any local package.json/node_modules
139
- await $ `bun add -g @agentuity/cli@${npmVersion}`.cwd(tmpdir()).quiet();
139
+ const { installWithRetry } = await import('./cmd/upgrade/npm-availability');
140
+ await installWithRetry(async () => {
141
+ const result = await $ `bun add -g @agentuity/cli@${npmVersion}`
142
+ .cwd(tmpdir())
143
+ .quiet()
144
+ .nothrow();
145
+ return { exitCode: result.exitCode, stderr: result.stderr };
146
+ }, {
147
+ onRetry: (attempt, delayMs) => {
148
+ logger.info('Package not yet available on CDN, retrying in %ds (attempt %d)...', Math.round(delayMs / 1000), attempt);
149
+ },
150
+ });
140
151
  // If we got here, the upgrade succeeded
141
152
  // Re-run the original command with the new binary
142
153
  const args = process.argv.slice(2);
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/cli",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -41,9 +41,9 @@
41
41
  "prepublishOnly": "bun run clean && bun run build"
42
42
  },
43
43
  "dependencies": {
44
- "@agentuity/auth": "1.0.8",
45
- "@agentuity/core": "1.0.8",
46
- "@agentuity/server": "1.0.8",
44
+ "@agentuity/auth": "1.0.9",
45
+ "@agentuity/core": "1.0.9",
46
+ "@agentuity/server": "1.0.9",
47
47
  "@datasert/cronjs-parser": "^1.4.0",
48
48
  "@terascope/fetch-github-release": "^2.2.1",
49
49
  "@vitejs/plugin-react": "^5.1.2",
@@ -61,10 +61,10 @@
61
61
  "typescript": "^5.9.0",
62
62
  "vite": "^7.2.7",
63
63
  "zod": "^4.3.5",
64
- "@agentuity/frontend": "1.0.8"
64
+ "@agentuity/frontend": "1.0.9"
65
65
  },
66
66
  "devDependencies": {
67
- "@agentuity/test-utils": "1.0.8",
67
+ "@agentuity/test-utils": "1.0.9",
68
68
  "@types/adm-zip": "^0.5.7",
69
69
  "@types/bun": "latest",
70
70
  "@types/tar-fs": "^2.0.4",
@@ -0,0 +1,26 @@
1
+ import { homedir } from 'node:os';
2
+ import { join } from 'node:path';
3
+
4
+ export interface ClaudeSettings {
5
+ permissions?: {
6
+ allow?: string[];
7
+ deny?: string[];
8
+ };
9
+ [key: string]: unknown;
10
+ }
11
+
12
+ export const CLAUDE_DIR = join(homedir(), '.claude');
13
+ export const CLAUDE_SETTINGS_FILE = join(CLAUDE_DIR, 'settings.local.json');
14
+ export const PLUGIN_INSTALL_DIR = join(homedir(), '.agentuity', 'plugins', 'claude-code');
15
+
16
+ export const AGENTUITY_ALLOW_PERMISSIONS = [
17
+ 'Bash(agentuity cloud *)',
18
+ 'Bash(agentuity auth whoami *)',
19
+ ];
20
+
21
+ export const AGENTUITY_DENY_PERMISSIONS = [
22
+ 'Bash(agentuity cloud secrets *)',
23
+ 'Bash(agentuity cloud secret *)',
24
+ 'Bash(agentuity cloud apikey *)',
25
+ 'Bash(agentuity auth token *)',
26
+ ];
@@ -0,0 +1,23 @@
1
+ import { createCommand } from '../../../types';
2
+ import { installSubcommand } from './install';
3
+ import { uninstallSubcommand } from './uninstall';
4
+ import { getCommand } from '../../../command-prefix';
5
+
6
+ export const command = createCommand({
7
+ name: 'claude-code',
8
+ description: 'Agentuity Coder plugin for Claude Code',
9
+ tags: ['fast'],
10
+ examples: [
11
+ {
12
+ command: getCommand('ai claude-code install'),
13
+ description: 'Install Agentuity Coder plugin for Claude Code',
14
+ },
15
+ {
16
+ command: getCommand('ai claude-code uninstall'),
17
+ description: 'Uninstall Agentuity Coder plugin for Claude Code',
18
+ },
19
+ ],
20
+ subcommands: [installSubcommand, uninstallSubcommand],
21
+ });
22
+
23
+ export default command;
@@ -0,0 +1,181 @@
1
+ import { mkdirSync, writeFileSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { createSubcommand, type CommandContext } from '../../../types';
4
+ import * as tui from '../../../tui';
5
+ import { getCommand } from '../../../command-prefix';
6
+ import {
7
+ type ClaudeSettings,
8
+ CLAUDE_DIR,
9
+ CLAUDE_SETTINGS_FILE,
10
+ PLUGIN_INSTALL_DIR,
11
+ AGENTUITY_ALLOW_PERMISSIONS,
12
+ AGENTUITY_DENY_PERMISSIONS,
13
+ } from './constants';
14
+
15
+ async function readClaudeSettings(): Promise<ClaudeSettings> {
16
+ try {
17
+ if (await Bun.file(CLAUDE_SETTINGS_FILE).exists()) {
18
+ const content = readFileSync(CLAUDE_SETTINGS_FILE, 'utf-8');
19
+ return JSON.parse(content);
20
+ }
21
+ } catch {
22
+ // invalid or missing
23
+ }
24
+ return {};
25
+ }
26
+
27
+ function writeClaudeSettings(settings: ClaudeSettings): void {
28
+ mkdirSync(CLAUDE_DIR, { recursive: true });
29
+ writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(settings, null, 2) + '\n');
30
+ }
31
+
32
+ function configurePermissions(settings: ClaudeSettings): number {
33
+ if (!settings.permissions) {
34
+ settings.permissions = {};
35
+ }
36
+ if (!settings.permissions.allow) {
37
+ settings.permissions.allow = [];
38
+ }
39
+ if (!settings.permissions.deny) {
40
+ settings.permissions.deny = [];
41
+ }
42
+
43
+ let added = 0;
44
+
45
+ for (const perm of AGENTUITY_ALLOW_PERMISSIONS) {
46
+ if (!settings.permissions.allow.includes(perm)) {
47
+ settings.permissions.allow.push(perm);
48
+ added++;
49
+ }
50
+ }
51
+
52
+ for (const perm of AGENTUITY_DENY_PERMISSIONS) {
53
+ if (!settings.permissions.deny.includes(perm)) {
54
+ settings.permissions.deny.push(perm);
55
+ added++;
56
+ }
57
+ }
58
+
59
+ return added;
60
+ }
61
+
62
+ async function installPackage(logger: { debug: (msg: string) => void }): Promise<string | null> {
63
+ mkdirSync(PLUGIN_INSTALL_DIR, { recursive: true });
64
+
65
+ const packageJsonPath = join(PLUGIN_INSTALL_DIR, 'package.json');
66
+ if (!(await Bun.file(packageJsonPath).exists())) {
67
+ writeFileSync(
68
+ packageJsonPath,
69
+ JSON.stringify({ name: 'agentuity-claude-code-plugin', private: true }, null, 2)
70
+ );
71
+ }
72
+
73
+ logger.debug(`Installing @agentuity/claude-code to ${PLUGIN_INSTALL_DIR}`);
74
+
75
+ const proc = Bun.spawn(['bun', 'add', '@agentuity/claude-code@latest'], {
76
+ cwd: PLUGIN_INSTALL_DIR,
77
+ stdio: ['ignore', 'pipe', 'pipe'],
78
+ });
79
+
80
+ await proc.exited;
81
+
82
+ const pluginPath = join(PLUGIN_INSTALL_DIR, 'node_modules', '@agentuity', 'claude-code');
83
+ if (await Bun.file(join(pluginPath, '.claude-plugin', 'plugin.json')).exists()) {
84
+ return pluginPath;
85
+ }
86
+
87
+ return null;
88
+ }
89
+
90
+ export const installSubcommand = createSubcommand({
91
+ name: 'install',
92
+ description: 'Install Agentuity Coder plugin for Claude Code',
93
+ tags: ['fast'],
94
+ requires: { auth: true, apiClient: true, org: true },
95
+ examples: [
96
+ {
97
+ command: getCommand('ai claude-code install'),
98
+ description: 'Install Agentuity Coder plugin for Claude Code',
99
+ },
100
+ ],
101
+ async handler(ctx: CommandContext<{ auth: true; apiClient: true; org: true }>) {
102
+ const { options, orgId, logger } = ctx;
103
+ const jsonMode = !!options?.json;
104
+
105
+ if (!jsonMode) {
106
+ tui.newline();
107
+ tui.output(tui.bold('Installing Agentuity Coder plugin for Claude Code'));
108
+ tui.newline();
109
+ tui.success(`Using organization: ${orgId}`);
110
+ }
111
+
112
+ if (!jsonMode) {
113
+ tui.info('Installing @agentuity/claude-code package...');
114
+ }
115
+
116
+ const pluginPath = await installPackage(logger);
117
+
118
+ if (!pluginPath) {
119
+ if (jsonMode) {
120
+ return { success: false, orgId, error: 'Failed to install package' };
121
+ }
122
+ logger.fatal(
123
+ 'Failed to install @agentuity/claude-code package. Make sure bun is installed and try again'
124
+ );
125
+ }
126
+
127
+ if (!jsonMode) {
128
+ tui.success(`Plugin installed to: ${pluginPath}`);
129
+ }
130
+
131
+ const settings = await readClaudeSettings();
132
+
133
+ const permissionsAdded = configurePermissions(settings);
134
+ if (permissionsAdded > 0) {
135
+ if (!jsonMode) {
136
+ tui.success(
137
+ `Configured ${permissionsAdded} permission rules for Agentuity Cloud commands`
138
+ );
139
+ }
140
+ } else {
141
+ if (!jsonMode) {
142
+ tui.info('Permissions already configured');
143
+ }
144
+ }
145
+
146
+ writeClaudeSettings(settings);
147
+
148
+ if (!jsonMode) {
149
+ tui.newline();
150
+ tui.output(tui.bold('Agentuity Coder plugin installed successfully!'));
151
+ tui.newline();
152
+
153
+ tui.info('To use the plugin, start Claude Code with:');
154
+ tui.output(` ${tui.ICONS.bullet} ${tui.bold(`claude --plugin-dir ${pluginPath}`)}`);
155
+ tui.newline();
156
+
157
+ tui.info('Or install permanently via the Claude Code marketplace:');
158
+ tui.output(` ${tui.ICONS.bullet} ${tui.bold('/plugin marketplace add agentuity/sdk')}`);
159
+ tui.output(
160
+ ` ${tui.ICONS.bullet} ${tui.bold('/plugin install agentuity-coder@agentuity')}`
161
+ );
162
+ tui.newline();
163
+
164
+ tui.info('Available commands in Claude Code:');
165
+ tui.output(
166
+ ` ${tui.ICONS.bullet} ${tui.muted('/agentuity-coder')} - Run a task with the agent team`
167
+ );
168
+ tui.output(
169
+ ` ${tui.ICONS.bullet} ${tui.muted('/agentuity-cadence')} - Start autonomous long-running task`
170
+ );
171
+ tui.output(
172
+ ` ${tui.ICONS.bullet} ${tui.muted('/agentuity-memory-save')} - Save session context to memory`
173
+ );
174
+ tui.newline();
175
+ }
176
+
177
+ return { success: true, orgId, pluginPath };
178
+ },
179
+ });
180
+
181
+ export default installSubcommand;