@antseed/cli 0.1.59 → 0.1.61

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 (214) hide show
  1. package/README.md +46 -37
  2. package/package.json +6 -6
  3. package/dist/cli/commands/agent.d.ts +0 -3
  4. package/dist/cli/commands/agent.d.ts.map +0 -1
  5. package/dist/cli/commands/agent.js +0 -165
  6. package/dist/cli/commands/agent.js.map +0 -1
  7. package/dist/cli/commands/balance.d.ts +0 -3
  8. package/dist/cli/commands/balance.d.ts.map +0 -1
  9. package/dist/cli/commands/balance.js +0 -62
  10. package/dist/cli/commands/balance.js.map +0 -1
  11. package/dist/cli/commands/bootstrap.d.ts +0 -3
  12. package/dist/cli/commands/bootstrap.d.ts.map +0 -1
  13. package/dist/cli/commands/bootstrap.js +0 -46
  14. package/dist/cli/commands/bootstrap.js.map +0 -1
  15. package/dist/cli/commands/browse.d.ts +0 -7
  16. package/dist/cli/commands/browse.d.ts.map +0 -1
  17. package/dist/cli/commands/browse.js +0 -103
  18. package/dist/cli/commands/browse.js.map +0 -1
  19. package/dist/cli/commands/channels.d.ts +0 -3
  20. package/dist/cli/commands/channels.d.ts.map +0 -1
  21. package/dist/cli/commands/channels.js +0 -79
  22. package/dist/cli/commands/channels.js.map +0 -1
  23. package/dist/cli/commands/claim.d.ts +0 -3
  24. package/dist/cli/commands/claim.d.ts.map +0 -1
  25. package/dist/cli/commands/claim.js +0 -35
  26. package/dist/cli/commands/claim.js.map +0 -1
  27. package/dist/cli/commands/config.d.ts +0 -20
  28. package/dist/cli/commands/config.d.ts.map +0 -1
  29. package/dist/cli/commands/config.js +0 -239
  30. package/dist/cli/commands/config.js.map +0 -1
  31. package/dist/cli/commands/connect.d.ts +0 -13
  32. package/dist/cli/commands/connect.d.ts.map +0 -1
  33. package/dist/cli/commands/connect.js +0 -402
  34. package/dist/cli/commands/connect.js.map +0 -1
  35. package/dist/cli/commands/connect.test.d.ts +0 -2
  36. package/dist/cli/commands/connect.test.d.ts.map +0 -1
  37. package/dist/cli/commands/connect.test.js +0 -52
  38. package/dist/cli/commands/connect.test.js.map +0 -1
  39. package/dist/cli/commands/connection.d.ts +0 -3
  40. package/dist/cli/commands/connection.d.ts.map +0 -1
  41. package/dist/cli/commands/connection.js +0 -128
  42. package/dist/cli/commands/connection.js.map +0 -1
  43. package/dist/cli/commands/dashboard.d.ts +0 -6
  44. package/dist/cli/commands/dashboard.d.ts.map +0 -1
  45. package/dist/cli/commands/dashboard.js +0 -48
  46. package/dist/cli/commands/dashboard.js.map +0 -1
  47. package/dist/cli/commands/deposit.d.ts +0 -3
  48. package/dist/cli/commands/deposit.d.ts.map +0 -1
  49. package/dist/cli/commands/deposit.js +0 -38
  50. package/dist/cli/commands/deposit.js.map +0 -1
  51. package/dist/cli/commands/dev.d.ts +0 -3
  52. package/dist/cli/commands/dev.d.ts.map +0 -1
  53. package/dist/cli/commands/dev.js +0 -94
  54. package/dist/cli/commands/dev.js.map +0 -1
  55. package/dist/cli/commands/emissions.d.ts +0 -3
  56. package/dist/cli/commands/emissions.d.ts.map +0 -1
  57. package/dist/cli/commands/emissions.js +0 -80
  58. package/dist/cli/commands/emissions.js.map +0 -1
  59. package/dist/cli/commands/init.d.ts +0 -3
  60. package/dist/cli/commands/init.d.ts.map +0 -1
  61. package/dist/cli/commands/init.js +0 -90
  62. package/dist/cli/commands/init.js.map +0 -1
  63. package/dist/cli/commands/payments.d.ts +0 -3
  64. package/dist/cli/commands/payments.d.ts.map +0 -1
  65. package/dist/cli/commands/payments.js +0 -26
  66. package/dist/cli/commands/payments.js.map +0 -1
  67. package/dist/cli/commands/plugin-create.d.ts +0 -11
  68. package/dist/cli/commands/plugin-create.d.ts.map +0 -1
  69. package/dist/cli/commands/plugin-create.js +0 -201
  70. package/dist/cli/commands/plugin-create.js.map +0 -1
  71. package/dist/cli/commands/plugin-create.test.d.ts +0 -2
  72. package/dist/cli/commands/plugin-create.test.d.ts.map +0 -1
  73. package/dist/cli/commands/plugin-create.test.js +0 -53
  74. package/dist/cli/commands/plugin-create.test.js.map +0 -1
  75. package/dist/cli/commands/plugin.d.ts +0 -3
  76. package/dist/cli/commands/plugin.d.ts.map +0 -1
  77. package/dist/cli/commands/plugin.js +0 -279
  78. package/dist/cli/commands/plugin.js.map +0 -1
  79. package/dist/cli/commands/plugin.test.d.ts +0 -2
  80. package/dist/cli/commands/plugin.test.d.ts.map +0 -1
  81. package/dist/cli/commands/plugin.test.js +0 -54
  82. package/dist/cli/commands/plugin.test.js.map +0 -1
  83. package/dist/cli/commands/profile.d.ts +0 -10
  84. package/dist/cli/commands/profile.d.ts.map +0 -1
  85. package/dist/cli/commands/profile.js +0 -89
  86. package/dist/cli/commands/profile.js.map +0 -1
  87. package/dist/cli/commands/register.d.ts +0 -3
  88. package/dist/cli/commands/register.d.ts.map +0 -1
  89. package/dist/cli/commands/register.js +0 -35
  90. package/dist/cli/commands/register.js.map +0 -1
  91. package/dist/cli/commands/seed.d.ts +0 -14
  92. package/dist/cli/commands/seed.d.ts.map +0 -1
  93. package/dist/cli/commands/seed.js +0 -500
  94. package/dist/cli/commands/seed.js.map +0 -1
  95. package/dist/cli/commands/seed.test.d.ts +0 -2
  96. package/dist/cli/commands/seed.test.d.ts.map +0 -1
  97. package/dist/cli/commands/seed.test.js +0 -92
  98. package/dist/cli/commands/seed.test.js.map +0 -1
  99. package/dist/cli/commands/setup.d.ts +0 -3
  100. package/dist/cli/commands/setup.d.ts.map +0 -1
  101. package/dist/cli/commands/setup.js +0 -84
  102. package/dist/cli/commands/setup.js.map +0 -1
  103. package/dist/cli/commands/stake.d.ts +0 -3
  104. package/dist/cli/commands/stake.d.ts.map +0 -1
  105. package/dist/cli/commands/stake.js +0 -83
  106. package/dist/cli/commands/stake.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -8
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -55
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/cli/commands/subscribe.d.ts +0 -3
  112. package/dist/cli/commands/subscribe.d.ts.map +0 -1
  113. package/dist/cli/commands/subscribe.js +0 -96
  114. package/dist/cli/commands/subscribe.js.map +0 -1
  115. package/dist/cli/commands/types.d.ts +0 -14
  116. package/dist/cli/commands/types.d.ts.map +0 -1
  117. package/dist/cli/commands/types.js +0 -41
  118. package/dist/cli/commands/types.js.map +0 -1
  119. package/dist/cli/commands/withdraw.d.ts +0 -3
  120. package/dist/cli/commands/withdraw.d.ts.map +0 -1
  121. package/dist/cli/commands/withdraw.js +0 -48
  122. package/dist/cli/commands/withdraw.js.map +0 -1
  123. package/dist/cli/formatters.d.ts +0 -29
  124. package/dist/cli/formatters.d.ts.map +0 -1
  125. package/dist/cli/formatters.js +0 -67
  126. package/dist/cli/formatters.js.map +0 -1
  127. package/dist/cli/index.d.ts +0 -3
  128. package/dist/cli/index.d.ts.map +0 -1
  129. package/dist/cli/index.js +0 -65
  130. package/dist/cli/index.js.map +0 -1
  131. package/dist/cli/payment-utils.d.ts +0 -53
  132. package/dist/cli/payment-utils.d.ts.map +0 -1
  133. package/dist/cli/payment-utils.js +0 -137
  134. package/dist/cli/payment-utils.js.map +0 -1
  135. package/dist/cli/shutdown.d.ts +0 -11
  136. package/dist/cli/shutdown.d.ts.map +0 -1
  137. package/dist/cli/shutdown.js +0 -34
  138. package/dist/cli/shutdown.js.map +0 -1
  139. package/dist/config/defaults.d.ts +0 -6
  140. package/dist/config/defaults.d.ts.map +0 -1
  141. package/dist/config/defaults.js +0 -53
  142. package/dist/config/defaults.js.map +0 -1
  143. package/dist/config/effective.d.ts +0 -25
  144. package/dist/config/effective.d.ts.map +0 -1
  145. package/dist/config/effective.js +0 -67
  146. package/dist/config/effective.js.map +0 -1
  147. package/dist/config/effective.test.d.ts +0 -2
  148. package/dist/config/effective.test.d.ts.map +0 -1
  149. package/dist/config/effective.test.js +0 -62
  150. package/dist/config/effective.test.js.map +0 -1
  151. package/dist/config/loader.d.ts +0 -12
  152. package/dist/config/loader.d.ts.map +0 -1
  153. package/dist/config/loader.js +0 -269
  154. package/dist/config/loader.js.map +0 -1
  155. package/dist/config/loader.test.d.ts +0 -2
  156. package/dist/config/loader.test.d.ts.map +0 -1
  157. package/dist/config/loader.test.js +0 -124
  158. package/dist/config/loader.test.js.map +0 -1
  159. package/dist/config/types.d.ts +0 -167
  160. package/dist/config/types.d.ts.map +0 -1
  161. package/dist/config/types.js +0 -2
  162. package/dist/config/types.js.map +0 -1
  163. package/dist/config/validation.d.ts +0 -10
  164. package/dist/config/validation.d.ts.map +0 -1
  165. package/dist/config/validation.js +0 -130
  166. package/dist/config/validation.js.map +0 -1
  167. package/dist/env/load-env.d.ts +0 -6
  168. package/dist/env/load-env.d.ts.map +0 -1
  169. package/dist/env/load-env.js +0 -18
  170. package/dist/env/load-env.js.map +0 -1
  171. package/dist/plugins/loader.d.ts +0 -12
  172. package/dist/plugins/loader.d.ts.map +0 -1
  173. package/dist/plugins/loader.js +0 -111
  174. package/dist/plugins/loader.js.map +0 -1
  175. package/dist/plugins/manager.d.ts +0 -11
  176. package/dist/plugins/manager.d.ts.map +0 -1
  177. package/dist/plugins/manager.js +0 -52
  178. package/dist/plugins/manager.js.map +0 -1
  179. package/dist/plugins/registry.d.ts +0 -8
  180. package/dist/plugins/registry.d.ts.map +0 -1
  181. package/dist/plugins/registry.js +0 -45
  182. package/dist/plugins/registry.js.map +0 -1
  183. package/dist/proxy/buyer-proxy.d.ts +0 -82
  184. package/dist/proxy/buyer-proxy.d.ts.map +0 -1
  185. package/dist/proxy/buyer-proxy.js +0 -1056
  186. package/dist/proxy/buyer-proxy.js.map +0 -1
  187. package/dist/proxy/buyer-proxy.test.d.ts +0 -2
  188. package/dist/proxy/buyer-proxy.test.d.ts.map +0 -1
  189. package/dist/proxy/buyer-proxy.test.js +0 -124
  190. package/dist/proxy/buyer-proxy.test.js.map +0 -1
  191. package/dist/proxy/request-utils.d.ts +0 -21
  192. package/dist/proxy/request-utils.d.ts.map +0 -1
  193. package/dist/proxy/request-utils.js +0 -237
  194. package/dist/proxy/request-utils.js.map +0 -1
  195. package/dist/proxy/routing.d.ts +0 -17
  196. package/dist/proxy/routing.d.ts.map +0 -1
  197. package/dist/proxy/routing.js +0 -115
  198. package/dist/proxy/routing.js.map +0 -1
  199. package/dist/proxy/service-api-adapter.d.ts +0 -3
  200. package/dist/proxy/service-api-adapter.d.ts.map +0 -1
  201. package/dist/proxy/service-api-adapter.js +0 -2
  202. package/dist/proxy/service-api-adapter.js.map +0 -1
  203. package/dist/proxy/service-api-adapter.test.d.ts +0 -2
  204. package/dist/proxy/service-api-adapter.test.d.ts.map +0 -1
  205. package/dist/proxy/service-api-adapter.test.js +0 -121
  206. package/dist/proxy/service-api-adapter.test.js.map +0 -1
  207. package/dist/proxy/telemetry.d.ts +0 -23
  208. package/dist/proxy/telemetry.d.ts.map +0 -1
  209. package/dist/proxy/telemetry.js +0 -227
  210. package/dist/proxy/telemetry.js.map +0 -1
  211. package/dist/status/node-status.d.ts +0 -22
  212. package/dist/status/node-status.d.ts.map +0 -1
  213. package/dist/status/node-status.js +0 -83
  214. package/dist/status/node-status.js.map +0 -1
@@ -1,201 +0,0 @@
1
- import chalk from 'chalk';
2
- import { createInterface } from 'node:readline/promises';
3
- import { mkdir, writeFile } from 'node:fs/promises';
4
- import { join } from 'node:path';
5
- function generatePackageJson(opts) {
6
- return JSON.stringify({
7
- name: `@antseed/${opts.type}-${opts.name}`,
8
- version: '0.1.0',
9
- description: opts.description,
10
- type: 'module',
11
- main: 'dist/index.js',
12
- types: 'dist/index.d.ts',
13
- scripts: {
14
- build: 'tsc',
15
- test: 'node --test dist/**/*.test.js',
16
- prepublishOnly: 'npm run build',
17
- },
18
- keywords: ['antseed', 'plugin', opts.type],
19
- peerDependencies: {
20
- '@antseed/node': '>=0.1.0',
21
- },
22
- devDependencies: {
23
- '@antseed/node': 'workspace:*',
24
- '@types/node': '^20.11.0',
25
- typescript: '^5.3.0',
26
- },
27
- }, null, 2);
28
- }
29
- function generateTsconfig() {
30
- return JSON.stringify({
31
- compilerOptions: {
32
- target: 'ES2022',
33
- module: 'NodeNext',
34
- moduleResolution: 'NodeNext',
35
- outDir: 'dist',
36
- rootDir: 'src',
37
- strict: true,
38
- esModuleInterop: true,
39
- skipLibCheck: true,
40
- declaration: true,
41
- sourceMap: true,
42
- },
43
- include: ['src/**/*.ts'],
44
- exclude: ['node_modules', 'dist'],
45
- }, null, 2);
46
- }
47
- function generateIndexTs(opts) {
48
- const importType = opts.type === 'provider' ? 'AntseedProviderPlugin' : 'AntseedRouterPlugin';
49
- const methodImport = opts.type === 'provider'
50
- ? `import { createProvider } from './${opts.type}.js'`
51
- : `import { createRouter } from './${opts.type}.js'`;
52
- const method = opts.type === 'provider' ? 'createProvider' : 'createRouter';
53
- return `import type { ${importType}, ConfigField } from '@antseed/node'
54
- ${methodImport}
55
-
56
- const configSchema: ConfigField[] = [
57
- // Define your plugin's configuration fields here
58
- // { key: 'API_KEY', label: 'API Key', type: 'secret', required: true, description: 'Your API key' },
59
- ]
60
-
61
- const plugin: ${importType} = {
62
- name: '${opts.name}',
63
- displayName: '${opts.displayName}',
64
- version: '0.1.0',
65
- description: '${opts.description}',
66
- type: '${opts.type}',
67
- configSchema,
68
- ${method},
69
- }
70
-
71
- export default plugin
72
- `;
73
- }
74
- function generateProviderTs(opts) {
75
- return `import type { Provider, SerializedHttpRequest, SerializedHttpResponse } from '@antseed/node'
76
-
77
- export function createProvider(config: Record<string, string>): Provider {
78
- return {
79
- name: '${opts.name}',
80
- services: [],
81
- pricing: {
82
- defaults: { inputUsdPerMillion: 0, outputUsdPerMillion: 0 },
83
- },
84
- maxConcurrency: 1,
85
- async handleRequest(req: SerializedHttpRequest): Promise<SerializedHttpResponse> {
86
- // Implement your provider logic here
87
- throw new Error('Not implemented')
88
- },
89
- getCapacity() {
90
- return { current: 0, max: 1 }
91
- },
92
- }
93
- }
94
- `;
95
- }
96
- function generateRouterTs(_opts) {
97
- return `import type { Router, PeerInfo, SerializedHttpRequest } from '@antseed/node'
98
-
99
- export function createRouter(config: Record<string, string>): Router {
100
- return {
101
- selectPeer(req: SerializedHttpRequest, peers: PeerInfo[]): PeerInfo | null {
102
- // Implement your router logic here
103
- return peers[0] ?? null
104
- },
105
- onResult(peer: PeerInfo, result: { success: boolean; latencyMs: number; tokens: number }): void {
106
- // Track peer performance here
107
- },
108
- }
109
- }
110
- `;
111
- }
112
- function generateTestTs(opts) {
113
- return `import assert from 'node:assert/strict'
114
- import test from 'node:test'
115
-
116
- test('${opts.name} plugin exports valid manifest', async () => {
117
- const { default: plugin } = await import('./index.js')
118
- assert.equal(plugin.type, '${opts.type}')
119
- assert.equal(plugin.name, '${opts.name}')
120
- assert.ok(plugin.displayName)
121
- assert.ok(plugin.version)
122
- assert.ok(Array.isArray(plugin.configSchema))
123
- })
124
- `;
125
- }
126
- function generateReadme(opts) {
127
- return `# antseed-${opts.type}-${opts.name}
128
-
129
- ${opts.description}
130
-
131
- ## Installation
132
-
133
- \`\`\`bash
134
- antseed plugin add antseed-${opts.type}-${opts.name}
135
- \`\`\`
136
-
137
- ## Configuration
138
-
139
- Configure via interactive prompt:
140
-
141
- \`\`\`bash
142
- antseed plugin config <instance-id>
143
- \`\`\`
144
-
145
- ## Development
146
-
147
- \`\`\`bash
148
- pnpm install
149
- pnpm run build
150
- pnpm test
151
- \`\`\`
152
- `;
153
- }
154
- export async function scaffoldPlugin(dir, opts) {
155
- await mkdir(join(dir, 'src'), { recursive: true });
156
- await writeFile(join(dir, 'package.json'), generatePackageJson(opts), 'utf-8');
157
- await writeFile(join(dir, 'tsconfig.json'), generateTsconfig(), 'utf-8');
158
- await writeFile(join(dir, 'src', 'index.ts'), generateIndexTs(opts), 'utf-8');
159
- if (opts.type === 'provider') {
160
- await writeFile(join(dir, 'src', 'provider.ts'), generateProviderTs(opts), 'utf-8');
161
- }
162
- else {
163
- await writeFile(join(dir, 'src', 'router.ts'), generateRouterTs(opts), 'utf-8');
164
- }
165
- await writeFile(join(dir, 'src', 'index.test.ts'), generateTestTs(opts), 'utf-8');
166
- await writeFile(join(dir, 'README.md'), generateReadme(opts), 'utf-8');
167
- }
168
- export function registerPluginCreateCommand(pluginCmd) {
169
- pluginCmd
170
- .command('create')
171
- .description('Scaffold a new plugin project')
172
- .action(async () => {
173
- const rl = createInterface({ input: process.stdin, output: process.stdout });
174
- try {
175
- const name = (await rl.question('Plugin name (lowercase, no spaces): ')).trim();
176
- if (!name || !/^[a-z][a-z0-9-]*$/.test(name)) {
177
- console.log(chalk.red('Invalid plugin name. Use lowercase letters, numbers, and hyphens.'));
178
- process.exit(1);
179
- }
180
- const typeAnswer = (await rl.question('Plugin type (provider/router): ')).trim();
181
- if (typeAnswer !== 'provider' && typeAnswer !== 'router') {
182
- console.log(chalk.red('Plugin type must be "provider" or "router".'));
183
- process.exit(1);
184
- }
185
- const type = typeAnswer;
186
- const displayName = (await rl.question('Display name: ')).trim() || name;
187
- const description = (await rl.question('Description: ')).trim() || `Antseed ${type} plugin`;
188
- const dir = join(process.cwd(), `antseed-${type}-${name}`);
189
- await scaffoldPlugin(dir, { name, type, displayName, description });
190
- console.log(chalk.green(`\nScaffolded plugin at: ${dir}`));
191
- console.log(chalk.dim('\nNext steps:'));
192
- console.log(chalk.dim(` cd antseed-${type}-${name}`));
193
- console.log(chalk.dim(' npm install'));
194
- console.log(chalk.dim(' npm run build'));
195
- }
196
- finally {
197
- rl.close();
198
- }
199
- });
200
- }
201
- //# sourceMappingURL=plugin-create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-create.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin-create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAShC,SAAS,mBAAmB,CAAC,IAA2B;IACtD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,IAAI,EAAE,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;QAC1C,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,+BAA+B;YACrC,cAAc,EAAE,eAAe;SAChC;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;QAC1C,gBAAgB,EAAE;YAChB,eAAe,EAAE,SAAS;SAC3B;QACD,eAAe,EAAE;YACf,eAAe,EAAE,aAAa;YAC9B,aAAa,EAAE,UAAU;YACzB,UAAU,EAAE,QAAQ;SACrB;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU;YAClB,gBAAgB,EAAE,UAAU;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;SAChB;QACD,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;KAClC,EACD,IAAI,EACJ,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAA2B;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,CAAA;IAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU;QAC3C,CAAC,CAAC,qCAAqC,IAAI,CAAC,IAAI,MAAM;QACtD,CAAC,CAAC,mCAAmC,IAAI,CAAC,IAAI,MAAM,CAAA;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAA;IAE3E,OAAO,iBAAiB,UAAU;EAClC,YAAY;;;;;;;gBAOE,UAAU;WACf,IAAI,CAAC,IAAI;kBACF,IAAI,CAAC,WAAW;;kBAEhB,IAAI,CAAC,WAAW;WACvB,IAAI,CAAC,IAAI;;IAEhB,MAAM;;;;CAIT,CAAA;AACD,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA2B;IACrD,OAAO;;;;aAII,IAAI,CAAC,IAAI;;;;;;;;;;;;;;;CAerB,CAAA;AACD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA4B;IACpD,OAAO;;;;;;;;;;;;;CAaR,CAAA;AACD,CAAC;AAED,SAAS,cAAc,CAAC,IAA2B;IACjD,OAAO;;;QAGD,IAAI,CAAC,IAAI;;+BAEc,IAAI,CAAC,IAAI;+BACT,IAAI,CAAC,IAAI;;;;;CAKvC,CAAA;AACD,CAAC;AAED,SAAS,cAAc,CAAC,IAA2B;IACjD,OAAO,aAAa,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;;EAE1C,IAAI,CAAC,WAAW;;;;;6BAKW,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;;;;;;;;;;;;;;;;;;CAkBlD,CAAA;AACD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,IAA2B;IAC3E,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IAC9E,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAA;IACxE,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IAE7E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IACrF,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IACjF,CAAC;IAED,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IACjF,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,SAAkB;IAC5D,SAAS;SACN,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC/E,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAA;gBAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAChF,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAA;gBACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,UAAmC,CAAA;YAEhD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;YACxE,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,IAAI,SAAS,CAAA;YAE3F,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;YAEnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAA;YAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plugin-create.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-create.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugin-create.test.ts"],"names":[],"mappings":""}
@@ -1,53 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import test from 'node:test';
3
- import { mkdtemp, readFile, rm } from 'node:fs/promises';
4
- import { join } from 'node:path';
5
- import { tmpdir } from 'node:os';
6
- import { scaffoldPlugin } from './plugin-create.js';
7
- test('scaffoldPlugin creates provider project structure', async () => {
8
- const dir = await mkdtemp(join(tmpdir(), 'antseed-test-'));
9
- try {
10
- await scaffoldPlugin(dir, {
11
- name: 'test-provider',
12
- type: 'provider',
13
- displayName: 'Test Provider',
14
- description: 'A test provider plugin',
15
- });
16
- const pkg = JSON.parse(await readFile(join(dir, 'package.json'), 'utf-8'));
17
- assert.equal(pkg.name, '@antseed/provider-test-provider');
18
- const tsconfig = await readFile(join(dir, 'tsconfig.json'), 'utf-8');
19
- assert.ok(tsconfig.includes('NodeNext'));
20
- const index = await readFile(join(dir, 'src', 'index.ts'), 'utf-8');
21
- assert.ok(index.includes("type: 'provider'"));
22
- assert.ok(index.includes('AntseedProviderPlugin'));
23
- const provider = await readFile(join(dir, 'src', 'provider.ts'), 'utf-8');
24
- assert.ok(provider.includes('createProvider'));
25
- const testFile = await readFile(join(dir, 'src', 'index.test.ts'), 'utf-8');
26
- assert.ok(testFile.includes("'provider'"));
27
- const readme = await readFile(join(dir, 'README.md'), 'utf-8');
28
- assert.ok(readme.includes('test-provider'));
29
- }
30
- finally {
31
- await rm(dir, { recursive: true, force: true });
32
- }
33
- });
34
- test('scaffoldPlugin creates router project structure', async () => {
35
- const dir = await mkdtemp(join(tmpdir(), 'antseed-test-'));
36
- try {
37
- await scaffoldPlugin(dir, {
38
- name: 'test-router',
39
- type: 'router',
40
- displayName: 'Test Router',
41
- description: 'A test router plugin',
42
- });
43
- const index = await readFile(join(dir, 'src', 'index.ts'), 'utf-8');
44
- assert.ok(index.includes("type: 'router'"));
45
- assert.ok(index.includes('AntseedRouterPlugin'));
46
- const router = await readFile(join(dir, 'src', 'router.ts'), 'utf-8');
47
- assert.ok(router.includes('createRouter'));
48
- }
49
- finally {
50
- await rm(dir, { recursive: true, force: true });
51
- }
52
- });
53
- //# sourceMappingURL=plugin-create.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-create.test.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin-create.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerPluginCommand(program: Command): void;
3
- //# sourceMappingURL=plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwGxC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8L5D"}
@@ -1,279 +0,0 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- import { createInterface } from 'node:readline/promises';
4
- import { join } from 'node:path';
5
- import { homedir } from 'node:os';
6
- import { installPlugin, removePlugin, listInstalledPlugins, getPluginsDir } from '../../plugins/manager.js';
7
- import { TRUSTED_PLUGINS } from '../../plugins/registry.js';
8
- import { addInstance, removeInstance, getInstance, getInstances, updateInstanceConfig, loadPluginModule, } from '@antseed/node';
9
- import { registerPluginCreateCommand } from './plugin-create.js';
10
- const CONFIG_PATH = join(homedir(), '.antseed', 'config.json');
11
- function generateInstanceId(pluginName) {
12
- const suffix = Math.random().toString(36).slice(2, 8);
13
- return `${pluginName}-${suffix}`;
14
- }
15
- function getConfigSchema(plugin) {
16
- return plugin.configSchema ?? plugin.configKeys ?? [];
17
- }
18
- function maskSecret(value) {
19
- if (value.length <= 4)
20
- return '****';
21
- return '****' + value.slice(-4);
22
- }
23
- async function promptForFields(rl, schema, existingConfig) {
24
- const config = {};
25
- for (const field of schema) {
26
- const defaultVal = existingConfig?.[field.key] ?? field.default;
27
- const defaultHint = field.type === 'secret' && typeof defaultVal === 'string' && defaultVal
28
- ? ` [${maskSecret(defaultVal)}]`
29
- : defaultVal !== undefined
30
- ? ` [${String(defaultVal)}]`
31
- : '';
32
- const requiredHint = field.required ? ' (required)' : '';
33
- const desc = field.description ? ` — ${field.description}` : '';
34
- const prompt = ` ${field.label}${requiredHint}${desc}${defaultHint}: `;
35
- let answer;
36
- if (field.type === 'secret') {
37
- process.stdout.write(prompt);
38
- const stdin = process.stdin;
39
- const wasRaw = stdin.isRaw;
40
- if (stdin.isTTY)
41
- stdin.setRawMode(true);
42
- let secret = '';
43
- answer = await new Promise((resolve) => {
44
- const onData = (chunk) => {
45
- const ch = chunk.toString();
46
- if (ch === '\n' || ch === '\r') {
47
- stdin.removeListener('data', onData);
48
- if (stdin.isTTY && wasRaw !== undefined)
49
- stdin.setRawMode(wasRaw);
50
- process.stdout.write('\n');
51
- resolve(secret);
52
- }
53
- else if (ch === '\u007f' || ch === '\b') {
54
- secret = secret.slice(0, -1);
55
- }
56
- else if (ch === '\u0003') {
57
- stdin.removeListener('data', onData);
58
- if (stdin.isTTY && wasRaw !== undefined)
59
- stdin.setRawMode(wasRaw);
60
- process.exit(0);
61
- }
62
- else {
63
- secret += ch;
64
- }
65
- };
66
- stdin.on('data', onData);
67
- });
68
- }
69
- else {
70
- answer = await rl.question(prompt);
71
- }
72
- const trimmed = answer.trim();
73
- if (trimmed) {
74
- if (field.type === 'number') {
75
- config[field.key] = Number(trimmed);
76
- }
77
- else if (field.type === 'boolean') {
78
- config[field.key] = trimmed === 'true' || trimmed === 'yes' || trimmed === '1';
79
- }
80
- else {
81
- config[field.key] = trimmed;
82
- }
83
- }
84
- else if (defaultVal !== undefined) {
85
- config[field.key] = defaultVal;
86
- }
87
- else if (field.required) {
88
- console.log(chalk.red(` ${field.label} is required.`));
89
- // Re-prompt by recursing on just this field
90
- const retry = await promptForFields(rl, [field], existingConfig);
91
- config[field.key] = retry[field.key];
92
- }
93
- }
94
- return config;
95
- }
96
- export function registerPluginCommand(program) {
97
- const pluginCmd = program
98
- .command('plugin')
99
- .description('Manage antseed plugins');
100
- // Task 1: plugin add with interactive config
101
- pluginCmd
102
- .command('add <package>')
103
- .description('Install a plugin from npm and configure an instance')
104
- .action(async (packageName) => {
105
- const spinner = ora(`Installing ${packageName}...`).start();
106
- try {
107
- await installPlugin(packageName);
108
- spinner.succeed(chalk.green(`Installed ${packageName}`));
109
- }
110
- catch (err) {
111
- spinner.fail(chalk.red(`Failed to install ${packageName}: ${err.message}`));
112
- process.exit(1);
113
- }
114
- // Load plugin module to read configSchema
115
- let plugin;
116
- try {
117
- plugin = await loadPluginModule(packageName, getPluginsDir());
118
- }
119
- catch (err) {
120
- console.log(chalk.yellow(`\nInstalled but could not load plugin module: ${err.message}`));
121
- return;
122
- }
123
- const schema = getConfigSchema(plugin);
124
- if (schema.length === 0) {
125
- console.log(chalk.dim('\nPlugin has no configuration fields.'));
126
- const instanceId = generateInstanceId(plugin.name);
127
- await addInstance(CONFIG_PATH, {
128
- id: instanceId,
129
- package: packageName,
130
- type: plugin.type,
131
- config: {},
132
- enabled: true,
133
- createdAt: new Date().toISOString(),
134
- }, schema);
135
- console.log(chalk.green(`\nCreated instance: ${instanceId}`));
136
- return;
137
- }
138
- console.log(chalk.bold(`\nConfigure ${plugin.displayName}:\n`));
139
- const rl = createInterface({ input: process.stdin, output: process.stdout });
140
- try {
141
- const config = await promptForFields(rl, schema);
142
- const instanceId = generateInstanceId(plugin.name);
143
- await addInstance(CONFIG_PATH, {
144
- id: instanceId,
145
- package: packageName,
146
- type: plugin.type,
147
- config,
148
- enabled: true,
149
- createdAt: new Date().toISOString(),
150
- }, schema);
151
- console.log(chalk.green(`\nCreated instance: ${instanceId}`));
152
- }
153
- finally {
154
- rl.close();
155
- }
156
- });
157
- // Task 2: plugin config command
158
- pluginCmd
159
- .command('config <id>')
160
- .description('Update configuration for a plugin instance')
161
- .action(async (instanceId) => {
162
- const instance = await getInstance(CONFIG_PATH, instanceId);
163
- if (!instance) {
164
- console.log(chalk.red(`Instance "${instanceId}" not found.`));
165
- process.exit(1);
166
- }
167
- let plugin;
168
- try {
169
- plugin = await loadPluginModule(instance.package, getPluginsDir());
170
- }
171
- catch (err) {
172
- console.log(chalk.red(`Could not load plugin: ${err.message}`));
173
- process.exit(1);
174
- return; // unreachable but satisfies TS
175
- }
176
- const schema = getConfigSchema(plugin);
177
- if (schema.length === 0) {
178
- console.log(chalk.dim('Plugin has no configuration fields.'));
179
- return;
180
- }
181
- console.log(chalk.bold(`\nConfigure ${plugin.displayName} (${instanceId}):\n`));
182
- // Show current values
183
- for (const field of schema) {
184
- const current = instance.config[field.key];
185
- if (current !== undefined) {
186
- const display = field.type === 'secret' ? maskSecret(String(current)) : String(current);
187
- console.log(chalk.dim(` Current ${field.label}: ${display}`));
188
- }
189
- }
190
- console.log('');
191
- const rl = createInterface({ input: process.stdin, output: process.stdout });
192
- try {
193
- const newConfig = await promptForFields(rl, schema, instance.config);
194
- await updateInstanceConfig(CONFIG_PATH, instanceId, newConfig, schema);
195
- console.log(chalk.green(`\nUpdated instance: ${instanceId}`));
196
- }
197
- finally {
198
- rl.close();
199
- }
200
- });
201
- // Task 5: plugin remove with instance handling
202
- pluginCmd
203
- .command('remove <name>')
204
- .description('Remove a plugin instance or uninstall a package')
205
- .action(async (name) => {
206
- // Check if name matches an instance ID
207
- const instance = await getInstance(CONFIG_PATH, name);
208
- if (instance) {
209
- const rl = createInterface({ input: process.stdin, output: process.stdout });
210
- try {
211
- const confirm = await rl.question(`Remove instance "${name}"? (y/N): `);
212
- if (confirm.trim().toLowerCase() !== 'y') {
213
- console.log(chalk.dim('Cancelled.'));
214
- return;
215
- }
216
- await removeInstance(CONFIG_PATH, name);
217
- console.log(chalk.green(`Removed instance: ${name}`));
218
- const uninstall = await rl.question(`Also uninstall npm package "${instance.package}"? (y/N): `);
219
- if (uninstall.trim().toLowerCase() === 'y') {
220
- const spinner = ora(`Removing ${instance.package}...`).start();
221
- try {
222
- await removePlugin(instance.package);
223
- spinner.succeed(chalk.green(`Uninstalled ${instance.package}`));
224
- }
225
- catch (err) {
226
- spinner.fail(chalk.red(`Failed to uninstall: ${err.message}`));
227
- }
228
- }
229
- }
230
- finally {
231
- rl.close();
232
- }
233
- return;
234
- }
235
- // Fall through: treat as npm package name
236
- const spinner = ora(`Removing ${name}...`).start();
237
- try {
238
- await removePlugin(name);
239
- spinner.succeed(chalk.green(`Removed ${name}`));
240
- }
241
- catch (err) {
242
- spinner.fail(chalk.red(`Failed to remove ${name}: ${err.message}`));
243
- process.exit(1);
244
- }
245
- });
246
- // Task 4: plugin list with instances
247
- pluginCmd
248
- .command('list')
249
- .description('List installed plugins and configured instances')
250
- .action(async () => {
251
- const installed = await listInstalledPlugins();
252
- const trusted = new Set(TRUSTED_PLUGINS.map((p) => p.package));
253
- if (installed.length === 0) {
254
- console.log(chalk.dim('No plugins installed. Run: antseed init'));
255
- }
256
- else {
257
- console.log(chalk.bold('\nInstalled plugins:\n'));
258
- for (const plugin of installed) {
259
- const isTrusted = trusted.has(plugin.package);
260
- const badge = isTrusted ? chalk.green(' [trusted]') : '';
261
- console.log(` ${chalk.cyan(plugin.package)} ${chalk.dim(plugin.version)}${badge}`);
262
- }
263
- console.log('');
264
- }
265
- // Show configured instances
266
- const instances = await getInstances(CONFIG_PATH);
267
- if (instances.length > 0) {
268
- console.log(chalk.bold('Configured instances:\n'));
269
- for (const inst of instances) {
270
- const status = inst.enabled === false ? chalk.red(' [disabled]') : chalk.green(' [enabled]');
271
- console.log(` ${chalk.cyan(inst.id)} ${chalk.dim(inst.package)}${status}`);
272
- }
273
- console.log('');
274
- }
275
- });
276
- // Register plugin create subcommand (Task 3)
277
- registerPluginCreateCommand(pluginCmd);
278
- }
279
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plugin.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugin.test.ts"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import test from 'node:test';
3
- import { TRUSTED_PLUGINS } from '../../plugins/registry.js';
4
- import { buildPluginConfig, LEGACY_PACKAGE_MAP } from '../../plugins/loader.js';
5
- test('TRUSTED_PLUGINS contains 7 official plugins', () => {
6
- assert.equal(TRUSTED_PLUGINS.length, 7);
7
- const names = TRUSTED_PLUGINS.map(p => p.name);
8
- assert.ok(names.includes('anthropic'));
9
- assert.ok(names.includes('claude-code'));
10
- assert.ok(names.includes('claude-oauth'));
11
- assert.ok(names.includes('openai'));
12
- assert.ok(names.includes('openai-responses'));
13
- assert.ok(names.includes('local-llm'));
14
- assert.ok(names.includes('local'));
15
- });
16
- test('TRUSTED_PLUGINS all have scoped package names', () => {
17
- for (const plugin of TRUSTED_PLUGINS) {
18
- assert.ok(plugin.package.startsWith('@antseed/'), `${plugin.name} package should be scoped`);
19
- }
20
- });
21
- test('buildPluginConfig uses priority: instanceConfig < env < overrides', () => {
22
- const keys = [
23
- { key: 'API_KEY', label: 'API Key', type: 'string' },
24
- { key: 'MODEL', label: 'Model', type: 'string' },
25
- ];
26
- const instanceConfig = { API_KEY: 'from-instance', MODEL: 'from-instance' };
27
- const original = process.env['API_KEY'];
28
- process.env['API_KEY'] = 'from-env';
29
- try {
30
- const result = buildPluginConfig(keys, { API_KEY: 'from-override' }, instanceConfig);
31
- assert.equal(result['API_KEY'], 'from-override');
32
- assert.equal(result['MODEL'], 'from-instance');
33
- }
34
- finally {
35
- if (original === undefined) {
36
- delete process.env['API_KEY'];
37
- }
38
- else {
39
- process.env['API_KEY'] = original;
40
- }
41
- }
42
- });
43
- test('buildPluginConfig works without instanceConfig (backwards compatible)', () => {
44
- const keys = [
45
- { key: 'TEST_KEY_COMPAT', label: 'Test', type: 'string' },
46
- ];
47
- const result = buildPluginConfig(keys, { TEST_KEY_COMPAT: 'override' });
48
- assert.equal(result['TEST_KEY_COMPAT'], 'override');
49
- });
50
- test('LEGACY_PACKAGE_MAP maps old names to scoped names', () => {
51
- assert.equal(LEGACY_PACKAGE_MAP['antseed-provider-anthropic'], '@antseed/provider-anthropic');
52
- assert.equal(LEGACY_PACKAGE_MAP['antseed-router-claude-code'], '@antseed/router-local');
53
- });
54
- //# sourceMappingURL=plugin.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin.test.ts"],"names":[],"mappings":"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"}