@aexol/opencode-wizard 0.2.0 → 0.2.1

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.
@@ -5,6 +5,93 @@ import path from 'node:path';
5
5
  const DEPLOY_BACKEND_ORIGIN = 'https://opencode-wizard.aexol.work';
6
6
  const LOCAL_OVERRIDE_BACKEND_ORIGIN = 'http://localhost:19876';
7
7
  const BACKEND_ENV_KEYS = ['OPENCODE_WIZARD_BACKEND_ORIGIN', 'APP_URL', 'PORT'];
8
+ const assertEqual = (label, actual, expected) => {
9
+ if (actual === expected) return;
10
+ throw new Error(`${label} mismatch: expected ${String(expected)}, received ${String(actual)}`);
11
+ };
12
+ const createSkillItem = (index, assignmentSource, slugPrefix) => ({
13
+ assignmentSource,
14
+ assignmentType: 'PATH',
15
+ scopePath: '.',
16
+ includeChildren: true,
17
+ skill: {
18
+ id: `skill-${slugPrefix}-${index}`,
19
+ slug: `${slugPrefix}-${index}`,
20
+ name: `${slugPrefix}-${index}`,
21
+ summary: `${slugPrefix} skill ${index}`,
22
+ whenToUse: `Use for ${slugPrefix} smoke coverage ${index}.`,
23
+ status: 'ACTIVE',
24
+ installPolicy: assignmentSource === 'GLOBAL' ? 'GLOBAL_CONTEXT' : 'PROJECT_INSTALLABLE',
25
+ tags: []
26
+ },
27
+ skillVersion: {
28
+ id: `version-${slugPrefix}-${index}`,
29
+ version: '1.0.0',
30
+ title: 'Initial',
31
+ summary: 'Initial publish',
32
+ status: 'PUBLISHED'
33
+ },
34
+ publishedArtifact: {
35
+ id: `artifact-${slugPrefix}-${index}`,
36
+ frontmatterName: `${slugPrefix}-${index}`,
37
+ frontmatterDescription: `${slugPrefix} smoke skill`,
38
+ checksum: `checksum-${slugPrefix}-${index}`,
39
+ publishedAt: '2026-04-22T00:00:00.000Z',
40
+ fileCount: 1
41
+ }
42
+ });
43
+ const createInstallableSkillItem = index => {
44
+ const item = createSkillItem(index, 'CATALOG', 'installable-skill');
45
+ return {
46
+ skill: item.skill,
47
+ skillVersion: item.skillVersion,
48
+ publishedArtifact: item.publishedArtifact
49
+ };
50
+ };
51
+ const createEffectiveSkillsSmokePayload = () => ({
52
+ workspace: {
53
+ id: 'workspace-effective-counts',
54
+ slug: 'opencode-wizard',
55
+ name: 'opencode-wizard',
56
+ repositoryUrl: 'https://example.com/opencode-wizard.git',
57
+ defaultBranch: 'main',
58
+ status: 'ACTIVE'
59
+ },
60
+ directoryPath: '.',
61
+ skills: [...Array.from({
62
+ length: 19
63
+ }, (_, index) => createSkillItem(index + 1, 'GLOBAL', 'global-skill')), ...Array.from({
64
+ length: 4
65
+ }, (_, index) => createSkillItem(index + 1, 'USER_GLOBAL', 'user-skill'))],
66
+ catalogSkills: Array.from({
67
+ length: 11
68
+ }, (_, index) => createInstallableSkillItem(index + 1)),
69
+ userPreferences: {
70
+ scopeKey: 'workspace:workspace-effective-counts',
71
+ userKey: 'user-1',
72
+ ignoredSkills: []
73
+ }
74
+ });
75
+ const assertEffectiveSkillGrouping = payload => {
76
+ const catalog = toPublishedSkillCatalog(payload);
77
+ const globalSkills = catalog.skills.filter(skill => skill.contextKind === 'global' && skill.assignmentSource === 'GLOBAL');
78
+ const userSkills = catalog.skills.filter(skill => skill.assignmentSource === 'USER_GLOBAL');
79
+ const installableSkillCount = payload.catalogSkills.length;
80
+ assertEqual('published skill count', catalog.publishedSkillCount, 23);
81
+ assertEqual('global assignment count', catalog.assignmentCounts.global, 19);
82
+ assertEqual('project assignment count', catalog.assignmentCounts.project, 0);
83
+ assertEqual('user assignment count', catalog.assignmentCounts.user, 4);
84
+ assertEqual('other assignment count', catalog.assignmentCounts.other, 0);
85
+ assertEqual('global grouped skill count', globalSkills.length, 19);
86
+ assertEqual('user grouped skill count', userSkills.length, 4);
87
+ assertEqual('installable/not installed catalog count', installableSkillCount, 11);
88
+ return {
89
+ globalAssignmentCount: catalog.assignmentCounts.global,
90
+ projectAssignmentCount: catalog.assignmentCounts.project,
91
+ userAssignmentCount: catalog.assignmentCounts.user,
92
+ installableNotInstalledCount: installableSkillCount
93
+ };
94
+ };
8
95
  const withBackendEnv = async (env, callback) => {
9
96
  const previousValues = new Map();
10
97
  for (const key of BACKEND_ENV_KEYS) {
@@ -58,69 +145,19 @@ const assertBackendOriginResolution = async () => {
58
145
  };
59
146
  };
60
147
  const run = async () => {
61
- const payload = {
62
- workspace: {
63
- id: 'workspace-1',
64
- slug: 'opencode-wizard',
65
- name: 'opencode-wizard',
66
- repositoryUrl: 'https://example.com/opencode-wizard.git',
67
- defaultBranch: 'main',
68
- status: 'ACTIVE'
69
- },
70
- directoryPath: '.',
71
- skills: [{
72
- assignmentSource: 'WORKSPACE',
73
- assignmentType: 'PATH',
74
- scopePath: '.',
75
- includeChildren: true,
76
- skill: {
77
- id: 'skill-1',
78
- slug: 'backend-auth',
79
- name: 'backend-auth',
80
- summary: 'Backend auth skill',
81
- whenToUse: 'Use for JWT cookie sessions and protected backend resolver work.',
82
- status: 'ACTIVE',
83
- installPolicy: 'PROJECT_INSTALLABLE',
84
- tags: [{
85
- id: 'tag-1',
86
- slug: 'auth',
87
- label: 'Auth',
88
- description: null,
89
- facet: {
90
- id: 'facet-1',
91
- slug: 'capability',
92
- label: 'Capability',
93
- description: null
94
- }
95
- }]
96
- },
97
- skillVersion: {
98
- id: 'version-1',
99
- version: '1.0.0',
100
- title: 'Initial',
101
- summary: 'Initial publish',
102
- status: 'PUBLISHED'
103
- },
104
- publishedArtifact: {
105
- id: 'artifact-1',
106
- frontmatterName: 'backend-auth',
107
- frontmatterDescription: 'JWT auth skill',
108
- checksum: 'checksum-1',
109
- publishedAt: '2026-04-22T00:00:00.000Z',
110
- fileCount: 2
111
- }
112
- }],
113
- catalogSkills: [],
114
- userPreferences: {
115
- scopeKey: 'workspace:workspace-1',
116
- userKey: 'user-1',
117
- ignoredSkills: []
118
- }
119
- };
148
+ const payload = createEffectiveSkillsSmokePayload();
149
+ const detailSkillItem = payload.skills[0];
150
+ detailSkillItem.skill.slug = 'backend-auth';
151
+ detailSkillItem.skill.name = 'backend-auth';
152
+ detailSkillItem.skill.summary = 'Backend auth skill';
153
+ detailSkillItem.skill.whenToUse = 'Use for JWT cookie sessions and protected backend resolver work.';
154
+ detailSkillItem.publishedArtifact.frontmatterName = 'backend-auth';
155
+ detailSkillItem.publishedArtifact.frontmatterDescription = 'JWT auth skill';
156
+ detailSkillItem.publishedArtifact.fileCount = 2;
120
157
  const detailItem = {
121
- ...payload.skills[0],
158
+ ...detailSkillItem,
122
159
  publishedArtifact: {
123
- ...payload.skills[0].publishedArtifact,
160
+ ...detailSkillItem.publishedArtifact,
124
161
  markdownBody: '## Mock skill\n\nThis is a mock published skill.',
125
162
  renderedContent: '<h2>Mock skill</h2>',
126
163
  files: [{
@@ -145,6 +182,7 @@ const run = async () => {
145
182
  const config = await resolveConfig(process.cwd());
146
183
  const backendOriginSmoke = await assertBackendOriginResolution();
147
184
  const catalog = toPublishedSkillCatalog(payload);
185
+ const effectiveSkillGroupingSmoke = assertEffectiveSkillGrouping(createEffectiveSkillsSmokePayload());
148
186
  const selection = selectPublishedSkills(payload, ['backend-auth', 'missing-skill']);
149
187
  const detail = selection.selectedItems[0] ? toPublishedSkillDetail(detailItem) : null;
150
188
  const preview = buildSkillMarkdown(detailItem).split('\n').slice(0, 6);
@@ -152,6 +190,7 @@ const run = async () => {
152
190
  runtimeMode: catalog.runtimeMode,
153
191
  graphqlUrl: config.graphqlUrl,
154
192
  backendOriginSmoke,
193
+ effectiveSkillGroupingSmoke,
155
194
  publishedSkillCount: catalog.publishedSkillCount,
156
195
  availableTools: catalog.availableTools,
157
196
  facets: catalog.facets,
@@ -1 +1 @@
1
- {"version":3,"names":["buildSkillMarkdown","resolveConfig","selectPublishedSkills","toPublishedSkillCatalog","toPublishedSkillDetail","fs","os","path","DEPLOY_BACKEND_ORIGIN","LOCAL_OVERRIDE_BACKEND_ORIGIN","BACKEND_ENV_KEYS","withBackendEnv","env","callback","previousValues","Map","key","set","process","value","Object","entries","undefined","assertBackendOriginResolution","isolatedWorktree","mkdtemp","join","tmpdir","defaultConfig","backendOrigin","Error","portOnlyConfig","PORT","appUrlPlaceholderConfig","APP_URL","overrideConfig","OPENCODE_WIZARD_BACKEND_ORIGIN","defaultBackendOrigin","portOnlyBackendOrigin","appUrlPlaceholderBackendOrigin","explicitOverrideBackendOrigin","run","payload","workspace","id","slug","name","repositoryUrl","defaultBranch","status","directoryPath","skills","assignmentSource","assignmentType","scopePath","includeChildren","skill","summary","whenToUse","installPolicy","tags","label","description","facet","skillVersion","version","title","publishedArtifact","frontmatterName","frontmatterDescription","checksum","publishedAt","fileCount","catalogSkills","userPreferences","scopeKey","userKey","ignoredSkills","detailItem","markdownBody","renderedContent","files","relativePath","contentType","content","size","sortOrder","config","cwd","backendOriginSmoke","catalog","selection","detail","selectedItems","preview","split","slice","console","log","JSON","stringify","runtimeMode","graphqlUrl","publishedSkillCount","availableTools","facets","selectedSkillCount","length","missingSkills","missingIdentifiers","selectedSkillSlug","skillSlug","selectedSkillTags","markdownDocumentIncludesFrontmatter","markdownDocument","startsWith","resourceFileCount","resources","markdownBodyIncludesContent","includes"],"sources":["../src/smoke-published-skills.ts"],"sourcesContent":["import {\n buildSkillMarkdown,\n resolveConfig,\n selectPublishedSkills,\n toPublishedSkillCatalog,\n toPublishedSkillDetail,\n type PublishedSkillCatalogPayload,\n type PublishedSkillDetailItem,\n} from './server.js';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nconst DEPLOY_BACKEND_ORIGIN = 'https://opencode-wizard.aexol.work';\nconst LOCAL_OVERRIDE_BACKEND_ORIGIN = 'http://localhost:19876';\n\ntype BackendEnvKey = 'OPENCODE_WIZARD_BACKEND_ORIGIN' | 'APP_URL' | 'PORT';\n\nconst BACKEND_ENV_KEYS: BackendEnvKey[] = ['OPENCODE_WIZARD_BACKEND_ORIGIN', 'APP_URL', 'PORT'];\n\nconst withBackendEnv = async <TResult>(\n env: Partial<Record<BackendEnvKey, string>>,\n callback: () => Promise<TResult>,\n): Promise<TResult> => {\n const previousValues = new Map<BackendEnvKey, string | undefined>();\n\n for (const key of BACKEND_ENV_KEYS) {\n previousValues.set(key, process.env[key]);\n delete process.env[key];\n }\n\n for (const [key, value] of Object.entries(env)) {\n process.env[key as BackendEnvKey] = value;\n }\n\n try {\n return await callback();\n } finally {\n for (const [key, value] of previousValues) {\n if (value === undefined) {\n delete process.env[key];\n continue;\n }\n\n process.env[key] = value;\n }\n }\n};\n\nconst assertBackendOriginResolution = async () => {\n const isolatedWorktree = await fs.mkdtemp(path.join(os.tmpdir(), 'opencode-wizard-plugin-smoke-'));\n\n const defaultConfig = await withBackendEnv({}, () => resolveConfig(isolatedWorktree));\n if (defaultConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(`Expected default backend origin ${DEPLOY_BACKEND_ORIGIN}, received ${defaultConfig.backendOrigin}`);\n }\n\n const portOnlyConfig = await withBackendEnv({ PORT: '19876' }, () => resolveConfig(isolatedWorktree));\n if (portOnlyConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(`Expected PORT-only backend origin to stay ${DEPLOY_BACKEND_ORIGIN}, received ${portOnlyConfig.backendOrigin}`);\n }\n\n const appUrlPlaceholderConfig = await withBackendEnv({ APP_URL: 'https://yourdomain.com' }, () =>\n resolveConfig(isolatedWorktree),\n );\n if (appUrlPlaceholderConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(\n `Expected APP_URL placeholder backend origin to stay ${DEPLOY_BACKEND_ORIGIN}, received ${appUrlPlaceholderConfig.backendOrigin}`,\n );\n }\n\n const overrideConfig = await withBackendEnv({ OPENCODE_WIZARD_BACKEND_ORIGIN: LOCAL_OVERRIDE_BACKEND_ORIGIN }, () =>\n resolveConfig(isolatedWorktree),\n );\n if (overrideConfig.backendOrigin !== LOCAL_OVERRIDE_BACKEND_ORIGIN) {\n throw new Error(`Expected explicit backend override ${LOCAL_OVERRIDE_BACKEND_ORIGIN}, received ${overrideConfig.backendOrigin}`);\n }\n\n return {\n defaultBackendOrigin: defaultConfig.backendOrigin,\n portOnlyBackendOrigin: portOnlyConfig.backendOrigin,\n appUrlPlaceholderBackendOrigin: appUrlPlaceholderConfig.backendOrigin,\n explicitOverrideBackendOrigin: overrideConfig.backendOrigin,\n };\n};\n\nconst run = async () => {\n const payload: PublishedSkillCatalogPayload = {\n workspace: {\n id: 'workspace-1',\n slug: 'opencode-wizard',\n name: 'opencode-wizard',\n repositoryUrl: 'https://example.com/opencode-wizard.git',\n defaultBranch: 'main',\n status: 'ACTIVE',\n },\n directoryPath: '.',\n skills: [\n {\n assignmentSource: 'WORKSPACE',\n assignmentType: 'PATH',\n scopePath: '.',\n includeChildren: true,\n skill: {\n id: 'skill-1',\n slug: 'backend-auth',\n name: 'backend-auth',\n summary: 'Backend auth skill',\n whenToUse: 'Use for JWT cookie sessions and protected backend resolver work.',\n status: 'ACTIVE',\n installPolicy: 'PROJECT_INSTALLABLE',\n tags: [\n {\n id: 'tag-1',\n slug: 'auth',\n label: 'Auth',\n description: null,\n facet: {\n id: 'facet-1',\n slug: 'capability',\n label: 'Capability',\n description: null,\n },\n },\n ],\n },\n skillVersion: {\n id: 'version-1',\n version: '1.0.0',\n title: 'Initial',\n summary: 'Initial publish',\n status: 'PUBLISHED',\n },\n publishedArtifact: {\n id: 'artifact-1',\n frontmatterName: 'backend-auth',\n frontmatterDescription: 'JWT auth skill',\n checksum: 'checksum-1',\n publishedAt: '2026-04-22T00:00:00.000Z',\n fileCount: 2,\n },\n },\n ],\n catalogSkills: [],\n userPreferences: {\n scopeKey: 'workspace:workspace-1',\n userKey: 'user-1',\n ignoredSkills: [],\n },\n };\n const detailItem: PublishedSkillDetailItem = {\n ...payload.skills[0],\n publishedArtifact: {\n ...payload.skills[0].publishedArtifact,\n markdownBody: '## Mock skill\\n\\nThis is a mock published skill.',\n renderedContent: '<h2>Mock skill</h2>',\n files: [\n {\n id: 'artifact-file-1',\n relativePath: 'SKILL.md',\n contentType: 'text/markdown; charset=utf-8',\n content: '---\\nname: \"backend-auth\"\\ndescription: \"JWT auth skill\"\\n---\\n\\n## Mock skill\\n',\n checksum: 'file-checksum-1',\n size: 74,\n sortOrder: 0,\n },\n {\n id: 'artifact-file-2',\n relativePath: 'resource.md',\n contentType: 'text/markdown; charset=utf-8',\n content: '# Resource\\n',\n checksum: 'file-checksum-2',\n size: 11,\n sortOrder: 1,\n },\n ],\n },\n };\n\n const config = await resolveConfig(process.cwd());\n const backendOriginSmoke = await assertBackendOriginResolution();\n\n const catalog = toPublishedSkillCatalog(payload);\n const selection = selectPublishedSkills(payload, ['backend-auth', 'missing-skill']);\n const detail = selection.selectedItems[0] ? toPublishedSkillDetail(detailItem) : null;\n const preview = buildSkillMarkdown(detailItem).split('\\n').slice(0, 6);\n\n console.log(\n JSON.stringify(\n {\n runtimeMode: catalog.runtimeMode,\n graphqlUrl: config.graphqlUrl,\n backendOriginSmoke,\n publishedSkillCount: catalog.publishedSkillCount,\n availableTools: catalog.availableTools,\n facets: catalog.facets,\n selectedSkillCount: selection.selectedItems.length,\n missingSkills: selection.missingIdentifiers,\n selectedSkillSlug: detail?.skillSlug ?? null,\n selectedSkillTags: detail?.tags ?? [],\n markdownDocumentIncludesFrontmatter: detail?.markdownDocument.startsWith('---') ?? false,\n resourceFileCount: detail?.resources.length ?? 0,\n preview,\n markdownBodyIncludesContent: detail?.markdownBody.includes('This is a mock published skill.') ?? false,\n },\n null,\n 2,\n ),\n );\n};\n\nvoid run();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["buildSkillMarkdown","resolveConfig","selectPublishedSkills","toPublishedSkillCatalog","toPublishedSkillDetail","fs","os","path","DEPLOY_BACKEND_ORIGIN","LOCAL_OVERRIDE_BACKEND_ORIGIN","BACKEND_ENV_KEYS","assertEqual","label","actual","expected","Error","String","createSkillItem","index","assignmentSource","slugPrefix","assignmentType","scopePath","includeChildren","skill","id","slug","name","summary","whenToUse","status","installPolicy","tags","skillVersion","version","title","publishedArtifact","frontmatterName","frontmatterDescription","checksum","publishedAt","fileCount","createInstallableSkillItem","item","createEffectiveSkillsSmokePayload","workspace","repositoryUrl","defaultBranch","directoryPath","skills","Array","from","length","_","catalogSkills","userPreferences","scopeKey","userKey","ignoredSkills","assertEffectiveSkillGrouping","payload","catalog","globalSkills","filter","contextKind","userSkills","installableSkillCount","publishedSkillCount","assignmentCounts","global","project","user","other","globalAssignmentCount","projectAssignmentCount","userAssignmentCount","installableNotInstalledCount","withBackendEnv","env","callback","previousValues","Map","key","set","process","value","Object","entries","undefined","assertBackendOriginResolution","isolatedWorktree","mkdtemp","join","tmpdir","defaultConfig","backendOrigin","portOnlyConfig","PORT","appUrlPlaceholderConfig","APP_URL","overrideConfig","OPENCODE_WIZARD_BACKEND_ORIGIN","defaultBackendOrigin","portOnlyBackendOrigin","appUrlPlaceholderBackendOrigin","explicitOverrideBackendOrigin","run","detailSkillItem","detailItem","markdownBody","renderedContent","files","relativePath","contentType","content","size","sortOrder","config","cwd","backendOriginSmoke","effectiveSkillGroupingSmoke","selection","detail","selectedItems","preview","split","slice","console","log","JSON","stringify","runtimeMode","graphqlUrl","availableTools","facets","selectedSkillCount","missingSkills","missingIdentifiers","selectedSkillSlug","skillSlug","selectedSkillTags","markdownDocumentIncludesFrontmatter","markdownDocument","startsWith","resourceFileCount","resources","markdownBodyIncludesContent","includes"],"sources":["../src/smoke-published-skills.ts"],"sourcesContent":["import {\n buildSkillMarkdown,\n resolveConfig,\n selectPublishedSkills,\n toPublishedSkillCatalog,\n toPublishedSkillDetail,\n type PublishedSkillCatalogPayload,\n type PublishedSkillCatalogItem,\n type PublishedSkillDetailItem,\n type PublishedSkillInstallableCatalogItem,\n} from './server.js';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nconst DEPLOY_BACKEND_ORIGIN = 'https://opencode-wizard.aexol.work';\nconst LOCAL_OVERRIDE_BACKEND_ORIGIN = 'http://localhost:19876';\n\ntype BackendEnvKey = 'OPENCODE_WIZARD_BACKEND_ORIGIN' | 'APP_URL' | 'PORT';\n\nconst BACKEND_ENV_KEYS: BackendEnvKey[] = ['OPENCODE_WIZARD_BACKEND_ORIGIN', 'APP_URL', 'PORT'];\n\nconst assertEqual = <TValue>(label: string, actual: TValue, expected: TValue): void => {\n if (actual === expected) return;\n\n throw new Error(`${label} mismatch: expected ${String(expected)}, received ${String(actual)}`);\n};\n\nconst createSkillItem = (index: number, assignmentSource: string, slugPrefix: string): PublishedSkillCatalogItem => ({\n assignmentSource,\n assignmentType: 'PATH',\n scopePath: '.',\n includeChildren: true,\n skill: {\n id: `skill-${slugPrefix}-${index}`,\n slug: `${slugPrefix}-${index}`,\n name: `${slugPrefix}-${index}`,\n summary: `${slugPrefix} skill ${index}`,\n whenToUse: `Use for ${slugPrefix} smoke coverage ${index}.`,\n status: 'ACTIVE',\n installPolicy: assignmentSource === 'GLOBAL' ? 'GLOBAL_CONTEXT' : 'PROJECT_INSTALLABLE',\n tags: [],\n },\n skillVersion: {\n id: `version-${slugPrefix}-${index}`,\n version: '1.0.0',\n title: 'Initial',\n summary: 'Initial publish',\n status: 'PUBLISHED',\n },\n publishedArtifact: {\n id: `artifact-${slugPrefix}-${index}`,\n frontmatterName: `${slugPrefix}-${index}`,\n frontmatterDescription: `${slugPrefix} smoke skill`,\n checksum: `checksum-${slugPrefix}-${index}`,\n publishedAt: '2026-04-22T00:00:00.000Z',\n fileCount: 1,\n },\n});\n\nconst createInstallableSkillItem = (index: number): PublishedSkillInstallableCatalogItem => {\n const item = createSkillItem(index, 'CATALOG', 'installable-skill');\n\n return {\n skill: item.skill,\n skillVersion: item.skillVersion,\n publishedArtifact: item.publishedArtifact,\n };\n};\n\nconst createEffectiveSkillsSmokePayload = (): PublishedSkillCatalogPayload => ({\n workspace: {\n id: 'workspace-effective-counts',\n slug: 'opencode-wizard',\n name: 'opencode-wizard',\n repositoryUrl: 'https://example.com/opencode-wizard.git',\n defaultBranch: 'main',\n status: 'ACTIVE',\n },\n directoryPath: '.',\n skills: [\n ...Array.from({ length: 19 }, (_, index) => createSkillItem(index + 1, 'GLOBAL', 'global-skill')),\n ...Array.from({ length: 4 }, (_, index) => createSkillItem(index + 1, 'USER_GLOBAL', 'user-skill')),\n ],\n catalogSkills: Array.from({ length: 11 }, (_, index) => createInstallableSkillItem(index + 1)),\n userPreferences: {\n scopeKey: 'workspace:workspace-effective-counts',\n userKey: 'user-1',\n ignoredSkills: [],\n },\n});\n\nconst assertEffectiveSkillGrouping = (payload: PublishedSkillCatalogPayload) => {\n const catalog = toPublishedSkillCatalog(payload);\n const globalSkills = catalog.skills.filter((skill) => skill.contextKind === 'global' && skill.assignmentSource === 'GLOBAL');\n const userSkills = catalog.skills.filter((skill) => skill.assignmentSource === 'USER_GLOBAL');\n const installableSkillCount = payload.catalogSkills.length;\n\n assertEqual('published skill count', catalog.publishedSkillCount, 23);\n assertEqual('global assignment count', catalog.assignmentCounts.global, 19);\n assertEqual('project assignment count', catalog.assignmentCounts.project, 0);\n assertEqual('user assignment count', catalog.assignmentCounts.user, 4);\n assertEqual('other assignment count', catalog.assignmentCounts.other, 0);\n assertEqual('global grouped skill count', globalSkills.length, 19);\n assertEqual('user grouped skill count', userSkills.length, 4);\n assertEqual('installable/not installed catalog count', installableSkillCount, 11);\n\n return {\n globalAssignmentCount: catalog.assignmentCounts.global,\n projectAssignmentCount: catalog.assignmentCounts.project,\n userAssignmentCount: catalog.assignmentCounts.user,\n installableNotInstalledCount: installableSkillCount,\n };\n};\n\nconst withBackendEnv = async <TResult>(\n env: Partial<Record<BackendEnvKey, string>>,\n callback: () => Promise<TResult>,\n): Promise<TResult> => {\n const previousValues = new Map<BackendEnvKey, string | undefined>();\n\n for (const key of BACKEND_ENV_KEYS) {\n previousValues.set(key, process.env[key]);\n delete process.env[key];\n }\n\n for (const [key, value] of Object.entries(env)) {\n process.env[key as BackendEnvKey] = value;\n }\n\n try {\n return await callback();\n } finally {\n for (const [key, value] of previousValues) {\n if (value === undefined) {\n delete process.env[key];\n continue;\n }\n\n process.env[key] = value;\n }\n }\n};\n\nconst assertBackendOriginResolution = async () => {\n const isolatedWorktree = await fs.mkdtemp(path.join(os.tmpdir(), 'opencode-wizard-plugin-smoke-'));\n\n const defaultConfig = await withBackendEnv({}, () => resolveConfig(isolatedWorktree));\n if (defaultConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(`Expected default backend origin ${DEPLOY_BACKEND_ORIGIN}, received ${defaultConfig.backendOrigin}`);\n }\n\n const portOnlyConfig = await withBackendEnv({ PORT: '19876' }, () => resolveConfig(isolatedWorktree));\n if (portOnlyConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(`Expected PORT-only backend origin to stay ${DEPLOY_BACKEND_ORIGIN}, received ${portOnlyConfig.backendOrigin}`);\n }\n\n const appUrlPlaceholderConfig = await withBackendEnv({ APP_URL: 'https://yourdomain.com' }, () =>\n resolveConfig(isolatedWorktree),\n );\n if (appUrlPlaceholderConfig.backendOrigin !== DEPLOY_BACKEND_ORIGIN) {\n throw new Error(\n `Expected APP_URL placeholder backend origin to stay ${DEPLOY_BACKEND_ORIGIN}, received ${appUrlPlaceholderConfig.backendOrigin}`,\n );\n }\n\n const overrideConfig = await withBackendEnv({ OPENCODE_WIZARD_BACKEND_ORIGIN: LOCAL_OVERRIDE_BACKEND_ORIGIN }, () =>\n resolveConfig(isolatedWorktree),\n );\n if (overrideConfig.backendOrigin !== LOCAL_OVERRIDE_BACKEND_ORIGIN) {\n throw new Error(`Expected explicit backend override ${LOCAL_OVERRIDE_BACKEND_ORIGIN}, received ${overrideConfig.backendOrigin}`);\n }\n\n return {\n defaultBackendOrigin: defaultConfig.backendOrigin,\n portOnlyBackendOrigin: portOnlyConfig.backendOrigin,\n appUrlPlaceholderBackendOrigin: appUrlPlaceholderConfig.backendOrigin,\n explicitOverrideBackendOrigin: overrideConfig.backendOrigin,\n };\n};\n\nconst run = async () => {\n const payload: PublishedSkillCatalogPayload = createEffectiveSkillsSmokePayload();\n const detailSkillItem = payload.skills[0];\n detailSkillItem.skill.slug = 'backend-auth';\n detailSkillItem.skill.name = 'backend-auth';\n detailSkillItem.skill.summary = 'Backend auth skill';\n detailSkillItem.skill.whenToUse = 'Use for JWT cookie sessions and protected backend resolver work.';\n detailSkillItem.publishedArtifact.frontmatterName = 'backend-auth';\n detailSkillItem.publishedArtifact.frontmatterDescription = 'JWT auth skill';\n detailSkillItem.publishedArtifact.fileCount = 2;\n const detailItem: PublishedSkillDetailItem = {\n ...detailSkillItem,\n publishedArtifact: {\n ...detailSkillItem.publishedArtifact,\n markdownBody: '## Mock skill\\n\\nThis is a mock published skill.',\n renderedContent: '<h2>Mock skill</h2>',\n files: [\n {\n id: 'artifact-file-1',\n relativePath: 'SKILL.md',\n contentType: 'text/markdown; charset=utf-8',\n content: '---\\nname: \"backend-auth\"\\ndescription: \"JWT auth skill\"\\n---\\n\\n## Mock skill\\n',\n checksum: 'file-checksum-1',\n size: 74,\n sortOrder: 0,\n },\n {\n id: 'artifact-file-2',\n relativePath: 'resource.md',\n contentType: 'text/markdown; charset=utf-8',\n content: '# Resource\\n',\n checksum: 'file-checksum-2',\n size: 11,\n sortOrder: 1,\n },\n ],\n },\n };\n\n const config = await resolveConfig(process.cwd());\n const backendOriginSmoke = await assertBackendOriginResolution();\n\n const catalog = toPublishedSkillCatalog(payload);\n const effectiveSkillGroupingSmoke = assertEffectiveSkillGrouping(createEffectiveSkillsSmokePayload());\n const selection = selectPublishedSkills(payload, ['backend-auth', 'missing-skill']);\n const detail = selection.selectedItems[0] ? toPublishedSkillDetail(detailItem) : null;\n const preview = buildSkillMarkdown(detailItem).split('\\n').slice(0, 6);\n\n console.log(\n JSON.stringify(\n {\n runtimeMode: catalog.runtimeMode,\n graphqlUrl: config.graphqlUrl,\n backendOriginSmoke,\n effectiveSkillGroupingSmoke,\n publishedSkillCount: catalog.publishedSkillCount,\n availableTools: catalog.availableTools,\n facets: catalog.facets,\n selectedSkillCount: selection.selectedItems.length,\n missingSkills: selection.missingIdentifiers,\n selectedSkillSlug: detail?.skillSlug ?? null,\n selectedSkillTags: detail?.tags ?? [],\n markdownDocumentIncludesFrontmatter: detail?.markdownDocument.startsWith('---') ?? false,\n resourceFileCount: detail?.resources.length ?? 0,\n preview,\n markdownBodyIncludesContent: detail?.markdownBody.includes('This is a mock published skill.') ?? false,\n },\n null,\n 2,\n ),\n );\n};\n\nvoid run();\n"],"mappings":"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","ignoreList":[]}
package/dist/tui.js CHANGED
@@ -239,6 +239,13 @@ const getSkillRowState = skill => {
239
239
  if (skill.contextKind === 'global') return 'global-scope';
240
240
  return 'project-scope';
241
241
  };
242
+ const getInstallableNotInstalledSkills = snapshot => {
243
+ const installableSkills = snapshot.installableCatalog?.skills ?? [];
244
+ if (installableSkills.length === 0) return [];
245
+ const activeSkillSlugs = new Set(snapshot.catalog?.skills.map(skill => skill.skillSlug) ?? []);
246
+ const ignoredSkillSlugs = new Set(snapshot.ignoredPublishedSkills.skills.map(skill => skill.skillSlug));
247
+ return installableSkills.filter(skill => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug));
248
+ };
242
249
  const getErrorMessage = error => {
243
250
  if (error instanceof Error && error.message) return error.message;
244
251
  return 'Preference update failed. Check plugin auth/backend status and try again.';
@@ -398,8 +405,7 @@ const WizardSkillsDialogContent = props => {
398
405
  const {
399
406
  catalog
400
407
  } = currentStatus.snapshot;
401
- const activeSkillSlugs = new Set(catalog.skills.map(skill => skill.skillSlug));
402
- const ignoredSkillSlugs = new Set(currentStatus.snapshot.ignoredPublishedSkills.skills.map(skill => skill.skillSlug));
408
+ const installableNotInstalledSkills = getInstallableNotInstalledSkills(currentStatus.snapshot);
403
409
  const rows = [...catalog.skills.map(skill => ({
404
410
  skill,
405
411
  ignored: false,
@@ -408,7 +414,7 @@ const WizardSkillsDialogContent = props => {
408
414
  skill,
409
415
  ignored: true,
410
416
  state: getSkillRowState(skill)
411
- })), ...(currentStatus.snapshot.installableCatalog?.skills ?? []).filter(skill => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug)).map(skill => ({
417
+ })), ...installableNotInstalledSkills.map(skill => ({
412
418
  skill,
413
419
  ignored: false,
414
420
  state: 'installable'
@@ -439,7 +445,7 @@ const WizardSkillsDialogContent = props => {
439
445
  _el$56 = _$createTextNode(` PROJECT SCOPE &nbsp;· `),
440
446
  _el$57 = _$createTextNode(` USER SCOPE &nbsp;· `),
441
447
  _el$58 = _$createTextNode(` ignored &nbsp;· `),
442
- _el$59 = _$createTextNode(` installable`),
448
+ _el$59 = _$createTextNode(` installable/not installed`),
443
449
  _el$60 = _$createElement("text"),
444
450
  _el$61 = _$createTextNode(`page `),
445
451
  _el$62 = _$createTextNode(`/`),
@@ -478,7 +484,7 @@ const WizardSkillsDialogContent = props => {
478
484
  _$insert(_el$51, () => catalog.assignmentCounts.project, _el$56);
479
485
  _$insert(_el$51, () => catalog.assignmentCounts.user, _el$57);
480
486
  _$insert(_el$51, () => currentStatus.snapshot.ignoredPublishedSkills.count, _el$58);
481
- _$insert(_el$51, () => currentStatus.snapshot.installableCatalog?.count ?? 0, _el$59);
487
+ _$insert(_el$51, () => installableNotInstalledSkills.length, _el$59);
482
488
  _$insertNode(_el$60, _el$61);
483
489
  _$insertNode(_el$60, _el$62);
484
490
  _$setProp(_el$60, "wrapMode", "none");
@@ -621,6 +627,7 @@ const ReadyRows = props => {
621
627
  })();
622
628
  }
623
629
  const counts = props.snapshot.catalog.assignmentCounts;
630
+ const installableNotInstalledCount = getInstallableNotInstalledSkills(props.snapshot).length;
624
631
  return (() => {
625
632
  var _el$76 = _$createElement("box"),
626
633
  _el$77 = _$createElement("text");
@@ -664,6 +671,12 @@ const ReadyRows = props => {
664
671
  return props.theme;
665
672
  }
666
673
  }), null);
674
+ _$insert(_el$76, _$createComponent(CatalogBullet, {
675
+ value: `${installableNotInstalledCount} installable/not installed`,
676
+ get theme() {
677
+ return props.theme;
678
+ }
679
+ }), null);
667
680
  _$insert(_el$76, _$createComponent(CatalogBullet, {
668
681
  get value() {
669
682
  return `${props.snapshot.ignoredPublishedSkills.count} ignored`;
package/dist/tui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createMemo","createSignal","PLUGIN_ID","resolvePluginStatusSnapshotWithAuthBootstrap","setPublishedSkillInstalled","setPublishedSkillIgnored","STATUS_TIMEOUT_MS","STATUS_REFRESH_INTERVAL_MS","MAX_STATUS_MESSAGE_LENGTH","MAX_SKILL_DESCRIPTION_LENGTH","MAX_SKILL_NAME_LENGTH","MAX_SKILL_META_LENGTH","MAX_SKILL_TAGS","SKILLS_PAGE_SIZE","compactStatusMessage","message","length","slice","compactSkillDescription","compactSkillName","name","compactSkillMeta","meta","formatSkillsCatalogUnavailableMessage","snapshot","catalog","status","formatAuthStatus","authState","email","formatBackendOriginLabel","backendOrigin","hostname","URL","includes","requestRender","api","renderer","Row","props","_el$","_$createElement","_el$2","_el$3","_$createTextNode","_el$4","_$insertNode","_$setProp","_$insert","label","value","_$effect","_p$","_v$","labelColor","_v$2","valueColor","e","t","undefined","Panel","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","title","children","_v$3","onOpen","_v$4","theme","text","_v$5","textMuted","a","StatusContent","kind","_el$11","_$p","_el$13","_el$14","warning","_$createComponent","ReadyRows","SkillsRows","current","statusContent","currentStatus","_el$15","CatalogBullet","_el$16","_el$17","getSkillDisplayName","skill","artifactName","skillName","skillSlug","getSkillDescription","whenToUse","artifactDescription","getSkillTags","tagLabels","tags","map","tag","slug","filter","Boolean","join","isUserScopeAssignment","assignmentSource","getSkillScopeLabel","state","contextKind","getSkillPreferenceScope","getSkillMeta","assignmentLabel","policyLabel","getRowStateLabel","row","scopeLabel","ignored","getSkillRowState","getErrorMessage","error","Error","SkillCatalogRow","description","canUninstall","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$25","_el$26","_c$","_$memo","_el$27","_el$28","onInstall","_el$30","_el$32","_el$33","_el$35","_el$36","onIgnore","_el$37","_el$39","_el$40","onUninstall","_el$42","_v$6","_v$7","WizardSkillsDialogContent","page","setPage","content","_el$43","_el$45","_el$46","_el$47","_el$48","activeSkillSlugs","Set","skills","ignoredSkillSlugs","ignoredPublishedSkills","rows","installableCatalog","has","totalPages","Math","max","ceil","currentPage","min","startIndex","endIndex","visibleRows","canGoBack","canGoForward","goBack","goForward","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$68","_el$69","_el$70","_el$71","publishedSkillCount","assignmentCounts","global","project","user","count","onIgnoreSkill","onInstallSkill","onUninstallSkill","_v$8","_v$9","_v$0","_v$1","_v$10","o","i","_el$73","PreferenceActionNoticeRow","notice","actionNotice","_el$74","statusRows","_el$75","counts","_el$76","_el$77","WizardSkillsDialog","setActionNotice","refreshAfterPreferenceChange","refreshStatus","showLoading","showPreferenceFailure","ignoreSkill","scopeKey","worktree","path","directory","preferenceScope","then","catch","installSkill","toUpperCase","installed","uninstallSkill","ui","dialog","setSize","_el$79","_el$80","_el$81","_el$82","_el$84","_el$85","_el$87","_v$11","_v$12","onClose","_v$13","openWizardSkillsDialog","replace","clear","createWizardStatusSlot","order","slots","home_bottom","sidebar_content","_ctx","_value","loadStatus","signal","AbortSignal","timeout","tui","setStatus","options","nextStatus","register","setInterval","id"],"sources":["../src/tui.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/solid */\nimport type { RGBA } from '@opentui/core';\nimport { createEffect, createMemo, createSignal } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n PLUGIN_ID,\n resolvePluginStatusSnapshotWithAuthBootstrap,\n setPublishedSkillInstalled,\n setPublishedSkillIgnored,\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 TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui?: {\n dialog?: {\n replace?: (render: () => JSX.Element, onClose?: () => void) => void;\n clear?: () => void;\n setSize?: (size: 'medium' | 'large' | 'xlarge') => void;\n };\n };\n renderer?: {\n requestRender?: () => void;\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 STATUS_REFRESH_INTERVAL_MS = 5_000;\nconst MAX_STATUS_MESSAGE_LENGTH = 80;\nconst MAX_SKILL_DESCRIPTION_LENGTH = 96;\nconst MAX_SKILL_NAME_LENGTH = 48;\nconst MAX_SKILL_META_LENGTH = 72;\nconst MAX_SKILL_TAGS = 4;\nconst SKILLS_PAGE_SIZE = 5;\n\nconst compactStatusMessage = (message: string): string => {\n if (message.length <= MAX_STATUS_MESSAGE_LENGTH) return message;\n\n return `${message.slice(0, MAX_STATUS_MESSAGE_LENGTH - 1)}…`;\n};\n\nconst compactSkillDescription = (message: string): string => {\n if (message.length <= MAX_SKILL_DESCRIPTION_LENGTH) return message;\n\n return `${message.slice(0, MAX_SKILL_DESCRIPTION_LENGTH - 1)}…`;\n};\n\nconst compactSkillName = (name: string): string => {\n if (name.length <= MAX_SKILL_NAME_LENGTH) return name;\n\n return `${name.slice(0, MAX_SKILL_NAME_LENGTH - 1)}…`;\n};\n\nconst compactSkillMeta = (meta: string): string => {\n if (meta.length <= MAX_SKILL_META_LENGTH) return meta;\n\n return `${meta.slice(0, MAX_SKILL_META_LENGTH - 1)}…`;\n};\n\nconst formatSkillsCatalogUnavailableMessage = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n if (snapshot.message) return compactStatusMessage(snapshot.message);\n\n return 'locked (browser auth pending)';\n }\n\n if (!snapshot.catalog && snapshot.message) return compactStatusMessage(snapshot.message);\n if (!snapshot.catalog) return `unavailable (${snapshot.status})`;\n\n return 'unavailable';\n};\n\nconst formatAuthStatus = (snapshot: PluginStatusSnapshot): string => {\n if (snapshot.authState.status !== 'authenticated') return snapshot.authState.status;\n if (!snapshot.authState.email) return 'authenticated';\n\n return snapshot.authState.email;\n};\n\nconst formatBackendOriginLabel = (backendOrigin: string): string => {\n try {\n const { hostname } = new URL(backendOrigin);\n if (hostname === 'localhost' || hostname === '127.0.0.1') return 'localhost';\n\n return 'opencode-wizard';\n } catch {\n if (backendOrigin.includes('localhost') || backendOrigin.includes('127.0.0.1')) return 'localhost';\n\n return 'opencode-wizard';\n }\n};\n\nconst requestRender = (api: TuiPluginApi): void => {\n try {\n api.renderer?.requestRender?.();\n } catch {\n // Ignore render request failures; state is still updated.\n }\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}:&nbsp;\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 onOpen: () => void;\n children: JSX.Element;\n}) => (\n <box width=\"100%\" flexDirection=\"column\" paddingRight={1} onMouseUp={props.onOpen}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <box flexShrink={0}>\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{props.title}</b>\n </text>\n </box>\n <box flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n open\n </text>\n </box>\n </box>\n {props.children}\n </box>\n);\n\nconst StatusContent = (props: { status: StatusState; theme: TuiPluginApi['theme']['current'] }) => {\n if (props.status.kind === 'loading') {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n loading…\n </text>\n );\n }\n\n if (props.status.kind === 'error') {\n return (\n <text fg={props.theme.warning} wrapMode=\"none\" overflow=\"hidden\">\n unavailable: {compactStatusMessage(props.status.message)}\n </text>\n );\n }\n\n return <ReadyRows snapshot={props.status.snapshot} theme={props.theme} />;\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 return <StatusContent status={currentStatus} 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\ntype PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\ntype SkillRowState = 'global-scope' | 'project-scope' | 'user-scope' | 'installable';\ntype SkillDialogRow = {\n skill: PublishedSkillSummary;\n ignored: boolean;\n state: SkillRowState;\n};\ntype RefreshStatus = (options?: { showLoading?: boolean }) => void;\ntype PreferenceActionNotice =\n | {\n kind: 'idle';\n }\n | {\n kind: 'pending';\n message: string;\n }\n | {\n kind: 'success';\n message: string;\n }\n | {\n kind: 'error';\n message: string;\n };\n\nconst getSkillDisplayName = (skill: PublishedSkillSummary): string => skill.artifactName || skill.skillName || skill.skillSlug;\n\nconst getSkillDescription = (skill: PublishedSkillSummary): string | null => {\n if (skill.whenToUse) return skill.whenToUse;\n if (skill.artifactDescription) return skill.artifactDescription;\n\n return null;\n};\n\nconst getSkillTags = (skill: PublishedSkillSummary): string => {\n const tagLabels = skill.tags.map((tag) => tag.label || tag.slug).filter(Boolean).slice(0, MAX_SKILL_TAGS);\n if (tagLabels.length === 0) return 'no tags';\n\n return tagLabels.join(', ');\n};\n\nconst isUserScopeAssignment = (assignmentSource: string): boolean =>\n assignmentSource === 'USER' || assignmentSource === 'USER_GLOBAL' || assignmentSource === 'USER_WORKSPACE';\n\nconst getSkillScopeLabel = (skill: PublishedSkillSummary, state: SkillRowState): string => {\n if (state === 'installable') return 'AVAILABLE';\n if (isUserScopeAssignment(skill.assignmentSource) || state === 'user-scope') return 'USER SCOPE';\n if (state === 'global-scope' || skill.contextKind === 'global') return 'GLOBAL SCOPE';\n\n return 'PROJECT SCOPE';\n};\n\nconst getSkillPreferenceScope = (skill: PublishedSkillSummary): 'global' | 'project' => {\n if (skill.assignmentSource === 'USER_GLOBAL') return 'global';\n if (skill.assignmentSource === 'USER_WORKSPACE') return 'project';\n if (skill.contextKind === 'global') return 'global';\n\n return 'project';\n};\n\nconst getSkillMeta = (skill: PublishedSkillSummary, state: SkillRowState): string =>\n `${getSkillScopeLabel(skill, state)} · ${skill.assignmentLabel} · ${skill.policyLabel} · ${getSkillTags(skill)}`;\n\nconst getRowStateLabel = (row: SkillDialogRow): string => {\n const scopeLabel = getSkillScopeLabel(row.skill, row.state);\n if (row.ignored) return `ignored · ${scopeLabel}`;\n if (row.state === 'installable') return 'not installed';\n return `active · ${scopeLabel}`;\n};\n\nconst getSkillRowState = (skill: PublishedSkillSummary): SkillRowState => {\n if (isUserScopeAssignment(skill.assignmentSource)) return 'user-scope';\n if (skill.contextKind === 'global') return 'global-scope';\n\n return 'project-scope';\n};\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error && error.message) return error.message;\n return 'Preference update failed. Check plugin auth/backend status and try again.';\n};\n\nconst SkillCatalogRow = (props: {\n row: SkillDialogRow;\n theme: TuiPluginApi['theme']['current'];\n onIgnore: (row: SkillDialogRow) => void;\n onInstall: (row: SkillDialogRow, preferenceScope: 'global' | 'project') => void;\n onUninstall: (row: SkillDialogRow) => void;\n}) => {\n const skill = props.row.skill;\n const description = getSkillDescription(skill);\n const canUninstall = skill.assignmentSource === 'USER_GLOBAL' || skill.assignmentSource === 'USER_WORKSPACE';\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\" marginBottom={1}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={props.row.ignored ? props.theme.textMuted : props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{compactSkillName(getSkillDisplayName(skill))}</b>\n {' '}({getRowStateLabel(props.row)})\n </text>\n <box flexDirection=\"row\" flexShrink={0}>\n {props.row.state === 'installable' ? (\n <>\n <box onMouseUp={() => props.onInstall(props.row, 'global')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">GLOBAL SCOPE</text>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\"> / </text>\n <box onMouseUp={() => props.onInstall(props.row, 'project')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">PROJECT SCOPE</text>\n </box>\n </>\n ) : (\n <>\n <box onMouseUp={() => props.onIgnore(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n {props.row.ignored ? 'Unignore' : 'Ignore'}\n </text>\n </box>\n {canUninstall ? (\n <>\n <text fg={props.theme.textMuted} wrapMode=\"none\"> / </text>\n <box onMouseUp={() => props.onUninstall(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">Uninstall</text>\n </box>\n </>\n ) : null}\n </>\n )}\n </box>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillMeta(getSkillMeta(skill, props.row.state))}\n </text>\n {description ? (\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillDescription(description)}\n </text>\n ) : null}\n </box>\n );\n};\n\nconst WizardSkillsDialogContent = (props: {\n status: () => StatusState;\n actionNotice: () => PreferenceActionNotice;\n theme: TuiPluginApi['theme']['current'];\n onIgnoreSkill: (row: SkillDialogRow) => void;\n onInstallSkill: (row: SkillDialogRow, preferenceScope: 'global' | 'project') => void;\n onUninstallSkill: (row: SkillDialogRow) => void;\n}) => {\n const [page, setPage] = createSignal(0);\n const content = () => {\n const currentStatus = props.status();\n\n if (currentStatus.kind === 'loading') {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n Refreshing published skills…\n </text>\n );\n }\n\n if (currentStatus.kind === 'error') {\n return (\n <text fg={props.theme.warning} wrapMode=\"none\" overflow=\"hidden\">\n unavailable: {compactStatusMessage(currentStatus.message)}\n </text>\n );\n }\n\n if (!currentStatus.snapshot.catalog) {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n catalog {formatSkillsCatalogUnavailableMessage(currentStatus.snapshot)}\n </text>\n );\n }\n\n const { catalog } = currentStatus.snapshot;\n const activeSkillSlugs = new Set(catalog.skills.map((skill) => skill.skillSlug));\n const ignoredSkillSlugs = new Set(currentStatus.snapshot.ignoredPublishedSkills.skills.map((skill) => skill.skillSlug));\n const rows: SkillDialogRow[] = [\n ...catalog.skills.map((skill) => ({\n skill,\n ignored: false,\n state: getSkillRowState(skill),\n })),\n ...currentStatus.snapshot.ignoredPublishedSkills.skills.map((skill) => ({\n skill,\n ignored: true,\n state: getSkillRowState(skill),\n })),\n ...(currentStatus.snapshot.installableCatalog?.skills ?? [])\n .filter((skill) => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug))\n .map((skill) => ({ skill, ignored: false, state: 'installable' as const })),\n ];\n const totalPages = Math.max(1, Math.ceil(rows.length / SKILLS_PAGE_SIZE));\n const currentPage = Math.min(page(), totalPages - 1);\n const startIndex = currentPage * SKILLS_PAGE_SIZE;\n const endIndex = Math.min(startIndex + SKILLS_PAGE_SIZE, rows.length);\n const visibleRows = rows.slice(startIndex, endIndex);\n const canGoBack = currentPage > 0;\n const canGoForward = currentPage < totalPages - 1;\n const goBack = () => {\n if (!canGoBack) return;\n\n setPage(currentPage - 1);\n };\n const goForward = () => {\n if (!canGoForward) return;\n\n setPage(currentPage + 1);\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{catalog.publishedSkillCount} skills</b>\n &nbsp;· {catalog.assignmentCounts.global} GLOBAL SCOPE · {catalog.assignmentCounts.project} PROJECT SCOPE\n &nbsp;· {catalog.assignmentCounts.user} USER SCOPE\n &nbsp;· {currentStatus.snapshot.ignoredPublishedSkills.count} ignored\n &nbsp;· {currentStatus.snapshot.installableCatalog?.count ?? 0} installable\n </text>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n page {currentPage + 1}/{totalPages}\n </text>\n </box>\n <box width=\"100%\" flexDirection=\"column\" marginTop={1} overflow=\"hidden\">\n {visibleRows.map((row) => (\n <SkillCatalogRow\n row={row}\n theme={props.theme}\n onIgnore={props.onIgnoreSkill}\n onInstall={props.onInstallSkill}\n onUninstall={props.onUninstallSkill}\n />\n ))}\n </box>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <box onMouseUp={goBack} flexShrink={0}>\n <text fg={canGoBack ? props.theme.text : props.theme.textMuted} wrapMode=\"none\">\n ← Prev\n </text>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n {visibleRows.length} shown\n </text>\n <box onMouseUp={goForward} flexShrink={0}>\n <text fg={canGoForward ? props.theme.text : props.theme.textMuted} wrapMode=\"none\">\n Next →\n </text>\n </box>\n </box>\n </box>\n );\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <PreferenceActionNoticeRow notice={props.actionNotice()} theme={props.theme} />\n {content()}\n </box>\n );\n};\n\nconst PreferenceActionNoticeRow = (props: {\n notice: PreferenceActionNotice;\n theme: TuiPluginApi['theme']['current'];\n}) => {\n if (props.notice.kind === 'idle') return null;\n\n return (\n <text\n fg={props.notice.kind === 'error' ? props.theme.warning : props.theme.textMuted}\n wrapMode=\"none\"\n overflow=\"hidden\"\n >\n {compactStatusMessage(props.notice.message)}\n </text>\n );\n};\n\nconst ReadyRows = (props: { snapshot: PluginStatusSnapshot; theme: TuiPluginApi['theme']['current'] }) => {\n const statusRows = (\n <>\n <Row label=\"url\" value={formatBackendOriginLabel(props.snapshot.backendOrigin)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n <Row label=\"auth\" value={formatAuthStatus(props.snapshot)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n </>\n );\n\n if (!props.snapshot.catalog) {\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n {statusRows}\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 {statusRows}\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 SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${counts.project} PROJECT SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${counts.user} USER SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${props.snapshot.ignoredPublishedSkills.count} ignored`} theme={props.theme} />\n </box>\n );\n};\n\nconst WizardSkillsDialog = (props: {\n api: TuiPluginApi;\n status: () => StatusState;\n refreshStatus: RefreshStatus;\n onClose: () => void;\n}) => {\n const theme = createMemo(() => props.api.theme.current);\n const [actionNotice, setActionNotice] = createSignal<PreferenceActionNotice>({ kind: 'idle' });\n\n const refreshAfterPreferenceChange = (message: string): void => {\n setActionNotice({ kind: 'success', message });\n props.refreshStatus({ showLoading: false });\n requestRender(props.api);\n };\n\n const showPreferenceFailure = (error: unknown): void => {\n setActionNotice({ kind: 'error', message: getErrorMessage(error) });\n props.refreshStatus({ showLoading: false });\n requestRender(props.api);\n };\n\n const ignoreSkill = (row: SkillDialogRow): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: row.ignored ? 'Removing ignore preference…' : 'Ignoring skill…' });\n requestRender(props.api);\n void setPublishedSkillIgnored({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n ignored: !row.ignored,\n preferenceScope: getSkillPreferenceScope(row.skill),\n })\n .then(() => refreshAfterPreferenceChange(row.ignored ? 'Skill is no longer ignored.' : 'Skill ignored.'))\n .catch(showPreferenceFailure);\n };\n\n const installSkill = (row: SkillDialogRow, preferenceScope: 'global' | 'project'): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: `Installing skill for ${preferenceScope.toUpperCase()} SCOPE…` });\n requestRender(props.api);\n void setPublishedSkillInstalled({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n installed: true,\n preferenceScope,\n })\n .then(() => refreshAfterPreferenceChange(`Skill installed for ${preferenceScope.toUpperCase()} SCOPE.`))\n .catch(showPreferenceFailure);\n };\n\n const uninstallSkill = (row: SkillDialogRow): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: 'Uninstalling skill…' });\n requestRender(props.api);\n void setPublishedSkillInstalled({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n installed: false,\n preferenceScope: getSkillPreferenceScope(row.skill),\n })\n .then(() => refreshAfterPreferenceChange('Skill uninstalled.'))\n .catch(showPreferenceFailure);\n };\n\n createEffect(() => {\n props.api.ui?.dialog?.setSize?.('xlarge');\n });\n\n return (\n <box width=\"100%\" flexDirection=\"column\" paddingLeft={1} paddingRight={1} paddingBottom={1}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={theme().text} wrapMode=\"none\" overflow=\"hidden\">\n <b>Wizard Skills</b>\n </text>\n <box onMouseUp={props.onClose} flexShrink={0}>\n <text fg={theme().textMuted} wrapMode=\"none\">\n Close\n </text>\n </box>\n </box>\n <box width=\"100%\" flexDirection=\"column\" marginTop={1} overflow=\"hidden\">\n <WizardSkillsDialogContent\n status={props.status}\n actionNotice={actionNotice}\n theme={theme()}\n onIgnoreSkill={ignoreSkill}\n onInstallSkill={installSkill}\n onUninstallSkill={uninstallSkill}\n />\n </box>\n </box>\n );\n};\n\nconst openWizardSkillsDialog = (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus): void => {\n const dialog = api.ui?.dialog;\n if (!dialog?.replace) return;\n\n refreshStatus({ showLoading: true });\n\n dialog.replace(\n () => (\n <WizardSkillsDialog\n api={api}\n status={status}\n refreshStatus={refreshStatus}\n onClose={() => {\n dialog.clear?.();\n requestRender(api);\n }}\n />\n ),\n () => {\n requestRender(api);\n },\n );\n\n requestRender(api);\n};\n\nconst createWizardStatusSlot = (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\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} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\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 resolvePluginStatusSnapshotWithAuthBootstrap({\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 const refreshStatus: RefreshStatus = (options) => {\n if (options?.showLoading) {\n setStatus({ kind: 'loading' });\n requestRender(api);\n }\n\n void loadStatus(api).then((nextStatus) => {\n setStatus(nextStatus);\n requestRender(api);\n });\n };\n\n api.slots.register(createWizardStatusSlot(api, status, refreshStatus));\n refreshStatus();\n setInterval(refreshStatus, STATUS_REFRESH_INTERVAL_MS);\n};\n\nexport default {\n id: PLUGIN_ID,\n tui,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createMemo","createSignal","PLUGIN_ID","resolvePluginStatusSnapshotWithAuthBootstrap","setPublishedSkillInstalled","setPublishedSkillIgnored","STATUS_TIMEOUT_MS","STATUS_REFRESH_INTERVAL_MS","MAX_STATUS_MESSAGE_LENGTH","MAX_SKILL_DESCRIPTION_LENGTH","MAX_SKILL_NAME_LENGTH","MAX_SKILL_META_LENGTH","MAX_SKILL_TAGS","SKILLS_PAGE_SIZE","compactStatusMessage","message","length","slice","compactSkillDescription","compactSkillName","name","compactSkillMeta","meta","formatSkillsCatalogUnavailableMessage","snapshot","catalog","status","formatAuthStatus","authState","email","formatBackendOriginLabel","backendOrigin","hostname","URL","includes","requestRender","api","renderer","Row","props","_el$","_$createElement","_el$2","_el$3","_$createTextNode","_el$4","_$insertNode","_$setProp","_$insert","label","value","_$effect","_p$","_v$","labelColor","_v$2","valueColor","e","t","undefined","Panel","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","title","children","_v$3","onOpen","_v$4","theme","text","_v$5","textMuted","a","StatusContent","kind","_el$11","_$p","_el$13","_el$14","warning","_$createComponent","ReadyRows","SkillsRows","current","statusContent","currentStatus","_el$15","CatalogBullet","_el$16","_el$17","getSkillDisplayName","skill","artifactName","skillName","skillSlug","getSkillDescription","whenToUse","artifactDescription","getSkillTags","tagLabels","tags","map","tag","slug","filter","Boolean","join","isUserScopeAssignment","assignmentSource","getSkillScopeLabel","state","contextKind","getSkillPreferenceScope","getSkillMeta","assignmentLabel","policyLabel","getRowStateLabel","row","scopeLabel","ignored","getSkillRowState","getInstallableNotInstalledSkills","installableSkills","installableCatalog","skills","activeSkillSlugs","Set","ignoredSkillSlugs","ignoredPublishedSkills","has","getErrorMessage","error","Error","SkillCatalogRow","description","canUninstall","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$25","_el$26","_c$","_$memo","_el$27","_el$28","onInstall","_el$30","_el$32","_el$33","_el$35","_el$36","onIgnore","_el$37","_el$39","_el$40","onUninstall","_el$42","_v$6","_v$7","WizardSkillsDialogContent","page","setPage","content","_el$43","_el$45","_el$46","_el$47","_el$48","installableNotInstalledSkills","rows","totalPages","Math","max","ceil","currentPage","min","startIndex","endIndex","visibleRows","canGoBack","canGoForward","goBack","goForward","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$68","_el$69","_el$70","_el$71","publishedSkillCount","assignmentCounts","global","project","user","count","onIgnoreSkill","onInstallSkill","onUninstallSkill","_v$8","_v$9","_v$0","_v$1","_v$10","o","i","_el$73","PreferenceActionNoticeRow","notice","actionNotice","_el$74","statusRows","_el$75","counts","installableNotInstalledCount","_el$76","_el$77","WizardSkillsDialog","setActionNotice","refreshAfterPreferenceChange","refreshStatus","showLoading","showPreferenceFailure","ignoreSkill","scopeKey","worktree","path","directory","preferenceScope","then","catch","installSkill","toUpperCase","installed","uninstallSkill","ui","dialog","setSize","_el$79","_el$80","_el$81","_el$82","_el$84","_el$85","_el$87","_v$11","_v$12","onClose","_v$13","openWizardSkillsDialog","replace","clear","createWizardStatusSlot","order","slots","home_bottom","sidebar_content","_ctx","_value","loadStatus","signal","AbortSignal","timeout","tui","setStatus","options","nextStatus","register","setInterval","id"],"sources":["../src/tui.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/solid */\nimport type { RGBA } from '@opentui/core';\nimport { createEffect, createMemo, createSignal } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n PLUGIN_ID,\n resolvePluginStatusSnapshotWithAuthBootstrap,\n setPublishedSkillInstalled,\n setPublishedSkillIgnored,\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 TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui?: {\n dialog?: {\n replace?: (render: () => JSX.Element, onClose?: () => void) => void;\n clear?: () => void;\n setSize?: (size: 'medium' | 'large' | 'xlarge') => void;\n };\n };\n renderer?: {\n requestRender?: () => void;\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 STATUS_REFRESH_INTERVAL_MS = 5_000;\nconst MAX_STATUS_MESSAGE_LENGTH = 80;\nconst MAX_SKILL_DESCRIPTION_LENGTH = 96;\nconst MAX_SKILL_NAME_LENGTH = 48;\nconst MAX_SKILL_META_LENGTH = 72;\nconst MAX_SKILL_TAGS = 4;\nconst SKILLS_PAGE_SIZE = 5;\n\nconst compactStatusMessage = (message: string): string => {\n if (message.length <= MAX_STATUS_MESSAGE_LENGTH) return message;\n\n return `${message.slice(0, MAX_STATUS_MESSAGE_LENGTH - 1)}…`;\n};\n\nconst compactSkillDescription = (message: string): string => {\n if (message.length <= MAX_SKILL_DESCRIPTION_LENGTH) return message;\n\n return `${message.slice(0, MAX_SKILL_DESCRIPTION_LENGTH - 1)}…`;\n};\n\nconst compactSkillName = (name: string): string => {\n if (name.length <= MAX_SKILL_NAME_LENGTH) return name;\n\n return `${name.slice(0, MAX_SKILL_NAME_LENGTH - 1)}…`;\n};\n\nconst compactSkillMeta = (meta: string): string => {\n if (meta.length <= MAX_SKILL_META_LENGTH) return meta;\n\n return `${meta.slice(0, MAX_SKILL_META_LENGTH - 1)}…`;\n};\n\nconst formatSkillsCatalogUnavailableMessage = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n if (snapshot.message) return compactStatusMessage(snapshot.message);\n\n return 'locked (browser auth pending)';\n }\n\n if (!snapshot.catalog && snapshot.message) return compactStatusMessage(snapshot.message);\n if (!snapshot.catalog) return `unavailable (${snapshot.status})`;\n\n return 'unavailable';\n};\n\nconst formatAuthStatus = (snapshot: PluginStatusSnapshot): string => {\n if (snapshot.authState.status !== 'authenticated') return snapshot.authState.status;\n if (!snapshot.authState.email) return 'authenticated';\n\n return snapshot.authState.email;\n};\n\nconst formatBackendOriginLabel = (backendOrigin: string): string => {\n try {\n const { hostname } = new URL(backendOrigin);\n if (hostname === 'localhost' || hostname === '127.0.0.1') return 'localhost';\n\n return 'opencode-wizard';\n } catch {\n if (backendOrigin.includes('localhost') || backendOrigin.includes('127.0.0.1')) return 'localhost';\n\n return 'opencode-wizard';\n }\n};\n\nconst requestRender = (api: TuiPluginApi): void => {\n try {\n api.renderer?.requestRender?.();\n } catch {\n // Ignore render request failures; state is still updated.\n }\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}:&nbsp;\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 onOpen: () => void;\n children: JSX.Element;\n}) => (\n <box width=\"100%\" flexDirection=\"column\" paddingRight={1} onMouseUp={props.onOpen}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <box flexShrink={0}>\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{props.title}</b>\n </text>\n </box>\n <box flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n open\n </text>\n </box>\n </box>\n {props.children}\n </box>\n);\n\nconst StatusContent = (props: { status: StatusState; theme: TuiPluginApi['theme']['current'] }) => {\n if (props.status.kind === 'loading') {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n loading…\n </text>\n );\n }\n\n if (props.status.kind === 'error') {\n return (\n <text fg={props.theme.warning} wrapMode=\"none\" overflow=\"hidden\">\n unavailable: {compactStatusMessage(props.status.message)}\n </text>\n );\n }\n\n return <ReadyRows snapshot={props.status.snapshot} theme={props.theme} />;\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 return <StatusContent status={currentStatus} 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\ntype PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\ntype SkillRowState = 'global-scope' | 'project-scope' | 'user-scope' | 'installable';\ntype SkillDialogRow = {\n skill: PublishedSkillSummary;\n ignored: boolean;\n state: SkillRowState;\n};\ntype RefreshStatus = (options?: { showLoading?: boolean }) => void;\ntype PreferenceActionNotice =\n | {\n kind: 'idle';\n }\n | {\n kind: 'pending';\n message: string;\n }\n | {\n kind: 'success';\n message: string;\n }\n | {\n kind: 'error';\n message: string;\n };\n\nconst getSkillDisplayName = (skill: PublishedSkillSummary): string => skill.artifactName || skill.skillName || skill.skillSlug;\n\nconst getSkillDescription = (skill: PublishedSkillSummary): string | null => {\n if (skill.whenToUse) return skill.whenToUse;\n if (skill.artifactDescription) return skill.artifactDescription;\n\n return null;\n};\n\nconst getSkillTags = (skill: PublishedSkillSummary): string => {\n const tagLabels = skill.tags.map((tag) => tag.label || tag.slug).filter(Boolean).slice(0, MAX_SKILL_TAGS);\n if (tagLabels.length === 0) return 'no tags';\n\n return tagLabels.join(', ');\n};\n\nconst isUserScopeAssignment = (assignmentSource: string): boolean =>\n assignmentSource === 'USER' || assignmentSource === 'USER_GLOBAL' || assignmentSource === 'USER_WORKSPACE';\n\nconst getSkillScopeLabel = (skill: PublishedSkillSummary, state: SkillRowState): string => {\n if (state === 'installable') return 'AVAILABLE';\n if (isUserScopeAssignment(skill.assignmentSource) || state === 'user-scope') return 'USER SCOPE';\n if (state === 'global-scope' || skill.contextKind === 'global') return 'GLOBAL SCOPE';\n\n return 'PROJECT SCOPE';\n};\n\nconst getSkillPreferenceScope = (skill: PublishedSkillSummary): 'global' | 'project' => {\n if (skill.assignmentSource === 'USER_GLOBAL') return 'global';\n if (skill.assignmentSource === 'USER_WORKSPACE') return 'project';\n if (skill.contextKind === 'global') return 'global';\n\n return 'project';\n};\n\nconst getSkillMeta = (skill: PublishedSkillSummary, state: SkillRowState): string =>\n `${getSkillScopeLabel(skill, state)} · ${skill.assignmentLabel} · ${skill.policyLabel} · ${getSkillTags(skill)}`;\n\nconst getRowStateLabel = (row: SkillDialogRow): string => {\n const scopeLabel = getSkillScopeLabel(row.skill, row.state);\n if (row.ignored) return `ignored · ${scopeLabel}`;\n if (row.state === 'installable') return 'not installed';\n return `active · ${scopeLabel}`;\n};\n\nconst getSkillRowState = (skill: PublishedSkillSummary): SkillRowState => {\n if (isUserScopeAssignment(skill.assignmentSource)) return 'user-scope';\n if (skill.contextKind === 'global') return 'global-scope';\n\n return 'project-scope';\n};\n\nconst getInstallableNotInstalledSkills = (snapshot: PluginStatusSnapshot): PublishedSkillSummary[] => {\n const installableSkills = snapshot.installableCatalog?.skills ?? [];\n if (installableSkills.length === 0) return [];\n\n const activeSkillSlugs = new Set(snapshot.catalog?.skills.map((skill) => skill.skillSlug) ?? []);\n const ignoredSkillSlugs = new Set(snapshot.ignoredPublishedSkills.skills.map((skill) => skill.skillSlug));\n\n return installableSkills.filter(\n (skill) => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug),\n );\n};\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error && error.message) return error.message;\n return 'Preference update failed. Check plugin auth/backend status and try again.';\n};\n\nconst SkillCatalogRow = (props: {\n row: SkillDialogRow;\n theme: TuiPluginApi['theme']['current'];\n onIgnore: (row: SkillDialogRow) => void;\n onInstall: (row: SkillDialogRow, preferenceScope: 'global' | 'project') => void;\n onUninstall: (row: SkillDialogRow) => void;\n}) => {\n const skill = props.row.skill;\n const description = getSkillDescription(skill);\n const canUninstall = skill.assignmentSource === 'USER_GLOBAL' || skill.assignmentSource === 'USER_WORKSPACE';\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\" marginBottom={1}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={props.row.ignored ? props.theme.textMuted : props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{compactSkillName(getSkillDisplayName(skill))}</b>\n {' '}({getRowStateLabel(props.row)})\n </text>\n <box flexDirection=\"row\" flexShrink={0}>\n {props.row.state === 'installable' ? (\n <>\n <box onMouseUp={() => props.onInstall(props.row, 'global')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">GLOBAL SCOPE</text>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\"> / </text>\n <box onMouseUp={() => props.onInstall(props.row, 'project')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">PROJECT SCOPE</text>\n </box>\n </>\n ) : (\n <>\n <box onMouseUp={() => props.onIgnore(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n {props.row.ignored ? 'Unignore' : 'Ignore'}\n </text>\n </box>\n {canUninstall ? (\n <>\n <text fg={props.theme.textMuted} wrapMode=\"none\"> / </text>\n <box onMouseUp={() => props.onUninstall(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">Uninstall</text>\n </box>\n </>\n ) : null}\n </>\n )}\n </box>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillMeta(getSkillMeta(skill, props.row.state))}\n </text>\n {description ? (\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillDescription(description)}\n </text>\n ) : null}\n </box>\n );\n};\n\nconst WizardSkillsDialogContent = (props: {\n status: () => StatusState;\n actionNotice: () => PreferenceActionNotice;\n theme: TuiPluginApi['theme']['current'];\n onIgnoreSkill: (row: SkillDialogRow) => void;\n onInstallSkill: (row: SkillDialogRow, preferenceScope: 'global' | 'project') => void;\n onUninstallSkill: (row: SkillDialogRow) => void;\n}) => {\n const [page, setPage] = createSignal(0);\n const content = () => {\n const currentStatus = props.status();\n\n if (currentStatus.kind === 'loading') {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n Refreshing published skills…\n </text>\n );\n }\n\n if (currentStatus.kind === 'error') {\n return (\n <text fg={props.theme.warning} wrapMode=\"none\" overflow=\"hidden\">\n unavailable: {compactStatusMessage(currentStatus.message)}\n </text>\n );\n }\n\n if (!currentStatus.snapshot.catalog) {\n return (\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n catalog {formatSkillsCatalogUnavailableMessage(currentStatus.snapshot)}\n </text>\n );\n }\n\n const { catalog } = currentStatus.snapshot;\n const installableNotInstalledSkills = getInstallableNotInstalledSkills(currentStatus.snapshot);\n const rows: SkillDialogRow[] = [\n ...catalog.skills.map((skill) => ({\n skill,\n ignored: false,\n state: getSkillRowState(skill),\n })),\n ...currentStatus.snapshot.ignoredPublishedSkills.skills.map((skill) => ({\n skill,\n ignored: true,\n state: getSkillRowState(skill),\n })),\n ...installableNotInstalledSkills.map((skill) => ({ skill, ignored: false, state: 'installable' as const })),\n ];\n const totalPages = Math.max(1, Math.ceil(rows.length / SKILLS_PAGE_SIZE));\n const currentPage = Math.min(page(), totalPages - 1);\n const startIndex = currentPage * SKILLS_PAGE_SIZE;\n const endIndex = Math.min(startIndex + SKILLS_PAGE_SIZE, rows.length);\n const visibleRows = rows.slice(startIndex, endIndex);\n const canGoBack = currentPage > 0;\n const canGoForward = currentPage < totalPages - 1;\n const goBack = () => {\n if (!canGoBack) return;\n\n setPage(currentPage - 1);\n };\n const goForward = () => {\n if (!canGoForward) return;\n\n setPage(currentPage + 1);\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{catalog.publishedSkillCount} skills</b>\n &nbsp;· {catalog.assignmentCounts.global} GLOBAL SCOPE · {catalog.assignmentCounts.project} PROJECT SCOPE\n &nbsp;· {catalog.assignmentCounts.user} USER SCOPE\n &nbsp;· {currentStatus.snapshot.ignoredPublishedSkills.count} ignored\n &nbsp;· {installableNotInstalledSkills.length} installable/not installed\n </text>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n page {currentPage + 1}/{totalPages}\n </text>\n </box>\n <box width=\"100%\" flexDirection=\"column\" marginTop={1} overflow=\"hidden\">\n {visibleRows.map((row) => (\n <SkillCatalogRow\n row={row}\n theme={props.theme}\n onIgnore={props.onIgnoreSkill}\n onInstall={props.onInstallSkill}\n onUninstall={props.onUninstallSkill}\n />\n ))}\n </box>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <box onMouseUp={goBack} flexShrink={0}>\n <text fg={canGoBack ? props.theme.text : props.theme.textMuted} wrapMode=\"none\">\n ← Prev\n </text>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n {visibleRows.length} shown\n </text>\n <box onMouseUp={goForward} flexShrink={0}>\n <text fg={canGoForward ? props.theme.text : props.theme.textMuted} wrapMode=\"none\">\n Next →\n </text>\n </box>\n </box>\n </box>\n );\n };\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n <PreferenceActionNoticeRow notice={props.actionNotice()} theme={props.theme} />\n {content()}\n </box>\n );\n};\n\nconst PreferenceActionNoticeRow = (props: {\n notice: PreferenceActionNotice;\n theme: TuiPluginApi['theme']['current'];\n}) => {\n if (props.notice.kind === 'idle') return null;\n\n return (\n <text\n fg={props.notice.kind === 'error' ? props.theme.warning : props.theme.textMuted}\n wrapMode=\"none\"\n overflow=\"hidden\"\n >\n {compactStatusMessage(props.notice.message)}\n </text>\n );\n};\n\nconst ReadyRows = (props: { snapshot: PluginStatusSnapshot; theme: TuiPluginApi['theme']['current'] }) => {\n const statusRows = (\n <>\n <Row label=\"url\" value={formatBackendOriginLabel(props.snapshot.backendOrigin)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n <Row label=\"auth\" value={formatAuthStatus(props.snapshot)} labelColor={props.theme.textMuted} valueColor={props.theme.text} />\n </>\n );\n\n if (!props.snapshot.catalog) {\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n {statusRows}\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 const installableNotInstalledCount = getInstallableNotInstalledSkills(props.snapshot).length;\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\">\n {statusRows}\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 SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${counts.project} PROJECT SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${counts.user} USER SCOPE`} theme={props.theme} />\n <CatalogBullet value={`${installableNotInstalledCount} installable/not installed`} theme={props.theme} />\n <CatalogBullet value={`${props.snapshot.ignoredPublishedSkills.count} ignored`} theme={props.theme} />\n </box>\n );\n};\n\nconst WizardSkillsDialog = (props: {\n api: TuiPluginApi;\n status: () => StatusState;\n refreshStatus: RefreshStatus;\n onClose: () => void;\n}) => {\n const theme = createMemo(() => props.api.theme.current);\n const [actionNotice, setActionNotice] = createSignal<PreferenceActionNotice>({ kind: 'idle' });\n\n const refreshAfterPreferenceChange = (message: string): void => {\n setActionNotice({ kind: 'success', message });\n props.refreshStatus({ showLoading: false });\n requestRender(props.api);\n };\n\n const showPreferenceFailure = (error: unknown): void => {\n setActionNotice({ kind: 'error', message: getErrorMessage(error) });\n props.refreshStatus({ showLoading: false });\n requestRender(props.api);\n };\n\n const ignoreSkill = (row: SkillDialogRow): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: row.ignored ? 'Removing ignore preference…' : 'Ignoring skill…' });\n requestRender(props.api);\n void setPublishedSkillIgnored({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n ignored: !row.ignored,\n preferenceScope: getSkillPreferenceScope(row.skill),\n })\n .then(() => refreshAfterPreferenceChange(row.ignored ? 'Skill is no longer ignored.' : 'Skill ignored.'))\n .catch(showPreferenceFailure);\n };\n\n const installSkill = (row: SkillDialogRow, preferenceScope: 'global' | 'project'): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: `Installing skill for ${preferenceScope.toUpperCase()} SCOPE…` });\n requestRender(props.api);\n void setPublishedSkillInstalled({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n installed: true,\n preferenceScope,\n })\n .then(() => refreshAfterPreferenceChange(`Skill installed for ${preferenceScope.toUpperCase()} SCOPE.`))\n .catch(showPreferenceFailure);\n };\n\n const uninstallSkill = (row: SkillDialogRow): void => {\n const currentStatus = props.status();\n if (currentStatus.kind !== 'ready') return;\n\n const scopeKey = currentStatus.snapshot.ignoredPublishedSkills.scopeKey;\n setActionNotice({ kind: 'pending', message: 'Uninstalling skill…' });\n requestRender(props.api);\n void setPublishedSkillInstalled({\n worktree: props.api.state.path.worktree,\n directory: props.api.state.path.directory,\n scopeKey,\n skillSlug: row.skill.skillSlug,\n installed: false,\n preferenceScope: getSkillPreferenceScope(row.skill),\n })\n .then(() => refreshAfterPreferenceChange('Skill uninstalled.'))\n .catch(showPreferenceFailure);\n };\n\n createEffect(() => {\n props.api.ui?.dialog?.setSize?.('xlarge');\n });\n\n return (\n <box width=\"100%\" flexDirection=\"column\" paddingLeft={1} paddingRight={1} paddingBottom={1}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={theme().text} wrapMode=\"none\" overflow=\"hidden\">\n <b>Wizard Skills</b>\n </text>\n <box onMouseUp={props.onClose} flexShrink={0}>\n <text fg={theme().textMuted} wrapMode=\"none\">\n Close\n </text>\n </box>\n </box>\n <box width=\"100%\" flexDirection=\"column\" marginTop={1} overflow=\"hidden\">\n <WizardSkillsDialogContent\n status={props.status}\n actionNotice={actionNotice}\n theme={theme()}\n onIgnoreSkill={ignoreSkill}\n onInstallSkill={installSkill}\n onUninstallSkill={uninstallSkill}\n />\n </box>\n </box>\n );\n};\n\nconst openWizardSkillsDialog = (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus): void => {\n const dialog = api.ui?.dialog;\n if (!dialog?.replace) return;\n\n refreshStatus({ showLoading: true });\n\n dialog.replace(\n () => (\n <WizardSkillsDialog\n api={api}\n status={status}\n refreshStatus={refreshStatus}\n onClose={() => {\n dialog.clear?.();\n requestRender(api);\n }}\n />\n ),\n () => {\n requestRender(api);\n },\n );\n\n requestRender(api);\n};\n\nconst createWizardStatusSlot = (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\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} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\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 resolvePluginStatusSnapshotWithAuthBootstrap({\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 const refreshStatus: RefreshStatus = (options) => {\n if (options?.showLoading) {\n setStatus({ kind: 'loading' });\n requestRender(api);\n }\n\n void loadStatus(api).then((nextStatus) => {\n setStatus(nextStatus);\n requestRender(api);\n });\n };\n\n api.slots.register(createWizardStatusSlot(api, status, refreshStatus));\n refreshStatus();\n setInterval(refreshStatus, STATUS_REFRESH_INTERVAL_MS);\n};\n\nexport default {\n id: PLUGIN_ID,\n tui,\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aexol/opencode-wizard",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "OpenCode plugin for opencode-wizard published skills",
5
5
  "type": "module",
6
6
  "oc-plugin": [