@agentmanifest/cli 0.1.10 ā 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/PROJECT_STRUCTURE.md +14 -18
- package/QUICK_START.md +15 -11
- package/README.md +51 -88
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +47 -423
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +65 -7
- package/dist/commands/publish.js.map +1 -1
- package/dist/constants.d.ts +50 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +42 -15
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +36 -64
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
package/dist/commands/init.js
CHANGED
|
@@ -4,19 +4,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.initCommand = initCommand;
|
|
7
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
7
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
8
|
const path_1 = __importDefault(require("path"));
|
|
10
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
/** Minimal valid manifest per agentmanifest-0.2 spec. AI agents or humans can fill in. */
|
|
12
|
+
function scaffoldManifest() {
|
|
13
|
+
return {
|
|
14
|
+
spec_version: 'agentmanifest-0.2',
|
|
15
|
+
name: 'My API',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
description: 'Describe your API here. Minimum 100 characters required. Explain what data or capabilities this API provides for AI agents.',
|
|
18
|
+
categories: ['other'],
|
|
19
|
+
primary_category: 'reference',
|
|
20
|
+
endpoints: [
|
|
21
|
+
{
|
|
22
|
+
path: '/example',
|
|
23
|
+
method: 'GET',
|
|
24
|
+
description: 'Describe when and why agents should use this endpoint (min 20 chars)',
|
|
25
|
+
parameters: [],
|
|
26
|
+
response_description: 'Describe the response content and how to interpret it (min 20 chars)',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
pricing: {
|
|
30
|
+
model: 'free',
|
|
31
|
+
free_tier: { queries_per_day: null, queries_per_month: null },
|
|
32
|
+
},
|
|
33
|
+
authentication: { required: false, type: 'none' },
|
|
34
|
+
reliability: { maintained_by: 'individual' },
|
|
35
|
+
agent_notes: 'Add implementation guidance for AI agents here. Minimum 50 characters. How should agents use this API?',
|
|
36
|
+
contact: 'you@example.com',
|
|
37
|
+
listing_requested: false,
|
|
38
|
+
last_updated: new Date().toISOString(),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
12
41
|
async function initCommand() {
|
|
13
|
-
|
|
14
|
-
console.log(chalk_1.default.gray('This wizard will help you create a valid agent-manifest.json file.\n'));
|
|
42
|
+
const outputPath = path_1.default.join(process.cwd(), 'agent-manifest.json');
|
|
15
43
|
try {
|
|
16
|
-
|
|
17
|
-
const outputPath = path_1.default.join(process.cwd(), 'agent-manifest.json');
|
|
44
|
+
await promises_1.default.access(outputPath);
|
|
18
45
|
try {
|
|
19
|
-
await promises_1.default.access(outputPath);
|
|
20
46
|
const { overwrite } = await inquirer_1.default.prompt([
|
|
21
47
|
{
|
|
22
48
|
type: 'confirm',
|
|
@@ -26,428 +52,26 @@ async function initCommand() {
|
|
|
26
52
|
},
|
|
27
53
|
]);
|
|
28
54
|
if (!overwrite) {
|
|
29
|
-
console.log(chalk_1.default.yellow('
|
|
55
|
+
console.log(chalk_1.default.yellow('\nAborted.\n'));
|
|
30
56
|
return;
|
|
31
57
|
}
|
|
32
58
|
}
|
|
33
|
-
catch {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
console.log(chalk_1.default.bold('\nš Basic Information'));
|
|
38
|
-
const basicInfo = await inquirer_1.default.prompt([
|
|
39
|
-
{
|
|
40
|
-
type: 'input',
|
|
41
|
-
name: 'name',
|
|
42
|
-
message: 'API name:',
|
|
43
|
-
validate: (input) => input.trim().length > 0 || 'Name is required',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
type: 'input',
|
|
47
|
-
name: 'version',
|
|
48
|
-
message: 'Version (semantic versioning):',
|
|
49
|
-
default: '1.0.0',
|
|
50
|
-
validate: (input) => {
|
|
51
|
-
const semverRegex = /^\d+\.\d+\.\d+$/;
|
|
52
|
-
return semverRegex.test(input) || 'Must be valid semantic version (e.g., 1.0.0)';
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
type: 'input',
|
|
57
|
-
name: 'description',
|
|
58
|
-
message: 'Description (min 100 characters):',
|
|
59
|
-
validate: (input) => input.trim().length >= 100 || `Description must be at least 100 characters (currently ${input.trim().length})`,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'input',
|
|
63
|
-
name: 'homepage',
|
|
64
|
-
message: 'Homepage URL (optional):',
|
|
65
|
-
validate: (input) => {
|
|
66
|
-
if (!input)
|
|
67
|
-
return true;
|
|
68
|
-
try {
|
|
69
|
-
new URL(input);
|
|
70
|
-
return input.startsWith('https://') || 'Must be HTTPS URL';
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return 'Must be a valid URL';
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: 'input',
|
|
79
|
-
name: 'documentation',
|
|
80
|
-
message: 'Documentation URL (optional):',
|
|
81
|
-
validate: (input) => {
|
|
82
|
-
if (!input)
|
|
83
|
-
return true;
|
|
84
|
-
try {
|
|
85
|
-
new URL(input);
|
|
86
|
-
return input.startsWith('https://') || 'Must be HTTPS URL';
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
return 'Must be a valid URL';
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
]);
|
|
94
|
-
// Categories
|
|
95
|
-
console.log(chalk_1.default.bold('\nš·ļø Categories'));
|
|
96
|
-
const categoryInfo = await inquirer_1.default.prompt([
|
|
97
|
-
{
|
|
98
|
-
type: 'checkbox',
|
|
99
|
-
name: 'categories',
|
|
100
|
-
message: 'Select categories (must select at least one):',
|
|
101
|
-
choices: constants_1.STANDARD_CATEGORIES,
|
|
102
|
-
validate: (input) => input.length > 0 || 'Must select at least one category',
|
|
103
|
-
},
|
|
104
|
-
]);
|
|
105
|
-
const { primary_category } = await inquirer_1.default.prompt([
|
|
106
|
-
{
|
|
107
|
-
type: 'list',
|
|
108
|
-
name: 'primary_category',
|
|
109
|
-
message: 'Select primary category:',
|
|
110
|
-
choices: categoryInfo.categories,
|
|
111
|
-
},
|
|
112
|
-
]);
|
|
113
|
-
// Endpoints
|
|
114
|
-
console.log(chalk_1.default.bold('\nš Endpoints'));
|
|
115
|
-
const endpoints = [];
|
|
116
|
-
let addMore = true;
|
|
117
|
-
while (addMore) {
|
|
118
|
-
const endpointInfo = await inquirer_1.default.prompt([
|
|
119
|
-
{
|
|
120
|
-
type: 'input',
|
|
121
|
-
name: 'path',
|
|
122
|
-
message: 'Endpoint path (e.g., /api/v1/data):',
|
|
123
|
-
validate: (input) => input.trim().startsWith('/') || 'Path must start with /',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'list',
|
|
127
|
-
name: 'method',
|
|
128
|
-
message: 'HTTP method:',
|
|
129
|
-
choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
|
|
130
|
-
default: 'GET',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'input',
|
|
134
|
-
name: 'description',
|
|
135
|
-
message: 'Endpoint description:',
|
|
136
|
-
validate: (input) => input.trim().length > 0 || 'Description is required',
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
type: 'input',
|
|
140
|
-
name: 'response_description',
|
|
141
|
-
message: 'Response description:',
|
|
142
|
-
validate: (input) => input.trim().length > 0 || 'Response description is required',
|
|
143
|
-
},
|
|
144
|
-
]);
|
|
145
|
-
// Ask about parameters
|
|
146
|
-
const { hasParams } = await inquirer_1.default.prompt([
|
|
147
|
-
{
|
|
148
|
-
type: 'confirm',
|
|
149
|
-
name: 'hasParams',
|
|
150
|
-
message: 'Add parameters to this endpoint?',
|
|
151
|
-
default: false,
|
|
152
|
-
},
|
|
153
|
-
]);
|
|
154
|
-
const parameters = {};
|
|
155
|
-
if (hasParams) {
|
|
156
|
-
const { paramLocation } = await inquirer_1.default.prompt([
|
|
157
|
-
{
|
|
158
|
-
type: 'list',
|
|
159
|
-
name: 'paramLocation',
|
|
160
|
-
message: 'Parameter location:',
|
|
161
|
-
choices: ['query', 'body'],
|
|
162
|
-
},
|
|
163
|
-
]);
|
|
164
|
-
const params = {};
|
|
165
|
-
let addMoreParams = true;
|
|
166
|
-
while (addMoreParams) {
|
|
167
|
-
const paramInfo = await inquirer_1.default.prompt([
|
|
168
|
-
{
|
|
169
|
-
type: 'input',
|
|
170
|
-
name: 'name',
|
|
171
|
-
message: 'Parameter name:',
|
|
172
|
-
validate: (input) => input.trim().length > 0 || 'Name is required',
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
type: 'list',
|
|
176
|
-
name: 'type',
|
|
177
|
-
message: 'Parameter type:',
|
|
178
|
-
choices: ['string', 'number', 'boolean', 'array', 'object'],
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
type: 'confirm',
|
|
182
|
-
name: 'required',
|
|
183
|
-
message: 'Is this parameter required?',
|
|
184
|
-
default: false,
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
type: 'input',
|
|
188
|
-
name: 'description',
|
|
189
|
-
message: 'Parameter description:',
|
|
190
|
-
validate: (input) => input.trim().length > 0 || 'Description is required',
|
|
191
|
-
},
|
|
192
|
-
]);
|
|
193
|
-
params[paramInfo.name] = {
|
|
194
|
-
type: paramInfo.type,
|
|
195
|
-
required: paramInfo.required,
|
|
196
|
-
description: paramInfo.description,
|
|
197
|
-
};
|
|
198
|
-
const { continueParams } = await inquirer_1.default.prompt([
|
|
199
|
-
{
|
|
200
|
-
type: 'confirm',
|
|
201
|
-
name: 'continueParams',
|
|
202
|
-
message: 'Add another parameter?',
|
|
203
|
-
default: false,
|
|
204
|
-
},
|
|
205
|
-
]);
|
|
206
|
-
addMoreParams = continueParams;
|
|
207
|
-
}
|
|
208
|
-
parameters[paramLocation] = params;
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (err.isTtyError) {
|
|
61
|
+
console.error(chalk_1.default.red('\nagent-manifest.json exists. Run in an interactive terminal to overwrite, or remove the file first.\n'));
|
|
62
|
+
process.exit(1);
|
|
209
63
|
}
|
|
210
|
-
|
|
211
|
-
path: endpointInfo.path,
|
|
212
|
-
method: endpointInfo.method,
|
|
213
|
-
description: endpointInfo.description,
|
|
214
|
-
parameters: Object.keys(parameters).length > 0 ? parameters : undefined,
|
|
215
|
-
response: {
|
|
216
|
-
type: 'object',
|
|
217
|
-
description: endpointInfo.response_description,
|
|
218
|
-
},
|
|
219
|
-
});
|
|
220
|
-
const { continueEndpoints } = await inquirer_1.default.prompt([
|
|
221
|
-
{
|
|
222
|
-
type: 'confirm',
|
|
223
|
-
name: 'continueEndpoints',
|
|
224
|
-
message: 'Add another endpoint?',
|
|
225
|
-
default: false,
|
|
226
|
-
},
|
|
227
|
-
]);
|
|
228
|
-
addMore = continueEndpoints;
|
|
229
|
-
}
|
|
230
|
-
// Pricing
|
|
231
|
-
console.log(chalk_1.default.bold('\nš° Pricing'));
|
|
232
|
-
const pricingInfo = await inquirer_1.default.prompt([
|
|
233
|
-
{
|
|
234
|
-
type: 'list',
|
|
235
|
-
name: 'model',
|
|
236
|
-
message: 'Pricing model:',
|
|
237
|
-
choices: constants_1.PRICING_MODELS,
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
type: 'input',
|
|
241
|
-
name: 'details',
|
|
242
|
-
message: 'Pricing details (optional, e.g., "First 1000 requests free"):',
|
|
243
|
-
},
|
|
244
|
-
]);
|
|
245
|
-
// Authentication
|
|
246
|
-
console.log(chalk_1.default.bold('\nš Authentication'));
|
|
247
|
-
const authInfo = await inquirer_1.default.prompt([
|
|
248
|
-
{
|
|
249
|
-
type: 'list',
|
|
250
|
-
name: 'type',
|
|
251
|
-
message: 'Authentication type:',
|
|
252
|
-
choices: constants_1.AUTH_TYPES,
|
|
253
|
-
},
|
|
254
|
-
]);
|
|
255
|
-
let authConfig = {};
|
|
256
|
-
if (authInfo.type !== 'none') {
|
|
257
|
-
const configInfo = await inquirer_1.default.prompt([
|
|
258
|
-
{
|
|
259
|
-
type: 'input',
|
|
260
|
-
name: 'header',
|
|
261
|
-
message: 'Header name (e.g., X-API-Key, Authorization):',
|
|
262
|
-
when: authInfo.type === 'api_key' || authInfo.type === 'bearer',
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
type: 'input',
|
|
266
|
-
name: 'signup_url',
|
|
267
|
-
message: 'Signup URL for obtaining credentials:',
|
|
268
|
-
validate: (input) => {
|
|
269
|
-
if (!input)
|
|
270
|
-
return true;
|
|
271
|
-
try {
|
|
272
|
-
new URL(input);
|
|
273
|
-
return true;
|
|
274
|
-
}
|
|
275
|
-
catch {
|
|
276
|
-
return 'Must be a valid URL';
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
]);
|
|
281
|
-
authConfig = configInfo;
|
|
282
|
-
}
|
|
283
|
-
// Rate Limits (optional)
|
|
284
|
-
console.log(chalk_1.default.bold('\nā±ļø Rate Limits (optional)'));
|
|
285
|
-
const { addRateLimits } = await inquirer_1.default.prompt([
|
|
286
|
-
{
|
|
287
|
-
type: 'confirm',
|
|
288
|
-
name: 'addRateLimits',
|
|
289
|
-
message: 'Add rate limit information?',
|
|
290
|
-
default: false,
|
|
291
|
-
},
|
|
292
|
-
]);
|
|
293
|
-
let rateLimits;
|
|
294
|
-
if (addRateLimits) {
|
|
295
|
-
rateLimits = await inquirer_1.default.prompt([
|
|
296
|
-
{
|
|
297
|
-
type: 'number',
|
|
298
|
-
name: 'requests_per_minute',
|
|
299
|
-
message: 'Requests per minute:',
|
|
300
|
-
default: 60,
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
type: 'number',
|
|
304
|
-
name: 'requests_per_day',
|
|
305
|
-
message: 'Requests per day:',
|
|
306
|
-
default: 10000,
|
|
307
|
-
},
|
|
308
|
-
]);
|
|
64
|
+
throw err;
|
|
309
65
|
}
|
|
310
|
-
// Reliability Metrics (optional)
|
|
311
|
-
console.log(chalk_1.default.bold('\nš Reliability Metrics (optional)'));
|
|
312
|
-
const { addReliability } = await inquirer_1.default.prompt([
|
|
313
|
-
{
|
|
314
|
-
type: 'confirm',
|
|
315
|
-
name: 'addReliability',
|
|
316
|
-
message: 'Add reliability metrics?',
|
|
317
|
-
default: false,
|
|
318
|
-
},
|
|
319
|
-
]);
|
|
320
|
-
let reliabilityMetrics;
|
|
321
|
-
if (addReliability) {
|
|
322
|
-
reliabilityMetrics = await inquirer_1.default.prompt([
|
|
323
|
-
{
|
|
324
|
-
type: 'number',
|
|
325
|
-
name: 'uptime_percentage',
|
|
326
|
-
message: 'Uptime percentage (e.g., 99.9):',
|
|
327
|
-
default: 99.9,
|
|
328
|
-
validate: (input) => (input >= 0 && input <= 100) || 'Must be between 0 and 100',
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
type: 'number',
|
|
332
|
-
name: 'avg_response_time_ms',
|
|
333
|
-
message: 'Average response time (ms):',
|
|
334
|
-
default: 150,
|
|
335
|
-
},
|
|
336
|
-
]);
|
|
337
|
-
}
|
|
338
|
-
// Contact Information
|
|
339
|
-
console.log(chalk_1.default.bold('\nš§ Contact Information'));
|
|
340
|
-
const contactInfo = await inquirer_1.default.prompt([
|
|
341
|
-
{
|
|
342
|
-
type: 'input',
|
|
343
|
-
name: 'email',
|
|
344
|
-
message: 'Support email:',
|
|
345
|
-
validate: (input) => {
|
|
346
|
-
if (!input)
|
|
347
|
-
return true;
|
|
348
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
349
|
-
return emailRegex.test(input) || 'Must be a valid email';
|
|
350
|
-
},
|
|
351
|
-
},
|
|
352
|
-
{
|
|
353
|
-
type: 'input',
|
|
354
|
-
name: 'support_url',
|
|
355
|
-
message: 'Support URL (optional):',
|
|
356
|
-
validate: (input) => {
|
|
357
|
-
if (!input)
|
|
358
|
-
return true;
|
|
359
|
-
try {
|
|
360
|
-
new URL(input);
|
|
361
|
-
return true;
|
|
362
|
-
}
|
|
363
|
-
catch {
|
|
364
|
-
return 'Must be a valid URL';
|
|
365
|
-
}
|
|
366
|
-
},
|
|
367
|
-
},
|
|
368
|
-
{
|
|
369
|
-
type: 'input',
|
|
370
|
-
name: 'github',
|
|
371
|
-
message: 'GitHub URL (optional):',
|
|
372
|
-
validate: (input) => {
|
|
373
|
-
if (!input)
|
|
374
|
-
return true;
|
|
375
|
-
try {
|
|
376
|
-
new URL(input);
|
|
377
|
-
return input.includes('github.com') || 'Should be a GitHub URL';
|
|
378
|
-
}
|
|
379
|
-
catch {
|
|
380
|
-
return 'Must be a valid URL';
|
|
381
|
-
}
|
|
382
|
-
},
|
|
383
|
-
},
|
|
384
|
-
]);
|
|
385
|
-
// Agent Notes
|
|
386
|
-
console.log(chalk_1.default.bold('\nš¤ Agent Guidance'));
|
|
387
|
-
const { agent_notes } = await inquirer_1.default.prompt([
|
|
388
|
-
{
|
|
389
|
-
type: 'input',
|
|
390
|
-
name: 'agent_notes',
|
|
391
|
-
message: 'Implementation guidance for AI agents (min 50 characters):',
|
|
392
|
-
validate: (input) => input.trim().length >= 50 ||
|
|
393
|
-
`Agent notes must be at least 50 characters (currently ${input.trim().length})`,
|
|
394
|
-
},
|
|
395
|
-
]);
|
|
396
|
-
// Registry Listing
|
|
397
|
-
console.log(chalk_1.default.bold('\nš Registry'));
|
|
398
|
-
const { listing_requested } = await inquirer_1.default.prompt([
|
|
399
|
-
{
|
|
400
|
-
type: 'confirm',
|
|
401
|
-
name: 'listing_requested',
|
|
402
|
-
message: 'Request listing in public AMP registry?',
|
|
403
|
-
default: true,
|
|
404
|
-
},
|
|
405
|
-
]);
|
|
406
|
-
// Build the manifest
|
|
407
|
-
const manifest = {
|
|
408
|
-
spec_version: 'agentmanifest-0.1',
|
|
409
|
-
name: basicInfo.name,
|
|
410
|
-
version: basicInfo.version,
|
|
411
|
-
description: basicInfo.description,
|
|
412
|
-
...(basicInfo.homepage && { homepage: basicInfo.homepage }),
|
|
413
|
-
...(basicInfo.documentation && { documentation: basicInfo.documentation }),
|
|
414
|
-
categories: categoryInfo.categories,
|
|
415
|
-
primary_category,
|
|
416
|
-
endpoints,
|
|
417
|
-
pricing: {
|
|
418
|
-
model: pricingInfo.model,
|
|
419
|
-
...(pricingInfo.details && { details: pricingInfo.details }),
|
|
420
|
-
},
|
|
421
|
-
authentication: {
|
|
422
|
-
type: authInfo.type,
|
|
423
|
-
...(authInfo.type !== 'none' && Object.keys(authConfig).length > 0 && { config: authConfig }),
|
|
424
|
-
},
|
|
425
|
-
...(rateLimits && { rate_limits: rateLimits }),
|
|
426
|
-
...(reliabilityMetrics && { reliability_metrics: reliabilityMetrics }),
|
|
427
|
-
...(Object.keys(contactInfo).some((k) => contactInfo[k]) && {
|
|
428
|
-
contact: Object.fromEntries(Object.entries(contactInfo).filter(([_, v]) => v)),
|
|
429
|
-
}),
|
|
430
|
-
agent_notes,
|
|
431
|
-
listing_requested,
|
|
432
|
-
last_updated: new Date().toISOString(),
|
|
433
|
-
};
|
|
434
|
-
// Write to file
|
|
435
|
-
await promises_1.default.writeFile(outputPath, JSON.stringify(manifest, null, 2));
|
|
436
|
-
console.log(chalk_1.default.green.bold('\nā
Success!'));
|
|
437
|
-
console.log(chalk_1.default.gray(`\nManifest created at: ${outputPath}`));
|
|
438
|
-
console.log(chalk_1.default.gray('\nNext steps:'));
|
|
439
|
-
console.log(chalk_1.default.cyan(' 1. Review the generated manifest'));
|
|
440
|
-
console.log(chalk_1.default.cyan(' 2. Run "amp validate" to check compliance'));
|
|
441
|
-
console.log(chalk_1.default.cyan(' 3. Run "amp publish" to submit to registry'));
|
|
442
66
|
}
|
|
443
|
-
catch (
|
|
444
|
-
if (
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
else {
|
|
448
|
-
console.error(chalk_1.default.red('Error:'), error.message);
|
|
449
|
-
}
|
|
450
|
-
process.exit(1);
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (err.code !== 'ENOENT')
|
|
69
|
+
throw err;
|
|
70
|
+
// File doesn't exist, continue
|
|
451
71
|
}
|
|
72
|
+
const manifest = scaffoldManifest();
|
|
73
|
+
await promises_1.default.writeFile(outputPath, JSON.stringify(manifest, null, 2));
|
|
74
|
+
console.log(chalk_1.default.green.bold('\nā
Created agent-manifest.json'));
|
|
75
|
+
console.log(chalk_1.default.gray('\nEdit the file, then run "amp validate".\n'));
|
|
452
76
|
}
|
|
453
77
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAOA,kCA6cC;AApdD,wDAAgC;AAChC,2DAA6B;AAC7B,gDAAwB;AACxB,kDAA0B;AAC1B,4CAA+E;AAGxE,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAEhG,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,gDAAgD;oBACzD,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QAED,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB;aACnE;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,gCAAgC;gBACzC,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,MAAM,WAAW,GAAG,iBAAiB,CAAC;oBACtC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,8CAA8C,CAAC;gBACnF,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,mCAAmC;gBAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,GAAG,IAAI,0DAA0D,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG;aACjH;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,0BAA0B;gBACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBACf,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC;oBAC7D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,qBAAqB,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,+BAA+B;gBACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBACf,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC;oBAC7D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,qBAAqB,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF;SACF,CAAC,CAAC;QAEH,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,+CAA+C;gBACxD,OAAO,EAAE,+BAAmB;gBAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,mCAAmC;aAC7E;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACjD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,YAAY,CAAC,UAAU;aACjC;SACF,CAAC,CAAC;QAEH,YAAY;QACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACzC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,qCAAqC;oBAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,wBAAwB;iBAC9E;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,cAAc;oBACvB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;oBAClD,OAAO,EAAE,KAAK;iBACf;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB;iBAC1E;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,kCAAkC;iBACnF;aACF,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,kCAAkC;oBAC3C,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAA4E,EAAE,CAAC;YAE/F,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBAC9C;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,qBAAqB;wBAC9B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBAC3B;iBACF,CAAC,CAAC;gBAEH,MAAM,MAAM,GAA8B,EAAE,CAAC;gBAC7C,IAAI,aAAa,GAAG,IAAI,CAAC;gBAEzB,OAAO,aAAa,EAAE,CAAC;oBACrB,MAAM,SAAS,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;wBACtC;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,iBAAiB;4BAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB;yBACnE;wBACD;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,iBAAiB;4BAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;yBAC5D;wBACD;4BACE,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,6BAA6B;4BACtC,OAAO,EAAE,KAAK;yBACf;wBACD;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,wBAAwB;4BACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB;yBAC1E;qBACF,CAAC,CAAC;oBAEH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;wBACvB,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,WAAW,EAAE,SAAS,CAAC,WAAW;qBACnC,CAAC;oBAEF,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;wBAC/C;4BACE,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,gBAAgB;4BACtB,OAAO,EAAE,wBAAwB;4BACjC,OAAO,EAAE,KAAK;yBACf;qBACF,CAAC,CAAC;oBAEH,aAAa,GAAG,cAAc,CAAC;gBACjC,CAAC;gBAED,UAAU,CAAC,aAAiC,CAAC,GAAG,MAAM,CAAC;YACzD,CAAC;YAED,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;gBACvE,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,YAAY,CAAC,oBAAoB;iBAC/C;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAClD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,OAAO,GAAG,iBAAiB,CAAC;QAC9B,CAAC;QAED,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,0BAAc;aACxB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,+DAA+D;aACzE;SACF,CAAC,CAAC;QAEH,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACrC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,sBAAU;aACpB;SACF,CAAC,CAAC;QAEH,IAAI,UAAU,GAAQ,EAAE,CAAC;QACzB,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACvC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,+CAA+C;oBACxD,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;iBAChE;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,uCAAuC;oBAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,IAAI,CAAC,KAAK;4BAAE,OAAO,IAAI,CAAC;wBACxB,IAAI,CAAC;4BACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;4BACf,OAAO,IAAI,CAAC;wBACd,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,qBAAqB,CAAC;wBAC/B,CAAC;oBACH,CAAC;iBACF;aACF,CAAC,CAAC;YACH,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC9C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC;QACf,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACjC;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,sBAAsB;oBAC/B,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;QACL,CAAC;QAED,iCAAiC;QACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC/C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,kBAAkB,CAAC;QACvB,IAAI,cAAc,EAAE,CAAC;YACnB,kBAAkB,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACzC;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,iCAAiC;oBAC1C,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,2BAA2B;iBACjF;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,6BAA6B;oBACtC,OAAO,EAAE,GAAG;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,MAAM,UAAU,GAAG,4BAA4B,CAAC;oBAChD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC;gBAC3D,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBACf,OAAO,IAAI,CAAC;oBACd,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,qBAAqB,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBACf,OAAO,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,wBAAwB,CAAC;oBAClE,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,qBAAqB,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF;SACF,CAAC,CAAC;QAEH,cAAc;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC5C;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,4DAA4D;gBACrE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE;oBACzB,yDAAyD,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG;aAClF;SACF,CAAC,CAAC;QAEH,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAClD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,yCAAyC;gBAClD,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,QAAQ,GAAkB;YAC9B,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3D,GAAG,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1E,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,gBAAgB;YAChB,SAAS;YACT,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;aAC7D;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;aAC9F;YACD,GAAG,CAAC,UAAU,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;YAC9C,GAAG,CAAC,kBAAkB,IAAI,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAA6B,CAAC,CAAC,IAAI;gBACtF,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAClD;aACF,CAAC;YACF,WAAW;YACX,iBAAiB;YACjB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QAEF,gBAAgB;QAChB,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAElE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAuCA,kCAkCC;AAzED,2DAA6B;AAC7B,gDAAwB;AACxB,kDAA0B;AAC1B,wDAAgC;AAGhC,0FAA0F;AAC1F,SAAS,gBAAgB;IACvB,OAAO;QACL,YAAY,EAAE,mBAAmB;QACjC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,6HAA6H;QAC/H,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,gBAAgB,EAAE,WAAW;QAC7B,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,sEAAsE;gBACnF,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,sEAAsE;aAC7F;SACF;QACD,OAAO,EAAE;YACP,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;SAC9D;QACD,cAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;QACjD,WAAW,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE;QAC5C,WAAW,EACT,wGAAwG;QAC1G,OAAO,EAAE,iBAAiB;QAC1B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,gDAAgD;oBACzD,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAC,CAAC;gBACnI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;QACrC,+BAA+B;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoDD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBA4P3D"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -109,7 +109,69 @@ async function publishCommand(options) {
|
|
|
109
109
|
timeout: 15000,
|
|
110
110
|
});
|
|
111
111
|
const result = publishResponse.data;
|
|
112
|
-
|
|
112
|
+
// Handle async submission response
|
|
113
|
+
if (result.data?.submission_id) {
|
|
114
|
+
const submissionId = result.data.submission_id;
|
|
115
|
+
const statusUrl = result.data.status_url;
|
|
116
|
+
console.log(chalk_1.default.green('ā Submission accepted'));
|
|
117
|
+
console.log(chalk_1.default.gray(`\nSubmission ID: ${submissionId}`));
|
|
118
|
+
console.log(chalk_1.default.gray('Status: Validating...'));
|
|
119
|
+
// Poll for status
|
|
120
|
+
const baseUrl = REGISTRY_URL.replace('/listings/submit', '');
|
|
121
|
+
const fullStatusUrl = `${baseUrl}${statusUrl}`;
|
|
122
|
+
let attempts = 0;
|
|
123
|
+
const maxAttempts = 60; // 60 seconds max
|
|
124
|
+
let finalStatus = null;
|
|
125
|
+
while (attempts < maxAttempts) {
|
|
126
|
+
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
|
|
127
|
+
attempts++;
|
|
128
|
+
try {
|
|
129
|
+
const statusResponse = await axios_1.default.get(fullStatusUrl, { timeout: 5000 });
|
|
130
|
+
finalStatus = statusResponse.data;
|
|
131
|
+
if (finalStatus.status === 'approved' || finalStatus.status === 'completed') {
|
|
132
|
+
console.log(chalk_1.default.green.bold('\nā
Successfully Published!'));
|
|
133
|
+
if (finalStatus.listing_id) {
|
|
134
|
+
console.log(chalk_1.default.gray(`\nListing ID: ${finalStatus.listing_id}`));
|
|
135
|
+
}
|
|
136
|
+
if (finalStatus.listing_url) {
|
|
137
|
+
const fullListingUrl = finalStatus.listing_url.startsWith('http')
|
|
138
|
+
? finalStatus.listing_url
|
|
139
|
+
: `https://api.agent-manifest.com${finalStatus.listing_url}`;
|
|
140
|
+
console.log(chalk_1.default.gray(`View at: ${fullListingUrl}`));
|
|
141
|
+
}
|
|
142
|
+
console.log(chalk_1.default.gray('\nYour API is now discoverable in the AMP registry!'));
|
|
143
|
+
console.log(chalk_1.default.gray('AI agents can find and use your API through:'));
|
|
144
|
+
console.log(chalk_1.default.cyan(` ${manifest.homepage}/.well-known/agent-manifest.json`));
|
|
145
|
+
process.exit(0);
|
|
146
|
+
}
|
|
147
|
+
else if (finalStatus.status === 'rejected') {
|
|
148
|
+
console.log(chalk_1.default.red.bold('\nā Publication Rejected'));
|
|
149
|
+
if (finalStatus.validation_errors && finalStatus.validation_errors.length > 0) {
|
|
150
|
+
console.log(chalk_1.default.red.bold('\nValidation Errors:'));
|
|
151
|
+
finalStatus.validation_errors.forEach((error, index) => {
|
|
152
|
+
console.log(chalk_1.default.red(` ${index + 1}. ${error.field}: ${error.message}`));
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else if (finalStatus.message) {
|
|
156
|
+
console.log(chalk_1.default.red(`\n${finalStatus.message}`));
|
|
157
|
+
}
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
// Still pending/validating, continue polling
|
|
161
|
+
}
|
|
162
|
+
catch (statusError) {
|
|
163
|
+
// Ignore polling errors, will retry
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Timeout
|
|
167
|
+
console.log(chalk_1.default.yellow.bold('\nā±ļø Validation Timeout'));
|
|
168
|
+
console.log(chalk_1.default.gray(`\nValidation is taking longer than expected.`));
|
|
169
|
+
console.log(chalk_1.default.gray(`Check status manually:`));
|
|
170
|
+
console.log(chalk_1.default.cyan(` ${fullStatusUrl}`));
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
// Handle legacy sync response (if registry changes back)
|
|
174
|
+
else if (result.success) {
|
|
113
175
|
console.log(chalk_1.default.green.bold('\nā
Successfully Published!'));
|
|
114
176
|
if (result.listing_id) {
|
|
115
177
|
console.log(chalk_1.default.gray(`\nListing ID: ${result.listing_id}`));
|
|
@@ -117,18 +179,14 @@ async function publishCommand(options) {
|
|
|
117
179
|
if (result.url) {
|
|
118
180
|
console.log(chalk_1.default.gray(`View at: ${result.url}`));
|
|
119
181
|
}
|
|
120
|
-
if (result.message) {
|
|
121
|
-
console.log(chalk_1.default.cyan(`\n${result.message}`));
|
|
122
|
-
}
|
|
123
182
|
console.log(chalk_1.default.gray('\nYour API is now discoverable in the AMP registry!'));
|
|
124
183
|
console.log(chalk_1.default.gray('AI agents can find and use your API through:'));
|
|
125
184
|
console.log(chalk_1.default.cyan(` ${manifest.homepage}/.well-known/agent-manifest.json`));
|
|
126
185
|
}
|
|
127
186
|
else {
|
|
128
187
|
console.log(chalk_1.default.red.bold('ā Publication Failed'));
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
188
|
+
console.log(chalk_1.default.gray('\nUnexpected response format:'));
|
|
189
|
+
console.log(chalk_1.default.gray(JSON.stringify(result, null, 2)));
|
|
132
190
|
process.exit(1);
|
|
133
191
|
}
|
|
134
192
|
}
|