@aexol/opencode-wizard 0.1.3 → 0.1.4
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/tui.js +70 -41
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
package/dist/tui.js
CHANGED
|
@@ -10,7 +10,6 @@ import { createElement as _$createElement } from "@opentui/solid";
|
|
|
10
10
|
import { createMemo, createSignal } from 'solid-js';
|
|
11
11
|
import { PLUGIN_ID, resolvePluginStatusSnapshot } from './server.js';
|
|
12
12
|
const STATUS_TIMEOUT_MS = 5_000;
|
|
13
|
-
const MAX_SIDEBAR_SKILL_NAMES = 3;
|
|
14
13
|
const getSkillDisplayName = skill => skill.artifactName || skill.skillName || skill.skillSlug;
|
|
15
14
|
const getSkillPolicy = skill => skill.policyLabel || skill.installPolicy;
|
|
16
15
|
const formatSkillTags = skill => {
|
|
@@ -18,21 +17,12 @@ const formatSkillTags = skill => {
|
|
|
18
17
|
if (tagNames.length === 0) return 'none';
|
|
19
18
|
return tagNames.join(', ');
|
|
20
19
|
};
|
|
21
|
-
const
|
|
20
|
+
const formatSkillsCatalogUnavailableMessage = snapshot => {
|
|
22
21
|
if (!snapshot.catalog && snapshot.status === 'missing_auth') {
|
|
23
22
|
return 'skills catalog locked until interactive fetch authenticates';
|
|
24
23
|
}
|
|
25
24
|
if (!snapshot.catalog) return `skills catalog unavailable: ${snapshot.message ?? snapshot.status}`;
|
|
26
|
-
|
|
27
|
-
return `${snapshot.catalog.publishedSkillCount} loaded · ${counts.global} global · ${counts.project} project`;
|
|
28
|
-
};
|
|
29
|
-
const formatSidebarSkillNames = snapshot => {
|
|
30
|
-
if (!snapshot.catalog) return 'catalog unavailable';
|
|
31
|
-
const skillNames = snapshot.catalog.skills.map(getSkillDisplayName);
|
|
32
|
-
const visibleNames = skillNames.slice(0, MAX_SIDEBAR_SKILL_NAMES).join(', ');
|
|
33
|
-
const remainingCount = Math.max(skillNames.length - MAX_SIDEBAR_SKILL_NAMES, 0);
|
|
34
|
-
const suffix = remainingCount > 0 ? ` +${remainingCount}` : '';
|
|
35
|
-
return `${visibleNames || 'none'}${suffix}`;
|
|
25
|
+
return 'skills catalog unavailable';
|
|
36
26
|
};
|
|
37
27
|
const formatSkillOptionDescription = skill => {
|
|
38
28
|
const description = skill.artifactDescription || skill.skillSlug;
|
|
@@ -75,7 +65,6 @@ const Panel = props => (() => {
|
|
|
75
65
|
_$insertNode(_el$5, _el$6);
|
|
76
66
|
_$setProp(_el$5, "width", "100%");
|
|
77
67
|
_$setProp(_el$5, "flexDirection", "column");
|
|
78
|
-
_$setProp(_el$5, "paddingLeft", 1);
|
|
79
68
|
_$setProp(_el$5, "paddingRight", 1);
|
|
80
69
|
_$insertNode(_el$6, _el$7);
|
|
81
70
|
_$setProp(_el$6, "wrapMode", "none");
|
|
@@ -194,37 +183,77 @@ const SkillsRows = props => {
|
|
|
194
183
|
return _el$15;
|
|
195
184
|
})();
|
|
196
185
|
};
|
|
197
|
-
const
|
|
198
|
-
var _el$16 = _$createElement("
|
|
199
|
-
|
|
200
|
-
_$
|
|
186
|
+
const CatalogBullet = props => (() => {
|
|
187
|
+
var _el$16 = _$createElement("text"),
|
|
188
|
+
_el$17 = _$createTextNode(` - `);
|
|
189
|
+
_$insertNode(_el$16, _el$17);
|
|
190
|
+
_$setProp(_el$16, "wrapMode", "none");
|
|
201
191
|
_$setProp(_el$16, "overflow", "hidden");
|
|
202
|
-
_$insert(_el$16,
|
|
203
|
-
|
|
204
|
-
get value() {
|
|
205
|
-
return formatSkillsCatalogSummary(props.snapshot);
|
|
206
|
-
},
|
|
207
|
-
get labelColor() {
|
|
208
|
-
return props.theme.textMuted;
|
|
209
|
-
},
|
|
210
|
-
get valueColor() {
|
|
211
|
-
return props.theme.text;
|
|
212
|
-
}
|
|
213
|
-
}), null);
|
|
214
|
-
_$insert(_el$16, _$createComponent(Row, {
|
|
215
|
-
label: "skills",
|
|
216
|
-
get value() {
|
|
217
|
-
return formatSidebarSkillNames(props.snapshot);
|
|
218
|
-
},
|
|
219
|
-
get labelColor() {
|
|
220
|
-
return props.theme.textMuted;
|
|
221
|
-
},
|
|
222
|
-
get valueColor() {
|
|
223
|
-
return props.theme.text;
|
|
224
|
-
}
|
|
225
|
-
}), null);
|
|
192
|
+
_$insert(_el$16, () => props.value, null);
|
|
193
|
+
_$effect(_$p => _$setProp(_el$16, "fg", props.theme.text, _$p));
|
|
226
194
|
return _el$16;
|
|
227
195
|
})();
|
|
196
|
+
const ReadyRows = props => {
|
|
197
|
+
if (!props.snapshot.catalog) {
|
|
198
|
+
return (() => {
|
|
199
|
+
var _el$18 = _$createElement("box");
|
|
200
|
+
_$setProp(_el$18, "width", "100%");
|
|
201
|
+
_$setProp(_el$18, "flexDirection", "column");
|
|
202
|
+
_$setProp(_el$18, "overflow", "hidden");
|
|
203
|
+
_$insert(_el$18, _$createComponent(Row, {
|
|
204
|
+
label: "catalog",
|
|
205
|
+
get value() {
|
|
206
|
+
return formatSkillsCatalogUnavailableMessage(props.snapshot);
|
|
207
|
+
},
|
|
208
|
+
get labelColor() {
|
|
209
|
+
return props.theme.textMuted;
|
|
210
|
+
},
|
|
211
|
+
get valueColor() {
|
|
212
|
+
return props.theme.text;
|
|
213
|
+
}
|
|
214
|
+
}));
|
|
215
|
+
return _el$18;
|
|
216
|
+
})();
|
|
217
|
+
}
|
|
218
|
+
const counts = props.snapshot.catalog.assignmentCounts;
|
|
219
|
+
return (() => {
|
|
220
|
+
var _el$19 = _$createElement("box"),
|
|
221
|
+
_el$20 = _$createElement("text");
|
|
222
|
+
_$insertNode(_el$19, _el$20);
|
|
223
|
+
_$setProp(_el$19, "width", "100%");
|
|
224
|
+
_$setProp(_el$19, "flexDirection", "column");
|
|
225
|
+
_$setProp(_el$19, "overflow", "hidden");
|
|
226
|
+
_$insertNode(_el$20, _$createTextNode(`catalog:`));
|
|
227
|
+
_$setProp(_el$20, "wrapMode", "none");
|
|
228
|
+
_$setProp(_el$20, "overflow", "hidden");
|
|
229
|
+
_$insert(_el$19, _$createComponent(CatalogBullet, {
|
|
230
|
+
get value() {
|
|
231
|
+
return `${props.snapshot.catalog.publishedSkillCount} loaded`;
|
|
232
|
+
},
|
|
233
|
+
get theme() {
|
|
234
|
+
return props.theme;
|
|
235
|
+
}
|
|
236
|
+
}), null);
|
|
237
|
+
_$insert(_el$19, _$createComponent(CatalogBullet, {
|
|
238
|
+
get value() {
|
|
239
|
+
return `${counts.global} global`;
|
|
240
|
+
},
|
|
241
|
+
get theme() {
|
|
242
|
+
return props.theme;
|
|
243
|
+
}
|
|
244
|
+
}), null);
|
|
245
|
+
_$insert(_el$19, _$createComponent(CatalogBullet, {
|
|
246
|
+
get value() {
|
|
247
|
+
return `${counts.project} workspace`;
|
|
248
|
+
},
|
|
249
|
+
get theme() {
|
|
250
|
+
return props.theme;
|
|
251
|
+
}
|
|
252
|
+
}), null);
|
|
253
|
+
_$effect(_$p => _$setProp(_el$20, "fg", props.theme.textMuted, _$p));
|
|
254
|
+
return _el$19;
|
|
255
|
+
})();
|
|
256
|
+
};
|
|
228
257
|
const createWizardStatusSlot = (api, status) => ({
|
|
229
258
|
order: 240,
|
|
230
259
|
slots: {
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createMemo","createSignal","PLUGIN_ID","resolvePluginStatusSnapshot","STATUS_TIMEOUT_MS","MAX_SIDEBAR_SKILL_NAMES","getSkillDisplayName","skill","artifactName","skillName","skillSlug","getSkillPolicy","policyLabel","installPolicy","formatSkillTags","tagNames","tags","map","tag","label","slug","filter","length","join","formatSkillsCatalogSummary","snapshot","catalog","status","message","counts","assignmentCounts","publishedSkillCount","global","project","formatSidebarSkillNames","skillNames","skills","visibleNames","slice","remainingCount","Math","max","suffix","formatSkillOptionDescription","description","artifactDescription","contextKind","toUpperCase","version","Row","props","_el$","_$createElement","_el$2","_el$3","_$createTextNode","_el$4","_$insertNode","_$setProp","_$insert","value","_$effect","_p$","_v$","labelColor","_v$2","valueColor","e","t","undefined","Panel","_el$5","_el$6","_el$7","title","children","_v$3","onPress","_v$4","theme","text","openSkillsDialog","api","current","kind","options","ui","dialog","replace","_$createComponent","DialogSelect","placeholder","onSelect","option","selectedSkill","find","clear","Dialog","size","onClose","_el$8","_el$9","_el$0","_el$10","_v$5","_v$6","warning","SkillsRows","statusContent","currentStatus","_el$11","_$p","textMuted","_el$13","_el$14","ReadyRows","_el$15","_el$16","createWizardStatusSlot","order","slots","home_bottom","sidebar_content","_ctx","_value","loadStatus","worktree","state","path","directory","signal","AbortSignal","timeout","error","Error","tui","setStatus","register","then","id"],"sources":["../src/tui.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/solid */\nimport type { RGBA } from '@opentui/core';\nimport { createMemo, createSignal } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n PLUGIN_ID,\n resolvePluginStatusSnapshot,\n type PluginStatusSnapshot,\n} from './server.js';\n\ntype StatusState =\n | {\n kind: 'loading';\n }\n | {\n kind: 'ready';\n snapshot: PluginStatusSnapshot;\n }\n | {\n kind: 'error';\n message: string;\n };\n\ntype WizardTheme = {\n text: string | RGBA | undefined;\n textMuted: string | RGBA | undefined;\n warning: string | RGBA | undefined;\n};\n\ntype DialogSelectOption = {\n title: string;\n value: string;\n description: string;\n};\n\ntype TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui: {\n dialog: {\n replace: (render: () => JSX.Element) => void;\n clear: () => void;\n };\n DialogSelect: (props: {\n title: string;\n placeholder: string;\n options: DialogSelectOption[];\n onSelect: (option: DialogSelectOption) => void;\n }) => JSX.Element;\n Dialog: (props: { size: 'medium'; onClose: () => void; children: JSX.Element }) => JSX.Element;\n };\n slots: {\n register: (slot: TuiSlotPlugin) => void;\n };\n state: {\n path: {\n worktree: string;\n directory: string;\n };\n };\n};\n\ntype TuiSlotContext = unknown;\n\ntype TuiSlotPlugin = {\n order: number;\n slots: {\n home_bottom: () => JSX.Element;\n sidebar_content: (ctx: TuiSlotContext, value: { session_id: string }) => JSX.Element;\n };\n};\n\ntype TuiPlugin = (api: TuiPluginApi) => void | Promise<void>;\n\nconst STATUS_TIMEOUT_MS = 5_000;\nconst MAX_SIDEBAR_SKILL_NAMES = 3;\ntype PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\n\nconst getSkillDisplayName = (skill: PublishedSkillSummary): string => skill.artifactName || skill.skillName || skill.skillSlug;\n\nconst getSkillPolicy = (skill: PublishedSkillSummary): string => skill.policyLabel || skill.installPolicy;\n\nconst formatSkillTags = (skill: PublishedSkillSummary): string => {\n const tagNames = skill.tags.map((tag) => tag.label || tag.slug).filter((tag) => tag.length > 0);\n if (tagNames.length === 0) return 'none';\n\n return tagNames.join(', ');\n};\n\nconst formatSkillsCatalogSummary = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n return 'skills catalog locked until interactive fetch authenticates';\n }\n\n if (!snapshot.catalog) return `skills catalog unavailable: ${snapshot.message ?? snapshot.status}`;\n\n const counts = snapshot.catalog.assignmentCounts;\n return `${snapshot.catalog.publishedSkillCount} loaded · ${counts.global} global · ${counts.project} project`;\n};\n\nconst formatSidebarSkillNames = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog) return 'catalog unavailable';\n\n const skillNames = snapshot.catalog.skills.map(getSkillDisplayName);\n const visibleNames = skillNames.slice(0, MAX_SIDEBAR_SKILL_NAMES).join(', ');\n const remainingCount = Math.max(skillNames.length - MAX_SIDEBAR_SKILL_NAMES, 0);\n const suffix = remainingCount > 0 ? ` +${remainingCount}` : '';\n\n return `${visibleNames || 'none'}${suffix}`;\n};\n\nconst formatSkillOptionDescription = (skill: PublishedSkillSummary): string => {\n const description = skill.artifactDescription || skill.skillSlug;\n return `${skill.contextKind.toUpperCase()} · ${getSkillPolicy(skill)} · v${skill.version || 'unknown'} · ${skill.skillName || skill.skillSlug} · ${formatSkillTags(skill)} · ${description}`;\n};\n\nconst Row = (props: {\n label: string;\n value: string;\n labelColor: string | RGBA | undefined;\n valueColor: string | RGBA | undefined;\n}) => (\n <box width=\"100%\" flexDirection=\"row\" overflow=\"hidden\">\n <text fg={props.labelColor} flexShrink={0} wrapMode=\"none\">\n {props.label}: \n </text>\n <text fg={props.valueColor} flexGrow={1} overflow=\"hidden\" wrapMode=\"none\">\n {props.value}\n </text>\n </box>\n);\n\nconst Panel = (props: {\n title: string;\n theme: TuiPluginApi['theme']['current'];\n onPress?: () => void;\n children: JSX.Element;\n}) => (\n <box\n width=\"100%\"\n flexDirection=\"column\"\n paddingLeft={1}\n paddingRight={1}\n onMouseUp={props.onPress}\n >\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{props.title}</b>\n </text>\n {props.children}\n </box>\n);\n\nconst openSkillsDialog = (api: TuiPluginApi, status: StatusState) => {\n const theme = api.theme.current;\n\n if (status.kind === 'ready' && status.snapshot.catalog) {\n const options = status.snapshot.catalog.skills.map((skill) => ({\n title: getSkillDisplayName(skill),\n value: skill.skillSlug,\n description: formatSkillOptionDescription(skill),\n }));\n\n api.ui.dialog.replace(() => (\n <api.ui.DialogSelect\n title=\"Wizard skills catalog\"\n placeholder=\"Filter loaded skills\"\n options={options}\n onSelect={(option) => {\n const selectedSkill = status.snapshot.catalog?.skills.find((skill) => skill.skillSlug === option.value);\n if (!selectedSkill) return;\n\n api.ui.dialog.clear();\n }}\n />\n ));\n return;\n }\n\n const message =\n status.kind === 'loading'\n ? 'Skills catalog is loading. Try again after the catalog event completes.'\n : status.kind === 'error'\n ? `Skills catalog unavailable: ${status.message}`\n : status.snapshot.status === 'missing_auth'\n ? 'Skills catalog is locked until interactive fetch authenticates.'\n : (status.snapshot.message ?? 'Skills catalog unavailable.');\n\n api.ui.dialog.replace(() => (\n <api.ui.Dialog\n size=\"medium\"\n onClose={() => {\n api.ui.dialog.clear();\n }}\n >\n <box width=\"100%\" flexDirection=\"column\" paddingLeft={1} paddingRight={1}>\n <text fg={theme.text} wrapMode=\"none\">\n <b>Wizard skills catalog</b>\n </text>\n <text fg={theme.warning} marginTop={1}>\n {message}\n </text>\n </box>\n </api.ui.Dialog>\n ));\n};\n\nconst SkillsRows = (props: { api: TuiPluginApi; status: () => StatusState }) => {\n const theme = createMemo(() => props.api.theme.current);\n const statusContent = () => {\n const currentStatus = props.status();\n\n if (currentStatus.kind === 'loading') {\n return (\n <text fg={theme().textMuted} wrapMode=\"none\" overflow=\"hidden\">\n loading wizard skills catalog…\n </text>\n );\n }\n\n if (currentStatus.kind === 'error') {\n return (\n <text fg={theme().warning} wrapMode=\"none\" overflow=\"hidden\">\n skills catalog unavailable: {currentStatus.message}\n </text>\n );\n }\n\n return <ReadyRows snapshot={currentStatus.snapshot} theme={theme()} />;\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n {statusContent()}\n </box>\n );\n};\n\nconst ReadyRows = (props: { snapshot: PluginStatusSnapshot; theme: TuiPluginApi['theme']['current'] }) => (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <Row label=\"catalog\" value={formatSkillsCatalogSummary(props.snapshot)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n <Row label=\"skills\" value={formatSidebarSkillNames(props.snapshot)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n </box>\n);\n\nconst createWizardStatusSlot = (api: TuiPluginApi, status: () => StatusState): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onPress={() => openSkillsDialog(api, status())}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n sidebar_content: (_ctx: TuiSlotContext, _value: { session_id: string }) => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onPress={() => openSkillsDialog(api, status())}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n },\n});\n\nconst loadStatus = async (api: TuiPluginApi): Promise<StatusState> => {\n try {\n const snapshot = await resolvePluginStatusSnapshot({\n worktree: api.state.path.worktree,\n directory: api.state.path.directory,\n signal: AbortSignal.timeout(STATUS_TIMEOUT_MS),\n });\n\n return {\n kind: 'ready',\n snapshot,\n };\n } catch (error) {\n return {\n kind: 'error',\n message: error instanceof Error ? error.message : 'Unable to load opencode-wizard status.',\n };\n }\n};\n\nconst tui: TuiPlugin = async (api) => {\n const [status, setStatus] = createSignal<StatusState>({ kind: 'loading' });\n\n api.slots.register(createWizardStatusSlot(api, status));\n void loadStatus(api).then(setStatus);\n};\n\nexport default {\n id: PLUGIN_ID,\n tui,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createMemo","createSignal","PLUGIN_ID","resolvePluginStatusSnapshot","STATUS_TIMEOUT_MS","getSkillDisplayName","skill","artifactName","skillName","skillSlug","getSkillPolicy","policyLabel","installPolicy","formatSkillTags","tagNames","tags","map","tag","label","slug","filter","length","join","formatSkillsCatalogUnavailableMessage","snapshot","catalog","status","message","formatSkillOptionDescription","description","artifactDescription","contextKind","toUpperCase","version","Row","props","_el$","_$createElement","_el$2","_el$3","_$createTextNode","_el$4","_$insertNode","_$setProp","_$insert","value","_$effect","_p$","_v$","labelColor","_v$2","valueColor","e","t","undefined","Panel","_el$5","_el$6","_el$7","title","children","_v$3","onPress","_v$4","theme","text","openSkillsDialog","api","current","kind","options","skills","ui","dialog","replace","_$createComponent","DialogSelect","placeholder","onSelect","option","selectedSkill","find","clear","Dialog","size","onClose","_el$8","_el$9","_el$0","_el$10","_v$5","_v$6","warning","SkillsRows","statusContent","currentStatus","_el$11","_$p","textMuted","_el$13","_el$14","ReadyRows","_el$15","CatalogBullet","_el$16","_el$17","_el$18","counts","assignmentCounts","_el$19","_el$20","publishedSkillCount","global","project","createWizardStatusSlot","order","slots","home_bottom","sidebar_content","_ctx","_value","loadStatus","worktree","state","path","directory","signal","AbortSignal","timeout","error","Error","tui","setStatus","register","then","id"],"sources":["../src/tui.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/solid */\nimport type { RGBA } from '@opentui/core';\nimport { createMemo, createSignal } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n PLUGIN_ID,\n resolvePluginStatusSnapshot,\n type PluginStatusSnapshot,\n} from './server.js';\n\ntype StatusState =\n | {\n kind: 'loading';\n }\n | {\n kind: 'ready';\n snapshot: PluginStatusSnapshot;\n }\n | {\n kind: 'error';\n message: string;\n };\n\ntype WizardTheme = {\n text: string | RGBA | undefined;\n textMuted: string | RGBA | undefined;\n warning: string | RGBA | undefined;\n};\n\ntype DialogSelectOption = {\n title: string;\n value: string;\n description: string;\n};\n\ntype TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui: {\n dialog: {\n replace: (render: () => JSX.Element) => void;\n clear: () => void;\n };\n DialogSelect: (props: {\n title: string;\n placeholder: string;\n options: DialogSelectOption[];\n onSelect: (option: DialogSelectOption) => void;\n }) => JSX.Element;\n Dialog: (props: { size: 'medium'; onClose: () => void; children: JSX.Element }) => JSX.Element;\n };\n slots: {\n register: (slot: TuiSlotPlugin) => void;\n };\n state: {\n path: {\n worktree: string;\n directory: string;\n };\n };\n};\n\ntype TuiSlotContext = unknown;\n\ntype TuiSlotPlugin = {\n order: number;\n slots: {\n home_bottom: () => JSX.Element;\n sidebar_content: (ctx: TuiSlotContext, value: { session_id: string }) => JSX.Element;\n };\n};\n\ntype TuiPlugin = (api: TuiPluginApi) => void | Promise<void>;\n\nconst STATUS_TIMEOUT_MS = 5_000;\ntype PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\n\nconst getSkillDisplayName = (skill: PublishedSkillSummary): string => skill.artifactName || skill.skillName || skill.skillSlug;\n\nconst getSkillPolicy = (skill: PublishedSkillSummary): string => skill.policyLabel || skill.installPolicy;\n\nconst formatSkillTags = (skill: PublishedSkillSummary): string => {\n const tagNames = skill.tags.map((tag) => tag.label || tag.slug).filter((tag) => tag.length > 0);\n if (tagNames.length === 0) return 'none';\n\n return tagNames.join(', ');\n};\n\nconst formatSkillsCatalogUnavailableMessage = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n return 'skills catalog locked until interactive fetch authenticates';\n }\n\n if (!snapshot.catalog) return `skills catalog unavailable: ${snapshot.message ?? snapshot.status}`;\n\n return 'skills catalog unavailable';\n};\n\nconst formatSkillOptionDescription = (skill: PublishedSkillSummary): string => {\n const description = skill.artifactDescription || skill.skillSlug;\n return `${skill.contextKind.toUpperCase()} · ${getSkillPolicy(skill)} · v${skill.version || 'unknown'} · ${skill.skillName || skill.skillSlug} · ${formatSkillTags(skill)} · ${description}`;\n};\n\nconst Row = (props: {\n label: string;\n value: string;\n labelColor: string | RGBA | undefined;\n valueColor: string | RGBA | undefined;\n}) => (\n <box width=\"100%\" flexDirection=\"row\" overflow=\"hidden\">\n <text fg={props.labelColor} flexShrink={0} wrapMode=\"none\">\n {props.label}: \n </text>\n <text fg={props.valueColor} flexGrow={1} overflow=\"hidden\" wrapMode=\"none\">\n {props.value}\n </text>\n </box>\n);\n\nconst Panel = (props: {\n title: string;\n theme: TuiPluginApi['theme']['current'];\n onPress?: () => void;\n children: JSX.Element;\n}) => (\n <box\n width=\"100%\"\n flexDirection=\"column\"\n paddingRight={1}\n onMouseUp={props.onPress}\n >\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{props.title}</b>\n </text>\n {props.children}\n </box>\n);\n\nconst openSkillsDialog = (api: TuiPluginApi, status: StatusState) => {\n const theme = api.theme.current;\n\n if (status.kind === 'ready' && status.snapshot.catalog) {\n const options = status.snapshot.catalog.skills.map((skill) => ({\n title: getSkillDisplayName(skill),\n value: skill.skillSlug,\n description: formatSkillOptionDescription(skill),\n }));\n\n api.ui.dialog.replace(() => (\n <api.ui.DialogSelect\n title=\"Wizard skills catalog\"\n placeholder=\"Filter loaded skills\"\n options={options}\n onSelect={(option) => {\n const selectedSkill = status.snapshot.catalog?.skills.find((skill) => skill.skillSlug === option.value);\n if (!selectedSkill) return;\n\n api.ui.dialog.clear();\n }}\n />\n ));\n return;\n }\n\n const message =\n status.kind === 'loading'\n ? 'Skills catalog is loading. Try again after the catalog event completes.'\n : status.kind === 'error'\n ? `Skills catalog unavailable: ${status.message}`\n : status.snapshot.status === 'missing_auth'\n ? 'Skills catalog is locked until interactive fetch authenticates.'\n : (status.snapshot.message ?? 'Skills catalog unavailable.');\n\n api.ui.dialog.replace(() => (\n <api.ui.Dialog\n size=\"medium\"\n onClose={() => {\n api.ui.dialog.clear();\n }}\n >\n <box width=\"100%\" flexDirection=\"column\" paddingLeft={1} paddingRight={1}>\n <text fg={theme.text} wrapMode=\"none\">\n <b>Wizard skills catalog</b>\n </text>\n <text fg={theme.warning} marginTop={1}>\n {message}\n </text>\n </box>\n </api.ui.Dialog>\n ));\n};\n\nconst SkillsRows = (props: { api: TuiPluginApi; status: () => StatusState }) => {\n const theme = createMemo(() => props.api.theme.current);\n const statusContent = () => {\n const currentStatus = props.status();\n\n if (currentStatus.kind === 'loading') {\n return (\n <text fg={theme().textMuted} wrapMode=\"none\" overflow=\"hidden\">\n loading wizard skills catalog…\n </text>\n );\n }\n\n if (currentStatus.kind === 'error') {\n return (\n <text fg={theme().warning} wrapMode=\"none\" overflow=\"hidden\">\n skills catalog unavailable: {currentStatus.message}\n </text>\n );\n }\n\n return <ReadyRows snapshot={currentStatus.snapshot} theme={theme()} />;\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n {statusContent()}\n </box>\n );\n};\n\nconst CatalogBullet = (props: { value: string; theme: TuiPluginApi['theme']['current'] }) => (\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n {' - '}{props.value}\n </text>\n);\n\nconst ReadyRows = (props: { snapshot: PluginStatusSnapshot; theme: TuiPluginApi['theme']['current'] }) => {\n if (!props.snapshot.catalog) {\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <Row label=\"catalog\" value={formatSkillsCatalogUnavailableMessage(props.snapshot)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n </box>\n );\n }\n\n const counts = props.snapshot.catalog.assignmentCounts;\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n catalog:\n </text>\n <CatalogBullet value={`${props.snapshot.catalog.publishedSkillCount} loaded`} theme={props.theme} />\n <CatalogBullet value={`${counts.global} global`} theme={props.theme} />\n <CatalogBullet value={`${counts.project} workspace`} theme={props.theme} />\n </box>\n );\n};\n\nconst createWizardStatusSlot = (api: TuiPluginApi, status: () => StatusState): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onPress={() => openSkillsDialog(api, status())}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n sidebar_content: (_ctx: TuiSlotContext, _value: { session_id: string }) => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onPress={() => openSkillsDialog(api, status())}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n },\n});\n\nconst loadStatus = async (api: TuiPluginApi): Promise<StatusState> => {\n try {\n const snapshot = await resolvePluginStatusSnapshot({\n worktree: api.state.path.worktree,\n directory: api.state.path.directory,\n signal: AbortSignal.timeout(STATUS_TIMEOUT_MS),\n });\n\n return {\n kind: 'ready',\n snapshot,\n };\n } catch (error) {\n return {\n kind: 'error',\n message: error instanceof Error ? error.message : 'Unable to load opencode-wizard status.',\n };\n }\n};\n\nconst tui: TuiPlugin = async (api) => {\n const [status, setStatus] = createSignal<StatusState>({ kind: 'loading' });\n\n api.slots.register(createWizardStatusSlot(api, status));\n void loadStatus(api).then(setStatus);\n};\n\nexport default {\n id: PLUGIN_ID,\n tui,\n};\n"],"mappings":"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","ignoreList":[]}
|