@aexol/opencode-wizard 0.1.16 → 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,75 +145,44 @@ 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
- }
111
- }],
112
- catalogSkills: [],
113
- userPreferences: {
114
- scopeKey: 'workspace:workspace-1',
115
- userKey: 'user-1',
116
- ignoredSkills: []
117
- }
118
- };
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;
119
157
  const detailItem = {
120
- ...payload.skills[0],
158
+ ...detailSkillItem,
121
159
  publishedArtifact: {
122
- ...payload.skills[0].publishedArtifact,
160
+ ...detailSkillItem.publishedArtifact,
123
161
  markdownBody: '## Mock skill\n\nThis is a mock published skill.',
124
- renderedContent: '<h2>Mock skill</h2>'
162
+ renderedContent: '<h2>Mock skill</h2>',
163
+ files: [{
164
+ id: 'artifact-file-1',
165
+ relativePath: 'SKILL.md',
166
+ contentType: 'text/markdown; charset=utf-8',
167
+ content: '---\nname: "backend-auth"\ndescription: "JWT auth skill"\n---\n\n## Mock skill\n',
168
+ checksum: 'file-checksum-1',
169
+ size: 74,
170
+ sortOrder: 0
171
+ }, {
172
+ id: 'artifact-file-2',
173
+ relativePath: 'resource.md',
174
+ contentType: 'text/markdown; charset=utf-8',
175
+ content: '# Resource\n',
176
+ checksum: 'file-checksum-2',
177
+ size: 11,
178
+ sortOrder: 1
179
+ }]
125
180
  }
126
181
  };
127
182
  const config = await resolveConfig(process.cwd());
128
183
  const backendOriginSmoke = await assertBackendOriginResolution();
129
184
  const catalog = toPublishedSkillCatalog(payload);
185
+ const effectiveSkillGroupingSmoke = assertEffectiveSkillGrouping(createEffectiveSkillsSmokePayload());
130
186
  const selection = selectPublishedSkills(payload, ['backend-auth', 'missing-skill']);
131
187
  const detail = selection.selectedItems[0] ? toPublishedSkillDetail(detailItem) : null;
132
188
  const preview = buildSkillMarkdown(detailItem).split('\n').slice(0, 6);
@@ -134,6 +190,7 @@ const run = async () => {
134
190
  runtimeMode: catalog.runtimeMode,
135
191
  graphqlUrl: config.graphqlUrl,
136
192
  backendOriginSmoke,
193
+ effectiveSkillGroupingSmoke,
137
194
  publishedSkillCount: catalog.publishedSkillCount,
138
195
  availableTools: catalog.availableTools,
139
196
  facets: catalog.facets,
@@ -142,6 +199,7 @@ const run = async () => {
142
199
  selectedSkillSlug: detail?.skillSlug ?? null,
143
200
  selectedSkillTags: detail?.tags ?? [],
144
201
  markdownDocumentIncludesFrontmatter: detail?.markdownDocument.startsWith('---') ?? false,
202
+ resourceFileCount: detail?.resources.length ?? 0,
145
203
  preview,
146
204
  markdownBodyIncludesContent: detail?.markdownBody.includes('This is a mock published skill.') ?? false
147
205
  }, null, 2));
@@ -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","catalogSkills","userPreferences","scopeKey","userKey","ignoredSkills","detailItem","markdownBody","renderedContent","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","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 },\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 },\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 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":[]}