superacli 1.1.5 → 1.1.6

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 (191) hide show
  1. package/__tests__/resend-plugin.test.js +22 -1
  2. package/package.json +1 -1
  3. package/plugins/plugins.json +2 -2
  4. package/plugins/resend/plugin.json +279 -2
  5. package/plugins/resend/skills/quickstart/SKILL.md +32 -13
  6. package/temp_resend_cli/repo/.github/scripts/pr-title-check.js +34 -0
  7. package/temp_resend_cli/repo/.github/workflows/ci.yml +67 -0
  8. package/temp_resend_cli/repo/.github/workflows/post-release.yml +51 -0
  9. package/temp_resend_cli/repo/.github/workflows/pr-title-check.yml +13 -0
  10. package/temp_resend_cli/repo/.github/workflows/release.yml +175 -0
  11. package/temp_resend_cli/repo/.github/workflows/test-install-unix.yml +34 -0
  12. package/temp_resend_cli/repo/.github/workflows/test-install-windows.yml +48 -0
  13. package/temp_resend_cli/repo/CHANGELOG.md +31 -0
  14. package/temp_resend_cli/repo/LICENSE +21 -0
  15. package/temp_resend_cli/repo/README.md +450 -0
  16. package/temp_resend_cli/repo/biome.json +36 -0
  17. package/temp_resend_cli/repo/install.ps1 +141 -0
  18. package/temp_resend_cli/repo/install.sh +301 -0
  19. package/temp_resend_cli/repo/package.json +61 -0
  20. package/temp_resend_cli/repo/pnpm-lock.yaml +2439 -0
  21. package/temp_resend_cli/repo/renovate.json +4 -0
  22. package/temp_resend_cli/repo/src/cli.ts +98 -0
  23. package/temp_resend_cli/repo/src/commands/api-keys/create.ts +114 -0
  24. package/temp_resend_cli/repo/src/commands/api-keys/delete.ts +47 -0
  25. package/temp_resend_cli/repo/src/commands/api-keys/index.ts +26 -0
  26. package/temp_resend_cli/repo/src/commands/api-keys/list.ts +35 -0
  27. package/temp_resend_cli/repo/src/commands/api-keys/utils.ts +8 -0
  28. package/temp_resend_cli/repo/src/commands/auth/index.ts +20 -0
  29. package/temp_resend_cli/repo/src/commands/auth/login.ts +234 -0
  30. package/temp_resend_cli/repo/src/commands/auth/logout.ts +105 -0
  31. package/temp_resend_cli/repo/src/commands/broadcasts/create.ts +196 -0
  32. package/temp_resend_cli/repo/src/commands/broadcasts/delete.ts +46 -0
  33. package/temp_resend_cli/repo/src/commands/broadcasts/get.ts +59 -0
  34. package/temp_resend_cli/repo/src/commands/broadcasts/index.ts +43 -0
  35. package/temp_resend_cli/repo/src/commands/broadcasts/list.ts +60 -0
  36. package/temp_resend_cli/repo/src/commands/broadcasts/send.ts +56 -0
  37. package/temp_resend_cli/repo/src/commands/broadcasts/update.ts +95 -0
  38. package/temp_resend_cli/repo/src/commands/broadcasts/utils.ts +35 -0
  39. package/temp_resend_cli/repo/src/commands/contact-properties/create.ts +118 -0
  40. package/temp_resend_cli/repo/src/commands/contact-properties/delete.ts +48 -0
  41. package/temp_resend_cli/repo/src/commands/contact-properties/get.ts +46 -0
  42. package/temp_resend_cli/repo/src/commands/contact-properties/index.ts +48 -0
  43. package/temp_resend_cli/repo/src/commands/contact-properties/list.ts +68 -0
  44. package/temp_resend_cli/repo/src/commands/contact-properties/update.ts +88 -0
  45. package/temp_resend_cli/repo/src/commands/contact-properties/utils.ts +17 -0
  46. package/temp_resend_cli/repo/src/commands/contacts/add-segment.ts +78 -0
  47. package/temp_resend_cli/repo/src/commands/contacts/create.ts +122 -0
  48. package/temp_resend_cli/repo/src/commands/contacts/delete.ts +49 -0
  49. package/temp_resend_cli/repo/src/commands/contacts/get.ts +53 -0
  50. package/temp_resend_cli/repo/src/commands/contacts/index.ts +58 -0
  51. package/temp_resend_cli/repo/src/commands/contacts/list.ts +57 -0
  52. package/temp_resend_cli/repo/src/commands/contacts/remove-segment.ts +48 -0
  53. package/temp_resend_cli/repo/src/commands/contacts/segments.ts +39 -0
  54. package/temp_resend_cli/repo/src/commands/contacts/topics.ts +45 -0
  55. package/temp_resend_cli/repo/src/commands/contacts/update-topics.ts +90 -0
  56. package/temp_resend_cli/repo/src/commands/contacts/update.ts +77 -0
  57. package/temp_resend_cli/repo/src/commands/contacts/utils.ts +119 -0
  58. package/temp_resend_cli/repo/src/commands/doctor.ts +216 -0
  59. package/temp_resend_cli/repo/src/commands/domains/create.ts +83 -0
  60. package/temp_resend_cli/repo/src/commands/domains/delete.ts +42 -0
  61. package/temp_resend_cli/repo/src/commands/domains/get.ts +47 -0
  62. package/temp_resend_cli/repo/src/commands/domains/index.ts +35 -0
  63. package/temp_resend_cli/repo/src/commands/domains/list.ts +53 -0
  64. package/temp_resend_cli/repo/src/commands/domains/update.ts +75 -0
  65. package/temp_resend_cli/repo/src/commands/domains/utils.ts +44 -0
  66. package/temp_resend_cli/repo/src/commands/domains/verify.ts +38 -0
  67. package/temp_resend_cli/repo/src/commands/emails/batch.ts +140 -0
  68. package/temp_resend_cli/repo/src/commands/emails/get.ts +44 -0
  69. package/temp_resend_cli/repo/src/commands/emails/index.ts +30 -0
  70. package/temp_resend_cli/repo/src/commands/emails/list.ts +84 -0
  71. package/temp_resend_cli/repo/src/commands/emails/receiving/attachment.ts +55 -0
  72. package/temp_resend_cli/repo/src/commands/emails/receiving/attachments.ts +68 -0
  73. package/temp_resend_cli/repo/src/commands/emails/receiving/get.ts +58 -0
  74. package/temp_resend_cli/repo/src/commands/emails/receiving/index.ts +28 -0
  75. package/temp_resend_cli/repo/src/commands/emails/receiving/list.ts +59 -0
  76. package/temp_resend_cli/repo/src/commands/emails/receiving/utils.ts +38 -0
  77. package/temp_resend_cli/repo/src/commands/emails/send.ts +189 -0
  78. package/temp_resend_cli/repo/src/commands/open.ts +27 -0
  79. package/temp_resend_cli/repo/src/commands/segments/create.ts +50 -0
  80. package/temp_resend_cli/repo/src/commands/segments/delete.ts +47 -0
  81. package/temp_resend_cli/repo/src/commands/segments/get.ts +38 -0
  82. package/temp_resend_cli/repo/src/commands/segments/index.ts +36 -0
  83. package/temp_resend_cli/repo/src/commands/segments/list.ts +58 -0
  84. package/temp_resend_cli/repo/src/commands/segments/utils.ts +7 -0
  85. package/temp_resend_cli/repo/src/commands/teams/index.ts +10 -0
  86. package/temp_resend_cli/repo/src/commands/teams/list.ts +35 -0
  87. package/temp_resend_cli/repo/src/commands/teams/remove.ts +86 -0
  88. package/temp_resend_cli/repo/src/commands/teams/switch.ts +76 -0
  89. package/temp_resend_cli/repo/src/commands/topics/create.ts +73 -0
  90. package/temp_resend_cli/repo/src/commands/topics/delete.ts +47 -0
  91. package/temp_resend_cli/repo/src/commands/topics/get.ts +42 -0
  92. package/temp_resend_cli/repo/src/commands/topics/index.ts +42 -0
  93. package/temp_resend_cli/repo/src/commands/topics/list.ts +34 -0
  94. package/temp_resend_cli/repo/src/commands/topics/update.ts +59 -0
  95. package/temp_resend_cli/repo/src/commands/topics/utils.ts +16 -0
  96. package/temp_resend_cli/repo/src/commands/webhooks/create.ts +128 -0
  97. package/temp_resend_cli/repo/src/commands/webhooks/delete.ts +49 -0
  98. package/temp_resend_cli/repo/src/commands/webhooks/get.ts +42 -0
  99. package/temp_resend_cli/repo/src/commands/webhooks/index.ts +42 -0
  100. package/temp_resend_cli/repo/src/commands/webhooks/list.ts +55 -0
  101. package/temp_resend_cli/repo/src/commands/webhooks/listen.ts +379 -0
  102. package/temp_resend_cli/repo/src/commands/webhooks/update.ts +83 -0
  103. package/temp_resend_cli/repo/src/commands/webhooks/utils.ts +36 -0
  104. package/temp_resend_cli/repo/src/commands/whoami.ts +71 -0
  105. package/temp_resend_cli/repo/src/lib/actions.ts +157 -0
  106. package/temp_resend_cli/repo/src/lib/client.ts +37 -0
  107. package/temp_resend_cli/repo/src/lib/config.ts +217 -0
  108. package/temp_resend_cli/repo/src/lib/files.ts +15 -0
  109. package/temp_resend_cli/repo/src/lib/help-text.ts +38 -0
  110. package/temp_resend_cli/repo/src/lib/output.ts +56 -0
  111. package/temp_resend_cli/repo/src/lib/pagination.ts +36 -0
  112. package/temp_resend_cli/repo/src/lib/prompts.ts +149 -0
  113. package/temp_resend_cli/repo/src/lib/spinner.ts +100 -0
  114. package/temp_resend_cli/repo/src/lib/table.ts +57 -0
  115. package/temp_resend_cli/repo/src/lib/tty.ts +28 -0
  116. package/temp_resend_cli/repo/src/lib/update-check.ts +169 -0
  117. package/temp_resend_cli/repo/src/lib/version.ts +4 -0
  118. package/temp_resend_cli/repo/tests/commands/api-keys/create.test.ts +196 -0
  119. package/temp_resend_cli/repo/tests/commands/api-keys/delete.test.ts +157 -0
  120. package/temp_resend_cli/repo/tests/commands/api-keys/list.test.ts +134 -0
  121. package/temp_resend_cli/repo/tests/commands/auth/login.test.ts +153 -0
  122. package/temp_resend_cli/repo/tests/commands/auth/logout.test.ts +153 -0
  123. package/temp_resend_cli/repo/tests/commands/broadcasts/create.test.ts +454 -0
  124. package/temp_resend_cli/repo/tests/commands/broadcasts/delete.test.ts +183 -0
  125. package/temp_resend_cli/repo/tests/commands/broadcasts/get.test.ts +147 -0
  126. package/temp_resend_cli/repo/tests/commands/broadcasts/list.test.ts +199 -0
  127. package/temp_resend_cli/repo/tests/commands/broadcasts/send.test.ts +162 -0
  128. package/temp_resend_cli/repo/tests/commands/broadcasts/update.test.ts +288 -0
  129. package/temp_resend_cli/repo/tests/commands/contact-properties/create.test.ts +251 -0
  130. package/temp_resend_cli/repo/tests/commands/contact-properties/delete.test.ts +184 -0
  131. package/temp_resend_cli/repo/tests/commands/contact-properties/get.test.ts +145 -0
  132. package/temp_resend_cli/repo/tests/commands/contact-properties/list.test.ts +181 -0
  133. package/temp_resend_cli/repo/tests/commands/contact-properties/update.test.ts +217 -0
  134. package/temp_resend_cli/repo/tests/commands/contacts/add-segment.test.ts +189 -0
  135. package/temp_resend_cli/repo/tests/commands/contacts/create.test.ts +271 -0
  136. package/temp_resend_cli/repo/tests/commands/contacts/delete.test.ts +193 -0
  137. package/temp_resend_cli/repo/tests/commands/contacts/get.test.ts +149 -0
  138. package/temp_resend_cli/repo/tests/commands/contacts/list.test.ts +176 -0
  139. package/temp_resend_cli/repo/tests/commands/contacts/remove-segment.test.ts +167 -0
  140. package/temp_resend_cli/repo/tests/commands/contacts/segments.test.ts +168 -0
  141. package/temp_resend_cli/repo/tests/commands/contacts/topics.test.ts +164 -0
  142. package/temp_resend_cli/repo/tests/commands/contacts/update-topics.test.ts +248 -0
  143. package/temp_resend_cli/repo/tests/commands/contacts/update.test.ts +206 -0
  144. package/temp_resend_cli/repo/tests/commands/doctor.test.ts +164 -0
  145. package/temp_resend_cli/repo/tests/commands/domains/create.test.ts +193 -0
  146. package/temp_resend_cli/repo/tests/commands/domains/delete.test.ts +157 -0
  147. package/temp_resend_cli/repo/tests/commands/domains/get.test.ts +138 -0
  148. package/temp_resend_cli/repo/tests/commands/domains/list.test.ts +165 -0
  149. package/temp_resend_cli/repo/tests/commands/domains/update.test.ts +224 -0
  150. package/temp_resend_cli/repo/tests/commands/domains/verify.test.ts +118 -0
  151. package/temp_resend_cli/repo/tests/commands/emails/batch.test.ts +324 -0
  152. package/temp_resend_cli/repo/tests/commands/emails/get.test.ts +132 -0
  153. package/temp_resend_cli/repo/tests/commands/emails/receiving/attachment.test.ts +141 -0
  154. package/temp_resend_cli/repo/tests/commands/emails/receiving/attachments.test.ts +169 -0
  155. package/temp_resend_cli/repo/tests/commands/emails/receiving/get.test.ts +141 -0
  156. package/temp_resend_cli/repo/tests/commands/emails/receiving/list.test.ts +182 -0
  157. package/temp_resend_cli/repo/tests/commands/emails/send.test.ts +312 -0
  158. package/temp_resend_cli/repo/tests/commands/segments/create.test.ts +164 -0
  159. package/temp_resend_cli/repo/tests/commands/segments/delete.test.ts +183 -0
  160. package/temp_resend_cli/repo/tests/commands/segments/get.test.ts +138 -0
  161. package/temp_resend_cli/repo/tests/commands/segments/list.test.ts +174 -0
  162. package/temp_resend_cli/repo/tests/commands/teams/list.test.ts +62 -0
  163. package/temp_resend_cli/repo/tests/commands/teams/remove.test.ts +110 -0
  164. package/temp_resend_cli/repo/tests/commands/teams/switch.test.ts +103 -0
  165. package/temp_resend_cli/repo/tests/commands/topics/create.test.ts +192 -0
  166. package/temp_resend_cli/repo/tests/commands/topics/delete.test.ts +157 -0
  167. package/temp_resend_cli/repo/tests/commands/topics/get.test.ts +126 -0
  168. package/temp_resend_cli/repo/tests/commands/topics/list.test.ts +125 -0
  169. package/temp_resend_cli/repo/tests/commands/topics/update.test.ts +178 -0
  170. package/temp_resend_cli/repo/tests/commands/webhooks/create.test.ts +225 -0
  171. package/temp_resend_cli/repo/tests/commands/webhooks/delete.test.ts +157 -0
  172. package/temp_resend_cli/repo/tests/commands/webhooks/get.test.ts +126 -0
  173. package/temp_resend_cli/repo/tests/commands/webhooks/list.test.ts +178 -0
  174. package/temp_resend_cli/repo/tests/commands/webhooks/update.test.ts +207 -0
  175. package/temp_resend_cli/repo/tests/commands/whoami.test.ts +98 -0
  176. package/temp_resend_cli/repo/tests/e2e/smoke.test.ts +93 -0
  177. package/temp_resend_cli/repo/tests/helpers.ts +86 -0
  178. package/temp_resend_cli/repo/tests/lib/client.test.ts +71 -0
  179. package/temp_resend_cli/repo/tests/lib/config.test.ts +451 -0
  180. package/temp_resend_cli/repo/tests/lib/files.test.ts +73 -0
  181. package/temp_resend_cli/repo/tests/lib/help-text.test.ts +97 -0
  182. package/temp_resend_cli/repo/tests/lib/output.test.ts +136 -0
  183. package/temp_resend_cli/repo/tests/lib/prompts.test.ts +185 -0
  184. package/temp_resend_cli/repo/tests/lib/spinner.test.ts +166 -0
  185. package/temp_resend_cli/repo/tests/lib/table.test.ts +63 -0
  186. package/temp_resend_cli/repo/tests/lib/tty.test.ts +89 -0
  187. package/temp_resend_cli/repo/tests/lib/update-check.test.ts +179 -0
  188. package/temp_resend_cli/repo/tsconfig.json +14 -0
  189. package/temp_resend_cli/repo/vitest.config.e2e.ts +8 -0
  190. package/temp_resend_cli/repo/vitest.config.ts +10 -0
  191. package/tests/test-resend-smoke.sh +7 -3
@@ -0,0 +1,179 @@
1
+ import {
2
+ existsSync,
3
+ mkdirSync,
4
+ readFileSync,
5
+ rmSync,
6
+ writeFileSync,
7
+ } from 'node:fs';
8
+ import { tmpdir } from 'node:os';
9
+ import { join } from 'node:path';
10
+ import {
11
+ afterEach,
12
+ beforeEach,
13
+ describe,
14
+ expect,
15
+ type MockInstance,
16
+ test,
17
+ vi,
18
+ } from 'vitest';
19
+ import { checkForUpdates } from '../../src/lib/update-check';
20
+ import { VERSION } from '../../src/lib/version';
21
+ import { captureTestEnv } from '../helpers';
22
+
23
+ // Use a version guaranteed to be "newer" than whatever VERSION is
24
+ const NEWER_VERSION = '99.0.0';
25
+
26
+ const testConfigDir = join(tmpdir(), `resend-update-check-test-${process.pid}`);
27
+ const testResendDir = join(testConfigDir, 'resend');
28
+ const statePath = join(testResendDir, 'update-state.json');
29
+
30
+ describe('checkForUpdates', () => {
31
+ const restoreEnv = captureTestEnv();
32
+ let stderrOutput: string;
33
+ let stderrSpy: MockInstance;
34
+ let fetchSpy: MockInstance;
35
+
36
+ beforeEach(() => {
37
+ mkdirSync(testResendDir, { recursive: true });
38
+ stderrOutput = '';
39
+ stderrSpy = vi
40
+ .spyOn(process.stderr, 'write')
41
+ .mockImplementation((chunk) => {
42
+ stderrOutput += String(chunk);
43
+ return true;
44
+ });
45
+
46
+ // Point getConfigDir() at our temp dir via XDG_CONFIG_HOME
47
+ process.env.XDG_CONFIG_HOME = testConfigDir;
48
+
49
+ // Ensure TTY and no CI
50
+ Object.defineProperty(process.stdout, 'isTTY', {
51
+ value: true,
52
+ writable: true,
53
+ });
54
+ delete process.env.CI;
55
+ delete process.env.GITHUB_ACTIONS;
56
+ delete process.env.RESEND_NO_UPDATE_NOTIFIER;
57
+ });
58
+
59
+ afterEach(() => {
60
+ stderrSpy.mockRestore();
61
+ if (fetchSpy) {
62
+ fetchSpy.mockRestore();
63
+ }
64
+ restoreEnv();
65
+ if (existsSync(testConfigDir)) {
66
+ rmSync(testConfigDir, { recursive: true, force: true });
67
+ }
68
+ });
69
+
70
+ function mockFetch(tagName: string, extra: Record<string, unknown> = {}) {
71
+ fetchSpy = vi.spyOn(globalThis, 'fetch').mockResolvedValue({
72
+ ok: true,
73
+ json: async () => ({ tag_name: tagName, ...extra }),
74
+ } as Response);
75
+ }
76
+
77
+ function mockFetchFailure() {
78
+ fetchSpy = vi
79
+ .spyOn(globalThis, 'fetch')
80
+ .mockRejectedValue(new Error('network error'));
81
+ }
82
+
83
+ test('skips check when RESEND_NO_UPDATE_NOTIFIER=1', async () => {
84
+ process.env.RESEND_NO_UPDATE_NOTIFIER = '1';
85
+ await checkForUpdates();
86
+ expect(stderrOutput).toBe('');
87
+ });
88
+
89
+ test('skips check when CI=true', async () => {
90
+ process.env.CI = 'true';
91
+ await checkForUpdates();
92
+ expect(stderrOutput).toBe('');
93
+ });
94
+
95
+ test('skips check when not a TTY', async () => {
96
+ Object.defineProperty(process.stdout, 'isTTY', {
97
+ value: undefined,
98
+ writable: true,
99
+ });
100
+ await checkForUpdates();
101
+ expect(stderrOutput).toBe('');
102
+ });
103
+
104
+ test('prints notice when newer version available from fresh fetch', async () => {
105
+ mockFetch(`v${NEWER_VERSION}`);
106
+ await checkForUpdates();
107
+
108
+ expect(stderrOutput).toContain('Update available');
109
+ expect(stderrOutput).toContain(`v${VERSION}`);
110
+ expect(stderrOutput).toContain(`v${NEWER_VERSION}`);
111
+ });
112
+
113
+ test('prints nothing when already on latest', async () => {
114
+ mockFetch(`v${VERSION}`);
115
+ await checkForUpdates();
116
+ expect(stderrOutput).toBe('');
117
+ });
118
+
119
+ test('uses cached state when fresh (no fetch)', async () => {
120
+ writeFileSync(
121
+ statePath,
122
+ JSON.stringify({ lastChecked: Date.now(), latestVersion: NEWER_VERSION }),
123
+ );
124
+
125
+ mockFetch(`v${NEWER_VERSION}`);
126
+ await checkForUpdates();
127
+
128
+ expect(fetchSpy).not.toHaveBeenCalled();
129
+ expect(stderrOutput).toContain(`v${NEWER_VERSION}`);
130
+ });
131
+
132
+ test('refetches when cache is stale', async () => {
133
+ const staleTime = Date.now() - 25 * 60 * 60 * 1000; // 25 hours ago
134
+ writeFileSync(
135
+ statePath,
136
+ JSON.stringify({ lastChecked: staleTime, latestVersion: VERSION }),
137
+ );
138
+
139
+ mockFetch(`v${NEWER_VERSION}`);
140
+ await checkForUpdates();
141
+
142
+ expect(fetchSpy).toHaveBeenCalled();
143
+ expect(stderrOutput).toContain(`v${NEWER_VERSION}`);
144
+ // Verify cache was updated
145
+ const state = JSON.parse(readFileSync(statePath, 'utf-8'));
146
+ expect(state.latestVersion).toBe(NEWER_VERSION);
147
+ });
148
+
149
+ test('handles fetch failure gracefully', async () => {
150
+ mockFetchFailure();
151
+ await checkForUpdates();
152
+ expect(stderrOutput).toBe('');
153
+ });
154
+
155
+ test('writes state file after successful fetch', async () => {
156
+ mockFetch(`v${VERSION}`);
157
+ await checkForUpdates();
158
+
159
+ expect(existsSync(statePath)).toBe(true);
160
+ const state = JSON.parse(readFileSync(statePath, 'utf-8'));
161
+ expect(state.latestVersion).toBe(VERSION);
162
+ });
163
+
164
+ test('ignores prerelease versions', async () => {
165
+ fetchSpy = vi.spyOn(globalThis, 'fetch').mockResolvedValue({
166
+ ok: true,
167
+ json: async () => ({ tag_name: 'v99.0.0', prerelease: true }),
168
+ } as Response);
169
+
170
+ await checkForUpdates();
171
+ expect(stderrOutput).toBe('');
172
+ });
173
+
174
+ test('ignores non-semver tag names', async () => {
175
+ mockFetch('canary-20260311');
176
+ await checkForUpdates();
177
+ expect(stderrOutput).toBe('');
178
+ });
179
+ });
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "esModuleInterop": true,
7
+ "strict": true,
8
+ "skipLibCheck": true,
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "types": ["node"]
12
+ },
13
+ "include": ["src/**/*.ts"]
14
+ }
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ include: ['tests/e2e/**/*.test.ts'],
6
+ testTimeout: 60_000,
7
+ },
8
+ });
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ include: ['tests/**/*.test.ts'],
6
+ exclude: ['tests/e2e/**'],
7
+ clearMocks: true,
8
+ restoreMocks: true,
9
+ },
10
+ });
@@ -10,19 +10,23 @@ echo "Running resend smoke test..."
10
10
  export SUPERCLI_HOME=$(mktemp -d)
11
11
  trap "rm -rf $SUPERCLI_HOME" EXIT
12
12
 
13
+ # Find node
14
+ NODE_DIR=$(dirname $(which node))
15
+
13
16
  # 1. Install plugin
14
17
  node cli/supercli.js plugins install ./plugins/resend --on-conflict replace --json
15
18
 
16
- # 2. Check doctor
19
+ # 2. Check doctor (node/npm checks should pass)
17
20
  node cli/supercli.js plugins doctor resend --json | grep -q '"ok":true'
18
21
 
19
22
  # 3. Check skills
20
23
  node cli/supercli.js skills list --catalog --provider resend --json | grep -q "resend:root.readme"
21
24
 
22
- # 4. Check doctor (expect dependency error but valid JSON)
25
+ # 4. Check doctor (expect dependency error when resend is hidden)
23
26
  # We expect exit 1 because dep is missing
24
27
  set +e
25
- OUT=$(node cli/supercli.js resend cli doctor --json 2>&1)
28
+ # Use a restricted PATH that includes node but NOT the global resend
29
+ OUT=$(PATH="$NODE_DIR" node cli/supercli.js resend cli doctor --json 2>&1)
26
30
  EXIT_CODE=$?
27
31
  set -e
28
32