@aexol/opencode-wizard 0.1.12 → 0.1.15
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/README.md +1 -1
- package/dist/server.d.ts +44 -3
- package/dist/server.js +714 -93
- package/dist/server.js.map +1 -1
- package/dist/smoke-published-skills.js +7 -1
- package/dist/smoke-published-skills.js.map +1 -1
- package/dist/tui.js +350 -185
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
package/dist/tui.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createElement as _$createElement } from "@opentui/solid";
|
|
|
9
9
|
/** @jsxImportSource @opentui/solid */
|
|
10
10
|
|
|
11
11
|
import { createEffect, createMemo, createSignal } from 'solid-js';
|
|
12
|
-
import { PLUGIN_ID, resolvePluginStatusSnapshotWithAuthBootstrap } from './server.js';
|
|
12
|
+
import { PLUGIN_ID, resolvePluginStatusSnapshotWithAuthBootstrap, setPublishedSkillInstalled, setPublishedSkillIgnored } from './server.js';
|
|
13
13
|
const STATUS_TIMEOUT_MS = 5_000;
|
|
14
14
|
const STATUS_REFRESH_INTERVAL_MS = 5_000;
|
|
15
15
|
const MAX_STATUS_MESSAGE_LENGTH = 80;
|
|
@@ -214,40 +214,118 @@ const getSkillTags = skill => {
|
|
|
214
214
|
if (tagLabels.length === 0) return 'no tags';
|
|
215
215
|
return tagLabels.join(', ');
|
|
216
216
|
};
|
|
217
|
-
const getSkillMeta = skill => `${skill.policyLabel} · ${
|
|
217
|
+
const getSkillMeta = (skill, state) => `${skill.policyLabel} · ${state} · ${getSkillTags(skill)}`;
|
|
218
|
+
const getRowStateLabel = row => {
|
|
219
|
+
if (row.ignored) return 'ignored';
|
|
220
|
+
if (row.state === 'installable') return 'not installed';
|
|
221
|
+
return row.state === 'installed-global' ? 'installed global' : 'installed project';
|
|
222
|
+
};
|
|
218
223
|
const SkillCatalogRow = props => {
|
|
219
|
-
const
|
|
224
|
+
const skill = props.row.skill;
|
|
225
|
+
const description = getSkillDescription(skill);
|
|
226
|
+
const canUninstall = skill.assignmentSource === 'USER_GLOBAL' || skill.assignmentSource === 'USER_WORKSPACE';
|
|
220
227
|
return (() => {
|
|
221
228
|
var _el$18 = _$createElement("box"),
|
|
222
|
-
_el$19 = _$createElement("
|
|
223
|
-
_el$20 = _$createElement("
|
|
224
|
-
_el$21 = _$createElement("
|
|
229
|
+
_el$19 = _$createElement("box"),
|
|
230
|
+
_el$20 = _$createElement("text"),
|
|
231
|
+
_el$21 = _$createElement("b"),
|
|
232
|
+
_el$22 = _$createTextNode(` (`),
|
|
233
|
+
_el$24 = _$createTextNode(`)`),
|
|
234
|
+
_el$25 = _$createElement("box"),
|
|
235
|
+
_el$26 = _$createElement("text");
|
|
225
236
|
_$insertNode(_el$18, _el$19);
|
|
226
|
-
_$insertNode(_el$18, _el$
|
|
237
|
+
_$insertNode(_el$18, _el$26);
|
|
227
238
|
_$setProp(_el$18, "width", "100%");
|
|
228
239
|
_$setProp(_el$18, "flexDirection", "column");
|
|
229
240
|
_$setProp(_el$18, "overflow", "hidden");
|
|
230
241
|
_$setProp(_el$18, "marginBottom", 1);
|
|
231
242
|
_$insertNode(_el$19, _el$20);
|
|
232
|
-
_$
|
|
243
|
+
_$insertNode(_el$19, _el$25);
|
|
244
|
+
_$setProp(_el$19, "width", "100%");
|
|
245
|
+
_$setProp(_el$19, "flexDirection", "row");
|
|
246
|
+
_$setProp(_el$19, "justifyContent", "space-between");
|
|
233
247
|
_$setProp(_el$19, "overflow", "hidden");
|
|
234
|
-
_$
|
|
235
|
-
_$
|
|
236
|
-
_$
|
|
237
|
-
_$
|
|
248
|
+
_$insertNode(_el$20, _el$21);
|
|
249
|
+
_$insertNode(_el$20, _el$22);
|
|
250
|
+
_$insertNode(_el$20, _el$24);
|
|
251
|
+
_$setProp(_el$20, "wrapMode", "none");
|
|
252
|
+
_$setProp(_el$20, "overflow", "hidden");
|
|
253
|
+
_$insert(_el$21, () => compactSkillName(getSkillDisplayName(skill)));
|
|
254
|
+
_$insert(_el$20, () => getRowStateLabel(props.row), _el$24);
|
|
255
|
+
_$setProp(_el$25, "flexDirection", "row");
|
|
256
|
+
_$setProp(_el$25, "flexShrink", 0);
|
|
257
|
+
_$insert(_el$25, (() => {
|
|
258
|
+
var _c$ = _$memo(() => props.row.state === 'installable');
|
|
259
|
+
return () => _c$() ? [(() => {
|
|
260
|
+
var _el$27 = _$createElement("box"),
|
|
261
|
+
_el$28 = _$createElement("text");
|
|
262
|
+
_$insertNode(_el$27, _el$28);
|
|
263
|
+
_$setProp(_el$27, "onMouseUp", () => props.onInstall(props.row, 'global'));
|
|
264
|
+
_$setProp(_el$27, "flexShrink", 0);
|
|
265
|
+
_$insertNode(_el$28, _$createTextNode(`Global`));
|
|
266
|
+
_$setProp(_el$28, "wrapMode", "none");
|
|
267
|
+
_$effect(_$p => _$setProp(_el$28, "fg", props.theme.textMuted, _$p));
|
|
268
|
+
return _el$27;
|
|
269
|
+
})(), (() => {
|
|
270
|
+
var _el$30 = _$createElement("text");
|
|
271
|
+
_$insertNode(_el$30, _$createTextNode(` / `));
|
|
272
|
+
_$setProp(_el$30, "wrapMode", "none");
|
|
273
|
+
_$effect(_$p => _$setProp(_el$30, "fg", props.theme.textMuted, _$p));
|
|
274
|
+
return _el$30;
|
|
275
|
+
})(), (() => {
|
|
276
|
+
var _el$32 = _$createElement("box"),
|
|
277
|
+
_el$33 = _$createElement("text");
|
|
278
|
+
_$insertNode(_el$32, _el$33);
|
|
279
|
+
_$setProp(_el$32, "onMouseUp", () => props.onInstall(props.row, 'project'));
|
|
280
|
+
_$setProp(_el$32, "flexShrink", 0);
|
|
281
|
+
_$insertNode(_el$33, _$createTextNode(`Project`));
|
|
282
|
+
_$setProp(_el$33, "wrapMode", "none");
|
|
283
|
+
_$effect(_$p => _$setProp(_el$33, "fg", props.theme.textMuted, _$p));
|
|
284
|
+
return _el$32;
|
|
285
|
+
})()] : [(() => {
|
|
286
|
+
var _el$35 = _$createElement("box"),
|
|
287
|
+
_el$36 = _$createElement("text");
|
|
288
|
+
_$insertNode(_el$35, _el$36);
|
|
289
|
+
_$setProp(_el$35, "onMouseUp", () => props.onIgnore(props.row));
|
|
290
|
+
_$setProp(_el$35, "flexShrink", 0);
|
|
291
|
+
_$setProp(_el$36, "wrapMode", "none");
|
|
292
|
+
_$insert(_el$36, () => props.row.ignored ? 'Unignore' : 'Ignore');
|
|
293
|
+
_$effect(_$p => _$setProp(_el$36, "fg", props.theme.textMuted, _$p));
|
|
294
|
+
return _el$35;
|
|
295
|
+
})(), canUninstall ? [(() => {
|
|
296
|
+
var _el$37 = _$createElement("text");
|
|
297
|
+
_$insertNode(_el$37, _$createTextNode(` / `));
|
|
298
|
+
_$setProp(_el$37, "wrapMode", "none");
|
|
299
|
+
_$effect(_$p => _$setProp(_el$37, "fg", props.theme.textMuted, _$p));
|
|
300
|
+
return _el$37;
|
|
301
|
+
})(), (() => {
|
|
302
|
+
var _el$39 = _$createElement("box"),
|
|
303
|
+
_el$40 = _$createElement("text");
|
|
304
|
+
_$insertNode(_el$39, _el$40);
|
|
305
|
+
_$setProp(_el$39, "onMouseUp", () => props.onUninstall(props.row));
|
|
306
|
+
_$setProp(_el$39, "flexShrink", 0);
|
|
307
|
+
_$insertNode(_el$40, _$createTextNode(`Uninstall`));
|
|
308
|
+
_$setProp(_el$40, "wrapMode", "none");
|
|
309
|
+
_$effect(_$p => _$setProp(_el$40, "fg", props.theme.textMuted, _$p));
|
|
310
|
+
return _el$39;
|
|
311
|
+
})()] : null];
|
|
312
|
+
})());
|
|
313
|
+
_$setProp(_el$26, "wrapMode", "none");
|
|
314
|
+
_$setProp(_el$26, "overflow", "hidden");
|
|
315
|
+
_$insert(_el$26, () => compactSkillMeta(getSkillMeta(skill, props.row.state)));
|
|
238
316
|
_$insert(_el$18, description ? (() => {
|
|
239
|
-
var _el$
|
|
240
|
-
_$setProp(_el$
|
|
241
|
-
_$setProp(_el$
|
|
242
|
-
_$insert(_el$
|
|
243
|
-
_$effect(_$p => _$setProp(_el$
|
|
244
|
-
return _el$
|
|
317
|
+
var _el$42 = _$createElement("text");
|
|
318
|
+
_$setProp(_el$42, "wrapMode", "none");
|
|
319
|
+
_$setProp(_el$42, "overflow", "hidden");
|
|
320
|
+
_$insert(_el$42, () => compactSkillDescription(description));
|
|
321
|
+
_$effect(_$p => _$setProp(_el$42, "fg", props.theme.text, _$p));
|
|
322
|
+
return _el$42;
|
|
245
323
|
})() : null, null);
|
|
246
324
|
_$effect(_p$ => {
|
|
247
|
-
var _v$6 = props.theme.text,
|
|
325
|
+
var _v$6 = props.row.ignored ? props.theme.textMuted : props.theme.text,
|
|
248
326
|
_v$7 = props.theme.textMuted;
|
|
249
|
-
_v$6 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
250
|
-
_v$7 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
327
|
+
_v$6 !== _p$.e && (_p$.e = _$setProp(_el$20, "fg", _v$6, _p$.e));
|
|
328
|
+
_v$7 !== _p$.t && (_p$.t = _$setProp(_el$26, "fg", _v$7, _p$.t));
|
|
251
329
|
return _p$;
|
|
252
330
|
}, {
|
|
253
331
|
e: undefined,
|
|
@@ -262,46 +340,61 @@ const WizardSkillsDialogContent = props => {
|
|
|
262
340
|
const currentStatus = props.status();
|
|
263
341
|
if (currentStatus.kind === 'loading') {
|
|
264
342
|
return (() => {
|
|
265
|
-
var _el$
|
|
266
|
-
_$insertNode(_el$
|
|
267
|
-
_$setProp(_el$
|
|
268
|
-
_$setProp(_el$
|
|
269
|
-
_$effect(_$p => _$setProp(_el$
|
|
270
|
-
return _el$
|
|
343
|
+
var _el$43 = _$createElement("text");
|
|
344
|
+
_$insertNode(_el$43, _$createTextNode(`Refreshing published skills…`));
|
|
345
|
+
_$setProp(_el$43, "wrapMode", "none");
|
|
346
|
+
_$setProp(_el$43, "overflow", "hidden");
|
|
347
|
+
_$effect(_$p => _$setProp(_el$43, "fg", props.theme.textMuted, _$p));
|
|
348
|
+
return _el$43;
|
|
271
349
|
})();
|
|
272
350
|
}
|
|
273
351
|
if (currentStatus.kind === 'error') {
|
|
274
352
|
return (() => {
|
|
275
|
-
var _el$
|
|
276
|
-
_el$
|
|
277
|
-
_$insertNode(_el$
|
|
278
|
-
_$setProp(_el$
|
|
279
|
-
_$setProp(_el$
|
|
280
|
-
_$insert(_el$
|
|
281
|
-
_$effect(_$p => _$setProp(_el$
|
|
282
|
-
return _el$
|
|
353
|
+
var _el$45 = _$createElement("text"),
|
|
354
|
+
_el$46 = _$createTextNode(`unavailable: `);
|
|
355
|
+
_$insertNode(_el$45, _el$46);
|
|
356
|
+
_$setProp(_el$45, "wrapMode", "none");
|
|
357
|
+
_$setProp(_el$45, "overflow", "hidden");
|
|
358
|
+
_$insert(_el$45, () => compactStatusMessage(currentStatus.message), null);
|
|
359
|
+
_$effect(_$p => _$setProp(_el$45, "fg", props.theme.warning, _$p));
|
|
360
|
+
return _el$45;
|
|
283
361
|
})();
|
|
284
362
|
}
|
|
285
363
|
if (!currentStatus.snapshot.catalog) {
|
|
286
364
|
return (() => {
|
|
287
|
-
var _el$
|
|
288
|
-
_el$
|
|
289
|
-
_$insertNode(_el$
|
|
290
|
-
_$setProp(_el$
|
|
291
|
-
_$setProp(_el$
|
|
292
|
-
_$insert(_el$
|
|
293
|
-
_$effect(_$p => _$setProp(_el$
|
|
294
|
-
return _el$
|
|
365
|
+
var _el$47 = _$createElement("text"),
|
|
366
|
+
_el$48 = _$createTextNode(`catalog `);
|
|
367
|
+
_$insertNode(_el$47, _el$48);
|
|
368
|
+
_$setProp(_el$47, "wrapMode", "none");
|
|
369
|
+
_$setProp(_el$47, "overflow", "hidden");
|
|
370
|
+
_$insert(_el$47, () => formatSkillsCatalogUnavailableMessage(currentStatus.snapshot), null);
|
|
371
|
+
_$effect(_$p => _$setProp(_el$47, "fg", props.theme.textMuted, _$p));
|
|
372
|
+
return _el$47;
|
|
295
373
|
})();
|
|
296
374
|
}
|
|
297
375
|
const {
|
|
298
376
|
catalog
|
|
299
377
|
} = currentStatus.snapshot;
|
|
300
|
-
const
|
|
378
|
+
const activeSkillSlugs = new Set(catalog.skills.map(skill => skill.skillSlug));
|
|
379
|
+
const ignoredSkillSlugs = new Set(currentStatus.snapshot.ignoredPublishedSkills.skills.map(skill => skill.skillSlug));
|
|
380
|
+
const rows = [...catalog.skills.map(skill => ({
|
|
381
|
+
skill,
|
|
382
|
+
ignored: false,
|
|
383
|
+
state: skill.contextKind === 'global' ? 'installed-global' : 'installed-project'
|
|
384
|
+
})), ...currentStatus.snapshot.ignoredPublishedSkills.skills.map(skill => ({
|
|
385
|
+
skill,
|
|
386
|
+
ignored: true,
|
|
387
|
+
state: skill.contextKind === 'global' ? 'installed-global' : 'installed-project'
|
|
388
|
+
})), ...(currentStatus.snapshot.installableCatalog?.skills ?? []).filter(skill => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug)).map(skill => ({
|
|
389
|
+
skill,
|
|
390
|
+
ignored: false,
|
|
391
|
+
state: 'installable'
|
|
392
|
+
}))];
|
|
393
|
+
const totalPages = Math.max(1, Math.ceil(rows.length / SKILLS_PAGE_SIZE));
|
|
301
394
|
const currentPage = Math.min(page(), totalPages - 1);
|
|
302
395
|
const startIndex = currentPage * SKILLS_PAGE_SIZE;
|
|
303
|
-
const endIndex = Math.min(startIndex + SKILLS_PAGE_SIZE,
|
|
304
|
-
const
|
|
396
|
+
const endIndex = Math.min(startIndex + SKILLS_PAGE_SIZE, rows.length);
|
|
397
|
+
const visibleRows = rows.slice(startIndex, endIndex);
|
|
305
398
|
const canGoBack = currentPage > 0;
|
|
306
399
|
const canGoForward = currentPage < totalPages - 1;
|
|
307
400
|
const goBack = () => {
|
|
@@ -313,94 +406,109 @@ const WizardSkillsDialogContent = props => {
|
|
|
313
406
|
setPage(currentPage + 1);
|
|
314
407
|
};
|
|
315
408
|
return (() => {
|
|
316
|
-
var _el$
|
|
317
|
-
_el$
|
|
318
|
-
_el$
|
|
319
|
-
_el$
|
|
320
|
-
_el$
|
|
321
|
-
_el$
|
|
322
|
-
_el$
|
|
323
|
-
_el$
|
|
324
|
-
_el$
|
|
325
|
-
_el$
|
|
326
|
-
_el$
|
|
327
|
-
_el$
|
|
328
|
-
_el$
|
|
329
|
-
_el$
|
|
330
|
-
_el$
|
|
331
|
-
_el$
|
|
332
|
-
_el$
|
|
333
|
-
_el$
|
|
334
|
-
_el$
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
_$insertNode(_el$
|
|
338
|
-
_$
|
|
339
|
-
_$
|
|
340
|
-
_$setProp(_el$
|
|
341
|
-
_$
|
|
342
|
-
_$
|
|
343
|
-
_$
|
|
344
|
-
_$
|
|
345
|
-
_$setProp(_el$
|
|
346
|
-
_$setProp(_el$
|
|
347
|
-
_$
|
|
348
|
-
_$
|
|
349
|
-
_$insertNode(_el$
|
|
350
|
-
_$insertNode(_el$
|
|
351
|
-
_$
|
|
352
|
-
_$
|
|
353
|
-
_$insertNode(_el$
|
|
354
|
-
_$
|
|
355
|
-
_$
|
|
356
|
-
_$
|
|
357
|
-
_$insertNode(_el$
|
|
358
|
-
_$
|
|
359
|
-
_$
|
|
360
|
-
_$insert(_el$
|
|
361
|
-
_$insert(_el$
|
|
362
|
-
_$
|
|
363
|
-
_$
|
|
364
|
-
_$
|
|
365
|
-
_$setProp(_el$
|
|
366
|
-
_$insert(_el$
|
|
367
|
-
|
|
409
|
+
var _el$49 = _$createElement("box"),
|
|
410
|
+
_el$50 = _$createElement("box"),
|
|
411
|
+
_el$51 = _$createElement("text"),
|
|
412
|
+
_el$52 = _$createElement("b"),
|
|
413
|
+
_el$53 = _$createTextNode(` skills`),
|
|
414
|
+
_el$54 = _$createTextNode(` · `),
|
|
415
|
+
_el$55 = _$createTextNode(` global · `),
|
|
416
|
+
_el$56 = _$createTextNode(` workspace · `),
|
|
417
|
+
_el$57 = _$createTextNode(` ignored · `),
|
|
418
|
+
_el$58 = _$createTextNode(` installable`),
|
|
419
|
+
_el$59 = _$createElement("text"),
|
|
420
|
+
_el$60 = _$createTextNode(`page `),
|
|
421
|
+
_el$61 = _$createTextNode(`/`),
|
|
422
|
+
_el$62 = _$createElement("box"),
|
|
423
|
+
_el$63 = _$createElement("box"),
|
|
424
|
+
_el$64 = _$createElement("box"),
|
|
425
|
+
_el$65 = _$createElement("text"),
|
|
426
|
+
_el$67 = _$createElement("text"),
|
|
427
|
+
_el$68 = _$createTextNode(` shown`),
|
|
428
|
+
_el$69 = _$createElement("box"),
|
|
429
|
+
_el$70 = _$createElement("text");
|
|
430
|
+
_$insertNode(_el$49, _el$50);
|
|
431
|
+
_$insertNode(_el$49, _el$62);
|
|
432
|
+
_$insertNode(_el$49, _el$63);
|
|
433
|
+
_$setProp(_el$49, "width", "100%");
|
|
434
|
+
_$setProp(_el$49, "flexDirection", "column");
|
|
435
|
+
_$setProp(_el$49, "overflow", "hidden");
|
|
436
|
+
_$insertNode(_el$50, _el$51);
|
|
437
|
+
_$insertNode(_el$50, _el$59);
|
|
438
|
+
_$setProp(_el$50, "width", "100%");
|
|
439
|
+
_$setProp(_el$50, "flexDirection", "row");
|
|
440
|
+
_$setProp(_el$50, "justifyContent", "space-between");
|
|
441
|
+
_$setProp(_el$50, "overflow", "hidden");
|
|
442
|
+
_$insertNode(_el$51, _el$52);
|
|
443
|
+
_$insertNode(_el$51, _el$54);
|
|
444
|
+
_$insertNode(_el$51, _el$55);
|
|
445
|
+
_$insertNode(_el$51, _el$56);
|
|
446
|
+
_$insertNode(_el$51, _el$57);
|
|
447
|
+
_$insertNode(_el$51, _el$58);
|
|
448
|
+
_$setProp(_el$51, "wrapMode", "none");
|
|
449
|
+
_$setProp(_el$51, "overflow", "hidden");
|
|
450
|
+
_$insertNode(_el$52, _el$53);
|
|
451
|
+
_$insert(_el$52, () => catalog.publishedSkillCount, _el$53);
|
|
452
|
+
_$insert(_el$51, () => catalog.assignmentCounts.global, _el$55);
|
|
453
|
+
_$insert(_el$51, () => catalog.assignmentCounts.project, _el$56);
|
|
454
|
+
_$insert(_el$51, () => currentStatus.snapshot.ignoredPublishedSkills.count, _el$57);
|
|
455
|
+
_$insert(_el$51, () => currentStatus.snapshot.installableCatalog?.count ?? 0, _el$58);
|
|
456
|
+
_$insertNode(_el$59, _el$60);
|
|
457
|
+
_$insertNode(_el$59, _el$61);
|
|
458
|
+
_$setProp(_el$59, "wrapMode", "none");
|
|
459
|
+
_$insert(_el$59, currentPage + 1, _el$61);
|
|
460
|
+
_$insert(_el$59, totalPages, null);
|
|
461
|
+
_$setProp(_el$62, "width", "100%");
|
|
462
|
+
_$setProp(_el$62, "flexDirection", "column");
|
|
463
|
+
_$setProp(_el$62, "marginTop", 1);
|
|
464
|
+
_$setProp(_el$62, "overflow", "hidden");
|
|
465
|
+
_$insert(_el$62, () => visibleRows.map(row => _$createComponent(SkillCatalogRow, {
|
|
466
|
+
row: row,
|
|
368
467
|
get theme() {
|
|
369
468
|
return props.theme;
|
|
469
|
+
},
|
|
470
|
+
get onIgnore() {
|
|
471
|
+
return props.onIgnoreSkill;
|
|
472
|
+
},
|
|
473
|
+
get onInstall() {
|
|
474
|
+
return props.onInstallSkill;
|
|
475
|
+
},
|
|
476
|
+
get onUninstall() {
|
|
477
|
+
return props.onUninstallSkill;
|
|
370
478
|
}
|
|
371
479
|
})));
|
|
372
|
-
_$insertNode(_el$
|
|
373
|
-
_$insertNode(_el$
|
|
374
|
-
_$insertNode(_el$
|
|
375
|
-
_$setProp(_el$
|
|
376
|
-
_$setProp(_el$
|
|
377
|
-
_$setProp(_el$
|
|
378
|
-
_$setProp(_el$
|
|
379
|
-
_$insertNode(_el$
|
|
380
|
-
_$setProp(_el$
|
|
381
|
-
_$setProp(_el$
|
|
382
|
-
_$insertNode(_el$
|
|
383
|
-
_$setProp(_el$
|
|
384
|
-
_$insertNode(_el$
|
|
385
|
-
_$setProp(_el$
|
|
386
|
-
_$setProp(_el$
|
|
387
|
-
_$insert(_el$
|
|
388
|
-
_$insertNode(_el$
|
|
389
|
-
_$setProp(_el$
|
|
390
|
-
_$setProp(_el$
|
|
391
|
-
_$insertNode(_el$
|
|
392
|
-
_$setProp(_el$
|
|
480
|
+
_$insertNode(_el$63, _el$64);
|
|
481
|
+
_$insertNode(_el$63, _el$67);
|
|
482
|
+
_$insertNode(_el$63, _el$69);
|
|
483
|
+
_$setProp(_el$63, "width", "100%");
|
|
484
|
+
_$setProp(_el$63, "flexDirection", "row");
|
|
485
|
+
_$setProp(_el$63, "justifyContent", "space-between");
|
|
486
|
+
_$setProp(_el$63, "overflow", "hidden");
|
|
487
|
+
_$insertNode(_el$64, _el$65);
|
|
488
|
+
_$setProp(_el$64, "onMouseUp", goBack);
|
|
489
|
+
_$setProp(_el$64, "flexShrink", 0);
|
|
490
|
+
_$insertNode(_el$65, _$createTextNode(`← Prev`));
|
|
491
|
+
_$setProp(_el$65, "wrapMode", "none");
|
|
492
|
+
_$insertNode(_el$67, _el$68);
|
|
493
|
+
_$setProp(_el$67, "wrapMode", "none");
|
|
494
|
+
_$setProp(_el$67, "overflow", "hidden");
|
|
495
|
+
_$insert(_el$67, () => visibleRows.length, _el$68);
|
|
496
|
+
_$insertNode(_el$69, _el$70);
|
|
497
|
+
_$setProp(_el$69, "onMouseUp", goForward);
|
|
498
|
+
_$setProp(_el$69, "flexShrink", 0);
|
|
499
|
+
_$insertNode(_el$70, _$createTextNode(`Next →`));
|
|
500
|
+
_$setProp(_el$70, "wrapMode", "none");
|
|
393
501
|
_$effect(_p$ => {
|
|
394
502
|
var _v$8 = props.theme.text,
|
|
395
503
|
_v$9 = props.theme.textMuted,
|
|
396
504
|
_v$0 = canGoBack ? props.theme.text : props.theme.textMuted,
|
|
397
505
|
_v$1 = props.theme.textMuted,
|
|
398
506
|
_v$10 = canGoForward ? props.theme.text : props.theme.textMuted;
|
|
399
|
-
_v$8 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
400
|
-
_v$9 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
401
|
-
_v$0 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
402
|
-
_v$1 !== _p$.o && (_p$.o = _$setProp(_el$
|
|
403
|
-
_v$10 !== _p$.i && (_p$.i = _$setProp(_el$
|
|
507
|
+
_v$8 !== _p$.e && (_p$.e = _$setProp(_el$51, "fg", _v$8, _p$.e));
|
|
508
|
+
_v$9 !== _p$.t && (_p$.t = _$setProp(_el$59, "fg", _v$9, _p$.t));
|
|
509
|
+
_v$0 !== _p$.a && (_p$.a = _$setProp(_el$65, "fg", _v$0, _p$.a));
|
|
510
|
+
_v$1 !== _p$.o && (_p$.o = _$setProp(_el$67, "fg", _v$1, _p$.o));
|
|
511
|
+
_v$10 !== _p$.i && (_p$.i = _$setProp(_el$70, "fg", _v$10, _p$.i));
|
|
404
512
|
return _p$;
|
|
405
513
|
}, {
|
|
406
514
|
e: undefined,
|
|
@@ -409,7 +517,7 @@ const WizardSkillsDialogContent = props => {
|
|
|
409
517
|
o: undefined,
|
|
410
518
|
i: undefined
|
|
411
519
|
});
|
|
412
|
-
return _el$
|
|
520
|
+
return _el$49;
|
|
413
521
|
})();
|
|
414
522
|
};
|
|
415
523
|
return _$memo(content);
|
|
@@ -440,12 +548,12 @@ const ReadyRows = props => {
|
|
|
440
548
|
})];
|
|
441
549
|
if (!props.snapshot.catalog) {
|
|
442
550
|
return (() => {
|
|
443
|
-
var _el$
|
|
444
|
-
_$setProp(_el$
|
|
445
|
-
_$setProp(_el$
|
|
446
|
-
_$setProp(_el$
|
|
447
|
-
_$insert(_el$
|
|
448
|
-
_$insert(_el$
|
|
551
|
+
var _el$72 = _$createElement("box");
|
|
552
|
+
_$setProp(_el$72, "width", "100%");
|
|
553
|
+
_$setProp(_el$72, "flexDirection", "column");
|
|
554
|
+
_$setProp(_el$72, "overflow", "hidden");
|
|
555
|
+
_$insert(_el$72, statusRows, null);
|
|
556
|
+
_$insert(_el$72, _$createComponent(Row, {
|
|
449
557
|
label: "catalog",
|
|
450
558
|
get value() {
|
|
451
559
|
return formatSkillsCatalogUnavailableMessage(props.snapshot);
|
|
@@ -457,22 +565,22 @@ const ReadyRows = props => {
|
|
|
457
565
|
return props.theme.text;
|
|
458
566
|
}
|
|
459
567
|
}), null);
|
|
460
|
-
return _el$
|
|
568
|
+
return _el$72;
|
|
461
569
|
})();
|
|
462
570
|
}
|
|
463
571
|
const counts = props.snapshot.catalog.assignmentCounts;
|
|
464
572
|
return (() => {
|
|
465
|
-
var _el$
|
|
466
|
-
_el$
|
|
467
|
-
_$insertNode(_el$
|
|
468
|
-
_$setProp(_el$
|
|
469
|
-
_$setProp(_el$
|
|
470
|
-
_$setProp(_el$
|
|
471
|
-
_$insert(_el$
|
|
472
|
-
_$insertNode(_el$
|
|
473
|
-
_$setProp(_el$
|
|
474
|
-
_$setProp(_el$
|
|
475
|
-
_$insert(_el$
|
|
573
|
+
var _el$73 = _$createElement("box"),
|
|
574
|
+
_el$74 = _$createElement("text");
|
|
575
|
+
_$insertNode(_el$73, _el$74);
|
|
576
|
+
_$setProp(_el$73, "width", "100%");
|
|
577
|
+
_$setProp(_el$73, "flexDirection", "column");
|
|
578
|
+
_$setProp(_el$73, "overflow", "hidden");
|
|
579
|
+
_$insert(_el$73, statusRows, _el$74);
|
|
580
|
+
_$insertNode(_el$74, _$createTextNode(`catalog:`));
|
|
581
|
+
_$setProp(_el$74, "wrapMode", "none");
|
|
582
|
+
_$setProp(_el$74, "overflow", "hidden");
|
|
583
|
+
_$insert(_el$73, _$createComponent(CatalogBullet, {
|
|
476
584
|
get value() {
|
|
477
585
|
return `${props.snapshot.catalog.publishedSkillCount} loaded`;
|
|
478
586
|
},
|
|
@@ -480,7 +588,7 @@ const ReadyRows = props => {
|
|
|
480
588
|
return props.theme;
|
|
481
589
|
}
|
|
482
590
|
}), null);
|
|
483
|
-
_$insert(_el$
|
|
591
|
+
_$insert(_el$73, _$createComponent(CatalogBullet, {
|
|
484
592
|
get value() {
|
|
485
593
|
return `${counts.global} global`;
|
|
486
594
|
},
|
|
@@ -488,7 +596,7 @@ const ReadyRows = props => {
|
|
|
488
596
|
return props.theme;
|
|
489
597
|
}
|
|
490
598
|
}), null);
|
|
491
|
-
_$insert(_el$
|
|
599
|
+
_$insert(_el$73, _$createComponent(CatalogBullet, {
|
|
492
600
|
get value() {
|
|
493
601
|
return `${counts.project} workspace`;
|
|
494
602
|
},
|
|
@@ -496,70 +604,126 @@ const ReadyRows = props => {
|
|
|
496
604
|
return props.theme;
|
|
497
605
|
}
|
|
498
606
|
}), null);
|
|
499
|
-
_$
|
|
500
|
-
|
|
607
|
+
_$insert(_el$73, _$createComponent(CatalogBullet, {
|
|
608
|
+
get value() {
|
|
609
|
+
return `${props.snapshot.ignoredPublishedSkills.count} ignored`;
|
|
610
|
+
},
|
|
611
|
+
get theme() {
|
|
612
|
+
return props.theme;
|
|
613
|
+
}
|
|
614
|
+
}), null);
|
|
615
|
+
_$effect(_$p => _$setProp(_el$74, "fg", props.theme.textMuted, _$p));
|
|
616
|
+
return _el$73;
|
|
501
617
|
})();
|
|
502
618
|
};
|
|
503
619
|
const WizardSkillsDialog = props => {
|
|
504
620
|
const theme = createMemo(() => props.api.theme.current);
|
|
621
|
+
const refreshAfterPreferenceChange = () => {
|
|
622
|
+
props.refreshStatus({
|
|
623
|
+
showLoading: false
|
|
624
|
+
});
|
|
625
|
+
requestRender(props.api);
|
|
626
|
+
};
|
|
627
|
+
const ignoreSkill = row => {
|
|
628
|
+
const currentStatus = props.status();
|
|
629
|
+
if (currentStatus.kind !== 'ready') return;
|
|
630
|
+
const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;
|
|
631
|
+
void setPublishedSkillIgnored({
|
|
632
|
+
worktree: props.api.state.path.worktree,
|
|
633
|
+
directory: props.api.state.path.directory,
|
|
634
|
+
scopeKey,
|
|
635
|
+
skillSlug: row.skill.skillSlug,
|
|
636
|
+
ignored: !row.ignored,
|
|
637
|
+
preferenceScope: row.state === 'installed-global' ? 'global' : 'project'
|
|
638
|
+
}).then(refreshAfterPreferenceChange).catch(refreshAfterPreferenceChange);
|
|
639
|
+
};
|
|
640
|
+
const installSkill = (row, preferenceScope) => {
|
|
641
|
+
const currentStatus = props.status();
|
|
642
|
+
if (currentStatus.kind !== 'ready') return;
|
|
643
|
+
const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;
|
|
644
|
+
void setPublishedSkillInstalled({
|
|
645
|
+
worktree: props.api.state.path.worktree,
|
|
646
|
+
directory: props.api.state.path.directory,
|
|
647
|
+
scopeKey,
|
|
648
|
+
skillSlug: row.skill.skillSlug,
|
|
649
|
+
installed: true,
|
|
650
|
+
preferenceScope
|
|
651
|
+
}).then(refreshAfterPreferenceChange).catch(refreshAfterPreferenceChange);
|
|
652
|
+
};
|
|
653
|
+
const uninstallSkill = row => {
|
|
654
|
+
const currentStatus = props.status();
|
|
655
|
+
if (currentStatus.kind !== 'ready') return;
|
|
656
|
+
const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;
|
|
657
|
+
void setPublishedSkillInstalled({
|
|
658
|
+
worktree: props.api.state.path.worktree,
|
|
659
|
+
directory: props.api.state.path.directory,
|
|
660
|
+
scopeKey,
|
|
661
|
+
skillSlug: row.skill.skillSlug,
|
|
662
|
+
installed: false,
|
|
663
|
+
preferenceScope: row.state === 'installed-global' ? 'global' : 'project'
|
|
664
|
+
}).then(refreshAfterPreferenceChange).catch(refreshAfterPreferenceChange);
|
|
665
|
+
};
|
|
505
666
|
createEffect(() => {
|
|
506
667
|
props.api.ui?.dialog?.setSize?.('xlarge');
|
|
507
668
|
});
|
|
508
669
|
return (() => {
|
|
509
|
-
var _el$
|
|
510
|
-
_el$
|
|
511
|
-
_el$
|
|
512
|
-
_el$
|
|
513
|
-
_el$
|
|
514
|
-
_el$
|
|
515
|
-
_el$
|
|
516
|
-
_$insertNode(_el$
|
|
517
|
-
_$insertNode(_el$
|
|
518
|
-
_$setProp(_el$
|
|
519
|
-
_$setProp(_el$
|
|
520
|
-
_$setProp(_el$
|
|
521
|
-
_$setProp(_el$
|
|
522
|
-
_$setProp(_el$
|
|
523
|
-
_$insertNode(_el$
|
|
524
|
-
_$insertNode(_el$
|
|
525
|
-
_$setProp(_el$
|
|
526
|
-
_$setProp(_el$
|
|
527
|
-
_$setProp(_el$
|
|
528
|
-
_$setProp(_el$
|
|
529
|
-
_$insertNode(_el$
|
|
530
|
-
_$setProp(_el$
|
|
531
|
-
_$setProp(_el$
|
|
532
|
-
_$insertNode(_el$
|
|
533
|
-
_$insertNode(_el$
|
|
534
|
-
_$setProp(_el$
|
|
535
|
-
_$insertNode(_el$
|
|
536
|
-
_$setProp(_el$
|
|
537
|
-
_$setProp(_el$
|
|
538
|
-
_$setProp(_el$
|
|
539
|
-
_$setProp(_el$
|
|
540
|
-
_$setProp(_el$
|
|
541
|
-
_$insert(_el$
|
|
670
|
+
var _el$76 = _$createElement("box"),
|
|
671
|
+
_el$77 = _$createElement("box"),
|
|
672
|
+
_el$78 = _$createElement("text"),
|
|
673
|
+
_el$79 = _$createElement("b"),
|
|
674
|
+
_el$81 = _$createElement("box"),
|
|
675
|
+
_el$82 = _$createElement("text"),
|
|
676
|
+
_el$84 = _$createElement("box");
|
|
677
|
+
_$insertNode(_el$76, _el$77);
|
|
678
|
+
_$insertNode(_el$76, _el$84);
|
|
679
|
+
_$setProp(_el$76, "width", "100%");
|
|
680
|
+
_$setProp(_el$76, "flexDirection", "column");
|
|
681
|
+
_$setProp(_el$76, "paddingLeft", 1);
|
|
682
|
+
_$setProp(_el$76, "paddingRight", 1);
|
|
683
|
+
_$setProp(_el$76, "paddingBottom", 1);
|
|
684
|
+
_$insertNode(_el$77, _el$78);
|
|
685
|
+
_$insertNode(_el$77, _el$81);
|
|
686
|
+
_$setProp(_el$77, "width", "100%");
|
|
687
|
+
_$setProp(_el$77, "flexDirection", "row");
|
|
688
|
+
_$setProp(_el$77, "justifyContent", "space-between");
|
|
689
|
+
_$setProp(_el$77, "overflow", "hidden");
|
|
690
|
+
_$insertNode(_el$78, _el$79);
|
|
691
|
+
_$setProp(_el$78, "wrapMode", "none");
|
|
692
|
+
_$setProp(_el$78, "overflow", "hidden");
|
|
693
|
+
_$insertNode(_el$79, _$createTextNode(`Wizard Skills`));
|
|
694
|
+
_$insertNode(_el$81, _el$82);
|
|
695
|
+
_$setProp(_el$81, "flexShrink", 0);
|
|
696
|
+
_$insertNode(_el$82, _$createTextNode(`Close`));
|
|
697
|
+
_$setProp(_el$82, "wrapMode", "none");
|
|
698
|
+
_$setProp(_el$84, "width", "100%");
|
|
699
|
+
_$setProp(_el$84, "flexDirection", "column");
|
|
700
|
+
_$setProp(_el$84, "marginTop", 1);
|
|
701
|
+
_$setProp(_el$84, "overflow", "hidden");
|
|
702
|
+
_$insert(_el$84, _$createComponent(WizardSkillsDialogContent, {
|
|
542
703
|
get status() {
|
|
543
704
|
return props.status;
|
|
544
705
|
},
|
|
545
706
|
get theme() {
|
|
546
707
|
return theme();
|
|
547
|
-
}
|
|
708
|
+
},
|
|
709
|
+
onIgnoreSkill: ignoreSkill,
|
|
710
|
+
onInstallSkill: installSkill,
|
|
711
|
+
onUninstallSkill: uninstallSkill
|
|
548
712
|
}));
|
|
549
713
|
_$effect(_p$ => {
|
|
550
714
|
var _v$11 = theme().text,
|
|
551
715
|
_v$12 = props.onClose,
|
|
552
716
|
_v$13 = theme().textMuted;
|
|
553
|
-
_v$11 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
554
|
-
_v$12 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
555
|
-
_v$13 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
717
|
+
_v$11 !== _p$.e && (_p$.e = _$setProp(_el$78, "fg", _v$11, _p$.e));
|
|
718
|
+
_v$12 !== _p$.t && (_p$.t = _$setProp(_el$81, "onMouseUp", _v$12, _p$.t));
|
|
719
|
+
_v$13 !== _p$.a && (_p$.a = _$setProp(_el$82, "fg", _v$13, _p$.a));
|
|
556
720
|
return _p$;
|
|
557
721
|
}, {
|
|
558
722
|
e: undefined,
|
|
559
723
|
t: undefined,
|
|
560
724
|
a: undefined
|
|
561
725
|
});
|
|
562
|
-
return _el$
|
|
726
|
+
return _el$76;
|
|
563
727
|
})();
|
|
564
728
|
};
|
|
565
729
|
const openWizardSkillsDialog = (api, status, refreshStatus) => {
|
|
@@ -571,6 +735,7 @@ const openWizardSkillsDialog = (api, status, refreshStatus) => {
|
|
|
571
735
|
dialog.replace(() => _$createComponent(WizardSkillsDialog, {
|
|
572
736
|
api: api,
|
|
573
737
|
status: status,
|
|
738
|
+
refreshStatus: refreshStatus,
|
|
574
739
|
onClose: () => {
|
|
575
740
|
dialog.clear?.();
|
|
576
741
|
requestRender(api);
|