@industry-theme/agent-panels 0.2.26 → 0.2.28

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/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { type SkillsListPanelProps } from './panels/SkillsListPanel';
2
2
  import { SkillsBrowsePanel } from './panels/SkillsBrowsePanel';
3
+ import { GlobalSkillsPanel, type GlobalSkillsPanelProps } from './panels/GlobalSkillsPanel';
3
4
  import { type SkillDetailPanelProps } from './panels/SkillDetailPanel';
4
5
  import { AgenticResourcesPanel } from './panels/AgenticResourcesPanel';
5
6
  import type { PanelDefinition } from './types';
6
7
  import type { Skill } from './panels/skills/hooks/useSkillsData';
7
- export type { SkillsListPanelProps, SkillDetailPanelProps, Skill };
8
- export { SkillsBrowsePanel, AgenticResourcesPanel };
8
+ export type { SkillsListPanelProps, SkillDetailPanelProps, GlobalSkillsPanelProps, Skill };
9
+ export { SkillsBrowsePanel, GlobalSkillsPanel, AgenticResourcesPanel };
9
10
  /**
10
11
  * Export array of panel definitions.
11
12
  * This is the required export for panel extensions.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAGjE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAmKnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAGjE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EA8LnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import type { PanelComponentProps } from '../types';
3
+ export interface GlobalSkillsPanelProps extends PanelComponentProps {
4
+ /**
5
+ * When true, shows the refresh button and enables refresh functionality.
6
+ * The host must support handling 'skills:refresh' events.
7
+ */
8
+ supportsRefresh?: boolean;
9
+ }
10
+ /**
11
+ * GlobalSkillsPanel - A panel for displaying ONLY global Agent Skills
12
+ *
13
+ * This panel shows:
14
+ * - List/grid of global skills only (no project skills)
15
+ * - Search functionality to filter skills
16
+ * - Skill metadata (name, description, capabilities)
17
+ * - Click to select and emit events for detail views
18
+ *
19
+ * Use this panel when you want to show only global skills without a project/global filter toggle.
20
+ * This is ideal for views that are specifically about browsing and managing global skill installations.
21
+ */
22
+ export declare const GlobalSkillsPanel: React.FC<GlobalSkillsPanelProps>;
23
+ //# sourceMappingURL=GlobalSkillsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalSkillsPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GlobalSkillsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAIpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIpD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA0W9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkillsBrowsePanel.d.ts","sourceRoot":"","sources":["../../src/panels/SkillsBrowsePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAIpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAKpD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA+V9D,CAAC"}
1
+ {"version":3,"file":"SkillsBrowsePanel.d.ts","sourceRoot":"","sources":["../../src/panels/SkillsBrowsePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAIpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAKpD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwX9D,CAAC"}
@@ -3898,15 +3898,20 @@ const SkillsBrowsePanel = ({
3898
3898
  events,
3899
3899
  supportsRefresh = false
3900
3900
  }) => {
3901
+ var _a;
3901
3902
  const { theme: theme2 } = useTheme();
3902
3903
  const panelRef = useRef(null);
3903
3904
  const [selectedSkillId, setSelectedSkillId] = useState(null);
3904
3905
  const [searchQuery, setSearchQuery] = useState("");
3905
3906
  const [isRefreshing, setIsRefreshing] = useState(false);
3906
3907
  const { skills, isLoading, error, refreshSkills } = useSkillsBrowseData({ context });
3908
+ const fileTreeSlice = context.getSlice("fileTree");
3909
+ const fileTree = fileTreeSlice == null ? void 0 : fileTreeSlice.data;
3910
+ const sourceInfo = (_a = fileTree == null ? void 0 : fileTree.metadata) == null ? void 0 : _a.sourceInfo;
3911
+ const repoDisplayName = (sourceInfo == null ? void 0 : sourceInfo.owner) && (sourceInfo == null ? void 0 : sourceInfo.repo) ? `${sourceInfo.owner}/${sourceInfo.repo}` : null;
3907
3912
  gt("skills-browse", events, () => {
3908
- var _a;
3909
- return (_a = panelRef.current) == null ? void 0 : _a.focus();
3913
+ var _a2;
3914
+ return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
3910
3915
  });
3911
3916
  useEffect(() => {
3912
3917
  const unsubscribeInstalled = events.on("skill:installed", () => {
@@ -3927,9 +3932,9 @@ const SkillsBrowsePanel = ({
3927
3932
  if (searchQuery.trim()) {
3928
3933
  const query = searchQuery.toLowerCase().trim();
3929
3934
  filtered = filtered.filter((skill) => {
3930
- var _a, _b;
3935
+ var _a2, _b;
3931
3936
  if (skill.name.toLowerCase().includes(query)) return true;
3932
- if ((_a = skill.description) == null ? void 0 : _a.toLowerCase().includes(query)) return true;
3937
+ if ((_a2 = skill.description) == null ? void 0 : _a2.toLowerCase().includes(query)) return true;
3933
3938
  if ((_b = skill.capabilities) == null ? void 0 : _b.some((cap2) => cap2.toLowerCase().includes(query)))
3934
3939
  return true;
3935
3940
  if (skill.path.toLowerCase().includes(query)) return true;
@@ -4005,7 +4010,22 @@ const SkillsBrowsePanel = ({
4005
4010
  fontSize: theme2.fontSizes[4],
4006
4011
  color: theme2.colors.text
4007
4012
  },
4008
- children: /* @__PURE__ */ jsx(
4013
+ children: repoDisplayName ? /* @__PURE__ */ jsx(
4014
+ "a",
4015
+ {
4016
+ href: `https://github.com/${repoDisplayName}`,
4017
+ target: "_blank",
4018
+ rel: "noopener noreferrer",
4019
+ style: {
4020
+ color: "inherit",
4021
+ textDecoration: "none",
4022
+ fontFamily: theme2.fonts.monospace
4023
+ },
4024
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
4025
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
4026
+ children: repoDisplayName
4027
+ }
4028
+ ) : /* @__PURE__ */ jsx(
4009
4029
  "a",
4010
4030
  {
4011
4031
  href: "https://agentskills.io/",
@@ -4237,6 +4257,358 @@ const SkillsBrowsePanel = ({
4237
4257
  }
4238
4258
  );
4239
4259
  };
4260
+ const GlobalSkillsPanel = ({
4261
+ context,
4262
+ events,
4263
+ supportsRefresh = false
4264
+ }) => {
4265
+ const { theme: theme2 } = useTheme();
4266
+ const panelRef = useRef(null);
4267
+ const [selectedSkillId, setSelectedSkillId] = useState(null);
4268
+ const [searchQuery, setSearchQuery] = useState("");
4269
+ const [isRefreshing, setIsRefreshing] = useState(false);
4270
+ const { skills, isLoading, error, refreshSkills } = useSkillsData({ context });
4271
+ gt("global-skills", events, () => {
4272
+ var _a;
4273
+ return (_a = panelRef.current) == null ? void 0 : _a.focus();
4274
+ });
4275
+ useEffect(() => {
4276
+ const unsubscribeInstalled = events.on("skill:installed", () => {
4277
+ console.log("[GlobalSkillsPanel] Skill installed, refreshing...");
4278
+ refreshSkills();
4279
+ });
4280
+ const unsubscribeUninstalled = events.on("skill:uninstalled", () => {
4281
+ console.log("[GlobalSkillsPanel] Skill uninstalled, refreshing...");
4282
+ refreshSkills();
4283
+ });
4284
+ return () => {
4285
+ unsubscribeInstalled();
4286
+ unsubscribeUninstalled();
4287
+ };
4288
+ }, [events, refreshSkills]);
4289
+ const filteredSkills = useMemo(() => {
4290
+ let filtered = skills.filter((skill) => {
4291
+ if (skill.installedLocations && skill.installedLocations.length > 0) {
4292
+ return skill.installedLocations.some(
4293
+ (loc) => loc.source === "global-universal" || loc.source === "global-claude"
4294
+ );
4295
+ }
4296
+ return skill.source === "global-universal" || skill.source === "global-claude";
4297
+ });
4298
+ if (searchQuery.trim()) {
4299
+ const query = searchQuery.toLowerCase().trim();
4300
+ filtered = filtered.filter((skill) => {
4301
+ var _a, _b;
4302
+ if (skill.name.toLowerCase().includes(query)) return true;
4303
+ if ((_a = skill.description) == null ? void 0 : _a.toLowerCase().includes(query)) return true;
4304
+ if ((_b = skill.capabilities) == null ? void 0 : _b.some((cap2) => cap2.toLowerCase().includes(query)))
4305
+ return true;
4306
+ if (skill.path.toLowerCase().includes(query)) return true;
4307
+ return false;
4308
+ });
4309
+ }
4310
+ return filtered;
4311
+ }, [skills, searchQuery]);
4312
+ const handleSkillClick = (skill) => {
4313
+ setSelectedSkillId(skill.id);
4314
+ if (events) {
4315
+ events.emit({
4316
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4317
+ type: "skill:selected",
4318
+ source: "global-skills-panel",
4319
+ timestamp: Date.now(),
4320
+ payload: { skillId: skill.id, skill }
4321
+ });
4322
+ }
4323
+ };
4324
+ const handleRefresh = () => {
4325
+ setIsRefreshing(true);
4326
+ if (events) {
4327
+ events.emit({
4328
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4329
+ type: "skills:refresh",
4330
+ source: "global-skills-panel",
4331
+ timestamp: Date.now(),
4332
+ payload: {}
4333
+ });
4334
+ }
4335
+ setTimeout(() => {
4336
+ setIsRefreshing(false);
4337
+ }, 800);
4338
+ };
4339
+ return /* @__PURE__ */ jsxs(
4340
+ "div",
4341
+ {
4342
+ ref: panelRef,
4343
+ tabIndex: -1,
4344
+ style: {
4345
+ padding: "clamp(12px, 3vw, 20px)",
4346
+ fontFamily: theme2.fonts.body,
4347
+ height: "100%",
4348
+ boxSizing: "border-box",
4349
+ display: "flex",
4350
+ flexDirection: "column",
4351
+ gap: "16px",
4352
+ overflow: "hidden",
4353
+ backgroundColor: theme2.colors.background,
4354
+ color: theme2.colors.text,
4355
+ outline: "none"
4356
+ },
4357
+ children: [
4358
+ /* @__PURE__ */ jsxs(
4359
+ "div",
4360
+ {
4361
+ style: {
4362
+ flexShrink: 0,
4363
+ display: "flex",
4364
+ alignItems: "center",
4365
+ justifyContent: "space-between",
4366
+ gap: "12px",
4367
+ flexWrap: "wrap"
4368
+ },
4369
+ children: [
4370
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
4371
+ /* @__PURE__ */ jsx(
4372
+ "h2",
4373
+ {
4374
+ style: {
4375
+ margin: 0,
4376
+ fontSize: theme2.fontSizes[4],
4377
+ color: theme2.colors.text
4378
+ },
4379
+ children: /* @__PURE__ */ jsx(
4380
+ "a",
4381
+ {
4382
+ href: "https://agentskills.io/",
4383
+ target: "_blank",
4384
+ rel: "noopener noreferrer",
4385
+ style: {
4386
+ color: "inherit",
4387
+ textDecoration: "none"
4388
+ },
4389
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
4390
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
4391
+ children: "Global Skills"
4392
+ }
4393
+ )
4394
+ }
4395
+ ),
4396
+ !isLoading && /* @__PURE__ */ jsxs(
4397
+ "span",
4398
+ {
4399
+ style: {
4400
+ fontSize: theme2.fontSizes[1],
4401
+ color: theme2.colors.textSecondary,
4402
+ background: theme2.colors.backgroundSecondary,
4403
+ padding: "4px 10px",
4404
+ borderRadius: theme2.radii[1]
4405
+ },
4406
+ children: [
4407
+ filteredSkills.length,
4408
+ " ",
4409
+ filteredSkills.length === 1 ? "skill" : "skills"
4410
+ ]
4411
+ }
4412
+ )
4413
+ ] }),
4414
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px", flex: "1 1 200px", maxWidth: "400px" }, children: [
4415
+ /* @__PURE__ */ jsxs(
4416
+ "div",
4417
+ {
4418
+ style: {
4419
+ position: "relative",
4420
+ flex: 1,
4421
+ minWidth: "150px"
4422
+ },
4423
+ children: [
4424
+ /* @__PURE__ */ jsx(
4425
+ Search,
4426
+ {
4427
+ size: 16,
4428
+ color: theme2.colors.textSecondary,
4429
+ style: {
4430
+ position: "absolute",
4431
+ left: "10px",
4432
+ top: "50%",
4433
+ transform: "translateY(-50%)",
4434
+ pointerEvents: "none"
4435
+ }
4436
+ }
4437
+ ),
4438
+ /* @__PURE__ */ jsx(
4439
+ "input",
4440
+ {
4441
+ type: "text",
4442
+ placeholder: "Search global skills...",
4443
+ value: searchQuery,
4444
+ onChange: (e) => setSearchQuery(e.target.value),
4445
+ style: {
4446
+ width: "100%",
4447
+ padding: "8px 32px 8px 32px",
4448
+ fontSize: theme2.fontSizes[1],
4449
+ fontFamily: theme2.fonts.body,
4450
+ border: `1px solid ${theme2.colors.border}`,
4451
+ borderRadius: theme2.radii[2],
4452
+ background: theme2.colors.backgroundSecondary,
4453
+ color: theme2.colors.text,
4454
+ outline: "none",
4455
+ boxSizing: "border-box"
4456
+ }
4457
+ }
4458
+ ),
4459
+ searchQuery && /* @__PURE__ */ jsx(
4460
+ "button",
4461
+ {
4462
+ onClick: () => setSearchQuery(""),
4463
+ style: {
4464
+ position: "absolute",
4465
+ right: "6px",
4466
+ top: "50%",
4467
+ transform: "translateY(-50%)",
4468
+ background: "transparent",
4469
+ border: "none",
4470
+ padding: "4px",
4471
+ cursor: "pointer",
4472
+ display: "flex",
4473
+ alignItems: "center",
4474
+ justifyContent: "center",
4475
+ color: theme2.colors.textSecondary
4476
+ },
4477
+ "aria-label": "Clear search",
4478
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
4479
+ }
4480
+ )
4481
+ ]
4482
+ }
4483
+ ),
4484
+ supportsRefresh && /* @__PURE__ */ jsx(
4485
+ "button",
4486
+ {
4487
+ onClick: handleRefresh,
4488
+ disabled: isRefreshing || isLoading,
4489
+ style: {
4490
+ background: theme2.colors.backgroundSecondary,
4491
+ border: `1px solid ${theme2.colors.border}`,
4492
+ borderRadius: theme2.radii[1],
4493
+ padding: "8px",
4494
+ cursor: isRefreshing || isLoading ? "default" : "pointer",
4495
+ display: "flex",
4496
+ alignItems: "center",
4497
+ justifyContent: "center",
4498
+ transition: "all 0.2s ease"
4499
+ },
4500
+ title: "Refresh skills",
4501
+ children: /* @__PURE__ */ jsx(
4502
+ RefreshCw,
4503
+ {
4504
+ size: 16,
4505
+ color: theme2.colors.textSecondary,
4506
+ style: {
4507
+ animation: isRefreshing ? "spin 1s linear infinite" : "none"
4508
+ }
4509
+ }
4510
+ )
4511
+ }
4512
+ )
4513
+ ] })
4514
+ ]
4515
+ }
4516
+ ),
4517
+ error && /* @__PURE__ */ jsxs(
4518
+ "div",
4519
+ {
4520
+ style: {
4521
+ flexShrink: 0,
4522
+ padding: "12px",
4523
+ background: `${theme2.colors.error}20`,
4524
+ border: `1px solid ${theme2.colors.error}`,
4525
+ borderRadius: theme2.radii[2],
4526
+ display: "flex",
4527
+ alignItems: "center",
4528
+ gap: "8px",
4529
+ color: theme2.colors.error,
4530
+ fontSize: theme2.fontSizes[1]
4531
+ },
4532
+ children: [
4533
+ /* @__PURE__ */ jsx(CircleAlert, { size: 16 }),
4534
+ /* @__PURE__ */ jsx("span", { children: error })
4535
+ ]
4536
+ }
4537
+ ),
4538
+ /* @__PURE__ */ jsx(
4539
+ "div",
4540
+ {
4541
+ style: {
4542
+ flex: 1,
4543
+ overflowY: "auto",
4544
+ minHeight: 0
4545
+ },
4546
+ children: isLoading ? /* @__PURE__ */ jsx(
4547
+ "div",
4548
+ {
4549
+ style: {
4550
+ height: "100%",
4551
+ display: "flex",
4552
+ alignItems: "center",
4553
+ justifyContent: "center",
4554
+ color: theme2.colors.textSecondary,
4555
+ fontSize: theme2.fontSizes[2]
4556
+ },
4557
+ children: "Loading global skills..."
4558
+ }
4559
+ ) : filteredSkills.length === 0 ? /* @__PURE__ */ jsxs(
4560
+ "div",
4561
+ {
4562
+ style: {
4563
+ height: "100%",
4564
+ display: "flex",
4565
+ flexDirection: "column",
4566
+ alignItems: "center",
4567
+ justifyContent: "center",
4568
+ gap: "16px",
4569
+ color: theme2.colors.textSecondary,
4570
+ padding: "24px"
4571
+ },
4572
+ children: [
4573
+ /* @__PURE__ */ jsx(FileCode, { size: 48, color: theme2.colors.border }),
4574
+ /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
4575
+ /* @__PURE__ */ jsx("p", { style: { margin: 0, fontSize: theme2.fontSizes[2] }, children: searchQuery ? "No global skills match your search" : "No global skills found" }),
4576
+ /* @__PURE__ */ jsx("p", { style: { margin: "8px 0 0 0", fontSize: theme2.fontSizes[1] }, children: searchQuery ? "Try a different search term" : "Install skills from repositories to see them here" })
4577
+ ] })
4578
+ ]
4579
+ }
4580
+ ) : /* @__PURE__ */ jsx(
4581
+ "div",
4582
+ {
4583
+ style: {
4584
+ display: "grid",
4585
+ gridTemplateColumns: "repeat(auto-fill, minmax(250px, 1fr))",
4586
+ gap: "16px",
4587
+ padding: "4px"
4588
+ },
4589
+ children: filteredSkills.map((skill) => /* @__PURE__ */ jsx(
4590
+ SkillCard,
4591
+ {
4592
+ skill,
4593
+ onClick: handleSkillClick,
4594
+ isSelected: selectedSkillId === skill.id,
4595
+ filterContext: "global"
4596
+ },
4597
+ skill.id
4598
+ ))
4599
+ }
4600
+ )
4601
+ }
4602
+ ),
4603
+ /* @__PURE__ */ jsx("style", { children: `
4604
+ @keyframes spin {
4605
+ to { transform: rotate(360deg); }
4606
+ }
4607
+ ` })
4608
+ ]
4609
+ }
4610
+ );
4611
+ };
4240
4612
  var MarkdownSourceType$1;
4241
4613
  ((MarkdownSourceType2) => {
4242
4614
  MarkdownSourceType2["WORKSPACE_FILE"] = "workspace_file";
@@ -52214,6 +52586,31 @@ const panels = [
52214
52586
  console.log("Skills Browse Panel unmounting");
52215
52587
  }
52216
52588
  },
52589
+ {
52590
+ metadata: {
52591
+ id: "industry-theme.global-skills",
52592
+ name: "Global Skills",
52593
+ icon: "🌐",
52594
+ version: "0.1.0",
52595
+ author: "Principal ADE",
52596
+ description: "Display only global Agent Skills (no project skills)",
52597
+ slices: ["fileTree", "globalSkills"]
52598
+ // Depends on fileTree and globalSkills
52599
+ },
52600
+ component: GlobalSkillsPanel,
52601
+ // Optional: Called when this specific panel is mounted
52602
+ onMount: async (context) => {
52603
+ var _a;
52604
+ console.log(
52605
+ "Global Skills Panel mounted",
52606
+ (_a = context.currentScope.repository) == null ? void 0 : _a.path
52607
+ );
52608
+ },
52609
+ // Optional: Called when this specific panel is unmounted
52610
+ onUnmount: async (_context) => {
52611
+ console.log("Global Skills Panel unmounting");
52612
+ }
52613
+ },
52217
52614
  {
52218
52615
  metadata: {
52219
52616
  id: "industry-theme.skill-detail",
@@ -52323,6 +52720,7 @@ const onPackageUnload = async () => {
52323
52720
  };
52324
52721
  export {
52325
52722
  AgenticResourcesPanel,
52723
+ GlobalSkillsPanel,
52326
52724
  SkillsBrowsePanel,
52327
52725
  onPackageLoad,
52328
52726
  onPackageUnload,