@fias/plugin-dev-harness 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/harness-server.d.ts.map +1 -1
- package/dist/server/harness-server.js +203 -0
- package/dist/server/harness-server.js.map +1 -1
- package/dist/server/static/static/harness.css +252 -0
- package/dist/server/static/static/harness.html +82 -0
- package/dist/server/static/static/harness.js +382 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAykBrF"}
|
|
@@ -44,6 +44,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
exports.startHarnessServer = startHarnessServer;
|
|
46
46
|
const express_1 = __importDefault(require("express"));
|
|
47
|
+
const child_process_1 = require("child_process");
|
|
47
48
|
const path = __importStar(require("path"));
|
|
48
49
|
const fs = __importStar(require("fs"));
|
|
49
50
|
const chalk_1 = __importDefault(require("chalk"));
|
|
@@ -296,6 +297,208 @@ async function startHarnessServer(options) {
|
|
|
296
297
|
.json({ error: err instanceof Error ? err.message : 'Failed to fetch credits' });
|
|
297
298
|
}
|
|
298
299
|
});
|
|
300
|
+
// ────────────────────────────────────────────────────────────────
|
|
301
|
+
// Publish Wizard Endpoints
|
|
302
|
+
// ────────────────────────────────────────────────────────────────
|
|
303
|
+
// Read fias-plugin.json from plugin project
|
|
304
|
+
app.get('/api/manifest', (_req, res) => {
|
|
305
|
+
const manifestPath = path.resolve('fias-plugin.json');
|
|
306
|
+
if (!fs.existsSync(manifestPath)) {
|
|
307
|
+
res.status(404).json({ error: 'fias-plugin.json not found in project directory' });
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const content = fs.readFileSync(manifestPath, 'utf-8');
|
|
312
|
+
res.json(JSON.parse(content));
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
res
|
|
316
|
+
.status(400)
|
|
317
|
+
.json({ error: err instanceof Error ? err.message : 'Failed to read manifest' });
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
// Save updated manifest to disk
|
|
321
|
+
app.put('/api/manifest', (req, res) => {
|
|
322
|
+
try {
|
|
323
|
+
const manifestPath = path.resolve('fias-plugin.json');
|
|
324
|
+
fs.writeFileSync(manifestPath, JSON.stringify(req.body, null, 2) + '\n');
|
|
325
|
+
res.json({ success: true });
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
res
|
|
329
|
+
.status(500)
|
|
330
|
+
.json({ error: err instanceof Error ? err.message : 'Failed to save manifest' });
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
// Validate manifest via platform API
|
|
334
|
+
app.post('/api/publish/validate', async (req, res) => {
|
|
335
|
+
if (currentMode !== 'live' || !currentAuthToken) {
|
|
336
|
+
res.status(400).json({ error: 'Switch to live mode to publish' });
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
await ensureValidToken();
|
|
340
|
+
try {
|
|
341
|
+
const manifestPath = path.resolve('fias-plugin.json');
|
|
342
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
343
|
+
const response = await fetch(`${getCurrentApiUrl()}/developer/validate`, {
|
|
344
|
+
method: 'POST',
|
|
345
|
+
headers: {
|
|
346
|
+
'Content-Type': 'application/json',
|
|
347
|
+
Authorization: `Bearer ${currentAuthToken}`,
|
|
348
|
+
},
|
|
349
|
+
body: JSON.stringify({ manifest }),
|
|
350
|
+
});
|
|
351
|
+
res.json(await response.json());
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
res.status(500).json({ error: err instanceof Error ? err.message : 'Validation failed' });
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
// Build plugin via npm run build — streams output via SSE
|
|
358
|
+
app.post('/api/publish/build', (_req, res) => {
|
|
359
|
+
res.writeHead(200, {
|
|
360
|
+
'Content-Type': 'text/event-stream',
|
|
361
|
+
'Cache-Control': 'no-cache',
|
|
362
|
+
Connection: 'keep-alive',
|
|
363
|
+
});
|
|
364
|
+
const child = (0, child_process_1.spawn)('npm', ['run', 'build'], {
|
|
365
|
+
cwd: process.cwd(),
|
|
366
|
+
shell: true,
|
|
367
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
368
|
+
});
|
|
369
|
+
child.stdout.on('data', (data) => {
|
|
370
|
+
const lines = data.toString().split('\n').filter(Boolean);
|
|
371
|
+
for (const line of lines) {
|
|
372
|
+
res.write(`data: ${JSON.stringify({ line, stream: 'stdout' })}\n\n`);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
child.stderr.on('data', (data) => {
|
|
376
|
+
const lines = data.toString().split('\n').filter(Boolean);
|
|
377
|
+
for (const line of lines) {
|
|
378
|
+
res.write(`data: ${JSON.stringify({ line, stream: 'stderr' })}\n\n`);
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
child.on('close', (code) => {
|
|
382
|
+
res.write(`data: ${JSON.stringify({ done: true, code: code ?? 1 })}\n\n`);
|
|
383
|
+
res.end();
|
|
384
|
+
});
|
|
385
|
+
child.on('error', (err) => {
|
|
386
|
+
res.write(`data: ${JSON.stringify({ done: true, code: 1, error: err.message })}\n\n`);
|
|
387
|
+
res.end();
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
// Package dist/ + fias-plugin.json into tarball
|
|
391
|
+
app.post('/api/publish/package', (_req, res) => {
|
|
392
|
+
try {
|
|
393
|
+
const distDir = path.resolve('dist');
|
|
394
|
+
if (!fs.existsSync(distDir)) {
|
|
395
|
+
res.status(400).json({ error: 'dist/ directory not found. Did the build succeed?' });
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
const tarball = 'plugin-submission.tar.gz';
|
|
399
|
+
(0, child_process_1.execSync)(`tar -czf ${tarball} dist/ fias-plugin.json`, { cwd: process.cwd() });
|
|
400
|
+
const stats = fs.statSync(path.resolve(tarball));
|
|
401
|
+
res.json({ success: true, sizeBytes: stats.size });
|
|
402
|
+
}
|
|
403
|
+
catch (err) {
|
|
404
|
+
res.status(500).json({ error: err instanceof Error ? err.message : 'Packaging failed' });
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
// Submit: get upload URL → upload tarball → create submission
|
|
408
|
+
app.post('/api/publish/submit', async (req, res) => {
|
|
409
|
+
if (currentMode !== 'live' || !currentAuthToken) {
|
|
410
|
+
res.status(400).json({ error: 'Switch to live mode to publish' });
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
await ensureValidToken();
|
|
414
|
+
const apiUrl = getCurrentApiUrl();
|
|
415
|
+
const headers = {
|
|
416
|
+
'Content-Type': 'application/json',
|
|
417
|
+
Authorization: `Bearer ${currentAuthToken}`,
|
|
418
|
+
};
|
|
419
|
+
try {
|
|
420
|
+
// Read tarball and manifest
|
|
421
|
+
const tarballPath = path.resolve('plugin-submission.tar.gz');
|
|
422
|
+
if (!fs.existsSync(tarballPath)) {
|
|
423
|
+
res.status(400).json({ error: 'No packaged tarball found. Build and package first.' });
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
const tarball = fs.readFileSync(tarballPath);
|
|
427
|
+
const manifest = JSON.parse(fs.readFileSync(path.resolve('fias-plugin.json'), 'utf-8'));
|
|
428
|
+
// 1. Get upload URL
|
|
429
|
+
const uploadResp = await fetch(`${apiUrl}/plugins/submissions/upload-url`, {
|
|
430
|
+
method: 'POST',
|
|
431
|
+
headers,
|
|
432
|
+
body: JSON.stringify({
|
|
433
|
+
fileName: 'plugin-submission.tar.gz',
|
|
434
|
+
sizeBytes: tarball.length,
|
|
435
|
+
}),
|
|
436
|
+
});
|
|
437
|
+
if (!uploadResp.ok) {
|
|
438
|
+
const err = await uploadResp.json().catch(() => ({}));
|
|
439
|
+
throw new Error(err.error?.message || 'Failed to get upload URL');
|
|
440
|
+
}
|
|
441
|
+
const { uploadUrl, submissionId, s3Key } = (await uploadResp.json());
|
|
442
|
+
// 2. Upload to S3
|
|
443
|
+
const s3Resp = await fetch(uploadUrl, {
|
|
444
|
+
method: 'PUT',
|
|
445
|
+
headers: { 'Content-Type': 'application/gzip' },
|
|
446
|
+
body: tarball,
|
|
447
|
+
});
|
|
448
|
+
if (!s3Resp.ok) {
|
|
449
|
+
throw new Error(`S3 upload failed: ${s3Resp.status}`);
|
|
450
|
+
}
|
|
451
|
+
// 3. Create submission
|
|
452
|
+
const submitResp = await fetch(`${apiUrl}/plugins/submissions`, {
|
|
453
|
+
method: 'POST',
|
|
454
|
+
headers,
|
|
455
|
+
body: JSON.stringify({
|
|
456
|
+
submissionId,
|
|
457
|
+
sourceRef: s3Key,
|
|
458
|
+
manifest,
|
|
459
|
+
...(req.body?.archId ? { archId: req.body.archId } : {}),
|
|
460
|
+
}),
|
|
461
|
+
});
|
|
462
|
+
if (!submitResp.ok) {
|
|
463
|
+
const err = await submitResp.json().catch(() => ({}));
|
|
464
|
+
throw new Error(err.error?.message || 'Submission failed');
|
|
465
|
+
}
|
|
466
|
+
// Clean up tarball
|
|
467
|
+
try {
|
|
468
|
+
fs.unlinkSync(tarballPath);
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
/* ignore */
|
|
472
|
+
}
|
|
473
|
+
const result = await submitResp.json();
|
|
474
|
+
console.log(chalk_1.default.green(` Submission created: ${submissionId}`));
|
|
475
|
+
res.json(result);
|
|
476
|
+
}
|
|
477
|
+
catch (err) {
|
|
478
|
+
res.status(500).json({ error: err instanceof Error ? err.message : 'Submission failed' });
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
// Poll submission status
|
|
482
|
+
app.get('/api/publish/status/:id', async (req, res) => {
|
|
483
|
+
if (currentMode !== 'live' || !currentAuthToken) {
|
|
484
|
+
res.status(400).json({ error: 'Not in live mode' });
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
await ensureValidToken();
|
|
488
|
+
try {
|
|
489
|
+
const response = await fetch(`${getCurrentApiUrl()}/plugins/submissions/${req.params.id}`, {
|
|
490
|
+
headers: { Authorization: `Bearer ${currentAuthToken}` },
|
|
491
|
+
});
|
|
492
|
+
if (!response.ok) {
|
|
493
|
+
res.status(response.status).json({ error: 'Failed to fetch status' });
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
res.json(await response.json());
|
|
497
|
+
}
|
|
498
|
+
catch (err) {
|
|
499
|
+
res.status(500).json({ error: err instanceof Error ? err.message : 'Status check failed' });
|
|
500
|
+
}
|
|
501
|
+
});
|
|
299
502
|
// Plugin reachability check
|
|
300
503
|
app.get('/api/check-plugin', async (_req, res) => {
|
|
301
504
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-server.js","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harness-server.js","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -388,3 +388,255 @@ body {
|
|
|
388
388
|
color: #fbbf24;
|
|
389
389
|
margin-left: 8px;
|
|
390
390
|
}
|
|
391
|
+
|
|
392
|
+
/* Publish Wizard */
|
|
393
|
+
.publish-modal {
|
|
394
|
+
width: 600px;
|
|
395
|
+
max-height: 85vh;
|
|
396
|
+
display: flex;
|
|
397
|
+
flex-direction: column;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.publish-steps {
|
|
401
|
+
display: flex;
|
|
402
|
+
gap: 4px;
|
|
403
|
+
margin-bottom: 16px;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.publish-step {
|
|
407
|
+
flex: 1;
|
|
408
|
+
padding: 6px 8px;
|
|
409
|
+
font-size: 11px;
|
|
410
|
+
font-weight: 600;
|
|
411
|
+
color: #6b7280;
|
|
412
|
+
background: #18181b;
|
|
413
|
+
border-radius: 4px;
|
|
414
|
+
text-align: center;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.publish-step.active {
|
|
418
|
+
color: #a78bfa;
|
|
419
|
+
background: #1e1b2e;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
.publish-step.completed {
|
|
423
|
+
color: #86efac;
|
|
424
|
+
background: #0f291e;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.publish-content {
|
|
428
|
+
flex: 1;
|
|
429
|
+
overflow-y: auto;
|
|
430
|
+
max-height: 55vh;
|
|
431
|
+
padding: 4px 0;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.publish-form label {
|
|
435
|
+
display: block;
|
|
436
|
+
font-size: 12px;
|
|
437
|
+
color: #a1a1aa;
|
|
438
|
+
margin: 8px 0 4px;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.pub-textarea {
|
|
442
|
+
resize: vertical;
|
|
443
|
+
font-family: inherit;
|
|
444
|
+
min-height: 40px;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.pub-tags-container {
|
|
448
|
+
margin-bottom: 8px;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.pub-tags-list {
|
|
452
|
+
display: flex;
|
|
453
|
+
flex-wrap: wrap;
|
|
454
|
+
gap: 4px;
|
|
455
|
+
margin-bottom: 4px;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
.pub-tag {
|
|
459
|
+
display: inline-flex;
|
|
460
|
+
align-items: center;
|
|
461
|
+
gap: 4px;
|
|
462
|
+
background: #3f3f46;
|
|
463
|
+
color: #e4e4e7;
|
|
464
|
+
padding: 2px 8px;
|
|
465
|
+
border-radius: 4px;
|
|
466
|
+
font-size: 11px;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.pub-tag-remove {
|
|
470
|
+
cursor: pointer;
|
|
471
|
+
color: #a1a1aa;
|
|
472
|
+
border: none;
|
|
473
|
+
background: none;
|
|
474
|
+
font-size: 14px;
|
|
475
|
+
padding: 0 2px;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.pub-permissions {
|
|
479
|
+
display: flex;
|
|
480
|
+
flex-direction: column;
|
|
481
|
+
gap: 6px;
|
|
482
|
+
margin-bottom: 12px;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.pub-checkbox {
|
|
486
|
+
display: flex;
|
|
487
|
+
align-items: center;
|
|
488
|
+
gap: 6px;
|
|
489
|
+
font-size: 12px;
|
|
490
|
+
color: #e4e4e7;
|
|
491
|
+
cursor: pointer;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.pub-checkbox input {
|
|
495
|
+
accent-color: #a78bfa;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.pub-loading {
|
|
499
|
+
display: flex;
|
|
500
|
+
flex-direction: column;
|
|
501
|
+
align-items: center;
|
|
502
|
+
gap: 12px;
|
|
503
|
+
padding: 32px 0;
|
|
504
|
+
color: #a1a1aa;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.pub-error-item {
|
|
508
|
+
color: #fca5a5;
|
|
509
|
+
font-size: 12px;
|
|
510
|
+
padding: 4px 0;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.pub-error-item::before {
|
|
514
|
+
content: '\2715 ';
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.pub-warn-item {
|
|
518
|
+
color: #fde047;
|
|
519
|
+
font-size: 12px;
|
|
520
|
+
padding: 4px 0;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.pub-warn-item::before {
|
|
524
|
+
content: '\26A0 ';
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.pub-valid {
|
|
528
|
+
color: #86efac;
|
|
529
|
+
font-size: 13px;
|
|
530
|
+
font-weight: 500;
|
|
531
|
+
margin-bottom: 12px;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
.pub-listing-preview {
|
|
535
|
+
background: #18181b;
|
|
536
|
+
border: 1px solid #3f3f46;
|
|
537
|
+
border-radius: 8px;
|
|
538
|
+
padding: 16px;
|
|
539
|
+
margin-top: 12px;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.pub-listing-name {
|
|
543
|
+
font-size: 15px;
|
|
544
|
+
font-weight: 600;
|
|
545
|
+
color: #e4e4e7;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.pub-listing-desc {
|
|
549
|
+
font-size: 12px;
|
|
550
|
+
color: #a1a1aa;
|
|
551
|
+
margin-top: 4px;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.pub-listing-meta {
|
|
555
|
+
font-size: 11px;
|
|
556
|
+
color: #6b7280;
|
|
557
|
+
margin-top: 8px;
|
|
558
|
+
display: flex;
|
|
559
|
+
gap: 12px;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.pub-cost-info {
|
|
563
|
+
background: #1e1b2e;
|
|
564
|
+
border: 1px solid #3b3370;
|
|
565
|
+
border-radius: 8px;
|
|
566
|
+
padding: 12px;
|
|
567
|
+
margin-bottom: 12px;
|
|
568
|
+
font-size: 13px;
|
|
569
|
+
color: #e4e4e7;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
.pub-cost-info strong {
|
|
573
|
+
color: #fde047;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.pub-build-output {
|
|
577
|
+
background: #0a0a0f;
|
|
578
|
+
border: 1px solid #3f3f46;
|
|
579
|
+
border-radius: 4px;
|
|
580
|
+
padding: 8px 12px;
|
|
581
|
+
font-family: 'SF Mono', 'Fira Code', monospace;
|
|
582
|
+
font-size: 11px;
|
|
583
|
+
max-height: 200px;
|
|
584
|
+
overflow-y: auto;
|
|
585
|
+
color: #a1a1aa;
|
|
586
|
+
white-space: pre-wrap;
|
|
587
|
+
display: none;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.pub-phase {
|
|
591
|
+
padding: 4px 0;
|
|
592
|
+
font-size: 12px;
|
|
593
|
+
color: #a1a1aa;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.pub-phase.active {
|
|
597
|
+
color: #e4e4e7;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.pub-phase.done {
|
|
601
|
+
color: #86efac;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.pub-phase.error {
|
|
605
|
+
color: #fca5a5;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.pub-phase::before {
|
|
609
|
+
content: '\25CB ';
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.pub-phase.active::before {
|
|
613
|
+
content: '\25C9 ';
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.pub-phase.done::before {
|
|
617
|
+
content: '\2713 ';
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.pub-phase.error::before {
|
|
621
|
+
content: '\2715 ';
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.pub-review-status {
|
|
625
|
+
text-align: center;
|
|
626
|
+
padding: 24px 0;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.pub-congrats {
|
|
630
|
+
color: #86efac;
|
|
631
|
+
font-size: 16px;
|
|
632
|
+
font-weight: 600;
|
|
633
|
+
text-align: center;
|
|
634
|
+
margin-bottom: 12px;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.pub-rejected {
|
|
638
|
+
color: #fca5a5;
|
|
639
|
+
font-size: 14px;
|
|
640
|
+
font-weight: 500;
|
|
641
|
+
margin-bottom: 8px;
|
|
642
|
+
}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
<button id="mode-badge" class="mode-badge mode-mock" title="Click to switch mode">MOCK ⇆</button>
|
|
18
18
|
</div>
|
|
19
19
|
<div class="toolbar-right">
|
|
20
|
+
<button id="publish-btn" class="btn-icon" title="Publish plugin">▲</button>
|
|
20
21
|
<span id="credit-balance" class="credit-balance" style="display: none"></span>
|
|
21
22
|
<span id="theme-badge" class="theme-badge theme-dark">DARK</span>
|
|
22
23
|
<button id="theme-toggle" class="btn-icon" title="Toggle theme">☼/☾</button>
|
|
@@ -37,6 +38,87 @@
|
|
|
37
38
|
</div>
|
|
38
39
|
</div>
|
|
39
40
|
</div>
|
|
41
|
+
<!-- Publish wizard modal -->
|
|
42
|
+
<div id="publish-modal" class="modal-overlay" style="display: none">
|
|
43
|
+
<div class="modal publish-modal">
|
|
44
|
+
<div class="publish-steps">
|
|
45
|
+
<span class="publish-step active" data-step="1">1. Configure</span>
|
|
46
|
+
<span class="publish-step" data-step="2">2. Validate</span>
|
|
47
|
+
<span class="publish-step" data-step="3">3. Build & Submit</span>
|
|
48
|
+
<span class="publish-step" data-step="4">4. Status</span>
|
|
49
|
+
</div>
|
|
50
|
+
<div id="publish-step-1" class="publish-content">
|
|
51
|
+
<div class="publish-form">
|
|
52
|
+
<label>Name</label>
|
|
53
|
+
<input id="pub-name" class="modal-input" type="text" />
|
|
54
|
+
<label>Version</label>
|
|
55
|
+
<input id="pub-version" class="modal-input" type="text" placeholder="1.0.0" />
|
|
56
|
+
<label>Description</label>
|
|
57
|
+
<textarea id="pub-description" class="modal-input pub-textarea" rows="2"></textarea>
|
|
58
|
+
<label>About (optional)</label>
|
|
59
|
+
<textarea id="pub-expanded-desc" class="modal-input pub-textarea" rows="3"></textarea>
|
|
60
|
+
<label>Type</label>
|
|
61
|
+
<select id="pub-archetype" class="modal-input">
|
|
62
|
+
<option value="tool">Tool</option>
|
|
63
|
+
<option value="site">Site</option>
|
|
64
|
+
</select>
|
|
65
|
+
<label>Tags</label>
|
|
66
|
+
<div class="pub-tags-container">
|
|
67
|
+
<div id="pub-tags-list" class="pub-tags-list"></div>
|
|
68
|
+
<input id="pub-tags-input" class="modal-input" type="text" placeholder="Add tag, press Enter" />
|
|
69
|
+
</div>
|
|
70
|
+
<label>Pricing</label>
|
|
71
|
+
<select id="pub-pricing-model" class="modal-input">
|
|
72
|
+
<option value="free">Free</option>
|
|
73
|
+
<option value="fixed">Fixed Price</option>
|
|
74
|
+
<option value="per_use">Per Use</option>
|
|
75
|
+
</select>
|
|
76
|
+
<div id="pub-price-row" style="display:none">
|
|
77
|
+
<label>Price (cents)</label>
|
|
78
|
+
<input id="pub-price" class="modal-input" type="number" min="0" />
|
|
79
|
+
</div>
|
|
80
|
+
<label>Permissions</label>
|
|
81
|
+
<div class="pub-permissions" id="pub-permissions">
|
|
82
|
+
<label class="pub-checkbox"><input type="checkbox" value="theme:read" /> theme:read</label>
|
|
83
|
+
<label class="pub-checkbox"><input type="checkbox" value="user:profile:read" /> user:profile:read</label>
|
|
84
|
+
<label class="pub-checkbox"><input type="checkbox" value="storage:sandbox" /> storage:sandbox</label>
|
|
85
|
+
<label class="pub-checkbox"><input type="checkbox" value="entities:invoke" /> entities:invoke</label>
|
|
86
|
+
<label class="pub-checkbox"><input type="checkbox" value="entities:image_generate" /> entities:image_generate</label>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div id="publish-step-2" class="publish-content" style="display:none">
|
|
91
|
+
<div id="pub-validate-loading" class="pub-loading">
|
|
92
|
+
<div class="status-spinner"></div>
|
|
93
|
+
<p>Validating manifest...</p>
|
|
94
|
+
</div>
|
|
95
|
+
<div id="pub-validate-results" style="display:none">
|
|
96
|
+
<div id="pub-validate-status"></div>
|
|
97
|
+
<div id="pub-validate-errors"></div>
|
|
98
|
+
<div id="pub-validate-warnings"></div>
|
|
99
|
+
<div id="pub-listing-preview" class="pub-listing-preview"></div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<div id="publish-step-3" class="publish-content" style="display:none">
|
|
103
|
+
<div id="pub-cost-info" class="pub-cost-info"></div>
|
|
104
|
+
<div id="pub-build-output" class="pub-build-output"></div>
|
|
105
|
+
<div id="pub-submit-progress"></div>
|
|
106
|
+
</div>
|
|
107
|
+
<div id="publish-step-4" class="publish-content" style="display:none">
|
|
108
|
+
<div id="pub-review-status" class="pub-review-status">
|
|
109
|
+
<div class="status-spinner"></div>
|
|
110
|
+
<p>Waiting for review...</p>
|
|
111
|
+
</div>
|
|
112
|
+
<div id="pub-review-result" style="display:none"></div>
|
|
113
|
+
</div>
|
|
114
|
+
<div id="pub-error" class="modal-error" style="display:none"></div>
|
|
115
|
+
<div class="modal-actions">
|
|
116
|
+
<button id="pub-cancel" class="btn-secondary">Cancel</button>
|
|
117
|
+
<button id="pub-back" class="btn-secondary" style="display:none">Back</button>
|
|
118
|
+
<button id="pub-next" class="btn-primary">Next</button>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
40
122
|
<div id="plugin-status" class="plugin-status">
|
|
41
123
|
<div class="status-spinner"></div>
|
|
42
124
|
<p>Connecting to plugin server...</p>
|
|
@@ -477,6 +477,388 @@
|
|
|
477
477
|
});
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
+
// ────────────────────────────────────────────────────────────────
|
|
481
|
+
// Publish Wizard
|
|
482
|
+
// ────────────────────────────────────────────────────────────────
|
|
483
|
+
|
|
484
|
+
var publishBtn = document.getElementById('publish-btn');
|
|
485
|
+
var publishModal = document.getElementById('publish-modal');
|
|
486
|
+
var pubCancel = document.getElementById('pub-cancel');
|
|
487
|
+
var pubBack = document.getElementById('pub-back');
|
|
488
|
+
var pubNext = document.getElementById('pub-next');
|
|
489
|
+
var pubError = document.getElementById('pub-error');
|
|
490
|
+
var pubStep = 1;
|
|
491
|
+
var pubManifest = null;
|
|
492
|
+
var pubSubmissionId = null;
|
|
493
|
+
var pubPollTimer = null;
|
|
494
|
+
var pubValidationPassed = false;
|
|
495
|
+
|
|
496
|
+
publishBtn.addEventListener('click', function () {
|
|
497
|
+
if (currentMode !== 'live' || !hasCredentials) {
|
|
498
|
+
pubError.textContent = 'Switch to live mode and sign in to publish.';
|
|
499
|
+
pubError.style.display = 'block';
|
|
500
|
+
publishModal.style.display = 'flex';
|
|
501
|
+
showPublishStep(1);
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
pubError.style.display = 'none';
|
|
505
|
+
fetch('/api/manifest')
|
|
506
|
+
.then(function (r) {
|
|
507
|
+
if (!r.ok) throw new Error('fias-plugin.json not found');
|
|
508
|
+
return r.json();
|
|
509
|
+
})
|
|
510
|
+
.then(function (manifest) {
|
|
511
|
+
pubManifest = manifest;
|
|
512
|
+
populatePublishForm(manifest);
|
|
513
|
+
publishModal.style.display = 'flex';
|
|
514
|
+
showPublishStep(1);
|
|
515
|
+
})
|
|
516
|
+
.catch(function (err) {
|
|
517
|
+
pubError.textContent = err.message;
|
|
518
|
+
pubError.style.display = 'block';
|
|
519
|
+
publishModal.style.display = 'flex';
|
|
520
|
+
showPublishStep(1);
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
pubCancel.addEventListener('click', closePublishModal);
|
|
525
|
+
publishModal.addEventListener('click', function (e) {
|
|
526
|
+
if (e.target === publishModal) closePublishModal();
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
function closePublishModal() {
|
|
530
|
+
publishModal.style.display = 'none';
|
|
531
|
+
if (pubPollTimer) { clearInterval(pubPollTimer); pubPollTimer = null; }
|
|
532
|
+
pubStep = 1;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
pubBack.addEventListener('click', function () {
|
|
536
|
+
if (pubStep > 1) showPublishStep(pubStep - 1);
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
pubNext.addEventListener('click', function () {
|
|
540
|
+
pubError.style.display = 'none';
|
|
541
|
+
if (pubStep === 1) {
|
|
542
|
+
collectAndSaveManifest().then(function () { showPublishStep(2); startValidation(); });
|
|
543
|
+
} else if (pubStep === 2 && pubValidationPassed) {
|
|
544
|
+
showPublishStep(3);
|
|
545
|
+
showCostInfo();
|
|
546
|
+
} else if (pubStep === 3) {
|
|
547
|
+
startBuildAndSubmit();
|
|
548
|
+
} else if (pubStep === 4) {
|
|
549
|
+
closePublishModal();
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
function showPublishStep(step) {
|
|
554
|
+
pubStep = step;
|
|
555
|
+
for (var i = 1; i <= 4; i++) {
|
|
556
|
+
var el = document.getElementById('publish-step-' + i);
|
|
557
|
+
if (el) el.style.display = i === step ? 'block' : 'none';
|
|
558
|
+
}
|
|
559
|
+
var steps = document.querySelectorAll('.publish-step');
|
|
560
|
+
steps.forEach(function (s, idx) {
|
|
561
|
+
s.className = 'publish-step' + (idx + 1 === step ? ' active' : idx + 1 < step ? ' completed' : '');
|
|
562
|
+
});
|
|
563
|
+
pubBack.style.display = step > 1 && step < 4 ? 'inline-block' : 'none';
|
|
564
|
+
if (step === 1) { pubNext.textContent = 'Validate'; pubNext.style.display = 'inline-block'; }
|
|
565
|
+
else if (step === 2) { pubNext.textContent = 'Build & Submit'; pubNext.style.display = 'inline-block'; pubNext.disabled = !pubValidationPassed; }
|
|
566
|
+
else if (step === 3) { pubNext.textContent = 'Confirm & Build'; pubNext.style.display = 'inline-block'; }
|
|
567
|
+
else if (step === 4) { pubNext.textContent = 'Close'; pubNext.style.display = 'inline-block'; }
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
function populatePublishForm(m) {
|
|
571
|
+
document.getElementById('pub-name').value = m.name || '';
|
|
572
|
+
document.getElementById('pub-version').value = m.version || '1.0.0';
|
|
573
|
+
document.getElementById('pub-description').value = m.description || '';
|
|
574
|
+
document.getElementById('pub-expanded-desc').value = m.expandedDescription || '';
|
|
575
|
+
document.getElementById('pub-archetype').value = m.archeType || 'tool';
|
|
576
|
+
document.getElementById('pub-pricing-model').value = m.pricing?.model || 'free';
|
|
577
|
+
document.getElementById('pub-price').value = m.pricing?.priceCents || '';
|
|
578
|
+
document.getElementById('pub-price-row').style.display = m.pricing?.model === 'free' ? 'none' : 'block';
|
|
579
|
+
|
|
580
|
+
// Tags
|
|
581
|
+
var tagsList = document.getElementById('pub-tags-list');
|
|
582
|
+
tagsList.innerHTML = '';
|
|
583
|
+
(m.tags || []).forEach(function (t) { addPublishTag(t); });
|
|
584
|
+
|
|
585
|
+
// Permissions
|
|
586
|
+
var checkboxes = document.querySelectorAll('#pub-permissions input[type="checkbox"]');
|
|
587
|
+
var perms = m.permissions || [];
|
|
588
|
+
checkboxes.forEach(function (cb) { cb.checked = perms.indexOf(cb.value) !== -1; });
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// Tag management
|
|
592
|
+
document.getElementById('pub-tags-input').addEventListener('keydown', function (e) {
|
|
593
|
+
if (e.key === 'Enter' || e.key === ',') {
|
|
594
|
+
e.preventDefault();
|
|
595
|
+
var val = this.value.trim().replace(/,/g, '');
|
|
596
|
+
if (val) { addPublishTag(val); this.value = ''; }
|
|
597
|
+
}
|
|
598
|
+
});
|
|
599
|
+
|
|
600
|
+
function addPublishTag(text) {
|
|
601
|
+
var tag = document.createElement('span');
|
|
602
|
+
tag.className = 'pub-tag';
|
|
603
|
+
tag.innerHTML = escapeHtml(text) + ' <button class="pub-tag-remove">×</button>';
|
|
604
|
+
tag.querySelector('.pub-tag-remove').addEventListener('click', function () { tag.remove(); });
|
|
605
|
+
document.getElementById('pub-tags-list').appendChild(tag);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// Pricing model change
|
|
609
|
+
document.getElementById('pub-pricing-model').addEventListener('change', function () {
|
|
610
|
+
document.getElementById('pub-price-row').style.display = this.value === 'free' ? 'none' : 'block';
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
function collectManifest() {
|
|
614
|
+
var tags = [];
|
|
615
|
+
document.querySelectorAll('#pub-tags-list .pub-tag').forEach(function (t) {
|
|
616
|
+
tags.push(t.textContent.replace('\u00d7', '').trim());
|
|
617
|
+
});
|
|
618
|
+
var perms = [];
|
|
619
|
+
document.querySelectorAll('#pub-permissions input:checked').forEach(function (cb) { perms.push(cb.value); });
|
|
620
|
+
var pricingModel = document.getElementById('pub-pricing-model').value;
|
|
621
|
+
var pricing = { model: pricingModel, currency: 'usd' };
|
|
622
|
+
if (pricingModel !== 'free') pricing.priceCents = parseInt(document.getElementById('pub-price').value, 10) || 0;
|
|
623
|
+
|
|
624
|
+
return {
|
|
625
|
+
name: document.getElementById('pub-name').value.trim(),
|
|
626
|
+
version: document.getElementById('pub-version').value.trim(),
|
|
627
|
+
description: document.getElementById('pub-description').value.trim(),
|
|
628
|
+
expandedDescription: document.getElementById('pub-expanded-desc').value.trim() || undefined,
|
|
629
|
+
main: (pubManifest && pubManifest.main) || 'src/index.tsx',
|
|
630
|
+
archeType: document.getElementById('pub-archetype').value,
|
|
631
|
+
tags: tags,
|
|
632
|
+
pricing: pricing,
|
|
633
|
+
permissions: perms,
|
|
634
|
+
sdk: (pubManifest && pubManifest.sdk) || '^1.0.0',
|
|
635
|
+
dependencies: pubManifest && pubManifest.dependencies,
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
function collectAndSaveManifest() {
|
|
640
|
+
var manifest = collectManifest();
|
|
641
|
+
pubManifest = manifest;
|
|
642
|
+
return fetch('/api/manifest', {
|
|
643
|
+
method: 'PUT',
|
|
644
|
+
headers: { 'Content-Type': 'application/json' },
|
|
645
|
+
body: JSON.stringify(manifest),
|
|
646
|
+
}).then(function (r) {
|
|
647
|
+
if (!r.ok) throw new Error('Failed to save manifest');
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
function startValidation() {
|
|
652
|
+
pubValidationPassed = false;
|
|
653
|
+
pubNext.disabled = true;
|
|
654
|
+
document.getElementById('pub-validate-loading').style.display = 'flex';
|
|
655
|
+
document.getElementById('pub-validate-results').style.display = 'none';
|
|
656
|
+
|
|
657
|
+
fetch('/api/publish/validate', { method: 'POST' })
|
|
658
|
+
.then(function (r) { return r.json(); })
|
|
659
|
+
.then(function (data) {
|
|
660
|
+
document.getElementById('pub-validate-loading').style.display = 'none';
|
|
661
|
+
document.getElementById('pub-validate-results').style.display = 'block';
|
|
662
|
+
|
|
663
|
+
var statusEl = document.getElementById('pub-validate-status');
|
|
664
|
+
var errorsEl = document.getElementById('pub-validate-errors');
|
|
665
|
+
var warningsEl = document.getElementById('pub-validate-warnings');
|
|
666
|
+
errorsEl.innerHTML = '';
|
|
667
|
+
warningsEl.innerHTML = '';
|
|
668
|
+
|
|
669
|
+
if (data.valid && (!data.errors || data.errors.length === 0)) {
|
|
670
|
+
statusEl.innerHTML = '<div class="pub-valid">Manifest is valid</div>';
|
|
671
|
+
pubValidationPassed = true;
|
|
672
|
+
pubNext.disabled = false;
|
|
673
|
+
} else {
|
|
674
|
+
statusEl.innerHTML = '<div style="color:#fca5a5;font-weight:500;margin-bottom:8px">Validation failed</div>';
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
if (data.errors) {
|
|
678
|
+
data.errors.forEach(function (e) {
|
|
679
|
+
var div = document.createElement('div');
|
|
680
|
+
div.className = 'pub-error-item';
|
|
681
|
+
div.textContent = e;
|
|
682
|
+
errorsEl.appendChild(div);
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
if (data.warnings) {
|
|
686
|
+
data.warnings.forEach(function (w) {
|
|
687
|
+
var div = document.createElement('div');
|
|
688
|
+
div.className = 'pub-warn-item';
|
|
689
|
+
div.textContent = w;
|
|
690
|
+
warningsEl.appendChild(div);
|
|
691
|
+
});
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
// Listing preview
|
|
695
|
+
var preview = document.getElementById('pub-listing-preview');
|
|
696
|
+
var m = pubManifest;
|
|
697
|
+
preview.innerHTML =
|
|
698
|
+
'<div class="pub-listing-name">' + escapeHtml(m.name) + '</div>' +
|
|
699
|
+
'<div class="pub-listing-desc">' + escapeHtml(m.description) + '</div>' +
|
|
700
|
+
'<div class="pub-listing-meta">' +
|
|
701
|
+
'<span>v' + escapeHtml(m.version) + '</span>' +
|
|
702
|
+
'<span>' + escapeHtml(m.archeType) + '</span>' +
|
|
703
|
+
'<span>' + escapeHtml(m.pricing.model) + '</span>' +
|
|
704
|
+
'</div>';
|
|
705
|
+
})
|
|
706
|
+
.catch(function (err) {
|
|
707
|
+
document.getElementById('pub-validate-loading').style.display = 'none';
|
|
708
|
+
pubError.textContent = err.message;
|
|
709
|
+
pubError.style.display = 'block';
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
function showCostInfo() {
|
|
714
|
+
var costEl = document.getElementById('pub-cost-info');
|
|
715
|
+
costEl.innerHTML = '<p>Submission cost: <strong>5,000 credits ($50.00)</strong> for first listing, <strong>100 credits ($1.00)</strong> for updates.</p>';
|
|
716
|
+
fetch('/api/credits').then(function (r) { return r.json(); }).then(function (d) {
|
|
717
|
+
if (d.balance != null && isFinite(d.balance)) {
|
|
718
|
+
costEl.innerHTML += '<p style="margin-top:8px">Your balance: <strong>' + d.balance.toFixed(2) + ' credits</strong></p>';
|
|
719
|
+
}
|
|
720
|
+
}).catch(function () {});
|
|
721
|
+
document.getElementById('pub-build-output').style.display = 'none';
|
|
722
|
+
document.getElementById('pub-build-output').textContent = '';
|
|
723
|
+
document.getElementById('pub-submit-progress').innerHTML = '';
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
function startBuildAndSubmit() {
|
|
727
|
+
pubNext.style.display = 'none';
|
|
728
|
+
pubBack.style.display = 'none';
|
|
729
|
+
var outputEl = document.getElementById('pub-build-output');
|
|
730
|
+
var progressEl = document.getElementById('pub-submit-progress');
|
|
731
|
+
outputEl.style.display = 'block';
|
|
732
|
+
outputEl.textContent = '';
|
|
733
|
+
progressEl.innerHTML = '<div class="pub-phase active" id="phase-build">Building...</div>' +
|
|
734
|
+
'<div class="pub-phase" id="phase-package">Packaging...</div>' +
|
|
735
|
+
'<div class="pub-phase" id="phase-submit">Uploading & submitting...</div>';
|
|
736
|
+
|
|
737
|
+
// SSE build
|
|
738
|
+
fetch('/api/publish/build', { method: 'POST' })
|
|
739
|
+
.then(function (response) {
|
|
740
|
+
var reader = response.body.getReader();
|
|
741
|
+
var decoder = new TextDecoder();
|
|
742
|
+
var buffer = '';
|
|
743
|
+
|
|
744
|
+
function pump() {
|
|
745
|
+
return reader.read().then(function (chunk) {
|
|
746
|
+
if (chunk.done) return;
|
|
747
|
+
buffer += decoder.decode(chunk.value, { stream: true });
|
|
748
|
+
var lines = buffer.split('\n');
|
|
749
|
+
buffer = lines.pop() || '';
|
|
750
|
+
for (var i = 0; i < lines.length; i++) {
|
|
751
|
+
if (lines[i].indexOf('data: ') !== 0) continue;
|
|
752
|
+
try {
|
|
753
|
+
var parsed = JSON.parse(lines[i].slice(6));
|
|
754
|
+
if (parsed.line) {
|
|
755
|
+
outputEl.textContent += parsed.line + '\n';
|
|
756
|
+
outputEl.scrollTop = outputEl.scrollHeight;
|
|
757
|
+
}
|
|
758
|
+
if (parsed.done) {
|
|
759
|
+
if (parsed.code !== 0) throw new Error('Build failed (exit code ' + parsed.code + ')');
|
|
760
|
+
document.getElementById('phase-build').className = 'pub-phase done';
|
|
761
|
+
document.getElementById('phase-build').textContent = 'Build complete';
|
|
762
|
+
return doPackageAndSubmit();
|
|
763
|
+
}
|
|
764
|
+
} catch (e) {
|
|
765
|
+
if (e instanceof SyntaxError) continue;
|
|
766
|
+
throw e;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
return pump();
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
return pump();
|
|
773
|
+
})
|
|
774
|
+
.catch(function (err) {
|
|
775
|
+
document.getElementById('phase-build').className = 'pub-phase error';
|
|
776
|
+
document.getElementById('phase-build').textContent = 'Build failed: ' + err.message;
|
|
777
|
+
pubBack.style.display = 'inline-block';
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
function doPackageAndSubmit() {
|
|
782
|
+
var progressPhase = document.getElementById('phase-package');
|
|
783
|
+
progressPhase.className = 'pub-phase active';
|
|
784
|
+
|
|
785
|
+
return fetch('/api/publish/package', { method: 'POST' })
|
|
786
|
+
.then(function (r) {
|
|
787
|
+
if (!r.ok) return r.json().then(function (e) { throw new Error(e.error); });
|
|
788
|
+
return r.json();
|
|
789
|
+
})
|
|
790
|
+
.then(function (data) {
|
|
791
|
+
progressPhase.className = 'pub-phase done';
|
|
792
|
+
progressPhase.textContent = 'Packaged (' + Math.round(data.sizeBytes / 1024) + ' KB)';
|
|
793
|
+
document.getElementById('phase-submit').className = 'pub-phase active';
|
|
794
|
+
|
|
795
|
+
return fetch('/api/publish/submit', {
|
|
796
|
+
method: 'POST',
|
|
797
|
+
headers: { 'Content-Type': 'application/json' },
|
|
798
|
+
body: JSON.stringify({}),
|
|
799
|
+
});
|
|
800
|
+
})
|
|
801
|
+
.then(function (r) {
|
|
802
|
+
if (!r.ok) return r.json().then(function (e) { throw new Error(e.error); });
|
|
803
|
+
return r.json();
|
|
804
|
+
})
|
|
805
|
+
.then(function (data) {
|
|
806
|
+
document.getElementById('phase-submit').className = 'pub-phase done';
|
|
807
|
+
document.getElementById('phase-submit').textContent = 'Submitted for review';
|
|
808
|
+
pubSubmissionId = data.submissionId;
|
|
809
|
+
logMessage('info', 'Submitted: ' + pubSubmissionId);
|
|
810
|
+
setTimeout(function () { showPublishStep(4); startStatusPolling(); }, 1000);
|
|
811
|
+
})
|
|
812
|
+
.catch(function (err) {
|
|
813
|
+
var active = document.querySelector('.pub-phase.active');
|
|
814
|
+
if (active) { active.className = 'pub-phase error'; active.textContent += ' — ' + err.message; }
|
|
815
|
+
pubBack.style.display = 'inline-block';
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
function startStatusPolling() {
|
|
820
|
+
if (pubPollTimer) clearInterval(pubPollTimer);
|
|
821
|
+
document.getElementById('pub-review-status').style.display = 'block';
|
|
822
|
+
document.getElementById('pub-review-result').style.display = 'none';
|
|
823
|
+
|
|
824
|
+
pubPollTimer = setInterval(function () {
|
|
825
|
+
fetch('/api/publish/status/' + pubSubmissionId)
|
|
826
|
+
.then(function (r) { return r.json(); })
|
|
827
|
+
.then(function (data) {
|
|
828
|
+
var sub = data.submission || data;
|
|
829
|
+
var status = sub.status;
|
|
830
|
+
var statusEl = document.getElementById('pub-review-status');
|
|
831
|
+
|
|
832
|
+
if (status === 'reviewing') {
|
|
833
|
+
statusEl.innerHTML = '<div class="status-spinner"></div><p>AI is reviewing your plugin...</p>';
|
|
834
|
+
} else if (status === 'building') {
|
|
835
|
+
statusEl.innerHTML = '<div class="status-spinner"></div><p>Building your plugin...</p>';
|
|
836
|
+
} else if (status === 'published') {
|
|
837
|
+
clearInterval(pubPollTimer);
|
|
838
|
+
pubPollTimer = null;
|
|
839
|
+
statusEl.style.display = 'none';
|
|
840
|
+
document.getElementById('pub-review-result').style.display = 'block';
|
|
841
|
+
document.getElementById('pub-review-result').innerHTML =
|
|
842
|
+
'<div class="pub-congrats">Published!</div>' +
|
|
843
|
+
'<p style="text-align:center;color:#a1a1aa;font-size:13px">Your plugin is now live on the Fias marketplace.</p>';
|
|
844
|
+
logMessage('info', 'Plugin published!');
|
|
845
|
+
} else if (status === 'rejected') {
|
|
846
|
+
clearInterval(pubPollTimer);
|
|
847
|
+
pubPollTimer = null;
|
|
848
|
+
statusEl.style.display = 'none';
|
|
849
|
+
document.getElementById('pub-review-result').style.display = 'block';
|
|
850
|
+
var html = '<div class="pub-rejected">Submission Rejected</div>';
|
|
851
|
+
if (sub.errorMessage) html += '<p style="color:#a1a1aa;font-size:12px;margin-bottom:8px">' + escapeHtml(sub.errorMessage) + '</p>';
|
|
852
|
+
if (data.review) {
|
|
853
|
+
html += '<p style="color:#6b7280;font-size:11px">Risk score: ' + (data.review.riskScore || 'N/A') + '</p>';
|
|
854
|
+
}
|
|
855
|
+
document.getElementById('pub-review-result').innerHTML = html;
|
|
856
|
+
}
|
|
857
|
+
})
|
|
858
|
+
.catch(function () {});
|
|
859
|
+
}, 3000);
|
|
860
|
+
}
|
|
861
|
+
|
|
480
862
|
// ────────────────────────────────────────────────────────────────
|
|
481
863
|
// Iframe Init
|
|
482
864
|
// ────────────────────────────────────────────────────────────────
|